比较Android String xml文件

时间:2015-05-07 09:34:31

标签: android xml

我有两个不同语言的字符串xml,我想知道这些xml文件之间的差异。

例如,英语有一个xml,

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Keep Accounts</string>
    <string name="insertNewOne">Insert Accounts</string>
    <string name="browseRecord">Browse Records</string>
    <string name="set">Setting</string>
</resources>

另一种语言的xml,

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">Example</string>
    <string name="insertNewOne">Example</string>
    <string name="browseRecord">Example</string>
    <string name="dateNoColon">Example</string>
</resources>

我们可以看到差异是英语的xml有元素字符串name="set",而另一个没有。另一方面,其他语言的xml文件具有元素字符串name="dateNoColon",但英语的xml没有。

在这种情况下,我想知道英文xml缺少元素字符串name="dateNoColon",而其他xml缺少元素字符串name =&#34; set&#34;。

5 个答案:

答案 0 :(得分:2)

  1. Android Studio的翻译编辑器从0.8.12开始。你可以找到缺少的翻译字符串。
  2. enter image description here

    1. 您可以在Lint工具中启用缺少翻译的检查。有&#34;缺少翻译&#34;和&#34;额外翻译&#34;检查。
    2. enter image description here

        

      额外翻译如果字符串出现在特定语言翻译文件中,但默认语言环境中没有相应的字符串,则此字符串可能未使用。 (从技术上讲,您的应用程序只能在特定的区域设置中运行,但提供回退仍然是一个好主意。)。

           

      不完整的翻译如果某个应用程序有多个语言环境,那么用一种语言声明的所有字符串也应该用所有其他语言翻译。

答案 1 :(得分:1)

假设设备设置为其他语言,Android将在value文件夹的otherlanguage.xml文件中查找标题。但如果该文件中不包含此类字符串,Android将回退到默认值,并将从english.xml文件中加载英文标题。

有关详情,请转至http://developer.android.com/guide/topics/resources/localization.html#using-framework

答案 2 :(得分:1)

我写了一个小工具:resdiff。 看看这个! https://github.com/danijoo/resdiff

答案 3 :(得分:0)

尝试使用一些perl或bash脚本或类似的东西对这两个文件进行排序,例如,使用bash:

VARIABLE addsal NUMBER
exec add_sal(1,:addsal);

然后使用sort temp.txt -o temp.txt 来查看差异。

答案 4 :(得分:0)

使用Android Lint查找不完整的翻译,即语言变体中缺少的字符串和额外的翻译,即在语言变体中引入但在默认语言环境中缺失的字符串。

在Android Studio中,您可以使用Analyze运行Lint(和其他一些分析工具) - &gt;检查代码。