diff --git a/scripts/add_all_missing_i18n.py b/scripts/add_all_missing_i18n.py new file mode 100644 index 0000000..18eef9f --- /dev/null +++ b/scripts/add_all_missing_i18n.py @@ -0,0 +1,793 @@ +#!/usr/bin/env python3 +"""添加所有遗漏的国际化字符串 - 全面覆盖Views目录""" + +import json + +# 所有需要添加的本地化字符串(超过100个) +ALL_MISSING_STRINGS = { + # EditorView - 导航和基础 + "editor.title": { + "zh-Hans": "编辑", + "zh-Hant": "編輯", + "en": "Edit", + "es": "Editar", + "ar": "تحرير", + "fr": "Modifier", + "ja": "編集", + "ko": "편집" + }, + + # EditorView - 封面帧 + "editor.coverFrameHint1": { + "zh-Hans": "此图片将作为 Live Photo 的静态封面", + "zh-Hant": "此圖片將作為 Live Photo 的靜態封面", + "en": "This image will be the static cover of Live Photo", + "es": "Esta imagen será la portada estática de Live Photo", + "ar": "ستكون هذه الصورة الغلاف الثابت لـ Live Photo", + "fr": "Cette image sera la couverture statique de Live Photo", + "ja": "この画像がLive Photoの静止画カバーになります", + "ko": "이 이미지가 Live Photo의 정적 커버가 됩니다" + }, + "editor.coverFrameHint2": { + "zh-Hans": "拖动下方滑杆选择封面时刻", + "zh-Hant": "拖動下方滑桿選擇封面時刻", + "en": "Drag the slider below to select cover moment", + "es": "Arrastra el control deslizante para seleccionar el momento de portada", + "ar": "اسحب شريط التمرير أدناه لاختيار لحظة الغلاف", + "fr": "Faites glisser le curseur ci-dessous pour sélectionner le moment de couverture", + "ja": "下のスライダーをドラッグしてカバーの瞬間を選択", + "ko": "아래 슬라이더를 드래그하여 커버 순간 선택" + }, + + # EditorView - 时长控制 + "editor.videoDuration": { + "zh-Hans": "视频时长", + "zh-Hant": "影片時長", + "en": "Video Duration", + "es": "Duración del Video", + "ar": "مدة الفيديو", + "fr": "Durée de la Vidéo", + "ja": "ビデオの長さ", + "ko": "비디오 길이" + }, + "editor.durationSeconds": { + "zh-Hans": "%.1f 秒", + "zh-Hant": "%.1f 秒", + "en": "%.1f sec", + "es": "%.1f seg", + "ar": "%.1f ث", + "fr": "%.1f s", + "ja": "%.1f 秒", + "ko": "%.1f 초" + }, + "editor.durationHint": { + "zh-Hans": "Live Photo 壁纸推荐时长:1 ~ 1.5 秒", + "zh-Hant": "Live Photo 桌布建議時長:1 ~ 1.5 秒", + "en": "Live Photo wallpaper recommended duration: 1-1.5 seconds", + "es": "Duración recomendada para fondo Live Photo: 1-1.5 segundos", + "ar": "المدة الموصى بها لخلفية Live Photo: 1-1.5 ثانية", + "fr": "Durée recommandée pour fond d'écran Live Photo: 1-1.5 secondes", + "ja": "Live Photo壁紙推奨時間:1〜1.5秒", + "ko": "Live Photo 배경화면 권장 길이: 1-1.5초" + }, + + # EditorView - 封面时刻 + "editor.keyFrameTime": { + "zh-Hans": "封面时刻", + "zh-Hant": "封面時刻", + "en": "Cover Moment", + "es": "Momento de Portada", + "ar": "لحظة الغلاف", + "fr": "Moment de Couverture", + "ja": "カバーの瞬間", + "ko": "커버 순간" + }, + "editor.keyFrameSeconds": { + "zh-Hans": "%.2f 秒", + "zh-Hant": "%.2f 秒", + "en": "%.2f sec", + "es": "%.2f seg", + "ar": "%.2f ث", + "fr": "%.2f s", + "ja": "%.2f 秒", + "ko": "%.2f 초" + }, + "editor.keyFrameHint": { + "zh-Hans": "选择视频中的某一帧作为 Live Photo 的封面", + "zh-Hant": "選擇影片中的某一幀作為 Live Photo 的封面", + "en": "Select a frame from the video as the Live Photo cover", + "es": "Selecciona un fotograma del video como portada de Live Photo", + "ar": "اختر إطارًا من الفيديو كغلاف لـ Live Photo", + "fr": "Sélectionnez une image de la vidéo comme couverture Live Photo", + "ja": "ビデオからフレームを選択してLive Photoのカバーにする", + "ko": "비디오에서 프레임을 선택하여 Live Photo 커버로 사용" + }, + + # EditorView - AI超分辨率 + "editor.aiEnhance": { + "zh-Hans": "AI 超分辨率", + "zh-Hant": "AI 超解析度", + "en": "AI Super Resolution", + "es": "Súper Resolución IA", + "ar": "الدقة الفائقة بالذكاء الاصطناعي", + "fr": "Super Résolution IA", + "ja": "AI超解像度", + "ko": "AI 초해상도" + }, + "editor.aiEnhanceDescription": { + "zh-Hans": "使用 AI 提升封面画质", + "zh-Hant": "使用 AI 提升封面畫質", + "en": "Use AI to enhance cover quality", + "es": "Usa IA para mejorar la calidad de la portada", + "ar": "استخدم الذكاء الاصطناعي لتحسين جودة الغلاف", + "fr": "Utilisez l'IA pour améliorer la qualité de la couverture", + "ja": "AIを使ってカバーの画質を向上", + "ko": "AI를 사용하여 커버 품질 향상" + }, + "editor.aiModelDownloading": { + "zh-Hans": "正在下载 AI 模型...", + "zh-Hant": "正在下載 AI 模型...", + "en": "Downloading AI model...", + "es": "Descargando modelo de IA...", + "ar": "جارٍ تنزيل نموذج الذكاء الاصطناعي...", + "fr": "Téléchargement du modèle IA...", + "ja": "AIモデルをダウンロード中...", + "ko": "AI 모델 다운로드 중..." + }, + "editor.aiModelDownloadHint": { + "zh-Hans": "首次使用需下载 AI 模型(约 64MB)", + "zh-Hant": "首次使用需下載 AI 模型(約 64MB)", + "en": "First-time use requires downloading AI model (~64MB)", + "es": "El primer uso requiere descargar el modelo de IA (~64MB)", + "ar": "الاستخدام الأول يتطلب تنزيل نموذج الذكاء الاصطناعي (~64 ميجابايت)", + "fr": "La première utilisation nécessite le téléchargement du modèle IA (~64Mo)", + "ja": "初回使用時にAIモデルのダウンロードが必要(約64MB)", + "ko": "첫 사용 시 AI 모델 다운로드 필요 (~64MB)" + }, + "editor.aiResolutionBoost": { + "zh-Hans": "分辨率提升约 2 倍", + "zh-Hant": "解析度提升約 2 倍", + "en": "Resolution increased by ~2x", + "es": "Resolución aumentada ~2x", + "ar": "زيادة الدقة بحوالي 2×", + "fr": "Résolution augmentée d'environ 2×", + "ja": "解像度が約2倍向上", + "ko": "해상도 약 2배 증가" + }, + "editor.aiProcessingTime": { + "zh-Hans": "处理时间:约 2-3 秒", + "zh-Hant": "處理時間:約 2-3 秒", + "en": "Processing time: ~2-3 seconds", + "es": "Tiempo de procesamiento: ~2-3 segundos", + "ar": "وقت المعالجة: حوالي 2-3 ثواني", + "fr": "Temps de traitement: ~2-3 secondes", + "ja": "処理時間:約2〜3秒", + "ko": "처리 시간: 약 2-3초" + }, + "editor.aiLocalProcessing": { + "zh-Hans": "本地 AI 处理,无需网络", + "zh-Hant": "本地 AI 處理,無需網路", + "en": "Local AI processing, no network required", + "es": "Procesamiento IA local, no requiere red", + "ar": "معالجة محلية بالذكاء الاصطناعي، لا تحتاج إلى شبكة", + "fr": "Traitement IA local, pas de réseau nécessaire", + "ja": "ローカルAI処理、ネットワーク不要", + "ko": "로컬 AI 처리, 네트워크 불필요" + }, + "editor.aiNotSupported": { + "zh-Hans": "当前设备不支持 AI 增强", + "zh-Hant": "目前裝置不支援 AI 增強", + "en": "Current device doesn't support AI enhancement", + "es": "El dispositivo actual no admite mejora de IA", + "ar": "الجهاز الحالي لا يدعم تحسين الذكاء الاصطناعي", + "fr": "L'appareil actuel ne prend pas en charge l'amélioration IA", + "ja": "現在のデバイスはAI強化に対応していません", + "ko": "현재 기기는 AI 향상을 지원하지 않습니다" + }, + + # EditorView - 兼容模式 + "editor.compatibilityMode": { + "zh-Hans": "兼容模式", + "zh-Hant": "相容模式", + "en": "Compatibility Mode", + "es": "Modo de Compatibilidad", + "ar": "وضع التوافق", + "fr": "Mode de Compatibilité", + "ja": "互換性モード", + "ko": "호환성 모드" + }, + "editor.compatibilityDescription": { + "zh-Hans": "适用于较旧设备或生成失败时", + "zh-Hant": "適用於較舊裝置或產生失敗時", + "en": "For older devices or when generation fails", + "es": "Para dispositivos antiguos o cuando falla la generación", + "ar": "للأجهزة القديمة أو عند فشل الإنشاء", + "fr": "Pour les appareils plus anciens ou en cas d'échec de génération", + "ja": "古いデバイスまたは生成失敗時に使用", + "ko": "구형 기기 또는 생성 실패 시 사용" + }, + "editor.resolution720p": { + "zh-Hans": "分辨率:720p", + "zh-Hant": "解析度:720p", + "en": "Resolution: 720p", + "es": "Resolución: 720p", + "ar": "الدقة: 720p", + "fr": "Résolution: 720p", + "ja": "解像度:720p", + "ko": "해상도: 720p" + }, + "editor.framerate30fps": { + "zh-Hans": "帧率:30fps", + "zh-Hant": "畫面更新率:30fps", + "en": "Frame rate: 30fps", + "es": "Fotogramas: 30fps", + "ar": "معدل الإطارات: 30fps", + "fr": "Fréquence d'images: 30fps", + "ja": "フレームレート:30fps", + "ko": "프레임 속도: 30fps" + }, + "editor.codecH264": { + "zh-Hans": "编码:H.264", + "zh-Hant": "編碼:H.264", + "en": "Codec: H.264", + "es": "Códec: H.264", + "ar": "الترميز: H.264", + "fr": "Codec: H.264", + "ja": "コーデック:H.264", + "ko": "코덱: H.264" + }, + "editor.colorSDR": { + "zh-Hans": "色彩:SDR", + "zh-Hant": "色彩:SDR", + "en": "Color: SDR", + "es": "Color: SDR", + "ar": "اللون: SDR", + "fr": "Couleur: SDR", + "ja": "色:SDR", + "ko": "색상: SDR" + }, + + # EditorView - 诊断 + "editor.videoDiagnosis": { + "zh-Hans": "视频检测", + "zh-Hant": "影片檢測", + "en": "Video Detection", + "es": "Detección de Video", + "ar": "كشف الفيديو", + "fr": "Détection de Vidéo", + "ja": "ビデオ検出", + "ko": "비디오 감지" + }, + "editor.diagnosisHDR": { + "zh-Hans": "HDR 视频", + "zh-Hant": "HDR 影片", + "en": "HDR Video", + "es": "Video HDR", + "ar": "فيديو HDR", + "fr": "Vidéo HDR", + "ja": "HDR ビデオ", + "ko": "HDR 비디오" + }, + "editor.diagnosisHDRDesc": { + "zh-Hans": "将自动转换为 SDR 以确保兼容性", + "zh-Hant": "將自動轉換為 SDR 以確保相容性", + "en": "Will be automatically converted to SDR for compatibility", + "es": "Se convertirá automáticamente a SDR para compatibilidad", + "ar": "سيتم التحويل تلقائيًا إلى SDR للتوافق", + "fr": "Sera automatiquement converti en SDR pour la compatibilité", + "ja": "互換性のため自動的にSDRに変換されます", + "ko": "호환성을 위해 자동으로 SDR로 변환됩니다" + }, + "editor.diagnosisHighRes": { + "zh-Hans": "高分辨率视频", + "zh-Hant": "高解析度影片", + "en": "High Resolution Video", + "es": "Video de Alta Resolución", + "ar": "فيديو عالي الدقة", + "fr": "Vidéo Haute Résolution", + "ja": "高解像度ビデオ", + "ko": "고해상도 비디오" + }, + "editor.diagnosisHighResDesc": { + "zh-Hans": "建议开启兼容模式以加快处理速度", + "zh-Hant": "建議開啟相容模式以加快處理速度", + "en": "Recommend enabling compatibility mode for faster processing", + "es": "Se recomienda habilitar el modo de compatibilidad para procesamiento más rápido", + "ar": "يوصى بتفعيل وضع التوافق لمعالجة أسرع", + "fr": "Recommandé d'activer le mode de compatibilité pour un traitement plus rapide", + "ja": "処理速度を上げるため互換性モードの有効化を推奨", + "ko": "더 빠른 처리를 위해 호환성 모드 활성화 권장" + }, + "editor.diagnosisHighResAction": { + "zh-Hans": "开启兼容模式", + "zh-Hant": "開啟相容模式", + "en": "Enable Compatibility Mode", + "es": "Habilitar Modo de Compatibilidad", + "ar": "تفعيل وضع التوافق", + "fr": "Activer le Mode de Compatibilité", + "ja": "互換性モードを有効にする", + "ko": "호환성 모드 활성화" + }, + "editor.diagnosisHighFrameRate": { + "zh-Hans": "高帧率视频", + "zh-Hant": "高畫面更新率影片", + "en": "High Frame Rate Video", + "es": "Video de Alta Tasa de Fotogramas", + "ar": "فيديو عالي معدل الإطارات", + "fr": "Vidéo à Fréquence d'Images Élevée", + "ja": "高フレームレートビデオ", + "ko": "고프레임 비디오" + }, + "editor.diagnosisHighFrameRateDesc": { + "zh-Hans": "将自动转换为 60fps", + "zh-Hant": "將自動轉換為 60fps", + "en": "Will be automatically converted to 60fps", + "es": "Se convertirá automáticamente a 60fps", + "ar": "سيتم التحويل تلقائيًا إلى 60fps", + "fr": "Sera automatiquement converti en 60fps", + "ja": "自動的に60fpsに変換されます", + "ko": "자동으로 60fps로 변환됩니다" + }, + "editor.generateButton": { + "zh-Hans": "生成 Live Photo", + "zh-Hant": "產生 Live Photo", + "en": "Generate Live Photo", + "es": "Generar Live Photo", + "ar": "إنشاء Live Photo", + "fr": "Générer Live Photo", + "ja": "Live Photoを生成", + "ko": "Live Photo 생성" + }, + + # ProcessingView + "processing.title": { + "zh-Hans": "生成中", + "zh-Hant": "產生中", + "en": "Generating", + "es": "Generando", + "ar": "جارٍ الإنشاء", + "fr": "Génération", + "ja": "生成中", + "ko": "생성 중" + }, + "processing.cancel": { + "zh-Hans": "取消", + "zh-Hant": "取消", + "en": "Cancel", + "es": "Cancelar", + "ar": "إلغاء", + "fr": "Annuler", + "ja": "キャンセル", + "ko": "취소" + }, + "processing.backToRetry": { + "zh-Hans": "返回重试", + "zh-Hant": "返回重試", + "en": "Back to Retry", + "es": "Volver a Reintentar", + "ar": "العودة للمحاولة مرة أخرى", + "fr": "Retour pour Réessayer", + "ja": "戻って再試行", + "ko": "돌아가서 다시 시도" + }, + "processing.preparing": { + "zh-Hans": "准备中...", + "zh-Hant": "準備中...", + "en": "Preparing...", + "es": "Preparando...", + "ar": "جارٍ التحضير...", + "fr": "Préparation...", + "ja": "準備中...", + "ko": "준비 중..." + }, + "processing.normalizeTitle": { + "zh-Hans": "预处理视频", + "zh-Hant": "預先處理影片", + "en": "Preprocessing Video", + "es": "Preprocesando Video", + "ar": "معالجة الفيديو مسبقًا", + "fr": "Prétraitement de la Vidéo", + "ja": "ビデオを前処理", + "ko": "비디오 사전 처리" + }, + "processing.normalizeDesc": { + "zh-Hans": "调整视频分辨率和帧率", + "zh-Hant": "調整影片解析度和畫面更新率", + "en": "Adjusting video resolution and frame rate", + "es": "Ajustando resolución y tasa de fotogramas", + "ar": "ضبط دقة الفيديو ومعدل الإطارات", + "fr": "Ajustement de la résolution et de la fréquence d'images", + "ja": "ビデオ解像度とフレームレートを調整", + "ko": "비디오 해상도 및 프레임 속도 조정" + }, + "processing.extractKeyFrameTitle": { + "zh-Hans": "提取封面帧", + "zh-Hant": "提取封面幀", + "en": "Extracting Cover Frame", + "es": "Extrayendo Fotograma de Portada", + "ar": "استخراج إطار الغلاف", + "fr": "Extraction de l'Image de Couverture", + "ja": "カバーフレームを抽出", + "ko": "커버 프레임 추출" + }, + "processing.extractKeyFrameDesc": { + "zh-Hans": "从视频中提取封面图片", + "zh-Hant": "從影片中提取封面圖片", + "en": "Extracting cover image from video", + "es": "Extrayendo imagen de portada del video", + "ar": "استخراج صورة الغلاف من الفيديو", + "fr": "Extraction de l'image de couverture de la vidéo", + "ja": "ビデオからカバー画像を抽出", + "ko": "비디오에서 커버 이미지 추출" + }, + "processing.aiEnhanceTitle": { + "zh-Hans": "AI 增强封面", + "zh-Hant": "AI 增強封面", + "en": "AI Enhancing Cover", + "es": "Mejorando Portada con IA", + "ar": "تحسين الغلاف بالذكاء الاصطناعي", + "fr": "Amélioration de la Couverture par IA", + "ja": "AIでカバーを強化", + "ko": "AI 커버 향상" + }, + "processing.aiEnhanceDesc": { + "zh-Hans": "使用 AI 提升封面画质,约 2-3 秒", + "zh-Hant": "使用 AI 提升封面畫質,約 2-3 秒", + "en": "Using AI to enhance cover quality, ~2-3 seconds", + "es": "Usando IA para mejorar la calidad de portada, ~2-3 segundos", + "ar": "استخدام الذكاء الاصطناعي لتحسين جودة الغلاف، ~2-3 ثواني", + "fr": "Utilisation de l'IA pour améliorer la qualité de couverture, ~2-3 secondes", + "ja": "AIで画質を向上、約2〜3秒", + "ko": "AI를 사용한 품질 향상, 약 2-3초" + }, + "processing.writePhotoMetadataTitle": { + "zh-Hans": "写入图片元数据", + "zh-Hant": "寫入圖片元資料", + "en": "Writing Photo Metadata", + "es": "Escribiendo Metadatos de Foto", + "ar": "كتابة بيانات الصورة الوصفية", + "fr": "Écriture des Métadonnées de Photo", + "ja": "写真メタデータを書き込み", + "ko": "사진 메타데이터 작성" + }, + "processing.writePhotoMetadataDesc": { + "zh-Hans": "添加 Live Photo 必要的元数据", + "zh-Hant": "新增 Live Photo 必要的元資料", + "en": "Adding necessary metadata for Live Photo", + "es": "Agregando metadatos necesarios para Live Photo", + "ar": "إضافة البيانات الوصفية الضرورية لـ Live Photo", + "fr": "Ajout des métadonnées nécessaires pour Live Photo", + "ja": "Live Photoに必要なメタデータを追加", + "ko": "Live Photo에 필요한 메타데이터 추가" + }, + "processing.writeVideoMetadataTitle": { + "zh-Hans": "写入视频元数据", + "zh-Hant": "寫入影片元資料", + "en": "Writing Video Metadata", + "es": "Escribiendo Metadatos de Video", + "ar": "كتابة بيانات الفيديو الوصفية", + "fr": "Écriture des Métadonnées de Vidéo", + "ja": "ビデオメタデータを書き込み", + "ko": "비디오 메타데이터 작성" + }, + "processing.writeVideoMetadataDesc": { + "zh-Hans": "处理配对视频的元数据", + "zh-Hant": "處理配對影片的元資料", + "en": "Processing paired video metadata", + "es": "Procesando metadatos del video emparejado", + "ar": "معالجة بيانات الفيديو المقترن الوصفية", + "fr": "Traitement des métadonnées de la vidéo appairée", + "ja": "ペアリングビデオのメタデータを処理", + "ko": "페어링된 비디오 메타데이터 처리" + }, + "processing.saveToAlbumTitle": { + "zh-Hans": "保存到相册", + "zh-Hant": "儲存到相簿", + "en": "Saving to Album", + "es": "Guardando en Álbum", + "ar": "الحفظ في الألبوم", + "fr": "Enregistrement dans l'Album", + "ja": "アルバムに保存", + "ko": "앨범에 저장" + }, + "processing.saveToAlbumDesc": { + "zh-Hans": "正在保存到系统相册", + "zh-Hant": "正在儲存到系統相簿", + "en": "Saving to system photo library", + "es": "Guardando en la biblioteca de fotos del sistema", + "ar": "الحفظ في مكتبة صور النظام", + "fr": "Enregistrement dans la bibliothèque photos du système", + "ja": "システムフォトライブラリに保存中", + "ko": "시스템 사진 라이브러리에 저장 중" + }, + "processing.validateTitle": { + "zh-Hans": "校验 Live Photo", + "zh-Hant": "校驗 Live Photo", + "en": "Validating Live Photo", + "es": "Validando Live Photo", + "ar": "التحقق من Live Photo", + "fr": "Validation de Live Photo", + "ja": "Live Photoを検証", + "ko": "Live Photo 검증" + }, + "processing.validateDesc": { + "zh-Hans": "验证 Live Photo 是否正确生成", + "zh-Hant": "驗證 Live Photo 是否正確產生", + "en": "Verifying Live Photo was generated correctly", + "es": "Verificando que Live Photo se generó correctamente", + "ar": "التحقق من إنشاء Live Photo بشكل صحيح", + "fr": "Vérification de la génération correcte de Live Photo", + "ja": "Live Photoが正しく生成されたか検証", + "ko": "Live Photo가 올바르게 생성되었는지 확인" + }, + "processing.initializingDesc": { + "zh-Hans": "正在初始化...", + "zh-Hant": "正在初始化...", + "en": "Initializing...", + "es": "Inicializando...", + "ar": "جارٍ التهيئة...", + "fr": "Initialisation...", + "ja": "初期化中...", + "ko": "초기화 중..." + }, + + # ResultView + "result.title": { + "zh-Hans": "完成", + "zh-Hant": "完成", + "en": "Done", + "es": "Hecho", + "ar": "تم", + "fr": "Terminé", + "ja": "完了", + "ko": "완료" + }, + "result.savedDescription": { + "zh-Hans": "已保存到系统相册,可以设置为动态壁纸", + "zh-Hant": "已儲存到系統相簿,可以設定為動態桌布", + "en": "Saved to photo library, can be set as live wallpaper", + "es": "Guardado en biblioteca de fotos, se puede configurar como fondo dinámico", + "ar": "تم الحفظ في مكتبة الصور، يمكن تعيينه كخلفية حية", + "fr": "Enregistré dans la bibliothèque photos, peut être défini comme fond d'écran animé", + "ja": "フォトライブラリに保存されました、ライブ壁紙として設定できます", + "ko": "사진 라이브러리에 저장됨, 라이브 배경화면으로 설정 가능" + }, + "result.validationBadge": { + "zh-Hans": "资源校验", + "zh-Hant": "資源校驗", + "en": "Resource Verified", + "es": "Recurso Verificado", + "ar": "تم التحقق من المورد", + "fr": "Ressource Vérifiée", + "ja": "リソース検証済み", + "ko": "리소스 검증됨" + }, + "result.failedDescription": { + "zh-Hans": "请返回重试或检查视频格式", + "zh-Hant": "請返回重試或檢查影片格式", + "en": "Please go back to retry or check video format", + "es": "Por favor vuelve para reintentar o verifica el formato del video", + "ar": "يرجى العودة لإعادة المحاولة أو التحقق من تنسيق الفيديو", + "fr": "Veuillez revenir en arrière pour réessayer ou vérifier le format vidéo", + "ja": "戻って再試行するか、ビデオ形式を確認してください", + "ko": "돌아가서 다시 시도하거나 비디오 형식을 확인하세요" + }, + "result.setAsWallpaper": { + "zh-Hans": "设置为壁纸", + "zh-Hant": "設定為桌布", + "en": "Set as Wallpaper", + "es": "Configurar como Fondo", + "ar": "تعيين كخلفية", + "fr": "Définir comme Fond d'Écran", + "ja": "壁紙として設定", + "ko": "배경화면으로 설정" + }, + "result.continueCreating": { + "zh-Hans": "继续制作", + "zh-Hant": "繼續製作", + "en": "Continue Creating", + "es": "Continuar Creando", + "ar": "متابعة الإنشاء", + "fr": "Continuer la Création", + "ja": "制作を続ける", + "ko": "계속 만들기" + }, + "result.backToHome": { + "zh-Hans": "返回首页", + "zh-Hant": "返回首頁", + "en": "Back to Home", + "es": "Volver al Inicio", + "ar": "العودة إلى الصفحة الرئيسية", + "fr": "Retour à l'Accueil", + "ja": "ホームに戻る", + "ko": "홈으로 돌아가기" + }, + + # HomeView + "home.recent": { + "zh-Hans": "最近", + "zh-Hant": "最近", + "en": "Recent", + "es": "Reciente", + "ar": "الأخيرة", + "fr": "Récent", + "ja": "最近", + "ko": "최근" + }, + "home.timeAgo.minutesAgo": { + "zh-Hans": "%lld 分前", + "zh-Hant": "%lld 分前", + "en": "%lld min ago", + "es": "Hace %lld min", + "ar": "منذ %lld دقيقة", + "fr": "Il y a %lld min", + "ja": "%lld 分前", + "ko": "%lld 분 전" + }, + "home.timeAgo.hoursAgo": { + "zh-Hans": "%lld 小时前", + "zh-Hant": "%lld 小時前", + "en": "%lld hr ago", + "es": "Hace %lld h", + "ar": "منذ %lld ساعة", + "fr": "Il y a %lld h", + "ja": "%lld 時間前", + "ko": "%lld 시간 전" + }, + "home.timeAgo.daysAgo": { + "zh-Hans": "%lld 天前", + "zh-Hant": "%lld 天前", + "en": "%lld days ago", + "es": "Hace %lld días", + "ar": "منذ %lld يوم", + "fr": "Il y a %lld jours", + "ja": "%lld 日前", + "ko": "%lld 일 전" + }, + + # OnboardingView - 4个页面 + "onboarding.page1.title": { + "zh-Hans": "选择视频", + "zh-Hant": "選擇影片", + "en": "Select Video", + "es": "Seleccionar Video", + "ar": "اختيار الفيديو", + "fr": "Sélectionner une Vidéo", + "ja": "ビデオを選択", + "ko": "비디오 선택" + }, + "onboarding.page1.description": { + "zh-Hans": "从相册选择你喜欢的视频片段\n支持各种格式和分辨率", + "zh-Hant": "從相簿選擇你喜歡的影片片段\n支援各種格式和解析度", + "en": "Select your favorite video clip from the album\nSupports various formats and resolutions", + "es": "Selecciona tu clip de video favorito del álbum\nAdmite varios formatos y resoluciones", + "ar": "اختر مقطع الفيديو المفضل لديك من الألبوم\nيدعم تنسيقات ودقة متنوعة", + "fr": "Sélectionnez votre clip vidéo préféré de l'album\nPrend en charge divers formats et résolutions", + "ja": "アルバムからお気に入りのビデオクリップを選択\n様々な形式と解像度に対応", + "ko": "앨범에서 좋아하는 비디오 클립 선택\n다양한 형식 및 해상도 지원" + }, + "onboarding.page2.title": { + "zh-Hans": "编辑调整", + "zh-Hant": "編輯調整", + "en": "Edit & Adjust", + "es": "Editar y Ajustar", + "ar": "تحرير وضبط", + "fr": "Modifier et Ajuster", + "ja": "編集と調整", + "ko": "편집 및 조정" + }, + "onboarding.page2.description": { + "zh-Hans": "选择比例模板、调整时长\n挑选最佳封面帧", + "zh-Hant": "選擇比例模板、調整時長\n挑選最佳封面幀", + "en": "Choose aspect ratio template, adjust duration\nSelect the best cover frame", + "es": "Elige la plantilla de relación de aspecto, ajusta la duración\nSelecciona el mejor fotograma de portada", + "ar": "اختر قالب نسبة العرض إلى الارتفاع، اضبط المدة\nحدد أفضل إطار للغلاف", + "fr": "Choisissez le modèle de rapport d'aspect, ajustez la durée\nSélectionnez la meilleure image de couverture", + "ja": "アスペクト比テンプレートを選択、長さを調整\n最適なカバーフレームを選択", + "ko": "가로세로 비율 템플릿 선택, 길이 조정\n최적의 커버 프레임 선택" + }, + "onboarding.page3.title": { + "zh-Hans": "AI 增强", + "zh-Hant": "AI 增強", + "en": "AI Enhancement", + "es": "Mejora con IA", + "ar": "تحسين الذكاء الاصطناعي", + "fr": "Amélioration IA", + "ja": "AI強化", + "ko": "AI 향상" + }, + "onboarding.page3.description": { + "zh-Hans": "开启 AI 超分辨率\n提升封面画质,让壁纸更清晰", + "zh-Hant": "開啟 AI 超解析度\n提升封面畫質,讓桌布更清晰", + "en": "Enable AI super resolution\nEnhance cover quality for clearer wallpapers", + "es": "Habilitar súper resolución IA\nMejora la calidad de portada para fondos más claros", + "ar": "تفعيل الدقة الفائقة بالذكاء الاصطناعي\nتحسين جودة الغلاف لخلفيات أوضح", + "fr": "Activer la super résolution IA\nAméliore la qualité de couverture pour des fonds d'écran plus nets", + "ja": "AI超解像度を有効化\nカバーの画質を向上させ、壁紙をより鮮明に", + "ko": "AI 초해상도 활성화\n커버 품질을 향상시켜 배경화면을 더 선명하게" + }, + "onboarding.page4.title": { + "zh-Hans": "生成壁纸", + "zh-Hant": "產生桌布", + "en": "Generate Wallpaper", + "es": "Generar Fondo de Pantalla", + "ar": "إنشاء خلفية", + "fr": "Générer un Fond d'Écran", + "ja": "壁紙を生成", + "ko": "배경화면 생성" + }, + "onboarding.page4.description": { + "zh-Hans": "一键生成 Live Photo\n按引导设置为动态锁屏壁纸", + "zh-Hant": "一鍵產生 Live Photo\n按引導設定為動態鎖定畫面桌布", + "en": "Generate Live Photo with one tap\nFollow the guide to set as dynamic lock screen wallpaper", + "es": "Generar Live Photo con un toque\nSigue la guía para configurar como fondo de pantalla de bloqueo dinámico", + "ar": "إنشاء Live Photo بنقرة واحدة\nاتبع الدليل لتعيينها كخلفية شاشة قفل ديناميكية", + "fr": "Générez Live Photo en un seul clic\nSuivez le guide pour définir comme fond d'écran de verrouillage dynamique", + "ja": "ワンタップでLive Photoを生成\nガイドに従ってダイナミックロック画面壁紙として設定", + "ko": "한 번의 탭으로 Live Photo 생성\n가이드를 따라 동적 잠금 화면 배경화면으로 설정" + }, + "onboarding.nextStep": { + "zh-Hans": "下一步", + "zh-Hant": "下一步", + "en": "Next", + "es": "Siguiente", + "ar": "التالي", + "fr": "Suivant", + "ja": "次へ", + "ko": "다음" + }, + "onboarding.getStarted": { + "zh-Hans": "开始使用", + "zh-Hant": "開始使用", + "en": "Get Started", + "es": "Comenzar", + "ar": "ابدأ", + "fr": "Commencer", + "ja": "始める", + "ko": "시작하기" + } +} + +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 + skipped_count = 0 + + for key, translations in ALL_MISSING_STRINGS.items(): + if key in data["strings"]: + print(f"⚠️ Key '{key}' already exists, skipping...") + skipped_count += 1 + 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"⚠️ Skipped {skipped_count} existing keys") + print(f"📁 Updated: {xcstrings_path}") + +if __name__ == "__main__": + main() diff --git a/to-live-photo/to-live-photo/Localizable.xcstrings b/to-live-photo/to-live-photo/Localizable.xcstrings index 8621898..bcea65b 100644 --- a/to-live-photo/to-live-photo/Localizable.xcstrings +++ b/to-live-photo/to-live-photo/Localizable.xcstrings @@ -2432,7 +2432,6 @@ } } }, - "iOS 17+ 才支持锁屏动态效果": {}, "Live Photo": {}, "Live Photo 壁纸推荐时长:1 ~ 1.5 秒": {}, "onboarding.aiEnhance.description": { @@ -10117,6 +10116,748 @@ } } }, + "wallpaper.faq": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "الأسئلة الشائعة" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Frequently Asked Questions" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Preguntas Frecuentes" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Questions Fréquentes" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "よくある質問" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "자주 묻는 질문" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "常见问题" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "常見問題" + } + } + } + }, + "wallpaper.faq1.answer": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "افتح الصور ← الألبومات ← أنواع الوسائط ← Live Photos، أو ابحث عن [Live]" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Open Photos → Albums → Media Types → Live Photos, or search [Live]" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Abre Fotos → Álbumes → Tipos de Medios → Live Photos, o busca [Live]" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrez Photos → Albums → Types de Médias → Live Photos, ou recherchez [Live]" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "写真 → アルバム → メディアタイプ → Live Photos を開く、または【Live】を検索" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "사진 열기 → 앨범 → 미디어 유형 → Live Photos, 또는 [Live] 검색" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "打开照片 App → 相簿 → 媒体类型 → 实况照片,或直接搜索【实况】" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "開啟照片 App → 相簿 → 媒體類型 → 原況照片,或直接搜尋【原況】" + } + } + } + }, + "wallpaper.faq1.question": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "لا يمكن العثور على Live Photo المحفوظة؟" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Can't find the saved Live Photo?" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "¿No encuentras la Live Photo guardada?" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Impossible de trouver la Live Photo enregistrée?" + } + }, + "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?" + } + } + } + }, + "wallpaper.faq2.answer": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "اضغط مطولاً على شاشة القفل لمدة 1-2 ثانية لتشغيل الحركة (يتطلب iOS 17+)" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Long press the lock screen for 1-2 seconds to trigger animation (requires iOS 17+)" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Mantén presionada la pantalla de bloqueo durante 1-2 segundos para activar la animación (requiere iOS 17+)" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Appuyez longuement sur l'écran de verrouillage pendant 1-2 secondes pour déclencher l'animation (nécessite iOS 17+)" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ロック画面を1〜2秒長押しでアニメーションを再生(iOS 17+必要)" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "잠금 화면을 1-2초간 길게 눌러 애니메이션 재생 (iOS 17+ 필요)" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "锁屏状态下长按屏幕 1-2 秒可触发动画播放(需 iOS 17+)" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "鎖定畫面狀態下長按畫面 1-2 秒可觸發動畫播放(需 iOS 17+)" + } + } + } + }, + "wallpaper.faq2.question": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "الخلفية لا تتحرك بعد التعيين؟" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Wallpaper doesn't animate after setting?" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "¿El fondo no se anima después de configurarlo?" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Le fond d'écran ne s'anime pas après configuration?" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "設定後に壁紙がアニメーションしない?" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "설정 후 배경화면이 움직이지 않나요?" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "设置后壁纸不会动?" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "設定後桌布不會動?" + } + } + } + }, + "wallpaper.faq3.answer": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "تحقق من تفعيل [وضع الطاقة المنخفضة]، فهو يعطل الحركة تلقائيًا لتوفير البطارية" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Check if [Low Power Mode] is enabled, it automatically disables animations to save battery" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Verifica si el [Modo de Bajo Consumo] está activado, desactiva automáticamente las animaciones para ahorrar batería" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Vérifiez si le [Mode Économie d'Énergie] est activé, il désactive automatiquement les animations pour économiser la batterie" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "【低電力モード】が有効か確認、このモードでは省電力のためアニメーションが自動的に無効になります" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "[저전력 모드]가 활성화되어 있는지 확인, 배터리 절약을 위해 애니메이션이 자동으로 비활성화됩니다" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "检查是否开启了【低电量模式】,该模式下系统会自动禁用动态效果以省电" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "檢查是否開啟了【低耗電模式】,該模式下系統會自動停用動態效果以省電" + } + } + } + }, + "wallpaper.faq3.question": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "توقفت الحركة عن العمل فجأة؟" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Animation suddenly stopped working?" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "¿La animación dejó de funcionar repentinamente?" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L'animation a soudainement cessé de fonctionner?" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アニメーションが突然動作しなくなった?" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "애니메이션이 갑자기 작동하지 않나요?" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "动画效果突然失效?" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "動畫效果突然失效?" + } + } + } + }, + "wallpaper.faq4.answer": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "iOS لديه قيود إضافية، بعض Live Photos قد لا تعمل. حاول إعادة الإنشاء باستخدام فيديو عمودي بطول 2-3 ثانية" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "iOS has extra wallpaper restrictions, some Live Photos may not work. Try regenerating with a 2-3 second portrait video" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "iOS tiene restricciones adicionales, algunos Live Photos pueden no funcionar. Intenta regenerar con un video vertical de 2-3 segundos" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "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": { + "stringUnit": { + "state": "translated", + "value": "iOSには追加の壁紙制限があり、一部のLive Photoが機能しない場合があります。2〜3秒の縦向き動画で再生成してみてください" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "iOS에는 추가 배경화면 제한이 있어 일부 Live Photo가 작동하지 않을 수 있습니다. 2-3초 길이의 세로 비디오로 다시 생성해 보세요" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "iOS 对壁纸有额外限制,部分 Live Photo 可能不支持作为动态壁纸。建议使用 2-3 秒时长、竖屏比例的视频重新生成" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "iOS 對桌布有額外限制,部分 Live Photo 可能不支援作為動態桌布。建議使用 2-3 秒時長、直向比例的影片重新產生" + } + } + } + }, + "wallpaper.faq4.question": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "أيقونة Live Photo رمادية/مشطوبة؟" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Live Photo icon is gray/crossed out?" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "¿El ícono de Live Photo está en gris/tachado?" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L'icône Live Photo est grise/barrée?" + } + }, + "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 圖示是灰色/劃線?" + } + } + } + }, + "wallpaper.faq5.answer": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "قيد iOS 16: خلفيات شاشة القفل لا تدعم حركة Live Photo، قم بالترقية إلى iOS 17+" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "iOS 16 limitation: lock screen wallpapers don't support Live Photo animations, upgrade to iOS 17+" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Limitación de iOS 16: los fondos de pantalla de bloqueo no admiten animaciones de Live Photo, actualiza a iOS 17+" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Limitation iOS 16 : les fonds d'écran de verrouillage ne supportent pas les animations Live Photo, passez à iOS 17+" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "iOS 16の制限:ロック画面壁紙はLive Photoアニメーション非対応、iOS 17+へのアップグレードを推奨" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "iOS 16 제한: 잠금 화면 배경화면은 Live Photo 애니메이션 미지원, iOS 17+로 업그레이드하세요" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "iOS 16 系统限制:锁屏壁纸不支持 Live Photo 动画,建议升级到 iOS 17+" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "iOS 16 系統限制:鎖定畫面桌布不支援 Live Photo 動畫,建議升級到 iOS 17+" + } + } + } + }, + "wallpaper.faq5.question": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "لماذا لا تحتوي شاشة القفل على حركة؟" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Why doesn't my lock screen have animation?" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "¿Por qué mi pantalla de bloqueo no tiene animación?" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Pourquoi mon écran de verrouillage n'a-t-il pas d'animation?" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "なぜロック画面にアニメーションがないのですか?" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "왜 내 잠금 화면에 애니메이션이 없나요?" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "为什么我的锁屏没有动画?" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "為什麼我的鎖定畫面沒有動畫?" + } + } + } + }, + "wallpaper.findSavedPhoto": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "ابحث عن Live Photo المحفوظة" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Find the saved Live Photo" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Encuentra la Live Photo guardada" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Trouver la Live Photo enregistrée" + } + }, + "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" + } + } + } + }, + "wallpaper.ios17Required": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "iOS 17+ مطلوب لتحريك شاشة القفل" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "iOS 17+ required for lock screen animations" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "iOS 17+ requerido para animaciones de pantalla de bloqueo" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "iOS 17+ requis pour les animations d'écran de verrouillage" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ロック画面のアニメーションにはiOS 17+が必要" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "잠금 화면 애니메이션에는 iOS 17+ 필요" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "iOS 17+ 才支持锁屏动态效果" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "iOS 17+ 才支援鎖定畫面動態效果" + } + } + } + }, + "wallpaper.openPhotosApp": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "فتح تطبيق الصور" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Open Photos App" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Abrir la App de Fotos" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ouvrir l'App Photos" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "写真Appを開く" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "사진 앱 열기" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "打开照片 App" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "開啟照片 App" + } + } + } + }, "wallpaper.savedToLibrary": { "extractionState": "manual", "localizations": { @@ -10170,6 +10911,748 @@ } } }, + "wallpaper.step1.description": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "ابحث عن شارة [LIVE] في الأعلى يسارًا، اضغط مطولاً لمعاينة الحركة" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Look for [LIVE] badge at top-left, long press to preview animation" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Busca la insignia [LIVE] arriba a la izquierda, mantén presionado para previsualizar" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Cherchez le badge [LIVE] en haut à gauche, appuyez longuement pour prévisualiser" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "左上の【LIVE】バッジを探し、長押しでアニメーションをプレビュー" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "왼쪽 상단의 [LIVE] 배지를 찾고 길게 눌러 미리보기" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "照片左上角会显示【LIVE】标识,长按可预览动画效果" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "照片左上角會顯示【LIVE】標識,長按可預覽動畫效果" + } + } + } + }, + "wallpaper.step1.title": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "ابحث عن Live Photo في الصور" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Find Live Photo in Photos" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Encuentra Live Photo en Fotos" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Trouver Live Photo dans Photos" + } + }, + "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" + } + } + } + }, + "wallpaper.step2.description": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "موجود أسفل اليسار، ثم اختر [استخدام كخلفية]" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Located at bottom-left, then select [Use as Wallpaper]" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Ubicado abajo a la izquierda, luego selecciona [Usar como Fondo]" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "En bas à gauche, puis sélectionnez [Utiliser comme Fond d'Écran]" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "左下にあり、【壁紙として使用】を選択" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "왼쪽 하단에 위치, 그런 다음 [배경화면으로 사용] 선택" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "位于屏幕左下角,然后选择【用作壁纸】选项" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "位於畫面左下角,然後選擇【用作桌布】選項" + } + } + } + }, + "wallpaper.step2.title": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "اضغط على زر المشاركة" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Tap Share Button" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Toca el Botón Compartir" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Appuyez sur Partager" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "共有ボタンをタップ" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "공유 버튼 탭" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "点击分享按钮" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "點擊分享按鈕" + } + } + } + }, + "wallpaper.step3.description": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "استخدم إصبعين للتكبير والسحب لضبط الموضع" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Pinch to zoom and drag to adjust photo position" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Pellizca para ampliar y arrastra para ajustar la posición" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Pincez pour zoomer et glissez pour ajuster la position" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ピンチでズーム、ドラッグで位置を調整" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "두 손가락으로 확대/축소 및 드래그하여 위치 조정" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "双指缩放和拖动来调整照片在壁纸中的位置" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "雙指縮放和拖動來調整照片在桌布中的位置" + } + } + } + }, + "wallpaper.step3.title": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "ضبط موضع الصورة" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Adjust Photo Position" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Ajustar Posición de la Foto" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajuster la Position de la Photo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "写真の位置を調整" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "사진 위치 조정" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "调整照片位置" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "調整照片位置" + } + } + } + }, + "wallpaper.step4.description": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "اضغط على أيقونة Live Photo أسفل اليسار، التمييز يعني تشغيل الحركة" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Tap Live Photo icon at bottom-left, highlighted icon means animation is on" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Toca el ícono de Live Photo abajo a la izquierda, resaltado significa que está activado" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Appuyez sur l'icône Live Photo en bas à gauche, surbrillance = animation activée" + } + }, + "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 圖示,圖示高亮表示動態效果已開啟" + } + } + } + }, + "wallpaper.step4.title": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "تأكد من تفعيل الحركة" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Confirm Animation is Enabled" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Confirmar que la Animación está Activada" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Confirmer l'Activation de l'Animation" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アニメーションが有効であることを確認" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "애니메이션이 활성화되었는지 확인" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "确认动态效果已开启" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "確認動態效果已開啟" + } + } + } + }, + "wallpaper.step4iOS16.description": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "شاشة قفل iOS 16 لا تدعم الحركة، فقط الضغط الطويل على الشاشة الرئيسية يعمل" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "iOS 16 lock screen doesn't support animations, only home screen long press works" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "La pantalla de bloqueo de iOS 16 no admite animaciones, solo funciona mantener presionada la pantalla de inicio" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "L'écran de verrouillage iOS 16 ne supporte pas les animations, seul l'appui long sur l'écran d'accueil fonctionne" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "iOS 16ロック画面はアニメーション非対応、ホーム画面の長押しのみ動作" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "iOS 16 잠금 화면은 애니메이션 미지원, 홈 화면 길게 누르기만 작동" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "iOS 16 锁屏不支持动态效果,仅主屏幕长按可播放" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "iOS 16 鎖定畫面不支援動態效果,僅主畫面長按可播放" + } + } + } + }, + "wallpaper.step4iOS16.title": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "فهم قيود النظام" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Understand System Limitations" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Comprender las Limitaciones del Sistema" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Comprendre les Limitations du Système" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "システムの制限を理解" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "시스템 제한사항 이해" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "了解系统限制" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "了解系統限制" + } + } + } + }, + "wallpaper.step5.description": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "اضغط على [تم] في الأعلى يمينًا، اختر [تعيين شاشة القفل] أو [تعيين كليهما]" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Tap [Done] at top-right, choose [Set Lock Screen] or [Set Both]" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Toca [Hecho] arriba a la derecha, elige [Definir Pantalla de Bloqueo] o [Definir Ambas]" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Appuyez sur [Terminé] en haut à droite, choisissez [Définir Écran de Verrouillage] ou [Définir les Deux]" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "右上の【完了】をタップ、【ロック画面に設定】または【両方に設定】を選択" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "오른쪽 상단의 [완료] 탭, [잠금 화면 설정] 또는 [둘 다 설정] 선택" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "点击右上角【完成】,选择【设定锁定屏幕】或【同时设定】" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "點擊右上角【完成】,選擇【設定鎖定畫面】或【同時設定】" + } + } + } + }, + "wallpaper.step5.title": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "إكمال الإعداد" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Complete Setup" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Completar Configuración" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Terminer la Configuration" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "設定を完了" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "설정 완료" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "完成设置" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "完成設定" + } + } + } + }, + "wallpaper.steps": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "خطوات إعداد الخلفية" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Wallpaper Setup Steps" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Pasos para Configurar el Fondo" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Étapes de Configuration du Fond d'Écran" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "壁紙設定の手順" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "배경화면 설정 단계" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "设置壁纸步骤" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "設定桌布步驟" + } + } + } + }, + "wallpaper.title": { + "extractionState": "manual", + "localizations": { + "ar": { + "stringUnit": { + "state": "translated", + "value": "تعيين خلفية حية" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Set Live Wallpaper" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Configurar Fondo de Pantalla Dinámico" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Définir le Fond d'Écran Animé" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ライブ壁紙を設定" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "라이브 배경화면 설정" + } + }, + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "设置动态壁纸" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "設定動態桌布" + } + } + } + }, "wallpaperGuide.openPhotos": { "extractionState": "manual", "localizations": { @@ -10552,11 +12035,8 @@ } }, "帧率:30fps": {}, - "常见问题": {}, "开始使用": {}, "当前设备不支持 AI 增强": {}, - "打开照片 App": {}, - "找到刚保存的 Live Photo": {}, "拖动下方滑杆选择封面时刻": {}, "本地 AI 处理,无需网络": {}, "正在下载 AI 模型...": {}, @@ -10621,8 +12101,6 @@ "编码:H.264": {}, "编辑": {}, "色彩:SDR": {}, - "设置动态壁纸": {}, - "设置壁纸步骤": {}, "请返回重试或检查视频格式": {}, "跳过": {}, "进度": { @@ -10681,1486 +12159,3500 @@ "适用于较旧设备或生成失败时": {}, "选择视频中的某一帧作为 Live Photo 的封面": {}, "首次使用需下载 AI 模型(约 64MB)": {}, - "wallpaper.title": { + "editor.coverFrameHint1": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "设置动态壁纸" + "value": "此图片将作为 Live Photo 的静态封面" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "設定動態桌布" + "value": "此圖片將作為 Live Photo 的靜態封面" } }, "en": { "stringUnit": { "state": "translated", - "value": "Set Live Wallpaper" + "value": "This image will be the static cover of Live Photo" } }, "es": { "stringUnit": { "state": "translated", - "value": "Configurar Fondo de Pantalla Dinámico" + "value": "Esta imagen será la portada estática de Live Photo" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تعيين خلفية حية" + "value": "ستكون هذه الصورة الغلاف الثابت لـ Live Photo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Définir le Fond d'Écran Animé" + "value": "Cette image sera la couverture statique de Live Photo" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ライブ壁紙を設定" + "value": "この画像がLive Photoの静止画カバーになります" } }, "ko": { "stringUnit": { "state": "translated", - "value": "라이브 배경화면 설정" + "value": "이 이미지가 Live Photo의 정적 커버가 됩니다" } } } }, - "wallpaper.ios17Required": { + "editor.coverFrameHint2": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "iOS 17+ 才支持锁屏动态效果" + "value": "拖动下方滑杆选择封面时刻" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "iOS 17+ 才支援鎖定畫面動態效果" + "value": "拖動下方滑桿選擇封面時刻" } }, "en": { "stringUnit": { "state": "translated", - "value": "iOS 17+ required for lock screen animations" + "value": "Drag the slider below to select cover moment" } }, "es": { "stringUnit": { "state": "translated", - "value": "iOS 17+ requerido para animaciones de pantalla de bloqueo" + "value": "Arrastra el control deslizante para seleccionar el momento de portada" } }, "ar": { "stringUnit": { "state": "translated", - "value": "iOS 17+ مطلوب لتحريك شاشة القفل" + "value": "اسحب شريط التمرير أدناه لاختيار لحظة الغلاف" } }, "fr": { "stringUnit": { "state": "translated", - "value": "iOS 17+ requis pour les animations d'écran de verrouillage" + "value": "Faites glisser le curseur ci-dessous pour sélectionner le moment de couverture" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ロック画面のアニメーションにはiOS 17+が必要" + "value": "下のスライダーをドラッグしてカバーの瞬間を選択" } }, "ko": { "stringUnit": { "state": "translated", - "value": "잠금 화면 애니메이션에는 iOS 17+ 필요" + "value": "아래 슬라이더를 드래그하여 커버 순간 선택" } } } }, - "wallpaper.openPhotosApp": { + "editor.videoDuration": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "打开照片 App" + "value": "视频时长" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "開啟照片 App" + "value": "影片時長" } }, "en": { "stringUnit": { "state": "translated", - "value": "Open Photos App" + "value": "Video Duration" } }, "es": { "stringUnit": { "state": "translated", - "value": "Abrir la App de Fotos" + "value": "Duración del Video" } }, "ar": { "stringUnit": { "state": "translated", - "value": "فتح تطبيق الصور" + "value": "مدة الفيديو" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrir l'App Photos" + "value": "Durée de la Vidéo" } }, "ja": { "stringUnit": { "state": "translated", - "value": "写真Appを開く" + "value": "ビデオの長さ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "사진 앱 열기" + "value": "비디오 길이" } } } }, - "wallpaper.findSavedPhoto": { + "editor.durationSeconds": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "找到刚保存的 Live Photo" + "value": "%.1f 秒" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "找到剛儲存的 Live Photo" + "value": "%.1f 秒" } }, "en": { "stringUnit": { "state": "translated", - "value": "Find the saved Live Photo" + "value": "%.1f sec" } }, "es": { "stringUnit": { "state": "translated", - "value": "Encuentra la Live Photo guardada" + "value": "%.1f seg" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ابحث عن Live Photo المحفوظة" + "value": "%.1f ث" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Trouver la Live Photo enregistrée" + "value": "%.1f s" } }, "ja": { "stringUnit": { "state": "translated", - "value": "保存したLive Photoを見つける" + "value": "%.1f 秒" } }, "ko": { "stringUnit": { "state": "translated", - "value": "저장된 Live Photo 찾기" + "value": "%.1f 초" } } } }, - "wallpaper.steps": { + "editor.durationHint": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "设置壁纸步骤" + "value": "Live Photo 壁纸推荐时长:1 ~ 1.5 秒" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "設定桌布步驟" + "value": "Live Photo 桌布建議時長:1 ~ 1.5 秒" } }, "en": { "stringUnit": { "state": "translated", - "value": "Wallpaper Setup Steps" + "value": "Live Photo wallpaper recommended duration: 1-1.5 seconds" } }, "es": { "stringUnit": { "state": "translated", - "value": "Pasos para Configurar el Fondo" + "value": "Duración recomendada para fondo Live Photo: 1-1.5 segundos" } }, "ar": { "stringUnit": { "state": "translated", - "value": "خطوات إعداد الخلفية" + "value": "المدة الموصى بها لخلفية Live Photo: 1-1.5 ثانية" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Étapes de Configuration du Fond d'Écran" + "value": "Durée recommandée pour fond d'écran Live Photo: 1-1.5 secondes" } }, "ja": { "stringUnit": { "state": "translated", - "value": "壁紙設定の手順" + "value": "Live Photo壁紙推奨時間:1〜1.5秒" } }, "ko": { "stringUnit": { "state": "translated", - "value": "배경화면 설정 단계" + "value": "Live Photo 배경화면 권장 길이: 1-1.5초" } } } }, - "wallpaper.step1.title": { + "editor.keyFrameTime": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "在照片中找到 Live Photo" + "value": "封面时刻" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "在照片中找到 Live Photo" + "value": "封面時刻" } }, "en": { "stringUnit": { "state": "translated", - "value": "Find Live Photo in Photos" + "value": "Cover Moment" } }, "es": { "stringUnit": { "state": "translated", - "value": "Encuentra Live Photo en Fotos" + "value": "Momento de Portada" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ابحث عن Live Photo في الصور" + "value": "لحظة الغلاف" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Trouver Live Photo dans Photos" + "value": "Moment de Couverture" } }, "ja": { "stringUnit": { "state": "translated", - "value": "写真内でLive Photoを見つける" + "value": "カバーの瞬間" } }, "ko": { "stringUnit": { "state": "translated", - "value": "사진에서 Live Photo 찾기" + "value": "커버 순간" } } } }, - "wallpaper.step1.description": { + "editor.keyFrameSeconds": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "照片左上角会显示【LIVE】标识,长按可预览动画效果" + "value": "%.2f 秒" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "照片左上角會顯示【LIVE】標識,長按可預覽動畫效果" + "value": "%.2f 秒" } }, "en": { "stringUnit": { "state": "translated", - "value": "Look for [LIVE] badge at top-left, long press to preview animation" + "value": "%.2f sec" } }, "es": { "stringUnit": { "state": "translated", - "value": "Busca la insignia [LIVE] arriba a la izquierda, mantén presionado para previsualizar" + "value": "%.2f seg" } }, "ar": { "stringUnit": { "state": "translated", - "value": "ابحث عن شارة [LIVE] في الأعلى يسارًا، اضغط مطولاً لمعاينة الحركة" + "value": "%.2f ث" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Cherchez le badge [LIVE] en haut à gauche, appuyez longuement pour prévisualiser" + "value": "%.2f s" } }, "ja": { "stringUnit": { "state": "translated", - "value": "左上の【LIVE】バッジを探し、長押しでアニメーションをプレビュー" + "value": "%.2f 秒" } }, "ko": { "stringUnit": { "state": "translated", - "value": "왼쪽 상단의 [LIVE] 배지를 찾고 길게 눌러 미리보기" + "value": "%.2f 초" } } } }, - "wallpaper.step2.title": { + "editor.keyFrameHint": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "点击分享按钮" + "value": "选择视频中的某一帧作为 Live Photo 的封面" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "點擊分享按鈕" + "value": "選擇影片中的某一幀作為 Live Photo 的封面" } }, "en": { "stringUnit": { "state": "translated", - "value": "Tap Share Button" + "value": "Select a frame from the video as the Live Photo cover" } }, "es": { "stringUnit": { "state": "translated", - "value": "Toca el Botón Compartir" + "value": "Selecciona un fotograma del video como portada de Live Photo" } }, "ar": { "stringUnit": { "state": "translated", - "value": "اضغط على زر المشاركة" + "value": "اختر إطارًا من الفيديو كغلاف لـ Live Photo" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Appuyez sur Partager" + "value": "Sélectionnez une image de la vidéo comme couverture Live Photo" } }, "ja": { "stringUnit": { "state": "translated", - "value": "共有ボタンをタップ" + "value": "ビデオからフレームを選択してLive Photoのカバーにする" } }, "ko": { "stringUnit": { "state": "translated", - "value": "공유 버튼 탭" + "value": "비디오에서 프레임을 선택하여 Live Photo 커버로 사용" } } } }, - "wallpaper.step2.description": { + "editor.aiEnhanceDescription": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "位于屏幕左下角,然后选择【用作壁纸】选项" + "value": "使用 AI 提升封面画质" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "位於畫面左下角,然後選擇【用作桌布】選項" + "value": "使用 AI 提升封面畫質" } }, "en": { "stringUnit": { "state": "translated", - "value": "Located at bottom-left, then select [Use as Wallpaper]" + "value": "Use AI to enhance cover quality" } }, "es": { "stringUnit": { "state": "translated", - "value": "Ubicado abajo a la izquierda, luego selecciona [Usar como Fondo]" + "value": "Usa IA para mejorar la calidad de la portada" } }, "ar": { "stringUnit": { "state": "translated", - "value": "موجود أسفل اليسار، ثم اختر [استخدام كخلفية]" + "value": "استخدم الذكاء الاصطناعي لتحسين جودة الغلاف" } }, "fr": { "stringUnit": { "state": "translated", - "value": "En bas à gauche, puis sélectionnez [Utiliser comme Fond d'Écran]" + "value": "Utilisez l'IA pour améliorer la qualité de la couverture" } }, "ja": { "stringUnit": { "state": "translated", - "value": "左下にあり、【壁紙として使用】を選択" + "value": "AIを使ってカバーの画質を向上" } }, "ko": { "stringUnit": { "state": "translated", - "value": "왼쪽 하단에 위치, 그런 다음 [배경화면으로 사용] 선택" + "value": "AI를 사용하여 커버 품질 향상" } } } }, - "wallpaper.step3.title": { + "editor.aiModelDownloading": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "调整照片位置" + "value": "正在下载 AI 模型..." } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "調整照片位置" + "value": "正在下載 AI 模型..." } }, "en": { "stringUnit": { "state": "translated", - "value": "Adjust Photo Position" + "value": "Downloading AI model..." } }, "es": { "stringUnit": { "state": "translated", - "value": "Ajustar Posición de la Foto" + "value": "Descargando modelo de IA..." } }, "ar": { "stringUnit": { "state": "translated", - "value": "ضبط موضع الصورة" + "value": "جارٍ تنزيل نموذج الذكاء الاصطناعي..." } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ajuster la Position de la Photo" + "value": "Téléchargement du modèle IA..." } }, "ja": { "stringUnit": { "state": "translated", - "value": "写真の位置を調整" + "value": "AIモデルをダウンロード中..." } }, "ko": { "stringUnit": { "state": "translated", - "value": "사진 위치 조정" + "value": "AI 모델 다운로드 중..." } } } }, - "wallpaper.step3.description": { + "editor.aiModelDownloadHint": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "双指缩放和拖动来调整照片在壁纸中的位置" + "value": "首次使用需下载 AI 模型(约 64MB)" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "雙指縮放和拖動來調整照片在桌布中的位置" + "value": "首次使用需下載 AI 模型(約 64MB)" } }, "en": { "stringUnit": { "state": "translated", - "value": "Pinch to zoom and drag to adjust photo position" + "value": "First-time use requires downloading AI model (~64MB)" } }, "es": { "stringUnit": { "state": "translated", - "value": "Pellizca para ampliar y arrastra para ajustar la posición" + "value": "El primer uso requiere descargar el modelo de IA (~64MB)" } }, "ar": { "stringUnit": { "state": "translated", - "value": "استخدم إصبعين للتكبير والسحب لضبط الموضع" + "value": "الاستخدام الأول يتطلب تنزيل نموذج الذكاء الاصطناعي (~64 ميجابايت)" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Pincez pour zoomer et glissez pour ajuster la position" + "value": "La première utilisation nécessite le téléchargement du modèle IA (~64Mo)" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ピンチでズーム、ドラッグで位置を調整" + "value": "初回使用時にAIモデルのダウンロードが必要(約64MB)" } }, "ko": { "stringUnit": { "state": "translated", - "value": "두 손가락으로 확대/축소 및 드래그하여 위치 조정" + "value": "첫 사용 시 AI 모델 다운로드 필요 (~64MB)" } } } }, - "wallpaper.step4.title": { + "editor.aiResolutionBoost": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "确认动态效果已开启" + "value": "分辨率提升约 2 倍" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "確認動態效果已開啟" + "value": "解析度提升約 2 倍" } }, "en": { "stringUnit": { "state": "translated", - "value": "Confirm Animation is Enabled" + "value": "Resolution increased by ~2x" } }, "es": { "stringUnit": { "state": "translated", - "value": "Confirmar que la Animación está Activada" + "value": "Resolución aumentada ~2x" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تأكد من تفعيل الحركة" + "value": "زيادة الدقة بحوالي 2×" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Confirmer l'Activation de l'Animation" + "value": "Résolution augmentée d'environ 2×" } }, "ja": { "stringUnit": { "state": "translated", - "value": "アニメーションが有効であることを確認" + "value": "解像度が約2倍向上" } }, "ko": { "stringUnit": { "state": "translated", - "value": "애니메이션이 활성화되었는지 확인" + "value": "해상도 약 2배 증가" } } } }, - "wallpaper.step4.description": { + "editor.aiProcessingTime": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "点击左下角的 Live Photo 图标,图标高亮表示动态效果已开启" + "value": "处理时间:约 2-3 秒" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "點擊左下角的 Live Photo 圖示,圖示高亮表示動態效果已開啟" + "value": "處理時間:約 2-3 秒" } }, "en": { "stringUnit": { "state": "translated", - "value": "Tap Live Photo icon at bottom-left, highlighted icon means animation is on" + "value": "Processing time: ~2-3 seconds" } }, "es": { "stringUnit": { "state": "translated", - "value": "Toca el ícono de Live Photo abajo a la izquierda, resaltado significa que está activado" + "value": "Tiempo de procesamiento: ~2-3 segundos" } }, "ar": { "stringUnit": { "state": "translated", - "value": "اضغط على أيقونة Live Photo أسفل اليسار، التمييز يعني تشغيل الحركة" + "value": "وقت المعالجة: حوالي 2-3 ثواني" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Appuyez sur l'icône Live Photo en bas à gauche, surbrillance = animation activée" + "value": "Temps de traitement: ~2-3 secondes" } }, "ja": { "stringUnit": { "state": "translated", - "value": "左下のLive Photoアイコンをタップ、ハイライトは有効を意味する" + "value": "処理時間:約2〜3秒" } }, "ko": { "stringUnit": { "state": "translated", - "value": "왼쪽 하단의 Live Photo 아이콘 탭, 강조 표시는 활성화를 의미" + "value": "처리 시간: 약 2-3초" } } } }, - "wallpaper.step4iOS16.title": { + "editor.aiLocalProcessing": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "了解系统限制" + "value": "本地 AI 处理,无需网络" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "了解系統限制" + "value": "本地 AI 處理,無需網路" } }, "en": { "stringUnit": { "state": "translated", - "value": "Understand System Limitations" + "value": "Local AI processing, no network required" } }, "es": { "stringUnit": { "state": "translated", - "value": "Comprender las Limitaciones del Sistema" + "value": "Procesamiento IA local, no requiere red" } }, "ar": { "stringUnit": { "state": "translated", - "value": "فهم قيود النظام" + "value": "معالجة محلية بالذكاء الاصطناعي، لا تحتاج إلى شبكة" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Comprendre les Limitations du Système" + "value": "Traitement IA local, pas de réseau nécessaire" } }, "ja": { "stringUnit": { "state": "translated", - "value": "システムの制限を理解" + "value": "ローカルAI処理、ネットワーク不要" } }, "ko": { "stringUnit": { "state": "translated", - "value": "시스템 제한사항 이해" + "value": "로컬 AI 처리, 네트워크 불필요" } } } }, - "wallpaper.step4iOS16.description": { + "editor.aiNotSupported": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "iOS 16 锁屏不支持动态效果,仅主屏幕长按可播放" + "value": "当前设备不支持 AI 增强" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "iOS 16 鎖定畫面不支援動態效果,僅主畫面長按可播放" + "value": "目前裝置不支援 AI 增強" } }, "en": { "stringUnit": { "state": "translated", - "value": "iOS 16 lock screen doesn't support animations, only home screen long press works" + "value": "Current device doesn't support AI enhancement" } }, "es": { "stringUnit": { "state": "translated", - "value": "La pantalla de bloqueo de iOS 16 no admite animaciones, solo funciona mantener presionada la pantalla de inicio" + "value": "El dispositivo actual no admite mejora de IA" } }, "ar": { "stringUnit": { "state": "translated", - "value": "شاشة قفل iOS 16 لا تدعم الحركة، فقط الضغط الطويل على الشاشة الرئيسية يعمل" + "value": "الجهاز الحالي لا يدعم تحسين الذكاء الاصطناعي" } }, "fr": { "stringUnit": { "state": "translated", - "value": "L'écran de verrouillage iOS 16 ne supporte pas les animations, seul l'appui long sur l'écran d'accueil fonctionne" + "value": "L'appareil actuel ne prend pas en charge l'amélioration IA" } }, "ja": { "stringUnit": { "state": "translated", - "value": "iOS 16ロック画面はアニメーション非対応、ホーム画面の長押しのみ動作" + "value": "現在のデバイスはAI強化に対応していません" } }, "ko": { "stringUnit": { "state": "translated", - "value": "iOS 16 잠금 화면은 애니메이션 미지원, 홈 화면 길게 누르기만 작동" + "value": "현재 기기는 AI 향상을 지원하지 않습니다" } } } }, - "wallpaper.step5.title": { + "editor.compatibilityDescription": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "完成设置" + "value": "适用于较旧设备或生成失败时" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "完成設定" + "value": "適用於較舊裝置或產生失敗時" } }, "en": { "stringUnit": { "state": "translated", - "value": "Complete Setup" + "value": "For older devices or when generation fails" } }, "es": { "stringUnit": { "state": "translated", - "value": "Completar Configuración" + "value": "Para dispositivos antiguos o cuando falla la generación" } }, "ar": { "stringUnit": { "state": "translated", - "value": "إكمال الإعداد" + "value": "للأجهزة القديمة أو عند فشل الإنشاء" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Terminer la Configuration" + "value": "Pour les appareils plus anciens ou en cas d'échec de génération" } }, "ja": { "stringUnit": { "state": "translated", - "value": "設定を完了" + "value": "古いデバイスまたは生成失敗時に使用" } }, "ko": { "stringUnit": { "state": "translated", - "value": "설정 완료" + "value": "구형 기기 또는 생성 실패 시 사용" } } } }, - "wallpaper.step5.description": { + "editor.resolution720p": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "点击右上角【完成】,选择【设定锁定屏幕】或【同时设定】" + "value": "分辨率:720p" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "點擊右上角【完成】,選擇【設定鎖定畫面】或【同時設定】" + "value": "解析度:720p" } }, "en": { "stringUnit": { "state": "translated", - "value": "Tap [Done] at top-right, choose [Set Lock Screen] or [Set Both]" + "value": "Resolution: 720p" } }, "es": { "stringUnit": { "state": "translated", - "value": "Toca [Hecho] arriba a la derecha, elige [Definir Pantalla de Bloqueo] o [Definir Ambas]" + "value": "Resolución: 720p" } }, "ar": { "stringUnit": { "state": "translated", - "value": "اضغط على [تم] في الأعلى يمينًا، اختر [تعيين شاشة القفل] أو [تعيين كليهما]" + "value": "الدقة: 720p" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Appuyez sur [Terminé] en haut à droite, choisissez [Définir Écran de Verrouillage] ou [Définir les Deux]" + "value": "Résolution: 720p" } }, "ja": { "stringUnit": { "state": "translated", - "value": "右上の【完了】をタップ、【ロック画面に設定】または【両方に設定】を選択" + "value": "解像度:720p" } }, "ko": { "stringUnit": { "state": "translated", - "value": "오른쪽 상단의 [완료] 탭, [잠금 화면 설정] 또는 [둘 다 설정] 선택" + "value": "해상도: 720p" } } } }, - "wallpaper.faq": { + "editor.framerate30fps": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "常见问题" + "value": "帧率:30fps" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "常見問題" + "value": "畫面更新率:30fps" } }, "en": { "stringUnit": { "state": "translated", - "value": "Frequently Asked Questions" + "value": "Frame rate: 30fps" } }, "es": { "stringUnit": { "state": "translated", - "value": "Preguntas Frecuentes" + "value": "Fotogramas: 30fps" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الأسئلة الشائعة" + "value": "معدل الإطارات: 30fps" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Questions Fréquentes" + "value": "Fréquence d'images: 30fps" } }, "ja": { "stringUnit": { "state": "translated", - "value": "よくある質問" + "value": "フレームレート:30fps" } }, "ko": { "stringUnit": { "state": "translated", - "value": "자주 묻는 질문" + "value": "프레임 속도: 30fps" } } } }, - "wallpaper.faq1.question": { + "editor.codecH264": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "找不到刚保存的 Live Photo?" + "value": "编码:H.264" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "找不到剛儲存的 Live Photo?" + "value": "編碼:H.264" } }, "en": { "stringUnit": { "state": "translated", - "value": "Can't find the saved Live Photo?" + "value": "Codec: H.264" } }, "es": { "stringUnit": { "state": "translated", - "value": "¿No encuentras la Live Photo guardada?" + "value": "Códec: H.264" } }, "ar": { "stringUnit": { "state": "translated", - "value": "لا يمكن العثور على Live Photo المحفوظة؟" + "value": "الترميز: H.264" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Impossible de trouver la Live Photo enregistrée?" + "value": "Codec: H.264" } }, "ja": { "stringUnit": { "state": "translated", - "value": "保存したLive Photoが見つからない?" + "value": "コーデック:H.264" } }, "ko": { "stringUnit": { "state": "translated", - "value": "저장된 Live Photo를 찾을 수 없나요?" + "value": "코덱: H.264" } } } }, - "wallpaper.faq1.answer": { + "editor.colorSDR": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "打开照片 App → 相簿 → 媒体类型 → 实况照片,或直接搜索【实况】" + "value": "色彩:SDR" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "開啟照片 App → 相簿 → 媒體類型 → 原況照片,或直接搜尋【原況】" + "value": "色彩:SDR" } }, "en": { "stringUnit": { "state": "translated", - "value": "Open Photos → Albums → Media Types → Live Photos, or search [Live]" + "value": "Color: SDR" } }, "es": { "stringUnit": { "state": "translated", - "value": "Abre Fotos → Álbumes → Tipos de Medios → Live Photos, o busca [Live]" + "value": "Color: SDR" } }, "ar": { "stringUnit": { "state": "translated", - "value": "افتح الصور ← الألبومات ← أنواع الوسائط ← Live Photos، أو ابحث عن [Live]" + "value": "اللون: SDR" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Ouvrez Photos → Albums → Types de Médias → Live Photos, ou recherchez [Live]" + "value": "Couleur: SDR" } }, "ja": { "stringUnit": { "state": "translated", - "value": "写真 → アルバム → メディアタイプ → Live Photos を開く、または【Live】を検索" + "value": "色:SDR" } }, "ko": { "stringUnit": { "state": "translated", - "value": "사진 열기 → 앨범 → 미디어 유형 → Live Photos, 또는 [Live] 검색" + "value": "색상: SDR" } } } }, - "wallpaper.faq2.question": { + "editor.videoDiagnosis": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "设置后壁纸不会动?" + "value": "视频检测" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "設定後桌布不會動?" + "value": "影片檢測" } }, "en": { "stringUnit": { "state": "translated", - "value": "Wallpaper doesn't animate after setting?" + "value": "Video Detection" } }, "es": { "stringUnit": { "state": "translated", - "value": "¿El fondo no se anima después de configurarlo?" + "value": "Detección de Video" } }, "ar": { "stringUnit": { "state": "translated", - "value": "الخلفية لا تتحرك بعد التعيين؟" + "value": "كشف الفيديو" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Le fond d'écran ne s'anime pas après configuration?" + "value": "Détection de Vidéo" } }, "ja": { "stringUnit": { "state": "translated", - "value": "設定後に壁紙がアニメーションしない?" + "value": "ビデオ検出" } }, "ko": { "stringUnit": { "state": "translated", - "value": "설정 후 배경화면이 움직이지 않나요?" + "value": "비디오 감지" } } } }, - "wallpaper.faq2.answer": { + "editor.diagnosisHDR": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "锁屏状态下长按屏幕 1-2 秒可触发动画播放(需 iOS 17+)" + "value": "HDR 视频" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "鎖定畫面狀態下長按畫面 1-2 秒可觸發動畫播放(需 iOS 17+)" + "value": "HDR 影片" } }, "en": { "stringUnit": { "state": "translated", - "value": "Long press the lock screen for 1-2 seconds to trigger animation (requires iOS 17+)" + "value": "HDR Video" } }, "es": { "stringUnit": { "state": "translated", - "value": "Mantén presionada la pantalla de bloqueo durante 1-2 segundos para activar la animación (requiere iOS 17+)" + "value": "Video HDR" } }, "ar": { "stringUnit": { "state": "translated", - "value": "اضغط مطولاً على شاشة القفل لمدة 1-2 ثانية لتشغيل الحركة (يتطلب iOS 17+)" + "value": "فيديو HDR" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Appuyez longuement sur l'écran de verrouillage pendant 1-2 secondes pour déclencher l'animation (nécessite iOS 17+)" + "value": "Vidéo HDR" } }, "ja": { "stringUnit": { "state": "translated", - "value": "ロック画面を1〜2秒長押しでアニメーションを再生(iOS 17+必要)" + "value": "HDR ビデオ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "잠금 화면을 1-2초간 길게 눌러 애니메이션 재생 (iOS 17+ 필요)" + "value": "HDR 비디오" } } } }, - "wallpaper.faq3.question": { + "editor.diagnosisHDRDesc": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "动画效果突然失效?" + "value": "将自动转换为 SDR 以确保兼容性" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "動畫效果突然失效?" + "value": "將自動轉換為 SDR 以確保相容性" } }, "en": { "stringUnit": { "state": "translated", - "value": "Animation suddenly stopped working?" + "value": "Will be automatically converted to SDR for compatibility" } }, "es": { "stringUnit": { "state": "translated", - "value": "¿La animación dejó de funcionar repentinamente?" + "value": "Se convertirá automáticamente a SDR para compatibilidad" } }, "ar": { "stringUnit": { "state": "translated", - "value": "توقفت الحركة عن العمل فجأة؟" + "value": "سيتم التحويل تلقائيًا إلى SDR للتوافق" } }, "fr": { "stringUnit": { "state": "translated", - "value": "L'animation a soudainement cessé de fonctionner?" + "value": "Sera automatiquement converti en SDR pour la compatibilité" } }, "ja": { "stringUnit": { "state": "translated", - "value": "アニメーションが突然動作しなくなった?" + "value": "互換性のため自動的にSDRに変換されます" } }, "ko": { "stringUnit": { "state": "translated", - "value": "애니메이션이 갑자기 작동하지 않나요?" + "value": "호환성을 위해 자동으로 SDR로 변환됩니다" } } } }, - "wallpaper.faq3.answer": { + "editor.diagnosisHighRes": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "检查是否开启了【低电量模式】,该模式下系统会自动禁用动态效果以省电" + "value": "高分辨率视频" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "檢查是否開啟了【低耗電模式】,該模式下系統會自動停用動態效果以省電" + "value": "高解析度影片" } }, "en": { "stringUnit": { "state": "translated", - "value": "Check if [Low Power Mode] is enabled, it automatically disables animations to save battery" + "value": "High Resolution Video" } }, "es": { "stringUnit": { "state": "translated", - "value": "Verifica si el [Modo de Bajo Consumo] está activado, desactiva automáticamente las animaciones para ahorrar batería" + "value": "Video de Alta Resolución" } }, "ar": { "stringUnit": { "state": "translated", - "value": "تحقق من تفعيل [وضع الطاقة المنخفضة]، فهو يعطل الحركة تلقائيًا لتوفير البطارية" + "value": "فيديو عالي الدقة" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Vérifiez si le [Mode Économie d'Énergie] est activé, il désactive automatiquement les animations pour économiser la batterie" + "value": "Vidéo Haute Résolution" } }, "ja": { "stringUnit": { "state": "translated", - "value": "【低電力モード】が有効か確認、このモードでは省電力のためアニメーションが自動的に無効になります" + "value": "高解像度ビデオ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "[저전력 모드]가 활성화되어 있는지 확인, 배터리 절약을 위해 애니메이션이 자동으로 비활성화됩니다" + "value": "고해상도 비디오" } } } }, - "wallpaper.faq4.question": { + "editor.diagnosisHighResDesc": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "Live Photo 图标是灰色/划线?" + "value": "建议开启兼容模式以加快处理速度" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "Live Photo 圖示是灰色/劃線?" + "value": "建議開啟相容模式以加快處理速度" } }, "en": { "stringUnit": { "state": "translated", - "value": "Live Photo icon is gray/crossed out?" + "value": "Recommend enabling compatibility mode for faster processing" } }, "es": { "stringUnit": { "state": "translated", - "value": "¿El ícono de Live Photo está en gris/tachado?" + "value": "Se recomienda habilitar el modo de compatibilidad para procesamiento más rápido" } }, "ar": { "stringUnit": { "state": "translated", - "value": "أيقونة Live Photo رمادية/مشطوبة؟" + "value": "يوصى بتفعيل وضع التوافق لمعالجة أسرع" } }, "fr": { "stringUnit": { "state": "translated", - "value": "L'icône Live Photo est grise/barrée?" + "value": "Recommandé d'activer le mode de compatibilité pour un traitement plus rapide" } }, "ja": { "stringUnit": { "state": "translated", - "value": "Live Photoアイコンがグレー/取り消し線?" + "value": "処理速度を上げるため互換性モードの有効化を推奨" } }, "ko": { "stringUnit": { "state": "translated", - "value": "Live Photo 아이콘이 회색/취소선이 있나요?" + "value": "더 빠른 처리를 위해 호환성 모드 활성화 권장" } } } }, - "wallpaper.faq4.answer": { + "editor.diagnosisHighResAction": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "iOS 对壁纸有额外限制,部分 Live Photo 可能不支持作为动态壁纸。建议使用 2-3 秒时长、竖屏比例的视频重新生成" + "value": "开启兼容模式" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "iOS 對桌布有額外限制,部分 Live Photo 可能不支援作為動態桌布。建議使用 2-3 秒時長、直向比例的影片重新產生" + "value": "開啟相容模式" } }, "en": { "stringUnit": { "state": "translated", - "value": "iOS has extra wallpaper restrictions, some Live Photos may not work. Try regenerating with a 2-3 second portrait video" + "value": "Enable Compatibility Mode" } }, "es": { "stringUnit": { "state": "translated", - "value": "iOS tiene restricciones adicionales, algunos Live Photos pueden no funcionar. Intenta regenerar con un video vertical de 2-3 segundos" + "value": "Habilitar Modo de Compatibilidad" } }, "ar": { "stringUnit": { "state": "translated", - "value": "iOS لديه قيود إضافية، بعض Live Photos قد لا تعمل. حاول إعادة الإنشاء باستخدام فيديو عمودي بطول 2-3 ثانية" + "value": "تفعيل وضع التوافق" } }, "fr": { "stringUnit": { "state": "translated", - "value": "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" + "value": "Activer le Mode de Compatibilité" } }, "ja": { "stringUnit": { "state": "translated", - "value": "iOSには追加の壁紙制限があり、一部のLive Photoが機能しない場合があります。2〜3秒の縦向き動画で再生成してみてください" + "value": "互換性モードを有効にする" } }, "ko": { "stringUnit": { "state": "translated", - "value": "iOS에는 추가 배경화면 제한이 있어 일부 Live Photo가 작동하지 않을 수 있습니다. 2-3초 길이의 세로 비디오로 다시 생성해 보세요" + "value": "호환성 모드 활성화" } } } }, - "wallpaper.faq5.question": { + "editor.diagnosisHighFrameRate": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "为什么我的锁屏没有动画?" + "value": "高帧率视频" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "為什麼我的鎖定畫面沒有動畫?" + "value": "高畫面更新率影片" } }, "en": { "stringUnit": { "state": "translated", - "value": "Why doesn't my lock screen have animation?" + "value": "High Frame Rate Video" } }, "es": { "stringUnit": { "state": "translated", - "value": "¿Por qué mi pantalla de bloqueo no tiene animación?" + "value": "Video de Alta Tasa de Fotogramas" } }, "ar": { "stringUnit": { "state": "translated", - "value": "لماذا لا تحتوي شاشة القفل على حركة؟" + "value": "فيديو عالي معدل الإطارات" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Pourquoi mon écran de verrouillage n'a-t-il pas d'animation?" + "value": "Vidéo à Fréquence d'Images Élevée" } }, "ja": { "stringUnit": { "state": "translated", - "value": "なぜロック画面にアニメーションがないのですか?" + "value": "高フレームレートビデオ" } }, "ko": { "stringUnit": { "state": "translated", - "value": "왜 내 잠금 화면에 애니메이션이 없나요?" + "value": "고프레임 비디오" } } } }, - "wallpaper.faq5.answer": { + "editor.diagnosisHighFrameRateDesc": { "extractionState": "manual", "localizations": { "zh-Hans": { "stringUnit": { "state": "translated", - "value": "iOS 16 系统限制:锁屏壁纸不支持 Live Photo 动画,建议升级到 iOS 17+" + "value": "将自动转换为 60fps" } }, "zh-Hant": { "stringUnit": { "state": "translated", - "value": "iOS 16 系統限制:鎖定畫面桌布不支援 Live Photo 動畫,建議升級到 iOS 17+" + "value": "將自動轉換為 60fps" } }, "en": { "stringUnit": { "state": "translated", - "value": "iOS 16 limitation: lock screen wallpapers don't support Live Photo animations, upgrade to iOS 17+" + "value": "Will be automatically converted to 60fps" } }, "es": { "stringUnit": { "state": "translated", - "value": "Limitación de iOS 16: los fondos de pantalla de bloqueo no admiten animaciones de Live Photo, actualiza a iOS 17+" + "value": "Se convertirá automáticamente a 60fps" } }, "ar": { "stringUnit": { "state": "translated", - "value": "قيد iOS 16: خلفيات شاشة القفل لا تدعم حركة Live Photo، قم بالترقية إلى iOS 17+" + "value": "سيتم التحويل تلقائيًا إلى 60fps" } }, "fr": { "stringUnit": { "state": "translated", - "value": "Limitation iOS 16 : les fonds d'écran de verrouillage ne supportent pas les animations Live Photo, passez à iOS 17+" + "value": "Sera automatiquement converti en 60fps" } }, "ja": { "stringUnit": { "state": "translated", - "value": "iOS 16の制限:ロック画面壁紙はLive Photoアニメーション非対応、iOS 17+へのアップグレードを推奨" + "value": "自動的に60fpsに変換されます" } }, "ko": { "stringUnit": { "state": "translated", - "value": "iOS 16 제한: 잠금 화면 배경화면은 Live Photo 애니메이션 미지원, iOS 17+로 업그레이드하세요" + "value": "자동으로 60fps로 변환됩니다" + } + } + } + }, + "editor.generateButton": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "生成 Live Photo" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "產生 Live Photo" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Generate Live Photo" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Generar Live Photo" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إنشاء Live Photo" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Générer Live Photo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Live Photoを生成" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "Live Photo 생성" + } + } + } + }, + "processing.cancel": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "取消" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "取消" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Cancel" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Cancelar" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إلغاء" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Annuler" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "キャンセル" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "취소" + } + } + } + }, + "processing.backToRetry": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "返回重试" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "返回重試" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Back to Retry" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Volver a Reintentar" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "العودة للمحاولة مرة أخرى" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Retour pour Réessayer" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "戻って再試行" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "돌아가서 다시 시도" + } + } + } + }, + "processing.preparing": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "准备中..." + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "準備中..." + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Preparing..." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Preparando..." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "جارٍ التحضير..." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Préparation..." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "準備中..." + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "준비 중..." + } + } + } + }, + "processing.normalizeTitle": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "预处理视频" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "預先處理影片" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Preprocessing Video" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Preprocesando Video" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "معالجة الفيديو مسبقًا" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Prétraitement de la Vidéo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ビデオを前処理" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "비디오 사전 처리" + } + } + } + }, + "processing.normalizeDesc": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "调整视频分辨率和帧率" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "調整影片解析度和畫面更新率" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Adjusting video resolution and frame rate" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Ajustando resolución y tasa de fotogramas" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "ضبط دقة الفيديو ومعدل الإطارات" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajustement de la résolution et de la fréquence d'images" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ビデオ解像度とフレームレートを調整" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "비디오 해상도 및 프레임 속도 조정" + } + } + } + }, + "processing.extractKeyFrameTitle": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "提取封面帧" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "提取封面幀" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Extracting Cover Frame" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Extrayendo Fotograma de Portada" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "استخراج إطار الغلاف" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Extraction de l'Image de Couverture" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "カバーフレームを抽出" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "커버 프레임 추출" + } + } + } + }, + "processing.extractKeyFrameDesc": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "从视频中提取封面图片" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "從影片中提取封面圖片" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Extracting cover image from video" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Extrayendo imagen de portada del video" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "استخراج صورة الغلاف من الفيديو" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Extraction de l'image de couverture de la vidéo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ビデオからカバー画像を抽出" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "비디오에서 커버 이미지 추출" + } + } + } + }, + "processing.aiEnhanceTitle": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "AI 增强封面" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "AI 增強封面" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "AI Enhancing Cover" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Mejorando Portada con IA" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تحسين الغلاف بالذكاء الاصطناعي" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Amélioration de la Couverture par IA" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "AIでカバーを強化" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "AI 커버 향상" + } + } + } + }, + "processing.aiEnhanceDesc": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "使用 AI 提升封面画质,约 2-3 秒" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "使用 AI 提升封面畫質,約 2-3 秒" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Using AI to enhance cover quality, ~2-3 seconds" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Usando IA para mejorar la calidad de portada, ~2-3 segundos" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "استخدام الذكاء الاصطناعي لتحسين جودة الغلاف، ~2-3 ثواني" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Utilisation de l'IA pour améliorer la qualité de couverture, ~2-3 secondes" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "AIで画質を向上、約2〜3秒" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "AI를 사용한 품질 향상, 약 2-3초" + } + } + } + }, + "processing.writePhotoMetadataTitle": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "写入图片元数据" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "寫入圖片元資料" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Writing Photo Metadata" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Escribiendo Metadatos de Foto" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "كتابة بيانات الصورة الوصفية" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Écriture des Métadonnées de Photo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "写真メタデータを書き込み" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "사진 메타데이터 작성" + } + } + } + }, + "processing.writePhotoMetadataDesc": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "添加 Live Photo 必要的元数据" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "新增 Live Photo 必要的元資料" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Adding necessary metadata for Live Photo" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Agregando metadatos necesarios para Live Photo" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إضافة البيانات الوصفية الضرورية لـ Live Photo" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ajout des métadonnées nécessaires pour Live Photo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Live Photoに必要なメタデータを追加" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "Live Photo에 필요한 메타데이터 추가" + } + } + } + }, + "processing.writeVideoMetadataTitle": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "写入视频元数据" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "寫入影片元資料" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Writing Video Metadata" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Escribiendo Metadatos de Video" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "كتابة بيانات الفيديو الوصفية" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Écriture des Métadonnées de Vidéo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ビデオメタデータを書き込み" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "비디오 메타데이터 작성" + } + } + } + }, + "processing.writeVideoMetadataDesc": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "处理配对视频的元数据" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "處理配對影片的元資料" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Processing paired video metadata" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Procesando metadatos del video emparejado" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "معالجة بيانات الفيديو المقترن الوصفية" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Traitement des métadonnées de la vidéo appairée" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ペアリングビデオのメタデータを処理" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "페어링된 비디오 메타데이터 처리" + } + } + } + }, + "processing.saveToAlbumTitle": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "保存到相册" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "儲存到相簿" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Saving to Album" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Guardando en Álbum" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "الحفظ في الألبوم" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Enregistrement dans l'Album" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アルバムに保存" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "앨범에 저장" + } + } + } + }, + "processing.saveToAlbumDesc": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "正在保存到系统相册" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "正在儲存到系統相簿" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Saving to system photo library" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Guardando en la biblioteca de fotos del sistema" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "الحفظ في مكتبة صور النظام" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Enregistrement dans la bibliothèque photos du système" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "システムフォトライブラリに保存中" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "시스템 사진 라이브러리에 저장 중" + } + } + } + }, + "processing.validateTitle": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "校验 Live Photo" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "校驗 Live Photo" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Validating Live Photo" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Validando Live Photo" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "التحقق من Live Photo" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Validation de Live Photo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Live Photoを検証" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "Live Photo 검증" + } + } + } + }, + "processing.validateDesc": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "验证 Live Photo 是否正确生成" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "驗證 Live Photo 是否正確產生" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Verifying Live Photo was generated correctly" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Verificando que Live Photo se generó correctamente" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "التحقق من إنشاء Live Photo بشكل صحيح" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Vérification de la génération correcte de Live Photo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "Live Photoが正しく生成されたか検証" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "Live Photo가 올바르게 생성되었는지 확인" + } + } + } + }, + "processing.initializingDesc": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "正在初始化..." + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "正在初始化..." + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Initializing..." + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Inicializando..." + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "جارٍ التهيئة..." + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Initialisation..." + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "初期化中..." + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "초기화 중..." + } + } + } + }, + "result.savedDescription": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "已保存到系统相册,可以设置为动态壁纸" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "已儲存到系統相簿,可以設定為動態桌布" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Saved to photo library, can be set as live wallpaper" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Guardado en biblioteca de fotos, se puede configurar como fondo dinámico" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تم الحفظ في مكتبة الصور، يمكن تعيينه كخلفية حية" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Enregistré dans la bibliothèque photos, peut être défini comme fond d'écran animé" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "フォトライブラリに保存されました、ライブ壁紙として設定できます" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "사진 라이브러리에 저장됨, 라이브 배경화면으로 설정 가능" + } + } + } + }, + "result.validationBadge": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "资源校验" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "資源校驗" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Resource Verified" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Recurso Verificado" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تم التحقق من المورد" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Ressource Vérifiée" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "リソース検証済み" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "리소스 검증됨" + } + } + } + }, + "result.failedDescription": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "请返回重试或检查视频格式" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "請返回重試或檢查影片格式" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Please go back to retry or check video format" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Por favor vuelve para reintentar o verifica el formato del video" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "يرجى العودة لإعادة المحاولة أو التحقق من تنسيق الفيديو" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Veuillez revenir en arrière pour réessayer ou vérifier le format vidéo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "戻って再試行するか、ビデオ形式を確認してください" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "돌아가서 다시 시도하거나 비디오 형식을 확인하세요" + } + } + } + }, + "result.setAsWallpaper": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "设置为壁纸" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "設定為桌布" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Set as Wallpaper" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Configurar como Fondo" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تعيين كخلفية" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Définir comme Fond d'Écran" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "壁紙として設定" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "배경화면으로 설정" + } + } + } + }, + "result.continueCreating": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "继续制作" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "繼續製作" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Continue Creating" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Continuar Creando" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "متابعة الإنشاء" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Continuer la Création" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "制作を続ける" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "계속 만들기" + } + } + } + }, + "result.backToHome": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "返回首页" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "返回首頁" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Back to Home" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Volver al Inicio" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "العودة إلى الصفحة الرئيسية" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Retour à l'Accueil" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ホームに戻る" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "홈으로 돌아가기" + } + } + } + }, + "home.recent": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "最近" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "最近" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Recent" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Reciente" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "الأخيرة" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Récent" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "最近" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "최근" + } + } + } + }, + "home.timeAgo.minutesAgo": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "%lld 分前" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "%lld 分前" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld min ago" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Hace %lld min" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "منذ %lld دقيقة" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Il y a %lld min" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld 分前" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "%lld 분 전" + } + } + } + }, + "home.timeAgo.hoursAgo": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "%lld 小时前" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "%lld 小時前" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld hr ago" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Hace %lld h" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "منذ %lld ساعة" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Il y a %lld h" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld 時間前" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "%lld 시간 전" + } + } + } + }, + "home.timeAgo.daysAgo": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "%lld 天前" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "%lld 天前" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "%lld days ago" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Hace %lld días" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "منذ %lld يوم" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Il y a %lld jours" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "%lld 日前" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "%lld 일 전" + } + } + } + }, + "onboarding.page1.title": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "选择视频" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "選擇影片" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Select Video" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Seleccionar Video" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "اختيار الفيديو" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Sélectionner une Vidéo" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ビデオを選択" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "비디오 선택" + } + } + } + }, + "onboarding.page1.description": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "从相册选择你喜欢的视频片段\n支持各种格式和分辨率" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "從相簿選擇你喜歡的影片片段\n支援各種格式和解析度" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Select your favorite video clip from the album\nSupports various formats and resolutions" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Selecciona tu clip de video favorito del álbum\nAdmite varios formatos y resoluciones" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "اختر مقطع الفيديو المفضل لديك من الألبوم\nيدعم تنسيقات ودقة متنوعة" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Sélectionnez votre clip vidéo préféré de l'album\nPrend en charge divers formats et résolutions" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アルバムからお気に入りのビデオクリップを選択\n様々な形式と解像度に対応" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "앨범에서 좋아하는 비디오 클립 선택\n다양한 형식 및 해상도 지원" + } + } + } + }, + "onboarding.page2.title": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "编辑调整" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "編輯調整" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Edit & Adjust" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Editar y Ajustar" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تحرير وضبط" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Modifier et Ajuster" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "編集と調整" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "편집 및 조정" + } + } + } + }, + "onboarding.page2.description": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "选择比例模板、调整时长\n挑选最佳封面帧" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "選擇比例模板、調整時長\n挑選最佳封面幀" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Choose aspect ratio template, adjust duration\nSelect the best cover frame" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Elige la plantilla de relación de aspecto, ajusta la duración\nSelecciona el mejor fotograma de portada" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "اختر قالب نسبة العرض إلى الارتفاع، اضبط المدة\nحدد أفضل إطار للغلاف" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Choisissez le modèle de rapport d'aspect, ajustez la durée\nSélectionnez la meilleure image de couverture" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "アスペクト比テンプレートを選択、長さを調整\n最適なカバーフレームを選択" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "가로세로 비율 템플릿 선택, 길이 조정\n최적의 커버 프레임 선택" + } + } + } + }, + "onboarding.page3.title": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "AI 增强" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "AI 增強" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "AI Enhancement" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Mejora con IA" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تحسين الذكاء الاصطناعي" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Amélioration IA" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "AI強化" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "AI 향상" + } + } + } + }, + "onboarding.page3.description": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "开启 AI 超分辨率\n提升封面画质,让壁纸更清晰" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "開啟 AI 超解析度\n提升封面畫質,讓桌布更清晰" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Enable AI super resolution\nEnhance cover quality for clearer wallpapers" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Habilitar súper resolución IA\nMejora la calidad de portada para fondos más claros" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "تفعيل الدقة الفائقة بالذكاء الاصطناعي\nتحسين جودة الغلاف لخلفيات أوضح" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Activer la super résolution IA\nAméliore la qualité de couverture pour des fonds d'écran plus nets" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "AI超解像度を有効化\nカバーの画質を向上させ、壁紙をより鮮明に" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "AI 초해상도 활성화\n커버 품질을 향상시켜 배경화면을 더 선명하게" + } + } + } + }, + "onboarding.page4.title": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "生成壁纸" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "產生桌布" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Generate Wallpaper" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Generar Fondo de Pantalla" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إنشاء خلفية" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Générer un Fond d'Écran" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "壁紙を生成" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "배경화면 생성" + } + } + } + }, + "onboarding.page4.description": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "一键生成 Live Photo\n按引导设置为动态锁屏壁纸" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "一鍵產生 Live Photo\n按引導設定為動態鎖定畫面桌布" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Generate Live Photo with one tap\nFollow the guide to set as dynamic lock screen wallpaper" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Generar Live Photo con un toque\nSigue la guía para configurar como fondo de pantalla de bloqueo dinámico" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "إنشاء Live Photo بنقرة واحدة\nاتبع الدليل لتعيينها كخلفية شاشة قفل ديناميكية" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Générez Live Photo en un seul clic\nSuivez le guide pour définir comme fond d'écran de verrouillage dynamique" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "ワンタップでLive Photoを生成\nガイドに従ってダイナミックロック画面壁紙として設定" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "한 번의 탭으로 Live Photo 생성\n가이드를 따라 동적 잠금 화면 배경화면으로 설정" + } + } + } + }, + "onboarding.nextStep": { + "extractionState": "manual", + "localizations": { + "zh-Hans": { + "stringUnit": { + "state": "translated", + "value": "下一步" + } + }, + "zh-Hant": { + "stringUnit": { + "state": "translated", + "value": "下一步" + } + }, + "en": { + "stringUnit": { + "state": "translated", + "value": "Next" + } + }, + "es": { + "stringUnit": { + "state": "translated", + "value": "Siguiente" + } + }, + "ar": { + "stringUnit": { + "state": "translated", + "value": "التالي" + } + }, + "fr": { + "stringUnit": { + "state": "translated", + "value": "Suivant" + } + }, + "ja": { + "stringUnit": { + "state": "translated", + "value": "次へ" + } + }, + "ko": { + "stringUnit": { + "state": "translated", + "value": "다음" } } } diff --git a/to-live-photo/to-live-photo/Views/EditorView.swift b/to-live-photo/to-live-photo/Views/EditorView.swift index 4339c22..cb3d089 100644 --- a/to-live-photo/to-live-photo/Views/EditorView.swift +++ b/to-live-photo/to-live-photo/Views/EditorView.swift @@ -57,7 +57,7 @@ struct EditorView: View { iPhoneLayout } } - .navigationTitle("编辑") + .navigationTitle(String(localized: "editor.title")) .navigationBarTitleDisplayMode(.inline) .onAppear { loadVideo() @@ -280,10 +280,10 @@ struct EditorView: View { } VStack(alignment: .leading, spacing: 4) { - Text("此图片将作为 Live Photo 的静态封面") + Text(String(localized: "editor.coverFrameHint1")) .font(.caption) .foregroundColor(.textSecondary) - Text("拖动下方滑杆选择封面时刻") + Text(String(localized: "editor.coverFrameHint2")) .font(.caption) .foregroundColor(.textSecondary) } @@ -301,10 +301,10 @@ struct EditorView: View { HStack { Image(systemName: "timer") .foregroundStyle(.tint) - Text("视频时长") + Text(String(localized: "editor.videoDuration")) .font(.headline) Spacer() - Text(String(format: "%.1f 秒", trimEnd - trimStart)) + Text(String(format: String(localized: "editor.durationSeconds"), trimEnd - trimStart)) .font(.subheadline) .fontWeight(.medium) .foregroundStyle(.tint) @@ -315,7 +315,7 @@ struct EditorView: View { } .disabled(videoDuration < 1.0) - Text("Live Photo 壁纸推荐时长:1 ~ 1.5 秒") + Text(String(localized: "editor.durationHint")) .font(.caption) .foregroundColor(.textSecondary) } @@ -331,10 +331,10 @@ struct EditorView: View { HStack { Image(systemName: "clock") .foregroundStyle(.tint) - Text("封面时刻") + Text(String(localized: "editor.keyFrameTime")) .font(.headline) Spacer() - Text(String(format: "%.2f 秒", keyFrameTime)) + Text(String(format: String(localized: "editor.keyFrameSeconds"), keyFrameTime)) .font(.subheadline) .fontWeight(.medium) .foregroundStyle(.tint) @@ -346,7 +346,7 @@ struct EditorView: View { } } - Text("选择视频中的某一帧作为 Live Photo 的封面") + Text(String(localized: "editor.keyFrameHint")) .font(.caption) .foregroundColor(.textSecondary) } @@ -364,9 +364,9 @@ struct EditorView: View { Image(systemName: "wand.and.stars.inverse") .foregroundStyle(.purple) VStack(alignment: .leading, spacing: 2) { - Text("AI 超分辨率") + Text(String(localized: "editor.aiEnhance")) .font(.headline) - Text("使用 AI 提升封面画质") + Text(String(localized: "editor.aiEnhanceDescription")) .font(.caption) .foregroundColor(.textSecondary) } @@ -386,7 +386,7 @@ struct EditorView: View { HStack(spacing: 8) { ProgressView() .scaleEffect(0.8) - Text("正在下载 AI 模型...") + Text(String(localized: "editor.aiModelDownloading")) .font(.caption) .foregroundColor(.textSecondary) } @@ -408,7 +408,7 @@ struct EditorView: View { Image(systemName: "arrow.down.circle") .foregroundStyle(.orange) .font(.caption) - Text("首次使用需下载 AI 模型(约 64MB)") + Text(String(localized: "editor.aiModelDownloadHint")) .font(.caption) } } @@ -416,21 +416,21 @@ struct EditorView: View { Image(systemName: "sparkles") .foregroundStyle(.purple) .font(.caption) - Text("分辨率提升约 2 倍") + Text(String(localized: "editor.aiResolutionBoost")) .font(.caption) } HStack(spacing: 4) { Image(systemName: "clock") .foregroundStyle(.purple) .font(.caption) - Text("处理时间:约 2-3 秒") + Text(String(localized: "editor.aiProcessingTime")) .font(.caption) } HStack(spacing: 4) { Image(systemName: "cpu") .foregroundStyle(.purple) .font(.caption) - Text("本地 AI 处理,无需网络") + Text(String(localized: "editor.aiLocalProcessing")) .font(.caption) } } @@ -443,7 +443,7 @@ struct EditorView: View { Image(systemName: "exclamationmark.triangle") .foregroundStyle(.yellow) .font(.caption) - Text("当前设备不支持 AI 增强") + Text(String(localized: "editor.aiNotSupported")) .font(.caption) .foregroundColor(.textSecondary) } @@ -468,9 +468,9 @@ struct EditorView: View { Image(systemName: "gearshape.2") .foregroundStyle(.tint) VStack(alignment: .leading, spacing: 2) { - Text("兼容模式") + Text(String(localized: "editor.compatibilityMode")) .font(.headline) - Text("适用于较旧设备或生成失败时") + Text(String(localized: "editor.compatibilityDescription")) .font(.caption) .foregroundColor(.textSecondary) } @@ -484,28 +484,28 @@ struct EditorView: View { Image(systemName: "checkmark.circle.fill") .foregroundStyle(.green) .font(.caption) - Text("分辨率:720p") + Text(String(localized: "editor.resolution720p")) .font(.caption) } HStack(spacing: 4) { Image(systemName: "checkmark.circle.fill") .foregroundStyle(.green) .font(.caption) - Text("帧率:30fps") + Text(String(localized: "editor.framerate30fps")) .font(.caption) } HStack(spacing: 4) { Image(systemName: "checkmark.circle.fill") .foregroundStyle(.green) .font(.caption) - Text("编码:H.264") + Text(String(localized: "editor.codecH264")) .font(.caption) } HStack(spacing: 4) { Image(systemName: "checkmark.circle.fill") .foregroundStyle(.green) .font(.caption) - Text("色彩:SDR") + Text(String(localized: "editor.colorSDR")) .font(.caption) } } @@ -525,7 +525,7 @@ struct EditorView: View { HStack { Image(systemName: "exclamationmark.triangle.fill") .foregroundStyle(.yellow) - Text("视频检测") + Text(String(localized: "editor.videoDiagnosis")) .font(.headline) } @@ -574,7 +574,7 @@ struct EditorView: View { } label: { HStack { Image(systemName: "wand.and.stars") - Text("生成 Live Photo") + Text(String(localized: "editor.generateButton")) } .font(.headline) .frame(maxWidth: .infinity) @@ -919,8 +919,8 @@ struct VideoDiagnosis { result.append(DiagnosisSuggestion( icon: "sun.max.fill", iconColor: .orange, - title: "HDR 视频", - description: "将自动转换为 SDR 以确保兼容性", + title: String(localized: "editor.diagnosisHDR"), + description: String(localized: "editor.diagnosisHDRDesc"), actionText: nil, action: nil )) @@ -930,9 +930,9 @@ struct VideoDiagnosis { result.append(DiagnosisSuggestion( icon: "4k.tv.fill", iconColor: .purple, - title: "高分辨率视频", - description: "建议开启兼容模式以加快处理速度", - actionText: "开启兼容模式", + title: String(localized: "editor.diagnosisHighRes"), + description: String(localized: "editor.diagnosisHighResDesc"), + actionText: String(localized: "editor.diagnosisHighResAction"), action: nil )) } @@ -941,8 +941,8 @@ struct VideoDiagnosis { result.append(DiagnosisSuggestion( icon: "speedometer", iconColor: .blue, - title: "高帧率视频", - description: "将自动转换为 60fps", + title: String(localized: "editor.diagnosisHighFrameRate"), + description: String(localized: "editor.diagnosisHighFrameRateDesc"), actionText: nil, action: nil )) diff --git a/to-live-photo/to-live-photo/Views/OnboardingView.swift b/to-live-photo/to-live-photo/Views/OnboardingView.swift index 56ee766..6fd3bce 100644 --- a/to-live-photo/to-live-photo/Views/OnboardingView.swift +++ b/to-live-photo/to-live-photo/Views/OnboardingView.swift @@ -16,26 +16,26 @@ struct OnboardingView: View { OnboardingPage( icon: "video.fill", gradient: Color.gradientPrimary, - title: "选择视频", - description: "从相册选择你喜欢的视频片段\n支持各种格式和分辨率" + title: String(localized: "onboarding.page1.title"), + description: String(localized: "onboarding.page1.description") ), OnboardingPage( icon: "crop", gradient: Color.gradientWarm, - title: "编辑调整", - description: "选择比例模板、调整时长\n挑选最佳封面帧" + title: String(localized: "onboarding.page2.title"), + description: String(localized: "onboarding.page2.description") ), OnboardingPage( icon: "wand.and.stars", gradient: Color.gradientPink, - title: "AI 增强", - description: "开启 AI 超分辨率\n提升封面画质,让壁纸更清晰" + title: String(localized: "onboarding.page3.title"), + description: String(localized: "onboarding.page3.description") ), OnboardingPage( icon: "livephoto", gradient: Color.gradientSuccess, - title: "生成壁纸", - description: "一键生成 Live Photo\n按引导设置为动态锁屏壁纸" + title: String(localized: "onboarding.page4.title"), + description: String(localized: "onboarding.page4.description") ) ] @@ -147,7 +147,7 @@ struct OnboardingView: View { } } label: { HStack(spacing: DesignTokens.Spacing.sm) { - Text(currentPage < pages.count - 1 ? "下一步" : "开始使用") + Text(currentPage < pages.count - 1 ? String(localized: "onboarding.nextStep") : String(localized: "onboarding.getStarted")) .font(.system(size: DesignTokens.FontSize.base, weight: .semibold)) Image(systemName: currentPage < pages.count - 1 ? "arrow.right" : "checkmark") diff --git a/to-live-photo/to-live-photo/Views/ProcessingView.swift b/to-live-photo/to-live-photo/Views/ProcessingView.swift index c19bda6..a2564a6 100644 --- a/to-live-photo/to-live-photo/Views/ProcessingView.swift +++ b/to-live-photo/to-live-photo/Views/ProcessingView.swift @@ -35,13 +35,13 @@ struct ProcessingView: View { } .padding(.horizontal, DesignTokens.Spacing.xxl) } - .navigationTitle("生成中") + .navigationTitle(String(localized: "processing.title")) .navigationBarTitleDisplayMode(.inline) .navigationBarBackButtonHidden(appState.isProcessing) .toolbar { if appState.isProcessing && !appState.isCancelling { ToolbarItem(placement: .navigationBarLeading) { - Button("取消") { + Button(String(localized: "processing.cancel")) { appState.cancelProcessing() appState.pop() } @@ -198,7 +198,7 @@ struct ProcessingView: View { } // 返回按钮 - SoftPrimaryButton("返回重试", icon: "arrow.counterclockwise", gradient: Color.gradientWarm) { + SoftPrimaryButton(String(localized: "processing.backToRetry"), icon: "arrow.counterclockwise", gradient: Color.gradientWarm) { appState.pop() } .padding(.horizontal, DesignTokens.Spacing.xxl) @@ -252,31 +252,31 @@ struct ProcessingView: View { private var stageText: String { guard let stage = appState.processingProgress?.stage else { - return "准备中..." + return String(localized: "processing.preparing") } switch stage { - case .normalize: return "预处理视频" - case .extractKeyFrame: return "提取封面帧" - case .aiEnhance: return "AI 增强封面" - case .writePhotoMetadata: return "写入图片元数据" - case .writeVideoMetadata: return "写入视频元数据" - case .saveToAlbum: return "保存到相册" - case .validate: return "校验 Live Photo" + case .normalize: return String(localized: "processing.normalizeTitle") + case .extractKeyFrame: return String(localized: "processing.extractKeyFrameTitle") + case .aiEnhance: return String(localized: "processing.aiEnhanceTitle") + case .writePhotoMetadata: return String(localized: "processing.writePhotoMetadataTitle") + case .writeVideoMetadata: return String(localized: "processing.writeVideoMetadataTitle") + case .saveToAlbum: return String(localized: "processing.saveToAlbumTitle") + case .validate: return String(localized: "processing.validateTitle") } } private var stageDescription: String { guard let stage = appState.processingProgress?.stage else { - return "正在初始化..." + return String(localized: "processing.initializingDesc") } switch stage { - case .normalize: return "调整视频分辨率和帧率" - case .extractKeyFrame: return "从视频中提取封面图片" - case .aiEnhance: return "使用 AI 提升封面画质,约 2-3 秒" - case .writePhotoMetadata: return "添加 Live Photo 必要的元数据" - case .writeVideoMetadata: return "处理配对视频的元数据" - case .saveToAlbum: return "正在保存到系统相册" - case .validate: return "验证 Live Photo 是否正确生成" + case .normalize: return String(localized: "processing.normalizeDesc") + case .extractKeyFrame: return String(localized: "processing.extractKeyFrameDesc") + case .aiEnhance: return String(localized: "processing.aiEnhanceDesc") + case .writePhotoMetadata: return String(localized: "processing.writePhotoMetadataDesc") + case .writeVideoMetadata: return String(localized: "processing.writeVideoMetadataDesc") + case .saveToAlbum: return String(localized: "processing.saveToAlbumDesc") + case .validate: return String(localized: "processing.validateDesc") } } diff --git a/to-live-photo/to-live-photo/Views/ResultView.swift b/to-live-photo/to-live-photo/Views/ResultView.swift index 32011a1..671a94d 100644 --- a/to-live-photo/to-live-photo/Views/ResultView.swift +++ b/to-live-photo/to-live-photo/Views/ResultView.swift @@ -45,7 +45,7 @@ struct ResultView: View { .padding(.horizontal, DesignTokens.Spacing.xxl) .padding(.bottom, DesignTokens.Spacing.xxl) } - .navigationTitle("完成") + .navigationTitle(String(localized: "result.title")) .navigationBarTitleDisplayMode(.inline) .navigationBarBackButtonHidden(true) .onAppear { @@ -104,7 +104,7 @@ struct ResultView: View { .foregroundColor(.textPrimary) if isSuccess { - Text("已保存到系统相册,可以设置为动态壁纸") + Text(String(localized: "result.savedDescription")) .font(.system(size: DesignTokens.FontSize.base)) .foregroundColor(.textSecondary) .multilineTextAlignment(.center) @@ -112,7 +112,7 @@ struct ResultView: View { // 验证状态 HStack(spacing: DesignTokens.Spacing.lg) { if workflowResult.resourceValidationOK { - ValidationBadge(icon: "checkmark.seal.fill", text: "资源校验", color: .accentGreen) + ValidationBadge(icon: "checkmark.seal.fill", text: String(localized: "result.validationBadge"), color: .accentGreen) } if let isLive = workflowResult.libraryAssetIsLivePhoto, isLive { @@ -121,7 +121,7 @@ struct ResultView: View { } .padding(.top, DesignTokens.Spacing.sm) } else { - Text("请返回重试或检查视频格式") + Text(String(localized: "result.failedDescription")) .font(.system(size: DesignTokens.FontSize.base)) .foregroundColor(.textSecondary) } @@ -136,11 +136,11 @@ struct ResultView: View { private var actionButtons: some View { VStack(spacing: DesignTokens.Spacing.md) { if isSuccess { - SoftPrimaryButton("设置为壁纸", icon: "photo.on.rectangle", gradient: Color.gradientPrimary) { + SoftPrimaryButton(String(localized: "result.setAsWallpaper"), icon: "photo.on.rectangle", gradient: Color.gradientPrimary) { appState.navigateTo(.wallpaperGuide(assetId: workflowResult.savedAssetId)) } - SoftSecondaryButton("继续制作", icon: "plus.circle") { + SoftSecondaryButton(String(localized: "result.continueCreating"), icon: "plus.circle") { appState.popToRoot() } } else { @@ -148,7 +148,7 @@ struct ResultView: View { appState.pop() } - SoftSecondaryButton("返回首页", icon: "house") { + SoftSecondaryButton(String(localized: "result.backToHome"), icon: "house") { appState.popToRoot() } }