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)
我有一个应用程序目前正在本地化为阿拉伯语,但我遇到了一个小问题。
在英文版的网站中,我显示了一些尺码如下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)