locale.getDisplayName() 有时有效,有时无效
locale.getDisplayName() sometimes works, sometimes does not
我正在编写一个 android 应用程序来帮助人们练习外语。有两个按钮允许用户在语言之间进行选择。然后按钮的文本相应地改变。此外,所选语言会保存并在应用下次启动时重新加载。
我使用以下方法来做到这一点:
public static Locale[] language = new Locale[2];
public static TextToSpeech[] tts = new TextToSpeech[2];
private Button[] langButton = new Button[2];
public void setLanguageTtsButton(int listNum) {
tts[listNum].setLanguage(language[listNum]);
String s = language[listNum].getDisplayName().replace("(", "\n(");
langButton[listNum].setText(s);
}
并且整个应用程序中没有其他代码设置这些按钮的文本。
问题是有时能正常显示按钮,例如英文(美国),中文(简体中文,中国)等。但是,有时它只显示原始语言环境代码,例如en_us、zh_ch_#hans 等
有谁知道为什么?我怎样才能确保它更一致地显示正确的单词?
这取决于您如何构建 Locale
对象
以下是示例及其输出
Log.d("TAG", new Locale("ENGLISH", "US").getDisplayName()); // english (United States)
Log.d("TAG", new Locale("ENGLISH").getDisplayName()); // english
Log.d("TAG", new Locale("En").getDisplayName()); // English
Log.d("TAG", new Locale("ENGLISH", "CA").getDisplayName()); // english (Canada)
Log.d("TAG", new Locale("ENGLISH", "AU").getDisplayName()); // english (Australia)
Log.d("TAG", new Locale("ENGLISH", "EG").getDisplayName()); // english (Egypt)
Log.d("TAG", new Locale("ENGLISH", "CA", "Canadian").getDisplayName()); // english (Canada,CANADIAN)
Log.d("TAG", new Locale("en_us").getDisplayName()); // en_us
我正在编写一个 android 应用程序来帮助人们练习外语。有两个按钮允许用户在语言之间进行选择。然后按钮的文本相应地改变。此外,所选语言会保存并在应用下次启动时重新加载。
我使用以下方法来做到这一点:
public static Locale[] language = new Locale[2];
public static TextToSpeech[] tts = new TextToSpeech[2];
private Button[] langButton = new Button[2];
public void setLanguageTtsButton(int listNum) {
tts[listNum].setLanguage(language[listNum]);
String s = language[listNum].getDisplayName().replace("(", "\n(");
langButton[listNum].setText(s);
}
并且整个应用程序中没有其他代码设置这些按钮的文本。
问题是有时能正常显示按钮,例如英文(美国),中文(简体中文,中国)等。但是,有时它只显示原始语言环境代码,例如en_us、zh_ch_#hans 等
有谁知道为什么?我怎样才能确保它更一致地显示正确的单词?
这取决于您如何构建 Locale
对象
以下是示例及其输出
Log.d("TAG", new Locale("ENGLISH", "US").getDisplayName()); // english (United States)
Log.d("TAG", new Locale("ENGLISH").getDisplayName()); // english
Log.d("TAG", new Locale("En").getDisplayName()); // English
Log.d("TAG", new Locale("ENGLISH", "CA").getDisplayName()); // english (Canada)
Log.d("TAG", new Locale("ENGLISH", "AU").getDisplayName()); // english (Australia)
Log.d("TAG", new Locale("ENGLISH", "EG").getDisplayName()); // english (Egypt)
Log.d("TAG", new Locale("ENGLISH", "CA", "Canadian").getDisplayName()); // english (Canada,CANADIAN)
Log.d("TAG", new Locale("en_us").getDisplayName()); // en_us