哪个更好:
- gettext
- 自定义基于MySQL +缓存的功能
Gettext是一种内置功能,因此我认为它已经针对性能进行了调整。使用poedit很麻烦,而且无法向任何客户展示。
自定义功能允许简单的翻译界面。但可能会在php/db使用方面较重。
我想知道,在什么情况下你会使用哪一个?
哪个更好:
Gettext是一种内置功能,因此我认为它已经针对性能进行了调整。使用poedit很麻烦,而且无法向任何客户展示。
自定义功能允许简单的翻译界面。但可能会在php/db使用方面较重。
我想知道,在什么情况下你会使用哪一个?
本地化是困难的。真的很困难。它不仅仅是将“单词对”翻译为“Wortpaare”,它比这更复杂。当人们看到gettext并感到“丑陋”时,他们大多数人都忘了本地化“过程”比实现的技术细节更重要。因为实际的翻译者通常不是程序员,可能甚至不在公司内部。这会引起比你想象的头痛更多。gettext非常古老,经过战斗考验,并拥有庞大的工具链来支持这个过程。如果您想正确进行i18n和l10n,您需要一个强大的系统。gettext就是这样,并得到了广泛工具的支持。自己酿造的翻译系统TM没有。
首先,您需要一个强大的系统来提取可翻译字符串。如果不能从源代码自动可重复提取可翻译字符串,每个新字符串要翻译都需要大量工作。在gettext中,xgettext就可以做到这一点。
接下来,您需要一个工具以一种不会丢失任何翻译并尽可能保留稍微更改的翻译的方式来同步提取的字符串与已有的翻译。在gettext中,msgmerge就可以做到这一点。
接下来,您需要一种添加额外信息到字符串的方法。您需要能够按类别,“域”和上下文对其进行分组,可能需要在源代码中为翻译者添加注释,还可以让翻译者为翻译添加注释。gettext支持所有这些。
接下来,您需要一种文件格式,它具有多种工具的良好支持,因为您可能会将文件发送到中国以供翻译。您可能会将它们发送给外部翻译者的原因也是您需要一个良好的同步工具来合并更改,因为这可能是非常异步的过程。PO文件得到了很好的支持,因为gettext非常古老。根据您的特定需求,有许多开源和商业工具支持本地化过程的许多层次。
不要低估本地化的任务,选择一个适合这个过程并且熟悉的工具。gettext是一个很棒的工具,但可能不太适合初学者。
值得一提的是,这里有我的Twig gettext扩展,可以使PHP的gettext功能更加完善。
Gettext是一种非常古老的格式,它使用文件来存储翻译。当你有数千个翻译时(比如20,000个),它就显得笨拙了。管理一个包含20,000个翻译字符串的PO文件是一场噩梦,在50种语言中更是不可能的。然后你还必须将其编译成MO文件。不用了,这在1990年也许有意义,但现在不行了。
相反,数据库非常强大。真的非常强大。你需要什么,它都能给你。它可以在一秒钟内准确告诉你以下信息: