0

我有一张表,里面有很多应该翻译的行。大多数值都是整数,因此不需要翻译这些值。

但是,我的数据来自 JSON 结构,其中数据以键值对的形式正常存储。例如:

{
  "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 的字段列表放在一起。但我认为这段代码的性能不是很好。我怎样才能写得更好?

4

1 回答 1

0

听起来确实有点复杂。为什么不只是以一种关键/翻译的方式拥有所有可能翻译的字典。
大多数翻译框架也是这样工作的。

于 2012-10-30T12:36:57.353 回答