Php 如何处理当前的语言?始终在URL或会话中?

Php 如何处理当前的语言?始终在URL或会话中?,php,language-agnostic,Php,Language Agnostic,我计划添加语言功能到我的网站。我可以看到两种方式: 在url中存储语言,因此始终使用www.mysite.com/en/incroduct、www.mysite.com/en/home,或者如果缺少第一个参数,则使用默认值。这对书签很好,但很难实现所有可用的链接 存储在会话中。这要简单得多,但是用户可能会因为看不到URL中的语言而感到困惑 我想说:会议。你会怎么说?有什么经验吗?如果您想让搜索引擎为您的所有页面编制索引,您需要在URL中输入language参数 如果您正在制作更多类似Face

我计划添加语言功能到我的网站。我可以看到两种方式:

  • 在url中存储语言,因此始终使用www.mysite.com/en/incroduct、www.mysite.com/en/home,或者如果缺少第一个参数,则使用默认值。这对书签很好,但很难实现所有可用的链接
  • 存储在会话中。这要简单得多,但是用户可能会因为看不到URL中的语言而感到困惑

我想说:会议。你会怎么说?有什么经验吗?

如果您想让搜索引擎为您的所有页面编制索引,您需要在URL中输入language参数


如果您正在制作更多类似Facebook的内容,用户需要登录才能接收其个性化语言的内容,请使用会话。

如果您希望搜索引擎为您的所有页面编制索引,则必须在URL中输入语言参数


如果你正在制作更多类似Facebook的东西,用户需要登录才能接收个性化语言的内容,请使用会话。

我会使用第一种方法与url重写引擎进行编辑

F.e.使用RewriteEngine for Apache时,您可以将这一行添加到.htaccess中:

RewriteRule ^([a-zA-Z][a-zA-Z])/([a-zA-Z]*)$ content.php?culture=$1&content=$2
即使这样也可以:

RewriteRule ^([a-zA-Z][a-zA-Z])/([a-zA-Z]*)$ $2.php?culture=$1

我将使用第一个方法与url重写引擎结合使用

F.e.使用RewriteEngine for Apache时,您可以将这一行添加到.htaccess中:

RewriteRule ^([a-zA-Z][a-zA-Z])/([a-zA-Z]*)$ content.php?culture=$1&content=$2
即使这样也可以:

RewriteRule ^([a-zA-Z][a-zA-Z])/([a-zA-Z]*)$ $2.php?culture=$1

你想把你的语言作为url的一部分,否则谷歌将无法为不同的国家编制索引。此外,他们可能认为您在同一页面上有两种类型的内容


如果只有部分内容发生更改,我会将其存储在会话中,因为如果您只是更改,则更容易实施,即根据用户来自哪个国家的公司联系方式进行更改。但一般来说,使用.htaccess或您的路由系统为其提供一个单独的url。

您希望将您的语言作为url的一部分,否则google将无法为不同的国家编制索引。此外,他们可能认为您在同一页面上有两种类型的内容


如果只有部分内容发生更改,我会将其存储在会话中,因为如果您只是更改,则更容易实施,即根据用户来自哪个国家的公司联系方式进行更改。但一般来说,使用.htaccess或您的路由系统为其提供一个单独的url。

普通用户不会查看url并从中更改参数。普通用户是点击式的。将语言选择保持在页面和用户设置中可见的位置。这并不是用户在访问期间想要多次更改的内容。我们讨论的是一个设置,您可以在第一次访问时询问并设置。目前,我讨厌谷歌使用我的IP的方式,假设(错误的)如果我是从挪威输入,我肯定会说挪威语,我可以在挪威菜单中找到英语版本。我很喜欢Etsy.com的做法,他们在第一次访问时会问你喜欢什么语言、货币等。如果你接受它们,那就很好了,但是你可以在那里更改它们,而无需导航到菜单。在我看来,使用cookie或会话而不是污染URL。

普通用户不会查看URL并从中更改参数。普通用户是点击式的。将语言选择保持在页面和用户设置中可见的位置。这并不是用户在访问期间想要多次更改的内容。我们讨论的是一个设置,您可以在第一次访问时询问并设置。目前,我讨厌谷歌使用我的IP的方式,假设(错误的)如果我是从挪威输入,我肯定会说挪威语,我可以在挪威菜单中找到英语版本。我很喜欢Etsy.com的做法,他们在第一次访问时会问你喜欢什么语言、货币等。如果你接受它们,那就很好了,但是你可以在那里更改它们,而无需导航到菜单。在我看来,使用cookie或会话而不是污染URL。

idd,访问者将浏览www.mysite.com/en/home,这将转换为www.mysite.com/content.php?culture=en&content=home(第一个选项)或www.mysite.com/home.php?culture=en(第二个选项)。还要注意,这些转换对访问者是不可见的。查找重写引擎或url重写添加,访问者将浏览到www.mysite.com/en/home,这将转换为www.mysite.com/content.php?culture=en&content=home(第一个选项)或www.mysite.com/home.php?culture=en(第二个选项)。还要注意,这些转换对访问者是不可见的。查找重写引擎或url重写我不熟悉这种语言实现,但有一个问题。我们不能同时使用这两个吗?@当然可以。页面的每个本地化版本都可以有一个唯一的URL,其中包含URL中的语言,如果需要,可以使用会话/cookie值将用户重定向到“他的”语言。关键是,如果页面是公共的,并且应该由搜索引擎索引,那么您需要为每个页面提供一个唯一的URL。我不熟悉这种语言实现,但有一个问题。我们不能同时使用这两个吗?@当然可以。页面的每个本地化版本都可以有一个唯一的URL,其中包含URL中的语言,如果需要,可以使用会话/cookie值将用户重定向到“他的”语言。关键是,如果页面是公共的,并且应该由搜索引擎索引,那么您需要为每个页面指定一个唯一的URL。