ANDREW_R_NOTES Telegram 16
На днях выбирал решение для интернационализации интерфейса. Нагуглил три на первый взгляд приличные библиотеки: Polyglot от Airbnb, FormatJS от Yahoo и i18next.

Polyglot оказался крайне примитивен. Его возможности ограничиваются выводом локализованных фраз с плюрализацией, сделанной очень странно:

polyglot.extend({
"num_cars": "%{smart_count} car |||| %{smart_count} cars",
});

polyglot.t("num_cars", {smart_count: 0});
=> "0 cars"

polyglot.t("num_cars", {smart_count: 1});
=> "1 car"


Загадочные четыре чёрточки, как написано на Гитхабе, это «специфика Airbnb» (читай, «так сложилось исторически»).

FormatJS оказался крайне продвинутым и в то же время неудобным. Помимо локализации фраз умеет форматировать числа/даты, причём даты можно получать в относительном виде, например «5 минут назад». Работает на основе Internationalization API, Unicode CLDR и синтаксиса сообщений ICU. Не монолитен, он состоит из нескольких базовых библиотек и предоставляет библиотеки для интеграции с React, Ember, Handlebars и Dust. В плане возможностей круто, но API очень громоздкий и неюзабельный.

В итоге я остановился на i18next. Помимо базовых фич в ней поддерживаются автоматическое определение локали, загрузка и кеширование текстов, расширение возможностей через плагины. Фразы можно выделять в отдельные пространства имён, например по страницам или по фичам. API не вызывает вопросов и пользоваться им просто и приятно. Жаль, что вместо стандартов вроде синтаксиса сообщений ICU в i18next используются велосипеды.



tgoop.com/andrew_r_notes/16
Create:
Last Update:

На днях выбирал решение для интернационализации интерфейса. Нагуглил три на первый взгляд приличные библиотеки: Polyglot от Airbnb, FormatJS от Yahoo и i18next.

Polyglot оказался крайне примитивен. Его возможности ограничиваются выводом локализованных фраз с плюрализацией, сделанной очень странно:

polyglot.extend({
"num_cars": "%{smart_count} car |||| %{smart_count} cars",
});

polyglot.t("num_cars", {smart_count: 0});
=> "0 cars"

polyglot.t("num_cars", {smart_count: 1});
=> "1 car"


Загадочные четыре чёрточки, как написано на Гитхабе, это «специфика Airbnb» (читай, «так сложилось исторически»).

FormatJS оказался крайне продвинутым и в то же время неудобным. Помимо локализации фраз умеет форматировать числа/даты, причём даты можно получать в относительном виде, например «5 минут назад». Работает на основе Internationalization API, Unicode CLDR и синтаксиса сообщений ICU. Не монолитен, он состоит из нескольких базовых библиотек и предоставляет библиотеки для интеграции с React, Ember, Handlebars и Dust. В плане возможностей круто, но API очень громоздкий и неюзабельный.

В итоге я остановился на i18next. Помимо базовых фич в ней поддерживаются автоматическое определение локали, загрузка и кеширование текстов, расширение возможностей через плагины. Фразы можно выделять в отдельные пространства имён, например по страницам или по фичам. API не вызывает вопросов и пользоваться им просто и приятно. Жаль, что вместо стандартов вроде синтаксиса сообщений ICU в i18next используются велосипеды.

BY Заметки Андрея Романова


Share with your friend now:
tgoop.com/andrew_r_notes/16

View MORE
Open in Telegram


Telegram News

Date: |

To edit your name or bio, click the Menu icon and select “Manage Channel.” Concise How to create a business channel on Telegram? (Tutorial) "Doxxing content is forbidden on Telegram and our moderators routinely remove such content from around the world," said a spokesman for the messaging app, Remi Vaughn. Step-by-step tutorial on desktop:
from us


Telegram Заметки Андрея Романова
FROM American