LintがMissingTranslationについて文句を言うことなく、別のリソースファイルですべてではなく一部の文字列を翻訳することは可能ですか?
たとえば、アプリの文字列はすべてres/values/strings.xmlにあります。文字列の1つは
<string name="postal_code">Postal Code</string>
「郵便番号」は通常、米国では「郵便番号」と呼ばれるため、別のリソースres/values-en-rUS/strings.xmlをコンテンツとともに追加します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="postal_code">Zip Code</string>
</resources>
ただし、Lintはvalues/strings.xmlにある他の文字列について文句を言いますが、values-en-rUS/strings.xmlにはありません。
values/strings.xmlでtools:ignore
を指定することで、警告を抑制できることを理解しています。しかし、これは望ましくありません。別の言語に翻訳するとき、Lint警告は実際に役立つからです。
代わりに、values-en-rUS/strings.xmlファイルの警告を抑制して、欠落している翻訳を探すときにそのファイルを基準として使用しないようにリントに指示することは可能ですか?
MissingTranslationsチェックを無効にする良い方法は、モジュール固有のbuild.gradle
fileにオプションを追加することです。
Android {
lintOptions{
disable 'MissingTranslation'
}
//other build tags
}
ロケール固有の文字列ファイルに文字列が存在しない場合、通常はstrings.xml
であるデフォルトファイルから文字列を取得します。
私はこの答えに従ってより良い解決策を見つけました: https://stackoverflow.com/a/13797364/190309
ignore="MissingTranslation"
をstring.xml
に追加するだけです。例えば:
<?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>
Lintは部分的な地域翻訳をサポートしていますが、デフォルトの文字列がどの言語であるかを知る必要があります。そのようにして、異なるロケールで部分的な地域の翻訳と欠落している翻訳を区別できます。
values/strings.xml
でロケールを指定するには:
<resources xmlns:tools="http://schemas.Android.com/tools" tools:locale="en">
リントから:
デフォルトでは、このディテクタは言語の領域が文字列のサブセットを提供し、標準言語文字列にフォールバックすることを許可します。 [...]
リソースファイルのルート要素にtools:locale = "languageCode"を指定すると、lint(およびその他のツール)がres/values /フォルダーのデフォルト言語であるかどうかを確認できます。 (ツールのプレフィックスは名前空間宣言を指します http://schemas.Android.com/tools 。)
ロケール仕様をデフォルトの言語ファイルに追加すると、en-rUS
のエラーは表示されないはずですが、それ以外の翻訳がない場合は通知されます。
これはまだ回答されていないようですので、1つの解決策を示します。
DEFAULT xmlファイルでは、次のような翻訳を必要としない文字列を定義できます。
<string name="developer" translatable="false">Developer Name</string>
この文字列を翻訳する必要はなく、lintも文句を言うことはありません...
これはスイスのナイフの答えですので、あなたがいる状況に応じて、欠落している翻訳メッセージを無視できます:
すべてのMissingTranslation
メッセージを無視します。
build.gradle
ファイルを編集します。
Android {
lintOptions{
disable 'MissingTranslation'
}
}
具体的なresources.xml
ファイル内のすべての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>
1つの文字列のみのMissingTranslation
メッセージを無視します。
<string name="developer" translatable="false">Developer Name</string>
Eclipseを使用している場合は、Lint警告ビューのツールバーボタンをご覧ください。それらの1つは「ファイル内で無視」と呼ばれます。これは役立つはずですが、Lintがエラーを「US」ファイルに割り当てた場合のみです。このボタンはプロジェクトのlint.xmlファイルを変更するだけなので、簡単に調査(および元に戻す)できます。
そのファイル固有の抑制の詳細は http://tools.Android.com/tips/lint/suppressing-lint-warnings にあります。