もちろん、Ruby アプリと同じように、Rails アプリで YAML を使用できます。
require 'yaml'
things = YAML::load(open("my_things.yml"))
翻訳には、既存の Rails I18n フレームワークを使用してください。
たとえば、次のクラスがあるとします。
class Thing
attr_accessor :title, :description
end
class Lights < Thing
end
class Safety < Thing
end
そして、次の YAML データ ファイル:
---
- !ruby/object:Lights
title: "Fog lights"
description: "Should be used in foggy environments only!"
- !ruby/object:Lights
title: "Xenon"
description: "6500K"
- !ruby/object:Safety
title: "Airbag"
- !ruby/object:Safety
title: "ABS"
description: "bla bla bla"
config/locale/things.nb.yml に翻訳を追加できます。
nb:
lights:
fog_lights:
title: "Tåkelys"
description: "Kun til bruk i tåke!"
xenon:
title: "Xenon"
description: "6500K"
safety:
airbag:
title: "Kollisjonspute"
abs:
title: "ABS"
description: "bla bla bla"
もちろん、他の言語でも同様です。それでは、物事を記述するメソッドを実装しましょう。
class Thing
def describe
key = title.parameterize
thing = self.class.to_s.downcase
translated_title = I18n::t("#{thing}.#{key}.title")
if description
translated_description = I18n::t("#{thing}.#{key}.description")
else
translated_description = ""
end
"#{translated_title}: #{translated_description}"
end
end
現在の言語がノルウェー語であると仮定すると、次のことができるようになります。
things.each do |thing|
puts thing.describe
end
そして得る:
Tåkelys: Kun til bruk i tåke!
Xenon: 6500K
Kollisjonspute:
ABS: bla bla bla
元の YAML ファイルから説明タグを削除するか、利用可能な翻訳がない場合はそれらをデフォルトのフォールバックとして使用できることに注意してください。
お役に立てれば。