i18n в React с файлами.properties
Я посреди (большого) приложения переписываю в Reactjs-redux и интернализация - следующая проблема.
Я просматривал некоторые доступные в настоящее время библиотеки ( redux-реагировать-i18n, 18n-реагировать), но ни одна из них не подходит.
Зачем? Потому что мои локализованные строки хранятся в отдельном .properties
файлы, и это не может быть изменено. Но есть возможность генерировать любой формат из этого во время компиляции
Пример en_US.properties:
- key1 = это постоянная строка
- key2= Это строка с {параметром}
- ....
и аналогично с файлом de_de.properties и т. д.
Кроме того, язык может быть изменен только при обновлении страницы, так что это делает его немного проще
У меня вопрос, как подойти к этой проблеме. Мой первый наивный подход заключается в создании некоторого статического константы js-объекта, доступного в глобальном масштабе приложения, но я чувствую, что он противоречит лучшим практикам javascript и не знает, как обращаться с параметризованными строками
Поскольку я довольно новичок в javascript, я хотел бы услышать любые идеи
1 ответ
На тот случай, если у кого-то возникла такая же проблема, я написал скрипт, преобразующий файлы.properties в файлы json.
Затем в коде React я создал компонент HOC, который получает ключи (или пространства имен зависит от того, как вы организовываете ваши файлы json) в качестве параметра и выбирает значения с сервера. Эти ключи обычно предназначены для всей страницы, но иногда также для отдельного компонента, если это имеет смысл. Все, что требуется это еще один HTTP-запрос, вы также можете кэшировать результат
Хоп это помогает