次のようなかなりの URL を持つ、いくつか (ダース) のコンテンツ ページを表示する多言語 Web サイトがあります。
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
Pitchforkが行ったように、ページをまとめて完全な ajax ナビゲーションを提供したいと考えています。最も重要なことは、JavaScript 以外のクライアント (SEO、ソーシャル ネットワークなど) のページ ビューを維持することです。
サーバーは完全な Web ページを提供し、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 要素ではなく、ページ コンテンツ全体を翻訳したいので、それは必要ないと思います。すべての翻訳部分はサーバー側で管理されます。