【发布时间】:2013-03-11 14:45:37
【问题描述】:
哪个更好:
- 获取文本
- 基于自定义 MySQL+缓存的功能
Gettext 是一种内置功能,因此我认为它已针对性能进行了调整。使用 poedit 很痛苦,不可能向任何客户展示。
自定义功能允许简单的翻译界面。但可能对 php/db 的使用量很大。
我想,你什么时候会用哪一个?
【问题讨论】:
标签: php mysql translation gettext
哪个更好:
Gettext 是一种内置功能,因此我认为它已针对性能进行了调整。使用 poedit 很痛苦,不可能向任何客户展示。
自定义功能允许简单的翻译界面。但可能对 php/db 的使用量很大。
我想,你什么时候会用哪一个?
【问题讨论】:
标签: php mysql translation gettext
本地化很困难。这真的很难。不仅仅是"pairs of words" => "Wortpaare",它比这复杂得多。大多数人在看到 gettext 并说“呃,丑陋”时忘记的是,本地化过程比实现的技术细节重要得多。这是因为实际的翻译人员通常不是程序员,甚至可能不是内部人员。这导致的头痛比你想象的要多得多。 gettext 真的很老了,经过实战考验,背后有一个巨大的工具链,经过调整以支持这个过程。如果你想正确地做 i18n 和 l10n,你需要一个强大的系统。 gettext 就是这样,并且得到了广泛工具的支持。您的 Homebrewed Translation System™ 不会。
首先,您需要一个强大的系统来提取可翻译的字符串。由于无法从源代码中自动且可重复地提取可翻译字符串,您需要为每个要翻译的新字符串做大量工作。在 gettext 中,xgettext 会这样做。
接下来,您需要一个工具来将提取的字符串与现有的翻译同步,这样就不会丢失任何翻译,并且如果可能的话,只保留稍微更改的翻译。在 gettext 中,msgmerge 会这样做。
接下来,您需要一种向字符串添加额外信息的方法。您希望能够按类别、“域”和上下文对它们进行分组,您可能希望将翻译人员的 cmets 添加到源代码中,并且您可能希望翻译人员能够将 cmets 添加到翻译中。 gettext 支持所有这些。
接下来,您需要一种能够得到多种工具良好支持的文件格式,因为您可能会将文件发送到中国以便在那里进行翻译。您可能将它们发送给外部翻译的原因也是您需要一个好的同步工具来合并更改的原因,因为这可能是一个非常异步的过程。 PO 文件得到很好的支持,因为 gettext 太老了。根据您的具体需求,有许多开源和商业工具在多个层面支持本地化流程。
不要低估本地化的任务,选择一个非常适合该过程的工具并学习它。 gettext 是一个很棒的工具,虽然它不是最适合初学者的。
对于它的价值,这里是my gettext extension for Twig,它使 PHP 的 gettext 变得更好。
【讨论】:
也许您应该研究一下Memcached,您可以将它与 MySQL 结合使用。 它对于获取不经常更改的数据(例如翻译)非常有用。
【讨论】:
Gettext 是一种非常古老的格式。它使用文件来存储翻译。它很笨拙,尤其是当您有成千上万的翻译时,可以说是 20,000。管理包含 20,000 个翻译字符串的 PO 文件是一场噩梦,跨 50 种语言是不可能的。然后你必须在 MO 文件中实际编译它。不,谢谢。这在 1990 年可能是有意义的,而不是现在。
相反,数据库功能强大。就像真的很强大。说出你需要的东西,你就能得到它。他们马上就能准确地告诉你:
【讨论】: