2017-10-10 43 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

如果这不起作用,您能看到什么网络标签中的请求的资源网址? –