【问题标题】:How to change I18N locale NOT by querystring?如何不通过查询字符串更改 I18N 语言环境?
【发布时间】:2012-11-20 07:12:01
【问题描述】:

这是一个struts2 的问题。

目前,我在我的 web 应用程序中使用 i18n 进行国际化。 我的一些 jsp 页面有查询字符串来存储请求信息。 例如,

http://myWebsite.com/myWebsite/myPage?productId=12345

当用户尝试切换语言时,我将javascript的URL改写为

http://myWebsite.com/myWebsite/myPage?request_locale=zh_CN

它会丢失查询字符串。

而且我的网址以不同的方式使用:

http://myWebsite.com/myWebsite/myPage
http://myWebsite.com/myWebsite/myPage?productId=12345#myAnchor
http://myWebsite.com/myWebsite/myPage?productId=12345&key2=value2&key3=value3#myAnchor
http://myWebsite.com/myWebsite/myPage?productId=12345&key2=value2&key3=value3&request_locale=zh_CN
http://myWebsite.com/myWebsite/myPage?productId=12345&key2=value2&key3=value3
...

当我尝试处理javascript 中的所有这些差异时,它变得如此复杂。

有什么好的方法可以在切换语言环境后保留查询字符串和锚点?

【问题讨论】:

    标签: java javascript struts2


    【解决方案1】:

    使用JS重写URL时,应该基于当前的URL。

    所以,如果在浏览器中显示

    http://myWebsite.com/myWebsite/myPage?productId=12345
    

    你应该把它改写成

    http://myWebsite.com/myWebsite/myPage?productId=12345&request_locale=zh_CN
    

    为此,使用 JS 您应该显示当前 URL。看看这个question 了解如何操作。

    【讨论】:

    • 我实际上是在 javascript 中执行此操作的。当 request_locale 是 url 的一部分并且它位于查询字符串的中间时。它变得非常难以处理。 (因为用户可以多次切换语言)
    • 因此,您应该分析 URL,删除语言参数并添加新参数。它不应该那么难。 JQuery 可以帮助您做到这一点。看到这个答案:stackoverflow.com/a/1090985/980472
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-13
    • 1970-01-01
    • 2015-08-03
    相关资源
    最近更新 更多