Ниже представлен сервис, который я сделал, который должен переключаться между импортом en
или de
в зависимости от параметра lang
.
. Если я использую lang
, то просто печатаю.this.phrases
как {0: "d", 1: "e"}
вместо того, что должно быть.
Возможно ли это?
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
this.phrases = Object.assign({}, lang || {});
return this.phrases;
}
}
если бы эта служба была вызвана с использованием this.translateService.use('en')
, я ожидаю, что она вернетсодержимое из en
import.
если бы оно было this.translateService.use('de')
, то я бы ожидал, что будет возвращено de
содержимое.
.. / locale / de
export default {
"CONTINUE": "fortsetzen",
"HELLO": "Halo {{value}}",
"Email address": "E-Mail-Addresse"
}
Я смог заставить это работать, выполнив
import { Injectable } from '@angular/core';
import en from '../locale/en';
import de from '../locale/de';
@Injectable({
providedIn: 'root'
})
export class TranslateService {
phrases: any = {};
constructor() { }
use(lang: string) {
let locale;
switch(lang) {
case 'de':
locale = de;
break;
default:
locale = en;
break;
}
this.phrases = Object.assign({}, locale || {});
return this.phrases;
}
}
Но я надеялся, что был более чистый подход