在一个 Android 应用程序中,我试图在并发线程上同时使用不同的语言。一个线程是主 UI 线程,另一个是后台电子邮件进程,以各种语言向用户发送电子邮件。问题是当我在一个线程上更改语言时,它会更改另一个线程上的语言并且我得到“语言泄漏”。以下是用于更改语言以使用正确资源的方法:
公共静态资源 getResourcesByLocale(Locale locale, Context context) {
Resources res = context.getResources();
AssetManager am = res.getAssets();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration mainConfig = res.getConfiguration();
Configuration config = new Configuration();
config.setTo(mainConfig);
config.locale = locale;
return new Resources(am, dm, config);
}
此方法更改系统范围的配置。因此,任何其他使用该配置的进程都将继承由语言环境确定的资源。有没有办法为每个语言环境使用多种配置?除了每次显示文本时都调用此方法之外,我已经详尽地寻找了解决方案。我们想在欧洲和中东地区以大约 27 种语言使用这个应用程序。任何帮助将非常感激。