我看到两种选择。第一种方法是使@strings成为实例变量。
但是,您可能会在一个请求上多次加载它们,因此,您可以将@strings转换为针对字符串集的区域设置哈希。
module HasStrings
def self.included(klass)
klass.extend ClassMethods
end
module ClassMethods
def strings
@strings ||= {}
string_locale = File.exists?(locale_filename(I18n.locale.to_s)) ? I18n.locale.to_s : 'en'
@strings[string_locale] ||= File.open(locale_filename(string_locale)) { |f| YAML.load(f) }
end
def locale_filename(locale)
"#{RAILS_ROOT}/config/locales/#{self.name.pluralize.downcase}/#{locale}.yml"
end
end
end