从XIB文件中提取文本,以便以人类可读的方式进行翻译

时间:2013-10-17 12:56:34

标签: iphone localization translation xib libtool

ibtool是从XIB文件中提取字符串的工具。示例命令:

find . -name \*.xib | xargs -t -I '{}' ibtool --generate-strings-file '{}'.strings.txt '{}'

但ibtool生成的输出对于“正常”(读取:非开发人员)人类是不可读的。

示例:

/* Class = "IBUILabel"; text = "Regards:"; ObjectID = "201"; */
"201.text" = "Regards:";

它有一些问题(从翻译的角度来看);

  1. 此格式与Localizable.strings预期的格式不同。
  2. 令人困惑的是要翻译哪些文本:a)这是注释行,b)未注释的行,c)或两者都可能
  3. 它有很多混乱。
  4. 我需要以Localizable.strings格式提取的XIB字符串(使用genstrings从NSLocalizableString宏中提取的字符串:

     "key"="to translate";
    

    有没有办法以这种方式制作ibtool输出文本?

1 个答案:

答案 0 :(得分:0)

我在bash中编写了自己的脚本,它执行以下操作:

  1. 从目录
  2. 中的所有xib文件中提取所有字符串
  3. 将其转换为.strings格式(由NSLocalizableString宏预期)。 "text to translate"="text to translate";它可以由您的翻译直接使用。只有右侧,=之后的引号中的文字需要进行编辑。
  4. 删除重复项(我同意 - 有时这不是最好的主意,因为翻译可能因上下文而异)
  5. 删除评论(只留下果汁)
  6. 按字母顺序排序(可选)
  7. 将结果保存到1输出文件(全部合并并准备好翻译)
  8. 脚本不完美,但效果很好。

    这里有一点太长了(90行),所以这里是直接的GitHub链接:

    https://github.com/lukaszmargielewski/extract-strings-from-xib-files/blob/master/extract-strings-from-xib-files.sh