Version at: 03/05/2014, 08:30

#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. 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]

  [1]: https://www.assembla.com/spaces/tatoeba2/wiki/Internationalization


###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.

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

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.