我在Angular 2中使用自定义翻译器将文本翻译成其他语言。现在,翻译人员接受一个字符串作为查找翻译的密钥(使用点子):
let key = 'hello world'
export const LANG_EN_TRANS = {
'hello world': 'hello world'
}
public translate(key: string): string {
return some_translate_function[selected_language][key];
}
问题是我想在翻译文件中使用子键或多个子键,如下所示:
let key = 'home_page.hello world'
export const LANG_EN_TRANS = {
'home_page': {
'hello world': 'hello world'
},
'some_other_page': {
'hello world': 'hello world 2'
},
}
public translate(key: string): string {
return some_translate_function[selected_language][key][subkey];
}
所以我认为我需要转换字符串:
'home_page.hello world'
类似于:
['home_page']['hello_world']
每个字符串可能会有所不同,因为我可能想要制作几个子键。 不确定这是否是最佳方式,但我希望得到一些关于最佳方法的建议。
答案 0 :(得分:1)
所以在Rob的评论之后我发现了一个有效的解决方案,谢谢;
let key = 'home_page.hello world'
export const LANG_EN_TRANS = {
'home_page': {
'hello world': 'hello world'
},
'some_other_page': {
'hello world': 'hello world 2'
},
}
public translate(key: string): string {
return translate_function[selected_language][key];
}
private translate_function(key: string): string {
let keys: string[] = key.split('.');
translation = som_json_file_with_translations;
for (let key of keys){
translation = translation[key];
}
}
return translation;
}