Невозможно использовать gettext i18n с ngx-translate-po-http-loader в проекте JHipster - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь использовать gettext po-файлы для i18n в нашем приложении Angular, сгенерированном с помощью JHipster, но я не могу заставить его работать.Поскольку он уже использует ngx-translate, я добавил в проект ngx-translate-extract и ngx-translate-po-http-loader .

В качестве примера у меня есть следующий HTML-код для кнопки выхода из системы:

<button mat-menu-item (click)="logout();" id="logout">
    <mat-icon>power_settings_new </mat-icon>
    <span>{{'Log out' | translate}}</span>
</button>

Извлечение ключа i18n в файл шаблона банка работает нормально.Из шаблона я создал файл немецкого перевода и поместил его под src/main/webapp/i18n/po/de.po

В моем app.module.ts (полный файл: https://pastebin.com/T4Bi11Vg), Я добавил следующий фрагмент

@NgModule({
  imports: [
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: createTranslateLoader,
                deps: [HttpClient]
            }
        })
 ]
 ...
 export function createTranslateLoader(http: HttpClient) {
     return new TranslatePoHttpLoader(http, 'src/main/webapp/i18n/po', '.po');
}

Кроме того, я удалил существующую папку de под src/main/webapp/i18n, чтобы гарантировать, что она не будет принимать старый перевод из файлов json.

Когда я отлаживаю сгенерированный language.helper.ts Я вижу, что он правильно зарегистрировал TranslatePoHttpLoader, но все равно не показывает перевод на немецкий язык.

отладочный вывод

...