6

すべての.jsファイルと.htmlファイル(アンダースコアテンプレート)から文字列を抽出する、非常にうまく機能するコマンドがあります。ただし、翻訳者のコメントには機能しないようです。

たとえば、これは私の.jsファイルの1つにあります。

/// TRANSLATORS: The word "manual" stands for manual process
gettext("manual");

次のコマンドを使用します。

find . -iname '*.html' -o -iname '*.js' | xargs xgettext --language=Python --from-code=utf-8 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 --add-comments=/ 

xgettextは、.jsファイルからコメントを抽出し、次のように.poファイルに配置する必要があります。

#. TRANSLATORS: The word "manual" stands for manual process
#: tax.js:200 
msgid "manual"     msgstr "" 

しかし、そうではありません。私はここで何か間違ったことをしていますか、それとも翻訳者のコメントがPythonモードで機能していないだけですか?

編集:私はジョンフラットネスの答えを正しいものとして受け入れましたが、Pythonモードを引き続き使用して翻訳者のコメントを抽出できる回避策を見つけました。コメント内に構文の一部が実際に残っているため、完全ではありません。

私のtax.jsファイル:

/*
# This is a translator comment */
gettext("What is this?");

次のコマンドを実行します。

find . -iname '*.html' -o -iname '*.js' | xargs xgettext --language=Python --from-code=utf-8 --keyword=pgettext:1c,2 --keyword=npgettext:1c,2,3 -c

結果は.poファイルになります。

#. This is a translator comment */
#: tax.js:201
msgid "What is this?"
msgstr ""

ご覧のとおり、唯一の問題は次のとおりです。

  1. コメントは2行で書く必要があります
  2. コメントターミネーター*/は翻訳者のコメントに残されています

ただし、ほとんどの場合、これはそれほど問題にはなりません。

4

2 に答える 2

5

xgettext問題は、実際にはJavaScriptであるのに、ソースがPythonであると言っていることです。

これにより、多くの場合「十分に」機能する可能性がありますが、ここでつまずくのは、Pythonがでワンライナーコメントを行わず//、を使用していることだと思います#

gettextツールにjavascriptサポートを追加するプロジェクトがGithubにあります。現在のステータスはわかりません。使用するには、ソースからビルドする必要があります。xgettextそれ以外の場合は、 C / C ++/Javaのような構文をサポートする他の言語を試すことができると思います。

于 2012-08-21T19:23:11.827 に答える
4

汚染なしに「翻訳者コメント」を取得する方法は#、javascriptコメントの開始後にハッシュを追加する//ことです。このようにして、xgettextはその後のすべてを通常のPythonコメントとして解釈します。

これを試して:

//# This is a translation comment
console.log(_('Some String'));

そして、次のようなxtextで抽出します。

xgettext --language=Python --from-code=utf-8 --force-po -c -o file.po file.js

これにより、次のようにPOが作成されます。

#. This is a translation comment
#: /path/to/file.js:2
msgid "Some String"
msgstr ""

Ubuntu12.04.4でgettext0.18.1.1-5ubuntu3を使用してこれを正常に実行しました

于 2015-05-28T19:21:17.713 に答える