翻译支持

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