我需要从缩写中制作完整的语言名称。
我试图用简单的方式来制作它(不工作)
def long(lang)
if lang == "en"
lang == "English"
elsif lang == "ru"
lang == "Russian"
end
...
end
有什么更好的方法来做到这一点?
我需要从缩写中制作完整的语言名称。
我试图用简单的方式来制作它(不工作)
def long(lang)
if lang == "en"
lang == "English"
elsif lang == "ru"
lang == "Russian"
end
...
end
有什么更好的方法来做到这一点?
它不起作用,因为当赋值运算符应该是比较运算符时。看一下这个:
def long(lang)
if lang == "en"
lang = "English"
elsif lang == "ru"
lang = "Russian"
...
end
lang
end
或者你可以让它更干净更短
def long lang
map = {en: 'English',
ru: 'Russian'}
map[lang.to_sym]
end
甚至更短(通过消除临时变量)
def long lang
{
en: 'English',
ru: 'Russian'
}[lang.to_sym]
end
I18n
当前语言环境、可用语言环境等是符号,而不是字符串。所以你会有
def long(language)
case language
when :en
"English (symbol)"
when "en"
"English (string)"
else
"something else"
end
end
>> long(I18n.default_locale)
=> "English (symbol)"
如果你想按照你的意愿去做,你必须先将其转换为字符串。
def long(language)
case language.to_s
when :en
"English (symbol)"
when "en"
"English (string)"
else
"something else"
end
end
>> long(I18n.default_locale)
=> "English (string)"