使用翻译映射变量的最佳实践

时间:2012-10-30 08:33:09

标签: android performance optimization internationalization

我有一个包含大量行的表,应该进行翻译。大多数值都是整数,因此不需要翻译值。

但是我的数据来自JSON结构,其中数据在键值对中正常存储。 E.g:

{
  "age":24,
  "hair-color":"black",
  "weight":42,
  "height":123,
  // ...
}

到目前为止,我有一个strings.xml,如下所示:

<resources>
  <string name="meta_age">Alter</string>
  <string name="meta_hair_color">Haarfarbe</string>
  <string name="meta_weight">Gewicht</string>
  <string name="meta_height">Körpergröße</string>
  <!-- ... -->
</resources>

此数据在带有自定义ArrayAdapter的列表视图中可视化。这很好但是我不确定将键值对与其翻译映射的最佳方法是什么。

我现在有这个代码:

public static final int[] fields = new int[] {R.string.meta_age, R.string.meta_hair_color, R.string.meta_weight, R.string.meta_height, /* ... */;

为了构建UI,字符串需要映射到到目前为止这是用这个凌乱的代码完成的:

List<Integer> fieldIndex = new ArrayList<Integer>(fields.length);
for(int i : fields) {
    fieldIndex.add(i);
}
translation = new HashMap<String, Integer>();
translation.put("age", fieldIndex.indexOf(R.string.meta_age));
translation.put("hair-color", fieldIndex.indexOf(R.string.meta_hair_color));
translation.put("weight", fieldIndex.indexOf(R.string.meta_weight));
translation.put("height", fieldIndex.indexOf(R.string.meta_height));

下一步是我现在知道json字段的目标索引,并将它们与字符串id的字段列表放在一起。但我认为这段代码效率不高。我怎么能写得更好?

1 个答案:

答案 0 :(得分:0)

听起来确实有点复杂。为什么不在字典中包含所有可能的翻译键/翻译方式 大多数翻译框架都是这样的。