SlideShare a Scribd company logo
1 of 13
I18n ruby-приложенийI18n ruby-приложений
Ситник Андрей
Санкт-Петербург, апрель 2009
Меня зовут Андрей Ситник
andrey@sitnik.ru, sitnik.ru
Разработчик R18n
r18n.rubyforge.org
О чём речь
L10n, localization, локализация
перевод приложения на другой язык и
адаптация к другой культуре (формат даты,
чисел и т. д.)
I18n, internationalization, интернационализция
техническая возможность локализовать
программу
Из чего состоит
● Перевод данных
●
Перевод интерфейса
●
Локализация дат и чисел
США:
Россия:
Индия:
1,000,000.00
1 000 000,00
10,00,000,00
библиотека
приложение
Зачем
● MVCT: вынос всего текста в отдельный файл
●
Расширение аудитории
●
Родной язык всё равно комфортнее
● Наш ответ глобализации
Как. Rails. 1
●
Поставить gem russian
●
Выставить язык пользователя:
class ApplicationController < …
…
before_filter :set_locale
def set_locale
I18n.locale = params[:locale]
end
end
●
См. ещё полезные gem’ы: rails-i18n.org/wiki
Как. Rails. 2
config/locales/ru.yml
ru:
post:
name: Заметка {{name}}
comments:
one: Один комментарий
few: {{count}} комментария
other: {{count}} комментариев
app/views/post/index.html.erb
<%= t 'post.name', :name => @name %>
<%= t 'post.comments', :count => @count %>
<%= l @created_at %>
Как. Ruby. 1
Установите gem
Sinatra:
Merb:
Desktop:
Я сам:
sinatra-r18n
merb_r18n
r18n-desktop
r18n-core
Всё сразу работает «из коробки».
Нужно особая настройка — gem r18n-core.
Как. Ruby. 2
i18n/ru.yml
post:
name: Заметка %1
comments: !!pl
1: Один комментарий
2: %1 комментария
n: %1 комментариев
views/post.html.erb
<%= i18n.post.name(@name) %>
<%= i18n.post.comments(@count) %>
<%= i18n.l @created_at %>
Советы разработчикам
● Динамическая вёрстка. Текст на разных
языках имеет разную длину.
● Язык в адресе страницы: /ru/post/super
●
Список других языков в виде ссылок, а не
выпадающего списка
Советы i18n-гикам
● Для иврита и арабского желательно менять
направление индикаторов и положение
меню
● Используйте веб-сервисы для перевода
99translations.com
github.com/newsdesk/translate
launchpad.net
Главное
I18n — это просто, весело и полезно.
Вопросы?
Rails i18n:
R18n:
rails-i18n.org
r18n.rubyforge.org

More Related Content

Viewers also liked

Фронтенд для рубиста
Фронтенд для рубистаФронтенд для рубиста
Фронтенд для рубистаKir Shatrov
 
Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Vitalii Tytskyi
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRailsPavel Gabriel
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Andrey Listochkin
 
Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016zykin-ilya
 
Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"railsclub
 
Секретный доклад о React Router - OdessaJS 2014
Секретный доклад о React Router - OdessaJS 2014Секретный доклад о React Router - OdessaJS 2014
Секретный доклад о React Router - OdessaJS 2014Andrey Listochkin
 
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...Alexander Dymo
 
Refactorings with RubyMine
Refactorings with RubyMineRefactorings with RubyMine
Refactorings with RubyMineavokin
 
Immutable servers with Packer/Chef/AWS
Immutable servers with Packer/Chef/AWSImmutable servers with Packer/Chef/AWS
Immutable servers with Packer/Chef/AWSPavel Gabriel
 
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...lshevtsov
 
Errbit - агрегатор сбоев в продакшене
Errbit - агрегатор сбоев в продакшенеErrbit - агрегатор сбоев в продакшене
Errbit - агрегатор сбоев в продакшенеAndrey Subbota
 
Отладка и эксплуатация Rails-приложений
Отладка и эксплуатация Rails-приложенийОтладка и эксплуатация Rails-приложений
Отладка и эксплуатация Rails-приложенийEgor Baranov
 

Viewers also liked (20)

RSpec. Part 1
RSpec. Part 1RSpec. Part 1
RSpec. Part 1
 
Rails Concerns
Rails ConcernsRails Concerns
Rails Concerns
 
Фронтенд для рубиста
Фронтенд для рубистаФронтенд для рубиста
Фронтенд для рубиста
 
Assets Pipeline
Assets PipelineAssets Pipeline
Assets Pipeline
 
Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRails
 
RSpec. Part 3
RSpec. Part 3RSpec. Part 3
RSpec. Part 3
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013
 
Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016
 
Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"
 
