在I18n locale file
中(例如el.yml):
translation
方法来使用已经定义的翻译吗?ruby code
吗?例如,在locale yml file
中,我想在多个地方使用单词“ 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}."
答案 0 :(得分:0)
我可以使用翻译方法来使用已经定义的翻译吗?
是的,这就是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文件中删除。