diff --git a/crates/ui-egui/src/i18n/ja.tsv b/crates/ui-egui/src/i18n/ja.tsv index 2c160f4b..e6ce0d0b 100644 --- a/crates/ui-egui/src/i18n/ja.tsv +++ b/crates/ui-egui/src/i18n/ja.tsv @@ -1819,7 +1819,7 @@ Hard Limiter ハードリミッター Hard Mix ハードミックス Hardware decoding ハードウェアデコード - Hardware decoding: Auto uses the system's video decoder (VideoToolbox on macOS, Media Foundation on Windows, VA-API for H.264 and HEVC on Linux) for the streams it supports, and FilmCraft's own decoder for everything else or if the hardware fails. Media that is already open keeps its decoder until it is reopened. ハードウェアデコード: 「自動」では、対応しているストリームにはシステムのビデオデコーダー (macOS では VideoToolbox、Windows では Media Foundation、Linux では H.264・HEVC 用の VA-API) を使用し、それ以外のストリームや、ハードウェアで失敗した場合は FilmCraft 独自のデコーダーを使用します。すでに開いているメディアは、開き直すまで現在のデコーダーを使い続けます。 + Hardware decoding: Auto uses the system's video decoder (VideoToolbox on macOS, Media Foundation on Windows, VA-API or NVDEC for H.264 and HEVC on Linux) for the streams it supports, and FilmCraft's own decoder for everything else or if the hardware fails. Media that is already open keeps its decoder until it is reopened. ハードウェアデコード: 「自動」では、対応しているストリームにはシステムのビデオデコーダー (macOS では VideoToolbox、Windows では Media Foundation、Linux では H.264・HEVC 用の VA-API または NVDEC) を使用し、それ以外のストリームや、ハードウェアで失敗した場合は FilmCraft 独自のデコーダーを使用します。すでに開いているメディアは、開き直すまで現在のデコーダーを使い続けます。 Head Size 頭部サイズ Heart ハート Height 高さ @@ -2282,7 +2282,7 @@ Repeat Edge Pixels エッジピクセルを繰り返す Replace Color 置換後の色 Replace With Clip From Source Monitor ソースモニターのクリップで置換 - Replicate 複製 + Replicate レプリケート Responsive Design - Position レスポンシブデザイン - 位置 Responsive Design - Time レスポンシブデザイン - 時間 Restore open sequences when opening projects プロジェクトを開くときに、開いていたシーケンスを復元する @@ -2839,7 +2839,7 @@ Keyboard: US キーボード: US 配列 Save preset as: 保存するプリセット名: Commands: コマンド: - {panel} Panel {panel}パネル + {panel} Panel {panel} パネル Application shortcuts work whatever panel has focus アプリケーションのショートカットは、どのパネルにフォーカスがあっても機能します Panel shortcuts override application shortcuts while that panel has focus パネルのショートカットは、そのパネルにフォーカスがある間、アプリケーションのショートカットより優先されます Modifier held / selected 押下中 / 選択中の修飾キー @@ -2981,7 +2981,7 @@ Apple ProRes 422 LT Apple ProRes 422 LT Apple ProRes 422 Proxy Apple ProRes 422 Proxy Apple ProRes 4444 Apple ProRes 4444 - Apple ProRes 4444 with Alpha Apple ProRes 4444(アルファ付き) + Apple ProRes 4444 with Alpha Apple ProRes 4444 (アルファ付き) Apple ProRes 4444 XQ Apple ProRes 4444 XQ Application アプリケーション Apply Guide Template ガイドテンプレートを適用 @@ -3537,10 +3537,30 @@ Text to Speech テキスト読み上げ Edit Narration ナレーションを編集 Clear Transition トランジションを消去 - Set Transition Duration トランジションのデュレーションを設定 + Set Transition Duration トランジションの長さを設定 Refresh Changed Media 変更されたメディアを更新 Project Notes プロジェクトメモ Get Project Notes プロジェクトメモを取得 Edit Project Notes プロジェクトメモを編集 Notes for this project: to-dos, instructions, frame numbers… Saved with the project. このプロジェクトのメモ: やること、指示、フレーム番号など… プロジェクトと一緒に保存されます。 GPU acceleration is unavailable; preview renders on the CPU GPU アクセラレーションを利用できません。プレビューは CPU でレンダリングされます + + Caption Tracks キャプショントラック + Delete Caption Track キャプショントラックを削除 + Delete Caption Tracks キャプショントラックを削除 + Delete Empty Caption Tracks 空のキャプショントラックを削除 + Dock Panel パネルをドッキング + Undock Panel パネルのドッキングを解除 + Docking Action ドッキング操作 + Resize floating panel フローティングパネルのサイズを変更 + Eyedropper (pick a color from the Program monitor) スポイト (プログラムモニターから色を取得) + Eyedropper: no picture to sample スポイト: 色を取得できる画像がありません + In イン + Out アウト + More transport controls その他の再生コントロール + Ripple Trim In リップルトリム (イン) + Ripple Trim Out リップルトリム (アウト) + Roll Edit ロール編集 + Trim In トリム (イン) + Trim Out トリム (アウト) + Use Effect Shutter Angle エフェクトのシャッター角度を使用 diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index 7225b5c9..e4c8ca6a 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -484,6 +484,38 @@ mod tests { assert!(missing.is_empty(), "untranslated Chinese strings: {missing:#?}"); } + /// The Japanese catalog is complete: every menu label, every `tl!` literal and every name the + /// interface translates through `i18n::t`. + #[test] + fn japanese_translates_every_menu_label_tl_literal_and_name() { + let app = crate::FilmcraftApp::new(filmcraft_engine::Session::default()); + let mut missing: Vec = Vec::new(); + let mut need = |text: &str| { + if translatable(text) && !Language::Ja.has(text) && !missing.iter().any(|m| m == text) { + missing.push(text.to_string()); + } + }; + for top in crate::menus::MENUS { + need(top); + } + for it in crate::menus::menu_items(&app) { + need(&it.label); + for p in &it.path { + need(p); + } + } + for (_, text) in sources() { + for lit in tl_literals(&text) { + need(&lit); + } + } + for name in dynamic_names() { + need(&name); + } + missing.sort(); + assert!(missing.is_empty(), "untranslated Japanese strings: {missing:#?}"); + } + /// Chinese switches and persists like the other languages when a Chinese face is available, /// and is refused (the interface stays as it was) without one. #[test]