bs.tsv: Bosnian (Latin script, Ijekavian) catalog covering every key of
FilmCraft's other catalogs, its wording shared with storytold/craft-i18n
locales/bs/ and the strings craft-i18n lacks translated new. Every bs-*
locale selects it; counts use one/few/other. Locale and plural tests,
localization docs and an attribution entry (AI-assisted, not yet
reviewed by a native speaker).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013Tayw8nmxoLLmKv13jK93z
Adds a Polish catalog (pl.tsv) covering every Spanish entry plus the
macOS-only menu rows, registers Polski in the language menu, settings and
the native macOS menu, lists app.language.polish in the localization docs,
and adds a test that keeps the catalog complete and checks Polish letters
render with the bundled fonts.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DukHNvUY45rjRnvtz91x33
The merge brought in Language::bcp47() without a Cs arm, so the branch did
not compile; added "cs". Translated the seven strings main added since
(audio output errors with the new ">" separator, the update check).
Czech: 3,617 rows, i18n-report 0 missing, ui-egui lib tests 244/0.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Set Work Area Bar In Point and Set Work Area Bar Out Point are not in
the Spanish catalog yet, so the key comparison missed them; the
missing-translations report lists them. Wording follows Mark In
("Označit vstupní bod"). Czech has 3,610 rows and the report now lists
0 missing Czech strings of 3,577.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main added eleven strings since the last merge: History's Clear History
and Delete Redoable Actions with its confirmation, the work area's
Start/End/Duration readouts and Work Area Bar, Transparency Grid, Show
Duplicate Frame Markers, and the AV1 and H.265 hardware-encoder
messages. Czech again has every Spanish source key plus `1/2` (3,608).
- History entries are "akce", the greyed-out ones "zašedlé".
- Encoder is "kodér", as in the existing export rows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main reworked the i18n tests (#3012): catalogs are listed through
`Language::ALL` and `catalog_text`, missing translations no longer
fail a test, and the per-language coverage tests are gone in favour of
`cargo xtask i18n-report`.
- crates/ui-egui/src/i18n/mod.rs: main's structure, with Czech in
`catalog_text`, the native-name table and the bare-code check
(`cs-CZ`). The Czech coverage test is dropped, like the other
languages' ones.
- docs/localization-parity.md: main's rows (no "must cover" wording)
with the Czech row kept; both revision-history rows.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Main added six strings since the last merge: the Appearance option to
animate zoom, scrolling and menus (#2325), View > Reset Interface Zoom,
the track colour tooltip and three messages of the text search panel.
Czech again has every Spanish source key plus the `1/2` label (3,597).
- Reset Interface Zoom: "Obnovit měřítko rozhraní", since the command
returns to the scale set in Settings > Appearance > UI Scale
("Měřítko rozhraní").
- Type tool: "nástroj Text", as in the existing graphics hint.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Conflicts were only in the docs, where main recorded that German now
covers the whole interface:
- ROADMAP.md and docs/localization-parity.md: both revision-history rows
kept; the header names German as the previous change.
- crates/ui-egui/README.md: main's sentence (all but Ukrainian and
Russian cover the whole interface) with Czech added to the list.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- ru.tsv: all 3,592 strings of the reference catalog (was 355), translated
from the English sources with ordinary, Premiere-style Russian vocabulary.
Fixes the known mistranslations (Sequence -> Последовательность, Bin ->
Корзина, Lumetri Scopes -> Осциллограммы Lumetri, Wipe -> Вытеснение,
Normalize Mix Track, «мастер-дорожка») and applies one glossary throughout.
- Tests: russian_covers_the_whole_interface requires every Spanish entry and
no dead ones; a font test covers the Cyrillic alphabet including «ё»;
System Language maps ru-* to Russian.
- Docs: localization-parity, roadmap, gaps, ROADMAP, the ui-egui README and
the catalog's attribution sidecar.
- Distinct texts for distinct sources: the recovery dialog button
`Recover` is "Obnovit" (the heading keeps the full sentence),
`Titles` is "Grafické titulky" beside `Captions` = "Titulky", and the
Settings label `Remove Media Cache Files` no longer equals the
`Delete Media Cache Files` command.
- Remove = "Odebrat", Delete = "Odstranit" as in the glossary:
Remove Filler Words (both keys), Remove Pauses, Remove Unused and
Remove Media Cache Files now use "Odebrat"; image-processing names
such as Remove Fringe keep "Odstranit".
- Drop the Czech-only quality test (cs_quality.rs and its exception
list); the coverage and bundled-font tests stay.
- docs/localization-parity.md: remove the references to
maintainer-local plan/ files and the quality gate, state the
Remove/Delete rule, date the revision row like "Last updated".
- Doc comment on Language::Cs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
#630 shipped German for the menus. This adds the other 3,213 strings, so
de.tsv has every entry of the Spanish catalog (3,590): panels, dialogs,
effects and their parameters, transitions, presets, Settings, shortcut
commands, export presets, tooltips and status messages. Same style as the
menus (du, infinitives, placeholders, ellipses and escapes kept); the
glossary in the header is extended. The 377 menu entries are unchanged.
german_entries_cover_the_original_menu_catalog required every entry to be
a menu label. It becomes german_covers_the_menus_and_has_no_dead_entries,
like the French and Italian tests: every entry needs a Spanish counterpart,
the core menus and the native macOS app menu are required, later strings
may stay English. german_renders_with_bundled_fonts checks the umlauts,
ß and German quotation marks against the bundled fonts.
Docs: ROADMAP.md, docs/localization-parity.md, docs/gaps.md, ui-egui README.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KJhvSJ5odpWzFw9HhPzAix
Add crates/ui-egui/src/i18n/tr.tsv, clean-room Turkish translations matching every entry in the Spanish catalog plus the native macOS Settings menu (3,590 entries).
Language::Tr ("Türkçe") is persisted as `tr` in `general.interfaceLanguage`; it appears in Edit > Language (and native macOS menu), Settings > General, and System Language picks it for `tr-*` locales.
Tests cover the core menus, reject dead entries, verify bundled font rendering for Turkish characters (Ç, Ğ, İ, Ö, Ş, Ü, ç, ğ, ı, ö, ş, ü), switching/persistence across restarts, and locale matching. Attribution sidecar, ATTRIBUTION.md, ui-egui README, gaps.md, and localization-parity.md updated.
Add a Swedish catalog (crates/ui-egui/src/i18n/sv.tsv) covering the whole
interface: every entry of the Spanish catalog plus the macOS Settings item.
Edit > Language and Settings > General offer Swedish
(app.language.swedish), and System Language picks it for sv-* locales.
The catalog is original work with an attribution sidecar and an
ATTRIBUTION.md entry; ROADMAP.md, docs/localization-parity.md and the
ui-egui README list it. Native-speaker review welcome.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Upstream added Korean and Italian while this branch added Czech; all
three are kept (13 languages, Czech last) in settings, menus, the
native menu and the i18n tables, with docs/attribution rows from both
sides. Czech for the 15 strings added on main since (recent files,
ripple delete head frame, 32-bit audio formats, browser/help texts,
Korean font notice).
Note: graphics_notice_ui::the_notice_follows_the_interface_language
fails on main itself (it expects "renderizado por software" while
es.tsv says "procesamiento por software"); not touched here.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adds Korean as an interface language: Edit ▸ Language ▸ 한국어, Settings ▸
General ▸ Interface Language, and System Language for ko / ko-KR locales.
- crates/ui-egui/src/i18n/ko.tsv: 3,573 entries, the Spanish catalog's sources
plus the macOS Settings item, written clean-room from the plain meaning of
the English text (sidecar ko.tsv.attribution, ATTRIBUTION.md row).
- Hangul is drawn with the installed system face cjk.rs already adds (Malgun
Gothic, Apple SD Gothic Neo, Noto Sans CJK KR…); switching is refused with a
message when there is none, like Chinese.
- Test: korean_covers_the_menus_and_has_no_dead_entries.
- Docs: localization-parity, ROADMAP, ui-egui README.
Native-speaker review welcome.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013XWUReif4gqcjU5GsjYioc
- Language: Indonesian (id) and Czech (cs) both registered (ALL, parse, code,
catalog, System Language, Settings list, Edit > Language menu, tests)
- cs.tsv: 29 strings that landed on main (graphics safe mode, FLAC and EXR
export, label colour presets, Scene Edit Detection options); the two
renamed detection options dropped
- docs: Czech row next to main's pt-br/id/de figures
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014B5hhj4jLWx75QBHkNiwoK
Register Czech (locale detection, persisted preference, language menu) and
add the Czech catalog: all 3,547 rows written as whole phrases with a
video-editing glossary. A quality test (cs_quality.rs) checks placeholders,
capitalisation, leftover English words, straight quotes and collisions, with
an explicit list of justified exceptions.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The interface had no face for Arabic or Hebrew, so caption text, track and media names showed
missing-glyph boxes in the Text panel and on the timeline while the Program monitor drew them.
crates/ui-egui/src/rtl.rs adds the craft-fonts Arab / Hebr faces, else one installed face per
script (Noto Sans Arabic, SF Arabic, Segoe UI...), as the last fallbacks of every UI font family,
as cjk.rs does for Chinese.
egui already shapes each font run with harfrust, so the letters join, but it lays runs out left to
right with no bidi pass and multi-word Arabic read backwards. rtl::Lines lays captions out in
reading order: lines are broken on the logical text as egui wraps it, each line is reordered with
unicode-bidi (UAX #9, as crates/text does for titles) and every right-to-left word is its own
layout section for egui's shaper. Caption blocks on the timeline and the Text panel caption list
use it; a caption being edited keeps egui's logical order, since TextEdit places the caret by
character index. Left-to-right text is laid out exactly as before.
German (de) landed in #630: the localization parity table and the
ROADMAP language table now list it as menus only, 371 of 3,498 strings
(10.6%), native-reviewed. The localization dimension counts 2
menus-only and 5 none, and 5 of Premiere's 10 languages well and 2
partly.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Problem: Indonesian, one of the 12 key languages in
docs/localization-parity.md, had no catalog (0%), so Indonesian users got
the interface in English and System Language never picked Indonesian.
Fix: add crates/ui-egui/src/i18n/id.tsv, clean-room translations of every
entry in the Spanish catalog plus the native macOS Settings menu (3,541),
with a glossary in its header. Language::Id ("Bahasa Indonesia") is
persisted as `id`; it appears in Edit > Language (also the native macOS
menu), Settings > General, and System Language picks it for `id-*` locales
and the legacy `in-*` code older Java/Android runtimes report. Tests cover
the core menus, reject entries without a Spanish counterpart, check glyph
coverage with the bundled fonts, switching/persistence and locale
matching. Attribution sidecar, ATTRIBUTION.md row, docs (gaps.md G14,
localization-parity, ROADMAP, ui-egui README) updated.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Problem: the Portuguese (Brazil) catalog, one of Premiere's interface
languages and one of the 12 key languages in docs/gaps.md G14, covered
only the menus (348 of ~3,540 strings); panels, dialogs, Settings pages,
effect names, the Keyboard Shortcuts dialog and status messages showed
in English.
Fix: pt-br.tsv now has every entry Spanish has plus the native macOS
Settings item, written from the plain meaning of the English text with
ordinary Brazilian video-editing vocabulary (infinitive commands,
polite imperative instructions, sentence case); the header records the
conventions and a term glossary. Like Japanese and French, tests
require only the menus (now every menu label, not just the core set),
so later strings show in English until translated; a Portuguese entry
without a Spanish one fails, and a new test checks the bundled fonts
cover every Portuguese letter. The core-menu set that Ukrainian,
German, Russian and French must cover moves from pt-br.tsv (no longer
menus-only) to the menus-only Ukrainian catalog, unchanged in content
for those tests. Attribution sidecar and ATTRIBUTION.md entry added.
Docs: G14, localization-parity, ROADMAP language row, ui-egui README.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Problem: French, one of Premiere's interface languages and one of the
12 key languages in docs/gaps.md G14, had no catalog; #498 asked for it.
Fix: a new fr.tsv catalog with every entry Spanish has (menus, panels,
dialogs, Settings pages, the Effects / Effect Controls registry, the
Keyboard Shortcuts dialog, status messages) plus the native macOS
Settings item, written from the plain meaning of the English text with
ordinary French editing vocabulary (infinitive commands, "vous", French
sentence case and spacing). Language::Fr is persisted as `fr`;
app.language.french joins Edit > Language (checkmark, native macOS menu),
Settings > General offers Français, and System Language picks French for
any fr-* locale. Like Japanese, tests require only the core menus, so
later strings show in English until translated; a French entry without
a Spanish one fails. A new test checks the bundled fonts cover every
French letter (the glyph check is shared with Ukrainian). Docs: G14,
localization-parity, ROADMAP language row, ui-egui README.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Progress docs per craftrules standards/progress-docs.md: target-app parity, gaps, roadmap with alpha gate, readiness by audience (full / mainstream / essentials) with Opus 5.5 hours, and feature, format, hardware, UI and localization parity docs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>