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))设置文本。