2013-08-14 12 views
22

Lintが別のリソースファイルで一部の文字列を翻訳することは可能ですか?MissingTranslationAndroid Lint:特定のファイルの欠落している翻訳の警告を無視する方法

たとえば、私のアプリの文字列はすべてres/values/strings.xmlにあります。文字列の一つは、「郵便番号」が、通常は米国で「郵便番号」と呼ばれているので

<string name="postal_code">Postal Code</string>

で、私が欲しい別のリソースを追加するにはのres /値-EN-RUS /のstrings.xmlと内容:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="postal_code">Zip Code</string> 
</resources> 

しかし、リントは値/のstrings.xmlではなく、他の文字列を訴え値エンRUS /のstrings.xml

tools:ignoreの値/ strings.xmlに指定して、警告を抑制することができます。しかし、これは望ましくありません。なぜなら、Lintの警告は実際には別の言語に翻訳するときに便利だからです。

代わりに、それは行方不明の翻訳を探しているときの基準として、そのファイルを使用しないように糸くずを伝える、のように、値エンRUS /のstrings.xmlファイルに警告を抑制することができますか?

+0

関連/ほぼ同じ:[Lint "MissingTranslation"の部分翻訳を無視](http://stackoverflow.com/questions/) 12019282/ignoring-android-lint-missing-translation-check-for-partial-翻訳者) – blahdiblah

答えて

0

Eclipseを使用している場合は、Lint警告表示のツールバーのボタンを見てください。そのうちの1つは「ファイルで無視」と呼ばれます。これは、Lintがあなたの "US"ファイルにエラーを割り当てる場合にのみ役立ちます。そのボタンはプロジェクト内のlint.xmlファイルを単純に変更するため、簡単に調査(アンドゥ)することができます。そのファイルの特定の抑制について

詳細はhttp://tools.android.com/tips/lint/suppressing-lint-warnings

26

で、私はこの答えに応じて、より良い解決策を見つけている:https://stackoverflow.com/a/13797364/190309

ただ、たとえば、あなたのstring.xmlignore="MissingTranslation"を追加します。

<?xml version="1.0" encoding="utf-8"?> 
<resources 
    xmlns:tools="http://schemas.android.com/tools" 
    tools:ignore="MissingTranslation" > 

    <!-- your strings here; no need now for the translatable attribute --> 

</resources> 
+3

OPは、欠けている翻訳を無視するだけの解決策を具体的に求めました。このソリューションは、指定されたファイルのすべてに適用されます。 – String

6

Lintは部分的な地域翻訳をサポートしますが、デフォルトの文字列がどの言語かを知る必要があります。そうすれば、部分的な地域翻訳と、異なるロケールでの翻訳の欠落を区別することができます。

<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en"> 

糸くずから:

デフォルトでは、この検出器は、言語の領域が、文字列だけの サブセットを提供し、バックに落下することができますvalues/strings.xmlでロケールを指定するに

標準言語文字列。 [...]

リソースファイルのルート要素 の場合、tools:locale = "languageCode"を指定すると、言語がデフォルトの言語 のres/values /フォルダにあることがわかります。(ツールのプレフィックス は、名前空間宣言http://schemas.android.com/toolsを参照。)

デフォルトの言語ファイルにロケールの指定を追加し、あなたがen-rUSのためにそのエラーを取得するべきではありませんが、それでも他の行方不明の翻訳が通知されます。

+2

ありがとう、これは正解でなければなりません。 –

40

MissingTranslationsチェックを無効にする良い方法は、モジュール固有のbuild.gradleファイルにオプションを追加することです。

android { 

lintOptions{ 
     disable 'MissingTranslation' 
    } 
//other build tags 
} 

文字列は、ロケール固有の文字列ファイルに存在しない場合、それは一般のstrings.xmlでデフォルトのファイルから文字列を取ります。

+0

これは、*すべての* MissingTranslationの警告/エラーを無効にするので、 'en-rUS'が意図的に' en'デフォルトを部分的にオーバーライドすることに誤認はないでしょうが、他のロケールが翻訳がありません。 – blahdiblah

7

これはまだ答えていないようですので、私はあなたに1つの解決策を示しています。あなたは、文字列を定義することができ、あなたのデフォルトのXMLファイルでは

を、以下のような翻訳は必要ありませんので:

<string name="developer" translatable="false">Developer Name</string> 

これを文字列を翻訳する必要はありませんし、リントはそれについて文句を言うことはありません...

+0

これは、別のリソースを提供するはずのロケール内の翻訳不能な文字列を翻訳することに関する警告に問題を切り替えます。 – blahdiblah

関連する問題