哪个更好:
- gettext
- 基于自定义MySQL+缓存的功能
Gettext 是一种内置功能,因此我认为它已针对性能进行了调整。使用 poedit 是一种痛苦,而且不可能向任何客户展示。
自定义功能允许简单的翻译界面。但可能对 php/db 使用量很大。
我想,你什么时候会使用哪一个?
本地化很困难。这真的很难。这不仅仅是"pairs of words" => "Wortpaare"
,它比这复杂得多。大多数人在查看 gettext 和 go 时忘记了什么“呃,丑”是本地化process比实现的技术细节重要得多。这是因为实际的翻译人员通常不是程序员,甚至可能不是内部人员。这会导致比您想象的更多的头痛。 gettext 确实很旧,经过了实际测试,并且背后有一个巨大的工具链,经过调整以支持此过程。如果你想做好国际化和本地化,你需要一个强大的系统。 gettext 就是这样,并且得到了广泛工具的支持。您的自制翻译系统™ 不会。
首先,你需要一个强大的系统extract可翻译的字符串。如果无法自动且可重复地从源代码中提取可翻译的字符串,那么您要为每个要翻译的新字符串进行大量的工作。在 gettext 中,xgettext
这样做。
接下来,您需要一个工具来将提取的字符串与现有的翻译同步,从而不会丢失任何翻译,并且如果可能的话,仅保留稍有更改的翻译。在 gettext 中,msgmerge
这样做。
接下来,您需要一种向字符串添加额外信息的方法。您希望能够按类别、“领域”和上下文对它们进行分组,您可能希望向源代码中添加翻译者的注释,并且您可能希望翻译者能够向翻译添加注释。 gettext 支持这一切。
接下来,您需要一种能够得到各种工具良好支持的文件格式,因为您可能会将文件发送到中国并在那里进行翻译。您可能将它们发送给外部翻译人员的原因也是您需要一个良好的同步工具来合并更改的原因,因为这可能是一个非常异步的过程。 PO 文件得到了很好的支持,因为 gettext 太老了。有许多开源和商业工具可以根据您的具体需求在多个级别上支持本地化过程。
不要低估本地化的任务,选择一个非常适合该流程的工具并学习它。 gettext 是一个很棒的工具,尽管诚然不是对初学者最友好的。
对于它的价值,这里是我的 Twig gettext 扩展,这使得 PHP 的 gettext 变得更好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)