webcamp2016:front-end_Виктор Турский_Теория и практика...

36

Upload: webcamp

Post on 15-Feb-2017

96 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений
Page 2: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Обо мне

1. Технический директор и сооснователь компании WebbyLab

2. 12 лет занимаюсь разработкой ПО3. Большинство моих проектов требовали

локализации4. Только реальный опыт и реальные

проекты в докладах

Page 3: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

I18N и L10N

● I18N

● L10N

Page 4: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

I18N и L10N

● Internationalization (I18N)

● Localization (L10N)

Page 5: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

I18N это просто… или нет?

Ключ => Значение (перевод)

Page 6: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Плохие варианты

● Числовые ключи

● Условные выражения

Page 7: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Строковые ключи

“REGISTRATION_FORM”

Вы не можете запустить поиск по “Registration form”

Вам нужно иметь отдельный перевод на английский язык.

Page 8: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Ключи в виде английских фраз

Преимущества:1. Ваш код читабельный, в отличии от числовых ключей.2. Вы можете искать по фразам с UI. В отлчии от строковых ключей.3. Не нужно иметь отдельный перевод для английского.4. Очень легко править оригинальные фразы. Просто редактируете исходники.

Page 9: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

В коде может выглядеть так

Page 10: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

You have %d new messages

Page 11: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

You have %d new messages

Page 12: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

You have %d new messages

Page 13: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

You have %d new messages

Page 14: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Языки разные

1 покемон

2,3,4 покемона

5-20 покемонов

...

Page 15: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

I18N это не просто!

● Как работать с множественным числом?● Как держать в соответствии перевод и

оригинальные фразы● Как работать с переводчиками● Как быть с контекстно-зависимыми

фразами● Различная длина фраз в разных языках● “You have 10 new messages for last 3 days”

Page 16: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений
Page 17: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Gettext

● Существует более 20 лет (первый релиз от Sun Microsystems 26 лет назад)

● Решает большинство вышеописанных проблем

● Является де-факто стандартом

Page 18: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

gettext

Page 19: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

ngettext

Page 20: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

ngettext

Page 21: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

xgettext

Page 22: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

xgettext

Page 23: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Что есть в gettext

Page 24: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Контекст использования слов

● Используйте наиболее полные и длинные фразы. (Не конкатенируйте переводы, переводите все целиком).

● Gettext имеет встроенную поддержку контекста, можно передать в качестве аргумента.

Page 25: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Полезности

Порядок следованя параметров. В разных языках может быть по разному.

Незначительное изменение оригинальной фразы (Fuzzy match)

Page 26: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений
Page 27: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

JavaScript and Gettext

● Библиотека Jed● Библиотека po2json● Использование Xgettext для JavaScript

исходников● Поддержка ES6● Import vs require● Алиасинг функций gettext

Page 28: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Алиасинг функций

Page 29: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

I18N в одностраничных приложениях

Загружайте локализацию отдельным запросом.

Не загружайте английские фразы

Рендеринг UI после загрузки словаря

Page 30: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

I18N и React

Альтернативные решения (react-intl)

Компоненты против функций

Инициализация (Синглтон)

Page 32: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

I18N и React: пример

Page 33: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

I18N для изоморфных приложений на ReactJS

Page 34: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

В теории нет разницы между теорией и практикой. А на практике есть.

https://github.com/WebbyLab/itsquiz-wall/

Page 35: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Живая демонстрация

Page 36: WebCamp2016:Front-End_Виктор Турский_Теория и практика локализации одностраничных JavaScript приложений

Viktor [email protected]

https://twitter.com/koorchikhttps://github.com/koorchik

WebbyLabhttp://webbylab.com