如何从Android中的strings.xml生成Localizable.strings文件

时间:2014-12-16 07:52:58

标签: android string localization localizable.strings

我希望strings.xml中的字符串转换为ios Localizable.strings格式

格式:

"String"="String"  

我在网上使用了一些将xml转换为localible.strings的在线工具,但我看到的格式是:

 "Key"="Value"

但我需要这种格式:

 "value"="value"

例如:
     如果这是Strings.xml文件,

    <resources>
    <String name="addtocart">Please add to cart</string>
    </resources>

localizable.strings格式应该在:

   "Please add to cart"="Please add to cart" (I need this)

而不是

   "addtocart"="Please add to cart" (Format resulted from conversion tools in web)

eclipse中是否有任何插件或内置功能。我是android和这个本地化过程的新手。

请帮助我实现这一目标......

提前致谢。

1 个答案:

答案 0 :(得分:2)

一个非常简单的awk bash脚本可以完成你的工作。

awk '
BEGIN{
    FS = "^ *<string *| *>|<\/string> *$|^ *<!-- *| *--> *$";
}
{
    if (/<string.*name\=\".*\".*>.*<\/string> *$/){
        print "\""$3 "\" \= \"" $3 "\";"
    }
    else if(/<!--.*-->/)
        print "// "$2;
    else if(/^ *$/)
        print ""
}'

将上述内容保存到android2ios.sh。此脚本将从标准输入流中读取。

例如,您的Android字符串内容(如<string name="addtocart">Please add to cart</string>)会复制到剪贴板,而您使用OS X作为操作系统。

 pbpaste | sh  android2ios.sh

这将打印

"Please add to cart" = "Please add to cart";

您可以用自己的方式进行重定向和管道处理。该脚本仅进行转换。

此脚本也可以很好地处理像<!--comment-->和多行内容这样的评论。

顺便说一句,我更喜欢"addtocart"="Please add to cart"方式,因为"value" = "value"可能会导致重复的密钥。