【问题标题】:Android Wear - Supporting different languagesAndroid Wear - 支持不同的语言
【发布时间】:2017-01-30 13:53:42
【问题描述】:

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

示例

在我的 Android Wear 应用中,我希望支持三种语言。英语、德语和捷克语。在我的 Android Wear 应用程序中,我有这些带有字符串文件的目录:valuesvalues-devalues-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 类型的活动属性。

【问题讨论】:

    标签: localization wear-os


    【解决方案1】:

    Localization Tips中所述,

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

    有关其他信息,您可能还需要查看Language and Locale。它解释了低于 7.0(API 级别 24)的 Android 版本中的资源解析策略。接下来介绍Android 7.0中改进的资源解析策略。最后,它解释了如何利用更多的语言环境来支持更多的多语言用户。

    此外,如给定文档中所述,

    当您的 Java 代码引用字符串时,系统会从默认 (en_US) 资源文件加载字符串,即使应用程序在 es_ES 下本地化了西班牙语资源。这是因为当系统无法找到完全匹配时,它会通过从区域设置中剥离国家代码来继续寻找资源。最后,如果未找到匹配项,则系统回退到默认值,即 en_US。

    正如明确指出的,您不可能使用不受支持的语言环境。因此,如果您仍然喜欢使用捷克语,您可能需要使用支持捷克语的 Android 5.0 或更低版本,如相关SO postlist of Android Supported Language and Locales 中所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-21
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多