使用I18n语言环境的Rails语言名称

时间:2017-06-12 08:04:32

标签: ruby-on-rails ruby rails-i18n

我想将区域设置代码与特定语言名称匹配。在I18n / rails中是否有任何构建功能可以将语言名称返回到相应的语言环境。安装宝石是唯一的方法吗?

3 个答案:

答案 0 :(得分:6)

似乎在I18n中没有这方法。 如果您只需要当前语言名称,则可以轻松地将其包含在相应的语言环境文件中:

# config/locales/en.yml
en:
  language_name: "English"

照常使用:I18n.t('language_name')I18n.t('language_name', locale: :en)

出于一般目的,您可以使用:https://github.com/hexorx/countries或将您自己的映射初始化为ruby散列:{ en: 'English', ... }

答案 1 :(得分:2)

如果不安装额外的gem,您可以创建自己的键/值对(将其存储在json文件中或将其存储到DB),然后查找键,例如“de”并读取值(在本例中,“德语”)。它需要一些手动工作(或者设置一个rake任务或者从某个信息源以适当的格式为你构建它)但是在这种情况下你不依赖于额外的gem(没有完全通过代码,对您的应用程序性能/内存的影响可能远大于您自定义的实现,以满足您所知道的特定需求。

我不知道有任何内置的函数可以返回整个语言名称。您可以返回语言缩写(例如,用于html lang属性),但我认为就内置函数而言,它会停在那里。)

答案 2 :(得分:0)

google groupsGist)中查看以下帖子。我希望对rails中所需的转换没有默认支持。