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:
@@ -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
@@ -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")
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user