2009-07-09 57 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

回答