2009-07-09 84 views
1

Complete C++ i18n gettext() “hello world” example显示了使用gettext()处理C++程序中消息的标准方法。消息目录存储在可移植对象文件中,该文件基于使用xgettext,msginit和msgfmt直接从C++源代码创建的可移植对象模板文件。 XSLT处理消息的相应方法是什么?I18n for XSLT(或者什么是XSLT的C++的gettext()和xgettext)?

具体来说,使C++你好世界代码的支持i18n的一个只是增加了两个包括调用一些设置功能和包装字符串调用gettext的():

#include <libintl.h> 
#include <locale.h> 
.. 
    setlocale(LC_ALL, ""); 
    bindtextdomain("hellogt", "."); 
    textdomain("hellogt"); 
    std::cout << gettext("hello, world!") << std::endl; 
... 

然后英文文本从提取源程序并转换为便携式对象模板供翻译人员使用,这些人员使用实用程序创建机器对象消息目录文件供运行时程序使用:xgettext,msginit和msgfmt。 最后,当程序被调用时,会显示用于将运行时语言标识为西班牙语的Linux shell命令。

做一个hello-world程序的主要目的是连接所有的系统部件来获得一个虚拟无用的例子来运行。因此,正如C++示例在Linux环境中针对C++所展示的那样,我正在寻找相同的东西,只是用于XSLT。

  1. 在C++示例中有一组链接到hellogt的包含文件和对象文件。是否有提供setlocale,bindtextdomain和textdomain功能的XSLT代码?代码如何连接到用户的运行时语言?
  2. 是否有XSLT代码可以通过类似gettext()的消息目录文件从英文文本中提供运行时转换?
  3. 是否有实用程序从源XML文件中提取英文文本以供翻译人员随程序一起使用,以将结果转换为运行时可用的消息目录文件,如xgettext,msginit和msgfmt吗?
  4. 如何指定用户运行时语言的标识?

例如,我有一个Javascript应用程序Emle,它使用XSLT将XML处理成HTML。这些消息是在特定于语言的XML文件的应用程序特定集合中定义的。它们是使用特定于应用程序的XSLT代码提取的。虽然这说到#2,但该方法似乎并不适用于利用LaunchPad提供的翻译服务。示例Emle English message file使用的Emle XSLT file

+0

您是否正在寻找一种通用方法,将源文件中的misc-all-fireFoxOnly等给定消息映射到目标中所有misc-all-fireFoxOnly实例的相应目标HTML文件的所有实例中,仅使用XSLT ?所以,你从一些恰好含有misc-all-fireFoxOnly的文件开始,最终得到一个使用misc-all-fireFoxOnly而不必实际从源映射到目标的HTML文件 - 我的理解是正确的吗? – 2009-07-09 15:15:53

+0

我正在寻找将XSLT代码添加到我的代码以及支持实用程序来处理消息。我在这个问题中增加了更多细节。 – 2009-07-09 20:19:39

回答