2013-08-26 2 views
1

J'ai un site web Rails utilisant la gemme I18n_routing. J'ai un chemin comme ceci:I18n_routing, chemin vide + ressource imbriquée

domain.com/<place>/bookings 

où l'endroit pourrait être "new-york". Mon but est d'obtenir les itinéraires traduits comme ceci:

domain.com/<place>/bokningar 

Je suis en train de traduire par I18n_routing comme ceci:

resources :places, :path => '', :except => [:index, :create, :new] do 

    #resources :flight_pages, :path => 'flyg', :only => [:show, :index] 
    #resources :hotel_pages, :path => 'hotell', :only => [:show, :index]  
    localized do 
     resources :bookings, :except => [:edit, :update] do 
     get :get_method_desc, :on => :collection 
     get :get_image_path, :on => :collection  
     end 
    end 
    get :autocomplete_place_name, :on => :collection  
    end 

    localized do 
    resources :places, :only => [:index, :create, :new] 
    end 

avec le fichier de traduction comme ceci:

resources: 
    places: 'plats' 
    bookings: 'bokningar' 

Je rencontre un problème où si je l'ai comme ci-dessus, I18n_routing ne reconnaît pas que les "réservations" doivent être traduites.

Si je change la configuration de mettre localisée faire en dehors de toute resoure:

localized do 
    resources :places, :path => '', :except => [:index, :create, :new] do 

    #resources :flight_pages, :path => 'flyg', :only => [:show, :index] 
    #resources :hotel_pages, :path => 'hotell', :only => [:show, :index]  

     resources :bookings, :except => [:edit, :update] do 
     get :get_method_desc, :on => :collection 
     get :get_image_path, :on => :collection  
     end 

    get :autocomplete_place_name, :on => :collection  
    end 
    end 
    localized do 
    resources :places, :only => [:index, :create, :new] 
    end 

-je obtenir le chemin vide « lieux » traduit donc la route se transforme en:

domain.com/plats/<place>/bokningar 

J'ai essayé de Définissez places: "" dans le fichier de traduction, puis I18n_routing l'ignore.

Que dois-je faire pour obtenir une traduction comme ceci:

domain.com/<place>/bokningar (:se) 
domain.com/<place>/bookings (:en) 

dire garder le chemin vide et traduit la ressource imbriquée « des réservations »?

Modifier en réponse à Aman Garg: chemins que j'utilise pour ce sont

new_place_booking_path(@place) #=> domain.com/<place>/bookings/new 
place_bookings_path(@place) #=> domain.com/<place>/bookings 
+0

pouvez-vous coller un exemple comme comment créer un chemin pour l'URL mentionnée. Je veux dire chemin d'utilisation en ce moment. Comme some_link_path ou URL statique? –

+0

Bien sûr, j'ai ajouté quelques exemples maintenant. J'espère que c'est ce que vous cherchiez. – Christoffer

+0

Avez-vous spécifié 'se:' dans votre fichier de traduction? – Bala

Répondre

1

Il y a un petit bijou pour fournir des itinéraires traduits dynamiques selon la langue. Il va générer l'URL sur la base des paramètres régionaux, tout comme I18n. Il est facile pour la mise en œuvre ceci:

https://github.com/francesc/rails-translate-routes

Suivez les étapes mentionnées dans le documention sur GitHub. Vous pouvez définir des traductions pour l'itinéraire dans les fichiers yml. par exemple: dans config/locales/routes.yml

en: 
    routes: 
    # you can leave empty locales, for example the default one 
se: 
    routes: 
    places: 'plats' 
    bookings: 'bokningar' 
+0

Je connaissais les rails-translate-routes mais je ne l'ai jamais essayé. Cela fonctionne mieux que I18n_routing et cela a résolu mon problème. Merci Aman! – Christoffer

Questions connexes