diff --git a/to-live-photo/to-live-photo/Localizable.xcstrings b/to-live-photo/to-live-photo/Localizable.xcstrings index 64399ac..36b76de 100644 --- a/to-live-photo/to-live-photo/Localizable.xcstrings +++ b/to-live-photo/to-live-photo/Localizable.xcstrings @@ -9846,7 +9846,163 @@ "适用于较旧设备或生成失败时": {}, "选择视频中的某一帧作为 Live Photo 的封面": {}, "选择适合壁纸的比例,锁屏推荐使用「锁屏」或「全屏」": {}, - "首次使用需下载 AI 模型(约 64MB)": {} + "首次使用需下载 AI 模型(约 64MB)": {}, + "settings.languageChangeAlertTitle": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Language Changed" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "语言已更改" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "語言已更改" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Idioma cambiado" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تم تغيير اللغة" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Langue modifiée" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "言語が変更されました" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "언어 변경됨" + } + } + } + }, + "settings.languageChangeAlertMessage": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "The app needs to restart for the language change to take effect. Restart now?" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "需要重启应用以使语言更改生效。现在重启?" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "需要重啟應用程式以使語言更改生效。現在重啟?" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "La aplicación necesita reiniciarse para aplicar el cambio de idioma. ¿Reiniciar ahora?" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "يحتاج التطبيق إلى إعادة التشغيل لتطبيق تغيير اللغة. إعادة التشغيل الآن؟" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L'application doit redémarrer pour appliquer le changement de langue. Redémarrer maintenant ?" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "言語変更を適用するにはアプリの再起動が必要です。今すぐ再起動しますか?" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "언어 변경을 적용하려면 앱을 다시 시작해야 합니다. 지금 다시 시작하시겠습니까?" + } + } + } + }, + "settings.restartNow": { + "localizations": { + "en": { + "stringUnit": { + "state": "translated", + "value": "Restart Now" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "立即重启" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "立即重啟" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Reiniciar ahora" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إعادة التشغيل الآن" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Redémarrer" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "今すぐ再起動" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "지금 다시 시작" + } + } + } + } }, "version": "1.0" } \ No newline at end of file diff --git a/to-live-photo/to-live-photo/Views/SettingsView.swift b/to-live-photo/to-live-photo/Views/SettingsView.swift index 34f9c71..ab4c411 100644 --- a/to-live-photo/to-live-photo/Views/SettingsView.swift +++ b/to-live-photo/to-live-photo/Views/SettingsView.swift @@ -15,6 +15,8 @@ struct SettingsView: View { @State private var showingClearRecentWorksAlert = false @State private var feedbackPackageURL: URL? @State private var showingShareSheet = false + @State private var showingLanguageChangeAlert = false + @State private var pendingLanguage: LanguageManager.Language? var body: some View { List { @@ -43,7 +45,12 @@ struct SettingsView: View { Section { Picker(selection: Binding( get: { LanguageManager.shared.current }, - set: { LanguageManager.shared.current = $0 } + set: { newLanguage in + if newLanguage != LanguageManager.shared.current { + pendingLanguage = newLanguage + showingLanguageChangeAlert = true + } + } )) { ForEach(LanguageManager.Language.allCases) { language in Text(language.displayName).tag(language) @@ -151,6 +158,19 @@ struct SettingsView: View { } message: { Text(String(localized: "settings.clearRecordsConfirm")) } + .alert(String(localized: "settings.languageChangeAlertTitle"), isPresented: $showingLanguageChangeAlert) { + Button(String(localized: "common.cancel"), role: .cancel) { + pendingLanguage = nil + } + Button(String(localized: "settings.restartNow"), role: .none) { + if let newLanguage = pendingLanguage { + LanguageManager.shared.current = newLanguage + } + exit(0) + } + } message: { + Text(String(localized: "settings.languageChangeAlertMessage")) + } .sheet(isPresented: $showingShareSheet) { if let url = feedbackPackageURL { ShareSheet(activityItems: [url])