2017-11-19 3 views
0

Ich versuche, eine Nativescript/Angular-Anwendung mit Internationalisierung zu bauen. Ich recherchierte meine Optionen und fand heraus, dass ng2-translate zusammen mit nativescript-ng2-translate den Trick machen sollte, der das Laden von Übersetzungsdateien übernehmen sollte.Kann nicht ng2-translate zu spielen Ball in Nativescript/Angular Anwendung

Dies scheint jedoch nicht zu funktionieren. Ich habe ein Beispielprojekt erstellt, das die gleiche Grundstruktur wie mein eigenes Projekt hat. Es ist ein Moor-Standard-Nativescript/eckiges Projekt, das aus der Tab-Vorlage erstellt wurde.

Die Übersetzungsleitung macht nie etwas. Der direkte Aufruf des Übersetzungsdienstes liefert ebenfalls keine Ergebnisse. Was mache ich falsch?

-Code ist hier: https://github.com/JuergenSimon/translation-test

Antwort

1

Ich habe eine Menge von Kopf mit Hammer nativescript-NG2-Translate Plug sowie mit NGX-übersetzen, konnte jedoch nicht erhalten entweder von ihnen zu arbeiten. Die Verwendung von ng2-translate mit dem NativeScript http-Modul scheint die einzige Möglichkeit zu sein, die momentan funktioniert, zumindest für mich. Ich habe this genannt, damit es funktioniert. Hoffe es hilft dir!

0

Eigentlich habe ich es doch zum Funktionieren gebracht. Was ich vermisste war, eine Standardsprache in app.component.ts zu setzen. So schließlich, sieht es wie folgt aus:

app.module.ts:

import { NgModule, NgModuleFactoryLoader, NO_ERRORS_SCHEMA } from "@angular/core"; 
import { NativeScriptModule } from "nativescript-angular/nativescript.module"; 
import { NSModuleFactoryLoader } from "nativescript-angular/router"; 

import { AppRoutingModule } from "./app-routing.module"; 
import { AppComponent } from "./app.component"; 
import { TranslateModule, TranslateLoader, TranslateService } from "ng2-translate"; 
import { TNSTranslateLoader } from "nativescript-ng2-translate"; 

@NgModule({ 
    bootstrap: [ 
     AppComponent 
    ], 
    imports: [ 
     NativeScriptModule, 
     AppRoutingModule, 
     TranslateModule.forRoot({ 
      provide: TranslateLoader, 
      useFactory:() => new TNSTranslateLoader("/assets/i18n") 
     }) 
    ], 
    exports: [ 
     TranslateModule 
    ], 
    declarations: [ 
     AppComponent 
    ], 
    providers: [ 
     {provide: NgModuleFactoryLoader, useClass: NSModuleFactoryLoader}, 
     TranslateService 
    ], 
    schemas: [ 
     NO_ERRORS_SCHEMA 
    ] 
}) 
export class AppModule { 
} 

dann die TranslateModule importiert wieder in tabs.module.ts:

import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core"; 
import { NativeScriptModule } from "nativescript-angular/nativescript.module"; 

import { BrowseComponent } from "./browse/browse.component"; 
import { HomeComponent } from "./home/home.component"; 
import { SearchComponent } from "./search/search.component"; 
import { TabsRoutingModule } from "./tabs-routing.module"; 
import { TabsComponent } from "./tabs.component"; 
import { TranslateModule, TranslateLoader } from "ng2-translate"; 
import { TNSTranslateLoader } from "nativescript-ng2-translate"; 

@NgModule({ 
    imports: [ 
     NativeScriptModule, 
     TabsRoutingModule, 
     TranslateModule 
    ], 
    declarations: [ 
     TabsComponent, 
     HomeComponent, 
     BrowseComponent, 
     SearchComponent 
    ], 
    schemas: [ 
     NO_ERRORS_SCHEMA 
    ] 
}) 
export class TabsModule { 
} 

Und gesetzt die Standardsprache in tabs.component.ts:

import { Component, OnInit } from "@angular/core"; 
import { isAndroid } from "platform"; 
import { SelectedIndexChangedEventData, TabView, TabViewItem } from "tns-core-modules/ui/tab-view"; 
import { TranslateService } from "ng2-translate"; 

@Component({ 
    selector: "TabsComponent", 
    moduleId: module.id, 
    templateUrl: "./tabs.component.html", 
    styleUrls: ["./tabs.component.css"] 
}) 
export class TabsComponent implements OnInit { 
    private _title: string; 

    constructor(private translate: TranslateService) { 
     translate.setDefaultLang('en'); 
    } 
    ... 

Der letzte Schritt könnte möglicherweise auch in apps.component.ts getan worden sein. Danach funktionierte der Rohr- und Übersetzservice gut.