Я решил использовать библиотеку ng2-translate для интернационализации приложений, так как она кажется лучше, чем реализация по умолчанию. Но столкнулся со следующими проблемами.
Вот мой код:
app.module.ts:
import { TranslateModule } from 'ng2-translate';
@NgModule({
imports: [
BrowserModule,
HttpModule,
TranslateModule.forRoot(),
appRoutes
],
app.component.ts
@Component({
selector: 'fiv-app',
templateUrl: './app.fivtemplate.html',
providers: [TranslateService]
})
.....
constructor(private _translateService: TranslateService) {
this.langs= ['fi','en'];
_translateService.addLangs(["en", "fi"]);
_translateService.setDefaultLang('fi');
let browserLang = _translateService.getBrowserLang();
_translateService.use('fi');
}
.....
app.component.html
<fiv-hello></fiv-hello>
<h2>{{ 'HOME.TITLE' | translate }}</h2>
и fivhello.component.ts
<h2>{{ 'HOME.TITLE' | translate }}</h2>
<div [translate]="'HOME.TITLE'"> Test</div>
- Я пытался использовать последнюю версию, 5.0.0, но получаю эту ошибку:
Uncaught TypeError: ctorParameters.map не является функцией в ReflectionCapabilities.parameters (http://localhost:4200/main.bundle.js:40295:47)
Я использую angular-cli , angular 2.0.0 и npm. Поэтому я переключился на 4.2.0, который, кажется, отлично работает с моей конфигурацией.
Текст из app.component.html переведен. Но тот, что из компонента fivhello, не локализован. Он просто отображает HOME.TITLE. При отладке я заметил, что функция get из TranslateService вызывается позже, после рендеринга, но я ожидал, что текст будет обновлен.
После изменения используемого языка дом также не обновляется. Компонент, который используется для смены языка, следующий:
@Component({ selector: 'language-option', templateUrl: './languageoption.component.html', styleUrls: ['./languageoption.component.css'], providers: [ TranslateService ] }) export class LanguageoptionComponent implements OnInit { langs : String []; constructor(private _translateService: TranslateService) { this.langs = ['fi', 'en']; } ngOnInit() { } public changeLocale = (locale) => { this._translateService.use(locale); } }
Кто-нибудь встречал такие же проблемы?
Спасибо.