【问题标题】:Android Lint limit languages to check for missing translationsAndroid Lint 限制语言以检查缺失的翻译
【发布时间】:2012-12-23 08:28:41
【问题描述】:

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

myproject/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, 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 种语言

【问题讨论】:

  • 这可能会有所帮助...stackoverflow.com/questions/11443996/…
  • 该链接仅在您不关心任何翻译时才有用。我的一个应用程序对 2 种语言正确 lint,另一个(使用相同的语言和文件夹结构)抛出如上所示的错误,我可以忽略它,但我想将丢失的字符串翻译成我的第二种语言。我必须逐行检查 100 多个字符串,以确保我没有遗漏目标语言,这非常令人沮丧。

标签: android android-lint


【解决方案1】:

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

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

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

更多信息在这里Putting Your APKs on DietAndroid(在页面上搜索resConfig)


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

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

希望这会有所帮助。几天来,我一直在桌子上敲打着我的头,在 SO 和 Google 上都想弄清楚如何表达这个问题。然后我终于意识到我的两个都有翻译的项目,图书馆项目之间有什么区别。

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

【讨论】:

  • 上述方法仅在您将 Android 库项目添加到您的工作区时才有效。如果您通过 gradle 或 maven 引用 Google Play Services 库,您将获得它附带的所有内容,因为您无法编辑打包的库。
  • @thunsakes,您的回答不正确。将 resConfig 添加到 build.gradle 文件后,您只需执行 Build -> CleanProject。之后,不受支持的语言环境将不会列在 lint“MissingTranslation”检查中。
【解决方案2】:

同样的问题。

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

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

这发生在 ADT 21.1 版本之后。

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

【讨论】:

    【解决方案3】:

    由于包含 Google 图书馆服务,我遇到了同样的问题...

    这是我目前的解决方案:

    1. 删除所有包含的库
    2. 应用棉绒
    3. 纠正错误
    4. 再次添加所有库

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多