Я пытаюсь использовать 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
, но все равно не показывает перевод на немецкий язык.
отладочный вывод