@PHPjedi

Как грамотно реализовать мультиязычность React и Laravel?

Понятно, что к Laravel отправляются запросы. Отображает всё React.

Хочу реализовать для новых посетителей выборку языка или выбрать по умолчанию какой-то другой язык. В таком случае, нужно где-то хранить библиотеки слов. Вопрос - где лучше всего... В самой React или отправлять запрос к Laravel с библиотеками.

Для авторизованных пользователей, будет отправляться запрос к Laravel, что узнать, какой язык выбрал пользователь в настройках.

Пожалуйста, просветите и расскажите, как это реализовало в больших приложениях? Хочу сделать что-то классное и грамотно выполненное.

Спасибо заранее!
  • Вопрос задан
  • 235 просмотров
Решения вопроса 2
neuotq
@neuotq
прокрастинация
Главный спорный вопрос который вам стоит решить: где хранить статичный первод (надписи, что не меняются или меняются редко, например название кнопки - Отправить/Submit, те все то, что мы обычно не храним в БД и редко меняем).
Варианта два:
1. Использовать только реакт для этого, тогда берете пакет react-localization, там достаточно простые и понятные принципы, сложностей нет.
Преимущества: фронт полностью отдельно живёт и не зависит от бэкенда, нет дополнительных прослоек, нет привязки к определенному бэекенду и тп

2. Использовать возможности локализации Laravel. Но тут все таки все методы той или иной степени костыльности, либо как минимум добавляющий жесткую привязку фронтенд приложения к текущему стеку бэкенда
Преимущества: можно использовать разные пакеты для интеграции средств редактивования статической локализации в бэкенде.

Лично я всё же склоняюсь к первому варианту, так как люблю писать максимально (желательно полностью) назависимые фронтенд приложения.

Теперь вторая часть вопроса. Уже касаемо динамических переводов (это контент, комментарии, и тп, условно говоря всё что мы храним в бд, или храними информацию о них в бд).
Здесь я советую положится на Laravel, берёте пакет от spatie laravel-translatable, он позволяет быстро строить удобные интерфейсы редактирования/чтения переводов в БД, пишете простое API и ри инициализации react приложения получаете данные нужные вам локализации, либо даже отправляете все сразу (они хранятся в json поле mysql/ваше БД, даже доп преобразований особо не потребуется).
Но вариант с отправкой только нужной мне нравится больше, смена локали событие редкое, а вот экономия на размере переданных данных будет существенная.

Ну, а далее уже вешаешь всякие кеширования тп, чтобы всё летало и готово.
Ответ написан
Alex_Wells
@Alex_Wells
PHP/TS/Kotlin developer
Храните язык в локалсторадже и локализируйте на фронте, средствами фронта. Бэкэнд о локализации знать не должен.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы