i18n - 国际化的最佳实践 - XLIFF,gettext,INI,......?

mar*_*kus 30 translation internationalization

编辑:我真的希望看到关于格式,它们的优点和缺点的一般性讨论!

编辑2:'赏金并没有真正帮助创建所需的讨论,有一些有趣的答案,但仍然缺少对该主题的全面报道.六个人将这个问题标记为收藏,这表明我对此讨论感兴趣.

在决定国际化时,IMO最棘手的部分是存储格式的选择.

例如,Zend PHP Framework提供了以下适配器,它几乎涵盖了我的所有选项:

  • 数组:不,难以维护
  • CSV:不知道,编码可能存在问题
  • Gettext:经常使用,poEdit适用于所有平台但非常复杂
  • INI:不知道,编码可能存在问题
  • TBX:没有头绪
  • TMX:太重要了?没有编辑可以免费获得.
  • QT:不是很普遍,没有免费工具
  • XLIFF:即将推出的标准?但没有可用的免费工具.
  • XMLTM:不,不是我需要的

基本上我坚持4'大胆'的选择.我想使用INI文件,但我正在阅读有关编码问题...如果我使用严格的UTF-8(文件,连接,数据库等),它真的是一个问题吗?

我在Windows上,我试图找出poEdit如何运作,但只是没有管理.网上也没有教程,gettext仍然是一个选择或濒临灭绝的物种?

XLIFF怎么样,还有人使用它吗?关于使用什么工具的任何提示?

Eclipse集成任何这些技术的想法?

小智 15

POEdit并不是很难掌握.只需创建一个新的.po文件,然后告诉它从源文件导入字符串.该程序扫描您的PHP文件以查找匹配的任何函数调用_("Text"), gettext("Text")等.您甚至可以指定自己的函数来查找.

然后在相应的框中输入翻译.保存.po文件时,会自动生成.mo文件.这只是翻译的二进制版本,gettext可以轻松解析.

在PHP脚本中,调用bindtextdomain()告诉它.mo文件所在的位置.现在传递给gettext(或下划线函数)的任何字符串都将被翻译.

它使您的翻译文件保持最新变得非常容易.POEdit还有一些简洁的功能,如允许注释,显示更改和删除字符串以及允许模糊匹配,这意味着您不必重新翻译稍微修改过的字符串.


Jak*_*ski 12

总有Translate Toolkit允许在我认为所有提到的格式之间进行翻译,并且首选gettext(po)和XLIFF.