储存的语言在网址或会议或其他
-
22-08-2019 - |
题
我正在开发一个多语种网站,并想知道什么是最好的方式来存储的语言选择的用户?
可以通过查询,或者应该在会议或任何其他选择吗?
解决方案
我认为它在很大程度上取决于如何应用程序处理(欲望到处理)的用户的语言。如果你的用户登录网站,然后你可能有一个帐户设置的网页的某处有一个适当的用户配置文件的目的或类似的东西在后面。在这种情况下,我猜你会拯救这些设置上数据库,而当户来回到你的网站,你得到用户的信息以某种方式(即从一个cookie),载你的用户配置文件的目从数据库。该信息将在一届会议,因为我认为,这将是最适合在这种情况。如果用户没有登录,所以你基本上无法直接识别他们,我会存储的语言设置在一个饼干。这给你的用户的价值,他总是会找到该网站在他的优选的语言,当他回来以后(鉴于他不删除饼干和饼干的生命周期是足够长的时间).作为第三种可能性你能识别用户的语言,根据他的默认浏览器的设置(只是作为"regex"提到上文)。
正如我所说的,这真的取决于应用程序的需要。你有什么要记住的是,虽然
- 对象存储在该届会议都保存在服务器的端,采用服务器的存储器。所以不要让无用的东西有在存储器如果你不需要他们。然而,会议对象是适用于存储相关的数据用户的访问和配置。
- 数据存储在饼干,或视图状态对象是发送之间来回客户浏览器和网络服务器。因此,这造成额外的交通,并可以降低性能。
再见了
其他提示
在任何其他的答案的未提及的另一个考虑,是搜索引擎友好性。如果您使用不同的网址为每种语言像
http://{en|cy}.example.com/subdir/ or http://example.com/{en|cy}/subdir)那么搜索引擎可以索引你的网站在多种语言。
如果你考虑这个情况,用户浏览了一系列网页,在"连接"和语言的信息都存储在cookie届会议和页面缓存(http,浏览器,应用程序)..
当语言是交换由用户"cy",变化将会发生当前页,但是当用户跳回到一个网页,他们以前访问了(这里的头缓存了过期还没有过期)它将载了网页,在"连接"作为查询不状态的语言为其服务内容,在这种语言。
不可能的,用户将要改变语言如此频繁,但作为一个开发商,它的一个scenraio应该处理的。
任何想法,请随时喊。
有是传递,当浏览器让你可以使用一个请求的属性。此属性在你的代码通过参考引用的背后:
Request.UserLanguages // returns an array
另外,也可以提示用户指定一个喜欢的语言,然后将其保存在cookie中。
在您的Page.Load处理程序把类似如下:
string prefLan;
if(Request.Cookies["preferedLanguage"] != null)
prefLan = Server.HtmlEncode(Request.Cookies["preferedLanguage"].Value);
查询字符串不是这个正确的地方,除非它是从查询字符串最初读出并存储在其他地方。
将它存储在cookie中,或者如果关闭cookie,其存储在会话或视图状态。
凯文的回答“配置文件属性”是一个简单的方法,让建立的图书馆做繁重你与你的一部分最小的努力。