127

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

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

4

11 に答える 11

237

これは、次のように、文字列ファイル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>
于 2012-12-10T08:32:57.533 に答える
162

すべてのファイルを無視する方法はわかりませんが、次のコマンドを使用して文字列ごとに無視できます。

<string name="hello" translatable="false">hello</string>
于 2012-09-25T23:54:53.460 に答える
153

に追加build.gradle

android {
     lintOptions {
        disable 'MissingTranslation'
    }
}
于 2015-10-13T09:09:09.843 に答える
23

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

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

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

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

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

参照:Android Toolsプロジェクトサイト:翻訳不可能な文字列

于 2014-05-05T10:21:30.070 に答える
13

そして、この致命的なLintエラーを無効にするためのAndroidStudioソリューションは次のとおりです。

ここに画像の説明を入力してください

于 2014-09-24T23:57:35.257 に答える
2

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

translatable="false"
于 2012-09-25T21:26:25.067 に答える
2

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

于 2015-07-01T14:02:50.623 に答える
1

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

"プロジェクトのプロパティ->AndroidLintの設定->MissingTranslation->Swtich To Ignore In Severity"、

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

于 2014-04-29T09:51:10.930 に答える
1

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

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)
于 2016-05-17T23:31:59.337 に答える
0

Android Studioでの警告を回避するには、[設定] ==> [検査]を開き、[不完全な翻訳]のチェックを外します。ただし、Gradleビルドには影響しません。

于 2014-10-10T18:21:23.853 に答える
0

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

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

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

于 2019-03-06T08:37:56.507 に答える