Angular 2 i18n:动态反馈

时间:2016-12-09 12:29:25

标签: angular internationalization

我有一个Angular 2应用程序,目前使用ng2-translate来管理GUI的多种语言。它与使用HTTP状态代码和自定义API代码的组合响应请求的API进行通信。

所以我可以通过HTTP调用来获取它:

{
    success = true,
    code = 'A00001'
}

我有一份文件解释了" A00001"意思是,所以我知道要加载什么翻译。

现在,我想切换到使用Angular自己的i18n解决方案。主要是因为我想尽可能少地使用第三方库,但最重要的是因为它为翻译提供了更好的支持。

查看文档for i18n on angular.io,它看起来非常简单,但是唯一能阻止我的是我将如何处理来自API的响应。

由于在编译期间所有字符串都被替换/翻译,我如何检索已翻译的字符串并仅在我从API中检测到特定代码时才显示它?

这基本上就是我现在所做的:

switch(response.code) {
    case 'A00001':
        feedback = this._translateService.instant('translationKey');
    break;
}

然后我在GUI中呈现用户的反馈。

如何使用Angulars i18n解决方案解决这个问题?

1 个答案:

答案 0 :(得分:0)

我一直在努力解决这个问题。

A)同事所做的只是翻译DOM上的所有字符串,并让服务获取这些元素的html内容,设置display none of ofcourse。

B)作为替代方案,你可以在你的DOM上有一个开关案例,用于所有可能的错误,并使用* ngIf进行相应的显示。

C)A和B的组合,您可以将其创建为单独的组件+服务。您可以在任何需要动态错误消息的地方使用它 - 这样您的编译视图就不会总是包含不必要的翻译。