背景
我为我的应用创建了两种翻译 - values-en
和values-fr
。我想让用户在UI中更改应用程序语言。因此,我使用Locale.getAvailableLocales();
方法创建并填充了具有系统可用语言环境的微调器:
Spinner languageSpinner = (Spinner)findViewById(R.id.spinnerLanguage);
Locale[] locales = Locale.getAvailableLocales();
String[] langs = new String[locales.length];
for (int i = 0 ; i < locales.length ; i++ ){
// display a more readable language name like "English (USA)"
langs[i] = locales[i].getDisplayName();
}
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,langs);
languageSpinner.setAdapter(adapter);
上面的代码将为我提供当前设备中的所有可用语言环境。由于这是一个很长的列表,可能会让我的用户感到困惑,我想显示我提供的翻译区域设置。
编辑:类似的问题是asked here,评论表明没有直接的方式。
虽然我可以向我的微调器提供硬编码数据,但这可能是让整个过程动态化的更好方法。
问题
有没有办法在运行时获得可用的翻译?
一个理想的方法示例是:getTranslationList();
最终会在资源中返回一系列可用的翻译语言,例如:{"en","fr"}
或{"values", "values-en", "values-fr"}
。