Всё таки, как работать с мультиязычностью?

Были уже вопросы на эту тему (в том числе и от меня), но хотелось бы всё-таки уяснить для себя окончательно и принять решение.
Имеем приложение на node.js. express, mongodb и angular
Для перевода статической информации (название пунктов меню, небольшого текста) всё понятно. Ставим angular-translate, подключаем сервис, вешаем директиву на переключение языков, кладём json файлы в папку и работает. Всё просто.

Что делать с контентом в базе (шаблоны форм, какой то динамический контент)? Допустим мне надо сделать шаблон формы на двух языках. Я делаю документ
_id,
              form_template:
                  ru  : { title: 'поле'},
                  en : {title: 'field'}
                    ...
,сохраняю в него всё, но как мне выводить? Да и может использовать другую схему документа?
Можно как то асинхронно загружать промис $scope.find = function () {} в зависимости от currentLanguage. Можно загружать всё и как то выводить только $scope.form = 'form_template'+$scope.currentLanguage и потом {{form}}
Кто что использует, поделитесь, пожалуйста, мнениями и соображениями
  • Вопрос задан
  • 343 просмотра
Пригласить эксперта
Ответы на вопрос 1
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Лучше все языковые версии хранить в одном месте, или все на диске или все в базе. Если уж нужно в двух и более местах, если эти шаблоны прямо уж так сильно меняются, то лучше базу принять за основное место и синхронизировать на диск при изменениях или по запросу. Вы же можете генерировать эти json файлы когда захотите. Как хранить в базе есть два варианта, или внутри одного документа/объекта много языковых версий или рядом, добавляя индексируемый ключ. Это зависит от того, какие данные и какие к ним типичные запросы приходят, если данных мало и запросы редкие, то разницы нет. Например, если там 10 форм и у каждой 5 языков, а формы меняются 1 раз в неделю, то удобнее хранить все языки в формах и при изменении перегенерировать JSON на диске. А если это user-generated контент, который нужно постоянно отдавать прямо из базы, то выносите идентификатор языка в ключ с индексом, так запросы будут быстрее. А при большой нагрузке лучше кешировать языковые версии прямо в оперативной памяти на сервере, чтобы быстрее отдавать и реже ходить к базе за ними.
Ответ написан
Ваш ответ на вопрос

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

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