【发布时间】:2010-01-27 17:50:56
【问题描述】:
我正在构建一个开源产品,我正在考虑本地化,我读过gettext,但让它在不同的系统(服务器、操作系统等)中工作似乎有很多问题。
你会如何处理这个问题?有没有一种安全的方法可以帮助 gettext 在多个系统上工作?也许已经是了?
来自瑞典/托比亚斯的问候
【问题讨论】:
标签: php localization gettext
我正在构建一个开源产品,我正在考虑本地化,我读过gettext,但让它在不同的系统(服务器、操作系统等)中工作似乎有很多问题。
你会如何处理这个问题?有没有一种安全的方法可以帮助 gettext 在多个系统上工作?也许已经是了?
来自瑞典/托比亚斯的问候
【问题讨论】:
标签: php localization gettext
我建议您查看Zend_translate、Zend_locale 和Zend_Date。我自己才刚刚开始涉足它们,但对我来说,与 gettext 的混乱相比,它们看起来已经是一个非常好的、干净和现代的国际化解决方案。
Zend_translate 的介绍列出了许多强有力的论据,为什么选择它(或类似的东西)而不是 gettext。
在多语言应用程序中, 内容必须翻译成 多种语言和显示内容 取决于用户的语言。 PHP 已经提供了几种处理方式 这样的问题,但是 PHP 解决方案有一些问题:
API 不一致:不同来源没有单一 API 格式。 gettext 的用法 例子很复杂。
PHP 仅支持 gettext 和原生数组:PHP 本身仅提供 支持数组或gettext。全部 必须对其他源格式进行编码 手动,因为没有原生 支持。
未检测到默认语言:默认语言 不深入就无法检测到用户 对背景的了解 不同的网络浏览器。
Gettext 不是线程安全的:PHP 的 gettext 库不是线程 安全,它不应该在一个使用 多线程环境。这个到期了 gettext 本身的问题,而不是 PHP,但这是一个存在的问题。
【讨论】:
Zend Framework 的Zend_Translate 是我见过的最灵活的。它不一定需要 PHP 端的 gettext 支持模块,因为它本身读取 .mo-binary 格式。
【讨论】:
语言块应保留在程序外部。它们可能位于数据库或 XML 文件中。这将使以后能够添加更多语言。
那么您的应用程序需要做的就是识别用户的本地化并为每种情况提供适当的文本。
【讨论】: