gpt4 book ai didi

ruby-on-rails - Rails 4 i18n,如何在将子域用作语言环境的地方转换路线

转载 作者:行者123 更新时间:2023-12-04 06:32:40 26 4
gpt4 key购买 nike

我正在使用子域来确定Rails 4网站中的语言环境。我已经按照我想要的方式与语言环境切换器一起工作了,但是现在我需要转换路由,并且我不确定最佳的处理方法。

我看过https://github.com/kwi/i18n_routing i18n路由gem,但是它不适用于子域,它似乎通过添加/locale来更改路径,这不是我所需要的。

其他 gem 似乎与Rails 4已经过时了。

编辑

基本上,我希望能够使用相同的 View 助手,但需要更改url以使用所选子域反射(reflect)的任何语言。这只是关于路线翻译。

我有可以使用的特定于语言的模板,并且可以生成特定于语言的导航模板,但是我真的不想担心更改erb路径和url erb标签

结束编辑

来自route.rb的样本

scope module: 'countries', shallow: true do

get 'south_american', to: 'south_america#index', as: :south_america
scope module: 'south_america' do
get 'south-america-weather', to: 'weather#index', as: :south_america_weather
get 'south-america-gps-maps', to: 'gps#index', as: :south_america_gps
get 'south-america-accommodation', to: 'hotels#index', as: :south_america_hotels
get 'south-america-vacations', to: 'vacations#index', as: :south_america_vacations
get 'south-america-facts', to: 'facts#index', as: :south_america_facts
end

以south_america_hotels_path为例,将为

south-america-accommodation



很棒,但是我将如何翻译它,这样当我进入西类牙子域south_america_hotels_path时会生成以下网址

hoteles-en-sudamerica



更新

还有,这对于URL而不是路径如何起作用,以便
south_america_hotels_url将生成

en.some_site/south-america-accommodation



当在西类牙子域上时,我会得到

es.some_site/hoteles-en-sudamerica



依所涉及的不同语言环境而定。

我很乐意将yml文件用于url的翻译或在route.rb文件中定义其他路由,虽然可以选择,但是我更愿意在route.rb中定义url,但是我找不到基于子域为同一:as路径/URL选项提供特定于语言的url的方法。

根据先前的回复进行更新和进一步说明。

更改网址不是一种选择,它们需要与现有网址匹配。我只需要知道如何从 View 助手的角度翻译它们,而不必更改 View 助手。

最佳答案

编辑:

我建议您使用这种 gem 。支持多种语言,而无需重新加载路由(我的示例不支持)。您只需更改很少的内容,但它比下面的代码更加一致。 route translator

原始答案(不起作用):

这就是对我有用的方法,您可以尝试一下,例如在 route 可以输入:

AppName::Application.routes.draw do
get "/#{I18n.t("index")}", :to => "pages#index", :as => "index"
get "/#{I18n.t("contact")}", :to => "pages#contact", :as => "contact"
end

这将在您运行应用程序时为您提供默认语言环境中的路由,但是在运行时中,当您更改语言环境时,您需要重新绘制路由以获取新语言环境的路由。
I18n.locale = :es #different locale
AppName::Application.reload_routes!

假设您的default_locale为 :en,此示例将采用以下路线的第一条路线:
en:
index: "index-in-english"
contact: "contact-in-english"

当应用重新加载路线时,它将从您的新语言环境获取翻译,在本示例中为
es:
index: "index-in-spanish"
contact: "contact-in-spanish"

这样,您将呈现pages#index和pages#contact,并且仅更改路线,而无需触摸代码。希望这对您有帮助

关于ruby-on-rails - Rails 4 i18n,如何在将子域用作语言环境的地方转换路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20469439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com