diff --git a/ROADMAP.md b/ROADMAP.md index aa363bea..72240b5b 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -97,7 +97,7 @@ UI strings translated out of ≈ 3,900 (detail: [localization-parity.md](docs/lo | Korean | none | 0% | | Vietnamese | none | 0% | -Also shipped: Traditional Chinese (partial, 28%) and Ukrainian (partial, 26%). No language has had +Also shipped: Traditional Chinese (partial, 28%) and Ukrainian (partial, 29%). No language has had native-speaker review. ## Upcoming @@ -117,6 +117,13 @@ Come tell us what matters most to you on [Discord](https://discord.gg/artcraft). ## Progress log +- 2026-10-11: Ukrainian panels caught up with the Chinese catalogs. The 95 rows the panel + catalog gained since 9 October are translated: the Home screen (recent files, their Kind and + Opened columns, the empty and no-match states), the viewer's toolbar tooltips, magnification, + resolution, grid, channel and Fast Previews popups, the Appearance settings, the solid dialog + and the project, import, export and colour-management forms. `uk` now carries 495 of the 496 + panel rows — `RGB` reads the same in Ukrainian, so it falls back to the English source by + design — alongside its 618/618 menus. - 2026-10-10: Full parity re-measure against After Effects 2026 26.5 (installed bundle, 26.2–26.5 release notes, repository counts): breadth ≈ 91%, ready ≈ 45%, stage alpha. Progress docs follow the shared standard: `docs/parity.md` became `docs/target-app-parity.md`; new diff --git a/crates/ui-egui/src/i18n/ui.rs b/crates/ui-egui/src/i18n/ui.rs index f7c77905..c42b2f15 100644 --- a/crates/ui-egui/src/i18n/ui.rs +++ b/crates/ui-egui/src/i18n/ui.rs @@ -1570,7 +1570,9 @@ const UKRAINIAN: &[(&str, &str)] = &[ ), ("About EffectCraft", "Про EffectCraft"), ("About...", "Про програму..."), + ("Active", "Активна"), ("Active Camera", "Активна камера"), + ("Alpha", "Альфа"), ("Adapt Feature On Every Frame", "Адаптувати ознаку в кожному кадрі"), ("Adaptive Sample Limit:", "Межа адаптивних вибірок:"), ("Add Animator", "Додати аніматор"), @@ -1591,6 +1593,8 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("All six face cameras turn together; the scene is not changed.", "Усі шість камер граней повертаються разом; сцена залишається без змін."), ("Anchor:", "Опорна точка:"), ("Aperture", "Діафрагма"), + ("Appearance Mode", "Режим оформлення"), + ("Appearance Mode: {}", "Режим оформлення: {}"), ("Apply Dimensions:", "Застосувати виміри:"), ("Apply Motion To:", "Застосувати рух до:"), ("Arrange", "Упорядкувати"), @@ -1603,6 +1607,7 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("Blending Mode", "Режим змішування"), ("Blur", "Розмиття"), ("Blur Level", "Рівень розмиття"), + ("Boundary", "Межа"), ("Browser Storage", "Сховище браузера"), ("Browse…", "Огляд…"), ("Brush Dynamics", "Динаміка пензля"), @@ -1652,6 +1657,8 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("Continuous (Lock Outgoing to Incoming)", "Безперервна (прирівняти вихідну швидкість до вхідної)"), ("Cue Point", "Сигнальна точка"), ("Current Render", "Поточний рендеринг"), + ("Dark", "Темне"), + ("Dark Theme", "Темна тема"), ("Darker", "Темніше"), ("Default Output:", "Стандартний вихід:"), ("Default: {}", "Стандартне: {}"), @@ -1714,6 +1721,7 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("Frame Rate:", "Частота кадрів:"), ("Frame Render Time {}ms", "Час рендерингу кадру {} мс"), ("Frame Target:", "Цільовий фрейм:"), + ("Freeze", "Заморозити"), ("Grab bag", "Список"), ("Grid", "Сітка"), ("Guide Layers: {}", "Допоміжні шари: {}"), @@ -1748,6 +1756,8 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("Leave all attributes in \"{}\"", "Залишити всі атрибути в «{}»"), ("Licence: {}", "Ліцензія: {}"), ("Ligatures", "Лігатури"), + ("Light", "Світле"), + ("Light Theme", "Світла тема"), ("Light Type", "Тип світла"), ("Lighter", "Світліше"), ("Link Selected Property", "Зв’язати виділену властивість"), @@ -1828,6 +1838,7 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("Original Duration:", "Початкова тривалість:"), ("Output Cycle: {}", "Цикл виводу: {}"), ("Output To:", "Вивести до:"), + ("Overlay", "Накладання"), ("Parameter Name:", "Назва параметра:"), ("Parent pick whip: drag onto a layer", "Зв’язування батьківського шару: перетягніть на шар"), ("Pixel Aspect Ratio:", "Пропорції пікселя:"), @@ -1926,6 +1937,7 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("Start Timecode:", "Початковий часовий код:"), ("Start: {} Duration: {}", "Початок: {} Тривалість: {}"), ("Step {} of {}: {}", "Крок {} з {}: {}"), + ("Stop", "Зупинити"), ("Stop {} at {}°", "Колірна точка {} на {}°"), ("Stored in: {}", "Збережено в: {}"), ("Stretch", "Розтягнення"), @@ -1933,6 +1945,7 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("Stylistic Sets", "Стилістичні набори"), ("Subpixel Positioning", "Субпіксельне позиціювання"), ("Swap Paint Colors (X)", "Поміняти місцями кольори малювання (X)"), + ("Sync with System", "Синхронізувати з системою"), ("System Default", "Стандартне системне"), ("Table", "Таблиця"), ("Template name", "Назва шаблону"), @@ -1963,6 +1976,7 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("Type a command or effect…", "Введіть команду або ефект…"), ("URL:", "URL:"), ("Undock Panel", "Від’єднати панель"), + ("Unfreeze", "Розморозити"), ("Unlink {}", "Від’єднати {}"), ( "Use this option to place the currently selected layers together into a new intermediate composition.", @@ -1988,6 +2002,97 @@ const UKRAINIAN: &[(&str, &str)] = &[ ("⌘/Ctrl-drag a pin to record its motion", "Перетягніть опорну точку з ⌘/Ctrl, щоб записати її рух"), ("▣ {}", "▣ {}"), ("⚠ {} is used by:", "⚠ {} використовується в:"), + // Strings a panel used to hand to a helper as a bare literal: the helper draws them (the + // viewer's toolbar tooltips and popup items, the solid dialog's checkbox), so the lookup has + // to reach the catalog from inside the helper. Kept at the end so the catalogs stay parallel. + ("3D Reference Axes", "Опорні осі 3D"), + ("Affect all layers that use this solid", "Застосувати до всіх шарів, що використовують цей суцільний колір"), + ("Choose grid and guide options", "Вибрати параметри сітки та напрямних"), + ("Colorize", "Розфарбувати"), + ("Custom", "Власна"), + ("Custom...", "Власна..."), + ("Fit", "Підігнати"), + ("Fit up to 100%", "Підігнати (макс. 100%)"), + ("Full", "Повна"), + ("Half", "Половина"), + ("Only this layer uses this solid.", "Цей суцільний колір використовує лише цей шар."), + ("Proportional Grid", "Пропорційна сітка"), + ("Quarter", "Чверть"), + ("Region of Interest", "Область інтересу"), + ("Reset Exposure", "Скинути експозицію"), + ("Show Channel and Color Management Settings", "Показати канал і параметри керування кольором"), + ("Show Snapshot (hold)", "Показати знімок (утримуйте)"), + ("Take Snapshot", "Зробити знімок"), + ("Third", "Третина"), + ("Toggle Mask and Shape Path Visibility", "Перемкнути видимість контурів масок і фігур"), + ("Toggle Transparency Grid", "Перемкнути сітку прозорості"), + // Technical terms and proper nouns: the project settings, the import and export forms, the + // viewer's channel and Fast Previews popups, the keyframe dialogs and the About window. The + // terms that read the same in Ukrainian (Display P3, HDTV (Rec. 709), RGB, H.264, ProRes…) + // need no row: a missing row falls back to the English source, which is the decision. + ("16 bits per channel", "16 бітів на канал"), + ("32 bits per channel (float)", "32 біти на канал (з плаваючою комою)"), + ("8 bits per channel", "8 бітів на канал"), + ("Adaptive Resolution", "Адаптивна роздільність"), + ("Adobe-style built-in", "Вбудований у стилі Adobe"), + ("Blue", "Синій"), + ("Current Settings", "Поточні налаштування"), + ("Disable Per-character 3D", "Вимкнути 3D для кожного символу"), + ("Draft", "Чорнова"), + ("Enable Per-character 3D", "Увімкнути 3D для кожного символу"), + ("Fast Draft", "Швидка чорнова"), + ("Fast Previews (Draft 3D, Faster Effects)", "Швидкий перегляд (чорновий 3D, швидші ефекти)"), + ("Green", "Зелений"), + ("Import Image Sequence", "Імпорт послідовності зображень"), + ("Import PDF / Illustrator File", "Імпорт файлу PDF / Illustrator"), + ("Import Photoshop File", "Імпорт файлу Photoshop"), + ("Interpret Unlabeled Alpha As", "Інтерпретувати непозначену альфу як"), + ("Join the ArtCraft Discord", "Приєднатися до Discord ArtCraft"), + ("Mercury GPU Acceleration ({})", "Прискорення Mercury GPU ({})"), + ("Mercury Software Only", "Лише програмний Mercury"), + ("OCIO (built-in ACES config)", "OCIO (вбудована конфігурація ACES)"), + ("Off (Final Quality)", "Вимкнено (остаточна якість)"), + ("OpenGL (compatibility)", "OpenGL (сумісність)"), + ("Opus Bitrate: {} kbps", "Бітрейт Opus: {} кбіт/с"), + ("RGB Straight", "RGB (прямий)"), + ("Red", "Червоний"), + ("Tone map", "Тональне відображення"), + ("Use In-Window Menu Bar on macOS", "Використовувати смугу меню у вікні на macOS"), + ("Wireframe", "Каркас"), + ("sRGB IEC61966-2.1 (default)", "sRGB IEC61966-2.1 (стандартний)"), + // The Home screen (#574). + ("New Project", "Новий проєкт"), + ("Open Project…", "Відкрити проєкт…"), + ("Templates", "Шаблони"), + ("EffectCraft home page", "Домашня сторінка EffectCraft"), + ("EffectCraft on GitHub", "EffectCraft на GitHub"), + ("Motion graphics and visual effects · version {}", "Анімована графіка та візуальні ефекти · версія {}"), + ("New Composition", "Нова композиція"), + ("Open Demo Project", "Відкрити демонстраційний проєкт"), + ("Import Footage…", "Імпортувати матеріал…"), + ("Filter recent files", "Фільтрувати нещодавні файли"), + ("NAME", "НАЗВА"), + ("OPENED", "ВІДКРИТО"), + ("SIZE", "РОЗМІР"), + ("KIND", "ТИП"), + ("Your recent files will show here", "Тут з’являться ваші нещодавні файли"), + ("Create a new project, or open the demo project to look around.", "Створіть новий проєкт або відкрийте демонстраційний, щоб ознайомитися з програмою."), + ("No recent files match the filter", "Немає нещодавніх файлів, що відповідають фільтру"), + ("Try another name or folder.", "Спробуйте іншу назву або теку."), + ("Just now", "Щойно"), + ("Yesterday", "Учора"), + // `format_ago` picks between one and many, while Ukrainian declines the noun for 1, for 2–4 + // and for 5 and up; the invariant unit abbreviations read correctly for every count. + ("{} minute ago", "{} хв тому"), + ("{} minutes ago", "{} хв тому"), + ("{} hour ago", "{} год тому"), + ("{} hours ago", "{} год тому"), + ("{} day ago", "{} дн. тому"), + ("{} days ago", "{} дн. тому"), + ("EffectCraft project", "Проєкт EffectCraft"), + ("After Effects project", "Проєкт After Effects"), + ("Lottie animation", "Анімація Lottie"), + ("Project", "Проєкт"), ]; #[cfg(test)] diff --git a/docs/localization-parity.md b/docs/localization-parity.md index ff70ca62..3d903bd4 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -1,6 +1,6 @@ # Localization parity -> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-10 · **Change:** major (first measurement of every catalog against the After Effects 2026 26.5 language set) · **Target:** Adobe After Effects 2026 +> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-11 · **Change:** minor (Ukrainian panel catalog recounted after it caught up with the Chinese ones) · **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; @@ -65,7 +65,7 @@ Other languages EffectCraft ships (2): | Language | Code | UI strings translated | Status | To `full` | |---|---|---|---|---| | Traditional Chinese | `zh-hant` | 1,081 (≈ 28%): menus 618/618, panels 463 | partial | 6–9 h + review | -| Ukrainian | `uk` | 1,015 (≈ 26%): menus 618/618, panels 397 | partial | 6–9 h + review | +| Ukrainian | `uk` | 1,113 (≈ 29%): menus 618/618, panels 495/496 | partial | 6–9 h + review | After Effects also ships Italian and Russian, which EffectCraft does not (8–12 h each). @@ -87,3 +87,4 @@ can give; none has had it. | Date | Change | Summary | |---|---|---| | 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 |