問題タブ [gettext]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xml - XSLT の I18n (または XSLT の C++ の gettext() および xgettext とは)?
完全な C++ i18n gettext() の「hello world」の例は、gettext() を使用して C++ プログラムでメッセージを処理する標準的な方法を示しています。メッセージ カタログは、xgettext、msginit、および msgfmt を使用して C++ ソース コードから直接作成されたポータブル オブジェクト テンプレート ファイルに基づいて、ポータブル オブジェクト ファイルに格納されます。XSLT でメッセージを処理するための対応する方法は何ですか?
具体的には、C++ の hello-world コードが i18n をサポートするようにするには、2 つのインクルードを追加し、いくつかのセットアップ関数を呼び出し、gettext() への呼び出しで文字列をラップします。
次に、英語のテキストがソース プログラムから抽出され、ユーティリティ プログラム (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 英語メッセージ ファイルの例
c++ - 複数形のI18n C++ hello world
完全な C++ i18n gettext() の「hello world」の例には、単純な固定文字列に対して機能する C++ コードがあります。現在、複数形で動作するサンプル プログラムを探しています。このコード例は 6 行を表示します。英語で正解は1つだけです。複数形を正しく処理しません。
複数形の GNU gettext() は、言語が複数形を処理するさまざまな方法を説明しています。たとえば、次のようになります。
- 韓国語 - プラス記号なし
- 英語 - 2 つの形式、1 つだけに使用される単数形
- フランス語 - 0 と 1 に使用される単数形の 2 つの形式
- ポーランド語 - 3 つの形式、1 と 2、3、または 4 で終わるいくつかの数字の特殊なケース
私の期待は、上記のすべてのケースと、ここにリストされていないいくつかのバリエーションに対して、コードが (メッセージ カタログが与えられた場合に) 機能することです。英語で実行した場合の正しい出力は次のようになります。
c++ - ローカルオペレーティングシステム環境を使用して gettetxt() で静的 char* を初期化する方法は?
で設定する必要がある静的文字列を処理する C++ の標準または一般的な方法はありgettext()
ますか?
これは、完全な C++ i18n gettext() “hello world”の例への回答をベースとして、リテラルhello world
を静的なchar* hws
andに変更するだけの例char* hw
です。hws
ローカル オペレーティング システム環境からロケールが設定される前に、デフォルトの英語テキストに初期化されているようです。hw
ロケールが変更された後に設定されるため、スペイン語のテキストが生成されます。
php - PHPの.poから.moへのコンバーター?
.po(ポータブルオブジェクト)を.mo(マシンオブジェクト)ファイルに変換できるPHPスクリプトが必要ですか?PHPで利用できるスクリプトはありますか?
これらの情報からmoファイルを作成できますか?
php - gettext を使用して PHP に i18n のサポートを追加しますか?
私はいつもgettextについて聞いたことがあります-提供された文字列引数に基づいて翻訳を検索し、.potファイルを生成するのはある種のUNIXコマンドであることは知っていますが、誰かが素人の言葉でこれがどのように処理されるかを説明できますか?ウェブフレームワーク?
確立されたフレームワークがどのようにそれを行っているかを見て回るかもしれませんが、実際に物事を掘り下げて独自のソリューションを提供する前に、全体像をもう少し明確にするのに役立つ可能性があるため、素人の説明が役立ちます.
ruby-on-rails - Gettext と Haml on Rails の非常に奇妙な問題 / rake updatepo が壊れた
私は Rails 2.3.3 を使用しており、テンプレートには Haml 2.0.9 を使用し、翻訳には Gettext-Rails 2.0.4 を使用しています。Haml は魅力的に機能し、gettext も正常に機能します。
しかし、「rake updatepo」を使用すると、Gettext で Haml ファイルを解析できません。次のようなカスタム パーサーを作成しました。
私のRakefileは次のようになります:
これは、Haml ファイルを解析するための既知のアプローチに従います ( http://www.paulgillard.me.uk/2008/3/8/rails-haml-and-gettext )。
問題: Haml ファイルから MessageId が認識されません。Haml-Parser で「puts」を使用して、適切なファイルを試行したかどうか、それらを解析できるかどうかなどを確認しました。すべてがうまくいっているように見えました。何でも認識し、すでに見つかった msgid のみを常に返し、Haml ファイルの場合は空の配列を返しました。
奇妙なことに、コンソールにこれを入力すると、すべてが機能します。
ご覧のとおり、すべてがここで機能します (長いリターンは省きました)。私の Rake タスクでは、なぜこれが当てはまらないのか、ちょっとびっくりしています。
誰にもアイデアがありますか?あなたは本当に私を幸せなオタクにするでしょう!
ありがとう!
ruby-on-rails - Rails: gettext ポット生成タスクが空のファイルを生成する
私の問題は、アプリで rake を使用して gettext .pot ファイルを生成したいのですが、キーがなく、ヘッダー テキストのみのファイルを取得していることです (「説明的なタイトル。著作権 (C)...」)。
タスク gettext:find getttext_18n_rails を使用しています。以前に古典的なupdatepoタスクを試しましたが、同じでした。おそらく私は宝石を見逃していますか?
ありがとう
regex - 「msggrep」での正規表現の使用
次のような内容の PO ファイルがあります。
特定の msgid の翻訳を取得する必要があります。コマンド「msggrep -K -e 'orand' template2.pot」を使用すると、「orand」の翻訳が得られます。これで問題ありません。
しかし、「msggrep -K -e 'or' template2.pot」を使用すると、両方の翻訳 ('or' と 'orand') が返されます。コマンド "msggrep -K -e '^or' template2.pot" は期待どおりに機能し、両方の翻訳を返しますが、"msggrep -K -e '^or' template2.pot" は何も返さないため失敗します。「$」文字が msggrep 正規表現パーサーを壊すようです。
他の msggrep フラグ (-F、-E など) を試してみましたが、それらはすべてファイルからテスト パターンを読み取るため、実際のニーズには受け入れられません。私は msggrep 0.14.6 を使用しています (そして、より新しいライブラリに更新することはできません)。
msggrep を使用して「orand」の翻訳を取得する方法を誰かが知っていますか?
python - gettext() を使用して適切に翻訳された名前で settings.LANGUAGES を使用する
Django ドキュメントから:
カスタム設定を定義する場合、言語を翻訳文字列としてマークしても問題ありません
LANGUAGES
(上に表示されているデフォルト値のように) 。モジュール自体が設定に依存し、循環インポートが発生するため、設定ファイル内からインポートしない でください。解決策は、「ダミー」関数を使用することです。サンプル設定ファイルは次のとおりです。gettext()
django.utils.translation
django.utils.translation
gettext()
gettext = lambda s: s LANGUAGES = (
('de', gettext('German')),
('en', gettext('English')),
)
この配置では、は引き続きこれらの文字列を見つけて翻訳用にマークしますが、翻訳は実行時に行われません。そのため、実行時に使用するすべてのコードで
django-admin.py makemessages
言語を実際の言語でラップすることを忘れないでください 。gettext()
LANGUAGES
言語を実際にラップするとは、正確にはどういう意味gettext()
ですか? コードでどのように呼び出す必要がありますか?