```
feat: 添加自定义提醒功能并优化项目配置 - 添加 CustomReminder 模型支持自由文案周期性提醒功能 - 实现自定义提醒的 UI 界面,包括新建、编辑和列表展示 - 集成本地通知服务支持自定义提醒的时间触发 - 更新项目配置文件添加应用显示名称和加密声明 - 修正 iOS 部署目标版本从 26.0 到 17.0 - 修复 FileDownloader 中的线程安全问题 - 优化 ModelManifest 和 Localization 的并发安全性 - 扩展本地化字符串支持多语言提醒相关文本 - 调整项目支持平台范围仅保留 iphoneos 和 iphonesimulator ```
This commit is contained in:
@@ -80,16 +80,24 @@ final class LanguageManager {
|
||||
lprojBundle = .main
|
||||
}
|
||||
Bundle.redirectMain(to: current.localeIdentifier)
|
||||
// 同步 nonisolated 快照,供 String(appLoc:) 在非 MainActor 上下文读取。
|
||||
appLocBundle = lprojBundle
|
||||
appLocLocale = resolvedLocale
|
||||
}
|
||||
}
|
||||
|
||||
/// nonisolated 快照:`String(appLoc:)` 可能在非 MainActor 上下文被调用
|
||||
/// (LocalizedError.errorDescription、nonisolated 枚举 label、static 解析器…)。
|
||||
/// 只由 `LanguageManager.apply()`(MainActor)写入,切换语言时刷新;读为快照,无竞态影响。
|
||||
nonisolated(unsafe) private var appLocBundle: Bundle = .main
|
||||
nonisolated(unsafe) private var appLocLocale: Locale = .autoupdatingCurrent
|
||||
|
||||
extension String {
|
||||
/// 尊重「我的 · 语言」选择的本地化(可即时切换)。
|
||||
/// 等价 `String(localized:)`,但显式绑定当前所选语言的 bundle + locale,
|
||||
/// 因此不受 `Locale.current`(系统/启动时语言)限制。
|
||||
init(appLoc key: String.LocalizationValue) {
|
||||
let m = LanguageManager.shared
|
||||
self = String(localized: key, bundle: m.lprojBundle, locale: m.resolvedLocale)
|
||||
nonisolated init(appLoc key: String.LocalizationValue) {
|
||||
self = String(localized: key, bundle: appLocBundle, locale: appLocLocale)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user