@ -89,10 +89,8 @@ class LanguageManager: ObservableObject {
private init ( ) {
loadLanguage ( )
// 标 记 初 始 化 完 成
DispatchQueue . main . async {
self . isInitialized = true
}
// 立 即 标 记 初 始 化 完 成 , 避 免 异 步 延 迟
isInitialized = true
}
// 检 测 系 统 语 言 并 返 回 对 应 的 支 持 语 言
@ -240,15 +238,28 @@ class LanguageManager: ObservableObject {
languageToUse = currentLanguage . rawValue
}
// 调 试 信 息
#if DEBUG
print ( " 🔍 Localization Debug - Key: \( key ) , Language: \( languageToUse ) , Current: \( currentLanguage . rawValue ) " )
#endif
// 首 先 尝 试 从 当 前 语 言 获 取 字 符 串
if let path = bundle . path ( forResource : languageToUse , ofType : " lproj " ) ,
let languageBundle = Bundle ( path : path ) {
let localizedString = languageBundle . localizedString ( forKey : key , value : nil , table : nil )
#if DEBUG
print ( " 🔍 Found bundle at: \( path ) , Result: \( localizedString ) " )
#endif
// 如 果 返 回 的 字 符 串 不 是 k e y 本 身 , 说 明 找 到 了 本 地 化 条 目
if localizedString != key {
return localizedString
}
} else {
#if DEBUG
print ( " ❌ Bundle not found for language: \( languageToUse ) " )
#endif
}
// 如 果 当 前 语 言 没 有 找 到 条 目 , 回 退 到 英 语
@ -256,6 +267,10 @@ class LanguageManager: ObservableObject {
let languageBundle = Bundle ( path : path ) {
let englishString = languageBundle . localizedString ( forKey : key , value : nil , table : nil )
#if DEBUG
print ( " 🔍 Fallback to English, Result: \( englishString ) " )
#endif
// 如 果 英 语 也 没 有 找 到 , 返 回 k e y 本 身
if englishString != key {
return englishString
@ -263,6 +278,9 @@ class LanguageManager: ObservableObject {
}
// 最 后 回 退 到 k e y 本 身
#if DEBUG
print ( " ❌ No localization found for key: \( key ) , returning key itself " )
#endif
return key
}
}