I18n - файл локали - используйте ruby ​​- используйте перевод () - PullRequest
0 голосов
/ 27 октября 2018

В I18n locale file (например, el.yml):

  • можно ли использовать метод translation для использования уже определенного перевода?
  • можно ли использовать ruby code внутри?

Например, в locale yml file в нескольких местах я хочу использовать слово "Invalid".Таким образом, один из подходов состоит в том, чтобы переводить слово "Invalid" каждый разЯ мог бы использовать что-то вроде t(:invalid) ..

например:

el:
  # global translations - in order to be used later in the file
  locked: 'kleidomeno'
  invalid: 'mi egiro'
  password: 'kodikos'

  devise:
    failure:
      invalid: "#{Invalid} %{authentication_keys} or #{password}."
      locked: "Your account is #{locked}."
      last_attempt: "You have one more attempt before your account is #{locked}."
      not_found_in_database: "#{invalid} %{authentication_keys} ή #{password}."

1 Ответ

0 голосов
/ 27 октября 2018

можно ли использовать метод перевода для использования уже определенного перевода?

Да, для этого и нужен перевод I18n, например,

t 'something'

могу ли я использовать код ruby ​​внутри?

Нет, это файл .yml, который не поддерживает Ruby или любые другие языки программирования.

Другой подход заключается в переводеэто один раз

Чтобы перевести один раз, вы можете написать новое задание Rake для генерации целевого yml для вас.

Или, возможно, обернуть функцию официального перевода новым методом, которыйможет распознать ваш пользовательский синтаксис строки:

# custom translate
def ct(msg)
  msg.gsub(/#\{\s*([^\}]+)\s*\}/) {|_| t $1}
end

Назовите его так:

ct 'Your account is #{locked}.'

Я думаю, вам лучше удалить эти строки с ошибками из вашего файла yml, если это так.

...