rails i18n插值的注意事项及使用关键要点

变量插值(variable interpolation),翻译中允许插入变量进行翻译,比如

$20 20元这样的不同的计数金额的方式,这时在翻译文件就可以定义

price: %{price}元”这样的形式,在翻译的时候,这样调用 t(:price, price: 20)则会20这个变量一起带入到翻译中来


使用default_url_optionsroutes#scope的方式在url中添加默认语言区域设置


使用l方法并配合在翻译文件中定义时间格式来翻译时间格式


除了语言可以国际化,视图模板也可以国际化!类似于访问 books_controller#index方法会自动渲染books/index.html.erb一样,如果指定了I18nlocale后,rails会去寻找对应区域语言的视图模板,比如访问 localhost:3000/en/books的时候,如果定义了books/index.en.html.erb模板的话,将会去渲染index.en.html.erb模板文件!如果没有定义将会渲染默认的视图文件


翻译的命名空间:

翻译文件中的翻译可以定义为层级结构,比如:

time:

formats:

short: xxx

那么翻译时可以使用这几种形式,是等价的:

t(‘time.formats.short’)

t(‘short’, scope: [:time, :formats])

t(‘formats.short’, scope: [:time])


惰性查找: rails实现了一种针对视图和控制器专用的便捷方法,调用t方法时,要翻译的单词的第一个字母前写上 .(点),那么rails会自动按照当前视图或者控制器的命名空间去寻找翻译,比如 books_controller.rb#index中的 t(‘.hey’),这个方法将会去寻找

 books:

index:

hey: 

这样的翻译


针对ActiveRecord的翻译: 模型的翻译需要定义成这种形式:

  activerecord:

    attributes:

      user/gender:

        female: "Female"

        male: "Male"

    errors:

models:

  user:

attributes

name:

blank:

,定义完之后,model_name.human 以及 model_name.human_attribute_name(attr)就会自动去寻找模型对应的翻译,simple_form_for中使用 f.input :attr这样的形式的时候,也是通过这种规则去寻找翻译。当模型有写validates校验的时候,那么当校验不通过的时候,会按照模型的错误消息的建去寻找翻译比如 user.errors中会有name.blank的建


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值