2017-06-26 24 views
0

我的項目是使用Angular CLI設置的,因此它使用webpack構建,但webpack配置文件是隱藏的。未找到json語言文件ngx-translate angular-cli

我有兩個文件,nl.jsonfr.json,但得到既404,即使它看起來像它會正確的文件夾:http://localhost:4200/i18n/nl.json

他們有這樣的結構:

{ 
    "SEARCH_PAGE": { 
    "searchPerson": "Zoek een persoon", 
    "search": "Zoek" 
    } 
} 

app.module

... 
TranslateModule.forRoot({ 
     loader: { 
      provide: TranslateLoader, 
      useFactory: HttpLoaderFactory, 
      deps: [Http] 
     } 
    }), 
... 

export function HttpLoaderFactory(http: Http) { 
    return new TranslateHttpLoader(http, "/i18n/", ".json"); 
} 

我還包括這些在我的子模塊,其中I [儘量]使用翻譯,其差異爲.forChild而不是.forRoot

在我的組件:

constructor(translate: TranslateService) { 
    translate.addLangs(["nl", "fr"]); 
    translate.setDefaultLang('nl'); // this language will be used as a fallback when a translation isn't found in the current language 

    let browserLang: string = translate.getBrowserLang(); 
    translate.use(browserLang.match(/nl|fr/) ? browserLang : 'nl'); 
    } 

難道是一些不掛ngx-translate? 當我使用管道<h1>{{ 'SEARCH_PAGE.searchPerson' | translate}}</h1>時,屏幕上沒有任何東西,當我使用指令<h1 translate]="'SEARCH_PAGE.searchPerson'"></h1>時,我從字面上得到字符串。

回答

1

剛剛在#122找到答案。

angular-cli.json你必須包括i18nassets數組中:

"apps": [ 
    { 
    ... 
    "assets": [ 
    "assets", 
    "favicon.ico", 
    "i18n" 
    ], 
    ... 

這個工程即使你i18n目錄不是assets目錄中。

編輯:現在既管道和目錄工作。