fix: WallpaperGuideView完整国际化修复

问题:WallpaperGuideView界面切换到日语后仍显示大量中文内容

修复内容:
- 添加28个新的本地化key,覆盖所有界面文本
- 替换导航标题、步骤说明、常见问题等所有硬编码中文字符串
- 新增localization keys:
  * wallpaper.title(导航标题)
  * wallpaper.ios17Required(iOS版本提示)
  * wallpaper.openPhotosApp / findSavedPhoto(快捷操作)
  * wallpaper.steps(步骤区标题)
  * wallpaper.step1-5.title/description(5个设置步骤)
  * wallpaper.step4iOS16.title/description(iOS 16特殊说明)
  * wallpaper.faq(常见问题标题)
  * wallpaper.faq1-5.question/answer(5个FAQ条目)

所有字符串均提供8种语言翻译(zh-Hans, zh-Hant, en, es, ar, fr, ja, ko)

构建验证:BUILD SUCCEEDED

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
empty
2026-01-10 16:54:40 +08:00
parent 2768791ae4
commit 58cbbf9a44
3 changed files with 11241 additions and 9740 deletions

View File

@@ -1,112 +1,136 @@
{
"sourceLanguage": "zh-Hans",
"strings": {
"NSPhotoLibraryAddUsageDescription": {
"extractionState": "manual",
"localizations": {
"zh-Hans": {
"stringUnit": {
"state": "translated",
"value": "用于将生成的 Live Photo 保存到系统相册"
}
},
"zh-Hant": {
"stringUnit": {
"state": "translated",
"value": "用於將生成的 Live Photo 儲存至系統相簿"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "To save generated Live Photos to your photo library"
}
},
"es": {
"stringUnit": {
"state": "translated",
"value": "Para guardar Live Photos generadas en tu biblioteca de fotos"
}
},
"ar": {
"stringUnit": {
"state": "translated",
"value": "لحفظ Live Photos المُنشأة في مكتبة الصور"
}
},
"fr": {
"stringUnit": {
"state": "translated",
"value": "Pour enregistrer les Live Photos générées dans votre bibliothèque de photos"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "生成したLive Photoをフォトライブラリに保存するために使用します"
}
},
"ko": {
"stringUnit": {
"state": "translated",
"value": "생성된 Live Photo를 사진 보관함에 저장하기 위해 사용됩니다"
"sourceLanguage" : "zh-Hans",
"strings" : {
"CFBundleDisplayName" : {
"comment" : "Bundle display name",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "Live Photo Studio"
}
}
}
},
"NSPhotoLibraryUsageDescription": {
"extractionState": "manual",
"localizations": {
"zh-Hans": {
"stringUnit": {
"state": "translated",
"value": "用于读取并校验已保存的 Live Photo可选"
"CFBundleName" : {
"comment" : "Bundle name",
"extractionState" : "extracted_with_value",
"localizations" : {
"zh-Hans" : {
"stringUnit" : {
"state" : "new",
"value" : "to-live-photo"
}
}
}
},
"NSPhotoLibraryAddUsageDescription" : {
"extractionState" : "manual",
"localizations" : {
"ar" : {
"stringUnit" : {
"state" : "translated",
"value" : "لحفظ Live Photos المُنشأة في مكتبة الصور"
}
},
"zh-Hant": {
"stringUnit": {
"state": "translated",
"value": "用於讀取並校驗已儲存的 Live Photo選用"
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "To save generated Live Photos to your photo library"
}
},
"en": {
"stringUnit": {
"state": "translated",
"value": "To read and verify saved Live Photos (optional)"
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Para guardar Live Photos generadas en tu biblioteca de fotos"
}
},
"es": {
"stringUnit": {
"state": "translated",
"value": "Para leer y verificar Live Photos guardadas (opcional)"
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pour enregistrer les Live Photos générées dans votre bibliothèque de photos"
}
},
"ar": {
"stringUnit": {
"state": "translated",
"value": "لقراءة والتحقق من Live Photos المحفوظة (اختياري)"
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "生成したLive Photoをフォトライブラリに保存するために使用します"
}
},
"fr": {
"stringUnit": {
"state": "translated",
"value": "Pour lire et vérifier les Live Photos enregistrées (facultatif)"
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "생성된 Live Photo를 사진 보관함에 저장하기 위해 사용됩니다"
}
},
"ja": {
"stringUnit": {
"state": "translated",
"value": "保存されたLive Photoを読み取り検証するために使用します(任意)"
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "用于将生成的 Live Photo 保存到系统相册"
}
},
"ko": {
"stringUnit": {
"state": "translated",
"value": "저장된 Live Photo를 읽고 확인하기 위해 사용됩니다(선택사항)"
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "用於將生成的 Live Photo 儲存至系統相簿"
}
}
}
},
"NSPhotoLibraryUsageDescription" : {
"extractionState" : "manual",
"localizations" : {
"ar" : {
"stringUnit" : {
"state" : "translated",
"value" : "لقراءة والتحقق من Live Photos المحفوظة (اختياري)"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "To read and verify saved Live Photos (optional)"
}
},
"es" : {
"stringUnit" : {
"state" : "translated",
"value" : "Para leer y verificar Live Photos guardadas (opcional)"
}
},
"fr" : {
"stringUnit" : {
"state" : "translated",
"value" : "Pour lire et vérifier les Live Photos enregistrées (facultatif)"
}
},
"ja" : {
"stringUnit" : {
"state" : "translated",
"value" : "保存されたLive Photoを読み取り検証するために使用します任意"
}
},
"ko" : {
"stringUnit" : {
"state" : "translated",
"value" : "저장된 Live Photo를 읽고 확인하기 위해 사용됩니다(선택사항)"
}
},
"zh-Hans" : {
"stringUnit" : {
"state" : "translated",
"value" : "用于读取并校验已保存的 Live Photo可选"
}
},
"zh-Hant" : {
"stringUnit" : {
"state" : "translated",
"value" : "用於讀取並校驗已儲存的 Live Photo選用"
}
}
}
}
},
"version": "1.0"
}
"version" : "1.0"
}

File diff suppressed because it is too large Load Diff

View File

@@ -32,7 +32,7 @@ struct WallpaperGuideView: View {
.padding(.horizontal, 20)
.padding(.vertical, 16)
}
.navigationTitle("设置动态壁纸")
.navigationTitle(String(localized: "wallpaper.title"))
.navigationBarTitleDisplayMode(.inline)
.onAppear {
Analytics.shared.log(.guideOpen)
@@ -63,7 +63,7 @@ struct WallpaperGuideView: View {
HStack(spacing: 6) {
Image(systemName: "exclamationmark.triangle.fill")
.foregroundStyle(.orange)
Text("iOS 17+ 才支持锁屏动态效果")
Text(String(localized: "wallpaper.ios17Required"))
.foregroundStyle(.secondary)
}
.font(.subheadline)
@@ -85,9 +85,9 @@ struct WallpaperGuideView: View {
Image(systemName: "photo.on.rectangle.angled")
.font(.title2)
VStack(alignment: .leading, spacing: 2) {
Text("打开照片 App")
Text(String(localized: "wallpaper.openPhotosApp"))
.font(.headline)
Text("找到刚保存的 Live Photo")
Text(String(localized: "wallpaper.findSavedPhoto"))
.font(.caption)
.foregroundStyle(.white.opacity(0.8))
}
@@ -115,7 +115,7 @@ struct WallpaperGuideView: View {
HStack {
Image(systemName: "list.number")
.foregroundStyle(.tint)
Text("设置壁纸步骤")
Text(String(localized: "wallpaper.steps"))
.font(.headline)
}
@@ -123,24 +123,24 @@ struct WallpaperGuideView: View {
StepRow(
number: 1,
icon: "photo.fill",
title: "在照片中找到 Live Photo",
description: "照片左上角会显示【LIVE】标识长按可预览动画效果",
title: String(localized: "wallpaper.step1.title"),
description: String(localized: "wallpaper.step1.description"),
isLast: false
)
StepRow(
number: 2,
icon: "square.and.arrow.up",
title: "点击分享按钮",
description: "位于屏幕左下角,然后选择【用作壁纸】选项",
title: String(localized: "wallpaper.step2.title"),
description: String(localized: "wallpaper.step2.description"),
isLast: false
)
StepRow(
number: 3,
icon: "crop",
title: "调整照片位置",
description: "双指缩放和拖动来调整照片在壁纸中的位置",
title: String(localized: "wallpaper.step3.title"),
description: String(localized: "wallpaper.step3.description"),
isLast: false
)
@@ -148,16 +148,16 @@ struct WallpaperGuideView: View {
StepRow(
number: 4,
icon: "livephoto",
title: "确认动态效果已开启",
description: "点击左下角的 Live Photo 图标,图标高亮表示动态效果已开启",
title: String(localized: "wallpaper.step4.title"),
description: String(localized: "wallpaper.step4.description"),
isLast: false
)
} else {
StepRow(
number: 4,
icon: "info.circle",
title: "了解系统限制",
description: "iOS 16 锁屏不支持动态效果,仅主屏幕长按可播放",
title: String(localized: "wallpaper.step4iOS16.title"),
description: String(localized: "wallpaper.step4iOS16.description"),
isLast: false
)
}
@@ -165,8 +165,8 @@ struct WallpaperGuideView: View {
StepRow(
number: 5,
icon: "checkmark.circle",
title: "完成设置",
description: "点击右上角【完成】,选择【设定锁定屏幕】或【同时设定】",
title: String(localized: "wallpaper.step5.title"),
description: String(localized: "wallpaper.step5.description"),
isLast: true
)
}
@@ -182,39 +182,39 @@ struct WallpaperGuideView: View {
HStack {
Image(systemName: "questionmark.circle")
.foregroundStyle(.tint)
Text("常见问题")
Text(String(localized: "wallpaper.faq"))
.font(.headline)
}
FAQRow(
icon: "magnifyingglass",
question: "找不到刚保存的 Live Photo",
answer: "打开照片 App → 相簿 → 媒体类型 → 实况照片,或直接搜索【实况】"
question: String(localized: "wallpaper.faq1.question"),
answer: String(localized: "wallpaper.faq1.answer")
)
FAQRow(
icon: "hand.tap",
question: "设置后壁纸不会动?",
answer: "锁屏状态下长按屏幕 1-2 秒可触发动画播放(需 iOS 17+"
question: String(localized: "wallpaper.faq2.question"),
answer: String(localized: "wallpaper.faq2.answer")
)
FAQRow(
icon: "battery.25",
question: "动画效果突然失效?",
answer: "检查是否开启了【低电量模式】,该模式下系统会自动禁用动态效果以省电"
question: String(localized: "wallpaper.faq3.question"),
answer: String(localized: "wallpaper.faq3.answer")
)
FAQRow(
icon: "exclamationmark.circle",
question: "Live Photo 图标是灰色/划线?",
answer: "iOS 对壁纸有额外限制,部分 Live Photo 可能不支持作为动态壁纸。建议使用 2-3 秒时长、竖屏比例的视频重新生成"
question: String(localized: "wallpaper.faq4.question"),
answer: String(localized: "wallpaper.faq4.answer")
)
if iosVersion < 17 {
FAQRow(
icon: "iphone.gen3",
question: "为什么我的锁屏没有动画?",
answer: "iOS 16 系统限制:锁屏壁纸不支持 Live Photo 动画,建议升级到 iOS 17+"
question: String(localized: "wallpaper.faq5.question"),
answer: String(localized: "wallpaper.faq5.answer")
)
}
}