feat: 添加 5 种主流语言国际化支持 (es/ar/fr/ja/ko)
根据 App Store Connect 下载数据,为应用添加多语言支持: - ⭐⭐⭐ 高优先级: 西班牙语 (es)、阿拉伯语 (ar) - ⭐⭐ 中优先级: 法语 (fr)、日语 (ja)、韩语 (ko) 变更: - Localizable.xcstrings: 为 185 个字符串添加 5 种语言翻译 * 30 个核心 UI 字符串使用高质量手动翻译 * 其余字符串使用英文占位(待后续优化) - PrivacyPolicyView.swift: 将硬编码文本替换为本地化字符串 - project.pbxproj: 在 knownRegions 中添加新语言支持 覆盖地区: - 阿根廷、墨西哥、西班牙 (西班牙语) - 阿尔及利亚、突尼斯、中东 (阿拉伯语) - 法国、加拿大 (法语) - 日本 (日语) - 韩国 (韩语) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -198,6 +198,14 @@
|
||||
knownRegions = (
|
||||
en,
|
||||
Base,
|
||||
es,
|
||||
ar,
|
||||
fr,
|
||||
ja,
|
||||
ko,
|
||||
zh-Hans,
|
||||
zh-Hant,
|
||||
|
||||
);
|
||||
mainGroup = F1A6CF462EED942500822C1B;
|
||||
minimizedProjectReferenceProxies = 1;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -11,59 +11,59 @@ struct PrivacyPolicyView: View {
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
VStack(alignment: .leading, spacing: 20) {
|
||||
Text("最后更新:2025年12月")
|
||||
Text("privacy.lastUpdated")
|
||||
.font(.caption)
|
||||
.foregroundStyle(.secondary)
|
||||
|
||||
Group {
|
||||
sectionHeader("概述")
|
||||
Text("Live Photo Maker(以下简称\"本应用\")尊重并保护您的隐私。本隐私政策说明我们如何收集、使用和保护您的信息。")
|
||||
Text("本应用提供两种处理模式:本地处理(免费)和云端增强(付费订阅)。不同模式的数据处理方式有所不同。")
|
||||
sectionHeader(String(localized: "privacy.overview.title"))
|
||||
Text("privacy.overview.intro1")
|
||||
Text("privacy.overview.intro2")
|
||||
|
||||
sectionHeader("本地处理模式(免费)")
|
||||
bulletPoint("设备端处理", "视频转换、本地 AI 增强均在您的设备上完成,数据不会离开您的手机。")
|
||||
bulletPoint("无数据上传", "使用本地处理模式时,您的图片和视频不会上传到任何服务器。")
|
||||
sectionHeader(String(localized: "privacy.localMode.title"))
|
||||
bulletPoint(String(localized: "privacy.localMode.item1.title"), String(localized: "privacy.localMode.item1.desc"))
|
||||
bulletPoint(String(localized: "privacy.localMode.item2.title"), String(localized: "privacy.localMode.item2.desc"))
|
||||
|
||||
sectionHeader("云端增强模式(Pro)")
|
||||
bulletPoint("数据传输", "使用云端增强时,您选择的图片或视频帧会通过加密连接上传至服务器处理。")
|
||||
bulletPoint("即时删除", "处理完成后,您的原始数据和处理结果将在 24 小时内从服务器自动删除。")
|
||||
bulletPoint("数据安全", "所有传输数据均经过端到端加密,服务器位于符合 GDPR 标准的数据中心。")
|
||||
Text("⚠️ 云端增强功能需要网络连接,每次使用前会明确提示并征得您的同意。")
|
||||
sectionHeader(String(localized: "privacy.cloudMode.title"))
|
||||
bulletPoint(String(localized: "privacy.cloudMode.item1.title"), String(localized: "privacy.cloudMode.item1.desc"))
|
||||
bulletPoint(String(localized: "privacy.cloudMode.item2.title"), String(localized: "privacy.cloudMode.item2.desc"))
|
||||
bulletPoint(String(localized: "privacy.cloudMode.item3.title"), String(localized: "privacy.cloudMode.item3.desc"))
|
||||
Text("privacy.cloudMode.warning")
|
||||
.font(.caption)
|
||||
.foregroundStyle(.orange)
|
||||
.padding(.vertical, 4)
|
||||
|
||||
sectionHeader("权限说明")
|
||||
bulletPoint("相册读取权限", "用于从相册选择视频素材。")
|
||||
bulletPoint("相册写入权限", "用于将生成的 Live Photo 保存到相册。")
|
||||
bulletPoint("网络访问(可选)", "仅在使用云端增强功能时需要。")
|
||||
sectionHeader(String(localized: "privacy.permissions.title"))
|
||||
bulletPoint(String(localized: "privacy.permissions.item1.title"), String(localized: "privacy.permissions.item1.desc"))
|
||||
bulletPoint(String(localized: "privacy.permissions.item2.title"), String(localized: "privacy.permissions.item2.desc"))
|
||||
bulletPoint(String(localized: "privacy.permissions.item3.title"), String(localized: "privacy.permissions.item3.desc"))
|
||||
|
||||
sectionHeader("数据收集")
|
||||
bulletPoint("匿名使用统计", "我们可能收集匿名的功能使用统计,用于改进应用体验。这些数据不包含任何可识别个人身份的信息。")
|
||||
bulletPoint("订阅信息", "订阅购买通过 Apple 处理,我们仅接收订阅状态,不会获取您的支付详情。")
|
||||
sectionHeader(String(localized: "privacy.collection.title"))
|
||||
bulletPoint(String(localized: "privacy.collection.item1.title"), String(localized: "privacy.collection.item1.desc"))
|
||||
bulletPoint(String(localized: "privacy.collection.item2.title"), String(localized: "privacy.collection.item2.desc"))
|
||||
|
||||
sectionHeader("数据存储")
|
||||
bulletPoint("临时缓存", "处理过程中产生的临时文件存储在应用沙盒内,您可以在设置中清理。")
|
||||
bulletPoint("最近作品", "仅存储作品的缩略图和参数信息,不重复存储媒体内容。")
|
||||
sectionHeader(String(localized: "privacy.storage.title"))
|
||||
bulletPoint(String(localized: "privacy.storage.item1.title"), String(localized: "privacy.storage.item1.desc"))
|
||||
bulletPoint(String(localized: "privacy.storage.item2.title"), String(localized: "privacy.storage.item2.desc"))
|
||||
|
||||
sectionHeader("第三方服务")
|
||||
bulletPoint("Apple 服务", "App Store 内购、iCloud(如适用),受 Apple 隐私政策约束。")
|
||||
bulletPoint("崩溃分析", "用于收集匿名崩溃报告以改进应用稳定性。")
|
||||
sectionHeader(String(localized: "privacy.thirdParty.title"))
|
||||
bulletPoint(String(localized: "privacy.thirdParty.item1.title"), String(localized: "privacy.thirdParty.item1.desc"))
|
||||
bulletPoint(String(localized: "privacy.thirdParty.item2.title"), String(localized: "privacy.thirdParty.item2.desc"))
|
||||
|
||||
sectionHeader("您的权利")
|
||||
bulletPoint("删除数据", "您可以随时在应用设置中清理所有本地缓存和作品记录。")
|
||||
bulletPoint("退出云端服务", "您可以随时停止使用云端增强功能,继续使用完全离线的本地处理。")
|
||||
sectionHeader(String(localized: "privacy.rights.title"))
|
||||
bulletPoint(String(localized: "privacy.rights.item1.title"), String(localized: "privacy.rights.item1.desc"))
|
||||
bulletPoint(String(localized: "privacy.rights.item2.title"), String(localized: "privacy.rights.item2.desc"))
|
||||
|
||||
sectionHeader("联系我们")
|
||||
Text("如果您对本隐私政策有任何疑问,请通过以下方式联系我们:")
|
||||
Text("邮箱:support@let5see.xyz")
|
||||
sectionHeader(String(localized: "privacy.contact.title"))
|
||||
Text("privacy.contact.intro")
|
||||
Text("privacy.contact.email")
|
||||
.foregroundStyle(.blue)
|
||||
}
|
||||
.padding(.horizontal)
|
||||
}
|
||||
.padding(.vertical)
|
||||
}
|
||||
.navigationTitle("隐私政策")
|
||||
.navigationTitle("settings.privacyPolicy")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
}
|
||||
|
||||
@@ -91,53 +91,53 @@ struct TermsOfServiceView: View {
|
||||
var body: some View {
|
||||
ScrollView {
|
||||
VStack(alignment: .leading, spacing: 20) {
|
||||
Text("最后更新:2025年12月")
|
||||
Text("terms.lastUpdated")
|
||||
.font(.caption)
|
||||
.foregroundStyle(.secondary)
|
||||
|
||||
Group {
|
||||
sectionHeader("接受条款")
|
||||
Text("使用 Live Photo Maker 即表示您同意本使用条款。如果您不同意这些条款,请勿使用本应用。")
|
||||
sectionHeader(String(localized: "terms.acceptance.title"))
|
||||
Text("terms.acceptance.desc")
|
||||
|
||||
sectionHeader("服务说明")
|
||||
Text("Live Photo Maker 是一款将视频转换为 Live Photo 的工具应用,帮助您创建可用于动态壁纸的内容。")
|
||||
Text("本应用提供免费基础功能和付费高级功能(Pro)。部分高级功能可能需要网络连接和云端处理。")
|
||||
sectionHeader(String(localized: "terms.service.title"))
|
||||
Text("terms.service.desc1")
|
||||
Text("terms.service.desc2")
|
||||
|
||||
sectionHeader("订阅与内购")
|
||||
bulletPoint("付款方式", "所有购买通过 Apple App Store 处理。订阅费用将从您的 Apple ID 账户中扣除。")
|
||||
bulletPoint("自动续订", "订阅将在到期前 24 小时内自动续订,除非您在到期前至少 24 小时关闭自动续订。")
|
||||
bulletPoint("取消订阅", "您可以随时在 App Store 账户设置中管理或取消订阅。")
|
||||
bulletPoint("退款政策", "订阅退款需通过 Apple 申请处理。")
|
||||
sectionHeader(String(localized: "terms.subscription.title"))
|
||||
bulletPoint(String(localized: "terms.subscription.item1.title"), String(localized: "terms.subscription.item1.desc"))
|
||||
bulletPoint(String(localized: "terms.subscription.item2.title"), String(localized: "terms.subscription.item2.desc"))
|
||||
bulletPoint(String(localized: "terms.subscription.item3.title"), String(localized: "terms.subscription.item3.desc"))
|
||||
bulletPoint(String(localized: "terms.subscription.item4.title"), String(localized: "terms.subscription.item4.desc"))
|
||||
|
||||
sectionHeader("使用限制")
|
||||
bulletPoint("合法使用", "您只能将本应用用于合法目的,不得用于处理侵犯他人版权或违法的内容。")
|
||||
bulletPoint("个人使用", "本应用仅供个人非商业用途,商业用途需另行授权。")
|
||||
bulletPoint("禁止滥用", "禁止恶意使用云端服务、尝试破解付费功能等行为。")
|
||||
sectionHeader(String(localized: "terms.limits.title"))
|
||||
bulletPoint(String(localized: "terms.limits.item1.title"), String(localized: "terms.limits.item1.desc"))
|
||||
bulletPoint(String(localized: "terms.limits.item2.title"), String(localized: "terms.limits.item2.desc"))
|
||||
bulletPoint(String(localized: "terms.limits.item3.title"), String(localized: "terms.limits.item3.desc"))
|
||||
|
||||
sectionHeader("云端服务")
|
||||
bulletPoint("网络依赖", "云端功能需要稳定的网络连接,网络问题可能导致处理失败。")
|
||||
bulletPoint("服务可用性", "我们将尽力保证服务稳定,但不保证 100% 可用性。")
|
||||
sectionHeader(String(localized: "terms.cloud.title"))
|
||||
bulletPoint(String(localized: "terms.cloud.item1.title"), String(localized: "terms.cloud.item1.desc"))
|
||||
bulletPoint(String(localized: "terms.cloud.item2.title"), String(localized: "terms.cloud.item2.desc"))
|
||||
|
||||
sectionHeader("免责声明")
|
||||
bulletPoint("壁纸设置", "本应用提供 Live Photo 生成功能,壁纸设置需通过系统照片应用完成。动态效果取决于您的设备和系统版本。")
|
||||
bulletPoint("内容责任", "您对使用本应用处理的所有内容负全部责任。")
|
||||
bulletPoint("AI 处理结果", "AI 增强效果可能因原始素材质量而异,我们不保证特定的处理效果。")
|
||||
sectionHeader(String(localized: "terms.disclaimer.title"))
|
||||
bulletPoint(String(localized: "terms.disclaimer.item1.title"), String(localized: "terms.disclaimer.item1.desc"))
|
||||
bulletPoint(String(localized: "terms.disclaimer.item2.title"), String(localized: "terms.disclaimer.item2.desc"))
|
||||
bulletPoint(String(localized: "terms.disclaimer.item3.title"), String(localized: "terms.disclaimer.item3.desc"))
|
||||
|
||||
sectionHeader("知识产权")
|
||||
Text("本应用及其所有相关内容(包括但不限于代码、设计、图标、AI 模型)的知识产权归开发者所有。")
|
||||
sectionHeader(String(localized: "terms.ip.title"))
|
||||
Text("terms.ip.desc")
|
||||
|
||||
sectionHeader("条款变更")
|
||||
Text("我们可能会不时更新本使用条款。继续使用本应用即表示您接受更新后的条款。")
|
||||
sectionHeader(String(localized: "terms.changes.title"))
|
||||
Text("terms.changes.desc")
|
||||
|
||||
sectionHeader("联系方式")
|
||||
Text("如有问题,请联系:support@let5see.xyz")
|
||||
sectionHeader(String(localized: "terms.contact.title"))
|
||||
Text("terms.contact.email")
|
||||
.foregroundStyle(.blue)
|
||||
}
|
||||
.padding(.horizontal)
|
||||
}
|
||||
.padding(.vertical)
|
||||
}
|
||||
.navigationTitle("使用条款")
|
||||
.navigationTitle("settings.termsOfService")
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user