2016-09-20 26 views
1

私はjson文書を持っています。の文字列を翻訳する必要があります。例えば、(作らアップ構文)、私のdata.jsonJsonと翻訳

{ 
    "greeting": "trans:Hello" 
} 

この場合、文字列"Hello"は(非常に堅牢いないようだ)接頭trans:と翻訳可能としてマークされています。次に、カタログを作成するためのツールを使用します:

xgettext data.json 

そして、文字列を自分のターゲット言語に翻訳します。で翻訳可能な文字列を指定する任意の標準的な方法があります

{ 
    "greeting": "Hola" 
} 

:私のアプリケーションはその後、私の元のJSONと翻訳のマッピングを使用します:

translations = { 
    "en" : { 
    "Hello": "Hello" 
    }, 
    "es" : { 
    "Hello": "Hola" 
    } 
} 

をと(ターゲット言語es用)最終JSONを生成します標準のツールで処理してメッセージカタログを生成することができますか?

答えて

1

適切なgettext言語プリプロセッサを使用して、通常は_(string)またはgettext(stringという文字列を抽出し、これらの文字列を含むgettextカタログ(POTファイル)を作成できます。特定の言語用のローカライズされたバージョンを作成した後、おそらくpoeditなどのツールを使用すると、この場合はJSON表現に変換されます。詳細については、gettext-スタイルのメッセージカタログをJavaScriptでコンパイルするには、JEDを見てから、このJSON形式のカタログを実行時にアプリケーションにロードし、その目的のために定義されたユーティリティを使用してアクセスしてください。

表記_(string)には2つの効果があります。まず、抽出子の文字列をマークします。次に、実行時に_という関数を呼び出してカタログ内の文字列を検索し、ローカライズされた値を返します。

JSONの問題点は、明らかに_(string)が無効なJSON構文であることです。可能であれば、これをJSONファイルからオブジェクトを含むJSファイルに変更することを検討してください。

+0

有効なjsonである必要があります。 gettestプロセッサはjsonを理解していますか? – dangonfast

+0

私は、文字列抽出プログラムである 'xgettext'を参照していると思います。言語としてJavaScriptを指定した場合、JSONを理解できます。この問題は、私が説明したように、 '_(" string ")形式はJSONファイル内では有効ではないということです。したがって、JavaScriptオブジェクトを含むJavaScriptファイルで作業する必要があります。 –