Линт: Как игнорировать ошибки «<ключ> не переведен в <язык>»?


189

Я не могу скомпилировать / отладить наше приложение для Android, потому что файлы локализации еще не идеальны.

Средство проверки моей IDE Lint создает ошибки, говоря:

newCardsOrderVals не переводится в ar, bg, ca, cs

Компиляция / установка / запуск с помощью Ant работает нормально, но я бы хотел использовать мою IDE для облегчения отладки.

Есть ли способ отключить эту конкретную проверку или в идеале сделать это предупреждением, а не ошибкой?

Я понимаю, что перед выпуском нам действительно нужно правильно настроить файлы локализации, но пока это не является приоритетом, поскольку сами экраны изменяются очень часто.


1
Есть ли способ настроить все языки, помеченные как «не переведенные»? Я получаю ошибки, такие как «эс, он и я». Почему я получаю эти языки? Как настроить приложение Android для ограничения набора только на «en»?
индекс

@inder: Может быть, потому что у вас есть каталоги, такие как «values-he» и т. д. в вашей папке res /?
Николас Рауль

1
Нет, у меня нет таких каталогов. Только значения, макет и рисовать.
конец

7
Да, он и я из библиотеки Facebook SDK.
Мадей

2
Это ошибка в Android Lint: code.google.com/p/android/issues/detail?id=50525
altumano

Ответы:


348

Android Studio:

  • "Файл"> "Настройки" и введите "MissingTranslation" в поле поиска

Затмение:

  • Windows / Linux: в «Окно»> «Настройки»> «Android»> «Проверка ошибок Lint»
  • Mac: «Eclipse»> «Настройки»> «Android»> «Проверка ошибок Lint»

Найдите MissingTranslationстроку и установите ее так, Warningкак показано ниже:

Пропущенные переводы, не переведены в


2
... Он находится в «Окне»> «Настройки»> «Android»> «Проверка ошибок Lint»
Олли Беннетт

2
Это полезно, но у меня не было этой проблемы в течение очень долгого времени, пока она внезапно не появилась. И я не знаю почему.
pktangyue

Спасибо за ваш ценный пост
Паван Асати

К сведению, в Android Studio это «Файл»> «Настройки» и «MissingTranslation» в поле поиска.
peer

86

Вы можете установить атрибут transurable = "false" в определении следующим образом:

<string name="account_setup_imap" translatable="false">IMAP</string>

Для получения дополнительной информации: http://tools.android.com/recent/non-translatablestrings


1
Я сказал , что «файлы локализации не совершенны еще ». Они наполняются понемногу. translatable = "false" не позволит никому переводить
Николас Рауль

3
Хотя ответ не имеет прямого отношения к вопросу, я думаю, он предоставляет блестящее решение для таких людей, как я, которые нашли эту тему, когда Google «как сделать ворс, не заботясь о константах / параметрах моего приложения». Спасибо, efor18!
aka_sh

83

Чтобы игнорировать это в сборке Gradle, добавьте это в раздел Android вашего файла сборки:

lintOptions {
   disable 'MissingTranslation'
}

2
Огромное спасибо, буквально сэкономил мне дни, чтобы найти все правильные строки для производства.
D-Kent

Хороший, это сделал это
Мирко

Добавил это в мой модуль приложения.
Меркурий

23

Это приведет к тому, что Lint проигнорирует отсутствующую ошибку перевода для ВСЕХ строк в файле, но при необходимости можно проверить другие файлы строковых ресурсов.

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

Это, пожалуй, самый правильный способ, без отключения пуха для всего проекта
MatPag

11

Если вы хотите отключить предупреждения о конкретных строках, вы можете использовать следующее:

strings.xml

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

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

</resources>

Если вы хотите предупреждать о конкретных строках, а не об ошибке, вам нужно будет создать собственное правило Lint, чтобы настроить уровень серьезности для конкретной вещи.

http://tools.android.com/tips/lint-custom-rules


1
+1 Хороший способ сделать это раз и навсегда, чтобы всем разработчикам команды не приходилось изменять свои настройки IDE. Есть ли способ сделать это предупреждением, а не подавлять полностью?
Николас Рауль

Вы можете создать собственное правило Lint, чтобы настроить статус серьезности для конкретной вещи. Вот пример: tools.android.com/tips/lint-custom-rules
Eduko


8

добавьте строки в ваш файл /res/values.xml на корневой вкладке ресурса следующим образом:

<resources
xmlns:tools="http://schemas.android.com/tools" 
    tools:locale="en" tools:ignore="MissingTranslation">

tools: locale устанавливает локальный язык на английский, в дальнейшем не требуется языковой перевод для всех строк ресурсов и инструментов: игнорировать, чтобы Lint игнорировал отсутствующие переводы значений строк ресурсов.


6

Добавьте следующее в ваш файл Gradle в разделе Android

    lintOptions {
       disable 'MissingTranslation'
    }


3

Другой подход состоит в том, чтобы указать языки, которые вы намереваетесь поддерживать, и отфильтровать остальные, используя опцию 'resConfigs' с Gradle.

Проверьте этот другой ответ для деталей

Это лучше, я думаю, потому что вам не нужно полностью игнорировать допустимые ошибки перевода для языков, которые вы на самом деле хотите поддерживать



1

Многим из них даны разные рабочие ответы, и я тоже получил те же самые ошибки, которые я игнорирую, выполнив следующее с eclipse.

  1. нажмите на Windows
  2. нажмите на настройки
  3. выберите android> Проверка ошибок Lint.
  4. нажмите игнорировать Все> Применить> ОК.

Это оно.


2
это будет игнорировать все предпочтения Lint. Не только отсутствующий перевод
Лучано Родригес

1

Следующее сработало для меня.

  • Нажмите на Windows
  • Нажмите на настройки
  • Выберите android> Проверка ошибок Lint.
  • Найдите и выберите соответствующую проверку Lint и
  • Установите уровень серьезности «Игнорировать» (справа внизу)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.