翻译支持¶
Zoo内核支持转换它发出的内部消息,但它也可以转换存储在zcfg文件中的元数据信息和Zoo服务本身发出的消息。本文档演示如何创建处理动物园服务的翻译过程所需的文件。
ZCG翻译¶
首先,使用服务提供者目录中的以下命令从zcfg文件中提取要转换的所有消息:
#!/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
然后生成 messages.po
基于服务提供程序源代码的文件(位于 service.c
在本例中)使用以下命令:
#!/bin/bash xgettext service.c locale/.cache/my_service_string_to_translate.c -o message.po -p locale/po/ -k_ss
一次 messages.po
创建时,使用以下命令创建 .po
要转换为的目标语言的文件。我们将以法语为例:
#!/bin/bash cd locale/po/ msginit -i messages.po -o zoo_fr_FR.po -l fr
编辑 zoo_fr_FR.po
使用您最喜欢的文本编辑器或使用以下工具之一进行文件:
一旦 zoo_fr_FR.po
文件已完成,您可以生成并安装相应的 .mo
使用以下命令的文件:
#!/bin/bash msgfmt locale/po/zoo_fr_FR.po -o /usr/share/locale/fr/LC_MESSAGES/zoo-services.mo
为了测试服务提供程序zcfg和内部消息翻译,请向您的请求添加语言参数。例如,这样的请求:
http://youserver/cgi-bin/zoo_loader.cgi?request=GetCapabilities&service=WPS
将成为以下内容:
http://youserver/cgi-bin/zoo_loader.cgi?request=GetCapabilities&service=WPS&language=fr-FR
以下命令也可能有用,以便提取特定语言已经可用的所有翻译。
#!sh msgcat -o compilation.po $(find ../../ -name fr_FR.utf8.po) msgfmt compilation.po -o /usr/share/locale/fr/LC_MESSAGES/zoo-services.mo