Избегайте, чтобы 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. 

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

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

 hello 

удачи

Это атрибут ignore пространства имен tools в файле строк, как показано ниже:

     

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

 android { lintOptions { disable 'MissingTranslation' } } 

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

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

 IMAP 

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

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

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

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

введите описание изображения здесь

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

 translatable="false" 

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

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

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

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

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

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

Давайте будем гением компьютера.