PHP、I18n 和 gettext 无法正常工作?

发布于 2024-09-15 06:42:19 字数 988 浏览 8 评论 0原文

我目前正在国际化现有的 PHP 项目,并认为最简单的方法就是集成 I18n + gettext。

目前我有一个 I18n.php:

<?php
setlocale(LC_ALL, 'de_DE.UTF-8');
bindtextdomain('cms', './locale');  
textdomain('cms');
?>

它包含在每个需要翻译的文件中。

示例:login.inc.php:

include_once("i18n.php");
...
<tr>
                    <td width='40%' align='right'>"._('User Name').":</td>
                    <td width='60%'><input name='USERNAME' type='text' class='login_txt'></td>
                  </tr>
                  <tr>
                    <td align='right'>"._('Password').":</td>
                    <td><input name='PASSWORD' class='login_txt' type='password'></td>
                  </tr>
...

它确实有效,但我遇到了一个奇怪的问题。它仅将我加载此页面的 10 次中的 2 次翻译为诸如此类的内容(2x“Benutzername”,8x“用户名”)。有谁知道什么可能导致这个问题?我已经尝试了大约一个小时来解决这个问题,但仍然没有任何线索。

因为我已经在这里写了:有人知道更好的方法来国际化现有的 PHP 项目吗?

谢谢!

I'm currently internationalizing an existing PHP project and thought the easiest way to do this is by just integrating I18n + gettext.

Currently I have a I18n.php:

<?php
setlocale(LC_ALL, 'de_DE.UTF-8');
bindtextdomain('cms', './locale');  
textdomain('cms');
?>

Which is being included in every file that needs some translation.

Example: login.inc.php:

include_once("i18n.php");
...
<tr>
                    <td width='40%' align='right'>"._('User Name').":</td>
                    <td width='60%'><input name='USERNAME' type='text' class='login_txt'></td>
                  </tr>
                  <tr>
                    <td align='right'>"._('Password').":</td>
                    <td><input name='PASSWORD' class='login_txt' type='password'></td>
                  </tr>
...

It kind works but I got one weird problem. It only translates the to things like 2 out of 10 times I load this page (2x "Benutzername", 8x "User Name"). Does anyone know what could cause this problem? I'm trying to figure it out for like an hour already and still no clue.

Since I'm writing here already: Does anyone know a better approach to internationalize an existing PHP projecT?

Thanks!

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

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

发布评论

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

评论(1

海风掠过北极光 2024-09-22 06:42:19

是的,有更好的方法。请参阅 ResourceBundle 类,并在一般来说, intl 扩展。

Yes, there is a better way. See the ResourceBundle class and, in general, the intl extension.

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