多语言PHP - 检测访问者语言并直接访问内容的最佳方式


multilingual PHP - best way to detect visitor's language and direct to content

如何制作多语言网站?在此URL中有一些信息,但对多语言并不更清楚。

我们想用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,因此它将在文章中插入英语数据。

有没有人有更好的想法如何管理这个多语言网站。

看起来你的数据库端运行得很好。对我来说看起来不错。

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

有些网站使用顶级目录,如 http://www.example.com/en/http://www.example.com/de/ ,但在我看来,最好的方法是购买国家代码 TLD (ccTLD),这样您网站的不同语言将位于不同的域上:www.google.comwww.google.com.eswww.google.de 。然后,您可以使用 HTTP Accept-Language标头来确定要重定向到哪个域。您可以使用像 PHP 这样的语言来解析用户的 Accept-Language 标头。

我鼓励在查询字符串上使用ccTLD或顶级目录,以保持理智,但也使搜索引擎上的事情更容易。一些蜘蛛不会理解查询字符串中的ln=en与返回的语言之间的相关性。使用 ccTLD 将通知爬虫,而无需您进行任何干预,即内容正在以特定语言针对特定区域设置提供。

这提醒了我,您还应该在响应中提供正确的 HTTP Content-Language 标头。在 php 中,这看起来像:

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

您可以使用符合RFC1766的任何这些国家/地区代码。

编辑:正如@RepWhoringPeeHaa指出的那样,您还可以在所有HTML文件的<head>标签中指定语言:

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