Devise 上的 i18n 实现方案
Devise 是一款非常灵活的开源工具,用于构建可扩展的 Web 应用程序。在 Devise 中实施 i18n(国际化)有几种方法。我们将分别介绍每种方法,并给出一些建议。
在 Devise 应用程序中,使用 Ruby 兼容的 i18n 库,可以确保 i18n 功能与其他 Ruby 应用程序兼容。
# config/locales/en.yml
en:
hello: "Hello world!"
在 Devise 中,可以配置 I18n::Backend::Simple 作为 i18n 的后端。这是一个轻量级的选项,适用于大多数场景。
# config/initializers/i18n.rb
I18n.backend = I18n::Backend::Simple.new
如果你使用 Active Record,那么你可以配置 I18n::Backend::ActiveRecord,它将在数据库中存储 i18n 文本。
# config/initializers/i18n.rb
I18n.backend = I18n::Backend::ActiveRecord.new
你可以使用 YAML 文件存储 i18n 文本,并在 config/locales.yml
中引用它们。
# config/locales.yml
en:
hello: "Hello world!"
在某些情况下,你可能希望在代码中直接提取 i18n 文本,而不是将其存储在数据库或 YAML 文件中。这可以通过为 I18n.translate
方法提供默认值来实现。
# config/initializers/i18n.rb
I18n.translate('hello', default: 'Hello world!')
在配置文件中,指定 i18n 格式,例如:
# config/locales/en.yml
en:
hello: "Hello %{name}!"
在代码中,使用 I18n.t
调用 i18n 文本:
I18n.t 'hello', locals: { name: 'John' }
以上是在 Devise 中实现 i18n 的一些方法。根据你的需求和应用程序的复杂程度,你可能需要选择其中一种或多种方法。
领取专属 10元无门槛券
手把手带您无忧上云