Method: I18n.transliterate
- Defined in:
- lib/active_support/vendor/i18n-0.4.1/i18n.rb
.transliterate(*args) ⇒ Object
Transliterates UTF-8 characters to ASCII. By default this method will transliterate only Latin strings to an ASCII approximation:
I18n.transliterate("Ærøskøbing")
# => "AEroskobing"
I18n.transliterate("日本語")
# => "???"
It’s also possible to add support for per-locale transliterations. I18n expects transliteration rules to be stored at i18n.transliterate.rule
.
Transliteration rules can either be a Hash or a Proc. Procs must accept a single string argument. Hash rules inherit the default transliteration rules, while Procs do not.
Examples
Setting a Hash in <locale>.yml:
i18n:
transliterate:
rule:
ü: "ue"
ö: "oe"
Setting a Hash using Ruby:
store_translations(:de, :i18n => {
:transliterate => {
:rule => {
"ü" => "ue",
"ö" => "oe"
}
}
)
Setting a Proc:
translit = lambda {|string| MyTransliterator.transliterate(string) }
store_translations(:xx, :i18n => {:transliterate => {:rule => translit})
Transliterating strings:
I18n.locale = :en
I18n.transliterate("Jürgen") # => "Jurgen"
I18n.locale = :de
I18n.transliterate("Jürgen") # => "Juergen"
I18n.transliterate("Jürgen", :locale => :en) # => "Jurgen"
I18n.transliterate("Jürgen", :locale => :de) # => "Juergen"
215 216 217 218 219 220 221 222 223 224 225 |
# File 'lib/active_support/vendor/i18n-0.4.1/i18n.rb', line 215 def transliterate(*args) = args.pop if args.last.is_a?(Hash) key = args.shift locale = && .delete(:locale) || config.locale raises = && .delete(:raise) replacement = && .delete(:replacement) config.backend.transliterate(locale, key, replacement) rescue I18n::ArgumentError => exception raise exception if raises handle_exception(exception, locale, key, ) end |