Подтвердить что ты не робот

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 не использовал этот файл в качестве критерия при поиске недостающих переводов?

4b9b3361

Ответ 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