5

特定のドメインからのみテキストを取得できるようにPOEditを設定する方法を見つけるために何時間も努力してきました

私のgettext関数は次のようになります:

function ri($id, $parameters = array(), $domain = 'default', $locale = null)

サンプル呼び出し:

echo ri('Text %xyz%', array('%xyz%'=>100), 'myDomain');

翻訳するには、ドメインmyDomainのテキストのみを取得する必要があります。または、少なくともPOEditでこれらのテキストをドメイン固有のファイルに配置する必要があります。それを行う方法はありますか?

私は似たような質問をいくつか見つけましたが、答えは実際には何をすべきかを教えてくれません(私は私が理解するために平易な英語で説明されなければならないような初心者だと思います):

Poeditでgettextテキストドメインを設定するにはどうすればよいですか?

翻訳可能なメッセージのリストを取得する方法

4

2 に答える 2

10

だから私は何日も検索した後、ついにそれを理解しました、私はついにここで答えを見つけました:

http://sourceforge.net/mailarchive/message.php?msg_id=27691818

  • xgettextは文字列のコンテキストを認識し、*。potファイルにmsgctxtフィールドを提供します。これは、翻訳ソフトウェアによってコンテキストとして認識され、そのように表示されます(以下のコンテキストを示すPootleの画像を確認してください)

    • これは、次の3つの方法で実行できます。

      1. コード内の文字列は、_t('context'、'string');の形式である必要があります。xgettextの呼び出しは--keyword=_t:1c、2の形式である必要があります(これは基本的に、キーワード関数に2つの引数があり、1つ目はコンテキスト、2つ目は文字列であることをxgettextに説明します)
      2. _t('string'、'context');形式のコード内の文字列。xgettextの呼び出しは--keyword=_t:1,2cの形式である必要があります
      3. コード内の文字列は_t('context | string')である必要があり、xgettextの呼び出しは--keyword = _t:1gの形式である必要があります

それで、私自身の質問に答えるために、私はこれをPoeditの「ソースキーワード」タブに追加しました。

ri:1,3c

riは関数名、1はstringidの場所、3はコンテキスト/ドメインの場所です

これが他の誰かに役立つことを願っています、私はこれらすべての不可解な文書を嫌います

于 2012-10-13T14:46:31.377 に答える
0

(これは、ここでの同じことに対する私の答えの再投稿です。)

GNU gettextツールもPoedit(それらを使用する)も、この特定のgettextの誤用をサポートしていません。

gettextでは、ドメインはおおよそ「ソフトウェアの一部」であり、プログラム、ライブラリ、プラグイン、テーマです。そのため、通常は単一のディレクトリツリーに存在し、そこに単独で存在します。少なくとも、複数のpieces = domainがある場合は、抽出を制限できるいくつかのサブディレクトリに適切に編成されます。

単一のファイル内でドメインを混合して一致させることは、gettextの使用目的ではなく、独自のヘルパー関数を使用する以外に、それを処理するための合理的な解決策はありません。たとえば、すべてのmyDomainテキストを__mydomain(定義する必要があり、明らかに)そして、myDomainを抽出するときに、それをPoeditのキーワードのリストに追加し、他のドメインのファイルのキーワードのリストには追加しません。

于 2015-11-10T06:50:29.823 に答える