Android - 枚举的本地化

标签 android enums localization internationalization translation

我必须将待办事项应用翻译成多种语言。

我有一个包含 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));
}

那么在这个场景中,我如何将todo优先级翻译成不同的语言呢?我通常这样做

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

...但不知道如何在枚举中执行此操作以及如何在项目创建时设置优先级。有什么想法吗?

编辑:

恐怕我还不够清楚。用这一行:

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

我想表明我已经在使用 strings.xml。我只是不知道如何将它与枚举一起使用。

最佳答案

不要直接从枚举中进行。像往常一样将翻译放在 strings.xml 文件中。编写一个函数 int mapToStringResource(Priority) 将 Priority 转换为正确的 id。调用 setText(mapToStringResource(priority)) 设置文本。

关于Android - 枚举的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43399277/

相关文章:

python - 生成本地化文件的最简单方法

android - 如何在android中的 map 上添加动画图钉?

swift - 您如何反射(reflect) Codable/Codable Keys 协议(protocol)的设计?

delphi - 配置不考虑的区域设置

c# - ResourceManager 没有选择正确的 resx 文件

java - 使用通过反射获得的枚举常量

Android - 在测试我的应用程序时如何模拟缺少相机?

android - 如何在我的 Android 应用程序中录制视频?

java - 如何根据 PreferenceActivity 中的开关以编程方式将开关设置为未选中?

无法重新定义枚举类型定义