5

我正在构建一个开源产品,我正在考虑本地化,我已经阅读了gettext但似乎有很多问题要让它在不同的系统(服务器、操作系统等)中工作。

你会怎么处理这个?有没有一种安全的方法可以帮助 gettext 在多个系统上工作?也许已经是了?

来自瑞典/托拜厄斯的问候

4

3 回答 3

6

我建议你看看Zend_translateZend_localeZend_Date。我自己才刚刚开始涉足它们,但对我来说,与 gettext 的混乱相比,它们看起来已经是一个非常好的、干净和现代的国际化解决方案。

Zend_translate 的介绍列出了许多强有力的论据,为什么选择它(或类似的东西)而不是 gettext。

在多语言应用程序中,必须将内容翻译成多种语言并根据用户的语言显示内容。PHP 已经提供了几种处理此类问题的方法,但是 PHP 解决方案存在一些问题:

不一致的 API:不同的源格式没有单一的 API。例如 gettext 的使用是非常复杂的。

PHP 仅支持 gettext 和原生数组:PHP 本身仅支持数组或 gettext。所有其他源格式都必须手动编码,因为没有原生支持。

未检测到默认语言:如果不深入了解不同 Web 浏览器的背景,则无法检测到用户的默认语言。

Gettext 不是线程安全的:PHP 的 gettext 库不是线程安全的,不应该在多线程环境中使用。这是由于 gettext 本身的问题,而不是 PHP,但这是一个存在的问题。

于 2010-01-27T18:09:22.280 回答
3

Zend Framework 的Zend_Translate是我见过的最灵活的。它不一定需要 PHP 端的 gettext 支持模块,因为它本身读取 .mo-binary 格式。

于 2010-01-27T18:10:34.227 回答
0

语言块应保留在程序外部。它们可能位于数据库或 XML 文件中。这将使以后能够添加更多语言。

然后,您的应用程序需要做的就是识别用户的本地化并为每种情况提供适当的文本。

于 2010-01-27T18:05:09.833 回答