Секретный доклад о React Router - OdessaJS 2014
Секретный доклад о React Router - OdessaJS 2014Секретный доклад о React Router - OdessaJS 2014
Секретный доклад о React Router - OdessaJS 2014
 
Why does code style matter?
Why does code style matter?Why does code style matter?
Why does code style matter?
 
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
Alexander Dymo - RubyConf 2014 - Ruby Performance Secrets and How to Uncover ...
 
Refactorings with RubyMine
Refactorings with RubyMineRefactorings with RubyMine
Refactorings with RubyMine
 
Immutable servers with Packer/Chef/AWS
Immutable servers with Packer/Chef/AWSImmutable servers with Packer/Chef/AWS
Immutable servers with Packer/Chef/AWS
 
Rails for dummies
Rails for dummiesRails for dummies
Rails for dummies
 
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...Системное тестирование  приложений на Ruby on Rails с применением Rspec и Cap...
Системное тестирование приложений на Ruby on Rails с применением Rspec и Cap...
 
Errbit - агрегатор сбоев в продакшене
Errbit - агрегатор сбоев в продакшенеErrbit - агрегатор сбоев в продакшене
Errbit - агрегатор сбоев в продакшене
 
Отладка и эксплуатация Rails-приложений
Отладка и эксплуатация Rails-приложенийОтладка и эксплуатация Rails-приложений
Отладка и эксплуатация Rails-приложений
 

Similar to I18n ruby-приложений

React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)Ontico
 
Язык программирования PHP. EasyCode. Стартовая презентация.
Язык программирования PHP. EasyCode. Стартовая презентация.Язык программирования PHP. EasyCode. Стартовая презентация.
Язык программирования PHP. EasyCode. Стартовая презентация.Nikolaj Sarry
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Ontico
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
Программист как профессия
Программист как профессияПрограммист как профессия
Программист как профессияJaroslav Khorishenko
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeSQALab
 
Evgeny Rybak Presentation
Evgeny Rybak PresentationEvgeny Rybak Presentation
Evgeny Rybak Presentationsef2009
 
l10n, или особенности локализации программного обеспечения, Александр Денисо...
 l10n, или особенности локализации программного обеспечения, Александр Денисо... l10n, или особенности локализации программного обеспечения, Александр Денисо...
l10n, или особенности локализации программного обеспечения, Александр Денисо...it-people
 
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.IT-Доминанта
 
Py con 2010_django_project_dev_full_circle
Py con 2010_django_project_dev_full_circlePy con 2010_django_project_dev_full_circle
Py con 2010_django_project_dev_full_circleRostislav Bryzgunov
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
Создай свое первое Android приложение.
Создай свое первое Android приложение. Создай свое первое Android приложение.
Создай свое первое Android приложение. Kuban Dzhakipov
 
Роман рыбальченко - веб аналитика при посещаемости от 100 000 до 2 млн в сутки
Роман рыбальченко - веб аналитика при посещаемости от 100 000 до 2 млн в суткиРоман рыбальченко - веб аналитика при посещаемости от 100 000 до 2 млн в сутки
Роман рыбальченко - веб аналитика при посещаемости от 100 000 до 2 млн в суткиNaZapad
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаITCrowd Almaty
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаendeveit
 

Similar to I18n ruby-приложений (20)

React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
React новая эра фронтенд разработки / Роберт Харитонов (Liberty Global)
 
Язык программирования PHP. EasyCode. Стартовая презентация.
Язык программирования PHP. EasyCode. Стартовая презентация.Язык программирования PHP. EasyCode. Стартовая презентация.
Язык программирования PHP. EasyCode. Стартовая презентация.
 
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
Как мы данные готовили ORM и все-все-все в приложении Почта Mail.Ru / Кирилл ...
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
Программист как профессия
Программист как профессияПрограммист как профессия
Программист как профессия
 
DLR Hosting
DLR HostingDLR Hosting
DLR Hosting
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
Evgeny Rybak Presentation
Evgeny Rybak PresentationEvgeny Rybak Presentation
Evgeny Rybak Presentation
 
l10n, или особенности локализации программного обеспечения, Александр Денисо...
 l10n, или особенности локализации программного обеспечения, Александр Денисо... l10n, или особенности локализации программного обеспечения, Александр Денисо...
l10n, или особенности локализации программного обеспечения, Александр Денисо...
 
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
Основные понятия связанные с разработкой ПО: просто о сложном. Лаабе Дмитрий.
 
App present
App presentApp present
App present
 
DevOps для 1С
DevOps для 1СDevOps для 1С
DevOps для 1С
 
Py con 2010_django_project_dev_full_circle
Py con 2010_django_project_dev_full_circlePy con 2010_django_project_dev_full_circle
Py con 2010_django_project_dev_full_circle
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
Создай свое первое Android приложение.
Создай свое первое Android приложение. Создай свое первое Android приложение.
Создай свое первое Android приложение.
 
