2017-04-12 93 views
0

我遇到了一個問題,我開發了一個具有intertionalization的項目。我使用的是AngularJS 1.5,ES6和Webpack,我也對不同的文本使用了ng-translate。帶ES6和Webpack的AngularJS語言環境

我安裝了用於操作數字和日期的AngularJS-i18n和用npm更改網站語言時設置$ locale語言的AngularJS-dynamic-locale。

問題是,我不知道如何從我的config.js中的node_modules加載AngularJS語言環境。我這樣做:

export default function configApp(thmDynamicLocaleProvider) { 
    tmhDynamicLocaleProvider.localeLocationPattern('../../../node_modules/angular-i18n/angular-locale_{{locale}}.js'); 
} 
configApp.$inject = ['thmDynamicLocaleProvider']; 

我設置了良好的URL,但我不知道爲什麼,該應用程序返回404錯誤。我不知道我怎麼能加載這個在webpack ot其他...

回答

0

如果你使用webpack我建議你使用import()函數。它會將語言環境拆分爲將在運行時通過請求調用的塊。但是這種方法有一個限制。您無法實現必要塊的動態方式。因此,當您從客戶端的某個地方獲取有關當前區域設置的信息時,您可以通過switch運營商選擇要導入的內容。

例如,

function GetLocaleInfo(locale) { 
    switch(locale) { 
     case 'en': 
      import('angular-i18n/angular-locale_en.js').then((en) => { 
       setLocale(en); 
      }); 
     case 'ru': 
      import('angular-i18n/angular-locale_ru.js').then((ru) => { 
       setLocale(ru); 
      }); 
     } 
} 

我會付出多一點注意,在使用上異步方式import功能應該只有字符串內容。它不支持構建步驟webpack上的動態值原因檢查這些方法在構建目錄中構建適當的代碼塊。

這裏是,你會發現約code splitting on the webpack

更多信息