diff --git a/crates/op-i18n/src/i18n/catalog_integrity_tests.rs b/crates/op-i18n/src/i18n/catalog_integrity_tests.rs index bd17d8a7d..88e3b582a 100644 --- a/crates/op-i18n/src/i18n/catalog_integrity_tests.rs +++ b/crates/op-i18n/src/i18n/catalog_integrity_tests.rs @@ -251,7 +251,7 @@ fn placeholders(value: &str) -> BTreeSet { fn every_locale_has_exactly_the_english_key_set() { let all_tables = tables(); let expected = table_keys(all_tables[0].0, all_tables[0].1, all_tables[0].2); - assert_eq!(expected.len(), 1276, "update the intentional catalog size"); + assert_eq!(expected.len(), 1294, "update the intentional catalog size"); for (name, main, git, lookup) in all_tables { let actual = table_keys(name, main, git); @@ -271,6 +271,37 @@ fn every_locale_has_exactly_the_english_key_set() { } } +#[test] +fn scene_template_catalog_is_complete_in_all_fifteen_locales() { + for key in [ + "sceneTemplate.title", + "sceneTemplate.searchPlaceholder", + "sceneTemplate.empty", + "sceneTemplate.frames", + "sceneTemplate.filter.all", + "sceneTemplate.scene.tutorial", + "sceneTemplate.scene.comparison", + "sceneTemplate.scene.carousel", + "sceneTemplate.scene.slides", + "sceneTemplate.item.screenshotTutorial.title", + "sceneTemplate.item.screenshotTutorial.summary", + "sceneTemplate.item.knowledgeCarousel.title", + "sceneTemplate.item.knowledgeCarousel.summary", + "sceneTemplate.item.beforeAfter.title", + "sceneTemplate.item.beforeAfter.summary", + "sceneTemplate.item.slideDeck.title", + "sceneTemplate.item.slideDeck.summary", + "fileMenu.newFromTemplate", + ] { + for (name, _, _, lookup) in tables() { + assert!( + lookup(key).is_some(), + "locale `{name}` is missing direct Scene Template Center key `{key}`" + ); + } + } +} + #[test] fn collaboration_catalog_is_complete_in_all_fifteen_locales() { let all_tables = tables(); diff --git a/crates/op-i18n/src/i18n/de_panel.rs b/crates/op-i18n/src/i18n/de_panel.rs index 4c8061009..409708b4e 100644 --- a/crates/op-i18n/src/i18n/de_panel.rs +++ b/crates/op-i18n/src/i18n/de_panel.rs @@ -82,6 +82,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "Dieser Sitzung beitreten", "collab.action.rejectOwner" => "Nicht beitreten", "collab.error.ownerNotConfirmed" => "Du hast den Host nicht bestätigt, daher wurde nichts geladen.", + "sceneTemplate.title" => "Szenenvorlagen", + "sceneTemplate.searchPlaceholder" => "Szenen oder Vorlagen suchen…", + "sceneTemplate.empty" => "Keine passenden Vorlagen gefunden", + "sceneTemplate.frames" => "Seiten: {{count}}", + "sceneTemplate.filter.all" => "Alle", + "sceneTemplate.scene.tutorial" => "Tutorialgrafik", + "sceneTemplate.scene.comparison" => "Vergleichsgrafik", + "sceneTemplate.scene.carousel" => "Wissenskarten", + "sceneTemplate.scene.slides" => "Präsentation", + "sceneTemplate.item.screenshotTutorial.title" => "Screenshot-Tutorial · 3 Schritte", + "sceneTemplate.item.screenshotTutorial.summary" => { + "Cover, drei Anleitungsschritte und ein abschließender Call-to-Action. Screenshots und Texte ersetzen – fertig zur Veröffentlichung." + } + "sceneTemplate.item.knowledgeCarousel.title" => "Wissens- und Insights-Karussell", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "Cover, drei Kernpunkte und eine Zusammenfassung – ideal, um einen Gedanken in wischbare Karten aufzuteilen." + } + "sceneTemplate.item.beforeAfter.title" => "Redesign-Vergleich: Vorher/Nachher", + "sceneTemplate.item.beforeAfter.summary" => { + "Vorher und Nachher nebeneinander mit Hinweisen zu den Änderungen – ideal für Retrospektiven und Portfolios." + } + "sceneTemplate.item.slideDeck.title" => "Präsentation · 6 Folien", + "sceneTemplate.item.slideDeck.summary" => { + "Cover, Agenda, Kernpunkte, Daten, Diagramm und Abschluss im 16:9-Format. Texte ersetzen und präsentieren." + } + "fileMenu.newFromTemplate" => "Neu aus Vorlage", _ => return super::de_collab::lookup(key), }) } diff --git a/crates/op-i18n/src/i18n/en_panel.rs b/crates/op-i18n/src/i18n/en_panel.rs index 050e8ef8f..b3c2e2921 100644 --- a/crates/op-i18n/src/i18n/en_panel.rs +++ b/crates/op-i18n/src/i18n/en_panel.rs @@ -97,6 +97,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "Join this session", "collab.action.rejectOwner" => "Do not join", "collab.error.ownerNotConfirmed" => "You did not confirm the host, so nothing was loaded.", + "sceneTemplate.title" => "Scene Templates", + "sceneTemplate.searchPlaceholder" => "Search scenes or templates", + "sceneTemplate.empty" => "No matching templates", + "sceneTemplate.frames" => "Pages: {{count}}", + "sceneTemplate.filter.all" => "All", + "sceneTemplate.scene.tutorial" => "Tutorial Graphic", + "sceneTemplate.scene.comparison" => "Comparison Graphic", + "sceneTemplate.scene.carousel" => "Knowledge Cards", + "sceneTemplate.scene.slides" => "Presentation", + "sceneTemplate.item.screenshotTutorial.title" => "Three-Step Screenshot Tutorial Cards", + "sceneTemplate.item.screenshotTutorial.summary" => { + "A cover, three how-to steps, and a closing call to action. Replace the screenshots and instructions to publish." + } + "sceneTemplate.item.knowledgeCarousel.title" => "Knowledge and Insights Carousel", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "A cover, three key points, and a summary page—ideal for breaking one idea into a continuous, swipeable card series." + } + "sceneTemplate.item.beforeAfter.title" => "Before-and-After Redesign Comparison", + "sceneTemplate.item.beforeAfter.summary" => { + "A side-by-side before-and-after comparison with notes on the changes, ideal for retrospectives and portfolio showcases." + } + "sceneTemplate.item.slideDeck.title" => "Presentation · Six Slides", + "sceneTemplate.item.slideDeck.summary" => { + "A cover, agenda, key points, data, charts, and a closing slide in 16:9 presentation format. Replace the copy and present." + } + "fileMenu.newFromTemplate" => "New from Template", _ => return super::en_collab::lookup(key), }) } diff --git a/crates/op-i18n/src/i18n/es_panel.rs b/crates/op-i18n/src/i18n/es_panel.rs index 78e3400b7..07dd7e583 100644 --- a/crates/op-i18n/src/i18n/es_panel.rs +++ b/crates/op-i18n/src/i18n/es_panel.rs @@ -84,6 +84,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "Unirse a esta sesión", "collab.action.rejectOwner" => "No unirse", "collab.error.ownerNotConfirmed" => "No confirmaste al anfitrión, así que no se cargó nada.", + "sceneTemplate.title" => "Plantillas de escenas", + "sceneTemplate.searchPlaceholder" => "Buscar escenas o plantillas…", + "sceneTemplate.empty" => "No hay plantillas que coincidan", + "sceneTemplate.frames" => "Páginas: {{count}}", + "sceneTemplate.filter.all" => "Todo", + "sceneTemplate.scene.tutorial" => "Tutorial", + "sceneTemplate.scene.comparison" => "Comparativa", + "sceneTemplate.scene.carousel" => "Tarjetas de conocimiento", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => "Tutorial con capturas · 3 pasos", + "sceneTemplate.item.screenshotTutorial.summary" => { + "Portada, tres pasos y una llamada a la acción final. Sustituye las capturas y el texto para publicar." + } + "sceneTemplate.item.knowledgeCarousel.title" => "Carrusel de conocimiento e ideas", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "Portada, tres ideas clave y una página de resumen, ideal para convertir un punto de vista en tarjetas para deslizar." + } + "sceneTemplate.item.beforeAfter.title" => "Comparativa antes/después", + "sceneTemplate.item.beforeAfter.summary" => { + "Comparativa antes/después en paralelo, con notas sobre los cambios; ideal para retrospectivas y portfolios." + } + "sceneTemplate.item.slideDeck.title" => "Presentación · 6 diapositivas", + "sceneTemplate.item.slideDeck.summary" => { + "Portada, agenda, puntos clave, datos, gráfico y cierre, en formato 16:9. Sustituye el texto y estará lista para presentar." + } + "fileMenu.newFromTemplate" => "Nuevo a partir de una plantilla", _ => return super::es_collab::lookup(key), }) } diff --git a/crates/op-i18n/src/i18n/fr_panel.rs b/crates/op-i18n/src/i18n/fr_panel.rs index cac322a8e..fa3cfb1ef 100644 --- a/crates/op-i18n/src/i18n/fr_panel.rs +++ b/crates/op-i18n/src/i18n/fr_panel.rs @@ -84,6 +84,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "Rejoindre cette session", "collab.action.rejectOwner" => "Ne pas rejoindre", "collab.error.ownerNotConfirmed" => "Vous n’avez pas confirmé l’hôte, rien n’a été chargé.", + "sceneTemplate.title" => "Modèles de scènes", + "sceneTemplate.searchPlaceholder" => "Rechercher des scènes ou des modèles…", + "sceneTemplate.empty" => "Aucun modèle correspondant", + "sceneTemplate.frames" => "Pages : {{count}}", + "sceneTemplate.filter.all" => "Tous", + "sceneTemplate.scene.tutorial" => "Tutoriel illustré", + "sceneTemplate.scene.comparison" => "Comparatif", + "sceneTemplate.scene.carousel" => "Cartes de connaissances", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => "Tutoriel par captures d’écran · 3 étapes", + "sceneTemplate.item.screenshotTutorial.summary" => { + "Une couverture, trois étapes et un appel à l’action final : remplacez les captures d’écran et les textes pour publier." + } + "sceneTemplate.item.knowledgeCarousel.title" => "Carrousel de connaissances et d’idées", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "Une couverture, trois idées clés et une page de synthèse, pour décomposer un point de vue en cartes à faire défiler." + } + "sceneTemplate.item.beforeAfter.title" => "Comparatif avant/après", + "sceneTemplate.item.beforeAfter.summary" => { + "Comparaison avant/après côte à côte, accompagnée de notes sur les changements, idéale pour les rétrospectives et les portfolios." + } + "sceneTemplate.item.slideDeck.title" => "Présentation · 6 diapositives", + "sceneTemplate.item.slideDeck.summary" => { + "Couverture, sommaire, points clés, données, graphique et conclusion au format 16:9. Remplacez les textes et présentez." + } + "fileMenu.newFromTemplate" => "Nouveau à partir d’un modèle", _ => return super::fr_collab::lookup(key), }) } diff --git a/crates/op-i18n/src/i18n/hi_panel.rs b/crates/op-i18n/src/i18n/hi_panel.rs index 469fb61c0..416985a3b 100644 --- a/crates/op-i18n/src/i18n/hi_panel.rs +++ b/crates/op-i18n/src/i18n/hi_panel.rs @@ -76,6 +76,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "promptCenter.item.componentFormLab.title" => "Form Lab · फ़ॉर्म कॉम्पोनेंट प्रणाली", "promptCenter.item.modifyPolishCurrent.title" => "वर्तमान स्क्रीन को निखारें", "promptCenter.item.modifyCompleteStates.title" => "कॉम्पोनेंट की अवस्थाएँ पूरी करें", + "sceneTemplate.title" => "सीन टेम्पलेट", + "sceneTemplate.searchPlaceholder" => "सीन या टेम्पलेट खोजें…", + "sceneTemplate.empty" => "कोई मेल खाता टेम्पलेट नहीं मिला", + "sceneTemplate.frames" => "{{count}} पेज", + "sceneTemplate.filter.all" => "सभी", + "sceneTemplate.scene.tutorial" => "ट्यूटोरियल चित्र", + "sceneTemplate.scene.comparison" => "तुलना चित्र", + "sceneTemplate.scene.carousel" => "ज्ञान कार्ड", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => "तीन चरणों वाला स्क्रीनशॉट ट्यूटोरियल कार्ड", + "sceneTemplate.item.screenshotTutorial.summary" => { + "कवर, तीन चरण और अंत में कार्रवाई का आह्वान; स्क्रीनशॉट और टेक्स्ट बदलकर प्रकाशित करें।" + } + "sceneTemplate.item.knowledgeCarousel.title" => "ज्ञान और विचारों की कार्ड-श्रृंखला", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "कवर, तीन मुख्य बिंदु और सारांश पेज; किसी विचार को स्वाइप किए जा सकने वाले क्रमिक कार्डों में बाँटने के लिए उपयुक्त।" + } + "sceneTemplate.item.beforeAfter.title" => "रीडिज़ाइन से पहले और बाद की तुलना", + "sceneTemplate.item.beforeAfter.summary" => { + "बदलावों के नोट्स के साथ पहले और बाद का साथ-साथ तुलनात्मक दृश्य, समीक्षा और पोर्टफ़ोलियो में दिखाने के लिए उपयुक्त।" + } + "sceneTemplate.item.slideDeck.title" => "प्रस्तुति · छह स्लाइड", + "sceneTemplate.item.slideDeck.summary" => { + "कवर, विषय-सूची, मुख्य बिंदु, डेटा, चार्ट और समापन; 16:9 प्रस्तुति अनुपात में, टेक्स्ट बदलते ही प्रस्तुत करने के लिए तैयार।" + } + "fileMenu.newFromTemplate" => "टेम्पलेट से नया बनाएँ", "collab.ownerConfirm.title" => "पुष्टि करें कि आप किससे जुड़ रहे हैं", "collab.ownerConfirm.hint" => "इस सत्र से अभी तक कुछ भी लोड नहीं हुआ है।", "collab.ownerConfirm.account" => "सत्यापित खाता", diff --git a/crates/op-i18n/src/i18n/id_panel.rs b/crates/op-i18n/src/i18n/id_panel.rs index ecd8adee7..97f7ebbee 100644 --- a/crates/op-i18n/src/i18n/id_panel.rs +++ b/crates/op-i18n/src/i18n/id_panel.rs @@ -80,6 +80,34 @@ pub fn lookup(key: &str) -> Option<&'static str> { "promptCenter.item.componentFormLab.title" => "Form Lab · Sistem komponen formulir", "promptCenter.item.modifyPolishCurrent.title" => "Sempurnakan layar saat ini", "promptCenter.item.modifyCompleteStates.title" => "Lengkapi status komponen", + "sceneTemplate.title" => "Templat Adegan", + "sceneTemplate.searchPlaceholder" => "Cari adegan atau templat…", + "sceneTemplate.empty" => "Tidak ada templat yang cocok", + "sceneTemplate.frames" => "{{count}} halaman", + "sceneTemplate.filter.all" => "Semua", + "sceneTemplate.scene.tutorial" => "Gambar tutorial", + "sceneTemplate.scene.comparison" => "Gambar perbandingan", + "sceneTemplate.scene.carousel" => "Kartu pengetahuan", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => { + "Kartu tutorial tangkapan layar 3 langkah" + } + "sceneTemplate.item.screenshotTutorial.summary" => { + "Berisi sampul, tiga langkah panduan, dan ajakan bertindak di bagian akhir. Ganti tangkapan layar serta penjelasannya, lalu siap diterbitkan." + } + "sceneTemplate.item.knowledgeCarousel.title" => "Karusel pengetahuan dan wawasan", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "Berisi sampul, tiga poin utama, dan halaman rangkuman, cocok untuk memecah satu gagasan menjadi rangkaian kartu yang dapat digeser." + } + "sceneTemplate.item.beforeAfter.title" => "Perbandingan sebelum dan sesudah desain ulang", + "sceneTemplate.item.beforeAfter.summary" => { + "Tampilan sebelum dan sesudah diletakkan berdampingan, dilengkapi catatan perubahan; cocok untuk retrospektif dan portofolio." + } + "sceneTemplate.item.slideDeck.title" => "Presentasi · 6 slide", + "sceneTemplate.item.slideDeck.summary" => { + "Berisi sampul, agenda, poin utama, data, grafik, dan penutup dalam rasio presentasi 16:9. Cukup ganti teksnya, lalu siap dipresentasikan." + } + "fileMenu.newFromTemplate" => "Buat dari templat", "collab.ownerConfirm.title" => "Konfirmasi siapa yang Anda ikuti", "collab.ownerConfirm.hint" => "Belum ada apa pun dari sesi ini yang dimuat.", "collab.ownerConfirm.account" => "Akun terverifikasi", diff --git a/crates/op-i18n/src/i18n/ja_panel.rs b/crates/op-i18n/src/i18n/ja_panel.rs index 8c567ecdc..2ea03c01c 100644 --- a/crates/op-i18n/src/i18n/ja_panel.rs +++ b/crates/op-i18n/src/i18n/ja_panel.rs @@ -88,6 +88,34 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "このセッションに参加", "collab.action.rejectOwner" => "参加しない", "collab.error.ownerNotConfirmed" => "ホストを確認しなかったため、何も読み込まれませんでした。", + "sceneTemplate.title" => "シーンテンプレート", + "sceneTemplate.searchPlaceholder" => "シーンやテンプレートを検索…", + "sceneTemplate.empty" => "一致するテンプレートがありません", + "sceneTemplate.frames" => "{{count}}ページ", + "sceneTemplate.filter.all" => "すべて", + "sceneTemplate.scene.tutorial" => "チュートリアル画像", + "sceneTemplate.scene.comparison" => "比較画像", + "sceneTemplate.scene.carousel" => "ナレッジカード", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => { + "3ステップのスクリーンショットチュートリアルカード" + } + "sceneTemplate.item.screenshotTutorial.summary" => { + "表紙、3つの操作ステップ、最後のCTAで構成。スクリーンショットと説明を差し替えるだけで公開できます。" + } + "sceneTemplate.item.knowledgeCarousel.title" => "ナレッジ・インサイトカルーセル", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "表紙、3つの論点、まとめページで構成。1つの主張をスワイプできる連続カードに展開するのに最適です。" + } + "sceneTemplate.item.beforeAfter.title" => "リニューアル前後の比較", + "sceneTemplate.item.beforeAfter.summary" => { + "左右に並べたビフォー・アフターに変更内容を添え、振り返りや作品紹介に最適です。" + } + "sceneTemplate.item.slideDeck.title" => "プレゼンテーション · 6ページ", + "sceneTemplate.item.slideDeck.summary" => { + "表紙、目次、要点、データ、グラフ、締めの6ページ構成。16:9の投影比率で、テキストを差し替えるだけで発表できます。" + } + "fileMenu.newFromTemplate" => "テンプレートから新規作成", _ => return super::ja_collab::lookup(key), }) } diff --git a/crates/op-i18n/src/i18n/ko_panel.rs b/crates/op-i18n/src/i18n/ko_panel.rs index 7a048ddae..ab4febd45 100644 --- a/crates/op-i18n/src/i18n/ko_panel.rs +++ b/crates/op-i18n/src/i18n/ko_panel.rs @@ -88,6 +88,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "이 세션에 참여", "collab.action.rejectOwner" => "참여 안 함", "collab.error.ownerNotConfirmed" => "호스트를 확인하지 않아 아무것도 불러오지 않았습니다.", + "sceneTemplate.title" => "장면 템플릿", + "sceneTemplate.searchPlaceholder" => "장면 또는 템플릿 검색…", + "sceneTemplate.empty" => "일치하는 템플릿이 없습니다", + "sceneTemplate.frames" => "{{count}}페이지", + "sceneTemplate.filter.all" => "전체", + "sceneTemplate.scene.tutorial" => "튜토리얼 이미지", + "sceneTemplate.scene.comparison" => "비교 이미지", + "sceneTemplate.scene.carousel" => "지식 카드", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => "3단계 스크린샷 튜토리얼 카드", + "sceneTemplate.item.screenshotTutorial.summary" => { + "표지, 3단계 작업, 마지막 CTA로 구성되어 있어 스크린샷과 설명만 바꾸면 바로 게시할 수 있습니다." + } + "sceneTemplate.item.knowledgeCarousel.title" => "지식·인사이트 캐러셀", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "표지, 세 가지 논점, 요약 페이지로 구성되어 있어 하나의 관점을 넘겨 보는 연속 카드로 풀어내기에 적합합니다." + } + "sceneTemplate.item.beforeAfter.title" => "개편 전후 비교", + "sceneTemplate.item.beforeAfter.summary" => { + "전후 화면을 좌우로 나란히 배치하고 변경 설명을 더해, 회고나 작업물 소개에 적합합니다." + } + "sceneTemplate.item.slideDeck.title" => "프레젠테이션 · 6페이지", + "sceneTemplate.item.slideDeck.summary" => { + "표지, 목차, 핵심 내용, 데이터, 차트, 마무리로 구성된 16:9 발표 자료로, 문구만 바꾸면 바로 발표할 수 있습니다." + } + "fileMenu.newFromTemplate" => "템플릿에서 새로 만들기", _ => return super::ko_collab::lookup(key), }) } diff --git a/crates/op-i18n/src/i18n/pt_panel.rs b/crates/op-i18n/src/i18n/pt_panel.rs index bc50a4bdb..5a5472457 100644 --- a/crates/op-i18n/src/i18n/pt_panel.rs +++ b/crates/op-i18n/src/i18n/pt_panel.rs @@ -84,6 +84,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "Entrar nesta sessão", "collab.action.rejectOwner" => "Não entrar", "collab.error.ownerNotConfirmed" => "Você não confirmou o anfitrião, então nada foi carregado.", + "sceneTemplate.title" => "Modelos de cenas", + "sceneTemplate.searchPlaceholder" => "Pesquisar cenas ou modelos…", + "sceneTemplate.empty" => "Nenhum modelo correspondente", + "sceneTemplate.frames" => "Páginas: {{count}}", + "sceneTemplate.filter.all" => "Tudo", + "sceneTemplate.scene.tutorial" => "Tutorial", + "sceneTemplate.scene.comparison" => "Comparativo", + "sceneTemplate.scene.carousel" => "Cards de conhecimento", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => "Tutorial com capturas · 3 passos", + "sceneTemplate.item.screenshotTutorial.summary" => { + "Capa, três passos e uma chamada para ação no final. Substitua as capturas de tela e os textos para publicar." + } + "sceneTemplate.item.knowledgeCarousel.title" => "Carrossel de conhecimento e ideias", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "Capa, três pontos e uma página de resumo, ideal para transformar uma ideia em cards deslizáveis." + } + "sceneTemplate.item.beforeAfter.title" => "Comparativo antes e depois", + "sceneTemplate.item.beforeAfter.summary" => { + "Comparação lado a lado do antes e depois, com notas das mudanças; ideal para retrospectivas e portfólios." + } + "sceneTemplate.item.slideDeck.title" => "Apresentação · 6 slides", + "sceneTemplate.item.slideDeck.summary" => { + "Capa, agenda, pontos-chave, dados, gráfico e encerramento, no formato 16:9. Substitua os textos e apresente." + } + "fileMenu.newFromTemplate" => "Novo a partir de um modelo", _ => return super::pt_collab::lookup(key), }) } diff --git a/crates/op-i18n/src/i18n/ru_panel.rs b/crates/op-i18n/src/i18n/ru_panel.rs index a6ac69f46..ca19186b3 100644 --- a/crates/op-i18n/src/i18n/ru_panel.rs +++ b/crates/op-i18n/src/i18n/ru_panel.rs @@ -80,6 +80,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "Присоединиться к сеансу", "collab.action.rejectOwner" => "Не присоединяться", "collab.error.ownerNotConfirmed" => "Вы не подтвердили ведущего, поэтому ничего не загружено.", + "sceneTemplate.title" => "Шаблоны сцен", + "sceneTemplate.searchPlaceholder" => "Поиск сцен и шаблонов…", + "sceneTemplate.empty" => "Подходящих шаблонов не найдено", + "sceneTemplate.frames" => "Страницы: {{count}}", + "sceneTemplate.filter.all" => "Все", + "sceneTemplate.scene.tutorial" => "Обучающая графика", + "sceneTemplate.scene.comparison" => "Сравнительная графика", + "sceneTemplate.scene.carousel" => "Карточки знаний", + "sceneTemplate.scene.slides" => "Презентация", + "sceneTemplate.item.screenshotTutorial.title" => "Скриншот-инструкция · 3 шага", + "sceneTemplate.item.screenshotTutorial.summary" => { + "Обложка, три шага и финальный призыв к действию. Замените скриншоты и текст — и можно публиковать." + } + "sceneTemplate.item.knowledgeCarousel.title" => "Карусель знаний и идей", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "Обложка, три тезиса и итоговый слайд — удобно разложить одну идею на последовательные карточки для свайпа." + } + "sceneTemplate.item.beforeAfter.title" => "Сравнение редизайна «до/после»", + "sceneTemplate.item.beforeAfter.summary" => { + "Версии до и после рядом с пояснениями изменений — для ретроспектив и портфолио." + } + "sceneTemplate.item.slideDeck.title" => "Презентация · 6 слайдов", + "sceneTemplate.item.slideDeck.summary" => { + "Обложка, повестка, ключевые тезисы, данные, диаграмма и финал в формате 16:9. Замените текст — и можно выступать." + } + "fileMenu.newFromTemplate" => "Создать из шаблона", _ => return super::ru_collab::lookup(key), }) } diff --git a/crates/op-i18n/src/i18n/th_panel.rs b/crates/op-i18n/src/i18n/th_panel.rs index 15aa37255..8be222c13 100644 --- a/crates/op-i18n/src/i18n/th_panel.rs +++ b/crates/op-i18n/src/i18n/th_panel.rs @@ -78,6 +78,34 @@ pub fn lookup(key: &str) -> Option<&'static str> { "promptCenter.item.componentFormLab.title" => "Form Lab · ระบบคอมโพเนนต์ฟอร์ม", "promptCenter.item.modifyPolishCurrent.title" => "ปรับแต่งหน้าจอปัจจุบัน", "promptCenter.item.modifyCompleteStates.title" => "เติมสถานะคอมโพเนนต์ให้ครบ", + "sceneTemplate.title" => "เทมเพลตฉาก", + "sceneTemplate.searchPlaceholder" => "ค้นหาฉากหรือเทมเพลต…", + "sceneTemplate.empty" => "ไม่พบเทมเพลตที่ตรงกัน", + "sceneTemplate.frames" => "{{count}} หน้า", + "sceneTemplate.filter.all" => "ทั้งหมด", + "sceneTemplate.scene.tutorial" => "ภาพสอนใช้งาน", + "sceneTemplate.scene.comparison" => "ภาพเปรียบเทียบ", + "sceneTemplate.scene.carousel" => "การ์ดความรู้", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => { + "การ์ดสอนใช้งานด้วยภาพหน้าจอ 3 ขั้นตอน" + } + "sceneTemplate.item.screenshotTutorial.summary" => { + "ประกอบด้วยหน้าปก ขั้นตอนการใช้งาน 3 ขั้น และคำกระตุ้นการตัดสินใจตอนท้าย เพียงเปลี่ยนภาพหน้าจอและคำอธิบายก็พร้อมเผยแพร่" + } + "sceneTemplate.item.knowledgeCarousel.title" => "คารูเซลความรู้และมุมมอง", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "ประกอบด้วยหน้าปก ประเด็นหลัก 3 ข้อ และหน้าสรุป เหมาะสำหรับแยกหนึ่งแนวคิดเป็นการ์ดต่อเนื่องที่ปัดดูได้" + } + "sceneTemplate.item.beforeAfter.title" => "เปรียบเทียบก่อนและหลังปรับดีไซน์", + "sceneTemplate.item.beforeAfter.summary" => { + "วางภาพก่อนและหลังเทียบกันซ้ายขวา พร้อมคำอธิบายการเปลี่ยนแปลง เหมาะสำหรับการสรุปบทเรียนและนำเสนอในพอร์ตโฟลิโอ" + } + "sceneTemplate.item.slideDeck.title" => "งานนำเสนอ · 6 สไลด์", + "sceneTemplate.item.slideDeck.summary" => { + "ประกอบด้วยหน้าปก สารบัญ ประเด็นสำคัญ ข้อมูล แผนภูมิ และหน้าปิด ในอัตราส่วนฉายภาพ 16:9 เพียงเปลี่ยนข้อความก็พร้อมนำเสนอ" + } + "fileMenu.newFromTemplate" => "สร้างใหม่จากเทมเพลต", "collab.ownerConfirm.title" => "ยืนยันว่าคุณกำลังเข้าร่วมกับใคร", "collab.ownerConfirm.hint" => "ยังไม่มีเนื้อหาใดจากเซสชันนี้ถูกโหลด", "collab.ownerConfirm.account" => "บัญชีที่ยืนยันแล้ว", diff --git a/crates/op-i18n/src/i18n/tr_panel.rs b/crates/op-i18n/src/i18n/tr_panel.rs index 8e5a28da4..f66216fa3 100644 --- a/crates/op-i18n/src/i18n/tr_panel.rs +++ b/crates/op-i18n/src/i18n/tr_panel.rs @@ -72,6 +72,34 @@ pub fn lookup(key: &str) -> Option<&'static str> { "promptCenter.item.componentFormLab.title" => "Form Lab · Form bileşeni sistemi", "promptCenter.item.modifyPolishCurrent.title" => "Mevcut ekranı iyileştir", "promptCenter.item.modifyCompleteStates.title" => "Bileşen durumlarını tamamla", + "sceneTemplate.title" => "Sahne Şablonları", + "sceneTemplate.searchPlaceholder" => "Sahne veya şablon ara…", + "sceneTemplate.empty" => "Eşleşen şablon bulunamadı", + "sceneTemplate.frames" => "{{count}} sayfa", + "sceneTemplate.filter.all" => "Tümü", + "sceneTemplate.scene.tutorial" => "Eğitim görseli", + "sceneTemplate.scene.comparison" => "Karşılaştırma görseli", + "sceneTemplate.scene.carousel" => "Bilgi kartları", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => { + "Üç adımlı ekran görüntülü eğitim kartı" + } + "sceneTemplate.item.screenshotTutorial.summary" => { + "Kapak, üç işlem adımı ve son harekete geçirici mesaj; ekran görüntülerini ve metni değiştirip yayımlayın." + } + "sceneTemplate.item.knowledgeCarousel.title" => "Bilgi ve içgörü karuseli", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "Kapak, üç ana fikir ve özet sayfası; tek bir fikri kaydırılabilir ardışık kartlara bölmek için ideal." + } + "sceneTemplate.item.beforeAfter.title" => "Yeniden tasarım öncesi ve sonrası", + "sceneTemplate.item.beforeAfter.summary" => { + "Değişiklik notlarıyla yan yana önce/sonra karşılaştırması; geriye dönük değerlendirmeler ve portföy sunumları için ideal." + } + "sceneTemplate.item.slideDeck.title" => "Sunum · Altı slayt", + "sceneTemplate.item.slideDeck.summary" => { + "Kapak, gündem, ana noktalar, veriler, grafik ve kapanış; 16:9 sunum oranında, metni değiştirip sunmaya hazır." + } + "fileMenu.newFromTemplate" => "Şablondan yeni oluştur", "collab.ownerConfirm.title" => "Kime katıldığınızı onaylayın", "collab.ownerConfirm.hint" => "Bu oturumdan henüz hiçbir şey yüklenmedi.", "collab.ownerConfirm.account" => "Doğrulanmış hesap", diff --git a/crates/op-i18n/src/i18n/vi_panel.rs b/crates/op-i18n/src/i18n/vi_panel.rs index bfbedbbfb..35dad07bc 100644 --- a/crates/op-i18n/src/i18n/vi_panel.rs +++ b/crates/op-i18n/src/i18n/vi_panel.rs @@ -82,6 +82,34 @@ pub fn lookup(key: &str) -> Option<&'static str> { "promptCenter.item.componentFormLab.title" => "Form Lab · Hệ thống thành phần biểu mẫu", "promptCenter.item.modifyPolishCurrent.title" => "Tinh chỉnh màn hình hiện tại", "promptCenter.item.modifyCompleteStates.title" => "Hoàn thiện các trạng thái thành phần", + "sceneTemplate.title" => "Mẫu cảnh", + "sceneTemplate.searchPlaceholder" => "Tìm cảnh hoặc mẫu…", + "sceneTemplate.empty" => "Không tìm thấy mẫu phù hợp", + "sceneTemplate.frames" => "{{count}} trang", + "sceneTemplate.filter.all" => "Tất cả", + "sceneTemplate.scene.tutorial" => "Ảnh hướng dẫn", + "sceneTemplate.scene.comparison" => "Ảnh so sánh", + "sceneTemplate.scene.carousel" => "Thẻ kiến thức", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => { + "Thẻ hướng dẫn 3 bước bằng ảnh chụp màn hình" + } + "sceneTemplate.item.screenshotTutorial.summary" => { + "Gồm trang bìa, ba bước thao tác và lời kêu gọi hành động ở cuối; chỉ cần thay ảnh chụp màn hình và phần mô tả là có thể đăng." + } + "sceneTemplate.item.knowledgeCarousel.title" => "Chuỗi thẻ kiến thức và góc nhìn", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "Gồm trang bìa, ba luận điểm và trang tổng kết, phù hợp để tách một góc nhìn thành chuỗi thẻ liên tiếp có thể vuốt xem." + } + "sceneTemplate.item.beforeAfter.title" => "So sánh trước và sau khi thiết kế lại", + "sceneTemplate.item.beforeAfter.summary" => { + "Đặt phiên bản trước và sau cạnh nhau, kèm chú thích các thay đổi; phù hợp để nhìn lại dự án và trình bày trong hồ sơ năng lực." + } + "sceneTemplate.item.slideDeck.title" => "Bài thuyết trình · 6 trang", + "sceneTemplate.item.slideDeck.summary" => { + "Gồm trang bìa, mục lục, ý chính, dữ liệu, biểu đồ và trang kết, theo tỷ lệ trình chiếu 16:9; chỉ cần thay nội dung là sẵn sàng thuyết trình." + } + "fileMenu.newFromTemplate" => "Tạo mới từ mẫu", "collab.ownerConfirm.title" => "Xác nhận bạn đang tham gia phiên của ai", "collab.ownerConfirm.hint" => "Chưa có nội dung nào của phiên này được tải.", "collab.ownerConfirm.account" => "Tài khoản đã xác minh", diff --git a/crates/op-i18n/src/i18n/zh_cn_panel.rs b/crates/op-i18n/src/i18n/zh_cn_panel.rs index b0ae925f8..836e1f8bd 100644 --- a/crates/op-i18n/src/i18n/zh_cn_panel.rs +++ b/crates/op-i18n/src/i18n/zh_cn_panel.rs @@ -93,6 +93,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "加入此会话", "collab.action.rejectOwner" => "不加入", "collab.error.ownerNotConfirmed" => "你未确认主持人,因此未载入任何内容。", + "sceneTemplate.title" => "场景模板", + "sceneTemplate.searchPlaceholder" => "搜索场景或模板", + "sceneTemplate.empty" => "没有匹配的模板", + "sceneTemplate.frames" => "{{count}} 页", + "sceneTemplate.filter.all" => "全部", + "sceneTemplate.scene.tutorial" => "教程图", + "sceneTemplate.scene.comparison" => "对比图", + "sceneTemplate.scene.carousel" => "知识卡片", + "sceneTemplate.scene.slides" => "PPT", + "sceneTemplate.item.screenshotTutorial.title" => "三步截图教程卡", + "sceneTemplate.item.screenshotTutorial.summary" => { + "封面、三个操作步骤和结尾行动号召,替换截图与说明即可发布。" + } + "sceneTemplate.item.knowledgeCarousel.title" => "知识观点轮播", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "封面、三个论点和总结页,适合把一个观点拆成可滑动的连续卡片。" + } + "sceneTemplate.item.beforeAfter.title" => "改版前后对比", + "sceneTemplate.item.beforeAfter.summary" => { + "左右并置的前后对比,配改动说明,适合复盘与作品展示。" + } + "sceneTemplate.item.slideDeck.title" => "演示文稿 · 六页", + "sceneTemplate.item.slideDeck.summary" => { + "封面、目录、要点、数据、图表和结尾,16:9 投影比例,替换文案即可上台。" + } + "fileMenu.newFromTemplate" => "从模板新建", _ => return super::zh_cn_collab::lookup(key), }) } diff --git a/crates/op-i18n/src/i18n/zh_tw_panel.rs b/crates/op-i18n/src/i18n/zh_tw_panel.rs index 5412d6a33..ffa25b412 100644 --- a/crates/op-i18n/src/i18n/zh_tw_panel.rs +++ b/crates/op-i18n/src/i18n/zh_tw_panel.rs @@ -84,6 +84,32 @@ pub fn lookup(key: &str) -> Option<&'static str> { "collab.action.confirmOwner" => "加入此工作階段", "collab.action.rejectOwner" => "不加入", "collab.error.ownerNotConfirmed" => "你未確認主持人,因此未載入任何內容。", + "sceneTemplate.title" => "場景範本", + "sceneTemplate.searchPlaceholder" => "搜尋場景或範本", + "sceneTemplate.empty" => "沒有符合的範本", + "sceneTemplate.frames" => "{{count}} 頁", + "sceneTemplate.filter.all" => "全部", + "sceneTemplate.scene.tutorial" => "教學圖", + "sceneTemplate.scene.comparison" => "對比圖", + "sceneTemplate.scene.carousel" => "知識卡片", + "sceneTemplate.scene.slides" => "簡報", + "sceneTemplate.item.screenshotTutorial.title" => "三步截圖教學卡", + "sceneTemplate.item.screenshotTutorial.summary" => { + "封面、三個操作步驟和結尾行動呼籲,替換截圖與說明即可發布。" + } + "sceneTemplate.item.knowledgeCarousel.title" => "知識觀點輪播", + "sceneTemplate.item.knowledgeCarousel.summary" => { + "封面、三個論點和總結頁,適合將一個觀點拆成可滑動的連續卡片。" + } + "sceneTemplate.item.beforeAfter.title" => "改版前後對比", + "sceneTemplate.item.beforeAfter.summary" => { + "左右並置的前後對比,搭配改動說明,適合回顧與作品展示。" + } + "sceneTemplate.item.slideDeck.title" => "簡報 · 六頁", + "sceneTemplate.item.slideDeck.summary" => { + "封面、目錄、要點、資料、圖表和結尾,16:9 投影比例,替換文案即可上台。" + } + "fileMenu.newFromTemplate" => "從範本新增", _ => return super::zh_tw_collab::lookup(key), }) }