User Tools

Site Tools


plugins:creation

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
plugins:creation [2014/02/07 09:51]
datiswous [Additional plugin files]
plugins:creation [2017/01/19 22:08] (current)
lokothodida [Internationalization (I18N)]
Line 140: Line 140:
  
 Thus a sample plugin structure for a plugin ''​my_plugin''​ with additional php files and images that supports multiple languages might be: Thus a sample plugin structure for a plugin ''​my_plugin''​ with additional php files and images that supports multiple languages might be:
-<​code ​php>+<​code>​
 - my_plugin.php - my_plugin.php
 - my_plugin (directory) - my_plugin (directory)
Line 156: Line 156:
       - edit.png       - edit.png
 </​code>​ </​code>​
 +
 +==== Internationalization (I18N) ====
 +If your plugin displays messages to your user/​administrator,​ you will want to allow those messages to be localised to the language of the installation. You do this by having a ''/​lang''​ folder, which has PHP files for each language:
 +
 +<​code>​
 + - lang (directory)
 +    - .htaccess (with one line: Deny from all)
 +    - en_US.php
 +    - de_DE.php
 +    - it_IT.php
 +</​code>​
 +
 +Each file should have one variable: an ''​$i18n''​ array, which has ''​key => value''​ mappings for the various messages:
 +
 +<code php>
 +<?php
 +// en_US.php
 +$i18n = array();
 +$i18n['​PLUGIN_TITLE'​] = 'My Plugin';​
 +...
 +</​code>​
 +
 +To register your i18n array, call ''​i18n_merge''​ with the ID of your plugin (**before** ''​register_plugin''​ is called):
 +
 +<code php>
 +i18n_merge($plugin_id);​
 +</​code>​
 +
 +This registers ''​$i18n''​ for your plugin with the installation'​s language, but you might not have such a language file created. In order to set up a default language, you can register a fixed language if ''​i18n_merge''​ returns ''​false''​.
 +
 +<code php>
 +// Sets the default to English
 +if (!i18n_merge($plugin_id)) i18n_merge($plugin_id,​ '​en_US'​);​
 +</​code>​
 +
 +Or the clearer:
 +
 +<code php>
 +i18n_merge($plugin_id) || i18n_merge($plugin_id,​ '​en_US'​);​
 +</​code>​
 +
 +Once that is done, you can call a localised string by using ''​i18n_r''​ (to ''​return''​ the string) or ''​i18n''​ (to ''​echo''​ it). You do this by prefixing your key with your plugin'​s ID:
 +
 +<code php>
 +// Prints "My Plugin"​ if the language is English
 +i18n($plugin_id . '/​PLUGIN_TITLE'​);​
 +</​code>​
 +
 +For more information,​ go to [[plugins:​i18n|Plugins & Languages (I18N)]].
  
 ==== Data & Settings ==== ==== Data & Settings ====
Line 161: Line 210:
 If you need to save your data to a file on the server, we recommend saving it to a new folder within the ''​GSDATAOTHERPATH''​ path. For example: If your plugin needs to save the Google Analytics'​s UA-XXXXX id for the site, it would be best if you saved it within the folder ''/​path/​to/​getsimple/​data/​other/​my_plugin_folder/​ua-data.txt'',​ where ''/​my_plugin_folder/''​ is the folder you create and ''​ua-data.txt''​ is the file that holds your data. If you need to save your data to a file on the server, we recommend saving it to a new folder within the ''​GSDATAOTHERPATH''​ path. For example: If your plugin needs to save the Google Analytics'​s UA-XXXXX id for the site, it would be best if you saved it within the folder ''/​path/​to/​getsimple/​data/​other/​my_plugin_folder/​ua-data.txt'',​ where ''/​my_plugin_folder/''​ is the folder you create and ''​ua-data.txt''​ is the file that holds your data.
  
-When saving or accessing files and folders within a GetSimple installation,​ it is always best to use the defined constants set by the system. You can get the list of contents from the ''/​admin/​inc/​common.php''​ file, or by looking at our [[http://​code.google.com/​p/​get-simple-cms/​source/​browse/​trunk/​admin/​inc/​common.php|svn copy of it]].+<code php> 
 +// Set up the data 
 +$data = '<​Your Data Here>';​ 
 + 
 +// Set up the folder name and its permissions 
 +// Note the constant GSDATAOTHERPATH,​ which points to /​path/​to/​getsimple/​data/​other/​ 
 +$folder ​       = GSDATAOTHERPATH . '/'​ . $plugin_id . '/';​ 
 +$filename ​     = $folder . '​ua-data.txt';​ 
 +$chmod_mode ​   = 0755; 
 +$folder_exists = file_exists($folder) || mkdir($folder,​ $chmod_mode);​ 
 + 
 +// Save the file (assuming that the folder indeed exists) 
 +if ($folder_exists) { 
 +  file_put_contents($filename,​ $data); 
 +
 +</​code>​ 
 + 
 +When saving or accessing files and folders within a GetSimple installation,​ it is always best to use the defined constants set by the system ​(as illustrated above). You can get the list of contents from the ''/​admin/​inc/​common.php''​ file, or by looking at our [[http://​code.google.com/​p/​get-simple-cms/​source/​browse/​trunk/​admin/​inc/​common.php|svn copy of it]].
  
 ===== Scripts & Styles ===== ===== Scripts & Styles =====
plugins/creation.1391766684.txt.gz · Last modified: 2014/02/07 09:51 by datiswous