Передача переменных в файл yaml - PullRequest
4 голосов
/ 07 апреля 2011

Я люблю использовать i18n и yml. Я хочу, чтобы мой собственный файл yaml делал подобные вещи. Это доступ к переменной в файле yaml. Как то так

name:
  address: "%{city} %{street}"

переменная add может передавать что-то вроде some_method('name.address', :city => 'my city', :street => 'my street')

В i18n мы можем сделать

en:
 message:
  welcome: "Hello %{username}"

Для вызова этого мы можем использовать t("message.welcome", :username => 'admin')

Как я могу это реализовать?

1 Ответ

4 голосов
/ 07 апреля 2011

Это заменить после звонка. К примеру.

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 Управляй многими, думай, что я не знаю:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...