24

我的应用程序仅支持 2 种语言 - 英语和德语。所以我有这样的语言字符串文件夹结构:

我的项目/res/values/strings.xml

myproject/res/values-de/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 , 它, 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 种语言

4

3 回答 3

40

更新:您可以限制 Gradle 导入的语言!Cyril Mottier 指出,您可以指定您支持的资源。

从 Android Gradle 插件 0.7 开始,您可以将有关应用程序处理的配置的信息传递给构建系统。这要归功于 resConfig 和 resConfigs 风格和默认配置选项。下面的 DSL 防止 aapt 打包与应用管理的资源配置不匹配的资源:

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

更多信息在这里将您的 APKs 放在 DietAndroid上(在页面上搜索 resConfig)


看来,如果您将项目添加到构建路径中,则已添加到这些项目中的任何和所有语言都将渗透到您的项目中。例如“google-play-services_lib”项目,它为我“支持”的项目添加了 40 多种语言。这就是我得到疯狂的 lint 错误(类似于上面的错误)的原因,即使我只有一个默认和西班牙语(values-es)资源文件夹。

解决方案是简单地从外部/导入项目中删除您不支持的资源文件/文件夹。在我删除了 google-play-services_lib 项目中除 values/values-es 文件夹之外的所有文件夹后,非目标语言的 lint 警告消失了。请务必保留资源文件的备份,以防您想在以后添加对这些语言/地区的支持。

希望这可以帮助。我把头敲在桌子上,在 SO 和谷歌上打了几天,试图弄清楚如何表达这个问题。然后我终于意识到我的两个都有翻译的项目,图书馆项目之间有什么区别。

我确实希望有一种方法可以告诉项目我只支持语言 x/y/z 并让它忽略其余的。

于 2013-02-21T22:36:51.120 回答
8

这里同样的问题。

我创建了一个错误报告,请随意给它加星标

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

这发生在 ADT 21.1 版本之后。

我不知道它的解决方法(编辑:我以前虽然找到了解决方法,但我查看了错误的文件,ups)

于 2013-02-21T10:02:39.877 回答
0

由于包含谷歌图书馆服务,我有同样的问题......

这是我的解决方案,目前:

  1. 删除所有包含的库
  2. 应用棉绒
  3. 纠正错误
  4. 再次添加所有库
于 2013-03-11T12:25:34.240 回答