繁体   English   中英

在 Android Jetpack Compose 中管理语言环境

[英]Manage Locale in Android Jetpack Compose

如何使用 android Jetpack Compose管理语言环境。 compose 如何找到要在视图中设置的语言环境。

如果您确实想获得设备的默认Locale ,您可以使用

Locale.getDefault()

但它实际上与 Jetpack Compose 没有任何关系,所以我不确定我是否正确回答了您的问题。

要从 Composable 访问 Locale,请使用以下命令:

Locale.current

androidx.compose.ui.text.intl.Locale存在,如果它满足您的需求,那很好,您可以使用Locale.current ,但通常您需要 java.util.Locale。

为此,我建议使用这样的 function

@Composable
@ReadOnlyComposable
fun getLocale(): Locale? {
  val configuration = LocalConfiguration.current
  return ConfigurationCompat.getLocales(configuration).get(0)
}

或者,如果您想默认为Locale.getDefault()返回的值而不是 null,您可以将其调整为:

@Composable
@ReadOnlyComposable
fun getLocale(): Locale {
  val configuration = LocalConfiguration.current
  return ConfigurationCompat.getLocales(configuration).get(0) ?: LocaleListCompat.getDefault()[0]!!
}

使用LocalConfiguration.current很重要,这样如果有配置更改,function 将重组,您将获得最新的 Locale 而不是陈旧的 Locale。 我最近在讨论中提到了这一点。

ConfigurationCompat.getLocales确保它适用于所有 API 版本。 如果您在 API >= 24 上,则提前 go 并直接使用LocalConfiguration.current.locales

奖励:这在使用per-app language APIs时也能完美工作,因为它会返回在应用程序语言设置中选择的任何语言。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM