Version at: 02/05/2015, 18:40
#Checking in Extracted UI Strings and Their Translations
These instructions describe how to extract UI strings, upload strings and translations, and finally commit them to a repository. **The sections about uploaded and committing are no longer valid since we have switched from Launchpad to Transifex.**
Before executing these steps, follow the instructions in [Installing and Configuring Bazaar](install-bazaar).
##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.
Examples, with the equivalent actions:
* __(‘some text’) => echo ‘some text’;
* __(‘some text’, true) => return ‘some text’;
The language used in the code will be English.
##Running cake i18n
* Open a console on a Linux machine or Linux virtual machine.
* 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)
##Modifying the header
Before you upload the POT file, you may need to open it and change the header into this:
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
Otherwise, Launchpad may reject the file.
##Uploading default.pot
###Uploading default.pot to Launchpad via Bazaar
* Commit the file using the Bazaar Explorer GUI.
When it comes time to push your changes, go to a Windows command prompt, issue a launchpad-login command, and issue a push command.
This is the equivalent of doing the following from the Windows command prompt (for user abc):
cd bzr\trunk\trunk\default
bzr launchpad-login abc
bzr push lp:tatoeba
Presumably, this should work from Linux as well (with adjustments to the paths).
##Editing .po files
You may need to edit the .po files manually at this stage if you want to restore translations for UI strings that have changed. A merge tool such as WinMerge or KDiff3 may be useful here. Skip this step if you don't know what is entailed.
##Check .po files
Use this command on each .po file to ensure that it has the correct syntax:
msgfmt -c filename.po
The Launchpad site executes this step after the .po files are uploaded and approved, but checking the files first will save you more work in the long run.
##Upload .po files
Put all the .po files that have changed into a "tarball", which is a file with the extension .tar.gz or .tar.bz2 . You can use a zipfile utility such as [7Zip](http://www.7-zip.org/) command on Windows or *tar* on Linux to produce the tarball. Then upload them at the same URL that you used to upload the default.pot file.
##Run update-translations.sh
If you do not already have bzr installed on your Linux virtual machine, install it with this command: "apt-get install bzr" . You may need to issue a "su -" (superuser) command to perform the installation.
Run this script:
tatoeba-www/docs/update-translations.sh
It will do the following:
* check out the files from the Launchpad repository (using Bazaar)
* place them in a temporary directory
* check them into the final Tatoeba2 repository
You must include the "-c" switch on the command line if you want the changes to be committed.
##Historical information only
The original source of these instructions, stored on Assembla, is here: [1]
###Uploading default.pot to Launchpad via import queue (deprecated)
Go to this URL:
https://translations.launchpad.net/tatoeba/trunk/+translations-upload
Set the following:
* file type: template
* path: default.pot
* template: default
You can leave name and translation domain empty.
Upload the file.
You may need to wait a day or so for the translation files to be updated.
[1]: https://www.assembla.com/spaces/tatoeba2/wiki/Internationalization
version at: 02/05/2015, 18:40
#Checking in Extracted UI Strings and Their Translations
These instructions describe how to extract UI strings, upload strings and translations, and finally commit them to a repository. **The sections about uploading and committing are no longer valid since we have switched from Launchpad to Transifex.**
Before executing these steps, follow the instructions in [Installing and Configuring Bazaar](install-bazaar).
##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.
Examples, with the equivalent actions:
* __(‘some text’) => echo ‘some text’;
* __(‘some text’, true) => return ‘some text’;
The language used in the code will be English.
##Running cake i18n
* Open a console on a Linux machine or Linux virtual machine.
* 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)
##Modifying the header
Before you upload the POT file, you may need to open it and change the header into this:
msgid ""
msgstr ""
"Project-Id-Version: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
Otherwise, Launchpad may reject the file.
##Uploading default.pot
###Uploading default.pot to Launchpad via Bazaar
* Commit the file using the Bazaar Explorer GUI.
When it comes time to push your changes, go to a Windows command prompt, issue a launchpad-login command, and issue a push command.
This is the equivalent of doing the following from the Windows command prompt (for user abc):
cd bzr\trunk\trunk\default
bzr launchpad-login abc
bzr push lp:tatoeba
Presumably, this should work from Linux as well (with adjustments to the paths).
##Editing .po files
You may need to edit the .po files manually at this stage if you want to restore translations for UI strings that have changed. A merge tool such as WinMerge or KDiff3 may be useful here. Skip this step if you don't know what is entailed.
##Check .po files
Use this command on each .po file to ensure that it has the correct syntax:
msgfmt -c filename.po
The Launchpad site executes this step after the .po files are uploaded and approved, but checking the files first will save you more work in the long run.
##Upload .po files
Put all the .po files that have changed into a "tarball", which is a file with the extension .tar.gz or .tar.bz2 . You can use a zipfile utility such as [7Zip](http://www.7-zip.org/) command on Windows or *tar* on Linux to produce the tarball. Then upload them at the same URL that you used to upload the default.pot file.
##Run update-translations.sh
If you do not already have bzr installed on your Linux virtual machine, install it with this command: "apt-get install bzr" . You may need to issue a "su -" (superuser) command to perform the installation.
Run this script:
tatoeba-www/docs/update-translations.sh
It will do the following:
* check out the files from the Launchpad repository (using Bazaar)
* place them in a temporary directory
* check them into the final Tatoeba2 repository
You must include the "-c" switch on the command line if you want the changes to be committed.
##Historical information only
The original source of these instructions, stored on Assembla, is here: [1]
###Uploading default.pot to Launchpad via import queue (deprecated)
Go to this URL:
https://translations.launchpad.net/tatoeba/trunk/+translations-upload
Set the following:
* file type: template
* path: default.pot
* template: default
You can leave name and translation domain empty.
Upload the file.
You may need to wait a day or so for the translation files to be updated.
[1]: https://www.assembla.com/spaces/tatoeba2/wiki/Internationalization