Files
to-live-photo/scripts/add_wallpaper_guide_strings.py

329 lines
19 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""为WallpaperGuideView添加国际化字符串"""
import json
# WallpaperGuideView需要添加的本地化字符串
STRINGS_TO_ADD = {
"wallpaper.title": {
"zh-Hans": "设置动态壁纸",
"zh-Hant": "設定動態桌布",
"en": "Set Live Wallpaper",
"es": "Configurar Fondo de Pantalla Dinámico",
"ar": "تعيين خلفية حية",
"fr": "Définir le Fond d'Écran Animé",
"ja": "ライブ壁紙を設定",
"ko": "라이브 배경화면 설정"
},
"wallpaper.ios17Required": {
"zh-Hans": "iOS 17+ 才支持锁屏动态效果",
"zh-Hant": "iOS 17+ 才支援鎖定畫面動態效果",
"en": "iOS 17+ required for lock screen animations",
"es": "iOS 17+ requerido para animaciones de pantalla de bloqueo",
"ar": "iOS 17+ مطلوب لتحريك شاشة القفل",
"fr": "iOS 17+ requis pour les animations d'écran de verrouillage",
"ja": "ロック画面のアニメーションにはiOS 17+が必要",
"ko": "잠금 화면 애니메이션에는 iOS 17+ 필요"
},
"wallpaper.openPhotosApp": {
"zh-Hans": "打开照片 App",
"zh-Hant": "開啟照片 App",
"en": "Open Photos App",
"es": "Abrir la App de Fotos",
"ar": "فتح تطبيق الصور",
"fr": "Ouvrir l'App Photos",
"ja": "写真Appを開く",
"ko": "사진 앱 열기"
},
"wallpaper.findSavedPhoto": {
"zh-Hans": "找到刚保存的 Live Photo",
"zh-Hant": "找到剛儲存的 Live Photo",
"en": "Find the saved Live Photo",
"es": "Encuentra la Live Photo guardada",
"ar": "ابحث عن Live Photo المحفوظة",
"fr": "Trouver la Live Photo enregistrée",
"ja": "保存したLive Photoを見つける",
"ko": "저장된 Live Photo 찾기"
},
"wallpaper.steps": {
"zh-Hans": "设置壁纸步骤",
"zh-Hant": "設定桌布步驟",
"en": "Wallpaper Setup Steps",
"es": "Pasos para Configurar el Fondo",
"ar": "خطوات إعداد الخلفية",
"fr": "Étapes de Configuration du Fond d'Écran",
"ja": "壁紙設定の手順",
"ko": "배경화면 설정 단계"
},
"wallpaper.step1.title": {
"zh-Hans": "在照片中找到 Live Photo",
"zh-Hant": "在照片中找到 Live Photo",
"en": "Find Live Photo in Photos",
"es": "Encuentra Live Photo en Fotos",
"ar": "ابحث عن Live Photo في الصور",
"fr": "Trouver Live Photo dans Photos",
"ja": "写真内でLive Photoを見つける",
"ko": "사진에서 Live Photo 찾기"
},
"wallpaper.step1.description": {
"zh-Hans": "照片左上角会显示【LIVE】标识长按可预览动画效果",
"zh-Hant": "照片左上角會顯示【LIVE】標識長按可預覽動畫效果",
"en": "Look for [LIVE] badge at top-left, long press to preview animation",
"es": "Busca la insignia [LIVE] arriba a la izquierda, mantén presionado para previsualizar",
"ar": "ابحث عن شارة [LIVE] في الأعلى يسارًا، اضغط مطولاً لمعاينة الحركة",
"fr": "Cherchez le badge [LIVE] en haut à gauche, appuyez longuement pour prévisualiser",
"ja": "左上の【LIVE】バッジを探し、長押しでアニメーションをプレビュー",
"ko": "왼쪽 상단의 [LIVE] 배지를 찾고 길게 눌러 미리보기"
},
"wallpaper.step2.title": {
"zh-Hans": "点击分享按钮",
"zh-Hant": "點擊分享按鈕",
"en": "Tap Share Button",
"es": "Toca el Botón Compartir",
"ar": "اضغط على زر المشاركة",
"fr": "Appuyez sur Partager",
"ja": "共有ボタンをタップ",
"ko": "공유 버튼 탭"
},
"wallpaper.step2.description": {
"zh-Hans": "位于屏幕左下角,然后选择【用作壁纸】选项",
"zh-Hant": "位於畫面左下角,然後選擇【用作桌布】選項",
"en": "Located at bottom-left, then select [Use as Wallpaper]",
"es": "Ubicado abajo a la izquierda, luego selecciona [Usar como Fondo]",
"ar": "موجود أسفل اليسار، ثم اختر [استخدام كخلفية]",
"fr": "En bas à gauche, puis sélectionnez [Utiliser comme Fond d'Écran]",
"ja": "左下にあり、【壁紙として使用】を選択",
"ko": "왼쪽 하단에 위치, 그런 다음 [배경화면으로 사용] 선택"
},
"wallpaper.step3.title": {
"zh-Hans": "调整照片位置",
"zh-Hant": "調整照片位置",
"en": "Adjust Photo Position",
"es": "Ajustar Posición de la Foto",
"ar": "ضبط موضع الصورة",
"fr": "Ajuster la Position de la Photo",
"ja": "写真の位置を調整",
"ko": "사진 위치 조정"
},
"wallpaper.step3.description": {
"zh-Hans": "双指缩放和拖动来调整照片在壁纸中的位置",
"zh-Hant": "雙指縮放和拖動來調整照片在桌布中的位置",
"en": "Pinch to zoom and drag to adjust photo position",
"es": "Pellizca para ampliar y arrastra para ajustar la posición",
"ar": "استخدم إصبعين للتكبير والسحب لضبط الموضع",
"fr": "Pincez pour zoomer et glissez pour ajuster la position",
"ja": "ピンチでズーム、ドラッグで位置を調整",
"ko": "두 손가락으로 확대/축소 및 드래그하여 위치 조정"
},
"wallpaper.step4.title": {
"zh-Hans": "确认动态效果已开启",
"zh-Hant": "確認動態效果已開啟",
"en": "Confirm Animation is Enabled",
"es": "Confirmar que la Animación está Activada",
"ar": "تأكد من تفعيل الحركة",
"fr": "Confirmer l'Activation de l'Animation",
"ja": "アニメーションが有効であることを確認",
"ko": "애니메이션이 활성화되었는지 확인"
},
"wallpaper.step4.description": {
"zh-Hans": "点击左下角的 Live Photo 图标,图标高亮表示动态效果已开启",
"zh-Hant": "點擊左下角的 Live Photo 圖示,圖示高亮表示動態效果已開啟",
"en": "Tap Live Photo icon at bottom-left, highlighted icon means animation is on",
"es": "Toca el ícono de Live Photo abajo a la izquierda, resaltado significa que está activado",
"ar": "اضغط على أيقونة Live Photo أسفل اليسار، التمييز يعني تشغيل الحركة",
"fr": "Appuyez sur l'icône Live Photo en bas à gauche, surbrillance = animation activée",
"ja": "左下のLive Photoアイコンをタップ、ハイライトは有効を意味する",
"ko": "왼쪽 하단의 Live Photo 아이콘 탭, 강조 표시는 활성화를 의미"
},
"wallpaper.step4iOS16.title": {
"zh-Hans": "了解系统限制",
"zh-Hant": "了解系統限制",
"en": "Understand System Limitations",
"es": "Comprender las Limitaciones del Sistema",
"ar": "فهم قيود النظام",
"fr": "Comprendre les Limitations du Système",
"ja": "システムの制限を理解",
"ko": "시스템 제한사항 이해"
},
"wallpaper.step4iOS16.description": {
"zh-Hans": "iOS 16 锁屏不支持动态效果,仅主屏幕长按可播放",
"zh-Hant": "iOS 16 鎖定畫面不支援動態效果,僅主畫面長按可播放",
"en": "iOS 16 lock screen doesn't support animations, only home screen long press works",
"es": "La pantalla de bloqueo de iOS 16 no admite animaciones, solo funciona mantener presionada la pantalla de inicio",
"ar": "شاشة قفل iOS 16 لا تدعم الحركة، فقط الضغط الطويل على الشاشة الرئيسية يعمل",
"fr": "L'écran de verrouillage iOS 16 ne supporte pas les animations, seul l'appui long sur l'écran d'accueil fonctionne",
"ja": "iOS 16ロック画面はアニメーション非対応、ホーム画面の長押しのみ動作",
"ko": "iOS 16 잠금 화면은 애니메이션 미지원, 홈 화면 길게 누르기만 작동"
},
"wallpaper.step5.title": {
"zh-Hans": "完成设置",
"zh-Hant": "完成設定",
"en": "Complete Setup",
"es": "Completar Configuración",
"ar": "إكمال الإعداد",
"fr": "Terminer la Configuration",
"ja": "設定を完了",
"ko": "설정 완료"
},
"wallpaper.step5.description": {
"zh-Hans": "点击右上角【完成】,选择【设定锁定屏幕】或【同时设定】",
"zh-Hant": "點擊右上角【完成】,選擇【設定鎖定畫面】或【同時設定】",
"en": "Tap [Done] at top-right, choose [Set Lock Screen] or [Set Both]",
"es": "Toca [Hecho] arriba a la derecha, elige [Definir Pantalla de Bloqueo] o [Definir Ambas]",
"ar": "اضغط على [تم] في الأعلى يمينًا، اختر [تعيين شاشة القفل] أو [تعيين كليهما]",
"fr": "Appuyez sur [Terminé] en haut à droite, choisissez [Définir Écran de Verrouillage] ou [Définir les Deux]",
"ja": "右上の【完了】をタップ、【ロック画面に設定】または【両方に設定】を選択",
"ko": "오른쪽 상단의 [완료] 탭, [잠금 화면 설정] 또는 [둘 다 설정] 선택"
},
"wallpaper.faq": {
"zh-Hans": "常见问题",
"zh-Hant": "常見問題",
"en": "Frequently Asked Questions",
"es": "Preguntas Frecuentes",
"ar": "الأسئلة الشائعة",
"fr": "Questions Fréquentes",
"ja": "よくある質問",
"ko": "자주 묻는 질문"
},
"wallpaper.faq1.question": {
"zh-Hans": "找不到刚保存的 Live Photo",
"zh-Hant": "找不到剛儲存的 Live Photo",
"en": "Can't find the saved Live Photo?",
"es": "¿No encuentras la Live Photo guardada?",
"ar": "لا يمكن العثور على Live Photo المحفوظة؟",
"fr": "Impossible de trouver la Live Photo enregistrée?",
"ja": "保存したLive Photoが見つからない",
"ko": "저장된 Live Photo를 찾을 수 없나요?"
},
"wallpaper.faq1.answer": {
"zh-Hans": "打开照片 App → 相簿 → 媒体类型 → 实况照片,或直接搜索【实况】",
"zh-Hant": "開啟照片 App → 相簿 → 媒體類型 → 原況照片,或直接搜尋【原況】",
"en": "Open Photos → Albums → Media Types → Live Photos, or search [Live]",
"es": "Abre Fotos → Álbumes → Tipos de Medios → Live Photos, o busca [Live]",
"ar": "افتح الصور ← الألبومات ← أنواع الوسائط ← Live Photos، أو ابحث عن [Live]",
"fr": "Ouvrez Photos → Albums → Types de Médias → Live Photos, ou recherchez [Live]",
"ja": "写真 → アルバム → メディアタイプ → Live Photos を開く、または【Live】を検索",
"ko": "사진 열기 → 앨범 → 미디어 유형 → Live Photos, 또는 [Live] 검색"
},
"wallpaper.faq2.question": {
"zh-Hans": "设置后壁纸不会动?",
"zh-Hant": "設定後桌布不會動?",
"en": "Wallpaper doesn't animate after setting?",
"es": "¿El fondo no se anima después de configurarlo?",
"ar": "الخلفية لا تتحرك بعد التعيين؟",
"fr": "Le fond d'écran ne s'anime pas après configuration?",
"ja": "設定後に壁紙がアニメーションしない?",
"ko": "설정 후 배경화면이 움직이지 않나요?"
},
"wallpaper.faq2.answer": {
"zh-Hans": "锁屏状态下长按屏幕 1-2 秒可触发动画播放(需 iOS 17+",
"zh-Hant": "鎖定畫面狀態下長按畫面 1-2 秒可觸發動畫播放(需 iOS 17+",
"en": "Long press the lock screen for 1-2 seconds to trigger animation (requires iOS 17+)",
"es": "Mantén presionada la pantalla de bloqueo durante 1-2 segundos para activar la animación (requiere iOS 17+)",
"ar": "اضغط مطولاً على شاشة القفل لمدة 1-2 ثانية لتشغيل الحركة (يتطلب iOS 17+)",
"fr": "Appuyez longuement sur l'écran de verrouillage pendant 1-2 secondes pour déclencher l'animation (nécessite iOS 17+)",
"ja": "ロック画面を1〜2秒長押しでアニメーションを再生iOS 17+必要)",
"ko": "잠금 화면을 1-2초간 길게 눌러 애니메이션 재생 (iOS 17+ 필요)"
},
"wallpaper.faq3.question": {
"zh-Hans": "动画效果突然失效?",
"zh-Hant": "動畫效果突然失效?",
"en": "Animation suddenly stopped working?",
"es": "¿La animación dejó de funcionar repentinamente?",
"ar": "توقفت الحركة عن العمل فجأة؟",
"fr": "L'animation a soudainement cessé de fonctionner?",
"ja": "アニメーションが突然動作しなくなった?",
"ko": "애니메이션이 갑자기 작동하지 않나요?"
},
"wallpaper.faq3.answer": {
"zh-Hans": "检查是否开启了【低电量模式】,该模式下系统会自动禁用动态效果以省电",
"zh-Hant": "檢查是否開啟了【低耗電模式】,該模式下系統會自動停用動態效果以省電",
"en": "Check if [Low Power Mode] is enabled, it automatically disables animations to save battery",
"es": "Verifica si el [Modo de Bajo Consumo] está activado, desactiva automáticamente las animaciones para ahorrar batería",
"ar": "تحقق من تفعيل [وضع الطاقة المنخفضة]، فهو يعطل الحركة تلقائيًا لتوفير البطارية",
"fr": "Vérifiez si le [Mode Économie d'Énergie] est activé, il désactive automatiquement les animations pour économiser la batterie",
"ja": "【低電力モード】が有効か確認、このモードでは省電力のためアニメーションが自動的に無効になります",
"ko": "[저전력 모드]가 활성화되어 있는지 확인, 배터리 절약을 위해 애니메이션이 자동으로 비활성화됩니다"
},
"wallpaper.faq4.question": {
"zh-Hans": "Live Photo 图标是灰色/划线?",
"zh-Hant": "Live Photo 圖示是灰色/劃線?",
"en": "Live Photo icon is gray/crossed out?",
"es": "¿El ícono de Live Photo está en gris/tachado?",
"ar": "أيقونة Live Photo رمادية/مشطوبة؟",
"fr": "L'icône Live Photo est grise/barrée?",
"ja": "Live Photoアイコンがグレー/取り消し線?",
"ko": "Live Photo 아이콘이 회색/취소선이 있나요?"
},
"wallpaper.faq4.answer": {
"zh-Hans": "iOS 对壁纸有额外限制,部分 Live Photo 可能不支持作为动态壁纸。建议使用 2-3 秒时长、竖屏比例的视频重新生成",
"zh-Hant": "iOS 對桌布有額外限制,部分 Live Photo 可能不支援作為動態桌布。建議使用 2-3 秒時長、直向比例的影片重新產生",
"en": "iOS has extra wallpaper restrictions, some Live Photos may not work. Try regenerating with a 2-3 second portrait video",
"es": "iOS tiene restricciones adicionales, algunos Live Photos pueden no funcionar. Intenta regenerar con un video vertical de 2-3 segundos",
"ar": "iOS لديه قيود إضافية، بعض Live Photos قد لا تعمل. حاول إعادة الإنشاء باستخدام فيديو عمودي بطول 2-3 ثانية",
"fr": "iOS a des restrictions supplémentaires, certaines Live Photos peuvent ne pas fonctionner. Essayez de régénérer avec une vidéo portrait de 2-3 secondes",
"ja": "iOSには追加の壁紙制限があり、一部のLive Photoが機能しない場合があります。2〜3秒の縦向き動画で再生成してみてください",
"ko": "iOS에는 추가 배경화면 제한이 있어 일부 Live Photo가 작동하지 않을 수 있습니다. 2-3초 길이의 세로 비디오로 다시 생성해 보세요"
},
"wallpaper.faq5.question": {
"zh-Hans": "为什么我的锁屏没有动画?",
"zh-Hant": "為什麼我的鎖定畫面沒有動畫?",
"en": "Why doesn't my lock screen have animation?",
"es": "¿Por qué mi pantalla de bloqueo no tiene animación?",
"ar": "لماذا لا تحتوي شاشة القفل على حركة؟",
"fr": "Pourquoi mon écran de verrouillage n'a-t-il pas d'animation?",
"ja": "なぜロック画面にアニメーションがないのですか?",
"ko": "왜 내 잠금 화면에 애니메이션이 없나요?"
},
"wallpaper.faq5.answer": {
"zh-Hans": "iOS 16 系统限制:锁屏壁纸不支持 Live Photo 动画,建议升级到 iOS 17+",
"zh-Hant": "iOS 16 系統限制:鎖定畫面桌布不支援 Live Photo 動畫,建議升級到 iOS 17+",
"en": "iOS 16 limitation: lock screen wallpapers don't support Live Photo animations, upgrade to iOS 17+",
"es": "Limitación de iOS 16: los fondos de pantalla de bloqueo no admiten animaciones de Live Photo, actualiza a iOS 17+",
"ar": "قيد iOS 16: خلفيات شاشة القفل لا تدعم حركة Live Photo، قم بالترقية إلى iOS 17+",
"fr": "Limitation iOS 16 : les fonds d'écran de verrouillage ne supportent pas les animations Live Photo, passez à iOS 17+",
"ja": "iOS 16の制限ロック画面壁紙はLive Photoアニメーション非対応、iOS 17+へのアップグレードを推奨",
"ko": "iOS 16 제한: 잠금 화면 배경화면은 Live Photo 애니메이션 미지원, iOS 17+로 업그레이드하세요"
}
}
def main():
xcstrings_path = "/Users/yuanjiantsui/projects/to-live-photo/to-live-photo/to-live-photo/Localizable.xcstrings"
# 读取现有文件
with open(xcstrings_path, 'r', encoding='utf-8') as f:
data = json.load(f)
# 添加新的字符串
added_count = 0
for key, translations in STRINGS_TO_ADD.items():
if key in data["strings"]:
print(f"⚠️ Key '{key}' already exists, skipping...")
continue
data["strings"][key] = {
"extractionState": "manual",
"localizations": {}
}
for lang, value in translations.items():
data["strings"][key]["localizations"][lang] = {
"stringUnit": {
"state": "translated",
"value": value
}
}
added_count += 1
print(f"✅ Added: {key}")
# 写回文件(保持格式化)
with open(xcstrings_path, 'w', encoding='utf-8') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print(f"\n🎉 Successfully added {added_count} new keys!")
print(f"📁 Updated: {xcstrings_path}")
if __name__ == "__main__":
main()