当前位置: 首页 > 面试题库 >

使Enum.toString()本地化

孟嘉歆
2023-03-14
问题内容

我正在开发一个Android应用程序,我想知道是否可以设置Enum.toString()多语言。

我将Enum在a 上使用它,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在助手类中定义了它。

这就是我在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.propertiesmessages_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

你也可以打电话

ResourceBundle.getBundle(resourceBundlePath, myLocale);

但通常最好使用平台区域设置(请查看jvm参数-Duser.language,-Duser.country)

您可以为每个要用键转换的枚举使用一个ResourceBundle枚举元素名称,并在枚举的toString()实现中使用它:

@Override
public String toString() {
return resourceBudle.getString(super.toString());
}


 类似资料:
  • 对于此枚举,

  • 返回此枚举常量的名称,与在其枚举声明中声明的名称完全相同。大多数程序员应该使用toString方法而不是这个方法,因为toString方法可能返回一个用户更友好的名称。此方法主要是为在特定情况下使用而设计的,在特定情况下,正确与否取决于获得准确的名称,而准确的名称不会因发布而异。 特别是,即使文档中说更喜欢,Java自己的StandardLocation枚举使用了而我认为文档中的建议是相反的。 此

  • 本章介绍 gitbook 在本地机器上的使用。

  • 问题内容: 在阅读了文档之后,我不确定是否知道何时使用name()和何时使用toString()。 返回此枚举常量的名称,该名称与在其枚举声明中声明的完全相同。大多数程序员应该优先使用toString方法,因为toString方法可能返回更用户友好的名称。此方法主要设计用于在特殊情况下正确性取决于获得确切名称的特殊情况,具体名称在各个发行版本之间不会有所不同。 特别是,即使文档说偏爱使用Java,

  • 问题内容: 在软件包中,格式化变量时,输出将使用未导出的[]字符串片中定义的英文名称为几周和几个月。 如何使用其他语言(希望仍使用)对字符串进行本地化? 例: 输出: 2014年1月28日星期二 所需的输出: Tis 28 Januari 2014年 操场 问题答案: 正如您在时间包源代码中看到的那样,值是在源代码中硬编码的。因此,基本上,Go目前不支持i18n。i18n在Go路线图中,甚至在常见

  • 大多数 web 应用程序必须支持多种语言。例如:Youtube、 Wikipedia、 Facebook 网站都支持多语言。 当用户第一次访问网站时,根据用户浏览器(预先设置的地区)自动选择显示的语言。 如果自动选择的语言不是用户所期望的,用户可以设置他们的首选语言,用户的选择存储在客户端 cookie(或服务器端用户简介表(user profile table))。 一旦选择了语言,所有的文本都