0

大規模な既存のアプリケーションをReactに変換しています。当社のローカライズされたコンテンツは、このようなものです。だから私は、各ロケールのルートを宣言する必要が反応ルータを備えたローカライズされたサブパス?

www.website.com/about  // english 
www.website.com/es/about // spanish 
www.website.com/de/about // german 

、私は次のように想定しています

<Route path='/' component={App} /> 
<Route path='/es' component={App} /> 
<Route path='/de' component={App} /> 

これを行うための、より簡潔な方法がある場合、私は疑問に思って、でも?

また、私は、例えばベースパスを尊重するすべてのリンクを希望:そのユーザーのロケールがスペイン語である場合

<Link to='/inbox' /> 

は自動的に /es/inboxに行くだろう。これを行うための既存のまたは共通の方法がなければなりませんか?

答えて

1

反応ルータでparamsを使用できます。

<Route path='/:language' component={App} /> 

のようなので、何かがそうコンポーネントで、あなたはthis.props.params.languageがナビゲートされているものは何でもありますアクセスすることができます。だから、あなたがそれらのロジック

+0

はい、私はこれを検討していました。この問題は、私は明らかにjsとcssを同じ場所にホストしているので、 'www.website.com/dist/bundle.js'を取得しようとすると'/dist'がロケールとして解釈されます。 –

+0

私はどのサーバーを使用しているのかよく分かりませんが、静的コンテンツのURLがルートマッチングコードに到達しないように静的コンテンツを提供する必要があります。 –

-1

一つのアプローチに

を扱うことができるコンポーネントにあなたはlanguageのparamsのための静的routeとしてlocaleまたは何か他のものを維持することができます。

例として

あなたのリンクは次のようなものになります

www.website.com/locale/en/about // english 
www.website.com/locale/es/about // spanish 
www.website.com/locale/de/about // german 

とルートのようになります。

<Route path='/locale'/> 
    <Route path='en' component={App} /> 
    <Route path='es' component={App} /> 
    <Route path='de' component={App} /> 
</Route> 
+0

SEOの観点からはばかばかしい解決策です。 –

+0

その場合、 'www.website.com/dist/bundle.js'を' www.website.com/dist/js/bundle.js'か何かに移動してください。そして、言語を '/:language'(direct params)にしておきます。 –

関連する問題