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

时间:2012-05-25 08:42:25

标签: php language-agnostic

我打算在我的网站上添加语言功能。我可以看到两种方式:

  • 在网址中存储语言,所以总是www.mysite.com/en/introduce,www.mysite.com/en/home,或者如果缺少第一个参数,只需使用默认值。它很适合书签,但很难实现所有可用的链接
  • 存储在会话中。方式更容易,但用户可能会感到困惑,没有看到URL中的语言。

我会说:会话。你打算说什么?任何经历?

4 个答案:

答案 0 :(得分:7)

如果您希望所有网页都被搜索引擎编入索引,您就会将语言参数放在网址中。

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

答案 1 :(得分:2)

我会使用第一种方法来使用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

答案 2 :(得分:2)

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

如果您只是根据用户来自哪个国家/地区更改公司的联系方式,那么我会将其存储在会话中,因为只有部分内容会发生变化,因为它更容易实现。但作为一般规则,使用.htaccess或您的路由系统给它一个单独的URL。

答案 3 :(得分:1)

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