module R18n::Translated
Module to add i18n support to any class. It will be useful for ORM or R18n
plugin with out-of-box i18n support.
Module can add proxy-methods to find translation in object methods. For example, if you class have `title_en` and `title_ru` methods, you can add proxy-method `title`, which will use `title_ru` for Russian users and `title_en` for English:
class Product include DataMapper::Resource property :title_ru, String property :title_en, String property :desciption_ru, String property :desciption_en, String include R18n::Translated translations :title, :desciption end # User know only Russian R18n.set('ru') product.title #=> Untranslated # Set value to English (default) title product.title_en = "Anthrax" product.title #=> "Anthrax" product.title.locale #=> Locale en (English) # Set value to title on user locale (Russian) product.title = "Сибирская язва" product.title #=> "Сибирская язва" product.title.locale #=> Locale ru (Russian) product.title_en #=> "Anthrax" product.title_ru #=> "Сибирская язва"
Proxy-method support all funtion from I18n: global and type filters, pluralization, variables. It also return TranslatedString
or Untranslated
.
By default it use `R18n.get` to get I18n
object (so, you must set it before use model), but you can overwrite object `r18n` method to change default logic.
See R18n::Translated::Base
for class method documentation.
Options¶ ↑
You can set option for proxy-method as Hash with keys;
-
`type` – YAML type for filters. For example, “markdown” or “escape_html”.
-
`methods` – manual method map as Hash of locale codes to method names.
-
`no_params` – set it to true if you proxy-method must send it parameters only to filters.
-
`no_write` – set it to true if you don't want to create proxy-setters.
Method `translation` will be more useful for options:
translation :title, methods: { ru: :russian, en: :english}