Android:获取字符串资源的缺失翻译

时间:2011-08-08 16:34:44

标签: android localization internationalization

在Android中,您可以在res/values/strings.xml中的默认语言环境中指定文本。可以在res/values-it/strings.xml(例如意大利语)中为新语言添加其他翻译。如果未翻译字符串,则使用fallback-default语言环境。

目前我无法确定哪些字符串仍需要翻译(values/strings.xml中有哪些字符串,但values-$/strings.xml 中没有所有$ in in languages )并且哪些字符串已被翻译,虽然是偶像(所以在values-$/strings.xml,但不在值/ strings.xml 存在$ in languages

我正在寻找一种工具,它可以提供缺少的翻译和过时的翻译。

说实话,为命令行编写这样的工具并不困难,我几乎不相信没有人这样做过。

16 个答案:

答案 0 :(得分:22)

这不是自动化的,但速度非常快。在Eclipse中,转到Window-> Show View-> Other-> Android-> Resource Explorer。

现在,在底部的资源浏览器选项卡下(或者您将其移动到的任何位置),在String下查找。如果您有完整的翻译,每个字符串应具有相同数量的版本,因此您可以在几秒钟内扫描列表。

对每个包含字符串的项目执行此操作。

直到我本地化之后我才知道这一点,但它仍然有用(例如当我添加一个新字符串时)。

答案 1 :(得分:16)

如果您使用的是Android Studio,则很容易找到缺少的字符串。

右键单击values / strings.xml 并选择“打开翻译编辑器”: pic 1

您可以轻松找到所有语言中缺少的字符串,如下所示: enter image description here

谢谢......

答案 2 :(得分:13)

新的官方Android Lint工具可帮助您检测此问题,还有许多其他问题:http://tools.android.com/tips/lint

答案 3 :(得分:11)

有趣的问题。我写了一个简单的脚本来在https://gist.github.com/1133059的android项目中找到重复的资源。我知道这很难看,但我会在几天后重写它,也许会在github上创建一个项目。 从控制台运行它:
$scala DuplicatesFinder.scala /path/to/android/project

更新:
我在github https://github.com/4e6/android-localization-helper做了一个项目,也许有人觉得它很有用

答案 4 :(得分:4)

自SDK版本17以来,Eclipse中的Android Dev Kit lint工具有了很多改进版本 - 请参阅此处的文档:New Eclipse Lint UI

只需点击“lint”工具栏项,在项目中运行它,然后打开“未翻译”项目,该项目将显示每个需要翻译的标记。

归功于satur9nine - 这是他们回答的更新版本,引导我进入这个版本。

答案 5 :(得分:3)

你也可以使用Android lint(从Eclipse轻松访问)。右键单击您的项目 - > Android工具 - >运行Lint。这将为您提供所有缺失翻译的列表,以及其他一些常见错误。

它还会显示默认翻译中不可用的重复资源和字符串。

答案 6 :(得分:2)

在Android Studio上,分析>按名称运行检查,键入以下内容并对自定义范围Project Production Files执行检查。

  • 额外翻译
  • 不完整的翻译

答案 7 :(得分:2)

我创建了一个工具来精确解决此问题。您可以从https://github.com/vijtheveg/tea下载该工具。

该工具可以从Android项目生成一个Excel电子表格,如下图所示,源字符串及其翻译并排显示。 Excel spreadsheet for translation

最重要的是,该工具将仅输出自上次翻译以来新添加或修改的字符串!

您可以将此Excel电子表格发送给您的翻译人员,翻译完成后,您可以从此Excel文件重新生成目标语言的字符串XML文件

最重要的是,您可以执行此过程(添加/删除/修改源语言XML文件中的字符串)->(生成Excel并将其发送以进行翻译)->(重新生成目标语言XML文件)多次。 ,并且每次该工具仅将需要翻译的字符串输出到Excel文件中。该工具还将从目标语言XML文件中删除从源语言中删除的字符串。

更多有关该工具的GitHub页面的详细信息。我希望您觉得它有用。

答案 8 :(得分:1)

没有我知道的,我更喜欢这个问题。 :)但是作为最佳实践,我首先完成默认的strings.xml并在最后翻译它。我还添加了一个小标记注释来指定翻译结束,并在其下添加任何新的字符串。这有助于我跟踪那些未翻译的内容。

