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

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

MyProject/ RES / значения /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 это, я, я, ко, lt, lv, ms, nb, nl, pl, pt, pt-rPT, ro, ru, sk, sl, sr, sv, sw, th, tl, tr, uk, vi, ж-рчн, ж-ртв, зу

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

Поэтому мой вопрос прост - как я могу сказать Lint проверить только 2 языка?

3 ответа

Решение

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

Я создал сообщение об ошибке, не стесняйтесь отмечать его

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

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

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

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

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

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

Больше информации здесь Размещение ваших APK на Diet и Android (ищите resConfig на странице)


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

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

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

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

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

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

  1. удалить все включенные библиотеки
  2. применить ворс
  3. исправить ошибки
  4. снова добавьте все библиотеки
Другие вопросы по тегам