[英]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.