По какой-то причине приведенный ниже код не переводит мои строки, то есть отображает мой json KEY (например: MY_NEW_SITES). Надеюсь, вы увидите что-то неправильно на то, что я делаюJSON-ключ, отображаемый вместо строк перевода
Вот код
main.ts
// this import should be first in order to load some required settings (like globals and reflect-metadata)
import { nativeScriptBootstrap } from "nativescript-angular/application";
import { AppComponent } from "./app.component";
// angular
import { Component, provide } from '@angular/core';
import { HTTP_PROVIDERS } from '@angular/http';
// libs
import { TranslateLoader, TranslateService, TranslatePipe } from 'ng2-translate/ng2-translate';
import { TNSTranslateLoader } from 'nativescript-ng2-translate/nativescript-ng2-translate';
import { TNSFontIconService } from 'nativescript-ng2-fonticon';
nativeScriptBootstrap(AppComponent, [
HTTP_PROVIDERS,
provide(TranslateLoader, {
useFactory:() => {
// pass in the path to your locale files
return new TNSTranslateLoader('assets/i18n');
}
}),
TranslateService,
provide(TNSFontIconService, {
useFactory:() => {
return new TNSFontIconService({
'fa': 'font-awesome.css'
});
}
})
]);
site.ts
import { Component, OnInit, ViewChild } from "@angular/core";
import { TranslateService, TranslatePipe } from 'ng2-translate/ng2-translate';
import { TNSFontIconService, TNSFontIconPipe } from 'nativescript-ng2-fonticon';
import { TNSTranslateLoader } from 'nativescript-ng2-translate/nativescript-ng2-translate';
@Component({
templateUrl: 'pages/sites/sites.html',
pipes: [TranslatePipe, TNSFontIconPipe]
})
export class SitesPage {
public sites: ISiteInfo[];
constructor(
private fonticon: TNSFontIconService,
translate: TranslateService) {
this.sites = [];
}
}
sites.html
<ActionBar [title]="'MY_NEW_SITES' | translate">
<ActionItem (tap)="settings()">
<StackLayout>
<Label [text]="'fa-cog' | fonticon" class="fa"></Label>
</StackLayout>
</ActionItem>
<ActionItem (tap)="addSite()"
ios.position="right"
android.position="popactionBarup">
<StackLayout>
<Label [text]="'fa-plus' | fonticon" class="fa"></Label>
</StackLayout>
</ActionItem>
</ActionBar>
<StackLayout>
<Label [text]="'MY_NEW_SITES' | translate"></Label>
</StackLayout>
Под приложением/активами/I18n, у меня есть мои 2 JSON файлы, т.е. en.json и fr.json
например:
en.json
{
"MY_NEW_SITES": "My New Sites"
}
fr.json
{
"MY_NEW_SITES": "Mes nouveaux sites"
}
Привет Ник, спасибо, чтобы поставить меня на пути. Теперь проблема в том, что она ничего не показывает! В ActionBar [текст] отображается мое имя проекта, а метка [текст] пуста. Что это звучит для вас? Кстати [здесь] (https://github.com/NathanWalker/nativescript-ng2-translate) он показывает, что моя строка должна быть между одинарной кавычкой. – David
Нашел вопрос! Мне все равно нужно использовать одиночную кавычку И нужно, например, назначить язык в конструкторе. Таким образом, в конструкторе translate.use ('en') – David
Пример от NathanWlaker делает то же самое .. в основном это говорит .. если у вас есть значение перевода, загрузите его .. иначе загрузите строку по умолчанию «HOME» (e .. g в вашем случае «MY_NEW_SITES» будет отображаться, если вы не набрали переводную ценность для загрузки ..) –