我有一个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解决方案解决这个问题?
答案 0 :(得分:0)
我一直在努力解决这个问题。
A)同事所做的只是翻译DOM上的所有字符串,并让服务获取这些元素的html内容,设置display none of ofcourse。
B)作为替代方案,你可以在你的DOM上有一个开关案例,用于所有可能的错误,并使用* ngIf进行相应的显示。
C)A和B的组合,您可以将其创建为单独的组件+服务。您可以在任何需要动态错误消息的地方使用它 - 这样您的编译视图就不会总是包含不必要的翻译。