- 更新 -

使用最新的eclipse ADT工具,你可以安装Lint,它可以解决所有关于重复的问题以及更多的警告。

答案 9 :(得分:1)

我是MOTODEV Studio的产品经理。正如@hjw所提到的,这是MOTODEV Studio的一个功能,称为"本地化文件编辑器"。此编辑器类似于电子表格,可让您在一个视图中查看所有字符串。您可以在同一视图中编辑为电子表格或基础XML。

MOTODEV Studio是Eclipse的品牌版本,因此如果您使用Eclipse,它应该与您现有的项目一起使用。如果您更愿意继续使用现有的Eclipse设置,您仍然可以使用MOTODEV Studio来处理string.xml文件的编辑,只要一个版本可以一次打开工作区。

如果您对如何使用它有任何疑问,请随时在developer.motorola.com上的讨论区发送消息或发帖。

答案 10 :(得分:1)

如果您愿意使用getlocalization.com网站,如果您愿意让翻译人员公开进行本地化工作,那么这是免费的(否则,您需要付费才能使您的项目成为私有网站) )。

您可以使用他们的Eclipse插件,自动从Android项目导入字符串: http://getlocalization.github.io/eclipse/

然后,这是翻译人员在进行实际翻译时会看到的界面:

screenshot of web interface given to translators

我建议您右键单击上面的屏幕截图,在单独的选项卡上以更大的格式查看。它实际上经过深思熟虑,也应该让译员的工作变得更轻松。

答案 11 :(得分:0)

你知道Android的MotoDev Studio吗?它具有本地化工具。在该工具中,所有语言都是列,所有文本都是行。在“电子表格”中找到缺失的翻译非常容易。另一方面,找到obsolet翻译,并不那么容易。

答案 12 :(得分:0)

我建议Amanuens让您轻松识别未翻译的字符串和字符串以及主文件和已翻译文件中不匹配的字符串。可以选择将其配置为自动使转换文件与存储库保持同步。您还可以让翻译人员访问该服务,他们可以找到一个易于使用的网页编辑器来翻译您的应用程序。

答案 13 :(得分:0)

我构建了一个名为ams的命令行工具(用于android-missing-strings),它打印每个缺失条目的报告以及不再出现在基本strings.xml文件中的剩余条目。

它可以在这里找到 https://github.com/gubatron/android-missing-strings

ams - Android Missing Strings reporting tool.

Usage:
ams [-l xx[,yy,zz...]] -o <output_file>

Options:
-h --help            Print this help


-l --lang <xx>       Specify a language or many with comma separated 2-char language codes.

                     e.g:  -l cn         (creates report for Chinese strings.xml)
                           -l cn,it,fr   (creates report for Chinese, Italian and French strings.xml files)

                     If this parameter is ommited, a report with every language file found will be created.


-o --oFile           Specify the output file name for the report

Copyright (c) 2014 - The Mit License (MIT)

Authors:
Angel Leon <gubatron@gmail.com>
Katay Santos <kataysantos@gmail.com>

答案 14 :(得分:0)

获取所有缺少的翻译的步骤是:

  1. 在应用程序级别build.gradle中启用缺少翻译的棉绒错误

    lintOptions {
       abortOnError false
       enable 'MissingTranslation'
    }
    
  2. 添加语言以在level.gradle的默认配置(此处为英文和印地文)中进行比较

    resConfigs "en", "hi"
    
  3. 右键单击默认的strings.xml。然后分析->检查代码

enter image description here

  1. 现在检查检查结果。 Android-> Lint->正确性->消息>翻译不完整

enter image description here

  1. 所有选定的字符串均缺少翻译

答案 15 :(得分:0)

如果您还想让其他人参与并拥有一个网站,则可以使用开源的TranslateApp工具。

它会跟踪翻译的内容和不翻译的内容,您还可以更新默认语言,并说是否应该使翻译无效。

https://bitbucket.org/erik_melkersson/translateapp 注意:我是该工具的作者。欢迎提出更新请求。我自己也积极使用该工具。