2011-10-12 9 views
20

誰かがres/valuesディレクトリの文字列配列を検証する良い方法を見つけたのかどうか疑問に思っていました。Androidの文字列配列のロケール検証

私は、デフォルトのロケールを使用してコードで作成し、アプリのための翻訳者がその翻訳をするときに、彼らはまた、文字列の配列を作成

<string-array name="array_example1"> 
    <item>One</item> 
    <item>Two</item> 
    <item>Three</item> 
</string-array> 

のようなものの資源を有することができます。場合によっては、1つの翻訳が遅れて別のリソースファイルが配列に含まれない場合があります(上記の例では「1」と「2」のみ)。

あるかどうかを検証する簡単な方法はありますかエントリ数の不一致?不一致があると、コードに問題が発生する可能性がありますが、アプリケーションでは10個の文字列配列が複数の言語でチェックされているため、すべて一致していれば時間がかかります。

これには他にどのようなアプローチがありますか?

+1

ファイルを解析し、それらを一致させる小さなスクリプトを作成することがありますか? –

+0

私が知っているものはありません。いくつかのカスタムXML比較ツールは、ありますか? – njzk2

答えて

41

私はクラッシュを止めるより良い方法を見つけました。私は、その文字列の配列は、次のように文字列リソースを参照することができ実現していませんでした:

<string-array name="array_example1"> 
    <item>@string/resOne</item> 
    <item>@string/resTwo</item> 
    <item>@string/resThree</item> 
</string-array> 

不一致がある場合は、そのため、このように

<string name="resOne">One</string> 
<string name="resTwo">Two</string> 
<string name="resThree">Three</string> 

を追加し、既定の言語はちょうどのために示されますそのオプションと異なるサイズのリストのためにクラッシュを停止

+0

完璧なソリューション!私はそれが可能だったと思った、私は構文を知らなかった: –

+0

共有ありがとう。 – Sathesh

+0

'translatable =" false "'属性を ''要素に設定することもお勧めします。この方法では、この配列が他の言語ファイルに存在する場合、Lintによって通知されます。 – Robyer

関連する問題