【发布时间】:2013-01-23 17:05:31
【问题描述】:
我有一个多语言网站,显示几个(十几个)内容页面,漂亮的网址如下:
example.com <- home for default language (french)
example.com/biographie <- page 1
example.com/en <- home for english language
example.com/en/biography <- page 1 english translation
我想将页面合并在一起并提供完整的 ajax 导航,就像 Pitchfork 所做的那样。最重要的是保留非 JavaScript 客户端(SEO、社交网络和其他)的页面视图。
服务器提供完整的网页,然后在 Backbone 初始化时,它会预取其他页面并将其注入 DOM 以加快导航速度。当我导航到另一个页面时,我使用 Backbone 内置的 History API 在历史记录中记录新 URL,并更改视图以显示请求的页面。
var Navigator = Backbone.Router.extend({
routes: {
"*page": "showPage",
},
showPage: function(page) {
this.pages[page].show();
}
}
我的问题是管理 i18n(我的意思是翻译的页面)。如何设置我的路由器来处理语言?我应该如何处理语言切换?
routes: {
"*page": "showPageFr",
"en/*page": "showPageEn",
},
showPageFr: function(page){
showPage(page, 'fr');
},
showPageEn: function(page){
showPage(page, 'en');
},
showPage: function(page, lang) {
// How should I manage 'lang' parameter here ?
this.pages[page].show();
}
我查看了 i18n JS 框架,但我认为我不需要它,因为我想翻译整个页面内容,而不是一些 UI 元素。所有翻译部分都在服务器端进行管理。
【问题讨论】:
-
@Antonimo :我不明白为什么这个问题与我的有关。我没有包含所有内容翻译的 JSON 文件,但我宁愿将翻译后的页面视为不同的页面(具有不同的 URL 和不同的 ID)
-
对,您想将语言 (/fr/) 作为属性传递给服务器,stackoverflow.com/questions/7445353/…,可能会有所帮助
-
@Antonimo :不,我的问题不在服务器端。我使用 Wordpress 并有重写规则,按照我需要的方式管理语言。我的问题在客户端。事实上,当我调用
Backbone.history.start时,我想我必须定义一个不同的词根:“/”表示法语,“/en/”表示英语。您认为这可能是一个好的解决方案吗? -
是的,我现在也需要一个解决方案,发现这是解决问题的方法。
标签: javascript backbone.js internationalization seo friendly-url