Ответ 1
Я не знаю, как игнорировать весь файл, но вы можете сделать это строка за строкой, используя:
<string name="hello" translatable="false">hello</string>
Можно ли указать, что строки в файле в каталогах 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 name="hello" translatable="false">hello</string>
Это атрибут 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>
Добавить в build.gradle
:
android {
lintOptions {
disable 'MissingTranslation'
}
}
Есть 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
И вот решение 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.
Также есть "Редактор переводов" (щелкните правой кнопкой мыши по string.xml "Открыть редактор переводов").
Затем установите флажок "Непереводимый" на строке.
https://developer.android.com/studio/write/translations-editor