Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
580 views
in Technique[技术] by (71.8m points)

Android Lint limit languages to check for missing translations

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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...