在双语Web应用程序中存储所选语言的最佳方法是什么?

时间:2010-12-07 14:47:03

标签: php zend-framework

有几种方法可以想到:

  1. GET。即类似于www.domain.com,www.domain.com / lang / de

  2. 会话。

  3. 数据库。

  4. 我很好奇这个领域的行业标准是什么。

5 个答案:

答案 0 :(得分:3)

Cookie方法在公共机器(网吧等)上变得非常烦人。

为获得最佳搜索引擎优化结果,您应该设置不同语言的网址,但我通常也会将所选语言存储在会话中。当然,它会在浏览器关闭时到期,但是当用户访问该站点时,我总是检查Accept-Language标头,并根据该标题确定起始语言。

如果你有类似自动登录功能的东西,你也可以将选定的语言保存在数据库中。

答案 1 :(得分:2)

您无法在GET上存储信息,而且您需要重写URL以使其显示为www.domain.com/lang/de但它非常适合使您的应用程序搜索引擎友好。

对于你的回答,我将使用你所说的GET + Cookies。

数据库 - 您将需要一个表格,或者如果您已经为您的用户提供了一个表格,则至少还需要一个字段。

会话用户应该设置他们每次都是语言有点无聊!

答案 2 :(得分:2)

GET方法要求用户每次都进入起始页面,即使他有内部链接的直接链接。否则你不能使用get,或者你必须将它包含在每个链接中。会话方法将过期并忘记用户。数据库很好,但用户必须登录,然后用他自己的语言看网站。我认为最好的办法是使用cookie。

答案 3 :(得分:1)

嗯...

  1. 在ZF中使用自定义路径设置 - 您可以省略'lang'部分。 它也非常容易配置,也适合SEO。
  2. 会话是用户返回您网站时设置#1的好方法
  3. 当用户使用自己的用户登录时,数据库存储是设置#2和#1的好方法 偏好设置。
  4. 尝试进行初始设置的一种好方法是使用Zend_Locale通过其OS /浏览器设置检测用户语言。但是,如果你这样做,你应该总是让用户覆盖你检测到的值(并将其保存在会话或数据库设置中)

    这完全取决于你。你很难找到一个“标准”。

答案 4 :(得分:1)

您可以根据会话中存储的值更改引导程序中的默认应用程序区域设置。这样,如果要添加新语言,可以获得更大的灵活性,如果所有代码都是基于用户本地构建的,则只需创建新的翻译文件。这也将简化日期/时间和金钱显示过程,因为这些也基于区域设置。

法国语言环境,即:fr_FR或fr_CA(法国法国加拿大法国) 英语区域设置ID:en_US或en_UK(英语美国或英语United Kindom)

然后如果你必须显示钱,本地将设置好货币符号(但不会进行价格转换)(即fr_FR - >€和fr_CA - > $)

您可以根据用户的地理位置基于其IP地址

来确定默认语言选择