ルートのローカリゼーションに対する私の現在のアプローチは、ローカライズされたコンテンツと同じようにそれらを処理することです。あなたの場合、私は次のようにします:
// routes.js
function createRoutes(language) {
/*
You'll probably have more work to do here,
such as sub-routes initialization
component's type selection logic, etc.
@note: _t(key, language) is your
translation function
*/
return (
<Route
key={language}
path={_t("it/termini", language)}
component={TermsPage}
/>
)
}
let localizedRoutes = supportedLanguages.map(createRoutes)
const routes = (
<Route path="/" component={App}>
<IndexRoute component={HomePage} />
{localizedRoutes}
<Route path="*" component={NotFoundPage} />
</Route>
)
次に、パラメータを含む他の文字列と同じように、翻訳ファイルでそれらを指定できます。
// en.js
module.exports = {
//...
"it/termini" : "en/terms",
"it/profilo/:userId" : "en/profile/:userId"
//...
}
ルートを定義する前に、それらをその場で組み立てて、対応する翻訳キーに関連付けることもできます。
このようにして、it/terminiは翻訳された URL の単なるキーになります。terms-page-url のように、基になる URL に似ていないものを使用することもできます。
この方法では、言語ごとにルート コンポーネントやサブルートを区別することもできます。これは追加のボーナスです。マッピング関数内 (またはアプリケーションに適した場所) にロジックを実装するだけです。