我准备将所有时区翻译成俄语,我已经完成了这些事情:
模型:
# lib/i18n_time_zone.rb
class I18nTimeZone < ActiveSupport::TimeZone
def self.all
super.map { |z| create(z.name, z.utc_offset) }
end
def to_s
translated_name = I18n.t(name, :scope => :timezones, :default => name)
"(GMT#{formatted_offset}) #{translated_name}"
end
end
视图:
<%= time_zone_select :user, :time_zone, nil, :model => I18nTimeZone %>
语言环境文件(/config/locales/ru.yml):
ru:
timezones:
"Midway Island": "Мидуэй"
"Samoa": "Самоа"
....
但是有些情况下原始字符串包含一些点(“。”)就像“圣彼得堡” 并且I18n.t()告诉我翻译缺失。
我该如何避免呢?
答案 0 :(得分:2)
只需删除翻译键的点。
def to_s
translated_name = I18n.t(key, :scope => :timezones, :default => name)
"(GMT#{formatted_offset}) #{translated_name}"
end
def key
@key ||= name.gsub(/\./, "")
end
ru:
timezones:
"Midway Island": "Мидуэй"
"Samoa": "Самоа"
"St Petersburg" : "some one translate this"