【问题标题】:Storing Language in URL or Session or other在 URL 或 Session 或其他中存储语言
【发布时间】:2010-10-06 05:26:45
【问题描述】:

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

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

【问题讨论】:

    标签: c# asp.net internationalization multilingual


    【解决方案1】:

    Profile properties 是专门为允许您存储用户特定的首选项而创建的。这将是存储此类数据的好地方。

    【讨论】:

      【解决方案2】:

      当浏览器发出您可以使用的请求时,会传递一个属性。这个属性在你后面的代码中通过引用来引用:

      Request.UserLanguages // returns an array
      

      或者,您可以提示用户指定首选语言,并将其保存在 cookie 中。

      在您的 Page.Load 处理程序中放置如下内容:

      string prefLan;    
      if(Request.Cookies["preferedLanguage"] != null)
              prefLan = Server.HtmlEncode(Request.Cookies["preferedLanguage"].Value);
      

      【讨论】:

        【解决方案3】:

        查询字符串不适合这样做,除非它最初是从查询字符串中读取并存储在其他地方。

        将其存储在 cookie 中,或者如果 cookie 已关闭,则将其存储在 session 或 viewstate 中。

        Kevin 的回答“配置文件属性”是一种简单的方法,可以让已建立的库以最少的努力为您完成繁重的工作。

        【讨论】:

          【解决方案4】:

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

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

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

          再见

          【讨论】:

            【解决方案5】:

            如果您考虑这种情况,其中用户浏览了“en”中的一系列页面,并且语言信息存储在 cookie 会话中并且页面已被缓存(http、浏览器、应用程序).​​.

            当用户将语言切换到“cy”时,当前页面会发生变化,但是当用户跳回到他们之前访问过的页面时(标题缓存已过期尚未过期),它会在“en”中加载页面,因为查询字符串没有说​​明语言 - 以便它以该语言提供内容。

            用户不太可能如此频繁地更改语言 - 但作为开发人员,这是一个应该处理的场景。

            任何想法,请随时大声疾呼。

            【讨论】:

              【解决方案6】:

              其他答案中未提及的另一个考虑因素是搜索引擎友好性。如果您为每种语言使用不同的网址,例如

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

              【讨论】:

              • 实际上我认为这将是使用这种方法的“THE”原因。它还有一个好处是,当用户为网站添加书签时,他将获得正确的语言,与过期数据无关(cookies/sessions/cache/etc...)
              • 回到这个问题,我从谷歌找到了一个很好的比较:support.google.com/webmasters/bin/…
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2020-05-04
              • 2011-02-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多