PrimeNg + JHipster:在growl消息中插入jhitranslation

时间:2018-03-27 12:42:33

标签: angular typescript jhipster primeng

我是初学者,使用Angular 4.3和Prime NG开发使用JHipster构建的应用程序。

我的问题是我想在主要组件中使用我的翻译文件(json文件)。但只有字符串消息才有效......

我的代码如下所示:

import {Message} from 'primeng/components/common/api';

export class MyComp implements OnInit {
    msgs: Message[] = [];

    callError() {
        this.msgs = [];
        this.msgs.push({severity: 'error',
            summary: 'Error',
            detail: 'error.errorOccured' // doesn't find the translation file = displays 'error.errorOccured'
            detail: 'An error occured, please contact your administrator.' // works
        });
    }
}

在所有其他ts文件中,我调用这样的翻译文件:'error.errorOccured'

我看到我在消息中推送json,但我不知道如何插入json转换而不是字符串。

我的Json文件:

{
    "error": {
        "errorOccured": "An error occured, please contact your administrator."
    }
}

有没有人有想法?

2 个答案:

答案 0 :(得分:2)

无法从组件ts文件访问JSON密钥,它是用于HTML文件中的jhiTranslate指令

使用PrimeNG文件上传时遇到了类似的问题。翻译上传标签很难。我的脏解决方案是使用JhiLanguageService检查currentLang,然后返回硬编码的句子。在我的情况下,它只发生在一个地方,所以很容易修改。如果需要在多个位置应用它,可以将它们包装到Utility类中。

 constructor(private languageService: JhiLanguageService) {}

  private getLabel(english, spanish){
    if (this.languageService.currentLang === 'en') {
      return english;
    }
    return spanish;
  }

  onChooseLabel() {
    return this.getLabel('Choose', 'Escoger Archivo');
  }

答案 1 :(得分:1)

我可以使用带有咆哮声的jhipster国际化

首先在shared-libs.module.ts中添加所需的模块

import { GrowlModule } from 'primeng/primeng';
...
@NgModule({
    imports: [
        ...
        GrowlModule
    ],
    exports: [
        ...
        GrowlModule
    ]
})
export class AppSharedLibsModule {}

然后在组件中使用TranslationService加载消息

myEntity-update.component.ts

import { Message } from 'primeng/api';
import {TranslateService} from '@ngx-translate/core';
...
export class MyEntityUpdateComponent implements OnInit {
    ...
    msgs: Message[] = [];

    constructor(
        ...
        private translateService: TranslateService
    ) {}

    ngOnInit() {
        ...        this.translateService.get('myApp.myEntity.errors.summary').subscribe(summaryTranslated => {
            this.msgs.push({severity: 'success', summary: summaryTranslated, detail: 'Via MessageService'});
        });
    }
}

例如,假设您在i18n文件夹中的json语言文件中进行了翻译,

src / main / webapp / i18n / en / myEntity.json

{
    "myApp": {
        "myEntity" : {
            ...
            "errors": {
                "summary": "Something went wrong, try again later."
            },
            ...
        }
    }
}

另请参阅:primeng file upload angular i18n internationalization

jhipster版本:5.4.2,primeNG版本:6.1.4