是否同时使用@ ngx-translate的TranslateService和TranslateHttpLoader?

时间:2019-04-04 10:22:59

标签: ruby-on-rails angularjs ngx-translate

我正在开发一个Web应用程序,该应用程序的前端是Angular,后端是Ruby on Rails。 该应用程序使用一些静态数据,这些数据是从客户端的json文件加载的,并由@ ngx-translate / core的TranslateService进行翻译。

事实是我必须扩展数据库,我设法通过在服务器端存储新条目来做到这一点。

具体来说,有些条目的翻译是在客户端,而其他条目的翻译是在服务器。

除了TranslateService之外,我还可以使用TranslateHttpLoader与存储在服务器端的新翻译进行相同的工作吗?我的意思是,即使每个条目的来源(客户端或服务器端)都是随机的,我也可以自动获得翻译吗?还是有另一种解决方案并不意味着要改变一切?

当前,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视图中使用转换管道。

谢谢您的时间。

0 个答案:

没有答案