PHP、I18n 和 gettext 无法正常工作?
我目前正在国际化现有的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
是的,有更好的方法。请参阅
ResourceBundle
类,并在一般来说, intl 扩展。Yes, there is a better way. See the
ResourceBundle
class and, in general, the intl extension.