PHP 本地化问题

发布于 2024-08-19 17:34:06 字数 239 浏览 4 评论 0原文

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

你会如何处理这个问题?有没有一种安全的方法来帮助 gettext 在多个系统上工作?也许已经是了?

来自瑞典的问候/托比亚斯

I'm building a Open Source product and I thinking about Localization, I've read about gettext but there seems to be a lot of problem to get it to work in different systems (servers,os etc).

How would you handle this? Is there a secure way to help gettext work on several systems? Perhaps it already is?

Regards from Sweden / Tobias

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

回忆凄美了谁 2024-08-26 17:34:06

我建议您查看 Zend_translate< /a>, Zend_localeZend_Date。我自己才刚刚开始涉足它们,但对我来说,它们看起来已经是一个非常好的、干净的、现代的国际化解决方案,与 gettext 的混乱形成鲜明对比。

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

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

API 不一致:不同来源没有单一的 API
格式。 gettext 的用法
例子很复杂。

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

未检测到默认语言:默认语言
如果没有更深入的了解,就无法检测到用户
的背景知识
不同的网络浏览器。

Gettext 不是线程安全的:PHP 的 gettext 库不是线程安全的
安全,并且不应该在
多线程环境。这是由于
gettext 本身的问题,而不是
PHP,但这是一个现有的问题。

I recommend you take a look at Zend_translate, Zend_locale and Zend_Date. I'm only starting to dabble with them myself, but to me, they already look like a really good, clean and modern solution to internationalization, in contrast to the chaos that is gettext.

The introduction to Zend_translate lists a number of strong arguments why to choose it (or something similar) over gettext.

In multilingual applications, the
content must be translated into
several languages and display content
depending on the user's language. PHP
offers already several ways to handle
such problems, however the PHP
solution has some problems:

Inconsistent API: There is no single API for the different source
formats. The usage of gettext for
example is very complicated.

PHP supports only gettext and native array: PHP itself offers only
support for array or gettext. All
other source formats have to be coded
manually, because there is no native
support.

No detection of the default language: The default language of the
user cannot be detected without deeper
knowledge of the backgrounds for the
different web browsers.

Gettext is not thread-safe: PHP's gettext library is not thread
safe, and it should not be used in a
multithreaded environment. This is due
to problems with gettext itself, not
PHP, but it is an existing problem.

宣告ˉ结束 2024-08-26 17:34:06

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

Zend Framework's Zend_Translate is most flexible what I've seen. It doesn't necessarily need gettext support module in PHP's side as it reads the .mo-binary format itself.

撩发小公举 2024-08-26 17:34:06

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

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

The language blocks should be kept external to the program. They may be in a database or in XML files. This will enable further languages to be added at a later point in time.

Then all your application needs to do is identify the localisation by the user and serve up the appropriate text for each situation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文