This shows you the differences between two versions of the page.
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] 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 ===== |