Android Lint限制语言检查丢失的翻译

24
我的应用程序只支持英语和德语两种语言。因此,我为语言字符串设置了这样的文件夹结构: ``` 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种语言

这可能会很有帮助... https://dev59.com/8mgu5IYBdhLWcg3wRlH0 - Santhosh
1
那个链接只有在你不关心任何翻译的情况下才有用。我的其中一个应用程序可以正确地为两种语言进行代码检查,而另一个应用程序(使用相同的语言和文件夹结构)会出现上述错误,我可以忽略它,但我想将缺失的字符串翻译成我的第二语言。我必须逐行检查超过100个字符串,以确保我没有错过我的目标语言,非常令人沮丧。 - thunsaker
3个回答

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

从Android Gradle Plugin 0.7开始,您可以向构建系统传递有关应用程序处理的配置信息。这是通过resConfig和resConfigs flavor和default config选项完成的。以下DSL可防止aapt打包不匹配应用程序管理的资源配置的资源:

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

在这里获取更多信息压缩APK大小Android(在页面上搜索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服务库,则会获取与其一起提供的所有内容,因为您无法编辑打包的库。 - thunsaker
@thunsakes,你的回答是不正确的。在build.gradle文件中添加resConfig后,你只需要执行Build -> CleanProject操作。之后,不支持的语言环境将不会在lint的"MissingTranslation"检查中列出。 - Simon-Droid

8

我也遇到了同样的问题。

我已经创建了一个错误报告,请随意给它点赞。

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

这个问题是从ADT 21.1版本开始出现的。

我不知道任何解决方法(编辑:我先前认为找到了一个解决方法,但事实上我看错了文件)。


0

我也遇到了同样的问题,这是由于包含了Google库服务所致...

目前我的解决方案如下:

  1. 删除所有已包含的库
  2. 应用lint检查
  3. 纠正错误
  4. 重新添加所有库

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接