-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
i18n / Интернационализация #257
Comments
Что если хранить такие вещи в статической ветке Монги с разметкой согласно ISO 639 ? |
На самом деле, не нужно вообще так уж держаться за эти строки и пытаться что-то организовать у себя. |
Gettext представляется отличным выбором, и внедрить его технически совсем не трудно. Но потребуется кропотливая работа по аккуратной замене сообщений на соответствующие функции и подготовке языковых файлов. |
Лучше использовать этот пакет: https://www.npmjs.com/package/node-gettext |
я могу заняться если инструкцию дадите |
@anvaruk сначала нужно попробовать просто добиться в изолированной node js работы пакета с переводом и перевести 1-2 сообщения через создание файлов |
Доступность функции gettext в шаблонах можно обеспечить отсюда: Lines 92 to 98 in c47487f
|
На что нужно обратить внимание:
Чтобы с чего-то начать, шаги могут быть следующими:
|
Стандартный механизм использования gettext такой:
Тонкости:
Я могу взяться за перевод строк, но нужно определиться:
Последовательность действий:
|
По идее, все строки должны быть в js-коде.
Возможно, лучше просто собирать несколько версий фронта на разных языках (строки будут подставляться на этапе сборки). |
Конечно, на самом деле по-другому и не получится, шаблон компилируется на этапе сборки, языковые переменные в шаблоне будут преобразованы в текст. |
Предлагаю использовать этот фреймворк: https://github.com/i18next/i18next |
Идея хорошая, но как я понимаю он заточен под runtime, у нас строки еще и на стороне сервера есть и в клиенте в нескольких вариантах (js, шаблоны). Шаблон компилируется при сборке, там динамически строки менять не получится (если только их не будет подставлять JS библиотека при показе), в общем есть вопросы. Мне кажется встраивание языка на этапе компиляции и отдельные инстансы приложения для разных языков - более понятный вариант. Отдельно скажу, что я так же не уверен насчет po/mo файлов и gettext. Хороший пример реализации перевода в Docusaurus, там в качестве фреймворка используется formatjs, в качестве формата файлов перевода Chrome.i18n который имеет дополнительное поле description (помогает переводчику) и интеграцию с сервисом Crowdin обеспечивающим интерфейс для переводчика (бесплатно для open source проектов). Мне кажется нужно что-то похожее делать с удобным форматированием и на основе стандартов (у i18next как я понял свой стандарт форматирования для множественного числа, даты, вставки переменных и т.д., а formatjs использует ICU Message syntax поддерживаемый и другими фрейвоками, i18n-node в частности). В общем вопрос требует изучения. |
Согласен, использую formatjs c ICU/CLDR c 2014 года на других проектах. |
Это, наверное, тоже тема для раздела "дискуссии"? |
То, что делать это нужно, спора нет. Дискуссия тут может касаться лишь технических моментов реализации. |
Представляется логичным перенести языковую составляющую в мастер ветку, тем самым избавиться от необходимости синхронизировать ветку
en
с мастером.Зачатки такого подхода наблюдаются, например, здесь:
И здесь:
Как вариант, можно подставлять перевод на этапе сборки.
The text was updated successfully, but these errors were encountered: