我正在尝试使用JHipster生成的Angular应用程序中的i18n使用gettext po文件,但是我无法使其工作。由于它已经使用了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密钥提取到Pot模板文件中可以正常工作。在模板之外,我创建了一个德语翻译文件,并将其放在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
,但仍然没有显示德语翻译。