哪个更好:
Gettext是一种内置功能,因此我假设它已针对性能进行了调整。使用poedit是一种痛苦,不可能向任何客户展示。
自定义功能允许简单的翻译界面。但是在php / db使用方面可能很重要。
我想,你会在哪个时使用?
答案 0 :(得分:15)
本地化很困难。这真的很难。它不只是"pairs of words" => "Wortpaare"
,而是比它复杂得多。大多数人在看到gettext并忘记“呃,丑陋”时会忘记的是,本地化流程比实施的技术细节重要得多。那是因为实际的翻译人员通常不是程序员,甚至可能不在内部。这比你想象的更令人头疼。 gettext非常古老,经过战斗测试,并且背后有一个巨大的工具链,可以支持这个过程。如果你想正确地做i18n和l10n,你需要一个强大的系统。 gettext就是这样,并且得到了各种工具的支持。您的Homebrewed Translation System™不会。
首先,您需要一个强大的系统来提取可翻译的字符串。如果无法从源代码中自动且可重复地提取可翻译字符串,那么您需要为要翻译的每个新字符串进行大量工作。在gettext中,xgettext
就是这样做的。
接下来,您需要一种工具来将提取的字符串与已存在的翻译同步,以便不会丢失任何翻译,并且只有在可能的情况下才会保留稍微更改的翻译。在gettext中,msgmerge
就是这样做的。
接下来,您需要一种向字符串添加额外信息的方法。您希望能够按类别,“域”和上下文对它们进行分组,您可能希望将翻译器的注释添加到源代码中,并且您可能希望翻译人员能够为翻译添加注释。 gettext支持所有这些。
接下来,您需要一种得到各种工具支持的文件格式,因为您可能会将文件发送到中国以便在那里进行翻译。您可能将它们发送给外部翻译器的原因也是您需要一个良好的同步工具来合并更改的原因,因为这可能是一个非常异步的过程。 PO文件得到了很好的支持,因为gettext太老了。根据您的具体需求,有许多开源和商业工具可以在多个级别支持本地化过程。
不要低估本地化的任务,选择一个非常适合该过程的工具并学习它。 gettext是一个很棒的工具,如果不是最初的友好的话。
对于它的价值,这里是my gettext extension for Twig,这使得PHP的gettext更好。
答案 1 :(得分:2)
也许您应该研究Memcached哪些可以与MySQL结合使用。 它对于获取不经常更改的数据(如翻译)非常有用。