2012-10-30 63 views
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的列表視圖visualisated。這工作正常,但我不知道什麼是映射鍵值對與其翻譯的最佳方式。

我現在這個代碼在這裏:

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字段列表放在一起。但我認爲這個代碼不是很高效。我怎樣才能寫得更好?

回答

0

聽起來確實有點複雜。爲什麼不只是在一個關鍵/翻譯方式有所有可能的翻譯字典。
大多數翻譯框架也是這樣工作的。

+0

那麼R.string的東西通常是Android的。我只是不確定我的映射是否有意義... – rekire

+0

如果您在我們的翻譯資源文件中有一個關鍵字,那麼您可以一次性翻譯出您的翻譯版本嗎?例如。而不是使用meta_hair_color,像使用json一樣使用meta_hair-color?然後,您可以直接根據其名稱獲取翻譯字符串。沒有? – Remy

+0

在轉換變量中不允許使用減號,並且json來自* external * API。該字段數組的另一個原因是我不想使用JSON字符串的順序。 – rekire