如果我有一个像
这样的常量的模型class Topic < ActiveRecord::Base
STATUS_DISABLED = 0
STATUS_ENABLED = 1
end
如何使用区域设置进行翻译呢? 我想做那样的事情:
en:
Topic:
STATUS_ENABLED: 'Enable'
STATUS_DISABLED: 'Disable'
翻译我的模特的最佳方法是什么?常数α
答案 0 :(得分:1)
你不能。您的YAML文件无法访问Ruby级别的常量,它们是两种不同的语言。
此外,你不应该。常量用于源代码。它们不需要翻译,你可能会问如何本地化类名。
如果要将符号常量映射到可翻译字符串,则应添加一个返回英语(或其他本地语言)版本的函数,然后翻译 。
class Topic < ActiveRecord::Base
STATUS_DISABLED = 0
STATUS_ENABLED = 1
def status_name(status)
case status
when CASE_DISABLED then 'disabled'
when CASE_ENABLED then 'enabled'
end
end
end
您的YAML文件将包含:
en:
topic:
enabled: 'Enable'
disable: 'Disable'
如果您要将多个值存储为整数但转换为字符串,则可能需要enum
之后:
class Topic
enum status: [:disabled, :enabled]
end
这样,您就可以访问将Topic.statuses
返回的[:disabled, :enabled]
;您可以在这些符号上调用to_s
来生成字符串'disabled'
和'enabled'
,您可以将其输入I18n进行翻译。