I18n
Upcoming SlideShare
Loading in...5
×
 

I18n

on

  • 449 views

 

Statistics

Views

Total Views
449
Views on SlideShare
447
Embed Views
2

Actions

Likes
0
Downloads
1
Comments
0

1 Embed 2

http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

I18n I18n Presentation Transcript

  • I18n
  • Основные возможности• Перевод и локализация• Интерполяция переводов• Плюрализация
  • ПоискI18n.t date.formats.shortI18n.t formats.short, :scope => dateI18n.t short, :scope => date.formatsI18n.t short, :scope => %w(date formats)
  • ИнтерполяцияI18n.interpolate("%{first} %{last}", :first => Masao, :last =>Mutoh)#=> "Masao Mutoh"I18n.interpolate("%<integer>d, %<float>.1f", :integer => 10, :float =>43.4)#=> "10, 43.4"
  • Транслитерацияstore_translations(:de, :i18n => {  :transliterate => {    :rule => {      "ü" => "ue",      "ö" => "oe"    }  })I18n.locale = :enI18n.transliterate("Jürgen") # => "Jurgen"I18n.locale = :deI18n.transliterate("Jürgen") # => "Juergen"I18n.transliterate("Jürgen", :locale => :en) # => "Jurgen"I18n.transliterate("Jürgen", :locale => :de) # => "Juergen"
  • Другая локальI18n.with_locale(:en) do  I18n.t :name #=> "User name"endI18n.with_locale(:ru) do  I18n.t :name #=> "Имя пользователя"end
  • А что еще?..• Пользовательские разделители• Расширяемая архитектура с заменяемым бэкендом
  • Backends
  • KeyValue• При инициализации получает хранилище, которое реализует всего 3 метода store#[](key) store#[]=(key, value) store#keys• Самое простое хранилище I18n.backend = I18n::Backend::KeyValue.new({}) I18n.backend = I18n::Backend::KeyValue.new(Rufus::Tokyo::Cabinet.new(*))
  • Simple (default)• Переводы хранятся в YAML файлах• При старте считываются в память• Расширяется с помощью модулей
  • Модули• I18n::Backend::Cache• I18n::Backend::Cascade I18n.t(:foo.bar.baz, :cascade => true)• I18n::Backend::Chain I18n.backend = I18n::Backend::Chain.new(I18n::Backend::ActiveRecord.new, I18n.backend)• I18n::Backend::Gettext
  • Модули• I18n::Backend::Memoize• I18n::Backend::Metadata• I18n::Backend::Pluralization• I18n::Backend::Transliterator