/ / Získať lokalizáciu z rozsahu v route.rb? - Ruby-on-Rails, Ruby, Ruby-on-Rails-4, trasy, miestne nastavenie

Získať lokalizáciu z rozsahu v routes.rb? - rubín na koľajniciach, rubín, rubín na koľajniciach-4, trasy, miestne

Na svojich trasách mám nasledujúce

scope "/(:locale)", locale: /en|fr/, constraints: LocaleConstraint do
# I want to be able to detect the locale that was used in the URL
get "/tool" , redirect_to(/a_certain_page)
end

Teraz v závislosti od miestneho nastavenia, ktoré sa nachádzalo v adrese URL, chcem presmerovať na rôzne stránky.

V podstate chcem nasledovné:

get "/fr/tool", redirect_to(/tool_in_french)
get "/en/tool", redirect_to(/tool_in_english)

Očakával by som niečo ako:

scope "/(:locale)", locale: /en|fr/, constraints: LocaleConstraint do
get "/tool" => locale == :fr ? redirect_to(/tool_in_french) : redirect_to(/tool_in_english)
end

odpovede:

0 pre odpoveď č. 1

Myslím si, že je lepšie nájsť jazyk v application_controller.rb pomocou params.

private
def set_locale
session["locale"] = params[:locale] || session["locale"] || I18n.default_locale
I18n.locale = session["locale"]
end

Nie som si istý, aký druh prekladateľského nástroja stepomocou, ale s I18n to funguje perfektne. Na trasách by ste mali do rozsahu pridať iba parameter: locale. A to môže byť vynútené v application_controller.rb. Rozsah bol správny, bez predvolených hodnôt; Koľajnice: ako používať rozsah s parametrami a použiť trasu s predvolenou hodnotou parametrov

before_action :set_locale

Ak nepoužívate I18n, môžete túto metódu použiť aj na prepojenie s rôznymi priečinkami zobrazenia a smerovanie k správnemu zobrazovaciemu súboru v každej metóde všetkých radičov, veľa práce.

http://guides.rubyonrails.org/i18n.html