1

的定位要我做翻譯成多國語言待辦事項應用程序。Android的 - 枚舉

我有一個包含3個級別(低,中,高)的枚舉和我還用它來引用優先標籤。這是它的外觀:

public enum Priority { 
    LOW(R.drawable.priority_low), 
    MEDIUM(R.drawable.priority_medium), 
    HIGH(R.drawable.priority_high); 

    private int drawableResource; 

    Priority(int drawableResource) { 
     this.drawableResource = drawableResource; 
    } 

    public int getDrawableResource() { 
     return drawableResource; 
    } 
} 

這是我創造了一些示例待辦事項:

private TodoItemDao() { 
    todoItems.add(new TodoItem("pet shop", new Date(), "buy a nice zombie pig", Priority.HIGH)); 
    todoItems.add(new TodoItem("barber", new Date(), "cut lion's hair", Priority.MEDIUM)); 
    todoItems.add(new TodoItem("mine", new Date(), "we need redstones", Priority.LOW)); 
} 

所以在這個場景中,我怎麼翻譯的待辦事項優先級,以不同的語言?我通常不喜歡它

titleEditText = (EditText) findViewById(R.id.et_title); 

...但不知道如何枚舉,以及如何設置在項目創建優先級內做到這一點。任何想法?

編輯:

我affraid我不太清楚。使用此行:

titleEditText = (EditText) findViewById(R.id.et_title); 

我想表明我已經使用strings.xml。我只是不知道如何使用它與枚舉。

+0

這可能對您有用:http://stackoverflow.com/questions/20287009/how-to-convert-hardcoded-enum-to-different-language –

回答

1

如前所述,使用的strings.xml並添加翻譯。不管你有多少種語言,都要這樣做。

一個建議是,你將以下添加到您的枚舉或其他地方,你可以訪問它:

public String getPriorityName(Priority ref, Context c){ 
    switch(ref){ 
     case Priority.LOW: 
      return c.getString(R.string.priorityLowDescription); 
      break; 

     (Showing only one here, but you can see the pattern) 
    } 
} 

這需要在你的優先實例,並基於從strings.xml返回適當的字符串。這意味着它將獲得您設備設置的語言(或用戶手動設置,取決於設置)的字符串

+0

我感謝你們兩位,你們幫了我很多。 – hellsing

0

不要從一個枚舉直接做到這一點。照常將翻譯放入您的strings.xml文件中。編寫一個函數int mapToStringResource(Priority)從優先級轉換爲正確的ID。呼叫setText(mapToStringResource(priority))設置文本。