我正在开发一个Android应用程序,我想知道是否可以设置Enum.toString()多语言。
Enum.toString()
我将Enum在a 上使用它,Spinner并且我想使用多语言文本。
Enum
Spinner
public class Types { public enum Stature { tall (0, "tall"), average(1, "average"), small(2, "small"); private final int stature; private final String statureString; Stature(int anStature, String anStatureString) { stature = anStature; statureString = anStatureString; } public int getValue() { return stature; } @Override public String toString() { return statureString; } } }
我不知道如何Context.getString()在枚举中使用,并且我已经硬编码“高”,“平均”和“小”来测试它。我已经enum在助手类中定义了它。
Context.getString()
enum
这就是我在enum上使用的方式Spinner:
mSpinStature.setAdapter(new ArrayAdapter<Stature>(mActivity, android.R.layout.simple_dropdown_item_1line, Stature.values()));
你知道我该怎么办吗?
假设此资源路径
String resourceBundlePath = "my.package.bundles.messages"
在包装中,my.package.bundles您可能有messages.properties,messages_en_US.properties等等。
my.package.bundles
messages.properties
messages_en_US.properties
然后,使用
ResourceBundle resourceBundle = ResourceBundle.getBundle(resourceBundlePath); String messageKey = "myFirstMessage"; String message = resourceBundle.getMessage(messageKey);
message将包含在上messageKey定义的属性的值messages.properties。如果当前的语言环境实际上是en_US您将从中获取值messages_en_US.properties。如果当前语言环境是您没有属性文件,则该值将来自默认值messages.properties
message
messageKey
en_US
你也可以打电话
ResourceBundle.getBundle(resourceBundlePath, myLocale);
但通常最好使用平台区域设置(请查看jvm参数-Duser.language,-Duser.country)
您可以为每个要用键转换的枚举使用一个ResourceBundle枚举元素名称,并在枚举的toString()实现中使用它:
@Override public String toString() { return resourceBudle.getString(super.toString()); }