2016-05-24 9 views
2

私はphoenixframeworkでプロジェクトを作成しています。私はgettextを使っていくつかの翻訳を追加します。コマンドmix gettext.extract --mergeはコントローラとテンプレートからすべての翻訳キーを取得し、.pot.poファイルに格納します。手動でgettext変換キーを追加する

私は設定ファイルにあるいくつかの変換キーです。これはフォーム選択ボックスで選択オプションとして使用します。現時点で私はキーのリスト:[:key1, :key2, key3, ..., keyN]を持っています。

翻訳を表示し、選択ボックスでキーを選択するには、キーワードリストが必要です。私の結果は[{"translation 1": key1}, {"translation 2": key2}, {"translation 3": key3}, ..., {"translation N": keyN}]です。

問題:

私は.potファイルを触れてはならないと、彼らは上記のコマンドの実行後に失われてしまうので、私は、私の.poファイルに私の翻訳キーを書き込むことはできません。ファイルは上書きされます。

手動で翻訳を追加して、プロジェクトから新しい翻訳を取得するコマンドを実行して、手作業で追加された翻訳を失わない方法がありますか?

答えて

1

解決策があり、それは箱の中でエリクシールgetテキスト実装で動作します。

キーワードは次のとおりです。私のファイルはadditionals.pot呼ばれる

msgid "" 
msgstr "" 
"Language: en\n" 

msgid "key1" 
msgstr "" 

msgid "key2" 
msgstr "" 

# ... and so on ... 

:まずドメイン

は、私は私の翻訳キーのすべてを持つ新しいポットファイルを作成しました。それから私はmix gettext.extract --mergeを実行します。今では、各言語ディレクトリにadditionals.poというファイルがあります。ここで私の翻訳を追加します。

私のプロジェクト内では、gettextの代わりにGettextモジュールのdgettextメソッドを使用します。 dgettextは、新しいadditionals.poファイルのベースネームであるドメインを指定できます。

Gettext.dgettext(<MyProjectName>.Gettext, "additionals", "key1") 
# => "translation 1" 

それはすべてですが、期待通りです。

Hereは、Gettextについての素晴らしい記事です。 ドメインを検索して、dgettextがどのように使用されるかの別の説明を検索してください。

関連する問題