Android Lint: как игнорировать отсутствующие предупреждения о переводе в определенном файле
Можно ли перевести некоторые строки, но не все, в отдельный файл ресурсов без Lint, жалующихся на MissingTranslation?
Например: строки моего приложения находятся в res/values /strings.xml. Одна из строк -
<string name="postal_code">Postal Code</string>
Поскольку "почтовый код" обычно называется "почтовый индекс" в США, я хочу добавить еще один ресурс res/values-en-rUS/strings.xml с содержимым:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="postal_code">Zip Code</string>
</resources>
Однако, Линт жалуется на другие строки в values /strings.xml, но не в values-en-rUS/strings.xml
Я понимаю, что вы можете подавить предупреждения, указав tools:ignore
в values /strings.xml. Но это нежелательно, потому что предупреждение Lint действительно полезно при переводе на другой язык.
Вместо этого можно ли подавить предупреждение в файле values-en-rUS/strings.xml, как показано, чтобы Lint не использовал этот файл в качестве критерия при поиске недостающих переводов?
Ответы
Ответ 1
Хорошим способом отключить проверку MissingTranslations является добавление опции в файл build.gradle, специфичный для модуля.
android {
lintOptions{
disable 'MissingTranslation'
}
//other build tags
}
Если строки не указаны в локальном файле Strings, он берет строки из файла по умолчанию, который обычно является Strings.xml.
Ответ 2
Я нашел лучшее решение в соответствии с этим ответом: fooobar.com/questions/57303/...
Просто добавьте ignore="MissingTranslation"
к вашему string.xml
, например:
<?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
Это пока еще не ответило, поэтому я покажу вам одно решение:
В вашем XML файле DEFAULT вы можете определить строки, которые не нуждаются в переводах, например:
<string name="developer" translatable="false">Developer Name</string>
Эта строка не нуждается в переводе, и lint не будет жаловаться на нее...
Ответ 4
Lint поддерживает частичные региональные переводы, но ему нужно знать, на каком языке строки по умолчанию. Таким образом, он может отличить частичный региональный перевод от отсутствующих переводов в другом языке.
Чтобы указать локаль в values/strings.xml
:
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en">
Из lint:
По умолчанию этот детектор позволяет областям языка просто предоставлять подмножество строк и вернуться к стандартным языковым строкам. [...]
Вы можете указать lint (и другие инструменты), язык которого является языком по умолчанию в папке res/values /folder, указав инструменты: locale = "languageCode" для корневой элемент в вашем файле ресурсов. (Префикс инструментов относится к объявлению пространства имен http://schemas.android.com/tools.)
Добавьте спецификацию языкового стандарта в файл языка по умолчанию, и вы не должны получать эту ошибку для en-rUS
, но все равно будете информированы о любых других потерянных переводах.
Ответ 5
Если вы используете Eclipse, просмотрите кнопки панели инструментов в представлении предупреждений Lint. Один из них называется "Игнорировать в файле". Это должно помочь, но только если Lint присваивает ошибку вашему "американскому" файлу. Эта кнопка просто изменяет файл lint.xml в вашем проекте, поэтому вы можете легко и легко исследовать (и отменять).
Более подробная информация об этом подавлении зависит от http://tools.android.com/tips/lint/suppressing-lint-warnings