我喜欢使用 i18n 和 yml。我想要我自己的 yaml 文件来做类似的事情。那是访问 yaml 文件中的变量。像这样的东西
name:
address: "%{city} %{street}"
添加变量可以传递类似
some_method('name.address', :city => 'my city', :street => 'my street')
的内容在 i18n 我们可以做
en:
message:
welcome: "Hello %{username}"
要调用它,我们可以使用
t("message.welcome", :username => 'admin')
我该如何实现?
最佳答案
调用后是替换。举个例子。
Yaml.load_file('locale/en.yml')['en']['message']['welcome'].gsub('%{username}', username)
所以在方法中它可以是:
def t(key, changes)
result = yaml_locale['en']
key.split('.').each |k|
result = result[k]
end
changes.each_keys do |k|
result.gsub!("%{#{k}}%", changes[k])
end
result
end
稍后重构它,但想法是这样的。
原方法在这里:https://github.com/svenfuchs/i18n/blob/master/lib/i18n.rb#L143管理很多认为我不:)
关于ruby-on-rails - 在 yaml 文件中传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5578824/