Лучшая практика для строк, не зависящих от языка

Мое приложение для Android содержит ряд строк, не зависящих от языка, таких как тарифы и номера телефонов службы поддержки. Я поместил файл XML в /res/values, содержащий, например:

<string name="helpdesk_number">0900 12345678</string>
<string name="helpdesk_tariff">60p</string>
<string name="helpdesk_address1">221B Baker Street</string>
<string name="helpdesk_address2">London NW1 6XE</string>

Lint жалуется, что эти строки не переводятся на другие языки:

В локали de отсутствуют переводы для: helpdesk_number, helpdesk_number, helpdesk_address1, helpdesk_address2... (еще 56)

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

Имеет ли смысл копировать эти строки на другие языки? Или есть способ заставить Lint игнорировать эти конкретные строки (или строковый файл)?


person Paul Lammertsma    schedule 21.03.2012    source источник


Ответы (6)


предстоящий (надеюсь, скоро) ADT17 принесет некоторые функции для игнорирования некоторых предупреждений о ворсе:

http://tools.android.com/recent/ignoringlintwarnings

http://tools.android.com/tips/lint/suppressing-lint-warnings

поэтому с ADT 17 вы можете поместить lint.xml в папку вашего проекта, содержащую:

<issue id="MissingTranslation" severity="ignore" />

или, возможно, вы также можете сделать это для каждой строки через:

tools:ignore="MissingTranslation"

но в документе нет на 100% ясности по этому поводу, и у меня сейчас нет времени на бета-тестирование 17 ..

Дополнение: ADT17 был выпущен вскоре после вашего запроса и должен решить ваши проблемы!

person ligi    schedule 21.03.2012
comment
Я видел некоторые соответствующие замечания в предварительном просмотре для разработчиков, но не осознавал, что они настолько специфичны. Не могу дождаться, чтобы дать ему качели! - person Paul Lammertsma; 22.03.2012
comment
Разумеется, ADT версии 17 может игнорировать предупреждения MissingTranslation Lint для отдельных файлов ресурсов. - person Paul Lammertsma; 23.03.2012

В последних версиях Lint вы можете игнорировать конкретные строки «MissingTranslation», например:

strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>    

    <!--suppress MissingTranslation -->
    <string name="some_string">ignore my translation</string>
    ...

</resources>

http://tools.android.com/tips/lint/suppressing-lint-warnings

person Eduko    schedule 30.05.2014

Прямо из инструмента Lint:

Если строку не нужно переводить, вы можете добавить к элементу атрибут translatable="false" или определить все свои непереводимые строки в файле ресурсов с именем donottranslate.xml. Или вы можете игнорировать проблему с помощью атрибута tools:ignore="MissingTranslation".

Просто создайте файл «donottranslate.xml» в папке res/values по умолчанию, и Lint проигнорирует его. Я поместил сюда все свои ключи/идентификаторы приложений и тому подобное, а также настройки, поскольку их не нужно «переводить» и они просто занимают место в других файлах.

person thunsaker    schedule 19.02.2013

другой способ избежать этого сообщения, добавив в свой файл ресурсов:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
person Jorgesys    schedule 09.10.2013

 > Best practice for language-independent strings

В моем приложении у меня есть два файла строковых ресурсов, один из которых называется «NonTranslatabable.xml», который будет получать те строки, которые не будут переведены (appName, fileNames, ..).

При переводе приложения на другой язык мне не нужно думать, нужно ли переводить строку или нет.

person k3b    schedule 21.03.2012
comment
Спасибо, но на самом деле это моя текущая ситуация. Lint сообщит, что строки в этом файле не переведены. - person Paul Lammertsma; 22.03.2012
comment
извините, тогда я неправильно понял заголовок вашего вопроса. - person k3b; 22.03.2012

Добавьте это в свой файл приложения Gradle в разделе «Android».

lintOptions {
    disable 'MissingTranslation'
}
person Leonardo Rignanese    schedule 17.04.2016
comment
Это полностью отключит проверку на ворсинки, чего я не рекомендую. - person Paul Lammertsma; 17.04.2016