Вопрос

My app supports only 2 languages - English and German. So I have such folders structure for languages strings:

myproject/res/values/strings.xml

myproject/res/values-de/strings.xml

When I run Lint check I get many warnings about missing languages, that my app doesn't need to support:

"some_string" is not translated in 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

This warnings makes very difficult to understand which strings is not translated to German language. I have to look on each warning and search for "de" symbols to understand that this string doesn't have translation to German.

So my question is simple - how can I tell Lint to check only 2 languages?

Это было полезно?

Решение 2

Same issue here.

I created a bug report, feel free to star it

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

This happened since ADT 21.1 release.

I know no workaround for it (editing: I previously though to have found a workaround, but I looked at the wrong file, ups)

Другие советы

Update: You can limit the languages that are imported by Gradle! Cyril Mottier points out that you can specify which resources you support.

Starting Android Gradle Plugin 0.7, you can pass information about the configurations your application deals with to the build system. This is done thanks to the resConfig and resConfigs flavor and default config option. The DSL below prevents aapt from packaging resources that don’t match the app managed resources configurations:

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

More info here Putting Your APKs on Diet and Android (search for resConfig on the page)


It appears that if you add a project to your build path, any and all languages that have been added to those projects will trickle down into your project. Such as the "google-play-services_lib" project, which added a good 40+ languages to my project that I "supported". This was the reason I got the crazy lint errors (similar to yours above), even though I only had a default and Spanish (values-es) resource folder.

The solution is to simply delete the resource files/folders that you are not supporting from the external/imported projects. After I deleted all but the values/values-es folder in the google-play-services_lib project, the lint warnings went away for the non-target languages. Be sure to keep a backup of the resource files in case you feel like adding support for those languages/regions at a later date.

Hope this helps. I was banging my head on the table and all over SO and Google for a few days trying to figure out how to phrase the problem. Then I finally realized what the difference was between my two projects that both had translations, the library projects.

I do wish there was a way to tell the project that I only support languages x/y/z and have it ignore the rest.

I have the same problem, due to the inclusion of the Google library service...

Here is my solution, for the moment:

  1. remove all the included libraries
  2. apply lint
  3. correct the errors
  4. add all the libraries again
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top