有没有适合iOS伪本地化的好工具?

时间:2012-12-18 19:06:31

标签: ios localization

我想开始看看我们在iOS代码中对本地化字符串的全面了解。我们尚未准备好去翻译,但我想开始使用pseudo localization进行测试。在Localizable.strings文件中自动执行此过程应该很容易,但我似乎找不到任何可以执行此操作的工具。坦率地说,我对一个只是将我的所有字符串都改为“NOT ENGLISH!”的脚本感到满意。如果存在这样的事情。

5 个答案:

答案 0 :(得分:18)

您可以使用Translate Toolkit实现此目的。

首先,您需要使用prop2po转换器将 .strings 文件转换为 PO

$ prop2po Localizable.strings en.po

这将创建一个 PO 文件,其中 Localizable.strings 文件的字符串作为源字符串(在这种情况下,我使用英语作为源)。< / p>

获得 PO 文件后,使用podebug中的desired rewrite format重写该文件。

$ podebug --rewrite=unicode en.po en_rewritten.po

最后将其转换回 .strings 格式(请注意,您需要将原始 Localizable.strings 文件作为模板传递):

$ po2prop en_rewritten.po rewritten.strings -t Localizable.strings

生成的文件如下所示:

"Account: %@" = "Ȧƈƈǿŭƞŧ: %@";

"Add command" = "Ȧḓḓ ƈǿḿḿȧƞḓ";

"Add connection." = "Ȧḓḓ ƈǿƞƞḗƈŧīǿƞ."

答案 1 :(得分:3)

尽管Translate Toolkit可以提供解决方案,但我一直在寻找使用bash脚本的简单方法。 创建[changesDictionary.txt]文件(参见本文末尾的格式)并使用语言文件作为参数运行以下脚本:

#  This script translate iOS strings file into pseudo languge for texting usage.
#  the script create a sed change and replace file based on [changesDictionary.txt].
#  the loop run across the input string file (ie. myFyle.strings)
#    and replace the secong strings with the dictionary values.
#  since the strings file is in BOM format (http://en.wikipedia.org/wiki/Byte_order_mark)
#   the input is converted from UTF16 to UTF8.
sed -e 's/^"\(.*\)" = "\(.*\)"$/s\/\1\/\2\/g/' changesDictionary.txt  > changesDictionary.sed

FILENAME=$1

while read -r; do
if [[ $REPLY = '/*'* ]] ; then
    echo "$REPLY"
else
    if [[ $REPLY = '' ]] ; then
        echo "$REPLY"
    else
        if [[ $REPLY = '"'* ]] ; then
            changes2=$(echo "$REPLY" | cut -d= -f2 | sed -f changesDictionary.sed)
            changes1=$(echo "$REPLY" | cut -d= -f1 )
            echo "$changes1=$changes2"
                        echo "$REPLY"
        fi
    fi
fi
done < <(iconv -f UTF-16 -t UTF-8 $FILENAME) | iconv -f UTF-8 -t UTF-16 >$FILENAME.new

脚本按以下格式查找[changeDictionary.txt]文件:

"a" = "á"
"b" = "β"
"c" = "ç"
"d" = "δ"
"e" = "è"
"f" = "ƒ"
"g" = "ϱ"
"h" = "λ"
"i" = "ï"
"j" = "J"
"k" = "ƙ"
"l" = "ℓ"
"m" = "₥"
"n" = "ñ"
"o" = "ô"
"p" = "ƥ"
"q" = "9"
"r" = "ř"
"s" = "ƨ"
"t" = "ƭ"
"u" = "ú"
"v" = "Ʋ"
"w" = "ω"
"x" = "ж"
"y" = "¥"
"z" = "ƺ"
"\ñ" = "\n"
"$δ" = "$d"
"$ï" = "$i"

您可以使用此示例或创建自己的示例,请注意文件中的最后3个更改字符串。这是为了将行和参数的结尾恢复到常规状态。我选择这种方法来简化脚本(我认为性能没有得到优化)。

答案 2 :(得分:3)

我遇到了两个尚未在此处提及的解决方案:

答案 3 :(得分:1)

我们在Tethras(www.tethras.com)提供伪本地化作为我们服务的一部分。伪本地化是免费的。我们重写字符串中的所有字符,并将文本的长度延长30%。这不仅可以帮助您测试硬编码字符串,还可以让您了解由于翻译过程中文本扩展而导致的布局会发生什么。

示例:

纯文本

  

WèprôvïdèpsèúdôlôçálïzátïôñáspártôƒôúrsèrvïçèátTèthrás   (www.tèthrás.çôm)。 ôñètwôtreèèƒôúrƒïvèsïxPsèúôlôçálïzátïôñïs   ƒrèè。 ôñètwôthivèèWèáççèñtállôtthèçháráçtèrsïñ¥úúrratrïñgs   áñdèxtèñdthèlèñgthôtthètèxtb¥30%。 ôñètwôthivèèƒôúrƒïvèsïx   ïw w w h ,,,,,,,   lèt¥úúsèèwhátháppèñstô¥úúrlá¥ôútsdúètôtèxtèxpáñsïôñdúrïñg   翻译。 ôñètwôthivèèƒúúrƒïvèsïxsèvèñèïghtñïñètèñ

Localizable.strings

"Bring All to Front" = "Brïñg Áll tô ƒrôñt ôñè twô";
"Hide" = "Hïdè 12";
"Quit" = "Qúït 12";
"Hide Others" = "Hïdè Óthèrs ôñè ";

希望在翻译之前测试应用的本地化能力。这将在实际翻译过程中为您节省大量时间和精力。

答案 4 :(得分:-1)

您可以使用Apple提供的genstrings工具。这一切都在Resource Programming Guide

的字符串部分进行了解释