Вы можете сократить свой второй оператор до if (I18n.locale == :en)
вместо преобразования в строку, однако в этом случае по-прежнему не хватает смысла в использовании поддержки локалей Rails.Например, с этим файлом yml:
en:
hello: "Hello world!"
fr:
hello: "Bonjour tout le monde !"
Вы должны просто сделать это без каких-либо условных выражений:
puts I18n.translate(:hello)
, и это даст вам соответствующий перевод.
Если вы действительно хотите сделать что-то похожее на ваш первый пример, тогда вы можете переопределить method_missing
в классе Symbol
.Если вы сделали это:
class Symbol
def method_missing(method_name, *arguments)
if method_name.to_s[-1,1] == "?"
self.to_s == method_name.to_s[0..-2]
else
super
end
end
end
Тогда вы можете сделать это:
if I18n.locale.en?
puts "english"
end