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
Last revision Both sides next revision
plugins:creation [2014/02/07 10:04]
datiswous [Additional plugin files]
plugins:creation [2017/01/18 20:15]
lokothodida [Internationalization (I18N)]
Line 155: Line 155:
       - delete.png       - delete.png
       - edit.png       - edit.png
 +</​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>​ </​code>​
  
Line 161: Line 208:
 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.txt · Last modified: 2017/01/19 22:08 by lokothodida