在 Ruby 中,处理多语言和国际化的常用方法是使用 I18n(Internationalization)库。I18n 是 Ruby on Rails 中集成的一个库,可以方便地实现多语言和国际化功能。不过,I18n 也可以在其他 Ruby 应用程序中使用。
以下是使用 I18n 实现多语言和国际化的基本步骤:
在 Ruby on Rails 中,I18n 库已经集成在框架中,无需额外安装。如果是在其他 Ruby 应用程序中使用,可以通过 gem install i18n
命令安装。
在 Ruby on Rails 中,I18n 的配置文件是 config/application.rb
。可以在该文件中设置默认的语言和可用的语言列表,例如:
config.i18n.default_locale = :en # 默认语言为英语
config.i18n.available_locales = [:en, :fr, :es] # 可用的语言列表为英语、法语、西班牙语
如果是在其他 Ruby 应用程序中使用,可以在初始化应用程序时进行配置,例如:
require 'i18n'
I18n.default_locale = :en
I18n.available_locales = [:en, :fr, :es]
在 config/locales
目录下创建语言文件,文件名的格式为 locale.yml
,其中 locale
为语言的缩写,例如 en.yml
、fr.yml
、es.yml
等。在语言文件中,可以定义不同语言的翻译,例如:
# config/locales/en.yml
en:
hello: "Hello"
goodbye: "Goodbye"
# config/locales/fr.yml
fr:
hello: "Bonjour"
goodbye: "Au revoir"
# config/locales/es.yml
es:
hello: "Hola"
goodbye: "Adiós"
可以使用 I18n.t
方法在代码中调用翻译。例如:
I18n.t('hello') # 输出当前语言对应的“Hello”或其它语言的翻译
如果需要插入变量,可以在语言文件中使用 %{variable_name}
占位符,例如:
# config/locales/en.yml
en:
welcome: "Welcome, %{name}!"
# Ruby 代码中
I18n.t('welcome', name: 'John') # 输出当前语言对应的“Welcome, John!”或其它语言的翻译
以上就是使用 I18n 实现多语言和国际化的基本步骤。除了上面介绍的方法外,I18n 还支持更高级的功能,例如:使用不同的翻译后端、动态加载语言文件等。