A message a catalog lacks, or translates as an empty string, shows in English and fails nothing: - build.rs no longer requires every formats catalog to carry the same messages, and tr_format! gets a last arm that formats the English source, so a message no catalog has builds. - Coverage tests (every language translates X) and tests of one language's exact wording are gone; the language-switching, layout, date, placeholder and user-value tests read the catalog's own value instead of a hard-coded translation. - i18n::tests::translation_gaps_report lists, per language, the plain and format messages it lacks and its untranslated What's New lines. It always passes; cargo xtask ci runs it from the test step's binary after the tests. - catalogs_load checks that every catalog file is a JSON object of strings with each key once; it.json named "Dimensions" twice.
5.2 KiB
LightCraft in Georgian
Choose Edit → Language → ქართული or Settings → General → Language. The choice applies at once
and is saved for the next launch (language: "ka" in ui.json); the control command is
app.language.georgian. LIGHTCRAFT_LANGUAGE selects it for headless runs and accepts ka, ka-GE
and ka_GE.UTF-8; the saved value is always ka. LightCraft does not follow the system language,
for Georgian as for every other language.
The Georgian catalogs cover every key of the other catalogs plus all command and slider labels: menus, shortcuts, library, editing, crop, masks, people, import/export, settings, built-in presets and profiles, history, versions, date headings, status messages, the smart-album rule editor and the unsaved-changes dialog. The embedded release notes are translated too. Technical errors from lower layers stay in English, as in the other languages. They were written from the meaning of the English labels; no proprietary translation resources were consulted.
File names, command ids, template placeholders and albums, presets or metadata you named yourself are not translated. Descriptions for SAM 3 go to the model unchanged.
Georgian script
Mkhedruli has no upper and lower case: i18n::upper_first leaves Georgian letters alone, and the
interface never uses Mtavruli. Commands are verbal nouns. Counts
are count-neutral, noun first (იმპორტირებულია ფოტო: 3); English plural endings are dropped with
{:.0}. Dates read კვირა, 20.09.2026 ({weekday}, {day:02}.{month:02}.{year}), months 09.2026.
Inter has no Georgian letters, so the UI draws Georgian with craft-fonts' Noto Sans Georgian (Geor),
like the Thai and Arabic faces: desktop release builds embed it, and a web build made with
CRAFT_FONTS_DIR keeps it in the WASM (crates/engine/build.rs). The release web build doesn't use
craft-fonts yet, and a build without CRAFT_FONTS_DIR has no Georgian face and shows boxes.
Terminology
| Source | Georgian |
|---|---|
| Library / Develop | ბიბლიოთეკა / დამუშავება |
| File / Edit / View | ფაილი / რედაქტირება / ხედი |
| Settings / General / Language | პარამეტრები / ზოგადი / ენა |
| Import / Export | იმპორტი / ექსპორტი |
| Photos / Albums / Folders | ფოტოები / ალბომები / საქაღალდეები |
| Smart Album | სმარტ-ალბომი |
| Crop | ჩამოჭრა |
| Masks / Masking | ნიღბები / ნიღბვა |
| Heal / Remove | აღდგენა / მოშორება |
| Presets / Profile | პრესეტები / პროფილი |
| History / Versions | ისტორია / ვერსიები |
| Light / Color / Effects / Detail | სინათლე / ფერი / ეფექტები / დეტალი |
| Exposure / Contrast | ექსპოზიცია / კონტრასტი |
| Highlights / Shadows | ღია ტონები / ჩრდილები |
| Whites / Blacks | თეთრები / შავები |
| Texture / Clarity / Dehaze | ტექსტურა / სიცხადე / ბურუსის მოცილება |
| Vibrance / Saturation | სიხალასე / გაჯერება |
| Hue / Luminance | ფერის ტონი / სიკაშკაშე |
| Tint | ტონირება |
| Tone Curve / Color Grading | ტონალური მრუდი / ფერის გრადაცია |
| Sharpening / Noise Reduction | გამკვეთრება / ხმაურის შემცირება |
| Lens Corrections / Geometry | ობიექტივის კორექციები / გეომეტრია |
| Vignette / Grain | ვინიეტი / მარცვლოვნება |
| Feather / Threshold | კიდეების შერბილება / ზღვარი |
| Rating / Flag / Keywords | შეფასება / დროშა / საკვანძო სიტყვები |
| Reset / Revert | ჩამოყრა / წინა ვერსიაზე დაბრუნება |
| Undo / Redo | დაბრუნება / გამეორება |
Please follow this table and the shared ArtCraft Georgian glossary when you add strings.
Maintenance and checks
Fixed texts: crates/ui-egui/locales/ka.json (2,719 entries). Messages with values:
crates/ui-egui/locales/ka-formats.json (249 entries). The English keys stay unchanged; Rust checks
the placeholders at build time. Strings not yet in the plain catalog show in English.
cargo test -p lightcraft-ui-egui i18n::tests -- --nocapture
LIGHTCRAFT_LANGUAGE=ka lightcraft-cli snapshot --demo -o georgian.png --size 1600x1000
The tests check placeholders, switching language by menu and control channel, saving, the ka
locale tags, dates and that sentence case keeps Georgian lowercase. Messages Georgian lacks show in
English; i18n::tests::translation_gaps_report lists them. More notes are in
localization.md.