i18n 与 gettext 但没有语言环境的麻烦?

发布于 2024-08-08 09:42:16 字数 440 浏览 5 评论 0原文

我正在寻找一种符合标准的方法来存储 Web 应用程序的多语言内容。到目前为止,我已经使用了自己的“translate()”函数来从文件或数据库中的字典表中读取数据。但是,如果您使用 Web 应用程序的不同副本,则使数据库表中的字典保持最新非常麻烦。

我喜欢 gettext,因为有很多可用的工具。但是,我为不同的平台开发应用程序。我绝对不愿意处理 setlocale() 和 consorts 的蹩脚方式 - 即您需要提供的数十种不同的语言环境字符串变体,这些变体因系统而异,以使其正常工作。从来没有。我有一组语言 - 比如 de、en 和 es - 我想加载适当的字典并使用 _() 而不接触 setlocale() 或 bindtexdomain() 一次。

使用 gettext 是否可以实现这一点?或者有人知道另一个简单、小、快速(!)的 PHP i18n 解决方案,可以使用 .po/.mo 文件,最好不需要 PHP 扩展?

I am looking for a standards-compliant way to store multi-language content for a Web Application. Until now, I have employed my own "translate()" functions that read data from a file or a dictionary table in a database. However, keeping the dictionaries up to date in a database table is very cumbersome if you work with different copies of the web app.

I like gettext because there is a multitude of tools available for it. However, I develop applications for different platforms. I am absolutely unwilling to deal with the crappy ways of setlocale() and consorts - namely the dozens of different locale string variations differing from system to system that you need to provide for to get it working. Never ever. I have a set of languages - say de, en, and es - and I want to load the appropriate dictionary and work with _() without touching setlocale() or bindtexdomain() once.

Is this somehow possible using gettext? Or does somebody know another simple, small, fast (!) i18n solution for PHP that can work with .po/.mo files, preferably without requiring a PHP extension?

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

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

发布评论

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

评论(2

山有枢 2024-08-15 09:42:16

即使在非标准区域设置中,此方法也应该有效:

$locale = 'someWeirdLocale';

putenv('LC_MESSAGES=' . $locale);
bindtextdomain('domain', './locale');
textdomain('domain');

享受吧!

This method should work even with non-standard locales:

$locale = 'someWeirdLocale';

putenv('LC_MESSAGES=' . $locale);
bindtextdomain('domain', './locale');
textdomain('domain');

Enjoy!

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