329 lines
19 KiB
Python
329 lines
19 KiB
Python
#!/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()
|