config/application.rb 下的 I18n 配置被忽略
I18n configuration under config/application.rb is ignored
我正在尝试在我的应用程序中设置国际化。
我设置 config/application.rb
如下:
class Application < Rails::Application
I18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
I18n.enforce_available_locales = false
I18n.available_locales = [:en, :fr]
I18n.default_locale = :fr
end
在我的 application_controller.rb
中,我尝试根据子域设置语言环境:
before_action :set_locale
def set_locale
puts(I18n.default_locale)
I18n.locale = extract_locale_from_subdomain || I18n.default_locale
end
def extract_locale_from_subdomain
parsed_locale = request.subdomains.first
I18n.available_locales.map(&:to_s).include?(parsed_locale) ? parsed_locale : nil
puts(parsed_locale)
end
第一个 puts
打印 en
,第二个正确打印子域,例如 gr
、fr
或我设置的任何内容。
看来我在config/application.rb
中的配置被忽略了
我已将 127.0.0.1 fr.app.local
添加到我的 etc/hosts
中以便我可以对其进行测试。
您需要编辑 config/application.rb
文件中的 config
对象。
I18n.default_locale = :fr
不会给你你想要的。你需要做 config.i18n.default_locale = :fr
试试这个:
class Application < Rails::Application
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
config.i18n.enforce_available_locales = false
config.i18n.available_locales = [:en, :fr]
config.i18n.default_locale = :fr
end
您可以了解有关配置 Rails 个组件的更多信息 here。
我正在尝试在我的应用程序中设置国际化。
我设置 config/application.rb
如下:
class Application < Rails::Application
I18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
I18n.enforce_available_locales = false
I18n.available_locales = [:en, :fr]
I18n.default_locale = :fr
end
在我的 application_controller.rb
中,我尝试根据子域设置语言环境:
before_action :set_locale
def set_locale
puts(I18n.default_locale)
I18n.locale = extract_locale_from_subdomain || I18n.default_locale
end
def extract_locale_from_subdomain
parsed_locale = request.subdomains.first
I18n.available_locales.map(&:to_s).include?(parsed_locale) ? parsed_locale : nil
puts(parsed_locale)
end
第一个 puts
打印 en
,第二个正确打印子域,例如 gr
、fr
或我设置的任何内容。
看来我在config/application.rb
中的配置被忽略了
我已将 127.0.0.1 fr.app.local
添加到我的 etc/hosts
中以便我可以对其进行测试。
您需要编辑 config/application.rb
文件中的 config
对象。
I18n.default_locale = :fr
不会给你你想要的。你需要做 config.i18n.default_locale = :fr
试试这个:
class Application < Rails::Application
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
config.i18n.enforce_available_locales = false
config.i18n.available_locales = [:en, :fr]
config.i18n.default_locale = :fr
end
您可以了解有关配置 Rails 个组件的更多信息 here。