完全な 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 を探しています。
- C++ の例には、hellogt にリンクされた一連のインクルード ファイルとオブジェクト ファイルがあります。setlocale、bindtextdomain、および textdomain の機能を提供する XSLT のコードはありますか? コードはユーザーのランタイム言語にどのように接続しますか?
- gettext() のように、メッセージ カタログ ファイルを介して英語のテキストからランタイム変換を提供する XSLT コードはありますか?
- ソース XML ファイルから英語テキストを抽出して翻訳者が使用するためのユーティリティ プログラムと、xgettext、msginit、msgfmt などの実行時に使用可能なメッセージ カタログ ファイルに結果を変換するプログラムはありますか?
- ユーザー ランタイム言語の識別はどのように指定されますか?
たとえば、XSLT を使用して XML を HTML に処理する Javascript アプリケーションEmleがあります。メッセージは、言語固有の XML ファイルのアプリケーション固有のコレクションで定義されます。これらは、アプリケーション固有の XSLT コードを使用して抽出されます。これは #2 に言えますが、この方法は、 LaunchPadが提供するような翻訳サービスを利用できるようには見えません。Emle XSLT ファイルで使用されるEmle 英語メッセージ ファイルの例