Rails 中的自定义翻译功能

Custom translation function in Rails

我有一个应用程序目前正在本地化为阿拉伯语,但我遇到了一个小问题。

在英文版的网站中,我显示了一些尺码如下10x15 15x18等,它们就这样存储在数据库中。

在我的阿拉伯语版本中,我想改为显示 10*15 15*18

目前,我在其中一个模型中有一个字符串替换功能如下:

if I18n.locale == :ar
   size.sub! 'x', '*'
end

但我确定我不应该在模型中使用这样的代码。我如何使用通常的 I18n 方式来做到这一点?

数据库中的

x 是内部存储方式,所以严格来说对于英语你也应该有 size.sub! 'x', 'x' (它什么都不做,因为符号是一样的,但它改变了它的意思) .

你说得对,符号属于语言环境。语言环境支持翻译中的变量:

en:
  some_size: "%{width}x%{height}"
ar:
  some_size: "%{width}*%{height}"
I18n.t('some_size', width: size.split('x').first, height: size.split('x').second)

(为了使最后一个表达式更整洁 - 你可以使用 width/height 或 size_hash 并使用 splats)