Используете TranslateService и TranslateHttpLoader из @ ngx-translate? - PullRequest
0 голосов
/ 04 апреля 2019

Я работаю над веб-приложением, созданным с Angular для внешнего интерфейса и Ruby on Rails для бэкэнда.Приложение использует некоторые статические данные, загруженные из файла json на стороне клиента и переведенные с TranslateService из @ ngx-translate / core.

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

В частности, некоторые записи переводятся на стороне клиента, а другие - на стороне сервера.

Могу ли я использовать TranslateHttpLoader в дополнение к TranslateService дляработать так же с новыми переводами, хранящимися на стороне сервера?Я имею в виду, что даже если источник записи (на стороне клиента или сервера) является случайным для каждого, могу ли я автоматически получить перевод?Или есть другое решение, которое не подразумевает изменения всего?

В настоящее время TranslateService используется следующим образом:

language.service.ts

@Injectable()
export class LanguagesService {
  selectedLanguage: string;

  constructor(private _translateService: TranslateService) { }

  /**
   * Initialize languages on the PIA tool
   */
  initLanguages() {
    this._translateService.addLangs(['en', 'cz', 'de', 'dk', 'el', 'es', 'et', 'fi', 'fr', 'hr', 'hu', 'it', 'lt', 'nl', 'no', 'pl', 'pt', 'ro']);
    this._translateService.setDefaultLang('fr');
  }

  /**
   * Get the current language or set it
   */
  getOrSetCurrentLanguage() {
    let language = localStorage.getItem('userLanguage');
    // If there is already a language choosen
    if (language && language.length > 0) {
      this._translateService.use(language);
    } else { // Set default language
      const browserLang = this._translateService.getBrowserLang();
      language = browserLang.match(/en|cz|de|dk|el|es|et|fi|fr|hr|hu|it|lt|nl|no|pl|pt|ro/) ? browserLang : 'fr';
      this._translateService.use(language);
    }
    this.selectedLanguage = language;
  }

  /**
   * Update the current language after choosing a new one
   * @param {string} selectedLanguage
   * @memberof HeaderComponent
   */
  updateCurrentLanguage(selectedLanguage: string) {
    localStorage.setItem('userLanguage', selectedLanguage);
    this._translateService.use(selectedLanguage);
    this.selectedLanguage = selectedLanguage;
  }
}

Тогдав представлениях используется труба.

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

Спасибо, что уделили время.

...