Избегайте, чтобы Android Lint жаловался на непереведенную строку

Можно ли указать, что строки в файле в каталогах value-* намеренно не переведены на другие языки? У меня есть набор строк, которые являются общими для всех языков и не нуждаются в переводе, поэтому я создал файл unlocalized-strings.xml в каталоге values. Запуск 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.

Как определить эту область нелокализованных строк?

Ответ 1

Я не знаю, как игнорировать весь файл, но вы можете сделать это строка за строкой, используя:

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

Ответ 2

Это атрибут 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>

Ответ 3

Добавить в build.gradle:

android {
     lintOptions {
        disable 'MissingTranslation'
    }
}

Ответ 4

Есть 3 способа, которыми я знаю:

Чтобы применить значение модификации по значению: Установите атрибут translatable="false" в определении <string>:

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

Если у вас есть много ресурсов, которые не следует переводить, вы можете поместить их в файл с именем donottranslate.xml, а lint рассмотрит все непереводимые ресурсы.

Другой способ, который я обнаружил при просмотре источников проекта Hackers Keyboard:
Вы можете добавить префикс donottranslate- в свой файл ресурсов. Как и в предыдущем примере, lint рассмотрит все непереводимые ресурсы.
В вашем случае вы можете заменить unlocalized-strings.xml на donottranslate-strings.xml. Кажется, что это работает, но я не нашел никакой документации для этого совета.

Смотрите: Сайт проекта Android Tools: Non-translatable Strings

Ответ 5

И вот решение Android Studio для отключения этой фатальной ошибки Lint:

enter image description here

Ответ 6

Я думаю, что вам нужно вместо отключения lint отметить их атрибутом

translatable="false"

Ответ 7

Создайте файл ресурсов с именем файла, начинающимся с "donottranslate" (например, donottranslate.xml, donottranslate_urls.xml и т.д.), и lint полностью игнорирует свои строки при проверке отсутствующих переводов.

Ответ 8

Если вы хотите повернуть проверку во время отсутствия перевода, вы можете пойти

"Свойства проекта → Настройки Android Lint → Выберите MissingTranslation → Swtich To Ignore In Severity",

надеется, что это помогает другим, потому что я просто сталкиваюсь с этой проблемой:)

Ответ 9

Другой способ сделать это - добавить строку в файл gradle, используя resValue или 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)

Ответ 10

Чтобы избежать предупреждений в Android Studio, откройте "Настройки" > "Инспекции", снимите флажок "Неполные переводы". Но это не повлияет на конструкцию Gradle.

Ответ 11

Также есть "Редактор переводов" (щелкните правой кнопкой мыши по string.xml "Открыть редактор переводов").

Затем установите флажок "Непереводимый" на строке.

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