Notice
This page show a previous version of the articleExtracting 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
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