如何为ENUM设置文本并支持多语言?

时间:2017-03-01 12:32:45

标签: android string enums

我有一个enum类用于两种类型的数学值,即AMOUNTPERCENTAGE

这两个是单选按钮,取决于用户选择的单选按钮。相应地设置文本。

直到现在,我的应用只有一种语言,但现在我已经多语言了。如何根据语言设置ENUM的文本?

这是我的enum

public enum DiscountTypeEnum {
    AMOUNT,
    PERCENTAGE;
    private DiscountTypeEnum() {
    }
}

我想根据用户选择的discountType来设置字符串,

for (DiscountTypeEnum discountType : DiscountTypeEnum.values()) {
     RadioButton discountTypeButton = new RadioButton(getContext());
     // below is where I need to set the text from string resource file
     // setText(R.string.AMOUNT) or setText(R.string.PERCENTAGE)
     discountTypeButton.setText(discountType.name());
     discountTypes.addView(discountTypeButton);
}

2 个答案:

答案 0 :(得分:0)

您可以将字符串资源与区域设置限定符一起使用,而不是直接使用枚举的名称。您可以将不同语言的字符串存储在每个区域设置的单独strings.xml个文件中,然后使用

读取资源
getResources().getString(R.string.my_string);

在运行时,它将为您提供设备当前语言的资源(如果可用)。

官方文档中的更多信息:https://developer.android.com/training/basics/supporting-devices/languages.html

答案 1 :(得分:0)

enum FRUITS {
    APPLE(R.string.apple),
    BANANA(R.string.banana);

    private @StringRes
    int label;

    FRUITS(@StringRes int label) { this.label = label; }

    @Override
    public String toString() {
        return MyApplication.getApplicationContext().getString(label);
    }
}

对于非android:https://softwareengineering.stackexchange.com/questions/256806/best-approach-for-multilingual-java-enum