多语言PHP - 检测访问者语言和指向内容的最佳方式

时间:2012-04-21 18:12:42

标签: php multilingual

How can I make multi-language website? 在这个网址中有一些信息,但多语言并不是很清楚。

我们想在php中构建一个多语言网站。我们有文章,菜单,书和更多表

所有表都将具有多语言无限语言,我们将在数据库中分配语言。然后新语言将以插入形式显示,如

Insert Article

tab-English / tab-France / tab-Bengali /....etc

我在想这个。

语言

id_language
language_name

文章 - 表格

id_article
date

article_language

id_article_language
id_article
id_language
article_title
article_description

因此,当我为表启用新语言时,右侧会出现一个选项卡 并且查询字符串将显示为ln = English,因此它将在文章中插入英语语言数据。

是否有人更好地了解如何管理这个多语种网站。

1 个答案:

答案 0 :(得分:4)

好像你的数据库结束了很好。它对我来说很好看。

在客户端,您不需要将语言附加到查询字符串。这为您创建了更多工作,因为您需要动态地将查询字符串附加到每个链接,因为每个站点的查询字符串都不同。

有些网站使用顶级目录,例如http://www.example.com/en/http://www.example.com/de/,但我认为最好的方法是购买国家代码顶级域名(ccTLDs),以便您网站的不同语言将位于不同的域:www.google.comwww.google.com.eswww.google.de。然后,您可以使用HTTP Accept-Language header来确定要重定向的域。您可以使用PHP之类的语言parse a user's Accept-Language header

我鼓励在查询字符串上使用ccTLD或顶级目录,以便您的理智,还可以使搜索引擎更容易。有些蜘蛛无法理解查询字符串中ln=en与返回语言之间的相关性。使用ccTLD将通知蜘蛛,而无需您的任何干预,即以特定语言环境的特定语言提供内容。

这提醒我,你也应该在你的回复中提供适当的HTTP Content-Language header。在php中,这看起来像:

header('Content-Language: en-US'); //or en-GB, or es-ES

您可以使用符合country codes的任何RFC1766

编辑:正如@RepWhoringPeeHaa指出的那样,你也可以specify the language in the <head> tag of all of your HTML files使用:

<META HTTP-EQUIV="Content-Language" Content="en" />