source:
branches/PublicaMundi_David-devel/docs/services/translation.rst
@
817
Last change on this file since 817 was 722, checked in by djay, 10 years ago | |
---|---|
|
|
File size: 2.5 KB |
Translation Support
ZOO-Kernel support translating internal messages it emits but it can also translate both the metadata informations stored in the ZCFG file and the messages emitted by the ZOO-Service itself. This document show how to create the files required to handle such a translation process for the ZOO-Services.
ZCFG translation
First of all, use the following commands from your Services Provider directory in order to extract all the messages to translate from the ZCFG files :
#!/bin/bash mkdir -p locale/{po,.cache} for j in cgi-env/*zcfg ; do for i in Title Abstract; do grep $i $j | sed "s:$i = :_ss(\":g;s:$:\"):g" ; done; done > locale/.cache/my_service_string_to_translate.c
Then generate the messages.po file based on the Services Provider source code (located in service.c in this example) using the following command:
#!/bin/bash xgettext service.c locale/.cache/my_service_string_to_translate.c -o message.po -p locale/po/ -k_ss
Once messages.po is created, use the following command to create the .po file for the targeted language to translate into. We will use the French language here as an example:
#!/bin/bash cd locale/po/ msginit -i messages.po -o zoo_fr_FR.po -l fr
Edit the zoo_fr_FR.po file with your favorite text editor or using one of the following tools:
Once the zoo_fr_FR.po file is completed, you can generate and install the corresponding .mo file using the following command:
#!/bin/bash msgfmt locale/po/zoo_fr_FR.po -o /usr/share/locale/fr/LC_MESSAGES/zoo-services.mo
In order to test the Services Provider ZCFG and internal messages translation, please add the language argument to you request. As an example, such a request:
http://youserver/cgi-bin/zoo_loader.cgi?request=GetCapabilities&service=WPS
would become the following:
http://youserver/cgi-bin/zoo_loader.cgi?request=GetCapabilities&service=WPS&language=fr-FR
The following command may also be useful in order to pull all the translations already available for a specific language.
#!sh msgcat -o compilation.po $(find ../../ -name fr_FR.utf8.po) msgfmt compilation.po -o /usr/share/locale/fr/LC_MESSAGES/zoo-services.mo