如何翻译 angular 处的枚举 6
How to translate enums at angular 6
我正在尝试翻译 Angular 中的枚举,但问题是我不知道如何翻译它们。
我可以阅读它们,我可以在下拉列表中显示但不能翻译。
下面是我的代码
export enum test {
test1 = '1 - do something',
test2 = '2 - do anything',
}
我读的数据是这样的
public getEnum: any = {};
public ngOnInit(): void {
Object.values(test).map(a: string) => {
const id = a.substr(0, 5);
this.getEnum[id] = a;
}
在 html 我有这样的东西
[options]="getEnum"
翻译是这样的。
"dropdown": {
"doSomething": {
"test1": "1 - do something"
}
}
我建议采用一些不同的方法。不要翻译它:将枚举键保存到 translation.json 文件中,例如
export enum Test {
test1 = 'dropdown.doSomething.test1',
test2 = 'dropdown.doSomething.test2',
}
我认为枚举不依赖于当前语言,您可以通过以下方式轻松翻译枚举中的值:
const enTranslations = {
dropdown: {
doSomething: {
test1: "1 - do something"
}
}
};
const getTranslatedText = (tranlations, keys: string[]) => keys.reduce((acc, curr) => acc[curr], translations);
const key1 = Test.test1
const translatedEnText = getTranslatedText(enTranslations, key1.split('.'));
然后就可以显示translatedEnText
,或者传入函数调用。 translatedEnText === '1 - do something'
如果您想要使用不同语言的相同键的文本,只需使用其他翻译对象调用 getTranslatedText
,例如deTranslations
如果您想将枚举映射到具有相同键和翻译值的对象,请执行以下操作:
const testEng = Object.values(Test).reduce((acc, key) => ({ ...acc, [key]: getTranslatedText(enTranslations, key.split('.'))}), {})
reducde 将从 acc
中的 {}
开始,在每个迭代步骤中,它将添加到 key
键下 getTranslatedText(enTranslations, key.split('.'))
(作为值)的 acc 翻译文本。
我正在尝试翻译 Angular 中的枚举,但问题是我不知道如何翻译它们。 我可以阅读它们,我可以在下拉列表中显示但不能翻译。
下面是我的代码
export enum test {
test1 = '1 - do something',
test2 = '2 - do anything',
}
我读的数据是这样的
public getEnum: any = {};
public ngOnInit(): void {
Object.values(test).map(a: string) => {
const id = a.substr(0, 5);
this.getEnum[id] = a;
}
在 html 我有这样的东西
[options]="getEnum"
翻译是这样的。
"dropdown": {
"doSomething": {
"test1": "1 - do something"
}
}
我建议采用一些不同的方法。不要翻译它:将枚举键保存到 translation.json 文件中,例如
export enum Test {
test1 = 'dropdown.doSomething.test1',
test2 = 'dropdown.doSomething.test2',
}
我认为枚举不依赖于当前语言,您可以通过以下方式轻松翻译枚举中的值:
const enTranslations = {
dropdown: {
doSomething: {
test1: "1 - do something"
}
}
};
const getTranslatedText = (tranlations, keys: string[]) => keys.reduce((acc, curr) => acc[curr], translations);
const key1 = Test.test1
const translatedEnText = getTranslatedText(enTranslations, key1.split('.'));
然后就可以显示translatedEnText
,或者传入函数调用。 translatedEnText === '1 - do something'
如果您想要使用不同语言的相同键的文本,只需使用其他翻译对象调用 getTranslatedText
,例如deTranslations
如果您想将枚举映射到具有相同键和翻译值的对象,请执行以下操作:
const testEng = Object.values(Test).reduce((acc, key) => ({ ...acc, [key]: getTranslatedText(enTranslations, key.split('.'))}), {})
reducde 将从 acc
中的 {}
开始,在每个迭代步骤中,它将添加到 key
键下 getTranslatedText(enTranslations, key.split('.'))
(作为值)的 acc 翻译文本。