web-dev-qa-db-ja.com

Androidを避けるリントは、翻訳されていない文字列について文句を言う

value-*ディレクトリ内のファイル内の文字列が意図的に他の言語に翻訳されないことを指定することは可能ですか?すべての言語に共通の文字列がたくさんあり、翻訳する必要がないので、valuesディレクトリ内にunlocalized-strings.xmlファイルを作成しました。Android Lintを実行して問題をチェックします一部の翻訳が欠落していると言われ続けます。プロジェクト全体でこのチェックを無効にしたくありません。一部のXMLファイルでのみ無効にしたいのですが、可能ですか?

"title_widget_updater_service" is not translated in de, en, en-rUS, it

Issue: Checks for incomplete translations where not all strings are translated
Id: MissingTranslation

If an application has more than one locale, then all the strings declared in one language     
should also be translated in all other languages.

By default this detector allows regions of a language to just provide a subset of the 
strings and fall back to the standard language strings. You can require all regions to 
provide a full translation by setting the environment variable 
Android_LINT_COMPLETE_REGIONS.

これをどのように定義できますか領域 of 非ローカライズ文字列?

116
Gianni Costanzi

すべてのファイルを無視する方法はわかりませんが、次を使用して文字列ごとに行うことができます:

<string name="hello" translatable="false">hello</string>
158
Luis

次のように、文字列ファイルのignore名前空間のtools属性です。

<?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>
224
Adil Hussain

build.gradleに追加:

Android {
     lintOptions {
        disable 'MissingTranslation'
    }
}
153
Giraffe Lion

私が知っている3つの方法があります:

値ごとに変更値を適用するには:translatable="false"定義に<string>属性を設定します。

<string name="account_setup_imap" translatable="false">IMAP</string>

翻訳すべきでないリソースがたくさんある場合は、それらをdonottranslate.xmlという名前のファイルに配置すると、lintはそれらすべてを翻訳不可能なリソースと見なします。

ブラウジング中に発見した別の方法 Hackers Keyboard project sources
プレフィックスdonottranslate-をリソースファイルに追加できます。前の例のように、lintはそれらすべてを翻訳不可能なリソースと見なします。
あなたの場合、unlocalized-strings.xmldonottranslate-strings.xmlに置き換えることができます。動作しているようですが、このヒントのドキュメントは見つかりませんでした。

参照: Android Tools Project Site:Non-translatable Strings

23
Cyril Leroux

そして、この致命的なLintエラーを無効にするためのAndroid St​​udioソリューションがあります。

enter image description here

12
Dzhuneyt

donottranslate」で始まるファイル名でリソースファイルを作成します(例donottranslate.xmldonottranslate_urls.xmlなど)、lintは欠落している翻訳をチェックするとき、その文字列を完全に無視します。

2
Kai

Lintを無効にする代わりに必要なのは、属性でマークすることだと思います

translatable="false"
2

もう1つの方法は、resValueまたはbuildConfigFieldを使用して、文字列をgradleファイルに追加することです。そんな感じ:

buildTypes {
    debug {
        buildConfigField "string", "app_name1", "App Name"
        resValue "string", "app_name2", "App Name"
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        buildConfigField "string", "app_name1", "App Name"
        resValue "string", "app_name2", "App Name"
    }
}

使用法:

// buildConfigField
BuildConfig.APP_NAME1

// resValue
getString(R.string.app_name2)
1
heloisasim

欠落している翻訳のリントチェックをオフにしたい場合は、

「プロジェクトのプロパティ-> Android Lint設定-> MissingTranslationを選択->重大度を無視するSwtich」、

これが他の人に私がこの問題に遭遇するのを助けることを願っています:)

1
hctang

「翻訳エディター」もあります(string.xmlを右クリックして「翻訳エディターを開く」)。

次に、文字列の[翻訳不可]ボックスをオンにします。

https://developer.Android.com/studio/write/translations-editor

0
user1010160

Android St​​udioで警告が表示されないようにするには、[設定] ==> [検査]を開き、[不完全な翻訳]のチェックを外します。ただし、Gradleビルドには影響しません。

0
Kof