feat: 隐私政策和使用条款完整多语言翻译

为隐私政策和使用条款的所有 87 个字符串添加完整的 5 种语言翻译:

📝 隐私政策 (47 个键):
- 概述、本地模式、云端模式
- 权限说明、数据收集、数据存储
- 第三方服务、用户权利、联系方式

📝 使用条款 (40 个键):
- 接受条款、服务说明
- 订阅与内购(支付、续订、取消、退款)
- 使用限制(合法、个人、禁止滥用)
- 云端服务、免责声明
- 知识产权、条款变更、联系方式

 翻译质量:
- 所有 5 种语言 (es/ar/fr/ja/ko) 达到 100% 翻译
- 法律术语准确翻译
- 保持各语言的专业性和可读性

🌍 语言覆盖:
- 🇪🇸 西班牙语 (Español)
- 🇸🇦 阿拉伯语 (العربية)
- 🇫🇷 法语 (Français)
- 🇯🇵 日语 (日本語)
- 🇰🇷 韩语 (한국어)

总计: 87 键 × 5 语言 = 435 个专业翻译

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
empty
2026-01-10 14:49:26 +08:00
parent 565c92795a
commit 1c4725cff7
2 changed files with 645 additions and 435 deletions

View File

@@ -0,0 +1,210 @@
#!/usr/bin/env python3
"""
为隐私政策和使用条款添加多语言翻译
"""
import json
from pathlib import Path
# 隐私政策和使用条款的专业翻译
PRIVACY_TERMS_TRANSLATIONS = {
# 隐私政策 - 标题
"privacy.lastUpdated": {
"es": "Última actualización: diciembre de 2025",
"ar": "آخر تحديث: ديسمبر 2025",
"fr": "Dernière mise à jour : décembre 2025",
"ja": "最終更新2025年12月",
"ko": "최종 업데이트: 2025년 12월"
},
"privacy.overview.title": {
"es": "Resumen",
"ar": "نظرة عامة",
"fr": "Aperçu",
"ja": "概要",
"ko": "개요"
},
"privacy.overview.intro1": {
"es": "Live Photo Maker (en adelante \"la App\") respeta y protege su privacidad. Esta Política de Privacidad explica cómo recopilamos, usamos y protegemos su información.",
"ar": "يحترم Live Photo Maker (المشار إليه فيما يلي باسم \"التطبيق\") خصوصيتك ويحميها. توضح سياسة الخصوصية هذه كيفية جمع معلوماتك واستخدامها وحمايتها.",
"fr": "Live Photo Maker (ci-après \"l'App\") respecte et protège votre vie privée. Cette Politique de Confidentialité explique comment nous collectons, utilisons et protégeons vos informations.",
"ja": "Live Photo Maker以下「本アプリ」はお客様のプライバシーを尊重し保護します。このプライバシーポリシーでは、情報の収集、使用、保護方法について説明します。",
"ko": "Live Photo Maker(이하 \"\")는 귀하의 개인정보를 존중하고 보호합니다. 본 개인정보 보호정책은 정보 수집, 사용 및 보호 방법을 설명합니다."
},
"privacy.overview.intro2": {
"es": "La App ofrece dos modos de procesamiento: procesamiento local (gratis) y mejora en la nube (suscripción de pago). Los métodos de procesamiento de datos difieren según el modo.",
"ar": "يوفر التطبيق وضعين للمعالجة: المعالجة المحلية (مجانًا) والتحسين السحابي (اشتراك مدفوع). تختلف طرق معالجة البيانات حسب الوضع.",
"fr": "L'App propose deux modes de traitement : traitement local (gratuit) et amélioration cloud (abonnement payant). Les méthodes de traitement des données diffèrent selon le mode.",
"ja": "本アプリは2つの処理モードを提供しますローカル処理無料とクラウド強化有料サブスクリプション。データ処理方法はモードによって異なります。",
"ko": "앱은 두 가지 처리 모드를 제공합니다: 로컬 처리(무료) 및 클라우드 향상(유료 구독). 데이터 처리 방법은 모드에 따라 다릅니다."
},
# 本地模式
"privacy.localMode.title": {
"es": "Modo de Procesamiento Local (Gratis)",
"ar": "وضع المعالجة المحلية (مجاني)",
"fr": "Mode de Traitement Local (Gratuit)",
"ja": "ローカル処理モード(無料)",
"ko": "로컬 처리 모드(무료)"
},
"privacy.localMode.item1.title": {
"es": "Procesamiento en el dispositivo",
"ar": "المعالجة على الجهاز",
"fr": "Traitement sur l'appareil",
"ja": "デバイス上の処理",
"ko": "기기 내 처리"
},
"privacy.localMode.item1.desc": {
"es": "La conversión de video y la mejora de IA local se realizan en su dispositivo, los datos no salen de su teléfono.",
"ar": "يتم إجراء تحويل الفيديو والتحسين المحلي بالذكاء الاصطناعي على جهازك، ولا تغادر البيانات هاتفك.",
"fr": "La conversion vidéo et l'amélioration IA locale s'effectuent sur votre appareil, les données ne quittent pas votre téléphone.",
"ja": "動画変換とローカルAI強化はデバイス上で実行され、データは携帯電話から離れません。",
"ko": "동영상 변환 및 로컬 AI 향상은 기기에서 수행되며 데이터가 휴대폰을 떠나지 않습니다."
},
"privacy.localMode.item2.title": {
"es": "Sin carga de datos",
"ar": "لا توجد عملية تحميل بيانات",
"fr": "Aucun téléchargement de données",
"ja": "データアップロードなし",
"ko": "데이터 업로드 없음"
},
"privacy.localMode.item2.desc": {
"es": "Al usar el modo de procesamiento local, sus imágenes y videos no se cargan a ningún servidor.",
"ar": "عند استخدام وضع المعالجة المحلية، لا يتم تحميل صورك ومقاطع الفيديو الخاصة بك إلى أي خادم.",
"fr": "En mode de traitement local, vos images et vidéos ne sont pas téléchargées vers un serveur.",
"ja": "ローカル処理モードを使用する場合、画像や動画はサーバーにアップロードされません。",
"ko": "로컬 처리 모드를 사용할 때 이미지와 동영상이 서버에 업로드되지 않습니다."
},
# 云端模式
"privacy.cloudMode.title": {
"es": "Modo de Mejora en la Nube (Pro)",
"ar": "وضع التحسين السحابي (Pro)",
"fr": "Mode d'Amélioration Cloud (Pro)",
"ja": "クラウド強化モードPro",
"ko": "클라우드 향상 모드(Pro)"
},
"privacy.cloudMode.item1.title": {
"es": "Transferencia de datos",
"ar": "نقل البيانات",
"fr": "Transfert de données",
"ja": "データ転送",
"ko": "데이터 전송"
},
"privacy.cloudMode.item1.desc": {
"es": "Al usar la mejora en la nube, las imágenes o fotogramas de video seleccionados se cargan al servidor a través de una conexión cifrada para su procesamiento.",
"ar": "عند استخدام التحسين السحابي، يتم تحميل الصور أو إطارات الفيديو المحددة إلى الخادم عبر اتصال مشفر للمعالجة.",
"fr": "Lors de l'utilisation de l'amélioration cloud, les images ou images vidéo sélectionnées sont téléchargées vers le serveur via une connexion chiffrée pour traitement.",
"ja": "クラウド強化を使用する場合、選択した画像または動画フレームは暗号化された接続を介してサーバーにアップロードされて処理されます。",
"ko": "클라우드 향상을 사용할 때 선택한 이미지 또는 동영상 프레임이 암호화된 연결을 통해 서버에 업로드되어 처리됩니다."
},
"privacy.cloudMode.item2.title": {
"es": "Eliminación instantánea",
"ar": "الحذف الفوري",
"fr": "Suppression instantanée",
"ja": "即時削除",
"ko": "즉시 삭제"
},
"privacy.cloudMode.item2.desc": {
"es": "Después del procesamiento, sus datos originales y resultados se eliminarán automáticamente del servidor en 24 horas.",
"ar": "بعد المعالجة، سيتم حذف بياناتك الأصلية والنتائج تلقائيًا من الخادم في غضون 24 ساعة.",
"fr": "Après le traitement, vos données d'origine et résultats seront automatiquement supprimés du serveur sous 24 heures.",
"ja": "処理後、元のデータと結果は24時間以内にサーバーから自動削除されます。",
"ko": "처리 후 원본 데이터와 결과가 24시간 이내에 서버에서 자동 삭제됩니다."
},
"privacy.cloudMode.item3.title": {
"es": "Seguridad de datos",
"ar": "أمان البيانات",
"fr": "Sécurité des données",
"ja": "データセキュリティ",
"ko": "데이터 보안"
},
"privacy.cloudMode.item3.desc": {
"es": "Todos los datos transferidos están cifrados de extremo a extremo, y los servidores están ubicados en centros de datos que cumplen con GDPR.",
"ar": "يتم تشفير جميع البيانات المنقولة من طرف إلى طرف، وتقع الخوادم في مراكز بيانات متوافقة مع اللائحة العامة لحماية البيانات.",
"fr": "Toutes les données transférées sont chiffrées de bout en bout, et les serveurs sont situés dans des centres de données conformes au RGPD.",
"ja": "すべての転送データはエンドツーエンドで暗号化され、サーバーはGDPR準拠のデータセンターに配置されています。",
"ko": "모든 전송 데이터는 엔드투엔드 암호화되며 서버는 GDPR 준수 데이터 센터에 위치합니다."
},
"privacy.cloudMode.warning": {
"es": "⚠️ La función de mejora en la nube requiere conexión de red y se le pedirá confirmación antes de cada uso.",
"ar": "⚠️ تتطلب وظيفة التحسين السحابي اتصال شبكة وسيتم طلب التأكيد قبل كل استخدام.",
"fr": "⚠️ La fonction d'amélioration cloud nécessite une connexion réseau et une confirmation vous sera demandée avant chaque utilisation.",
"ja": "⚠️ クラウド強化機能にはネットワーク接続が必要で、使用前に毎回確認が求められます。",
"ko": "⚠️ 클라우드 향상 기능은 네트워크 연결이 필요하며 사용 전 매번 확인을 요청합니다."
},
# 权限说明
"privacy.permissions.title": {
"es": "Explicación de Permisos",
"ar": "شرح الأذونات",
"fr": "Explication des Autorisations",
"ja": "権限説明",
"ko": "권한 설명"
},
"privacy.permissions.item1.title": {
"es": "Permiso de lectura del álbum",
"ar": "إذن قراءة الألبوم",
"fr": "Autorisation de lecture d'album",
"ja": "アルバム読み取り権限",
"ko": "앨범 읽기 권한"
},
"privacy.permissions.item1.desc": {
"es": "Para seleccionar material de video del álbum.",
"ar": "لتحديد مواد الفيديو من الألبوم.",
"fr": "Pour sélectionner du matériel vidéo de l'album.",
"ja": "アルバムから動画素材を選択するため。",
"ko": "앨범에서 동영상 자료를 선택하기 위함."
},
"privacy.permissions.item2.title": {
"es": "Permiso de escritura del álbum",
"ar": "إذن كتابة الألبوم",
"fr": "Autorisation d'écriture d'album",
"ja": "アルバム書き込み権限",
"ko": "앨범 쓰기 권한"
},
"privacy.permissions.item2.desc": {
"es": "Para guardar Live Photos generadas en el álbum.",
"ar": "لحفظ Live Photos المُنشأة في الألبوم.",
"fr": "Pour enregistrer les Live Photos générées dans l'album.",
"ja": "生成したLive Photoをアルバムに保存するため。",
"ko": "생성된 Live Photo를 앨범에 저장하기 위함."
},
"privacy.permissions.item3.title": {
"es": "Acceso a red (opcional)",
"ar": "الوصول إلى الشبكة (اختياري)",
"fr": "Accès réseau (optionnel)",
"ja": "ネットワークアクセス(オプション)",
"ko": "네트워크 액세스(선택사항)"
},
"privacy.permissions.item3.desc": {
"es": "Solo necesario al usar la función de mejora en la nube.",
"ar": "مطلوب فقط عند استخدام وظيفة التحسين السحابي.",
"fr": "Nécessaire uniquement lors de l'utilisation de la fonction d'amélioration cloud.",
"ja": "クラウド強化機能使用時のみ必要。",
"ko": "클라우드 향상 기능 사용 시에만 필요."
},
}
def main():
# 读取文件
xcstrings_path = Path("to-live-photo/to-live-photo/Localizable.xcstrings")
with open(xcstrings_path, 'r') as f:
data = json.load(f)
# 应用翻译
updated_count = 0
for key, translations in PRIVACY_TERMS_TRANSLATIONS.items():
if key in data["strings"]:
for lang, value in translations.items():
data["strings"][key]["localizations"][lang]["stringUnit"]["value"] = value
updated_count += 1
# 保存
with open(xcstrings_path, 'w') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print(f"✅ 已更新 {len(PRIVACY_TERMS_TRANSLATIONS)} 个键的翻译")
print(f" 总共 {updated_count} 个翻译单元")
if __name__ == "__main__":
main()

File diff suppressed because it is too large Load Diff