I18n - 语言环境文件 - 使用 ruby - 使用 translation()

I18n - locale file - use ruby - use translation()

I18n locale file中(例如el.yml):

例如,在locale yml file中,有几个地方我想使用“Invalid”这个词。所以一种方法是每次翻译单词"Invalid"

另一种方法是 translate it once,在顶部,然后在包含这个词的语言环境 yml 中的每个翻译中,我可以使用类似 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}."

can I use translation method in order to use an already defined translation?

是的,这就是 I18n 翻译的目的,例如

t 'something'

can I use ruby code inside?

不,它是一个 .yml 文件,不接受 Ruby 或任何其他编程语言。

Another approach is to translate it once

翻译一次,你可以写一个新的Rake任务来为你生成目标yml。

或者,用一种可以识别您的自定义字符串语法的新方法包装官方翻译函数:

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

这样称呼它:

ct 'Your account is #{locked}.'

如果是这样,我认为你最好从你的 yml 文件中删除这些失败字符串。