1

gem I18n_routing を使用した Rails Web サイトがあります。次のようなパスがあります。

domain.com/<place>/bookings

場所は「ニューヨーク」かもしれません。私の目標は、ルートを次のように翻訳することです。

domain.com/<place>/bokningar

私は次のように I18n_routing を介してこれを翻訳しようとしています:

  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

次のような翻訳ファイルを使用します。

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

上記のようにすると、I18n_routing が「予約」を翻訳する必要があることを認識しないという問題が発生します。

ローカライズされた doure をリソース全体の外に配置するように設定を変更すると、次のようになります。

    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

空のパス「場所」が翻訳されるため、ルートは次のようになります。

domain.com/plats/<place>/bokningar

翻訳ファイルに設定しようとしplaces: ""ましたが、I18n_routing はそれをスキップします。

このような翻訳を取得するにはどうすればよいですか。

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

つまり、空のパスを保持し、ネストされたリソース「予約」を翻訳しましたか?

Aman Garg に応じて編集: これらに使用するパスは次のとおりです。

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

1 に答える 1

1

言語に応じて動的に翻訳されたルートを提供するための gem があります。I18n と同じように、ロケールに基づいて URL を生成します。これには簡単な実装があります。

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

github のドキュメントに記載されている手順に従います。yml ファイルでルートの翻訳を定義できます。例: config/locales/routes.yml 内

en:
  routes:
    # you can leave empty locales, for example the default one
se:
  routes:
    places: 'plats'
    bookings: 'bokningar'
于 2013-09-03T06:03:26.090 に答える