mirror of
https://github.com/storytold/effectcraft.git
synced 2026-10-30 21:16:52 -06:00
i18n(ja): panels and dialogs (300 rows; 27% → 39%)
The panel catalog behind the menu bar translated the dialogs and Preferences, but much of the work area was still English: panel tabs, form fields, panel context menus, the tracker and graph controls, text-panel options, the File panel's footers and the credits. Add 300 rows to the Japanese catalog — and the matching Simplified and Traditional Chinese sources the tests keep it in step with (the other languages may lag, an untranslated row falls back to English): - panel tabs (dock.rs / dock_ui.rs titles), the Project panel's columns, footer tooltips and column menu; - form and dialog labels and choice options (the forms the panels open — import, interpret footage, render queue, trackers, text animators…); - panel context menus (timeline layer/property menus, graph editor); - the tracker, graph editor, text-panel, animator and Content-Aware Fill labels; - the Preview panel's transport tooltips, credits table headers and sort options, the composition-settings tabs and the About links; - the engine's text-animator menu labels, added as a data source like the settings pages (they are interface text the panels draw). Strings are wrapped where they are drawn with the existing `tr`/`tr_args` mechanism (the label helpers already ask the catalog, so the data tables need no new ids); the catalog tests keep the three complete languages listing the same sources, reject duplicate or empty rows and keep the placeholder counts. A new test assertion in `japanese_rows_translate_the_panels` pins a sample of this step. The panel catalogs are now 993 Japanese and 995 Chinese rows (the two Chinese catalogs are the complete source list); with the 628-row menu catalogs Japanese is 1,621 of ≈ 4,200 interface strings (39%, up from 27%). Still English: effect parameter names (≈ 1,650 registry names, drawn from the model, not the catalogs), Home-screen literals, tooltips drawn from engine data, engine error messages, and the rows other languages lack. Docs: localization-parity (header, per-language table, overall share, revision history), ROADMAP (language table, progress log, revision history).
This commit is contained in:
+14
-9
@@ -2,7 +2,7 @@
|
||||
|
||||
**Stage: alpha** · next: beta, ~30 points of "ready for real work" and ~350–620 h away
|
||||
|
||||
> **Last reviewed:** 2026-10-12 · **Last updated:** 2026-10-12 · **Change:** minor (open-issue count, crash list and localization share re-audited against `upstream/main` 470ea7a3) · **Target:** Adobe After Effects 2026 (26.5.0.89)
|
||||
> **Last reviewed:** 2026-10-12 · **Last updated:** 2026-10-22 · **Change:** minor (localization: 300 more panel/dialog rows in Japanese and the Chinese catalogs; Japanese 27% → 39%) · **Target:** Adobe After Effects 2026 (26.5.0.89)
|
||||
|
||||
EffectCraft aims to do what After Effects does, with the same panels, menus and behaviour, written
|
||||
from scratch in Rust. This page is the one-page summary; the evidence is in
|
||||
@@ -80,24 +80,24 @@ Weights and evidence per row: [target-app-parity.md](docs/target-app-parity.md#b
|
||||
|
||||
## Languages
|
||||
|
||||
UI strings translated out of ≈ 3,900 (detail: [localization-parity.md](docs/localization-parity.md)).
|
||||
UI strings translated out of ≈ 4,200 (detail: [localization-parity.md](docs/localization-parity.md)).
|
||||
|
||||
| Language | Status | % |
|
||||
|---|---|---:|
|
||||
| English | full | 100% |
|
||||
| Simplified Chinese | partial (menus, part of the panels) | 29% |
|
||||
| Spanish | menus only | 16% |
|
||||
| Simplified Chinese | partial (menus, most of the panels) | 39% |
|
||||
| Spanish | menus only | 15% |
|
||||
| Hindi | none | 0% |
|
||||
| Arabic | none | 0% |
|
||||
| French | menus only | 16% |
|
||||
| Portuguese (Brazil) | partial (menus, part of the panels) | 26% |
|
||||
| French | menus only | 15% |
|
||||
| Portuguese (Brazil) | partial (menus, part of the panels) | 25% |
|
||||
| Indonesian | none | 0% |
|
||||
| Japanese | partial (menus, part of the panels) | 27% |
|
||||
| German | menus only | 16% |
|
||||
| Japanese | partial (menus, most of the panels) | 39% |
|
||||
| German | menus only | 15% |
|
||||
| Korean | none | 0% |
|
||||
| Vietnamese | none | 0% |
|
||||
|
||||
Also shipped: Traditional Chinese (partial, 29%), Ukrainian (partial, 29%), Czech (partial, 29%) and Russian (menus only, 16%). No language has had
|
||||
Also shipped: Traditional Chinese (partial, 39%), Ukrainian (partial, 27%), Czech (partial, 27%) and Russian (menus only, 15%). No language has had
|
||||
native-speaker review.
|
||||
|
||||
## Upcoming
|
||||
@@ -117,6 +117,10 @@ Come tell us what matters most to you on [Discord](https://discord.gg/artcraft).
|
||||
|
||||
## Progress log
|
||||
|
||||
- 2026-10-22: Localization: the panel/dialog catalogs gain 300 rows in Japanese, Simplified
|
||||
Chinese and Traditional Chinese — panel tabs, form and dialog labels, panel context menus,
|
||||
tracker/graph/text-panel controls, File-panel footers and credits. Japanese is 1,621 of
|
||||
≈ 4,200 interface strings (39%), Simplified and Traditional Chinese 1,623 (39%).
|
||||
- 2026-10-16: Convert To Bezier Path turns a shape layer's Rectangle, Ellipse or Polystar
|
||||
path into an editable Path 1 with the same geometry, as After Effects does; it used to
|
||||
apply to mask RotoBezier only, so a parametric shape path could not be converted at all
|
||||
@@ -154,6 +158,7 @@ Come tell us what matters most to you on [Discord](https://discord.gg/artcraft).
|
||||
|
||||
| Date | Change | Summary |
|
||||
|---|---|---|
|
||||
| 2026-10-22 | minor | Localization: 300 more panel/dialog rows in Japanese and the Chinese catalogs (panel tabs, form and dialog labels, context menus, tracker/graph/text-panel controls, File-panel footers, credits); language shares recounted (Japanese 27% → 39%, Chinese 29% → 39%, overall 18% → 27%) |
|
||||
| 2026-10-12 | minor | Open-issue count (134 to 216), crash list and localization share (12% to 18%) updated to match docs/gaps.md |
|
||||
| 2026-10-12 | patch | Roto Brush span validation after trimming; command regressions for both layer edges |
|
||||
| 2026-10-10 | minor | Hours to ≈ 95% for each audience |
|
||||
|
||||
@@ -246,7 +246,7 @@ pub fn contributors_ui(ui: &mut egui::Ui, auto: &mut Registry) {
|
||||
ui.horizontal_wrapped(|ui| {
|
||||
ui.label(tr("Show"));
|
||||
for m in NameMode::ALL {
|
||||
let r = ui.selectable_label(v.names == m, m.label());
|
||||
let r = ui.selectable_label(v.names == m, tr(m.label()));
|
||||
auto.add(&format!("about.credits.show.{}", m.id()), r.rect, m.label());
|
||||
if r.clicked() {
|
||||
v.names = m;
|
||||
@@ -254,9 +254,9 @@ pub fn contributors_ui(ui: &mut egui::Ui, auto: &mut Registry) {
|
||||
}
|
||||
ui.separator();
|
||||
ui.label(tr("Sort"));
|
||||
let combo = egui::ComboBox::from_id_salt("credits_sort").selected_text(v.key.label().0).show_ui(ui, |ui| {
|
||||
let combo = egui::ComboBox::from_id_salt("credits_sort").selected_text(tr(v.key.label().0)).show_ui(ui, |ui| {
|
||||
for k in SortKey::ALL {
|
||||
let r = ui.selectable_label(v.key == k, k.label().0);
|
||||
let r = ui.selectable_label(v.key == k, tr(k.label().0));
|
||||
auto.add(&format!("about.credits.sort.{}", k.id()), r.rect, k.label().0);
|
||||
if r.clicked() {
|
||||
v.key = k;
|
||||
@@ -309,7 +309,7 @@ fn table(ui: &mut egui::Ui, list: &[&Contributor], v: &mut View, auto: &mut Regi
|
||||
egui::Grid::new("credits_table").striped(true).num_columns(SortKey::ALL.len()).show(ui, |ui| {
|
||||
for k in SortKey::ALL {
|
||||
let arrow = if v.key == k { if v.ascending { " ▲" } else { " ▼" } } else { "" };
|
||||
let r = ui.button(RichText::new(format!("{}{arrow}", k.label().1)).strong()).on_hover_text(k.label().0);
|
||||
let r = ui.button(RichText::new(format!("{}{arrow}", k.label().1)).strong()).on_hover_text(tr(k.label().0));
|
||||
auto.add(&format!("about.credits.header.{}", k.id()), r.rect, k.label().0);
|
||||
if r.clicked() {
|
||||
if v.key == k {
|
||||
|
||||
@@ -206,7 +206,7 @@ impl EffectcraftApp {
|
||||
let titles = self.tab_titles();
|
||||
let decos = self.tab_decos();
|
||||
let docs = self.tab_docs();
|
||||
let title = |p: PanelKind| titles.iter().find(|(k, _)| *k == p).map(|(_, s)| s.clone()).unwrap_or_else(|| p.title().to_string());
|
||||
let title = |p: PanelKind| titles.iter().find(|(k, _)| *k == p).map(|(_, s)| s.clone()).unwrap_or_else(|| crate::i18n::tr(p.title()).to_string());
|
||||
let info = dock::TabInfo { title: &title, decos: &decos, docs: &docs };
|
||||
// Where each group's tabs are (tab drags show where a tab will land between them).
|
||||
let mut tab_rects: Vec<(String, Vec<(PanelKind, Rect)>)> = vec![];
|
||||
@@ -570,7 +570,7 @@ impl EffectcraftApp {
|
||||
}
|
||||
}
|
||||
// Ghost of the dragged tab.
|
||||
let g = painter.layout_no_wrap(p.title().to_string(), crate::theme::Tokens::ui(12.0), Color32::WHITE);
|
||||
let g = painter.layout_no_wrap(crate::i18n::tr(p.title()).to_string(), crate::theme::Tokens::ui(12.0), Color32::WHITE);
|
||||
let gr = Rect::from_min_size(pos + vec2(12.0, 10.0), g.size() + vec2(16.0, 8.0));
|
||||
painter.rect_filled(gr, 4.0, t.focus.gamma_multiply(0.85));
|
||||
painter.galley(gr.min + vec2(8.0, 4.0), g, Color32::WHITE);
|
||||
|
||||
@@ -825,6 +825,309 @@ const JAPANESE: &[(&str, &str)] = &[
|
||||
("Total Offset", "合計オフセット"),
|
||||
("Per Layer", "レイヤーごと"),
|
||||
("Track", "トラック"),
|
||||
("Force alphabetical order", "アルファベット順を強制"),
|
||||
("Frame rate (fps)", "フレームレート (fps)"),
|
||||
("Import Kind", "読み込みの種類"),
|
||||
("Delay (s)", "遅延 (秒)"),
|
||||
("Amount (%)", "量 (%)"),
|
||||
("Cascade (farther pins trail longer)", "カスケード (離れたピンほど長く遅れる)"),
|
||||
("Speed (%)", "速度 (%)"),
|
||||
("Use Draft Deformation", "下書き変形を使用"),
|
||||
("Show Mesh", "メッシュを表示"),
|
||||
("Scale X (%)", "X 方向の拡大率 (%)"),
|
||||
("Scale Y (%)", "Y 方向の拡大率 (%)"),
|
||||
("Rotation (degrees)", "回転 (度)"),
|
||||
("Move X", "X 移動"),
|
||||
("Move Y", "Y 移動"),
|
||||
("Position (pixels)", "位置 (ピクセル)"),
|
||||
("Position (percent of the composition)", "位置 (コンポジションに対する割合)"),
|
||||
("Use Dimensions From", "使用するサイズの基準"),
|
||||
("Still Duration (seconds)", "静止画のデュレーション (秒)"),
|
||||
("Add to Render Queue", "レンダーキューに追加"),
|
||||
("Sequence Layers", "レイヤーをシーケンス化"),
|
||||
("Duration (seconds)", "デュレーション (秒)"),
|
||||
("Matte color (premultiplied)", "マットの色 (プリマルチプライ)"),
|
||||
("Invert Alpha", "アルファを反転"),
|
||||
("Assume this frame rate", "このフレームレートとみなす"),
|
||||
("Separate Fields", "フィールドを分離"),
|
||||
("Pixel Aspect Ratio", "ピクセル縦横比"),
|
||||
("Loop (times)", "ループ (回)"),
|
||||
("Assign Profile", "プロファイルを割り当て"),
|
||||
("Preserve RGB", "RGB を保持"),
|
||||
("Interpret As Linear Light", "リニア光として解釈"),
|
||||
("Start Timecode", "開始タイムコード"),
|
||||
("Override Start", "開始値を上書き"),
|
||||
("Time display style", "タイムコード表示"),
|
||||
("Color engine", "カラーエンジン"),
|
||||
("Working space", "作業用スペース"),
|
||||
("Working gamma", "作業用ガンマ"),
|
||||
("Linearize working space", "作業用スペースをリニア化"),
|
||||
("Blend colors using 1.0 gamma", "1.0 ガンマで色を混合"),
|
||||
("Output color space", "出力カラースペース"),
|
||||
("Video rendering and effects", "ビデオのレンダリングとエフェクト"),
|
||||
("Time Span", "時間範囲"),
|
||||
("Blur (pixels before auto-trace)", "ブラー (自動トレース前のピクセル)"),
|
||||
("Tolerance (pixels)", "許容値 (ピクセル)"),
|
||||
("Threshold (%)", "しきい値 (%)"),
|
||||
("Minimum Area (pixels)", "最小領域 (ピクセル)"),
|
||||
("Corner Roundness (%)", "角の丸み (%)"),
|
||||
("Apply To New Layer", "新しいレイヤーに適用"),
|
||||
("Sensitivity threshold (0–1, lower finds more)", "感度のしきい値 (0~1、低いほど多く検出)"),
|
||||
("Time field (empty: automatic)", "時間フィールド (空欄: 自動)"),
|
||||
("Video start (ISO date-time, hh:mm:ss, timecode; empty: file date)", "ビデオ開始 (ISO 日時、hh:mm:ss、タイムコード、空欄: ファイルの日付)"),
|
||||
("First sample at (comp seconds)", "最初のサンプル位置 (コンポジション秒)"),
|
||||
("Frame rate", "フレームレート"),
|
||||
("Color (#rrggbb)", "カラー (#rrggbb)"),
|
||||
("Embed footage files", "フッテージを埋め込む"),
|
||||
("Embed up to (MB)", "埋め込み上限 (MB)"),
|
||||
("Orient Along Path", "パスに沿って向きを設定"),
|
||||
("Orient Towards Camera", "カメラの方向に向ける"),
|
||||
("Orient Towards Point of Interest", "対象点の方向に向ける"),
|
||||
("Single Composition", "単一コンポジション"),
|
||||
("Multiple Compositions", "複数のコンポジション"),
|
||||
("Dissolve Front Layer", "前面のレイヤーをディゾルブ"),
|
||||
("Cross Dissolve Front and Back Layers", "前後のレイヤーをクロスディゾルブ"),
|
||||
("Interpret Straight - Unmatted", "ストレート (マットなし) として解釈"),
|
||||
("Interpret Premultiplied - Matted With Color", "プリマルチプライ (色でマット) として解釈"),
|
||||
("Upper Field First", "偶数フィールド優先"),
|
||||
("Lower Field First", "奇数フィールド優先"),
|
||||
("Rec. 2020", "Rec. 2020"),
|
||||
("Use Source File Timecode", "ソースファイルのタイムコードを使用"),
|
||||
("Feet + Frames (35mm)", "フィート + フレーム (35mm)"),
|
||||
("Feet + Frames (16mm)", "フィート + フレーム (16mm)"),
|
||||
("Current Frame", "現在のフレーム"),
|
||||
("Work Area", "作業領域"),
|
||||
("Create Markers", "マーカーを作成"),
|
||||
("Split Layers", "レイヤーを分割"),
|
||||
("Split and Precompose", "分割してプリコンポーズ"),
|
||||
("All layers", "すべてのレイヤー"),
|
||||
("None (leave them out)", "なし (除外)"),
|
||||
("Nested sequences", "ネストしたシーケンス"),
|
||||
("Solid…", "平面…"),
|
||||
("Light…", "ライト…"),
|
||||
("Camera…", "カメラ…"),
|
||||
("Null Object", "ヌルオブジェクト"),
|
||||
("Shape Layer", "シェイプレイヤー"),
|
||||
("Adjustment Layer", "調整レイヤー"),
|
||||
("Layer Settings…", "レイヤー設定…"),
|
||||
("Create Shapes from Vector Layer", "ベクターレイヤーからシェイプを作成"),
|
||||
("Create Shapes from Text", "テキストからシェイプを作成"),
|
||||
("Create Masks from Text", "テキストからマスクを作成"),
|
||||
("New Mask", "新しいマスク"),
|
||||
("Center In View", "ビュー内で中央揃え"),
|
||||
("Fit to Comp", "コンポジションに合わせる"),
|
||||
("Flip Horizontal", "水平方向に反転"),
|
||||
("Flip Vertical", "垂直方向に反転"),
|
||||
("Enable Time Remapping", "時間リマップを有効化"),
|
||||
("Time-Reverse Layer", "レイヤーを時間反転"),
|
||||
("Freeze Frame", "フレームを固定"),
|
||||
("Freeze On Last Frame", "最後のフレームで固定"),
|
||||
("Add Marker", "マーカーを追加"),
|
||||
("Bring Layer to Front", "レイヤーを最前面へ"),
|
||||
("Bring Layer Forward", "レイヤーを前面へ"),
|
||||
("Send Layer Backward", "レイヤーを背面へ"),
|
||||
("Send Layer to Back", "レイヤーを最背面へ"),
|
||||
("Pre-compose…", "プリコンポーズ…"),
|
||||
("Split Layer", "レイヤーを分割"),
|
||||
("Layer Style Options...", "レイヤースタイルのオプション..."),
|
||||
("Convert to Editable Styles", "編集可能なスタイルに変換"),
|
||||
("Show All", "すべて表示"),
|
||||
("Remove All", "すべて削除"),
|
||||
("Separate Dimensions", "次元を分離"),
|
||||
("Add Property to Essential Graphics", "エッセンシャルグラフィックスにプロパティを追加"),
|
||||
("Continuous Bezier", "連続ベジェ"),
|
||||
("Auto Bezier", "自動ベジェ"),
|
||||
("Lock To Time", "時間に固定"),
|
||||
("Rove Across Time", "時間をまたいで移動"),
|
||||
("Anchor Point", "アンカーポイント"),
|
||||
("All Transform Properties", "すべてのトランスフォームプロパティ"),
|
||||
("Line Anchor", "行のアンカー"),
|
||||
("Line Spacing", "行間"),
|
||||
("Character Offset", "文字オフセット"),
|
||||
("Character Value", "文字値"),
|
||||
("Fill Color: RGB", "塗りの色: RGB"),
|
||||
("Fill Color: Hue", "塗りの色: 色相"),
|
||||
("Fill Color: Saturation", "塗りの色: 彩度"),
|
||||
("Fill Color: Brightness", "塗りの色: 明るさ"),
|
||||
("Fill Color: Opacity", "塗りの色: 不透明度"),
|
||||
("Stroke Color: RGB", "線の色: RGB"),
|
||||
("Stroke Color: Hue", "線の色: 色相"),
|
||||
("Stroke Color: Saturation", "線の色: 彩度"),
|
||||
("Stroke Color: Brightness", "線の色: 明るさ"),
|
||||
("Stroke Color: Opacity", "線の色: 不透明度"),
|
||||
("Stroke Width", "線幅"),
|
||||
("Front: Color", "前面: 色"),
|
||||
("Bevel: Color", "ベベル: 色"),
|
||||
("Side: Color", "側面: 色"),
|
||||
("Back: Color", "背面: 色"),
|
||||
("Effect Controls", "エフェクトコントロール"),
|
||||
("Effects & Presets", "エフェクト&プリセット"),
|
||||
("Motion Sketch", "モーションスケッチ"),
|
||||
("Render Queue", "レンダーキュー"),
|
||||
("Mask Interpolation", "マスク補間"),
|
||||
("Script Console", "スクリプトコンソール"),
|
||||
("Essential Graphics", "エッセンシャルグラフィックス"),
|
||||
("ScriptUI Panel", "ScriptUI パネル"),
|
||||
("Lumetri Scopes", "Lumetri スコープ"),
|
||||
("Media Browser", "メディアブラウザー"),
|
||||
("Content-Aware Fill", "コンテンツに応じた塗り"),
|
||||
("Create Nulls From Paths", "パスからヌルを作成"),
|
||||
("VR Comp Editor", "VR コンポジションエディター"),
|
||||
("Media Duration", "メディアの長さ"),
|
||||
("Frame Rate", "フレームレート"),
|
||||
("File Path", "ファイルパス"),
|
||||
("Interpret Footage", "フッテージの解釈"),
|
||||
("Create a new Folder", "新しいフォルダーを作成"),
|
||||
("Create a new Composition", "新しいコンポジションを作成"),
|
||||
("First Frame", "最初のフレーム"),
|
||||
("Previous Frame", "前のフレーム"),
|
||||
("Next Frame", "次のフレーム"),
|
||||
("Last Frame", "最後のフレーム"),
|
||||
("Name (A–Z)", "名前 (A–Z)"),
|
||||
("Merged PRs", "マージ済み PR"),
|
||||
("Lines added", "追加行数"),
|
||||
("Lines deleted", "削除行数"),
|
||||
("Line delta", "行数の差分"),
|
||||
("Binary assets added", "追加バイナリ"),
|
||||
("Binary assets removed", "削除バイナリ"),
|
||||
("First commit", "最初のコミット"),
|
||||
("Last commit", "最後のコミット"),
|
||||
("Display name", "表示名"),
|
||||
("Real name", "本名"),
|
||||
("ArtCraft website", "ArtCraft のウェブサイト"),
|
||||
("Source code on GitHub", "GitHub のソースコード"),
|
||||
("3D Renderer", "3D レンダラー"),
|
||||
("Preset Name", "プリセット名"),
|
||||
("Save Preset…", "プリセットを保存…"),
|
||||
("Delete Preset", "プリセットを削除"),
|
||||
("Lock Aspect Ratio", "縦横比を固定"),
|
||||
("Frame Rate presets", "フレームレートのプリセット"),
|
||||
("Background Color", "背景色"),
|
||||
("Shutter Angle", "シャッター角度"),
|
||||
("Shutter Phase", "シャッター位相"),
|
||||
("Samples Per Frame", "フレームあたりのサンプル数"),
|
||||
("Adaptive Sample Limit", "適応サンプル数の上限"),
|
||||
("X and Y", "X と Y"),
|
||||
("X only", "X のみ"),
|
||||
("Y only", "Y のみ"),
|
||||
("Track Camera", "カメラをトラッキング"),
|
||||
("Warp Stabilizer", "ワープスタビライザー"),
|
||||
("Track Motion", "モーションをトラッキング"),
|
||||
("Stabilize Motion", "モーションを安定化"),
|
||||
("Motion Source:", "モーションソース:"),
|
||||
("Current Track:", "現在のトラック:"),
|
||||
("Track Type:", "トラックの種類:"),
|
||||
("Motion Target:", "モーションの適用先:"),
|
||||
("Track Mask:", "トラックマスク:"),
|
||||
("Analyze forward", "前方を解析"),
|
||||
("Analyze backward", "後方を解析"),
|
||||
("Continue Tracking", "トラッキングを続行"),
|
||||
("Stop Tracking", "トラッキングを停止"),
|
||||
("Adapt Feature", "特徴を適応"),
|
||||
("Extrapolate Motion", "モーションを外挿"),
|
||||
("Attach Point", "アタッチポイント"),
|
||||
("Track Name", "トラック名"),
|
||||
("Motion Tracker Options", "モーショントラッカーのオプション"),
|
||||
("Motion Tracker Apply Options", "モーショントラッカーの適用オプション"),
|
||||
("Edit Value Graph", "値グラフを編集"),
|
||||
("Edit Speed Graph", "速度グラフを編集"),
|
||||
("Show Reference Graph", "参照グラフを表示"),
|
||||
(
|
||||
"Auto-Select Graph Type (speed graph for spatial properties, else value graph)",
|
||||
"グラフの種類を自動選択 (空間プロパティは速度グラフ、それ以外は値グラフ)",
|
||||
),
|
||||
("Auto-zoom graph height", "グラフの高さを自動ズーム"),
|
||||
("Fit all graphs to view", "すべてのグラフをビューに合わせる"),
|
||||
("Fit selection to view", "選択項目をビューに合わせる"),
|
||||
("Snap (key drags snap to the current time and other keys)", "スナップ (キーのドラッグを現在の時間や他のキーに合わせる)"),
|
||||
("Show Transform Box when multiple keys are selected", "複数のキーを選択したときにトランスフォームボックスを表示"),
|
||||
("Separate Dimensions (Position)", "次元を分離 (位置)"),
|
||||
("Convert selected keyframes to Hold", "選択したキーフレームをホールドに変換"),
|
||||
("Convert selected keyframes to Linear", "選択したキーフレームをリニアに変換"),
|
||||
("Convert selected keyframes to Auto Bezier", "選択したキーフレームを自動ベジェに変換"),
|
||||
("Easy Ease (F9)", "イージーイーズ (F9)"),
|
||||
("Easy Ease In (Shift+F9)", "イージーイーズイン (Shift+F9)"),
|
||||
("Easy Ease Out (Ctrl+Shift+F9)", "イージーイーズアウト (Ctrl+Shift+F9)"),
|
||||
("Spatial Path", "空間パス"),
|
||||
("Temporal Path", "時間パス"),
|
||||
("All the Same", "すべて同じ"),
|
||||
("All Independently", "すべて個別"),
|
||||
("Noise Type:", "ノイズの種類:"),
|
||||
("Apply To:", "適用先:"),
|
||||
("Temporal Graph", "時間グラフ"),
|
||||
("Keyframe Rate:", "キーフレームレート:"),
|
||||
("Capture speed at:", "速度の記録位置:"),
|
||||
("Start Capture", "記録を開始"),
|
||||
("Cancel Capture", "記録をキャンセル"),
|
||||
("Small Caps", "スモールキャップ"),
|
||||
("All Small Caps", "すべてスモールキャップ"),
|
||||
("Superscript / Superior", "上付き文字"),
|
||||
("Subscript / Inferior", "下付き文字"),
|
||||
("Standard Ligatures", "標準合字"),
|
||||
("Discretionary Ligatures", "任意合字"),
|
||||
("Contextual Alternates", "状況依存の代替字形"),
|
||||
("Stylistic Alternates", "スタイル代替字形"),
|
||||
("Titling Alternates", "タイトル用代替字形"),
|
||||
("Default Figure Style", "既定の数字スタイル"),
|
||||
("Tabular Lining", "等幅ライニング"),
|
||||
("Proportional Oldstyle", "プロポーショナルオールドスタイル"),
|
||||
("Proportional Lining", "プロポーショナルライニング"),
|
||||
("Tabular Oldstyle", "等幅オールドスタイル"),
|
||||
("Fill Over Stroke", "線の上に塗り"),
|
||||
("Stroke Over Fill", "塗りの上に線"),
|
||||
("Stroke order", "線の順序"),
|
||||
("Single-line Composer", "単一行コンポーザー"),
|
||||
("Every-line Composer", "全行コンポーザー"),
|
||||
("Text direction", "テキストの方向"),
|
||||
("Recently Used", "最近使用した項目"),
|
||||
("User Presets", "ユーザープリセット"),
|
||||
("Remove from Favorites", "お気に入りから削除"),
|
||||
("Show Animation Presets", "アニメーションプリセットを表示"),
|
||||
(" Refresh List", " リストを更新"),
|
||||
(" Clear Recently Used", " 最近使用した項目を消去"),
|
||||
("Show 32 bpc Effects Only", "32 bpc のエフェクトのみ表示"),
|
||||
("Show GPU Accelerated Effects Only", "GPU アクセラレーションのエフェクトのみ表示"),
|
||||
("Show Effects for All Color Depths", "すべての色深度のエフェクトを表示"),
|
||||
("* Animation Presets", "* アニメーションプリセット"),
|
||||
("Select a layer to apply to", "適用するレイヤーを選択してください"),
|
||||
("Search effects and presets", "エフェクトとプリセットを検索"),
|
||||
("Alpha Expansion:", "アルファの拡張:"),
|
||||
("Fill Method:", "塗りの方法:"),
|
||||
("Edge Blend", "エッジのブレンド"),
|
||||
("Entire Duration", "全体のデュレーション"),
|
||||
("Reference Frame:", "参照フレーム:"),
|
||||
("Use Current Time", "現在の時間を使用"),
|
||||
("Generate Fill Layer", "塗りレイヤーを生成"),
|
||||
("Lighting Correction:", "ライティングの補正:"),
|
||||
("Create Text and Camera", "テキストとカメラを作成"),
|
||||
("Create Solid and Camera", "平面とカメラを作成"),
|
||||
("Create Null and Camera", "ヌルとカメラを作成"),
|
||||
("Create Shadow Catcher, Camera and Light", "シャドウキャッチャー、カメラ、ライトを作成"),
|
||||
("Unable to solve camera", "カメラを解析できません"),
|
||||
("Waiting to solve", "解析待ち"),
|
||||
("Create Camera", "カメラを作成"),
|
||||
("track point", "トラックポイント"),
|
||||
("Ruler zero point", "ルーラーの原点"),
|
||||
("Vertical ruler", "垂直ルーラー"),
|
||||
("Horizontal ruler", "水平ルーラー"),
|
||||
("Viewer controls", "ビューアーのコントロール"),
|
||||
("Resolution/Down Sample Factor", "解像度/ダウンサンプル係数"),
|
||||
("Adjust Exposure", "露出を調整"),
|
||||
("Snapshot taken", "スナップショットを撮影しました"),
|
||||
("Fast Previews", "高速プレビュー"),
|
||||
("3D View", "3D ビュー"),
|
||||
("Current time", "現在の時間"),
|
||||
("Layer Transform", "レイヤーのトランスフォーム"),
|
||||
("Reset Transform", "トランスフォームをリセット"),
|
||||
("Text Animation", "テキストアニメーション"),
|
||||
("Text Animation Presets", "テキストアニメーションのプリセット"),
|
||||
("EffectCraft on getartcraft.com", "getartcraft.com の EffectCraft"),
|
||||
("Small Screen", "小さい画面"),
|
||||
("Tool Creates Shape", "ツールでシェイプを作成"),
|
||||
("Tool Creates Mask", "ツールでマスクを作成"),
|
||||
("Blend Mode", "描画モード"),
|
||||
("Show mesh", "メッシュを表示"),
|
||||
("Record Options...", "記録オプション..."),
|
||||
];
|
||||
|
||||
const SIMPLIFIED_CHINESE: &[(&str, &str)] = &[
|
||||
@@ -1565,6 +1868,306 @@ const SIMPLIFIED_CHINESE: &[(&str, &str)] = &[
|
||||
("Total Offset", "总偏移"),
|
||||
("Per Layer", "每个图层"),
|
||||
("Track", "跟踪"),
|
||||
("Force alphabetical order", "强制按字母顺序"),
|
||||
("Frame rate (fps)", "帧速率 (fps)"),
|
||||
("Import Kind", "导入类型"),
|
||||
("Delay (s)", "延迟 (秒)"),
|
||||
("Amount (%)", "数量 (%)"),
|
||||
("Cascade (farther pins trail longer)", "级联 (越远的图钉滞后越长)"),
|
||||
("Speed (%)", "速度 (%)"),
|
||||
("Use Draft Deformation", "使用草稿变形"),
|
||||
("Show Mesh", "显示网格"),
|
||||
("Scale X (%)", "X 缩放 (%)"),
|
||||
("Scale Y (%)", "Y 缩放 (%)"),
|
||||
("Rotation (degrees)", "旋转 (度)"),
|
||||
("Move X", "移动 X"),
|
||||
("Move Y", "移动 Y"),
|
||||
("Position (pixels)", "位置 (像素)"),
|
||||
("Position (percent of the composition)", "位置 (合成百分比)"),
|
||||
("Use Dimensions From", "尺寸来源"),
|
||||
("Still Duration (seconds)", "静止图像持续时间 (秒)"),
|
||||
("Add to Render Queue", "添加到渲染队列"),
|
||||
("Sequence Layers", "序列图层"),
|
||||
("Duration (seconds)", "持续时间 (秒)"),
|
||||
("Matte color (premultiplied)", "遮罩颜色 (预乘)"),
|
||||
("Invert Alpha", "反转 Alpha"),
|
||||
("Assume this frame rate", "按此帧速率处理"),
|
||||
("Separate Fields", "分离场"),
|
||||
("Pixel Aspect Ratio", "像素长宽比"),
|
||||
("Loop (times)", "循环 (次)"),
|
||||
("Assign Profile", "指定配置文件"),
|
||||
("Preserve RGB", "保留 RGB"),
|
||||
("Interpret As Linear Light", "解释为线性光"),
|
||||
("Start Timecode", "开始时间码"),
|
||||
("Override Start", "覆盖开始"),
|
||||
("Time display style", "时间显示样式"),
|
||||
("Color engine", "颜色引擎"),
|
||||
("Working space", "工作空间"),
|
||||
("Working gamma", "工作伽马"),
|
||||
("Linearize working space", "线性化工作空间"),
|
||||
("Blend colors using 1.0 gamma", "使用 1.0 伽马混合颜色"),
|
||||
("Output color space", "输出颜色空间"),
|
||||
("Video rendering and effects", "视频渲染与效果"),
|
||||
("Time Span", "时间范围"),
|
||||
("Blur (pixels before auto-trace)", "模糊 (自动描摹前的像素)"),
|
||||
("Tolerance (pixels)", "容差 (像素)"),
|
||||
("Threshold (%)", "阈值 (%)"),
|
||||
("Minimum Area (pixels)", "最小区域 (像素)"),
|
||||
("Corner Roundness (%)", "角圆度 (%)"),
|
||||
("Apply To New Layer", "应用到新图层"),
|
||||
("Sensitivity threshold (0–1, lower finds more)", "灵敏度阈值 (0–1,越低找到的越多)"),
|
||||
("Time field (empty: automatic)", "时间字段 (为空: 自动)"),
|
||||
("Video start (ISO date-time, hh:mm:ss, timecode; empty: file date)", "视频开始 (ISO 日期时间、hh:mm:ss、时间码;为空: 文件日期)"),
|
||||
("First sample at (comp seconds)", "首个采样位置 (合成秒)"),
|
||||
("Frame rate", "帧速率"),
|
||||
("Color (#rrggbb)", "颜色 (#rrggbb)"),
|
||||
("Embed footage files", "嵌入素材文件"),
|
||||
("Embed up to (MB)", "嵌入上限 (MB)"),
|
||||
("Orient Along Path", "沿路径定向"),
|
||||
("Orient Towards Camera", "朝向摄像机"),
|
||||
("Orient Towards Point of Interest", "朝向目标点"),
|
||||
("Single Composition", "单个合成"),
|
||||
("Multiple Compositions", "多个合成"),
|
||||
("Dissolve Front Layer", "溶解前层"),
|
||||
("Cross Dissolve Front and Back Layers", "交叉溶解前后层"),
|
||||
("Interpret Straight - Unmatted", "解释为直接 (未遮罩)"),
|
||||
("Interpret Premultiplied - Matted With Color", "解释为预乘 (以颜色遮罩)"),
|
||||
("Upper Field First", "上场优先"),
|
||||
("Lower Field First", "下场优先"),
|
||||
("Rec. 2020", "Rec. 2020"),
|
||||
("Use Source File Timecode", "使用源文件时间码"),
|
||||
("Feet + Frames (35mm)", "英尺 + 帧 (35mm)"),
|
||||
("Feet + Frames (16mm)", "英尺 + 帧 (16mm)"),
|
||||
("Current Frame", "当前帧"),
|
||||
("Work Area", "工作区域"),
|
||||
("Create Markers", "创建标记"),
|
||||
("Split Layers", "拆分图层"),
|
||||
("Split and Precompose", "拆分并预合成"),
|
||||
("All layers", "所有图层"),
|
||||
("None (leave them out)", "无 (不含)"),
|
||||
("Nested sequences", "嵌套序列"),
|
||||
("Solid…", "纯色…"),
|
||||
("Light…", "灯光…"),
|
||||
("Camera…", "摄像机…"),
|
||||
("Null Object", "空对象"),
|
||||
("Shape Layer", "形状图层"),
|
||||
("Adjustment Layer", "调整图层"),
|
||||
("Layer Settings…", "图层设置…"),
|
||||
("Create Shapes from Vector Layer", "从矢量图层创建形状"),
|
||||
("Create Shapes from Text", "从文本创建形状"),
|
||||
("Create Masks from Text", "从文本创建遮罩"),
|
||||
("New Mask", "新建遮罩"),
|
||||
("Center In View", "在视图中居中"),
|
||||
("Fit to Comp", "适应合成"),
|
||||
("Flip Horizontal", "水平翻转"),
|
||||
("Flip Vertical", "垂直翻转"),
|
||||
("Enable Time Remapping", "启用时间重映射"),
|
||||
("Time-Reverse Layer", "时间反向图层"),
|
||||
("Freeze Frame", "冻结帧"),
|
||||
("Freeze On Last Frame", "在最后一帧冻结"),
|
||||
("Add Marker", "添加标记"),
|
||||
("Bring Layer to Front", "图层置顶"),
|
||||
("Bring Layer Forward", "图层上移一层"),
|
||||
("Send Layer Backward", "图层下移一层"),
|
||||
("Send Layer to Back", "图层置底"),
|
||||
("Pre-compose…", "预合成…"),
|
||||
("Split Layer", "拆分图层"),
|
||||
("Layer Style Options...", "图层样式选项..."),
|
||||
("Convert to Editable Styles", "转换为可编辑样式"),
|
||||
("Show All", "全部显示"),
|
||||
("Remove All", "全部移除"),
|
||||
("Separate Dimensions", "分离维度"),
|
||||
("Add Property to Essential Graphics", "将属性添加到基本图形"),
|
||||
("Continuous Bezier", "连续贝塞尔"),
|
||||
("Auto Bezier", "自动贝塞尔"),
|
||||
("Lock To Time", "锁定到时间"),
|
||||
("Rove Across Time", "跨时间漫游"),
|
||||
("Anchor Point", "锚点"),
|
||||
("All Transform Properties", "所有变换属性"),
|
||||
("Line Anchor", "行锚点"),
|
||||
("Line Spacing", "行距"),
|
||||
("Character Offset", "字符偏移"),
|
||||
("Character Value", "字符值"),
|
||||
("Fill Color: RGB", "填充颜色: RGB"),
|
||||
("Fill Color: Hue", "填充颜色: 色相"),
|
||||
("Fill Color: Saturation", "填充颜色: 饱和度"),
|
||||
("Fill Color: Brightness", "填充颜色: 亮度"),
|
||||
("Fill Color: Opacity", "填充颜色: 不透明度"),
|
||||
("Stroke Color: RGB", "描边颜色: RGB"),
|
||||
("Stroke Color: Hue", "描边颜色: 色相"),
|
||||
("Stroke Color: Saturation", "描边颜色: 饱和度"),
|
||||
("Stroke Color: Brightness", "描边颜色: 亮度"),
|
||||
("Stroke Color: Opacity", "描边颜色: 不透明度"),
|
||||
("Stroke Width", "描边宽度"),
|
||||
("Front: Color", "前面: 颜色"),
|
||||
("Bevel: Color", "斜面: 颜色"),
|
||||
("Side: Color", "侧面: 颜色"),
|
||||
("Back: Color", "背面: 颜色"),
|
||||
("Effect Controls", "效果控件"),
|
||||
("Effects & Presets", "效果和预设"),
|
||||
("Motion Sketch", "运动草图"),
|
||||
("Render Queue", "渲染队列"),
|
||||
("Mask Interpolation", "遮罩插值"),
|
||||
("Script Console", "脚本控制台"),
|
||||
("Essential Graphics", "基本图形"),
|
||||
("ScriptUI Panel", "ScriptUI 面板"),
|
||||
("Lumetri Scopes", "Lumetri 示波器"),
|
||||
("Media Browser", "媒体浏览器"),
|
||||
("Content-Aware Fill", "内容识别填充"),
|
||||
("Create Nulls From Paths", "从路径创建空对象"),
|
||||
("VR Comp Editor", "VR 合成编辑器"),
|
||||
("Media Duration", "媒体持续时间"),
|
||||
("Frame Rate", "帧速率"),
|
||||
("File Path", "文件路径"),
|
||||
("Interpret Footage", "解释素材"),
|
||||
("Create a new Folder", "新建文件夹"),
|
||||
("Create a new Composition", "新建合成"),
|
||||
("First Frame", "第一帧"),
|
||||
("Previous Frame", "上一帧"),
|
||||
("Next Frame", "下一帧"),
|
||||
("Last Frame", "最后一帧"),
|
||||
("Name (A–Z)", "名称 (A–Z)"),
|
||||
("Merged PRs", "已合并 PR"),
|
||||
("Lines added", "添加的行数"),
|
||||
("Lines deleted", "删除的行数"),
|
||||
("Line delta", "行数差异"),
|
||||
("Binary assets added", "添加的二进制资源"),
|
||||
("Binary assets removed", "删除的二进制资源"),
|
||||
("First commit", "首次提交"),
|
||||
("Last commit", "最近提交"),
|
||||
("Display name", "显示名称"),
|
||||
("Real name", "真实姓名"),
|
||||
("ArtCraft website", "ArtCraft 网站"),
|
||||
("Source code on GitHub", "GitHub 上的源代码"),
|
||||
("3D Renderer", "3D 渲染器"),
|
||||
("Preset Name", "预设名称"),
|
||||
("Save Preset…", "保存预设…"),
|
||||
("Delete Preset", "删除预设"),
|
||||
("Lock Aspect Ratio", "锁定长宽比"),
|
||||
("Frame Rate presets", "帧速率预设"),
|
||||
("Background Color", "背景颜色"),
|
||||
("Shutter Angle", "快门角度"),
|
||||
("Shutter Phase", "快门相位"),
|
||||
("Samples Per Frame", "每帧采样数"),
|
||||
("Adaptive Sample Limit", "自适应采样上限"),
|
||||
("X and Y", "X 和 Y"),
|
||||
("X only", "仅 X"),
|
||||
("Y only", "仅 Y"),
|
||||
("Track Camera", "跟踪摄像机"),
|
||||
("Warp Stabilizer", "变形稳定器"),
|
||||
("Track Motion", "跟踪运动"),
|
||||
("Stabilize Motion", "稳定运动"),
|
||||
("Motion Source:", "运动源:"),
|
||||
("Current Track:", "当前跟踪:"),
|
||||
("Track Type:", "跟踪类型:"),
|
||||
("Motion Target:", "运动目标:"),
|
||||
("Track Mask:", "跟踪遮罩:"),
|
||||
("Analyze forward", "向前分析"),
|
||||
("Analyze backward", "向后分析"),
|
||||
("Continue Tracking", "继续跟踪"),
|
||||
("Stop Tracking", "停止跟踪"),
|
||||
("Adapt Feature", "自适应特征"),
|
||||
("Extrapolate Motion", "外推运动"),
|
||||
("Attach Point", "附加点"),
|
||||
("Track Name", "跟踪名称"),
|
||||
("Motion Tracker Options", "运动跟踪器选项"),
|
||||
("Motion Tracker Apply Options", "运动跟踪器应用选项"),
|
||||
("Edit Value Graph", "编辑值图表"),
|
||||
("Edit Speed Graph", "编辑速度图表"),
|
||||
("Show Reference Graph", "显示参考图表"),
|
||||
("Auto-Select Graph Type (speed graph for spatial properties, else value graph)", "自动选择图表类型 (空间属性用速度图表,否则用值图表)"),
|
||||
("Auto-zoom graph height", "自动缩放图表高度"),
|
||||
("Fit all graphs to view", "使所有图表适合视图"),
|
||||
("Fit selection to view", "使所选内容适合视图"),
|
||||
("Snap (key drags snap to the current time and other keys)", "吸附 (关键帧拖动时吸附到当前时间和其他关键帧)"),
|
||||
("Show Transform Box when multiple keys are selected", "选择多个关键帧时显示变换框"),
|
||||
("Separate Dimensions (Position)", "分离维度 (位置)"),
|
||||
("Convert selected keyframes to Hold", "将所选关键帧转换为定格"),
|
||||
("Convert selected keyframes to Linear", "将所选关键帧转换为线性"),
|
||||
("Convert selected keyframes to Auto Bezier", "将所选关键帧转换为自动贝塞尔"),
|
||||
("Easy Ease (F9)", "缓动 (F9)"),
|
||||
("Easy Ease In (Shift+F9)", "缓入 (Shift+F9)"),
|
||||
("Easy Ease Out (Ctrl+Shift+F9)", "缓出 (Ctrl+Shift+F9)"),
|
||||
("Spatial Path", "空间路径"),
|
||||
("Temporal Path", "时间路径"),
|
||||
("All the Same", "全部相同"),
|
||||
("All Independently", "全部独立"),
|
||||
("Noise Type:", "噪波类型:"),
|
||||
("Apply To:", "应用到:"),
|
||||
("Temporal Graph", "时间图表"),
|
||||
("Keyframe Rate:", "关键帧速率:"),
|
||||
("Capture speed at:", "速度捕获位置:"),
|
||||
("Start Capture", "开始捕获"),
|
||||
("Cancel Capture", "取消捕获"),
|
||||
("Small Caps", "小型大写字母"),
|
||||
("All Small Caps", "全部小型大写字母"),
|
||||
("Superscript / Superior", "上标"),
|
||||
("Subscript / Inferior", "下标"),
|
||||
("Standard Ligatures", "标准连字"),
|
||||
("Discretionary Ligatures", "可选连字"),
|
||||
("Contextual Alternates", "上下文替换"),
|
||||
("Stylistic Alternates", "样式替换"),
|
||||
("Titling Alternates", "标题替换"),
|
||||
("Default Figure Style", "默认数字样式"),
|
||||
("Tabular Lining", "等宽线条"),
|
||||
("Proportional Oldstyle", "比例旧式"),
|
||||
("Proportional Lining", "比例线条"),
|
||||
("Tabular Oldstyle", "等宽旧式"),
|
||||
("Fill Over Stroke", "填充在描边之上"),
|
||||
("Stroke Over Fill", "描边在填充之上"),
|
||||
("Stroke order", "描边顺序"),
|
||||
("Single-line Composer", "单行书写器"),
|
||||
("Every-line Composer", "逐行书写器"),
|
||||
("Text direction", "文本方向"),
|
||||
("Recently Used", "最近使用"),
|
||||
("User Presets", "用户预设"),
|
||||
("Remove from Favorites", "从收藏夹移除"),
|
||||
("Show Animation Presets", "显示动画预设"),
|
||||
(" Refresh List", " 刷新列表"),
|
||||
(" Clear Recently Used", " 清除最近使用"),
|
||||
("Show 32 bpc Effects Only", "仅显示 32 bpc 效果"),
|
||||
("Show GPU Accelerated Effects Only", "仅显示 GPU 加速效果"),
|
||||
("Show Effects for All Color Depths", "显示所有颜色深度的效果"),
|
||||
("* Animation Presets", "* 动画预设"),
|
||||
("Select a layer to apply to", "请选择要应用到的图层"),
|
||||
("Search effects and presets", "搜索效果和预设"),
|
||||
("Alpha Expansion:", "Alpha 扩展:"),
|
||||
("Fill Method:", "填充方式:"),
|
||||
("Edge Blend", "边缘混合"),
|
||||
("Entire Duration", "整个持续时间"),
|
||||
("Reference Frame:", "参考帧:"),
|
||||
("Use Current Time", "使用当前时间"),
|
||||
("Generate Fill Layer", "生成填充图层"),
|
||||
("Lighting Correction:", "光照校正:"),
|
||||
("Create Text and Camera", "创建文本和摄像机"),
|
||||
("Create Solid and Camera", "创建纯色和摄像机"),
|
||||
("Create Null and Camera", "创建空对象和摄像机"),
|
||||
("Create Shadow Catcher, Camera and Light", "创建阴影捕捉器、摄像机和灯光"),
|
||||
("Unable to solve camera", "无法求解摄像机"),
|
||||
("Waiting to solve", "等待求解"),
|
||||
("Create Camera", "创建摄像机"),
|
||||
("track point", "跟踪点"),
|
||||
("Ruler zero point", "标尺零点"),
|
||||
("Vertical ruler", "垂直标尺"),
|
||||
("Horizontal ruler", "水平标尺"),
|
||||
("Viewer controls", "查看器控件"),
|
||||
("Resolution/Down Sample Factor", "分辨率/降采样系数"),
|
||||
("Adjust Exposure", "调整曝光"),
|
||||
("Snapshot taken", "已拍摄快照"),
|
||||
("Fast Previews", "快速预览"),
|
||||
("3D View", "3D 视图"),
|
||||
("Current time", "当前时间"),
|
||||
("Layer Transform", "图层变换"),
|
||||
("Reset Transform", "重置变换"),
|
||||
("Text Animation", "文本动画"),
|
||||
("Text Animation Presets", "文本动画预设"),
|
||||
("EffectCraft on getartcraft.com", "getartcraft.com 上的 EffectCraft"),
|
||||
("Small Screen", "小屏幕"),
|
||||
("Tool Creates Shape", "工具创建形状"),
|
||||
("Tool Creates Mask", "工具创建遮罩"),
|
||||
("Blend Mode", "混合模式"),
|
||||
("Show mesh", "显示网格"),
|
||||
("Record Options...", "记录选项..."),
|
||||
];
|
||||
|
||||
const TRADITIONAL_CHINESE: &[(&str, &str)] = &[
|
||||
@@ -2300,6 +2903,306 @@ const TRADITIONAL_CHINESE: &[(&str, &str)] = &[
|
||||
("Total Offset", "總偏移"),
|
||||
("Per Layer", "每個圖層"),
|
||||
("Track", "追蹤"),
|
||||
("Force alphabetical order", "強制依字母順序"),
|
||||
("Frame rate (fps)", "幀率 (fps)"),
|
||||
("Import Kind", "匯入類型"),
|
||||
("Delay (s)", "延遲 (秒)"),
|
||||
("Amount (%)", "數量 (%)"),
|
||||
("Cascade (farther pins trail longer)", "階層 (越遠的圖釘延遲越長)"),
|
||||
("Speed (%)", "速度 (%)"),
|
||||
("Use Draft Deformation", "使用草稿變形"),
|
||||
("Show Mesh", "顯示網格"),
|
||||
("Scale X (%)", "X 縮放 (%)"),
|
||||
("Scale Y (%)", "Y 縮放 (%)"),
|
||||
("Rotation (degrees)", "旋轉 (度)"),
|
||||
("Move X", "移動 X"),
|
||||
("Move Y", "移動 Y"),
|
||||
("Position (pixels)", "位置 (像素)"),
|
||||
("Position (percent of the composition)", "位置 (合成百分比)"),
|
||||
("Use Dimensions From", "尺寸來源"),
|
||||
("Still Duration (seconds)", "靜態影像持續時間 (秒)"),
|
||||
("Add to Render Queue", "新增至轉譯佇列"),
|
||||
("Sequence Layers", "序列圖層"),
|
||||
("Duration (seconds)", "持續時間 (秒)"),
|
||||
("Matte color (premultiplied)", "遮罩顏色 (預乘)"),
|
||||
("Invert Alpha", "反轉 Alpha"),
|
||||
("Assume this frame rate", "以此幀率為準"),
|
||||
("Separate Fields", "分離場"),
|
||||
("Pixel Aspect Ratio", "像素長寬比"),
|
||||
("Loop (times)", "循環 (次)"),
|
||||
("Assign Profile", "指定設定檔"),
|
||||
("Preserve RGB", "保留 RGB"),
|
||||
("Interpret As Linear Light", "解譯為線性光"),
|
||||
("Start Timecode", "開始時間碼"),
|
||||
("Override Start", "覆寫開始"),
|
||||
("Time display style", "時間顯示樣式"),
|
||||
("Color engine", "色彩引擎"),
|
||||
("Working space", "工作空間"),
|
||||
("Working gamma", "工作 Gamma"),
|
||||
("Linearize working space", "線性化工作空間"),
|
||||
("Blend colors using 1.0 gamma", "使用 1.0 Gamma 混合顏色"),
|
||||
("Output color space", "輸出色彩空間"),
|
||||
("Video rendering and effects", "視訊轉譯與效果"),
|
||||
("Time Span", "時間範圍"),
|
||||
("Blur (pixels before auto-trace)", "模糊 (自動描摹前的像素)"),
|
||||
("Tolerance (pixels)", "容差 (像素)"),
|
||||
("Threshold (%)", "閾值 (%)"),
|
||||
("Minimum Area (pixels)", "最小區域 (像素)"),
|
||||
("Corner Roundness (%)", "角圓度 (%)"),
|
||||
("Apply To New Layer", "套用至新圖層"),
|
||||
("Sensitivity threshold (0–1, lower finds more)", "靈敏度閾值 (0–1,越低找到的越多)"),
|
||||
("Time field (empty: automatic)", "時間欄位 (空白: 自動)"),
|
||||
("Video start (ISO date-time, hh:mm:ss, timecode; empty: file date)", "視訊開始 (ISO 日期時間、hh:mm:ss、時間碼;空白: 檔案日期)"),
|
||||
("First sample at (comp seconds)", "首個取樣位置 (合成秒)"),
|
||||
("Frame rate", "幀率"),
|
||||
("Color (#rrggbb)", "顏色 (#rrggbb)"),
|
||||
("Embed footage files", "內嵌素材檔案"),
|
||||
("Embed up to (MB)", "內嵌上限 (MB)"),
|
||||
("Orient Along Path", "沿路徑定向"),
|
||||
("Orient Towards Camera", "朝向攝影機"),
|
||||
("Orient Towards Point of Interest", "朝向目標點"),
|
||||
("Single Composition", "單一合成"),
|
||||
("Multiple Compositions", "多個合成"),
|
||||
("Dissolve Front Layer", "溶解前層"),
|
||||
("Cross Dissolve Front and Back Layers", "交叉溶解前後層"),
|
||||
("Interpret Straight - Unmatted", "解譯為直接 (未遮罩)"),
|
||||
("Interpret Premultiplied - Matted With Color", "解譯為預乘 (以顏色遮罩)"),
|
||||
("Upper Field First", "上場優先"),
|
||||
("Lower Field First", "下場優先"),
|
||||
("Rec. 2020", "Rec. 2020"),
|
||||
("Use Source File Timecode", "使用來源檔案時間碼"),
|
||||
("Feet + Frames (35mm)", "英尺 + 幀 (35mm)"),
|
||||
("Feet + Frames (16mm)", "英尺 + 幀 (16mm)"),
|
||||
("Current Frame", "目前幀"),
|
||||
("Work Area", "工作區域"),
|
||||
("Create Markers", "建立標記"),
|
||||
("Split Layers", "分割圖層"),
|
||||
("Split and Precompose", "分割並預合成"),
|
||||
("All layers", "所有圖層"),
|
||||
("None (leave them out)", "無 (不含)"),
|
||||
("Nested sequences", "巢狀序列"),
|
||||
("Solid…", "純色…"),
|
||||
("Light…", "燈光…"),
|
||||
("Camera…", "攝影機…"),
|
||||
("Null Object", "空物件"),
|
||||
("Shape Layer", "形狀圖層"),
|
||||
("Adjustment Layer", "調整圖層"),
|
||||
("Layer Settings…", "圖層設定…"),
|
||||
("Create Shapes from Vector Layer", "從向量圖層建立形狀"),
|
||||
("Create Shapes from Text", "從文字建立形狀"),
|
||||
("Create Masks from Text", "從文字建立遮罩"),
|
||||
("New Mask", "新增遮罩"),
|
||||
("Center In View", "在視圖中置中"),
|
||||
("Fit to Comp", "符合合成"),
|
||||
("Flip Horizontal", "水平翻轉"),
|
||||
("Flip Vertical", "垂直翻轉"),
|
||||
("Enable Time Remapping", "啟用時間重對應"),
|
||||
("Time-Reverse Layer", "時間反轉圖層"),
|
||||
("Freeze Frame", "凍結幀"),
|
||||
("Freeze On Last Frame", "在最後一幀凍結"),
|
||||
("Add Marker", "新增標記"),
|
||||
("Bring Layer to Front", "圖層移至最上層"),
|
||||
("Bring Layer Forward", "圖層上移一層"),
|
||||
("Send Layer Backward", "圖層下移一層"),
|
||||
("Send Layer to Back", "圖層移至最下層"),
|
||||
("Pre-compose…", "預合成…"),
|
||||
("Split Layer", "分割圖層"),
|
||||
("Layer Style Options...", "圖層樣式選項..."),
|
||||
("Convert to Editable Styles", "轉換為可編輯樣式"),
|
||||
("Show All", "全部顯示"),
|
||||
("Remove All", "全部移除"),
|
||||
("Separate Dimensions", "分離維度"),
|
||||
("Add Property to Essential Graphics", "將屬性新增至基本圖形"),
|
||||
("Continuous Bezier", "連續貝茲"),
|
||||
("Auto Bezier", "自動貝茲"),
|
||||
("Lock To Time", "鎖定至時間"),
|
||||
("Rove Across Time", "跨時間漫遊"),
|
||||
("Anchor Point", "錨點"),
|
||||
("All Transform Properties", "所有變換屬性"),
|
||||
("Line Anchor", "行錨點"),
|
||||
("Line Spacing", "行距"),
|
||||
("Character Offset", "字元偏移"),
|
||||
("Character Value", "字元值"),
|
||||
("Fill Color: RGB", "填色: RGB"),
|
||||
("Fill Color: Hue", "填色: 色相"),
|
||||
("Fill Color: Saturation", "填色: 飽和度"),
|
||||
("Fill Color: Brightness", "填色: 亮度"),
|
||||
("Fill Color: Opacity", "填色: 不透明度"),
|
||||
("Stroke Color: RGB", "筆畫顏色: RGB"),
|
||||
("Stroke Color: Hue", "筆畫顏色: 色相"),
|
||||
("Stroke Color: Saturation", "筆畫顏色: 飽和度"),
|
||||
("Stroke Color: Brightness", "筆畫顏色: 亮度"),
|
||||
("Stroke Color: Opacity", "筆畫顏色: 不透明度"),
|
||||
("Stroke Width", "筆畫寬度"),
|
||||
("Front: Color", "前面: 顏色"),
|
||||
("Bevel: Color", "斜角: 顏色"),
|
||||
("Side: Color", "側面: 顏色"),
|
||||
("Back: Color", "背面: 顏色"),
|
||||
("Effect Controls", "效果控制項"),
|
||||
("Effects & Presets", "效果與預設集"),
|
||||
("Motion Sketch", "運動草圖"),
|
||||
("Render Queue", "轉譯佇列"),
|
||||
("Mask Interpolation", "遮罩插補"),
|
||||
("Script Console", "指令碼主控台"),
|
||||
("Essential Graphics", "基本圖形"),
|
||||
("ScriptUI Panel", "ScriptUI 面板"),
|
||||
("Lumetri Scopes", "Lumetri 示波器"),
|
||||
("Media Browser", "媒體瀏覽器"),
|
||||
("Content-Aware Fill", "內容感知填色"),
|
||||
("Create Nulls From Paths", "從路徑建立空物件"),
|
||||
("VR Comp Editor", "VR 合成編輯器"),
|
||||
("Media Duration", "媒體持續時間"),
|
||||
("Frame Rate", "幀率"),
|
||||
("File Path", "檔案路徑"),
|
||||
("Interpret Footage", "解譯素材"),
|
||||
("Create a new Folder", "新增資料夾"),
|
||||
("Create a new Composition", "新增合成"),
|
||||
("First Frame", "第一幀"),
|
||||
("Previous Frame", "上一幀"),
|
||||
("Next Frame", "下一幀"),
|
||||
("Last Frame", "最後一幀"),
|
||||
("Name (A–Z)", "名稱 (A–Z)"),
|
||||
("Merged PRs", "已合併 PR"),
|
||||
("Lines added", "新增的行數"),
|
||||
("Lines deleted", "刪除的行數"),
|
||||
("Line delta", "行數差異"),
|
||||
("Binary assets added", "新增的二進位資源"),
|
||||
("Binary assets removed", "刪除的二進位資源"),
|
||||
("First commit", "首次提交"),
|
||||
("Last commit", "最近提交"),
|
||||
("Display name", "顯示名稱"),
|
||||
("Real name", "真實姓名"),
|
||||
("ArtCraft website", "ArtCraft 網站"),
|
||||
("Source code on GitHub", "GitHub 上的原始碼"),
|
||||
("3D Renderer", "3D 轉譯器"),
|
||||
("Preset Name", "預設集名稱"),
|
||||
("Save Preset…", "儲存預設集…"),
|
||||
("Delete Preset", "刪除預設集"),
|
||||
("Lock Aspect Ratio", "鎖定長寬比"),
|
||||
("Frame Rate presets", "幀率預設集"),
|
||||
("Background Color", "背景顏色"),
|
||||
("Shutter Angle", "快門角度"),
|
||||
("Shutter Phase", "快門相位"),
|
||||
("Samples Per Frame", "每幀取樣數"),
|
||||
("Adaptive Sample Limit", "自適應取樣上限"),
|
||||
("X and Y", "X 和 Y"),
|
||||
("X only", "僅 X"),
|
||||
("Y only", "僅 Y"),
|
||||
("Track Camera", "追蹤攝影機"),
|
||||
("Warp Stabilizer", "彎曲穩定器"),
|
||||
("Track Motion", "追蹤運動"),
|
||||
("Stabilize Motion", "穩定運動"),
|
||||
("Motion Source:", "運動來源:"),
|
||||
("Current Track:", "目前追蹤:"),
|
||||
("Track Type:", "追蹤類型:"),
|
||||
("Motion Target:", "運動目標:"),
|
||||
("Track Mask:", "追蹤遮罩:"),
|
||||
("Analyze forward", "向前分析"),
|
||||
("Analyze backward", "向後分析"),
|
||||
("Continue Tracking", "繼續追蹤"),
|
||||
("Stop Tracking", "停止追蹤"),
|
||||
("Adapt Feature", "自適應特徵"),
|
||||
("Extrapolate Motion", "外推運動"),
|
||||
("Attach Point", "附加點"),
|
||||
("Track Name", "追蹤名稱"),
|
||||
("Motion Tracker Options", "運動追蹤器選項"),
|
||||
("Motion Tracker Apply Options", "運動追蹤器套用選項"),
|
||||
("Edit Value Graph", "編輯數值圖表"),
|
||||
("Edit Speed Graph", "編輯速度圖表"),
|
||||
("Show Reference Graph", "顯示參考圖表"),
|
||||
("Auto-Select Graph Type (speed graph for spatial properties, else value graph)", "自動選擇圖表類型 (空間屬性用速度圖表,否則用數值圖表)"),
|
||||
("Auto-zoom graph height", "自動縮放圖表高度"),
|
||||
("Fit all graphs to view", "使所有圖表符合視圖"),
|
||||
("Fit selection to view", "使所選內容符合視圖"),
|
||||
("Snap (key drags snap to the current time and other keys)", "貼齊 (關鍵影格拖曳時貼齊目前時間和其他關鍵影格)"),
|
||||
("Show Transform Box when multiple keys are selected", "選擇多個關鍵影格時顯示變換框"),
|
||||
("Separate Dimensions (Position)", "分離維度 (位置)"),
|
||||
("Convert selected keyframes to Hold", "將所選關鍵影格轉換為定格"),
|
||||
("Convert selected keyframes to Linear", "將所選關鍵影格轉換為線性"),
|
||||
("Convert selected keyframes to Auto Bezier", "將所選關鍵影格轉換為自動貝茲"),
|
||||
("Easy Ease (F9)", "緩和 (F9)"),
|
||||
("Easy Ease In (Shift+F9)", "緩入 (Shift+F9)"),
|
||||
("Easy Ease Out (Ctrl+Shift+F9)", "緩出 (Ctrl+Shift+F9)"),
|
||||
("Spatial Path", "空間路徑"),
|
||||
("Temporal Path", "時間路徑"),
|
||||
("All the Same", "全部相同"),
|
||||
("All Independently", "全部獨立"),
|
||||
("Noise Type:", "雜訊類型:"),
|
||||
("Apply To:", "套用至:"),
|
||||
("Temporal Graph", "時間圖表"),
|
||||
("Keyframe Rate:", "關鍵影格率:"),
|
||||
("Capture speed at:", "速度擷取位置:"),
|
||||
("Start Capture", "開始擷取"),
|
||||
("Cancel Capture", "取消擷取"),
|
||||
("Small Caps", "小型大寫字母"),
|
||||
("All Small Caps", "全部小型大寫字母"),
|
||||
("Superscript / Superior", "上標"),
|
||||
("Subscript / Inferior", "下標"),
|
||||
("Standard Ligatures", "標準連字"),
|
||||
("Discretionary Ligatures", "選用連字"),
|
||||
("Contextual Alternates", "上下文替代"),
|
||||
("Stylistic Alternates", "樣式替代"),
|
||||
("Titling Alternates", "標題替代"),
|
||||
("Default Figure Style", "預設數字樣式"),
|
||||
("Tabular Lining", "等寬襯線數字"),
|
||||
("Proportional Oldstyle", "比例舊式"),
|
||||
("Proportional Lining", "比例襯線數字"),
|
||||
("Tabular Oldstyle", "等寬舊式"),
|
||||
("Fill Over Stroke", "填色在筆畫之上"),
|
||||
("Stroke Over Fill", "筆畫在填色之上"),
|
||||
("Stroke order", "筆畫順序"),
|
||||
("Single-line Composer", "單行排版器"),
|
||||
("Every-line Composer", "逐行排版器"),
|
||||
("Text direction", "文字方向"),
|
||||
("Recently Used", "最近使用"),
|
||||
("User Presets", "使用者預設集"),
|
||||
("Remove from Favorites", "從我的最愛移除"),
|
||||
("Show Animation Presets", "顯示動畫預設集"),
|
||||
(" Refresh List", " 重新整理清單"),
|
||||
(" Clear Recently Used", " 清除最近使用"),
|
||||
("Show 32 bpc Effects Only", "僅顯示 32 bpc 效果"),
|
||||
("Show GPU Accelerated Effects Only", "僅顯示 GPU 加速效果"),
|
||||
("Show Effects for All Color Depths", "顯示所有色彩深度的效果"),
|
||||
("* Animation Presets", "* 動畫預設集"),
|
||||
("Select a layer to apply to", "請選擇要套用的圖層"),
|
||||
("Search effects and presets", "搜尋效果與預設集"),
|
||||
("Alpha Expansion:", "Alpha 擴張:"),
|
||||
("Fill Method:", "填色方式:"),
|
||||
("Edge Blend", "邊緣混合"),
|
||||
("Entire Duration", "整個持續時間"),
|
||||
("Reference Frame:", "參考幀:"),
|
||||
("Use Current Time", "使用目前時間"),
|
||||
("Generate Fill Layer", "產生填色圖層"),
|
||||
("Lighting Correction:", "光照校正:"),
|
||||
("Create Text and Camera", "建立文字和攝影機"),
|
||||
("Create Solid and Camera", "建立純色和攝影機"),
|
||||
("Create Null and Camera", "建立空物件和攝影機"),
|
||||
("Create Shadow Catcher, Camera and Light", "建立陰影擷取器、攝影機和燈光"),
|
||||
("Unable to solve camera", "無法求解攝影機"),
|
||||
("Waiting to solve", "等待求解"),
|
||||
("Create Camera", "建立攝影機"),
|
||||
("track point", "追蹤點"),
|
||||
("Ruler zero point", "尺規零點"),
|
||||
("Vertical ruler", "垂直尺規"),
|
||||
("Horizontal ruler", "水平尺規"),
|
||||
("Viewer controls", "檢視器控制項"),
|
||||
("Resolution/Down Sample Factor", "解析度/降取樣係數"),
|
||||
("Adjust Exposure", "調整曝光"),
|
||||
("Snapshot taken", "已拍攝快照"),
|
||||
("Fast Previews", "快速預覽"),
|
||||
("3D View", "3D 視圖"),
|
||||
("Current time", "目前時間"),
|
||||
("Layer Transform", "圖層變換"),
|
||||
("Reset Transform", "重設變換"),
|
||||
("Text Animation", "文字動畫"),
|
||||
("Text Animation Presets", "文字動畫預設集"),
|
||||
("EffectCraft on getartcraft.com", "getartcraft.com 上的 EffectCraft"),
|
||||
("Small Screen", "小螢幕"),
|
||||
("Tool Creates Shape", "工具建立形狀"),
|
||||
("Tool Creates Mask", "工具建立遮罩"),
|
||||
("Blend Mode", "混合模式"),
|
||||
("Show mesh", "顯示網格"),
|
||||
("Record Options...", "記錄選項..."),
|
||||
];
|
||||
|
||||
/// Ukrainian (uk): original translations of the same interface rows as the Chinese catalogs.
|
||||
@@ -4447,6 +5350,7 @@ mod tests {
|
||||
const CONVERTED: &[(&str, &str)] = &[
|
||||
("color_picker.rs", include_str!("../color_picker.rs")),
|
||||
("credits.rs", include_str!("../credits.rs")),
|
||||
("dock.rs", include_str!("../dock.rs")),
|
||||
("header.rs", include_str!("../header.rs")),
|
||||
("menus.rs", include_str!("../menus.rs")),
|
||||
("widgets.rs", include_str!("../widgets.rs")),
|
||||
@@ -4504,6 +5408,8 @@ mod tests {
|
||||
("engine settings pages", include_str!("../../../engine/src/prefs.rs")),
|
||||
("engine viewer channels", include_str!("../../../engine/src/viewer.rs")),
|
||||
("engine viewer commands", include_str!("../../../engine/src/commands/viewer_cmds.rs")),
|
||||
// The text animator menu's labels come from the engine as data, like the settings pages.
|
||||
("engine text animator kinds", include_str!("../../../project/src/build.rs")),
|
||||
];
|
||||
|
||||
/// Call shapes that hand a string literal straight to the user.
|
||||
@@ -4658,6 +5564,13 @@ mod tests {
|
||||
fn japanese_rows_translate_the_panels() {
|
||||
set_current("ja");
|
||||
assert_eq!(tr("Composition Name:"), "コンポジション名:");
|
||||
// The panel/dialog second step: panel tabs, form labels, context menus and messages.
|
||||
assert_eq!(tr("Effect Controls"), "エフェクトコントロール");
|
||||
assert_eq!(tr("Media Duration"), "メディアの長さ");
|
||||
assert_eq!(tr("Bring Layer to Front"), "レイヤーを最前面へ");
|
||||
assert_eq!(tr("All Transform Properties"), "すべてのトランスフォームプロパティ");
|
||||
assert_eq!(tr("Fill Color: RGB"), "塗りの色: RGB");
|
||||
assert_eq!(tr("Lines added"), "追加行数");
|
||||
assert_eq!(tr("my layer.mp4"), "my layer.mp4");
|
||||
assert_eq!(tr_args("Proxy Use: {}", &[&"Best"]), "プロキシの使用:Best");
|
||||
assert_eq!(tr_args("Step {} of {}: {}", &[&1, &3, &"Colour"]), "ステップ1/3:Colour");
|
||||
|
||||
@@ -259,7 +259,7 @@ pub fn show(
|
||||
ui.add_space(8.0);
|
||||
ui.horizontal(|ui| {
|
||||
for (tab, label, key) in [(Tab::Basic, "Basic", "basic"), (Tab::Advanced, "Advanced", "advanced"), (Tab::Renderer, "3D Renderer", "renderer")] {
|
||||
let r = ui.selectable_label(d.tab == tab, label);
|
||||
let r = ui.selectable_label(d.tab == tab, crate::i18n::tr(label));
|
||||
auto.add(&format!("dialog.comp.tab.{key}"), r.rect, label);
|
||||
if r.clicked() {
|
||||
d.tab = tab;
|
||||
|
||||
@@ -245,6 +245,7 @@ fn text_button(
|
||||
tip: &str,
|
||||
) -> bool {
|
||||
let t = app.tokens;
|
||||
let (label, tip) = (crate::i18n::tr(label), crate::i18n::tr(tip));
|
||||
let w = p.layout_no_wrap(label.to_string(), Tokens::ui(11.0), t.text).size().x + 14.0;
|
||||
// Once one button overflows, the rest follow it into the menu (they keep their order).
|
||||
if !bar.hidden.is_empty() || bar.x + w > bar.limit {
|
||||
|
||||
@@ -42,7 +42,8 @@ pub fn preview(app: &mut EffectcraftApp, ui: &mut egui::Ui, rect: Rect) {
|
||||
for (icon, cmd, tip) in buttons {
|
||||
let r = Rect::from_min_size(pos2(x, y), vec2(bw, 28.0));
|
||||
let icon = if cmd == "playback.toggle" && app.playback.playing { Icon::Pause } else { icon };
|
||||
if widgets::icon_button(ui, r, icon, cmd == "playback.toggle" && app.playback.playing, &t, egui::Id::new(("pv", cmd))).on_hover_text(tip).clicked() {
|
||||
if widgets::icon_button(ui, r, icon, cmd == "playback.toggle" && app.playback.playing, &t, egui::Id::new(("pv", cmd))).on_hover_text(tr(tip)).clicked()
|
||||
{
|
||||
// The play button plays with the options of the shortcut shown below.
|
||||
let params = if cmd == "playback.toggle" { json!({"shortcut": current.id()}) } else { json!({}) };
|
||||
let _ = crate::menus::invoke(app, &ctx, cmd, params);
|
||||
|
||||
@@ -475,7 +475,13 @@ pub fn show(app: &mut EffectcraftApp, ui: &mut egui::Ui, rect: Rect) {
|
||||
continue;
|
||||
}
|
||||
let resp = ui.interact(hr.intersect(hdr), egui::Id::new(("proj-sort", *key)), Sense::click());
|
||||
hp.with_clip_rect(hr).text(pos2(*x, hdr.center().y), Align2::LEFT_CENTER, *label, Tokens::ui(11.0), if resp.hovered() { t.text } else { t.text_dim });
|
||||
hp.with_clip_rect(hr).text(
|
||||
pos2(*x, hdr.center().y),
|
||||
Align2::LEFT_CENTER,
|
||||
crate::i18n::tr(label),
|
||||
Tokens::ui(11.0),
|
||||
if resp.hovered() { t.text } else { t.text_dim },
|
||||
);
|
||||
if *key == "label" {
|
||||
icons::paint(&hp, Rect::from_center_size(pos2(label_x, hdr.center().y), vec2(10.0, 10.0)), Icon::Keyframe, t.text_dim);
|
||||
}
|
||||
@@ -981,7 +987,7 @@ pub fn show(app: &mut EffectcraftApp, ui: &mut egui::Ui, rect: Rect) {
|
||||
(Icon::NewComp, "newComp", "Create a new Composition"),
|
||||
] {
|
||||
let r = Rect::from_min_size(pos2(x, foot.min.y + 3.0), vec2(22.0, 22.0));
|
||||
let resp = widgets::icon_button(ui, r, icon, false, &t, egui::Id::new(("pfoot", id))).on_hover_text(tip);
|
||||
let resp = widgets::icon_button(ui, r, icon, false, &t, egui::Id::new(("pfoot", id))).on_hover_text(crate::i18n::tr(tip));
|
||||
app.auto.add(&format!("project.{id}"), r, tip);
|
||||
resp.widget_info(|| egui::WidgetInfo::labeled(egui::WidgetType::Button, true, crate::i18n::tr(tip)));
|
||||
if resp.clicked() {
|
||||
@@ -1106,7 +1112,7 @@ fn column_menu(app: &mut EffectcraftApp, resp: &egui::Response) {
|
||||
ui.label(egui::RichText::new(crate::i18n::tr("Columns")).weak());
|
||||
for (key, label, _) in COLUMNS {
|
||||
let mut on = app.ui.project_columns.iter().any(|c| c == key);
|
||||
if ui.checkbox(&mut on, label).changed() {
|
||||
if ui.checkbox(&mut on, crate::i18n::tr(label)).changed() {
|
||||
set_column(&mut app.ui.project_columns, key, on);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -615,7 +615,7 @@ pub fn apply_dialog(app: &mut EffectcraftApp, ctx: &egui::Context, t: &Tokens) {
|
||||
super::dialogs::modal(ctx, "Motion Tracker Apply Options", vec2(380.0, 170.0), t, |ui| {
|
||||
ui.horizontal(|ui| {
|
||||
ui.label(crate::i18n::tr("Apply Dimensions:"));
|
||||
let labels = ["X and Y", "X only", "Y only"];
|
||||
let labels = [crate::i18n::tr("X and Y"), crate::i18n::tr("X only"), crate::i18n::tr("Y only")];
|
||||
let r = egui::ComboBox::from_id_salt("track-apply-dims")
|
||||
.selected_text(labels[d.dims.min(2)])
|
||||
.show_ui(ui, |ui| {
|
||||
|
||||
+15
-14
@@ -1,6 +1,6 @@
|
||||
# Localization parity
|
||||
|
||||
> **Last reviewed:** 2026-10-12 · **Last updated:** 2026-10-12 · **Change:** minor (catalogs recounted at `upstream/main` 470ea7a3: menus in 10 languages, panels in 6, Hangul probe (#599)) · **Target:** Adobe After Effects 2026
|
||||
> **Last reviewed:** 2026-10-12 · **Last updated:** 2026-10-22 · **Change:** minor (the panel/dialog catalogs grow by 300 rows in Japanese, Simplified Chinese and Traditional Chinese: panel tabs, form and dialog labels, context menus, tracker/graph/text-panel labels, credits and File-panel footers; Japanese 1,621 and Chinese 1,623 of ≈ 4,200 interface strings; previously: minor, catalogs recounted at `upstream/main` 470ea7a3: menus in 10 languages, panels in 6, Hangul probe (#599)) · **Target:** Adobe After Effects 2026
|
||||
|
||||
How much of EffectCraft's interface is translated, language by language, compared with After
|
||||
Effects. [gaps.md](gaps.md) gap 16 and workstream G9 hold the work;
|
||||
@@ -63,16 +63,16 @@ the true percentages are slightly lower.
|
||||
|
||||
| Language | Code | UI strings translated | Dialogs / tooltips / help | Script support | Native review | Status | To `full` |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| English | `en` | ≈ 3,900 (100%, source) | All; docs in English | — | yes | full | — |
|
||||
| Simplified Chinese | `zh-hans` | 1,130 (≈ 29%): menus 624 rows, panels 506 | Panels and dialogs partly; no help, effect names translated (306) and their parameter names not; Home screen literals unwrapped (#574, closed) | System CJK fallback; Han follows the UI language; CJK text in comps renders wrongly (#453); IME in text layers | no | partial | 6–9 h + review |
|
||||
| Spanish | `es` | 624 (≈ 16%) | Menus only (panel catalog in open PR #996) | Latin, fine | no | menus only | 7–10 h + review |
|
||||
| English | `en` | ≈ 4,200 (100%, source) | All; docs in English | — | yes | full | — |
|
||||
| Simplified Chinese | `zh-hans` | 1,623 (≈ 39%): menus 628 rows, panels 995 | Panels and dialogs partly; no help, effect names translated (306) and their parameter names not; Home screen literals unwrapped (#574, closed) | System CJK fallback; Han follows the UI language; CJK text in comps renders wrongly (#453); IME in text layers | no | partial | 6–9 h + review |
|
||||
| Spanish | `es` | 628 (≈ 15%) | Menus only (panel catalog in open PR #996) | Latin, fine | no | menus only | 7–10 h + review |
|
||||
| Hindi | `hi` | 0 | — | UI: Devanagari fallback font but no shaping; text layers shape Devanagari | no | none (After Effects: none) | 9–13 h + shaping in the UI |
|
||||
| Arabic | `ar` | 0 | — | UI: Arabic fallback font but no shaping and no RTL layout; text layers: bidi + shaping | no | none (After Effects: none) | 9–13 h + 15–25 h RTL UI |
|
||||
| French | `fr` | 624 (≈ 16%) | Menus only | Latin, fine | no | menus only | 7–10 h + review |
|
||||
| Portuguese (Brazil) | `pt-br` | 1,024 (≈ 26%): menus 624 rows, panels 400 | Panels and dialogs partly | Latin, fine | no | partial | 6–9 h + review |
|
||||
| French | `fr` | 628 (≈ 15%) | Menus only | Latin, fine | no | menus only | 7–10 h + review |
|
||||
| Portuguese (Brazil) | `pt-br` | 1,045 (≈ 25%): menus 628 rows, panels 417 | Panels and dialogs partly | Latin, fine | no | partial | 6–9 h + review |
|
||||
| Indonesian | `id` | 0 | — | Latin, fine | no | none (After Effects: none) | 8–12 h + review |
|
||||
| Japanese | `ja` | 1,034 (≈ 27%): menus 624 rows, panels 410 | Panels and dialogs partly | Japanese system fallback; vertical text and Tate-Chu-Yoko in text layers; IME | no | partial | 6–9 h + review |
|
||||
| German | `de` | 624 (≈ 16%) | Menus only (open PR #666 adds interface translations) | Latin, fine | no | menus only | 7–10 h + review |
|
||||
| Japanese | `ja` | 1,621 (≈ 39%): menus 628 rows, panels 993 | Panels and dialogs partly | Japanese system fallback; vertical text and Tate-Chu-Yoko in text layers; IME | no | partial | 6–9 h + review |
|
||||
| German | `de` | 628 (≈ 15%) | Menus only (open PR #666 adds interface translations) | Latin, fine | no | menus only | 7–10 h + review |
|
||||
| Korean | `ko` | 0 | — | Hangul fallback probe added (#599, closed); not checked on macOS here | no | none | 9–13 h + review |
|
||||
| Vietnamese | `vi` | 0 | — | Latin with stacked diacritics; untested | no | none (After Effects: none) | 8–12 h + review |
|
||||
|
||||
@@ -80,14 +80,14 @@ Other languages EffectCraft ships (3):
|
||||
|
||||
| Language | Code | UI strings translated | Status | To `full` |
|
||||
|---|---|---|---|---|
|
||||
| Traditional Chinese | `zh-hant` | 1,130 (≈ 29%): menus 624 rows, panels 506 | partial | 6–9 h + review |
|
||||
| Ukrainian | `uk` | 1,129 (≈ 29%): menus 624 rows, panels 505 | partial | 6–9 h + review |
|
||||
| Czech | `cs` | 1,125 (≈ 29%): menus 624 rows, panels 501 | Existing catalog entries covered; unwrapped UI, effects and engine text still in English; AI-assisted, not yet native-speaker proofread | Remaining strings + independent native review |
|
||||
| Traditional Chinese | `zh-hant` | 1,623 (≈ 39%): menus 628 rows, panels 995 | partial | 6–9 h + review |
|
||||
| Ukrainian | `uk` | 1,152 (≈ 27%): menus 628 rows, panels 524 | partial | 6–9 h + review |
|
||||
| Czech | `cs` | 1,146 (≈ 27%): menus 628 rows, panels 518 | Existing catalog entries covered; unwrapped UI, effects and engine text still in English; AI-assisted, not yet native-speaker proofread | Remaining strings + independent native review |
|
||||
|
||||
Russian (`ru`) has a menu catalog (624 rows, ≈ 16%); After Effects also ships Italian, which EffectCraft does not (8–12 h).
|
||||
Russian (`ru`) has a menu catalog (628 rows, ≈ 15%); After Effects also ships Italian, which EffectCraft does not (8–12 h).
|
||||
|
||||
**Overall: ≈ 18%**, the average coverage of After Effects' 10 non-English languages
|
||||
(Simplified and Traditional Chinese 29%, Japanese 27%, Brazilian Portuguese 26%, Spanish, French,
|
||||
**Overall: ≈ 27%**, the average coverage of After Effects' 10 non-English languages
|
||||
(Simplified and Traditional Chinese 39%, Japanese 39%, Ukrainian 27%, Czech 27%, Brazilian Portuguese 25%, Spanish, French and German 15%,
|
||||
German and Russian 16%, Korean and Italian 0%; 175 / 10, was ≈ 12% on 10 October). This is the localization row in
|
||||
[target-app-parity.md](target-app-parity.md#by-dimension).
|
||||
|
||||
@@ -103,6 +103,7 @@ can give; none has had it.
|
||||
|
||||
| Date | Change | Summary |
|
||||
|---|---|---|
|
||||
| 2026-10-22 | minor | Panel/dialog second step: 300 more catalog rows in Japanese, Simplified Chinese and Traditional Chinese (and no changes to the other catalogs) — panel tabs, form and dialog labels, panel context menus, the tracker and graph controls, text-panel options, File-panel footers and credits; the panel tables are now 993 Japanese and 995 Chinese rows, all drawn through `tr`/`tr_args`, with the tests keeping the three catalogs listing the same sources |
|
||||
| 2026-10-12 | minor | Recounted: Russian, French, German and Czech menus (#873, #987), Brazilian Portuguese and Czech panels (#830, #987), Hangul probe (#599); overall ≈ 12% to ≈ 18%; Korean and Italian still absent |
|
||||
| 2026-10-10 | major | First localization parity document: catalog rows counted for all six languages, the twelve-language table, After Effects' 11 shipped languages from its bundle |
|
||||
| 2026-10-11 | minor | Ukrainian panel catalog brought level with the Chinese ones (495 of 496 rows, counted at this commit); its share rises to ≈ 29%. The other languages' panel counts are the 10 October measurement |
|
||||
|
||||
Reference in New Issue
Block a user