Cómo crear enumeración de múltiples idiomas en Android?

CookieMonster:

Estoy usando esta enumeración:

public enum FruitType{
    APPLE("1", "Apple"),
    ORANGE("2", "Orange"),
    BANANA("3", "Banana"),
    UNKNOWN("0", "UNKNOWN");

    private static final Map<String, FruitType> lookup
            = new HashMap<String, FruitType>();

    static {
        for ( FruitType s : EnumSet.allOf(FruitType.class) )
            lookup.put(s.getCode(), s);
    }

    public static FruitType getById(String id) {
        for(FruitType e : values()) {
            if(e.Code.equals(id)) return e;
        }
        return UNKNOWN;
    }

    private String Code;
    private String Text;

    FruitType( String Code, String Text ) {
        this.Code = Code;
        this.Text = Text;
    }

    public final String getCode() {
        return Code;
    }

    public final String getText() {
        return Text;
    }
}

Estoy recibiendo un número (0-3) de un servidor, y quiero usar una cadena localizada por usar el método de la enumeración getText ().

textView.setText(FruitType.getById(data.getFruitType()).getText())

¿Cómo puedo utilizar recursos de cadena en el "texto" de la enumeración en lugar de texto estático?

MrHadiSatrio:

Android ya le ha proporcionado un enfoque bastante sólido para resolver i18n a través de su estructura de directorio de recursos.

En su caso, probablemente es mejor no tener FruitTypedirectamente relacionada con una cadena, sino más bien un identificador de res:

public enum FruitType {

    APPLE("1", R.string.apple),
    ORANGE("2", R.string.orange),
    BANANA("3", R.string.banana),
    UNKNOWN("0", R.string.unknown_fruit);

    ...
}

A continuación, puede definir un método de conveniencia para obtener el valor de la cadena real de estas enumeraciones, así:

public enum FruitType {

    ...

    public final String getText(Context context) {
       return context.getString(this.Text)
    }

    ...
}

Ahora tenemos esta configuración, simplemente proceda con la fresa habitual de declarar múltiples strings.xmlde acuerdo con la configuración regional de destino:

../src/main/res
├── values
│   └── strings.xml
├── values-in
│   └── strings.xml
├── values-th
│   └── strings.xml
└── values-vi
    └── strings.xml

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=332265&siteId=1
Recomendado
Clasificación