2016-12-09 88 views
0

我有一個Angular 2應用程序,它目前使用ng2-translate來管理GUI的多種語言。它與使用HTTP狀態代碼和自定義API代碼的組合進行響應的API進行通信。Angular 2 i18n:動態反饋

這樣我就可以,例如得到一個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

我一直在試圖弄清楚自己。

A)同事做了什麼只是翻譯DOM上的所有字符串,並有一個服務獲取這些元素的html內容,設置顯示無關緊要。 B)作爲替代方案,您可以在您的DOM上爲所有可能的錯誤提供一個開關盒,並使用* ngIf顯示相應內容。

C)A和B的組合,您可以將其創建爲單獨的組件+服務。你可以在任何需要動態錯誤消息的地方使用它 - 這樣你的編譯視圖不會總是包含不必要的翻譯。