40 Commits

Author SHA1 Message Date
aiongg 8f16aea983 Merge PR #3714: bs: Add Bosnian (bs) to the interface languages 2026-10-31 02:14:54 +00:00
aiongg 59695f22ae Merge PR #2344: i18n: Turkish (tr) interface catalog (#1377) 2026-10-31 02:13:56 +00:00
aiongg 7e608027ea Merge PR #2288: i18n: Russian covers the whole interface 2026-10-31 02:13:09 +00:00
aiongg 5b83f337ab Merge PR #1930: i18n: Swedish (sv) interface translation 2026-10-31 02:12:36 +00:00
aiongg 29a98f5f34 Merge PR #1710: i18n: add Polish interface language 2026-10-31 02:11:40 +00:00
Claude 293d4e908d Add Bosnian (bs) to the interface languages
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
2026-10-30 09:05:03 +00:00
Tomasz Lewandowski 929b67023a i18n: add Polish interface language
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
2026-10-29 06:59:14 +01:00
Patrik Lermon 9c47e2315f i18n(sv): cover the strings added on main; fix the coverage count in the parity doc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 20:48:21 +01:00
Losminek ff97dc4b1c Merge upstream/main into cs-ui
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>
2026-10-26 18:48:53 +01:00
Patrik Lermon d6a777b26f Merge remote-tracking branch 'upstream/main' into HEAD
# Conflicts:
#	crates/ui-egui/README.md
#	crates/ui-egui/src/i18n/mod.rs
#	docs/localization-parity.md
2026-10-26 08:26:34 +01:00
Losminek b16d3c6ef7 i18n(cs): translate the two Work Area Bar commands
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>
2026-10-25 11:11:02 +01:00
Losminek 85b7e09ced i18n(cs): translate the eleven strings added on main
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>
2026-10-25 11:08:18 +01:00
MOzcelik14 b1bc3decea Merge upstream/main into feature/turkish-localization 2026-10-24 11:03:36 +03:00
Losminek 8872fe008d Merge remote-tracking branch 'upstream/main' into cs-ui
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>
2026-10-24 09:03:20 +02:00
aiongg 93a845ce41 i18n: missing translations never fail; xtask ci prints the missing list (#3012) 2026-10-23 15:39:16 -04:00
Losminek 0e21e95d8e i18n(cs): translate the six strings added on main
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>
2026-10-20 22:25:39 +02:00
Losminek 98f3c324d8 Merge remote-tracking branch 'upstream/main' into cs-ui
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>
2026-10-20 22:25:29 +02:00
MOzcelik14 81dfe43350 Merge upstream/main into feature/turkish-localization 2026-10-20 11:16:48 +03:00
grib_job 08432644e5 i18n: Russian catalog covers the whole interface
- 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.
2026-10-19 20:01:55 +03:00
Losminek 211fce6209 i18n(cs): address review of the Czech catalog
- 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>
2026-10-19 15:54:06 +02:00
irgendwasmitfelix 838a919663 i18n: German needs only the core menus, like French and Korean; later strings may stay English
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 14:16:49 +02:00
irgendwasmitfelix 1d7e2238b0 i18n: German has every Spanish entry; scope the coverage claims
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 12:32:36 +02:00
Claude f4b1bee71f i18n: German (de) covers the whole interface
#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
2026-10-19 09:41:57 +02:00
MOzcelik14 17eda1dea6 i18n: Turkish (tr) interface translation and language support
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.
2026-10-18 12:53:46 +03:00
Patrik Lermon e6b5847148 Swedish interface translation (sv)
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>
2026-10-14 21:17:22 +02:00
Losminek 072c0fdb9e Merge upstream/main into cs-ui (Korean and Italian beside Czech)
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>
2026-10-13 16:12:25 +02:00
Brandon Thomas 48cae3e5a3 Merge origin/main into #1389 (Italian beside Korean: 12 languages)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 02:40:02 -04:00
CokeRoach b97bb74330 i18n: Korean (ko) interface catalog (#508)
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
2026-10-13 08:44:01 +09:00
Nai-ITA d2ae945c30 Add files via upload 2026-10-12 18:56:50 +02:00
Losminek 3f44381a38 Merge main into #1156: Czech next to Indonesian, new strings translated
- 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
2026-10-12 04:33:32 +00:00
Brandon Thomas c7f2b781b0 Merge main into #866 (Indonesian and the German menu docs landed meanwhile)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 21:09:23 -04:00
Brandon Thomas 6ead2249a8 Merge pull request #1073 from keller-lukas/docs/localization-parity-german
docs: German in the localization parity table (follow-up to #630)
2026-10-11 20:34:37 -04:00
Brandon Thomas 6b860ede89 Merge main into #1140 (docs/gaps.md)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 19:34:14 -04:00
Losminek 11e7bbea3c i18n: add Czech (cs) interface language
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>
2026-10-11 22:36:05 +02:00
seif cfe0c751e9 #395: Arabic and Hebrew in the interface: fallback fonts, captions in reading order
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.
2026-10-11 13:14:30 -06:00
Lukas Keller 239c46063d docs: German ships the menus (localization parity, ROADMAP)
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>
2026-10-11 16:24:11 +02:00
vangel76 615b89a364 #867: Indonesian (id) interface translation
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>
2026-10-11 02:41:31 +02:00
vangel76 c6d47e20f0 #859: complete the Brazilian Portuguese (pt-br) interface translation
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>
2026-10-11 02:17:58 +02:00
vangel76 73f9982c0c #498: French (fr) interface translation
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>
2026-10-11 00:22:08 +02:00
Brandon Thomas 3ad5a59321 Progress docs: target-app parity, gaps, alpha gate, readiness by audience (#700)
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>
2026-10-10 14:09:14 -04:00