Роман рыбальченко - веб аналитика при посещаемости от 100 000 до 2 млн в сутки
Роман рыбальченко - веб аналитика при посещаемости от 100 000 до 2 млн в суткиРоман рыбальченко - веб аналитика при посещаемости от 100 000 до 2 млн в сутки
Роман рыбальченко - веб аналитика при посещаемости от 100 000 до 2 млн в сутки
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
Разработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервисаРазработка API для большого, нагруженного сервиса
Разработка API для большого, нагруженного сервиса
 
Abbyy ls docflow
Abbyy ls docflowAbbyy ls docflow
Abbyy ls docflow
 
С-Tutor Экспорт МИРО по ИКТ (40 млн. руб.)
С-Tutor Экспорт МИРО по ИКТ (40 млн. руб.)С-Tutor Экспорт МИРО по ИКТ (40 млн. руб.)
С-Tutor Экспорт МИРО по ИКТ (40 млн. руб.)
 

More from Andrey Sitnik

Ускорение frontend-разработки с помощью Haml, Sass, Compass
Ускорение frontend-разработки с помощью Haml, Sass, CompassУскорение frontend-разработки с помощью Haml, Sass, Compass
Ускорение frontend-разработки с помощью Haml, Sass, CompassAndrey Sitnik
 
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, JammitВёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, JammitAndrey Sitnik
 

More from Andrey Sitnik (6)

Ускорение frontend-разработки с помощью Haml, Sass, Compass
Ускорение frontend-разработки с помощью Haml, Sass, CompassУскорение frontend-разработки с помощью Haml, Sass, Compass
Ускорение frontend-разработки с помощью Haml, Sass, Compass
 
Evolu Lang
Evolu LangEvolu Lang
Evolu Lang
 
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, JammitВёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
Вёрстка в стиле Ruby: HAML, SASS, Compass, CoffeeScript, Jammit
 
Rails rumble
Rails rumbleRails rumble
Rails rumble
 
D²NA
D²NAD²NA
D²NA
 
Ruby
RubyRuby
Ruby
 

I18n ruby-приложений

  • 1. I18n ruby-приложенийI18n ruby-приложений Ситник Андрей Санкт-Петербург, апрель 2009
  • 2. Меня зовут Андрей Ситник andrey@sitnik.ru, sitnik.ru Разработчик R18n r18n.rubyforge.org
  • 3. О чём речь L10n, localization, локализация перевод приложения на другой язык и адаптация к другой культуре (формат даты, чисел и т. д.) I18n, internationalization, интернационализция техническая возможность локализовать программу
  • 4. Из чего состоит ● Перевод данных ● Перевод интерфейса ● Локализация дат и чисел США: Россия: Индия: 1,000,000.00 1 000 000,00 10,00,000,00 библиотека приложение
  • 5. Зачем ● MVCT: вынос всего текста в отдельный файл ● Расширение аудитории ● Родной язык всё равно комфортнее ● Наш ответ глобализации
  • 6. Как. Rails. 1 ● Поставить gem russian ● Выставить язык пользователя: class ApplicationController < … … before_filter :set_locale def set_locale I18n.locale = params[:locale] end end ● См. ещё полезные gem’ы: rails-i18n.org/wiki
  • 7. Как. Rails. 2 config/locales/ru.yml ru: post: name: Заметка {{name}} comments: one: Один комментарий few: {{count}} комментария other: {{count}} комментариев app/views/post/index.html.erb <%= t 'post.name', :name => @name %> <%= t 'post.comments', :count => @count %> <%= l @created_at %>
  • 8. Как. Ruby. 1 Установите gem Sinatra: Merb: Desktop: Я сам: sinatra-r18n merb_r18n r18n-desktop r18n-core Всё сразу работает «из коробки». Нужно особая настройка — gem r18n-core.
  • 9. Как. Ruby. 2 i18n/ru.yml post: name: Заметка %1 comments: !!pl 1: Один комментарий 2: %1 комментария n: %1 комментариев views/post.html.erb <%= i18n.post.name(@name) %> <%= i18n.post.comments(@count) %> <%= i18n.l @created_at %>
  • 10. Советы разработчикам ● Динамическая вёрстка. Текст на разных языках имеет разную длину. ● Язык в адресе страницы: /ru/post/super ● Список других языков в виде ссылок, а не выпадающего списка
  • 11. Советы i18n-гикам ● Для иврита и арабского желательно менять направление индикаторов и положение меню ● Используйте веб-сервисы для перевода 99translations.com github.com/newsdesk/translate launchpad.net
  • 12. Главное I18n — это просто, весело и полезно.