ngx-translate со значениями в базе данных? - PullRequest
0 голосов
/ 22 октября 2018

Я создаю приложение angular2 с использованием модуля ngx-translate

служба использует документы .json, чтобы сначала найти переводы

... я заметил, что локальный маршрут для документов json"/ src / assets / i18n /", как показано на следующем рисунке:

enter image description here

, поэтому служба перевода использует язык по умолчанию для перевода различных текстов

вот так работает мой app.component.ts:

import { Component, OnInit, AfterContentInit } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';


@Component({
  selector: 'app-root',
  template: '<router-outlet></router-outlet>'
})
export class AppComponent implements OnInit {
  constructor(translate: TranslateService) {
    translate.addLangs(['es']);
    translate.setDefaultLang('es');

    const browserLang: string = translate.getBrowserLang();
    translate.use(browserLang.match(/en|es/) ? browserLang : 'es');
  }

  ngOnInit() {
  }

}

Так что сервис использует "en.json", "es.json" и "fr.json", чтобы соответствовать переводу.

Итак, мой вопрос

Как избежать документов "json" и сопоставить тексты с текстом из базы данных?

Таким образом, клиент никогда не должен был перестраиватьчтобы получать новые обновления переводов, просто добавляя в базу данных и автоматически переводя без перестройки

1 Ответ

0 голосов
/ 22 октября 2018

Ngx-translate имеет метод setTranslation, который принимает ключ Lang и объект JSON - вы можете загрузить свой объект JSON из любого места (например, из базы данных) и установить их с помощью этого

setTranslation(lang: string, translations: Object, shouldMerge: boolean = false): Manually sets an object of translations for a given language, set shouldMerge to true if you want to append the translations instead of replacing them

Документы: https://github.com/ngx-translate/core/blob/master/README.md#api

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...