Android Wear系统仅支持少数几种语言。有没有办法,如何强制资源管理器使用语言资源,我在手机中设置但Android Wear系统不支持它们?
示例
在我的Android Wear应用中,我希望支持三种语言。英语,gernam和捷克语。在我的Android Wear应用程序中,我将这些目录包含在字符串文件中: values , values-de , values-cs 。
如果我使用手机语言设置为德语,我的Android Wear应用程序正确使用德语字符串。但如果我在手机中设置捷克语,Android Wear应用程序会使用默认值(来自目录: values )字符串。
有什么办法,当我的手机有捷克语但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);
其中 lang 是ISO639-1代码,而 myLocale 是Locale类型的活动属性。
答案 0 :(得分:0)
如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 post和list of Android Supported Language and Locales中所示。