2017-10-10 40 views
0

我想在我的應用程序中翻譯我的靜態文本。運行應用程序後的輸出在我的示例TEST中。像我的變量的名稱。我認爲,問題是網址。只有像這個例子完整的網址,我不知道爲什麼。ngx-translate找不到url

我曾經在我的角度應用NGX-翻譯上asp.core 2.

我把我的createTranslateLoader功能在我app.module.shared.ts。它由app.module.browser.ts和app.module.server.ts加載。

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

export function createTranslateLoader(http: Http) { 
    console.log(http); 
    return new TranslateHttpLoader(http, 'http://localhost:56601/i18n/', '.json'); 
} 

我的默認語言是德語 '德'。我把我的de.json放在wwwroot/i18n/de.json中。

最後一步修改我app.component.ts

export class AppComponent { 
     constructor(private translate: TranslateService 
) { 
      translate.addLangs(['en', 'de']); 
      translate.setDefaultLang('de'); 
      translate.use('de'); 
      //let browserlang = translate.getBrowserLang(); 
      //translate.use(browserlang.match(/en|de/) ? browserlang : 'de'); 
     } 

} 

和我app.component.html

<p style="color:wheat">{{ 'TEST' | translate }}</p> 

我de.json看起來像

{ 
    "TEST": "Deutscher Test" 
} 

回答

0

移動i18n文件夾到資產可能會解決您的問題。 然後還modifiying createTranslateLoader:

export function HttpLoaderFactory(http: Http) { 
    return new TranslateHttpLoader(http, './assets/i18n/', '.json'); 
} 
+0

我試過了。現在我收到一個異常: 通過服務器上的Http請求的URL必須是絕對的。 URL:./assets/i18n/de.json。的的FULLPATH是wwwroot文件/資產/國際化/ de.json – Taladan

+0

嘗試重構和使用的HttpClient而不是HTTP,像這樣: 'HttpLoaderFactory(HTTP:HttpClient的)' ,然後也爲您的裝載機:'{.. 。,deps:[HttpClient]}' 在app.module中提供以下導入語句: '從'@ angular/common/http'導入{HttpClientModule,HttpClient};' – Andresson

0

以下是工作的罰款,我ASPNET.Core和NGX-翻譯

export function translateLoaderFactory(http: Http) { 
    return new TranslateStaticLoader(http, './i18n/', '.json'); 
} 

我的資源文件wwwroot文件/ i18n中/文件夾內的和你一樣。

+0

如果這不起作用,您能看到什麼網絡標籤中的請求的資源網址? –