2017-10-10 10 views
0

Je veux traduire mon texte statique dans mon application. la sortie après l'exécution de l'application est dans mon exemple TEST. comme le nom de ma variable. Je pense que le problème est l'URL. Seule l'URL complète comme cet exemple fonctionne, et je ne sais pas pourquoi.ngx-traduire ne trouve pas l'URL

J'ai utilisé NGX-translate dans mon application angulaire sur asp.core 2.

Je mets ma la fonction createTranslateLoader dans mes app.module.shared.ts. Il est chargé par app.module.browser.ts et app.module.server.ts.

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

et

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

Ma langue par défaut est l'allemand 'de'. J'ai mis mon de.json dans wwwroot/i18n/de.json.

Enfin pas modifier mon 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'); 
     } 

} 

et mon app.component.html

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

Mon de.json ressemble

{ 
    "TEST": "Deutscher Test" 
} 

Répondre

0

Déménagement dossier i18n aux actifs pourrait résoudre votre problème. Et puis aussi createTranslateLoader Sa modification:

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

Je l'ai essayé. Maintenant, je reçois une exception: Les URL demandées via Http sur le serveur doivent être absolues. URL: ./assets/i18n/de.json. Le fullpath du wwwroot est/assets/i18n/de.json – Taladan

+0

Essayez de factoriser et utiliser HttpClient au lieu de Http comme ceci: 'HttpLoaderFactory (http: HttpClient)' et puis aussi dans votre chargeur: '{.. ., deps: [HttpClient]} ' fourni avec les instructions d'importation suivantes dans app.module: ' import {HttpClientModule, HttpClient} à partir de '@ angular/common/http'; ' – Andresson

0

Après fonctionne très bien pour moi avec ASPNET.Core et NGX-translate

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

Mes fichiers de ressources sont dans le wwwroot/i18n/Le même dossier que le vôtre.

+0

Si cela ne fonctionne pas, pouvez-vous voir ce que est l'URL de ressource demandée dans l'onglet réseau? –