Можно ли перевести некоторые строки, но не все, в отдельный файл ресурсов без 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>
Тем не менее, Линт жалуется на другие строки в значениях / strings.xml, но не на значения-en-rUS / strings.xml
Я понимаю, что вы можете подавить предупреждения, указав tools:ignore
in values / strings.xml . Но это нежелательно, потому что предупреждение Lint действительно полезно при переводе на другой язык.
Вместо этого можно ли подавить предупреждение в файле values-en-rUS / strings.xml , как показано , чтобы Lint не использовал этот файл в качестве критерия при поиске недостающих переводов?
Хорошим способом отключить проверку MissingTranslations является добавление опции в файл build.gradle, специфичный для модуля.
android { lintOptions{ disable 'MissingTranslation' } //other build tags }
Если строки не указаны в файле Strings, специфичном для локали, он берет строки из файла по умолчанию, который обычно является Strings.xml.
Я нашел лучшее решение в соответствии с этим ответом: https://stackoverflow.com/a/13797364/190309
Просто добавьте 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>
Это пока еще не ответило, поэтому я покажу вам одно решение:
В вашем XML-файле DEFAULT вы можете определить строки, которые не нуждаются в переводах, таких как:
<string name="developer" translatable="false">Developer Name</string>
Эта строка не обязательно должна быть переведена, и lint не будет жаловаться на нее либо …
Lint имеет определенную поддержку только для переопределения некоторых элементов в файлах ресурсов для конкретных регионов (например, en-rUS
en
). Если регион соответствует языку по умолчанию, вы должны сообщить ему, на каком языке указаны ваши строки по умолчанию, указав язык в values/strings.xml
:
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en">
От lint:
По умолчанию этот детектор позволяет областям языка просто предоставлять подмножество строк и возвращаться к стандартным языковым строкам. […]
Вы можете указать lint (и другие инструменты), язык которых является языком по умолчанию в вашей папке res / values /, указав инструменты: locale = "languageCode" для корневого элемента в вашем файле ресурсов. (Префикс инструментов относится к объявлению пространства имен http://schemas.android.com/tools .)
Добавьте спецификацию локали к языку по умолчанию, и вы не должны получать эту ошибку для en-rUS
, но все равно будете проинформированы о любых других en-rUS
переводах.
Если вы используете Eclipse, просмотрите кнопки панели инструментов в представлении предупреждений Lint. Один из них называется «Игнорировать в файле». Это должно помочь, но только если Lint присваивает ошибку вашему «US» файлу. Эта кнопка просто изменяет файл lint.xml в вашем проекте, так что вы можете легко и быстро исследовать (и отменить).
Более подробная информация об этом подавлении зависит от http://tools.android.com/tips/lint/suppressing-lint-warnings.