Blankj / Blankj/AndroidUtilCode

LanguageUtils.updateAppContextLanguage更新无效 提供临时解决方案 等待auc更新

Đang mở
#1,700 4 bình luận 0 reaction 1 người được giao Được @Blankj nhận Xem trên GitHub
bug
Ngôn ngữ chính
Java
Star
33.6k
Fork
10.6k
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

## 描述 Bug

简洁地描述下 Bug。

- AndroidUtilCode 的版本:1.31.6
- 出现 Bug 的设备型号:华为/荣耀/小米/原生模拟器,
- 设备的 Android 版本:7.0/10/11

## 相关代码

LanguageUtils.applyLanguage 应用指定语言后, 重启后 application context 语言没有更新
LanguageUtils.updateAppContextLanguage 加上后也没有效果

## 问题:
应用完后 直接杀掉应用重启 会出现部分文案没有应用指定语言的翻译

初步排查: 该类型文案是StringUtils.getString直接获取. 如果采用当前Activity context即没有该问题
尝试调用 LanguageUtils.updateAppContextLanguage 方法去更新, 依旧不行.

## 临时的解决方案思路
获取 auc 对应语言的字符, 转为local 在 application-attachBaseContext 中手动更新 context 内部的语言.
```
fun obtainCacheLocalWithAUC(context: Context?): String {
if (context == null) return ""
if (innerSp == null) {
// 采用auc中的历史配置name
innerSp = context.getSharedPreferences("Utils", Context.MODE_PRIVATE)
}
//查auc中存的配置
return innerSp?.getString("KEY_LOCALE", "") ?: ""
}

fun convertCoutry2LocalWithAUC(str: String): Locale? {
return if (!isRightFormatLocalStr(str)) { // 该方法为auc中的, 自己去拿即可
null
} else try {
val splitIndex = str.indexOf("$")
Locale(str.substring(0, splitIndex), str.substring(splitIndex + 1))
} catch (ignore: Exception) {
null
}
}

// application
override fun attachBaseContext(base: Context?) {
kotlin.runCatching {
val localCoutry = AppLanguageKit.obtainCacheLocalWithAUC(base)
val locale = AppLanguageKit.convertCounty2LocalWithAUC(localCoutry )
val context = if (base != null && locale != null) {
val resource = base.resources
val conf = resource.configuration

conf.setLocale(locale)
conf.setLayoutDirection(locale)
base.createConfigurationContext(conf)
} else {
base
}
super.attachBaseContext(context)
}.onFailure {
it.printStackTrace()
super.attachBaseContext(base)
}
}

```

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.