Я конвертирую свое двуязычное веб-приложение в Angular. Это интерфейс, в котором пользователь выбирает контент, который он хочет просмотреть, и после выбора данные загружаются из REST API, который подключается к базе данных SQL. Способы его настройки заключаются в том, что вызовы базы данных возвращают содержимое на двух языках. Например, ответ JSON для TableComponent
будет таким:
GET /api/tables/1
{
"title": "Hello",
"titleFr": "Bonjour",
"time": "05:23 PM",
"timeFr": "17:23",
"content": "I am a grapefruit",
"contentFr": "Je suis un pamplemousse"
}
Разные компоненты получают разные значения, но всегда для обоих языков. Одновременно отображается только один язык, но вверху есть кнопка, позволяющая пользователю мгновенно переключать язык содержимого. Насколько я понимаю, для такого поведения я должен использовать ngx-translate
. Будучи совершенно новым в этом, я не совсем уверен, с чего начать. Я прочитал некоторые документы; это звучит так: мне либо нужно иметь контент и его перевод в файлах JSON, связанных с приложением, либо я делаю HTTP-вызовы в базу данных, которая возвращает переведенный контент.
Ни один из этих подходов не работает с моей текущей настройкой. Как уже упоминалось, все вызовы базы данных возвращают текст для обоих языков, а не разделяют их. Есть ли способ добиться локализации без необходимости их разделения?
Причина, по которой у меня это так, заключается в том, что в моей исходной реализации я загрузил все данные из базы данных и выбрал, какой HTML-шаблон отображать, в зависимости от выбранного языка. Например, с TableComponent
, если выбран английский язык, шаблон будет использовать title, time, content
, а если французский, то titleFr, timeFr, contentFr
. Чтобы все мои компоненты знали текущий язык и обнаруживали языковые изменения, было немного обременительно, поэтому я хочу воспользоваться преимуществами библиотек интернационализации.
Причина, по которой у меня это так, заключается в том, что мое веб-приложение предназначено для использования на обоих языках. Это означает, что пользователи будут переключаться туда и обратно очень регулярно. Таким образом, я хочу уменьшить HTTP-запросы. Когда они получат данные, у них будет контент для обоих языков. Это должно сделать переключение довольно быстрым.