0

我正在做多语言项目。文章、产品描述等内容将从数据库中显示。这没有问题。问题是有一些“静态”描述,例如表单标签、错误消息等。

到目前为止,我以这个结束。我将语言存储在 COOKIE 中,并且我具有以设置语言编写消息的功能。我有一个名为 _lang.php 的文件,其中包含以下内容:

$['empty_field']['sk'] = "Slovak description of error";
$['empty_field']['en'] = "English description of error";

等等。这是一个好的解决方案吗?还有其他解决方案吗?谢谢

所以我尝试了 gettext() 并以此结束:(欢迎输出)

putenv("LANGUAGE=sk_SK");
setlocale(LC_ALL, 'sk_SK');
$dom = "roids";
bindtextdomain($dom, "www/roids/_locale");
textdomain($dom);
echo gettext('welcome');

我创建了这个文件夹:_locale/sk_SK/roids.po

roids.po 的内容:

msgid ""
msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"

msgid "welcome"
msgstr "vitaj"

我使用 WAMP 服务器,但我不知道这条路径是否:www/roids/_locale 好。Wamp 安装在这里:D:\wamp 和 ww 文件在 D:\wamp\www

4

3 回答 3

3

我认为你应该看看一些资源。一个很好的就在堆栈交换网络上。 PHP本地化最佳实践?获取文本?

另一个很好的资源是谷歌。只是 google php 本地化最佳实践 有很多很好的库可用于 php 和本地化

另一个很好的资源是 php 本身的gettext函数。这就是我要做这样的事情的方式。

更新

这是 O'Reilly 小组关于该主题的非常好的教程。 Gettext - O'Reilly 媒体

于 2013-03-03T07:54:47.790 回答
2

根据您的情况而不是维护数组,例如

$['empty_field']['sk'] = "Slovak description of error";
$['empty_field']['en'] = "English description of error";

您可以使用 ini 文件和 PHPs parse_ini_file更轻松地管理字符串,或将它们出租给其他人:

[sk]
empty_field = "Slovak description of error";
; others in here ...

[en]
empty_field = "English description of error";
; others in here ...

对Wouter J的评论表示赞同,您将 lang 设为第一个数组。

于 2013-03-03T10:09:41.430 回答
1

我会使用require_one加载特定语言的 PHP 文件。

IE

require_once('/some/path/errors_'. $_SERVER['HTTP_ACCEPT_LANGUAGE'] . '.php');

并且该文件定义了该语言的相关错误消息/等数组。

于 2013-03-03T08:03:12.460 回答