Android Wear - 支持不同语言

问题描述:

Android Wear系统仅支持几种语言。有没有办法,如何强制资源管理器使用我在手机中设置的语言资源,但它们不受Android Wear系统的支持?Android Wear - 支持不同语言

在我的Android Wear应用程式我想支持三种语言。英语,捷克语和捷克语。在我的Android Wear应用程序中,我有这些带有字符串文件的目录:,values -de,values-cs

如果我将手机语言设置为德语,则我的Android Wear应用程序正确使用德语字符串。但是,如果我在我的手机中设置了捷克语,Android Wear应用程序将使用默认值(来自目录)字符串。

有没有什么办法,当我的手机有捷克语言,但捷克不支持Android Wear系统时,如何才能实现资源管理器使用values-cs文件夹?

预先感谢您。

编辑

我确实很丑陋的解决方法。我在我的手机应用程序中与此磨损应用程序相关的服务。当开始我的穿戴应用程序,我只是问电话使用什么语言。在它向我发送回复之后,我只是尝试在我的Xamarin Android Wear应用中切换语言环境。

代码变化的区域设置:

myLocale = new Java.Util.Locale(lang); 
DisplayMetrics dm = Resources.DisplayMetrics; 
Configuration conf = Resources.Configuration; 
conf.Locale = myLocale; 
Resources.UpdateConfiguration(conf, dm); 

其中是ISO639-1代码和myLocale是类型区域设置的活动属性。

正如Localization Tips提到,

如果一个应用程序丢失甚至一个默认的资源,它不会被设置为不支持的语言环境的设备上运行。例如,res/values/strings.xml默认文件可能缺少应用程序需要的一个字符串:当应用程序运行在不支持的语言环境中并尝试加载res/values/strings.xml时,用户将看到一条错误消息和一个强制关闭按钮。

有关其他信息,您可能还想检查Language and Locale。它解释了Android版本低于7.0(API级别24)的资源分辨率策略。接下来,它介绍了Android 7.0中改进的资源分辨率策略。最后,它解释了如何利用扩展的区域设置来支持更多的多语言用户。

此外,由于给定的文件中提到,

当你的Java代码是指串,系统会从默认加载字符串(EN_US)资源文件,即使该应用程序有以下本地化西班牙语资源es_ES。这是因为当系统找不到完全匹配时,它会继续通过从国家/地区剥离国家/地区代码来查找资源。最后,如果找不到匹配项,则系统回退到缺省值en_US。

如上所述,使用不支持的区域设置是不可能的。因此,如果您仍然喜欢使用捷克语,则可能需要使用Android 5.0或更低版本,其中支持捷克语,如相关的SO postlist of Android Supported Language and Locales中所示。