在URL或会话或其他中存储语言

Tim*_*ung 9 c# asp.net multilingual internationalization

我正在开发一个多语言网站,并想知道存储用户选择的语言的最佳方式是什么?

可以通过QueryString,还是应该在Session ..或任何其他选项?

Ofr*_*viv 7

在任何其他答案中未提及的另一个考虑因素是Search Engine Friendliness.如果您为每种语言使用不同的网址,例如

http://{en|cy}.example.com/subdir/ or http://example.com/{en|cy}/subdir) 
然后搜索引擎可以用多种语言索引您的网站.


Jur*_*uri 2

我认为这很大程度上取决于您的应用程序如何处理(希望处理)用户语言。如果您的用户必须登录到您的网站,那么您可能有一个帐户设置页面,后面有适当的用户配置文件对象或类似的内容。在这种情况下,我想您会将这些设置保存在数据库上,当用户返回您的站点时,您会以某种方式获取用户信息(即从 cookie 中),然后从数据库加载您的用户配置文件对象。这些信息将保存在会话中,因为我认为这最适合这种情况。如果你的用户不需要登录,所以你基本上无法直接识别他们,我会将语言设置存储在 cookie 中。这为您的用户带来了这样的价值:当他稍后回来时,他总是会找到以其首选语言显示的网站(假设他没有删除 cookie 并且 cookie 的生命周期足够长)。作为第三种可能性,您可以根据用户的默认浏览器设置(就像上面提到的“正则表达式”一样)来识别用户的语言。

正如我所说,这实际上取决于您的应用程序的需求。但你必须记住的是

  • 存储在会话中的对象使用服务器内存保存在服务器端。因此,如果不需要,就不要将无用的东西保留在内存中。然而,会话对象适合存储与用户访问和配置相关的数据。
  • 存储在 cookie 或 Viewstate 对象中的数据在客户端浏览器和 Web 服务器之间来回发送。因此这会导致额外的流量并可能降低性能。

再见