Языковые ограничения для Android Lint для проверки отсутствующих переводов

Мое приложение поддерживает только 2 языка - английский и немецкий. Поэтому у меня такая структура папок для строк слов:

myproject/res/values ​​/strings.xml

MyProject/RES/значения-де/strings.xml

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

"some_string" не переводится в af, am, ar, be, bg, ca, cs, da, el, en-rGB, es, es-rUS, et, fa, fi, fr, hi, hr, hu, in, it, iw, ja, ko, lt, lv, ms, nb, nl, pl, pt, pt-rPT, ro, ru, sk, sl, sr, sv, sw, th, tl, tr, uk, vi, zh-rCN, zh-rTW, zu

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

Итак, мой вопрос прост - , как я могу сказать, что Lint проверяет только 2 языка?

Ответ 1

Здесь же проблема.

Я создал отчет об ошибке, не стесняюсь его показывать

http://code.google.com/p/android/issues/detail?id=50525

Это произошло после выпуска ADT 21.1.

Я не знаю обходного пути для него (редактирование: я ранее, хотя нашел обходное решение, но я посмотрел на неправильный файл, ups)

Ответ 2

Обновить. Вы можете ограничить языки, импортированные с помощью Gradle! Кирилл Моттье указывает, что вы можете указать, какие ресурсы вы поддерживаете.

Запуск Android Gradle Плагин 0.7, вы можете передавать информацию о конфигурациях, к которым ваше приложение относится к системе сборки. Это делается благодаря параметрам resConfig и resConfigs и настройке по умолчанию. DSL ниже предотвращает переход от ресурсов упаковки, которые не соответствуют конфигурациям управляемых приложений:

defaultConfig {
    // ...
    resConfigs "en", "de", "fr", "it"
}

Дополнительная информация здесь Ввод ваших APK в диету и Android (поиск resConfig на странице)


Похоже, что если вы добавите проект в свой путь сборки, все и все языки, которые были добавлены в эти проекты, будут стекаться в ваш проект. Например, проект "google-play-services_lib", который добавил к моему проекту хорошие 40 + языки, которые я "поддерживал". Именно по этой причине я получил сумасшедшие ошибки lint (аналогично вашим выше), хотя у меня была только папка с ресурсами по умолчанию и испанский (values-es).

Решение состоит в том, чтобы просто удалить файлы/папки ресурсов, которые вы не поддерживаете из внешних/импортированных проектов. После того, как я удалил все, кроме папки values ​​/values-es, в проекте google-play-services_lib, предупреждения линта исчезли для нецелевых языков. Обязательно сохраните резервную копию файлов ресурсов, если вам захочется добавить поддержку этих языков/регионов на более позднюю дату.

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

Я бы хотел, чтобы был способ сообщить проекту, что я поддерживаю только языки x/y/z и игнорирую остальные.

Ответ 3

У меня та же проблема из-за включения службы библиотеки Google...

Вот мое решение, на данный момент:

  • удалить все включенные библиотеки
  • применить lint
  • исправить ошибки
  • добавить все библиотеки снова