PHP多语言

PHP多语言,php,Php,我正在从事多语言项目。文章、产品描述等内容将从数据库中显示。这没问题。问题在于存在一些“静态”描述,例如表单标签、错误消息等 到目前为止,我以这个结束。我将语言存储在COOKIE中,并且我具有将消息写入SETLANUGEAGE的功能。我有一个名为_lang.php的文件,其中包含以下内容: $['empty_field']['sk'] = "Slovak description of error"; $['empty_field']['en'] = "English description of

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

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

$['empty_field']['sk'] = "Slovak description of error";
$['empty_field']['en'] = "English description of error";
等等。这是不是一个好的解决方案?还有其他解决办法吗?谢谢

因此,我尝试了gettext()并以以下内容结束:(欢迎输出)

我创建了这个文件夹:_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/\u locale是否良好。Wamp安装在这里:D:\Wamp和ww文件位于D:\Wamp\www

我认为您应该查看一些参考资料。一个好的就在堆栈交换网络上

另一个好资源是谷歌。谷歌有很多很好的库可以与php和本地化一起使用

另一个很好的资源是php本身的函数。我就是这样做的

更新


这是O'Reilly group关于该主题的非常好的教程

我认为您应该查看一些资源。一个好的就在堆栈交换网络上

另一个好资源是谷歌。谷歌有很多很好的库可以与php和本地化一起使用

另一个很好的资源是php本身的函数。我就是这样做的

更新


这是O'Reilly group关于该主题的非常好的教程

我会使用
require\u one
加载特定语言的PHP文件

i、 e


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

我将使用
require\u one
加载特定语言的PHP文件

i、 e


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

这取决于您的情况,而不是维护数组,例如

$['empty_field']['sk'] = "Slovak description of error";
$['empty_field']['en'] = "English description of error";
您可以使用ini文件和PHPs更轻松地管理字符串,或将其分发给其他人:


向Wouter J的评论点头,表示您将lang作为第一个数组。

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

$['empty_field']['sk'] = "Slovak description of error";
$['empty_field']['en'] = "English description of error";
您可以使用ini文件和PHPs更轻松地管理字符串,或将其分发给其他人:



通过对Wouter J的评论点点头,你可以将lang作为第一个数组。

我会做的只是不同:
$['sk']['empty_field']='…'
使用一个框架。西蒙尼、泽德等。。。提供许多实用程序来处理国际化和本地化。我认为您可能需要执行
bindtextdomain($dom,“D:\wamp\www\roids\\u locale”)奇数。。。这对我来说很好,我甚至尝试了只使用该内容制作文件,重新启动了web服务器,我仍然得到了很好的结果。我会做的只是不同:
$['sk']['empty_field']='…'
使用一个框架。西蒙尼、泽德等。。。提供许多实用程序来处理国际化和本地化。我认为您可能需要执行
bindtextdomain($dom,“D:\wamp\www\roids\\u locale”)奇数。。。这对我来说很好,我甚至尝试了只使用该内容制作文件,重新启动了web服务器,我仍然很高兴使用此选项,因为您需要对
$\u服务器['HTTP\u ACCEPT\u LANGUAGE']
进行一些解析,以获得所需的内容。当我把我的打印出来的时候,它给了我
en-US,en;q=0.8
@布雷特勒:说得好。我相信海报可以完善解决方案。请小心使用此选项,因为您需要对
$\u服务器['HTTP\u ACCEPT\u LANGUAGE']]
进行一些解析,以获得所需的内容。当我把我的打印出来的时候,它给了我
en-US,en;q=0.8
@布雷特勒:说得好。我相信海报可以完善解决方案。我已经查看了gettext函数,但我不确定它是如何工作的-如何制作那些.mo文件等。你能告诉我更多吗?我们更喜欢独立的答案,而不是只包含指向其他内容的链接。另外,如果你只是链接到另一个SO帖子,那么这个问题可能是重复的,可能应该标记为重复。谢谢。我已经看过了gettext函数,但我不知道它是如何工作的-如何制作那些.mo文件等。你能告诉我更多吗?我们更喜欢独立的答案,而不仅仅是包含指向其他内容的链接。另外,如果你只是链接到另一个SO帖子,那么这个问题可能是重复的,可能应该标记为重复。谢谢,谢谢。我想我会使用这个解决方案:)谢谢。我想我会使用这个解决方案:)
$['empty_field']['sk'] = "Slovak description of error";
$['empty_field']['en'] = "English description of error";
[sk]
empty_field = "Slovak description of error";
; others in here ...

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