Version at: 22/02/2014, 18:35
See also the original source of these instructions, originally stored on Assembla, now obsolete: [1]
[1]: https://www.assembla.com/spaces/tatoeba2/wiki/Internationalization
version at: 22/02/2014, 18:44
#Extracting UI Strings
These instructions describe how to extract UI strings so that they can be translated. The original source of these instructions, stored on Assembla, is here: [1]
[1]: https://www.assembla.com/spaces/tatoeba2/wiki/Internationalization
##Markup for internationalized strings in the code
In the code, whenever developers write strings that will have to be translated, they use a special function whose name consists of a double underscore. A script (CakePHP's "i18n extract" script) can later be run to scan the code and extract the strings that are passed to this function.
__() function
CakePHP has several functions in this vein, but this is the function we will use most of the time. Note the pair of underscores.
__(‘some text’) => echo ‘some text’;
__(‘some text’, true) => return ‘some text’;
The language used in the code will be English.
##Running cake i18n (on a Linux machine or virtual machine)
Open a console.
Type : /var/http/tatoeba/cake/console/cake i18n
Choose : E (Extract POT file from source)
When asked if you want to merge all translations into a single file, say yes
Type in the path to app: /home/tatoeba/tatoeba-www/app
Type in the path to locale: /home/tatoeba/tatoeba-www/app/locale
Choose a name for the file that will be generated (in this example, default.pot): default.pot
Choose: Q (quit)
PO file
Note: it may be better to use Launchpad to create a new UI language rather than follow this manual procedure.
Adding a new language (e.g., French):
Create folder : /app/locale/fre/LC_MESSAGES
Copy-paste default.pot in this folder
Change it into default.po
Open default.po with PoEdit (http://www.poedit.net/) and translate.
Save. It will generate a *.mo file, which is used when replacing strings at runtime.
If new strings are added:
Follow the cake i18n instructions to generate the up-to-date POT file.
Open the PO file (PO, not POT).
In the menu : Catalog > Update from POT file…
Choose the POT file that was newly generated
Switching languages
The language of the page is set through the URL.
Example : http://localhost/tatoeba2/fre/sentences/index
Resources
http://blog.jaysalvat.com/articles/choix-des-langues-par-url-dans-cakephp.php
http://www.formation-cakephp.com/41/multilingue-18n-l10n
Note
The lines in green are the lines that have been added in the new version.
The lines in red are those that have been removed.
Actions