Я создаю приложение, которое должно быть доступно на нескольких языках и локалях.
Мой вопрос не чисто технический, а скорее о архитектуре и шаблонах, которые люди фактически используют в производстве для решения этой проблемы. Я не мог найти ни одной "кулинарной книги" для этого, поэтому я обращаюсь к своему любимому сайту Q/A:)
Вот мои требования (они действительно "стандартные" ):
- Пользователь может выбрать язык (тривиальный)
- При изменении языка интерфейс должен автоматически переводиться на новый выбранный язык.
- Я не слишком беспокоюсь о форматировании чисел, дат и т.д. на данный момент, я хочу простое решение просто перевести строки
Вот возможные решения, которые я мог бы подумать:
Каждый компонент имеет дело с переводом в изоляции
Это означает, что каждый компонент имеет, например, набор файлов en.json, fr.json и т.д. вместе с переведенными строками. И вспомогательная функция, помогающая считывать значения от тех, которые зависят от выбранного языка.
- Pro: более уважительно из философии React, каждый компонент является "автономным".
- Минусы: вы не можете централизовать все переводы в файле (например, чтобы кто-то добавил новый язык)
- Минусы: вам все равно нужно передать текущий язык в качестве опоры, в каждом кровавом компоненте и их детях.
Каждый компонент получает переводы через реквизит
Таким образом, они не знают о текущем языке, они просто берут список строк как реквизиты, которые соответствуют текущему языку
- Pro: поскольку эти строки идут "сверху", они могут быть централизованы где-то
- Минусы: каждый компонент теперь привязан к системе перевода, вы не можете просто повторно использовать его, вам нужно указывать правильные строки каждый раз
Вы немного обходите реквизиты и, возможно, используете context, чтобы передать текущий язык
- Pro: он в основном прозрачный, не нужно передавать текущий язык и/или переводы через реквизиты все время
- Минусы: он выглядит громоздким для использования
Если у вас есть другая идея, пожалуйста, скажите!
Как вы это делаете?