1

完全な C++ i18n gettext() の「hello world」の例は、gettext() を使用して C++ プログラムでメッセージを処理する標準的な方法を示しています。メッセージ カタログは、xgettext、msginit、および msgfmt を使用して C++ ソース コードから直接作成されたポータブル オブジェクト テンプレート ファイルに基づいて、ポータブル オブジェクト ファイルに格納されます。XSLT でメッセージを処理するための対応する方法は何ですか?

具体的には、C++ の hello-world コードが i18n をサポートするようにするには、2 つのインクルードを追加し、いくつかのセットアップ関数を呼び出し、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 シェル コマンドが表示されます。

hello-world プログラムを実行する主な目的は、すべてのシステム部分を接続して、事実上役に立たない例を機能させることです。そのため、C++ の例が Linux 環境での C++ を示しているように、私は同じことを探していますが、代わりに XSLT を探しています。

  1. C++ の例には、hellogt にリンクされた一連のインクルード ファイルとオブジェクト ファイルがあります。setlocale、bindtextdomain、および textdomain の機能を提供する XSLT のコードはありますか? コードはユーザーのランタイム言語にどのように接続しますか?
  2. gettext() のように、メッセージ カタログ ファイルを介して英語のテキストからランタイム変換を提供する XSLT コードはありますか?
  3. ソース XML ファイルから英語テキストを抽出して翻訳者が使用するためのユーティリティ プログラムと、xgettext、msginit、msgfmt などの実行時に使用可能なメッセージ カタログ ファイルに結果を変換するプログラムはありますか?
  4. ユーザー ランタイム言語の識別はどのように指定されますか?

たとえば、XSLT を使用して XML を HTML に処理する Javascript アプリケーションEmleがあります。メッセージは、言語固有の XML ファイルのアプリケーション固有のコレクションで定義されます。これらは、アプリケーション固有の XSLT コードを使用して抽出されます。これは #2 に言えますが、この方法は、 LaunchPadが提供するような翻訳サービスを利用できるようには見えません。Emle XSLT ファイルで使用されるEmle 英語メッセージ ファイルの例

4

2 に答える 2

1

非XMLツールが受け入れられる場合、このPerlツールは、XMLデータファイルとその変換のgettextPOファイルのセットを生成して同期を維持する役割を果たします。

http://po4a.alioth.debian.org/man/man3pm/Locale::Po4a::Xml.3pm.php

于 2009-12-30T20:45:46.573 に答える
0

http://xmlguru.cz/2006/10/saxon-gettext をよく読んで、あなたの質問に答えているかどうか、またどのように答えているかを確認していませんが、役立つことを願ってリンクを提供します。

于 2012-06-06T22:39:55.017 に答える