如何将字符串转换为json键和子键?

时间:2017-01-19 14:24:14

标签: json angular

我在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']

每个字符串可能会有所不同,因为我可能想要制作几个子键。 不确定这是否是最佳方式,但我希望得到一些关于最佳方法的建议。

1 个答案:

答案 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;
}