2015-11-17 26 views
7

Dil tercihinin URL'nin bir parçası olduğu çok dilli site yapıyorum, ör.Reaksiyon yönlendiricisinde çok dilli destek

<Route path="/:lang"> 
    <Route path="somepage" component={Somepage}/> 
</Route> 

Ama varsayılan dil için ben örnekte görüldüğü gibi url dili eklemenize gerek yoktur: Bütün diller için önek kullandığınızda

http://example.com/<somepage>  (Russian, default) 
http://example.com/en/<somepage> (English) 
http://example.com/jp/<somepage> (Japanese) 
http://example.com/../    (etc) 

Her şey tamam.

path: '/:lang([a-z]{2})?/<somepage>' 

Ama yol bir dize değil, bir regexp'in olmalı, çünkü çalışmak yönlendirici tepki vermez: fluxible yönlendirici olarak o yoldaki Regexp'i kullanılarak çözülebilir. Bu kullanım durumunu nasıl ele alacağınıza dair bir fikriniz var mı?

cevap

4

Rotanızı kopyalamayı denediniz mi? Şimdiye kadar benim için çalışmak gibi görünüyor. Bir Yönlendirme ihtiyacım yok

var innerRoutes = (
    <Route> 
    <Route path="somepage" component={Somepage}/> 
    <Route path="otherpage" component={Otherpage}/> 
    </Route> 
); 

var routes = (
    <Route path="/" component={App}> 
    {innerRoutes} 
    <Route path=":lang"> 
     {innerRoutes} 
    </Route> 
    </Route> 
); 
+0

İç İzlemeler de nasıl çevrilir? Tüm rotaları tek tek listeleyim mi? Ve eğer öyleyse, kullanıcı yerel ayarları uygulamamdan değiştirdiğinde, doğru çevrilmiş yolu nasıl alabilirim? – cl0udw4lk3r

2

senin yolları gibi bakmak gerekir:

<Router history={createBrowserHistory()}> 
    <Route component={App}> 
    <IndexRoute component={Home} /> 
    <Route path=':lang/'> 
     <Route path='about' component={About} /> 
    </Route> 
    <Redirect from='*' to='ru/about' /> 
    </Route> 
</Router> 

:lang/ yılında eğik çizgi aksi bir ile Redirect var URL ondan sonra bir şey (örneğin /de/about) içeriyorsa yalnızca eşleştirilecek belirtir Her zaman to parametresinde belirttiğiniz sayfaya yönlendirilecek açgözlü eşleme. Route Matching in the docs hakkında daha fazla bilgi edinebilirsiniz.

+0

, ben URL'lerin tam seo amaçlı örnekte olduğu gibi olmak istiyorum. –

+0

URL'lerinin görünümünü değiştirmedim, tam olarak nasıl görünmelerini istediklerini görün. Sadece size React Router ile ulaşabileceğiniz şekilde gösteriyorum. Rotaları nasıl eşleştirdiğimizi görmek için dokümanlar ile eşleşen rotayı okuyun. – knowbody

+0

Dokümanları birçok kez okudum, ancak regexp olmadan böyle bir davranışı nasıl başarabileceğimi anlayamıyorum. Aşağıdaki kod, istediğim gibi çalışıyor, ama çirkin görünüyor, yollarda böyle bir çoğaltma sevmiyorum:

İlgili konular