首页 > 解决方案 > 如果在应用程序启动后更改了当前设备语言,如何获取当前设备语言?

问题描述

当您启动应用程序时,有很多方法可以获取当前设备语言:

但是,如果我在应用程序运行时更改设备语言,这些值都不会更新。

有没有一种通用的方法来获取当前的设备语言,还是我需要为每个平台独立编写代码?

标签: c#xamarin.formslocalization

解决方案


每当用户更改设备的位置或语言时,每个平台都应提供通知。例如,iOS 发出NSCurrentLocaleDidChangeNotification包含语言属性的 a。

您需要使用Xamarin.Forms 本地通知过程注册并观察平台通知,其中注释(添加了粗体和斜体):

每个平台以不同方式处理本地通知的创建、显示和使用。本文介绍如何使用 Xamarin.Forms创建跨平台抽象来发送、计划和接收本地通知。

有许多关于如何做到这一点的教程。在xamarin 表单本地通知使用教程上搜索以找到一些。请注意术语local。你不想要推送通知——那是另一回事。

要更简单地执行此任务,您可以使用插件,例如GitHub 上的 edsnider/localnotificationsplugin。您可以通过在搜索中将术语使用教程替换为插件来找到更多信息。

澄清

  • 本地通知发生在设备内部,即设备或应用程序在内部发送通知以供设备上的应用程序使用。
  • 当向外部服务(例如 Azure)发出请求时,会发生推送通知。然后该服务将向适当的设备广播相应的通知。

推荐阅读