В качестве локализации ExtJS приложений — зачастую используют override, или определение свойств на уровне Ext.define. Зачастую это не годное решение, так как требует от пользователя перезагрузки страницы. В данной статье я покажу пример «правильной» локализации с помощью i18next.js . C помощью данной библиотеки, мы сможем получить следующие плюсы:
- Поддержка momentjs для форматрирования дат
- Поддержка склонений
- Определение вводимого языка
- Возможность кеширования локализации в localstorage
- Переключение языка без перезагрузки страницы
Сам пример доступен в моем репозитории на github, Пример приложения доступен ниже. Переходим в настройки и меняем язык. Обратите внимание на наличие склонений, в зависимости от количества выделенных строк.
А что если необходимо перевести также внутренние названия элементов фреймворка? Например, при клике на колонку есть англ. названия типа Sort Descending
Тут только оверайды, я бы реализовывал и getter и setter для подобных сво-йств
А что если сделать: Ext.Loader.loadScript({url: ‘/ExtJS/7.6.0/classic/locale/overrides/ru/ext-locale-ru.js’});
Нужно только после этого добавить маленький хак, Сходу не смог придумать, например, заполняющий и сразу очищающий поле в форме. Работает без перезагрузки страницы.