From 6c72999361ac1b3cdf2c592f1f244243beeb2dea Mon Sep 17 00:00:00 2001 From: Davit Matchakhelidze Date: Fri, 23 Oct 2026 02:23:44 +0400 Subject: [PATCH] i18n: add Georgian (ka) interface language MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a Georgian catalog (ka.tsv, 1,383 rows): the union of the existing catalogs, four menu headings (ზომების დატანა for the Dimension menu, ზომა for the object) and single-form counts, since a Georgian noun stays singular after a numeral. No marked UI literal falls back to English. Prompts read "მიუთითეთ …" for Specify and "შეიყვანეთ …" for Enter; clickable keywords keep the spelling the engine accepts. No Mtavruli. Register the language (Preference::Georgian, `ka`, ქართული) and add locale, preference, count, menu-heading, live-switch, dialog and no-Mtavruli tests. Docs, README and ATTRIBUTION list it. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01YMTAbGNRxnMEzRvYnQGphF --- ATTRIBUTION.md | 1 + README.md | 2 +- ROADMAP.md | 1 + crates/ui-egui/src/i18n/ka.tsv | 1399 +++++++++++++++++++++++++++++ crates/ui-egui/src/i18n/mod.rs | 23 +- crates/ui-egui/src/i18n/tests.rs | 111 ++- crates/ui-egui/src/options/mod.rs | 2 +- docs/localization-parity.md | 4 +- docs/localization.md | 20 +- 9 files changed, 1554 insertions(+), 9 deletions(-) create mode 100644 crates/ui-egui/src/i18n/ka.tsv diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md index 264c7430f..3779b71bc 100644 --- a/ATTRIBUTION.md +++ b/ATTRIBUTION.md @@ -71,3 +71,4 @@ Generated-in-code assets are original and have no file to list: | `crates/ui-egui/src/i18n/hu.tsv` | @Skaywalker | Original Hungarian translations of CADCraft English strings | MIT OR Apache-2.0 (`LICENSE-MIT`, `LICENSE-APACHE`) | No proprietary localization resources copied | | `crates/ui-egui/src/i18n/tr.tsv` | @ogzhnklvz (AI-assisted) | Original Turkish translations of CADCraft English strings | MIT OR Apache-2.0 (`LICENSE-MIT`, `LICENSE-APACHE`) | No proprietary localization resources copied; written from the English strings, no other catalog used as a source; the running app reviewed by a native speaker | | `crates/ui-egui/src/i18n/el.tsv` | @Camthalion77 with ChatGPT (AI-assisted) | Original Greek translations of CADCraft English strings | MIT OR Apache-2.0 (`LICENSE-MIT`, `LICENSE-APACHE`) | No proprietary localization resources copied; independent native proofreading pending | +| `crates/ui-egui/src/i18n/ka.tsv` | @devius with Claude (AI-assisted) | Original Georgian translations of CADCraft English strings | MIT OR Apache-2.0 (`LICENSE-MIT`, `LICENSE-APACHE`) | No proprietary localization resources copied; written from the English strings, no other catalog used as a source; no font assets added (the Georgian face comes from craft-fonts) | diff --git a/README.md b/README.md index 655b944f5..c762a223e 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ numbers): | Layouts & plotting | Paper-space layouts, viewports (scale, lock, per-viewport layer freeze), MSPACE/PSPACE through viewports, page setups, PLOT and EXPORTPDF | | Parametric | Geometric and dimensional constraints, AUTOCONSTRAIN, PARAMETERS with expressions, conflict detection; constraints re-solve after every edit | | Grips | Hot grips with Space to cycle Stretch, Move, Rotate, Scale and Mirror | -| Interface languages | English, Ukrainian (Українська), Brazilian Portuguese (Português (Brasil)), German (Deutsch), Spanish (Español), Czech (Čeština), Russian (Русский), French (Français), Simplified Chinese (简体中文, with an installed CJK font), Italian (Italiano), Korean (한국어, with an installed Hangul font), Swedish (Svenska), Arabic (العربية, with an installed Arabic font), Hungarian (Magyar) and Turkish (Türkçe), live switching and a remembered Auto/system-language choice; [details](docs/localization.md) | +| Interface languages | English, Ukrainian (Українська), Brazilian Portuguese (Português (Brasil)), German (Deutsch), Spanish (Español), Czech (Čeština), Russian (Русский), French (Français), Simplified Chinese (简体中文, with an installed CJK font), Italian (Italiano), Korean (한국어, with an installed Hangul font), Swedish (Svenska), Arabic (العربية, with an installed Arabic font), Hungarian (Magyar), Turkish (Türkçe) and Georgian (ქართული), live switching and a remembered Auto/system-language choice; [details](docs/localization.md) | | Automation | MCP server, JSON control channel, `cadcraft-cli` (info, convert, run, commands, mcp) | ## Quick start diff --git a/ROADMAP.md b/ROADMAP.md index d54f3bf8b..93b3a701e 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -95,6 +95,7 @@ Ukrainian and German. Detail: [localization-parity.md](docs/localization-parity. | Indonesian | none | 0% | | Japanese | none | 0% | | Greek | complete current catalog | 1,330 current source keys; independent proofreading pending | +| Georgian | complete current catalog | 1,383 rows; native proofreading pending | | German | partial | ≈ 100% of the catalog (989 rows) | | Korean | none | 0% | | Vietnamese | none | 0% | diff --git a/crates/ui-egui/src/i18n/ka.tsv b/crates/ui-egui/src/i18n/ka.tsv new file mode 100644 index 000000000..25512c91f --- /dev/null +++ b/crates/ui-egui/src/i18n/ka.tsv @@ -0,0 +1,1399 @@ +# CADCraft Georgian (ქართული) interface catalog — original translations by the CADCraft contributors. +# License: MIT OR Apache-2.0 (the repository LICENSE-MIT and LICENSE-APACHE). +# Written from CADCraft's English strings; no proprietary translations were copied. +# Clean room: every entry is written from the plain meaning of the English label in ordinary +# Georgian computing and technical-drawing (ხაზვა) vocabulary (შრე, ზომა, დაშტრიხვა, მომრგვალება, +# ფასკა, წანაცვლება, მოკვეთა, ობიექტზე მიბმა, ხედვის არე, განლაგება). No other product's Georgian +# interface, string table or terminology database was consulted, and no other catalog is used as a source. +# UTF-8: contextEnglish sourceGeorgian translation. +# Empty context = ordinary label; @plural = one form with {n} (a Georgian noun stays singular after +# a numeral: "5 კომიტი"); menu = a menu heading where it differs from the label. +# Commands are verbal nouns (შენახვა, შემობრუნება); prompts read "მიუთითეთ …" for Specify, +# "შეიყვანეთ …" for Enter and "მონიშნეთ …" for Select. Georgian has no letter case: nothing is +# capitalised and Mtavruli is never used. +# Keep command IDs, keywords (Top, Zero, Bottom, _tan to, nX/nXP, Multiple, PICKADD, QPMODE), +# technology/product names and user data unchanged. + + Apply გამოყენება + Attach DWG... DWG-ის მიმაგრება... + Bind ჩაშენება + Detach მოხსნა + Loaded ჩატვირთულია + Make it a block of this drawing, keeping its layer names ამ ნახაზის ბლოკად ქცევა, შრეების სახელების შენარჩუნებით + Make it a block of this drawing; its layers become NAME$0$LAYER ამ ნახაზის ბლოკად ქცევა; შრეების სახელები გახდება NAME$0$LAYER + No external references are attached. გარე მიმართვები მიმაგრებული არ არის. + Not Found ვერ მოიძებნა + Not loaded არ არის ჩატვირთული + Open გახსნა + Overlay ზედდება + Reference Manager მიმართვების მენეჯერი + Reference Name მიმართვის სახელი + References: {n} მიმართვა: {n} + Reload ხელახლა ჩატვირთვა + Reload All ყველას ხელახლა ჩატვირთვა + Saved Path შენახული გზა + Unload განტვირთვა + Unloaded განტვირთულია + Unreferenced მიმართვის გარეშე + Unresolved დაუდგენელი + Cancel გაუქმება + OK OK + or [ ან [ + % of all commits ყველა კომიტის % + * Wildcard Match * შაბლონით დამთხვევა + *VARIES* *სხვადასხვა* + + | Top | 2D Wireframe + | ზედა | 2D კარკასი + +Bin +Bin + +LOC +LOC + 1 Viewport 1 ხედვის არე + 2 Points 2 წერტილი + 2 Viewports 2 ხედვის არე + 2D Solid 2D შევსებული არე + 3 Points 3 წერტილი + 3 Viewports 3 ხედვის არე + 3D Face 3D წახნაგი + 3D Operations 3D ოპერაციები + 3D Polyline 3D ტეხილი + 4 Viewports 4 ხედვის არე + < Less than < ნაკლებია + <> Not Equal <> არ უდრის + = Equals = უდრის + > Greater than > მეტია + A variable name starts with a letter and has only letters, digits and _ ცვლადის სახელი ასოთი იწყება და მხოლოდ ასოებს, ციფრებსა და _-ს შეიცავს + About პროგრამის შესახებ + About CADCraft CADCraft-ის შესახებ + Absolute აბსოლუტური + Add Leader მიმთითებლის დამატება + Additional angles დამატებითი კუთხეები + Align სწორება + Align Text ტექსტის სწორება + Aligned გასწორებული + All ყველა + All Annotation Objects ყველა ანოტაციური ობიექტი + All Used Layers ყველა გამოყენებული შრე + All files ყველა ფაილი + Angle კუთხე + Angular კუთხური + Annotation Visibility ანოტაციის ხილვადობა + Annotation scale ანოტაციის მასშტაბი + Apparent Intersection ხილული გადაკვეთა + Append to current selection set მიმდინარე მონიშნულზე დამატება + Apply to: გამოყენება: + Apply true color ნამდვილი ფერის გამოყენება + Arc რკალი + Arc Length რკალის სიგრძე + Area ფართობი + Arrange Panel პანელის დალაგება + Array მასივი + Attach მიმაგრება + Attribute ატრიბუტი + Attribute Definition ატრიბუტის განსაზღვრა + Attribute Display ატრიბუტების ჩვენება + Audit აუდიტი + Auto (system language) ავტომატური (სისტემის ენა) + Auto Constrain ავტომატური შეზღუდვა + AutoConstrain ავტოშეზღუდვა + Axis, End ღერძი, ბოლო + Base საბაზო წერტილი + Baseline საბაზისო ხაზი + Batch Publish პაკეტური გამოქვეყნება + Binary assets added დამატებული ბინარული ფაილები + Binary assets removed წაშლილი ბინარული ფაილები + Bind... ჩაშენება... + Blend გადასვლა + Block ბლოკი + Block Attribute Manager... ბლოკის ატრიბუტების მენეჯერი... + Block Editor ბლოკის რედაქტორი + Block Reference ბლოკის ჩასმა + Block... ბლოკი... + Blocks ბლოკები + Blue ლურჯი + Bold მუქი + Boolean ლოგიკური + Boundary საზღვარი + Boundary... საზღვარი... + Box პარალელეპიპედი + Break გაწყვეტა + Break At Point წერტილში გაწყვეტა + Break-line Symbol წყვეტის ხაზის სიმბოლო + Bring Above Objects ობიექტებზე ზემოთ გადატანა + Bring Annotations to Front ანოტაციების წინა პლანზე გადმოტანა + Bring to Front წინა პლანზე გადმოტანა + Bulleted list ბურთულებიანი სია + ByBlock ბლოკის მიხედვით + ByColor ფერის მიხედვით + ByLayer შრის მიხედვით + CADCraft Help CADCraft-ის დახმარება + Cancel გაუქმება + Cartesian (x, y) დეკარტული (x, y) + Center ცენტრი + Center Line ღერძული ხაზი + Center Mark ცენტრის ნიშანი + Center X ცენტრი X + Center Y ცენტრი Y + Center Z ცენტრი Z + Center, Diameter ცენტრი, დიამეტრი + Center, Radius ცენტრი, რადიუსი + Center, Start, Angle ცენტრი, დასაწყისი, კუთხე + Center, Start, End ცენტრი, დასაწყისი, ბოლო + Center, Start, Length ცენტრი, დასაწყისი, სიგრძე + Chamfer ფასკა + Change Space სივრცის შეცვლა + Change to Current Layer მიმდინარე შრეზე გადატანა + Changed: {n} შეცვლილი: {n} + Circle წრე + Circumference წრეწირის სიგრძე + Clear History ისტორიის გასუფთავება + Clear გასუფთავება + Clip მოჭრა + Clip Viewport ხედვის არის მოჭრა + Clipboard გაცვლის ბუფერი + Close დახურვა + Close All ყველას დახურვა + Close All Other Drawings ყველა სხვა ნახაზის დახურვა + Closed შეკრული + Close Comparison შედარების დახურვა + Coincident დამთხვევა + Collapse Palettes პალიტრების ჩაკეცვა + Collapse Tool Sets ხელსაწყოთა ნაკრებების ჩაკეცვა + Collinear კოლინეარობა + Color ფერი + Color 8 ფერი 8 + Color 9 ფერი 9 + Color Index ფერის ინდექსი + Color... ფერი... + Command Aliases ბრძანებების ფსევდონიმები + Command History ბრძანებების ისტორია + Clear Command History ბრძანებების ისტორიის გასუფთავება + Command Line ბრძანების სტრიქონი + Command Line History Lines ბრძანების სტრიქონის ისტორიის სტრიქონები + Command Reference ბრძანებების ცნობარი + Commits კომიტები + Company კომპანია + Compare Drawings... ნახაზების შედარება... + Computer-aided design and drafting: an open-source, clean-room CAD application written in pure Rust. კომპიუტერული დაპროექტება და ხაზვა: ღია კოდის CAD აპლიკაცია, შექმნილი „სუფთა ოთახის“ მეთოდით და დაწერილი სუფთა Rust-ზე. + Concentric კონცენტრულობა + Cone კონუსი + Constraint Bars შეზღუდვების ზოლები + Constraint Settings შეზღუდვების პარამეტრები + Construction Line დამხმარე ხაზი + Contents შიგთავსი + Continue გაგრძელება + Contributors მონაწილეები + Control Vertices მართვის წვეროები + Convert გარდაქმნა + Convert Text to Mtext ტექსტის Mtext-ად გარდაქმნა + Copy კოპირება + Copy Full File Path ფაილის სრული გზის კოპირება + Copy History ისტორიის კოპირება + Copy Layout განლაგების კოპირება + Copy Nested Objects ჩადგმული ობიექტების კოპირება + Copy Selection მონიშნულის კოპირება + Copy with Base Point კოპირება საბაზო წერტილით + Count დათვლა + Count List დათვლის სია + Count Table დათვლის ცხრილი + Create Block ბლოკის შექმნა + Creates a user parameter ქმნის მომხმარებლის პარამეტრს + Ctrl+Enter to finish დასასრულებლად: Ctrl+Enter + Current layer მიმდინარე შრე + Current selection მიმდინარე მონიშნული + Current: {color} მიმდინარე: {color} + Cut ამოჭრა + Cyan ცისფერი + Cylinder ცილინდრი + DWG DWG + DWG Reference... DWG მიმართვა... + DXF DXF + Dark ბნელი + Data Extraction... მონაცემების ამოღება... + Default ნაგულისხმევი + Data Link... მონაცემთა კავშირი... + Default Save Format შენახვის ნაგულისხმევი ფორმატი + Default Save Version შენახვის ნაგულისხმევი ვერსია + Define Attributes ატრიბუტების განსაზღვრა + Define Attributes... ატრიბუტების განსაზღვრა... + Defined width განსაზღვრული სიგანე + Degree გრადუსი + Degrees of Freedom თავისუფლების ხარისხები + Degrees of freedom: {n} თავისუფლების ხარისხი: {n} + Delete წაშლა + Delete Column სვეტის წაშლა + Delete Constraints შეზღუდვების წაშლა + Delete Dimension Style ზომის სტილის წაშლა + Delete Duplicate Objects დუბლიკატი ობიექტების წაშლა + Delete Layer შრის წაშლა + Delete Layer State შრეების მდგომარეობის წაშლა + Delete Layout განლაგების წაშლა + Delete Row სტრიქონის წაშლა + Delete Text Style ტექსტის სტილის წაშლა + Delta X დელტა X + Delta Y დელტა Y + Description აღწერა + Deselect All ყველა მონიშვნის მოხსნა + Diameter დიამეტრი + Dim style ზომის სტილი + Dimension Break ზომის გაწყვეტა + Dimension Edit ზომის რედაქტირება + Dimension ზომა + Dimension Objects Only მხოლოდ ზომის ობიექტები + Dimension Space ზომების დაშორება + Dimension Style Override ზომის სტილის გადაფარვა + Dimension Style... ზომის სტილი... + Dimension Text Edit ზომის ტექსტის რედაქტირება + Dimension style ზომის სტილი + Dimensional Constraint ზომითი შეზღუდვა + Dimensional Constraint Parameters ზომითი შეზღუდვის პარამეტრები + Dimensional Constraints ზომითი შეზღუდვები + Disassociate Dimensions ზომების ასოციაციის მოხსნა + Display name საჩვენებელი სახელი + Distance მანძილი + Divide დაყოფა + Do not plot (click: plot) არ იბეჭდება (დაწკაპეთ: ბეჭდვა) + Donut რგოლი + Double-click to edit the description ორჯერ დაწკაპეთ აღწერის რედაქტირებისთვის + Down ქვემოთ + Drafting ხაზვა + Drafting Settings ხაზვის პარამეტრები + Drafting Settings... ხაზვის პარამეტრები... + Draw ხაზვა + Draw Order ხაზვის რიგი + Drawing (DWG) ნახაზი (DWG) + Drawing (DXF) ნახაზი (DXF) + Drawing Limits ნახაზის ზღვრები + Drawing Template (DWT) ნახაზის შაბლონი (DWT) + Drawing Utilities ნახაზის უტილიტები + Drawings (DWG, DXF) ნახაზები (DWG, DXF) + SVG drawings (SVG, SVGZ) SVG ნახაზები (SVG, SVGZ) + Dynamic დინამიკური + Dynamic Dimensions დინამიკური ზომები + Dynamic Input დინამიკური შეყვანა + Dynamic Input (F12) დინამიკური შეყვანა (F12) + E ა + Edit რედაქტირება + Edit Attributes... ატრიბუტების რედაქტირება... + Edit Text... ტექსტის რედაქტირება... + Edit Table Cell ცხრილის უჯრის რედაქტირება + Elevation ნიშნული + Ellipse ელიფსი + Elliptical Arc ელიფსური რკალი + Enable Dynamic Input (F12) დინამიკური შეყვანის ჩართვა (F12) + End Object Isolation ობიექტების იზოლირების დასრულება + End Width ბოლო სიგანე + End X ბოლო X + End Y ბოლო Y + End angle ბოლო კუთხე + Endpoint ბოლო წერტილი + Enter შეყვანა + Enter Top, Zero or Bottom. შეიყვანეთ Top, Zero ან Bottom. + Enter a fit data option შეიყვანეთ მისადაგების მონაცემების ვარიანტი + Enter a pattern name შეიყვანეთ ნიმუშის სახელი + Enter a vertex editing option შეიყვანეთ წვეროს რედაქტირების ვარიანტი + Enter an option შეიყვანეთ ვარიანტი + Enter angle of xline შეიყვანეთ დამხმარე ხაზის კუთხე + Enter angle of xline (0) or შეიყვანეთ დამხმარე ხაზის კუთხე (0) ან + Enter area of rectangle in current units შეიყვანეთ მართკუთხედის ფართობი მიმდინარე ერთეულებში + Enter attribute prompt შეიყვანეთ ატრიბუტის მოთხოვნა + Enter attribute tag name შეიყვანეთ ატრიბუტის ტეგის სახელი + Enter attribute value შეიყვანეთ ატრიბუტის მნიშვნელობა + Enter block name შეიყვანეთ ბლოკის სახელი + Enter constraint type შეიყვანეთ შეზღუდვის ტიპი + Enter continuity შეიყვანეთ უწყვეტობის ტიპი + Enter default attribute value შეიყვანეთ ატრიბუტის ნაგულისხმევი მნიშვნელობა + Enter degree of spline შეიყვანეთ სპლაინის ხარისხი + Enter delta angle შეიყვანეთ კუთხის ნამატი + Enter delta length or შეიყვანეთ სიგრძის ნამატი ან + Enter dimension text შეიყვანეთ ზომის ტექსტი + Enter dimension text (<> = measurement) შეიყვანეთ ზომის ტექსტი (<> = გაზომილი მნიშვნელობა) + Enter dimension value or [name=expression] შეიყვანეთ ზომის მნიშვნელობა ან [name=expression] + Enter dimension variable name to override შეიყვანეთ გადასაფარავი ზომის ცვლადის სახელი + Enter justification type შეიყვანეთ სწორების ტიპი + Enter leader text შეიყვანეთ მიმთითებლის ტექსტი + Enter mline scale შეიყვანეთ მულტიხაზის მასშტაბი + Enter mode შეიყვანეთ რეჟიმი + Enter name of block to insert შეიყვანეთ ჩასასმელი ბლოკის სახელი + Enter new text შეიყვანეთ ახალი ტექსტი + Enter next point შეიყვანეთ შემდეგი წერტილი + Enter number of columns შეიყვანეთ სვეტების რაოდენობა + Enter number of data rows შეიყვანეთ მონაცემების სტრიქონების რაოდენობა + Enter number of items შეიყვანეთ ელემენტების რაოდენობა + Enter number of items along path შეიყვანეთ ელემენტების რაოდენობა ტრაექტორიის გასწვრივ + Enter number of sides შეიყვანეთ გვერდების რაოდენობა + Enter number of turns შეიყვანეთ ხვიების რაოდენობა + Enter percentage length შეიყვანეთ სიგრძე პროცენტებში + Enter rectangle length შეიყვანეთ მართკუთხედის სიგრძე + Enter rectangle width შეიყვანეთ მართკუთხედის სიგანე + Enter scale factor შეიყვანეთ მასშტაბის კოეფიციენტი + Enter text შეიყვანეთ ტექსტი + Enter text (use \P for new paragraphs) შეიყვანეთ ტექსტი (ახალი აბზაცისთვის გამოიყენეთ \P) + Enter the number of segments შეიყვანეთ სეგმენტების რაოდენობა + Enter twist direction of helix შეიყვანეთ სპირალის დახვევის მიმართულება + Entire drawing მთელი ნახაზი + Equal ტოლობა + Erase წაშლა + Evaluate გამოთვლა + Evaluate LISP LISP-ის გამოთვლა + Exclude from new selection set ახალი მონიშნულიდან გამორიცხვა + Explode დაშლა + Explode Attributes to Text ატრიბუტების ტექსტად დაშლა + Export ექსპორტი + Export Table ცხრილის ექსპორტი + Export to PDF... PDF-ად ექსპორტი... + Express Tools Express Tools + Expression ექსპრესია + Extend გაგრძელება + Extension გაგრძელება + Extents საზღვრები + External Reference გარე მიმართვა + External References გარე მიმართვები + Extrude ამოწევა + File ფაილი + File Tab ფაილის ჩანართი + Fillet მომრგვალება + Filter ფილტრი + Filters ფილტრები + Find and Replace ძებნა და ჩანაცვლება + Find... ძებნა... + First პირველი + First commit პირველი კომიტი + Fit Points მისადაგების წერტილები + Fix ფიქსაცია + Flatten Objects ობიექტების გაბრტყელება + Format ფორმატი + Freehand ხელით ხაზვა + Freeze გაყინვა + Freeze Layer შრის გაყინვა + Freeze in new viewports გაყინვა ახალ ხედვის არეებში + Freeze/Thaw გაყინვა/გალღობა + Freeze/Thaw in all viewports გაყინვა/გალღობა ყველა ხედვის არეში + Freeze/Thaw in the current viewport გაყინვა/გალღობა მიმდინარე ხედვის არეში + From ათვლის წერტილიდან + From Template... შაბლონიდან... + General ზოგადი + Geometric Center გეომეტრიული ცენტრი + Geometric Constraint გეომეტრიული შეზღუდვა + Geometric Constraints გეომეტრიული შეზღუდვები + Geometry გეომეტრია + Get from the Drawing ნახაზიდან აღება + Get Variable ცვლადის მიღება + Get View ხედის მიღება + Global გლობალური + Global width საერთო სიგანე + Grab bag სხვადასხვა + Gradient გრადიენტი + Gradient... გრადიენტი... + Green მწვანე + Grid (F7) ბადე (F7) + Grid Display ბადის ჩვენება + Grid On (F7) ბადის ჩართვა (F7) + Grid snap ბადეზე მიბმა + Grid spacing ბადის ბიჯი + Grip Edit სახელურით რედაქტირება + Grip Mirror სახელურით არეკვლა + Grip Option სახელურის პარამეტრი + Grip Rotate სახელურით შემობრუნება + Grip Scale სახელურით მასშტაბირება + Grip Stretch სახელურით გაწელვა + Group დაჯგუფება + Group Edit ჯგუფის რედაქტირება + Group Options დაჯგუფების პარამეტრები + Group Selection ჯგუფის მონიშვნა + Hatch დაშტრიხვა + Hatch Edit დაშტრიხვის რედაქტირება + Hatch Patterns დაშტრიხვის ნიმუშები + Hatch... დაშტრიხვა... + Height სიმაღლე + Height: {height} სიმაღლე: {height} + Helix სპირალი + Help დახმარება + Hide All ყველას დამალვა + Hide All Constraint Bars შეზღუდვების ყველა ზოლის დამალვა + Hide All Dynamic Dimensions ყველა დინამიკური ზომის დამალვა + Hide Layer List შრეების სიის დამალვა + Hide Objects ობიექტების დამალვა + Hide Palettes პალიტრების დამალვა + History ისტორია + Home საწყისი პოზიცია + Horizontal ჰორიზონტალური + HorizontalDistance ჰორიზონტალური მანძილი + How to apply: გამოყენების წესი: + ID Point წერტილის კოორდინატები + Import იმპორტი + Align Multileaders მულტიმიმთითებლების სწორება + Collect შეგროვება + Collect Multileaders მულტიმიმთითებლების შეგროვება + Edit Multileader მულტიმიმთითებლის რედაქტირება + In გადიდება + In-window Menu Bar მენიუს ზოლი ფანჯარაში + Include in new selection set ახალ მონიშნულ ნაკრებში ჩართვა + Increment angle კუთხის ბიჯი + Index Color ინდექსური ფერი + Index color: {index} ინდექსური ფერი: {index} + Infer Constraints შეზღუდვების ავტომატური დადგენა + Inquiry ინფორმაცია + Insert ჩასმა + Insert Block ბლოკის ჩასმა + Insert Column სვეტის ჩასმა + Insert Row სტრიქონის ჩასმა + Insert tab ტაბულაციის ჩასმა + Insert this block ამ ბლოკის ჩასმა + Insert Table Formula ცხრილში ფორმულის ჩასმა + Insertion ჩასმის წერტილი + Insertion X ჩასმის წერტილი X + Insertion Y ჩასმის წერტილი Y + Insertion Z ჩასმის წერტილი Z + Inspect Constraints შეზღუდვების შემოწმება + Inspect Drawing ნახაზის შემოწმება + Inspection შემოწმება + Interface Language ინტერფეისის ენა + Interface Theme ინტერფეისის თემა + Intersect გადაკვეთა + Intersection გადაკვეთა + Isolate იზოლირება + Isolate Layer შრის იზოლირება + Isolate Objects ობიექტების იზოლირება + Isometric Drafting იზომეტრიული ხაზვა + Jogged გატეხილი + Jogged Linear გატეხილი წრფივი + Join შეერთება + Join the ArtCraft Discord… შემოუერთდით ArtCraft-ის Discord-ს… + Join us on Discord შემოგვიერთდით Discord-ზე + Isometric Plane იზომეტრიული სიბრტყე + Isometric snap იზომეტრიული მიბმა + Language ენა + Last ბოლო + Last commit ბოლო კომიტი + Layer შრე + Layer Delete შრის წაშლა + Layer Match შრის მისადაგება + Layer Merge შრეების შერწყმა + Layer Off შრის გამორთვა + Layer Properties შრის თვისებები + Layer Properties Manager შრის თვისებების მენეჯერი + Layer Properties Manager — current viewport შრის თვისებების მენეჯერი — მიმდინარე ხედვის არე + Layer State შრის მდგომარეობა + Layer States Manager... შრის მდგომარეობების მენეჯერი... + Layer Tools შრის ხელსაწყოები + Layer contains objects (double-click to make current) შრეში ობიექტებია (მიმდინარედ გასახდომად ორჯერ დაწკაპეთ) + Layer is empty (double-click to make current) შრე ცარიელია (მიმდინარედ გასახდომად ორჯერ დაწკაპეთ) + Layers შრეები + Layers Palette შრეების პალიტრა + Hide Palette პალიტრის დამალვა + Layers displayed: {shown} of {total}. Current layer: {layer} ნაჩვენები შრეები: {shown} / {total}. მიმდინარე შრე: {layer} + Layout განლაგება + Layout list განლაგებების სია + Leader მიმთითებელი + Leaders Only მხოლოდ მიმთითებლები + Left მარცხნივ + Length სიგრძე + Length X სიგრძე X + Length Y სიგრძე Y + Lengthen დაგრძელება + Light ღია + Line ხაზი + Line delta სტრიქონების სხვაობა + Linear წრფივი + Lines +/− სტრიქონები +/− + Lines added დამატებული სტრიქონები + Lines deleted წაშლილი სტრიქონები + Lines of Command History ბრძანებების ისტორიის სტრიქონები + Linetype ხაზის ტიპი + Linetype Scale ხაზის ტიპის მასშტაბი + Linetype scale ხაზის ტიპის მასშტაბი + Ltscale ხაზის ტიპის მასშტაბი + Linetype... ხაზის ტიპი... + Lineweight ხაზის სისქე + Lineweight... ხაზის სისქე... + List სია + List Blocks ბლოკების სია + List Dimension Styles ზომის სტილების სია + List Groups ჯგუფების სია + List Layer States შრის მდგომარეობების სია + List Layouts განლაგებების სია + List System Variables სისტემური ცვლადების სია + List Text Styles ტექსტის სტილების სია + Load all ყველას ჩატვირთვა + Load... ჩატვირთვა... + Load Application... აპლიკაციის ჩატვირთვა... + Loaded linetypes ჩატვირთული ხაზის ტიპები + Lock ჩაკეტვა + Lock Layer შრის ჩაკეტვა + Lock viewport ხედვის არის ჩაკეტვა + Lock/Unlock ჩაკეტვა/განბლოკვა + Loft კვეთებით აგება + MIT OR Apache-2.0. Not affiliated with Autodesk, Inc. MIT OR Apache-2.0. Autodesk, Inc.-თან კავშირი არ აქვს. + MODEL მოდელი + MText MText + Magenta მეწამული + Major line every მთავარი ხაზის ბიჯი + Make Current მიმდინარედ დაყენება + Make Object's Layer Current ობიექტის შრის მიმდინარედ დაყენება + Make... შექმნა... + Match Layer შრის მისადაგება + Match Properties თვისებების გადატანა + Measure გაზომვა + Measure Distance მანძილის გაზომვა + Measure Geometry გეომეტრიის გაზომვა + Merge Cells უჯრების შერწყმა + Merged PRs გაერთიანებული PR-ები + Mid Between 2 Points შუა 2 წერტილს შორის + Midpoint შუა წერტილი + Mirror არეკვლა + Model მოდელი + Model Space (in viewport) მოდელის სივრცე (ხედვის არეში) + Modeling მოდელირება + Models მოდელები + Modify შეცვლა + Move გადაადგილება + Move/Copy/Rotate გადაადგილება/კოპირება/შემობრუნება + Multileader მულტიმიმთითებელი + Multileader Style... მულტიმიმთითებლის სტილი... + Multileader style მულტიმიმთითებლის სტილი + Multiline მულტიხაზი + Multiline Text მრავალსტრიქონიანი ტექსტი + Multiline Text... მრავალსტრიქონიანი ტექსტი... + Multiple რამდენიმე + Multiple Point რამდენიმე წერტილი + My ჩემი + My properties: not available yet ჩემი თვისებები: ჯერ ხელმისაწვდომი არ არის + N ჩ + Name სახელი + Name (A–Z) სახელი (ა–ჰ) + Named Views... დასახელებული ხედები... + Nearest უახლოესი + New ახალი + New (metric) ახალი (მეტრული) + New Drawing ახალი ნახაზი + New Drawing (⌘N) ახალი ნახაზი (⌘N) + New Drawing... ახალი ნახაზი... + New Layer ახალი შრე + New Layout ახალი განლაგება + New VP Freeze გაყინვა ახალ ხედვის არეებში + New Viewports... ახალი ხედვის არეები... + New from Template... ახალი შაბლონიდან... + New layout ახალი განლაგება + New state name მდგომარეობის ახალი სახელი + Next Change შემდეგი ცვლილება + No არა + No blocks defined in this drawing. ამ ნახაზში ბლოკები არ არის განსაზღვრული. + No contributor data was built into this copy. ამ ასლში მონაწილეების მონაცემები არ არის ჩაშენებული. + No model credits were built into this copy. ამ ასლში მოდელების მონაცემები არ არის ჩაშენებული. + No saved layer states შრის შენახული მდგომარეობები არ არის + No selection მონიშნული არაფერია + Node კვანძი + None არცერთი + Not available მიუწვდომელია + Not available yet ჯერ ხელმისაწვდომი არ არის + Numbered list დანომრილი სია + OK OK + Object ობიექტი + Object Snap ობიექტზე მიბმა + Object Snap (F3) ობიექტზე მიბმა (F3) + Object Snap On (F3) ობიექტზე მიბმის ჩართვა (F3) + Object Snap Tracking მიბმის მიდევნება + Object Snap Tracking (F11) მიბმის მიდევნება (F11) + Object Snap Tracking Settings მიბმის მიდევნების პარამეტრები + Object type: ობიექტის ტიპი: + Oblique დახრა + Off გამორთული + Offset წანაცვლება + On ჩართული + On/Off ჩართვა/გამორთვა + One of the Crafting Apps by the ArtCraft team and community. ArtCraft-ის გუნდისა და საზოგადოების ერთ-ერთი Crafting App. + Only in this drawing: {n} მხოლოდ ამ ნახაზში: {n} + Only in {name}: {n} მხოლოდ ფაილში {name}: {n} + Open (⌘O) გახსნა (⌘O) + Open Sample Drawing სანიმუშო ნახაზის გახსნა + Open sample drawing სანიმუშო ნახაზის გახსნა + Open Xref გარე მიმართვის გახსნა + Open... გახსნა... + Open Recent ბოლოს გახსნილი ფაილების გახსნა + Clear Recent Files ბოლოს გახსნილი ფაილების სიის გასუფთავება + Operator: ოპერატორი: + Orbit ორბიტა + Ordinate კოორდინატული + Ortho (F8) ორთო (F8) + Ortho Mode ორთო რეჟიმი + Ortho Mode (F8) ორთო რეჟიმი (F8) + Osnap Settings... ობიექტზე მიბმის პარამეტრები... + Out დაპატარავება + Over-constrained ზედმეტად შეზღუდული + Override გადაფარვა + PAPER ფურცელი + Percent პროცენტი + Polar (distance < angle) პოლარული (მანძილი < კუთხე) + PRs PR-ები + Page Setup Manager გვერდის პარამეტრების მენეჯერი + Page Setup Manager... გვერდის პარამეტრების მენეჯერი... + Pan პანორამა + Pan Down პანორამა ქვემოთ + Pan Left პანორამა მარცხნივ + Pan Right პანორამა მარჯვნივ + Pan Up პანორამა ზემოთ + Paper Space ფურცლის სივრცე + Parallel პარალელური + Parameters Manager პარამეტრების მენეჯერი + Parametric პარამეტრული + Paste ჩასმა + Paste as Block ბლოკად ჩასმა + Paste to Command Line ბრძანების სტრიქონში ჩასმა + Paste to Original Coordinates საწყის კოორდინატებზე ჩასმა + Path Array ტრაექტორიული მასივი + Pattern ნიმუში + Perpendicular მართობი + Plot დაბეჭდვა + Plot (click: do not plot) იბეჭდება (დაწკაპეთ, რომ არ დაიბეჭდოს) + Plot Preview ნახვა ამობეჭდვამდე + Plot Window ბეჭდვის ფანჯარა + Plot style ბეჭდვის სტილი + Plot style attached to მიმაგრებული ბეჭდვის სტილი + Plot style table ბეჭდვის სტილების ცხრილი + Plot Style... ბეჭდვის სტილი... + Plot Style Manager ბეჭდვის სტილების მენეჯერი + Plot Style Manager... ბეჭდვის სტილების მენეჯერი... + Plot Styles... ბეჭდვის სტილები... + Plotter Manager პლოტერების მენეჯერი + Plotter Manager... პლოტერების მენეჯერი... + New CTB ახალი CTB + New STB ახალი STB + New style ახალი სტილი + Reset Panel Layout პანელების განლაგების ჩამოყრა + Send Hatches to Back დაშტრიხვების უკანა პლანზე გადატანა + Send Under Objects ობიექტების ქვეშ გადატანა + Text Objects Only მხოლოდ ტექსტური ობიექტები + Use for this layout ამ განლაგებისთვის გამოყენება + Display plot styles ბეჭდვის სტილების ჩვენება + No plot style tables. ბეჭდვის სტილების ცხრილები არ არის. + A built-in table: editing it keeps an edited copy in the drawing. ჩაშენებული ცხრილი: რედაქტირებისას შეცვლილი ასლი ნახაზში ინახება. + Keep an editable copy of this table in the drawing ამ ცხრილის რედაქტირებადი ასლის ნახაზში შენახვა + Layout {name}: {table} განლაგება {name}: {table} + Grayscale ნაცრისფერი ტონები + Screening ფერის ინტენსივობა + Use object linetype ობიექტის ხაზის ტიპის გამოყენება + Use object lineweight ობიექტის ხაზის სისქის გამოყენება + Remove წაშლა + Add დამატება + Open a drawing first. ჯერ გახსენით ნახაზი. + Plot table type ბეჭდვის ცხრილის ტიპი + Color-dependent ფერზე დამოკიდებული + Named დასახელებული + Plus/minus პლუს/მინუს + Point წერტილი + Point Filters წერტილის ფილტრები + Point Style... წერტილის სტილი... + Polar Array პოლარული მასივი + Polar Tracking პოლარული მიდევნება + Polar Tracking (F10) პოლარული მიდევნება (F10) + Polar Tracking On (F10) პოლარული მიდევნების ჩართვა (F10) + Polar angle measurement პოლარული კუთხის ათვლა + Polar distance პოლარული მანძილი + Polar: {distance} < {angle}° პოლარული: {distance} < {angle}° + PolarSnap პოლარული მიბმა + Polygon მრავალკუთხედი + Polygonal მრავალკუთხა + Polygonal Viewport მრავალკუთხა ხედვის არე + Polyline ტეხილი + Polyline Edit ტეხილის რედაქტირება + Position X პოზიცია X + Position Y პოზიცია Y + Position Z პოზიცია Z + Previous წინა + Previous Change წინა ცვლილება + Previous Layer წინა შრე + Primitives პრიმიტივები + Print დაბეჭდვა + Print... დაბეჭდვა... + Properties თვისებები + Properties Inspector თვისებების ინსპექტორი + Properties: თვისებები: + Proxy პროქსი + Purge გაწმენდა + Pyramid პირამიდა + Quadrant კვადრანტი + Query Entities ობიექტების მოთხოვნა + Quick სწრაფი + Quick Dimension სწრაფი ზომა + Quick Properties სწრაფი თვისებები + Quick Select სწრაფი მონიშვნა + Quick Select Properties სწრაფი მონიშვნის თვისებები + Quick Select... სწრაფი მონიშვნა... + QuickCalc სწრაფი კალკულატორი + QuickCalc Pick სწრაფი კალკულატორი: არჩევა + Quit CADCraft CADCraft-იდან გასვლა + Radius რადიუსი + Raster Image რასტრული გამოსახულება + Ray სხივი + Read-only მხოლოდ წასაკითხი + Real name ნამდვილი სახელი + Realtime რეალურ დროში + Reassociate Dimensions ზომების ხელახლა მიბმა + Recent ბოლოდროინდელი + Recent Commands ბოლოდროინდელი ბრძანებები + Recent Input ბოლოდროინდელი შეყვანა + Recover... აღდგენა... + Rectangle მართკუთხედი + Recalculate Table Formulas ცხრილის ფორმულების გადათვლა + Rectangular მართკუთხა + Rectangular snap მართკუთხა მიბმა + Rectangular Array მართკუთხა მასივი + Red წითელი + Redo ხელახლა შესრულება + Redo (⇧⌘Z) ხელახლა შესრულება (⇧⌘Z) + Redraw გადახატვა + Regen რეგენერაცია + Regen All ყველაფრის რეგენერაცია + Region რეგიონი + Region/Mass Properties რეგიონის/მასის თვისებები + Reinitialize ხელახლა ინიციალიზება + Relative ფარდობითი + Relative to last segment ბოლო სეგმენტის მიმართ + Remove Leader მიმთითებლის მოცილება + Remove the viewport override ხედვის არის ცალკე პარამეტრის მოცილება + Rename Dimension Style ზომის სტილის სახელის შეცვლა + Rename Layer შრის სახელის შეცვლა + Rename Layer State შრეების მდგომარეობის სახელის შეცვლა + Rename Layout განლაგების სახელის შეცვლა + Rename Text Style ტექსტის სტილის სახელის შეცვლა + Rename... სახელის შეცვლა... + Repeat {command} გამეორება: {command} + Requires a point (x,y, @dx,dy or @d მიუთითეთ მეორე წერტილი ან <პირველი წერტილი გამოიყენეთ წანაცვლებად> + Specify second source point მიუთითეთ მეორე საწყისი წერტილი + Specify side to offset მიუთითეთ წანაცვლების მხარე + Specify start angle მიუთითეთ საწყისი კუთხე + Specify start point მიუთითეთ საწყისი წერტილი + Specify start point of arc მიუთითეთ რკალის საწყისი წერტილი + Specify start point of polyline მიუთითეთ ტეხილის საწყისი წერტილი + Specify start point of text მიუთითეთ ტექსტის საწყისი წერტილი + Specify starting width მიუთითეთ საწყისი სიგანე + Specify starting width for next segment მიუთითეთ შემდეგი სეგმენტის საწყისი სიგანე + Specify tangent direction for the start point of arc მიუთითეთ მხების მიმართულება რკალის საწყის წერტილში + Specify the elevation for rectangles მიუთითეთ მართკუთხედების დონე + Specify thickness for rectangles მიუთითეთ მართკუთხედების სისქე + Specify third point on circle მიუთითეთ წრის მესამე წერტილი + Specify third point on circle: _tan to მიუთითეთ წრის მესამე წერტილი: _tan to + Specify third source point or მიუთითეთ მესამე საწყისი წერტილი ან <გაგრძელება> + Specify through point მიუთითეთ გავლის წერტილი + Specify top diameter მიუთითეთ ზედა დიამეტრი + Specify top radius or მიუთითეთ ზედა რადიუსი ან + Specify total angle მიუთითეთ სრული კუთხე + Specify total length or მიუთითეთ სრული სიგრძე ან + Specify width for rectangles მიუთითეთ მართკუთხედების სიგანე + Sphere სფერო + Spline სპლაინი + Spline Edit სპლაინის რედაქტირება + Stack (type 1/2 then select) წილადი (აკრიფეთ 1/2 და მონიშნეთ) + Standard სტანდარტული + Start დასაწყისი + Start Width საწყისი სიგანე + Start X საწყისი X + Start Y საწყისი Y + Start angle საწყისი კუთხე + Start, Center, Angle დასაწყისი, ცენტრი, კუთხე + Start, Center, End დასაწყისი, ცენტრი, ბოლო + Start, Center, Length დასაწყისი, ცენტრი, სიგრძე + Start, End, Angle დასაწყისი, ბოლო, კუთხე + Start, End, Direction დასაწყისი, ბოლო, მიმართულება + Start, End, Radius დასაწყისი, ბოლო, რადიუსი + Status სტატუსი + Status Bar სტატუსის ზოლი + Stretch გაწელვა + Style: Standard სტილი: Standard + Subtract გამოკლება + Sweep ტრაექტორიით აგება + Switch Drawing ნახაზის გადართვა + Switch Layout განლაგების გადართვა + Switch between model space in a viewport and paper space გადართვა ხედვის არეში მოდელის სივრცესა და ფურცლის სივრცეს შორის + Symmetric სიმეტრია + Synchronize Attributes ატრიბუტების სინქრონიზაცია + To სადამდე + Toggle PICKADD (off: each pick replaces the selection) PICKADD-ის გადართვა (გამორთული: ყოველი არჩევა ცვლის მონიშნულს) + Toggle PICKADD (on: picks add to the selection) PICKADD-ის გადართვა (ჩართული: არჩეული ემატება მონიშნულს) + TOP ზედა + Table ცხრილი + Table Breaks ცხრილის გაწყვეტა + Table Cell Style ცხრილის უჯრის სტილი + Table Style... ცხრილის სტილი... + Table style ცხრილის სტილი + Table... ცხრილი... + Tan, Tan, Radius მხები, მხები, რადიუსი + Tan, Tan, Tan მხები, მხები, მხები + Tangent მხები + Temporary track point დროებითი მიდევნების წერტილი + Text ტექსტი + Text Editor ტექსტის რედაქტორი + Text Height ტექსტის სიმაღლე + Text Style... ტექსტის სტილი... + Text height ტექსტის სიმაღლე + Text override ტექსტის ჩანაცვლება + Text style ტექსტის სტილი + Thaw All Layers ყველა შრის გალღობა + Thaw Layer შრის გალღობა + There is nothing here yet. აქ ჯერ არაფერია. + Thickness სისქე + Time დრო + To get started, create or open a drawing. დასაწყებად შექმენით ან გახსენით ნახაზი. + Tool Bar ხელსაწყოთა ზოლი + Tool Sets ხელსაწყოთა ნაკრებები + Tools ხელსაწყოები + Torus ტორი + Trace სქელი ხაზი + Track orthogonally only მიდევნება მხოლოდ ორთოგონალურად + Track using all polar angle settings მიდევნება პოლარული კუთხის ყველა პარამეტრით + Transparency გამჭვირვალობა + Trim მოკვეთა + True Color ნამდვილი ფერი + Turn All Layers On ყველა შრის ჩართვა + Turn Off Layer შრის გამორთვა + Turn On Layer შრის ჩართვა + Turn Quick Properties off (QPMODE) სწრაფი თვისებების გამორთვა (QPMODE) + Type ტიპი + Type a command აკრიფეთ ბრძანება + Type text; Enter starts a new paragraph აკრიფეთ ტექსტი; Enter იწყებს ახალ აბზაცს + UCS Icon UCS-ის ხატულა + Undo დაბრუნება + Undo (⌘Z) დაბრუნება (⌘Z) + Ungroup დაჯგუფების მოხსნა + Union გაერთიანება + Unisolate Layer შრის იზოლირების მოხსნა + Units Conversion ერთეულების გარდაქმნა + Units... ერთეულები... + Unlock Layer შრის განბლოკვა + Unlock viewport ხედვის არის განბლოკვა + Unmerge Cells უჯრების შერწყმის გაუქმება + Unsaved Layer State შრეების შეუნახავი მდგომარეობა + Up ზემოთ + Update Data Links მონაცემთა ბმულების განახლება + Update განახლება + Use System Setting სისტემის პარამეტრის გამოყენება + User მომხმარებელი + User Parameters მომხმარებლის პარამეტრები + Username მომხმარებლის სახელი + Volume მოცულობა + VP Color ხედვის არის ფერი + VP Freeze ხედვის არეში გაყინვა + Value მნიშვნელობა + Value: მნიშვნელობა: + Variables ცვლადები + Version ვერსია + Version 2000 ვერსია 2000 + Version 2004 ვერსია 2004 + Version 2007 ვერსია 2007 + Version 2010 ვერსია 2010 + Version 2013 ვერსია 2013 + Version 2018 ვერსია 2018 + Version {version} ვერსია {version} + Vertical ვერტიკალური + VerticalDistance ვერტიკალური მანძილი + View ხედი + ViewCube ViewCube + Viewport ხედვის არე + Viewport Layer Freeze შრის გაყინვა ხედვის არეში + Viewport Properties ხედვის არის თვისებები + Viewport is locked ხედვის არე ჩაკეტილია + Viewport scale ხედვის არის მასშტაბი + Viewport {id} ხედვის არე {id} + Viewports ხედვის არეები + W დ + WCS WCS + White თეთრი + Width factor სიგანის კოეფიციენტი + Window ფანჯარა + Wipeout დამფარავი არე + Workspace Switching სამუშაო სივრცის გადართვა + Write Block ბლოკის ჩაწერა + Xline დამხმარე ხაზი + Yellow ყვითელი + Yes დიახ + Zoom მასშტაბი + Zoom All მასშტაბი: ყველაფერი + Zoom Dynamic მასშტაბი: დინამიკური + Zoom Extents მასშტაბი: საზღვრები + Zoom In გადიდება + Zoom Object მასშტაბი: ობიექტი + Zoom Out დაპატარავება + Zoom Previous მასშტაბი: წინა + Zoom Realtime მასშტაბი: რეალურ დროში + Zoom Window მასშტაბი: ფანჯარა + error შეცდომა + {contributors} · {commits} {contributors} · {commits} + {kind} (constraint {id}) {kind} (შეზღუდვა {id}) + {kind} constraint {name} = {expression} (double-click to edit) {kind} შეზღუდვა {name} = {expression} (ორმაგი დაწკაპება — რედაქტირება) + {name}: {distance} < {angle}° {name}: {distance} < {angle}° + ƒx New User Parameter ƒx ახალი მომხმარებლის პარამეტრი + ΔLOC ΔLOC + −Bin −Bin + −LOC −LOC + ⌘↩ to finish ⌘↩ — დასრულება +@plural {n} commit {n} კომიტი +@plural {n} contributor {n} მონაწილე + Drawing as bytes ნახაზი ბაიტებად + Services სერვისები + Hide CADCraft CADCraft-ის დამალვა + Hide Others სხვების დამალვა + Accessibility ხელმისაწვდომობა + Show System Cursor სისტემური კურსორის ჩვენება + Animation Effects ანიმაციის ეფექტები + Animation effects ანიმაციის ეფექტები + Interface scale ინტერფეისის მასშტაბი + Import... იმპორტი... + Export... ექსპორტი... + Batch Publish... პაკეტური გამოქვეყნება... + Scale List... მასშტაბების სია... + Annotative Object Scale ანოტაციური ობიექტის მასშტაბი + Add Current Scale მიმდინარე მასშტაბის დამატება + Delete Current Scale მიმდინარე მასშტაბის წაშლა + Add/Delete Scales... მასშტაბების დამატება/წაშლა... + Synchronize Multiple-scale Positions მრავალმასშტაბიანი პოზიციების სინქრონიზაცია + Annotative Update ანოტაციურის განახლება + Show Annotative Objects ანოტაციური ობიექტების ჩვენება + Current Scale Only მხოლოდ მიმდინარე მასშტაბი + All Scales ყველა მასშტაბი + Drawing Recovery Manager... ნახაზების აღდგენის მენეჯერი... + Tolerance... დაშვება... + Add Vertex წვეროს დამატება + Remove Vertex წვეროს მოშორება + Convert to Arc რკალად გარდაქმნა + Convert to Line ხაზად გარდაქმნა + Stretch Vertex წვეროს გაწელვა + Edit Array მასივის რედაქტირება + Close Array Editing მასივის რედაქტირების დახურვა + Multiline... მულტიხაზი... + Multiline Style... მულტიხაზის სტილი... + Solid Editing სხეულის რედაქტირება + 3D Mouse... 3D მაუსი... + 3D Mouse 3D მაუსი + Calibrate 3D Mouse 3D მაუსის კალიბრაცია + 3D Mouse Navigation 3D მაუსით ნავიგაცია + 3D mouse input is unavailable on this platform 3D მაუსის შეყვანა ამ პლატფორმაზე მიუწვდომელია + No supported 3D mouse found მხარდაჭერილი 3D მაუსი ვერ მოიძებნა + Release the 3D mouse to calibrate its resting position გაუშვით 3D მაუსი ხელიდან, რომ მისი უძრავი მდგომარეობა დაკალიბრდეს + 3D mouse connected 3D მაუსი დაკავშირებულია + 3D mouse busy, possibly 3DxWare or missing device permissions 3D მაუსი დაკავებულია: შესაძლოა, 3DxWare-ის ან მოწყობილობის ნებართვების არქონის გამო + 3D mouse disconnected 3D მაუსი გათიშულია + 3D mouse input could not be started 3D მაუსის შეყვანა ვერ ჩაირთო + Enable 3D mouse navigation 3D მაუსით ნავიგაციის ჩართვა + Pan sensitivity პანორამის მგრძნობელობა + Zoom sensitivity მასშტაბის მგრძნობელობა + Reverse zoom direction მასშტაბის მიმართულების შებრუნება + Calibrate კალიბრაცია + Move sideways to pan; push/pull or twist to zoom. გვერდზე გაწევით — პანორამა; მიწევით/გამოწევით ან მობრუნებით — მასშტაბი. + Left device button: zoom extents. Right device button: calibrate. მოწყობილობის მარცხენა ღილაკი: მასშტაბი საზღვრებით. მარჯვენა ღილაკი: კალიბრაცია. + More toolbar commands ხელსაწყოთა ზოლის სხვა ბრძანებები + Default save version შენახვის ნაგულისხმევი ვერსია + Automatic save every ავტომატური შენახვა ყოველ + min წთ + Automatic save file location ავტომატური შენახვის ფაილის მდებარეობა + Drawings with no file yet are saved in the default version. 0 minutes turns automatic save off. ჯერ ფაილის არმქონე ნახაზები ნაგულისხმევ ვერსიაში ინახება. 0 წუთი ავტომატურ შენახვას გამორთავს. + Time-sensitive right-click: a quick click is Enter, holding opens the menu დროზე დამოკიდებული მარჯვენა დაწკაპება: მოკლე დაწკაპება Enter-ია, დაჭერით გაიხსნება მენიუ + Turned off, a right-click while a command runs always opens the shortcut menu. გამორთვისას ბრძანების შესრულების დროს მარჯვენა დაწკაპება ყოველთვის კონტექსტურ მენიუს ხსნის. + Hatch Pattern დაშტრიხვის ნიმუში + Search for pattern ნიმუშის ძიება + Run Script... სკრიპტის გაშვება... + Query Texts ტექსტების მოთხოვნა + Analyze Shapes ფიგურების ანალიზი + Hatch Pick დაშტრიხვის არჩევა + Hatch and Gradient დაშტრიხვა და გრადიენტი + Color 1 ფერი 1 + Color 2 ფერი 2 + Shape ფიგურა + Curved მრუდი + Spherical სფერული + Hemispherical ნახევარსფერული + Inverted შებრუნებული + Centered ცენტრში + Hatch origin დაშტრიხვის საწყისი წერტილი + Use current origin მიმდინარე საწყისი წერტილის გამოყენება + Specified origin მითითებული საწყისი წერტილი + Click to set new origin დაწკაპეთ ახალი საწყისი წერტილის დასაყენებლად + Default to boundary extents ნაგულისხმევად საზღვრის გაბარიტები + Bottom left ქვედა მარცხენა + Bottom right ქვედა მარჯვენა + Top left ზედა მარცხენა + Top right ზედა მარჯვენა + Boundaries საზღვრები + Add: Pick points დამატება: წერტილების არჩევა + Add: Select objects დამატება: ობიექტების მონიშვნა + Boundaries picked: {n} არჩეული საზღვრები: {n} + Select boundaries to remove მონიშნეთ მოსაშორებელი საზღვრები + Island კუნძული + Associative ასოციაციური + Create separate hatches ცალკეული დაშტრიხვების შექმნა + Island detection კუნძულების აღმოჩენა + Normal ჩვეულებრივი + Outer გარე + Ignore უგულებელყოფა + Origin: {x}, {y} საწყისი წერტილი: {x}, {y} + Sheet Books to PDF... ფურცლების წიგნები PDF-ში... + Not a number or distance: {text} არც რიცხვია და არც მანძილი: {text} + Dynamic Block Data დინამიკური ბლოკის მონაცემები + Custom მორგებული + Dynamic Block Reference დინამიკური ბლოკის ჩასმა + Set Dynamic Property დინამიკური თვისების დაყენება + Dynamic Block Grips დინამიკური ბლოკის სახელურები + Drag Dynamic Grip დინამიკური სახელურის გადათრევა + Save Block ბლოკის შენახვა + Save Block As ბლოკის შენახვა როგორც + Close Block Editor ბლოკის რედაქტორის დახურვა + Unsaved changes შეუნახავი ცვლილებები + Edit Block Definition ბლოკის განსაზღვრების რედაქტირება + Block to create or edit შესაქმნელი ან დასარედაქტირებელი ბლოკი + Open in Block Editor ბლოკის რედაქტორში გახსნა + This drawing ეს ნახაზი + contains authoring elements. Open in Block Editor? შეიცავს ბლოკის აგების ელემენტებს. გაიხსნას ბლოკის რედაქტორში? + New block ახალი ბლოკი + Italic დახრილი + Underline ხაზგასმული + Overline ზედა ხაზი + Justify ორმხრივი სწორება + Text color ტექსტის ფერი + Click the ruler to add a tab stop, right-click to remove one დაწკაპეთ სახაზავზე ტაბულაციის პოზიციის დასამატებლად, მარჯვენა დაწკაპებით — წასაშლელად + Select using two clicks only მონიშვნა მხოლოდ ორი დაწკაპებით + Define each corner of the selection window with a separate click. მონიშვნის ფანჯრის თითოეული კუთხე ცალკე დაწკაპებით განისაზღვრება. + Type an alias name. აკრიფეთ ფსევდონიმის სახელი. + Choose the command the alias starts. აირჩიეთ ბრძანება, რომელსაც ფსევდონიმი გაუშვებს. + {command} is an unknown command. {command} უცნობი ბრძანებაა. + {alias} is already defined; select it and use Edit. {alias} უკვე განსაზღვრულია; მონიშნეთ და გამოიყენეთ „რედაქტირება“. + More than {n} aliases. {n}-ზე მეტი ფსევდონიმი. + Alias file: {file} ფსევდონიმების ფაილი: {file} + No alias file loaded. REINIT replaces these aliases with a file's. ფსევდონიმების ფაილი არ არის ჩატვირთული. REINIT ამ ფსევდონიმებს ფაილიდან წაკითხულით ჩაანაცვლებს. + Alias ფსევდონიმი + Command ბრძანება + overrides built-in ჩაშენებულს ჩაანაცვლებს + built-in ჩაშენებული + Add… დამატება… + Edit… რედაქტირება… + Save alias ფსევდონიმის შენახვა + Discard მოშორება + Customize მორგება + Edit Command Aliases (PGP)... ბრძანებების ფსევდონიმების რედაქტირება (PGP)... + B B + CADCraft CADCraft + X X + Y Y +menu Dimension ზომების დატანა +menu Draw ხაზვა +menu Modify შეცვლა +menu View ხედი + Arrow size ისრის ზომა + Dim scale overall ზომის საერთო მასშტაბი + Precision სიზუსტე + Layouts განლაგებები + Printer/plotter პრინტერი/პლოტერი + Paper size ფურცლის ზომა + Orientation ორიენტაცია + Portrait ვერტიკალური + Landscape ჰორიზონტალური + Plot area ბეჭდვის არე + Fit to paper ფურცელში ჩატევა + Center the plot ნაბეჭდის ცენტრირება + Plot object lineweights ობიექტების ხაზის სისქეების ბეჭდვა + Plot transparency გამჭვირვალობის ბეჭდვა + Apply to Layout განლაგებაზე გამოყენება + Enter name of LISP file to load შეიყვანეთ ჩასატვირთი LISP ფაილის სახელი + Enter geometric characteristic შეიყვანეთ გეომეტრიული მახასიათებელი + Enter block names to extract შეიყვანეთ ამოსაღები ბლოკების სახელები + Limits ზღვრები + Plot offset ბეჭდვის წანაცვლება + X offset (mm) X წანაცვლება (მმ) + Y offset (mm) Y წანაცვლება (მმ) + First corner პირველი კუთხე + Opposite corner საპირისპირო კუთხე + Window < ფანჯარა < diff --git a/crates/ui-egui/src/i18n/mod.rs b/crates/ui-egui/src/i18n/mod.rs index a0bf590db..673ed2151 100644 --- a/crates/ui-egui/src/i18n/mod.rs +++ b/crates/ui-egui/src/i18n/mod.rs @@ -45,10 +45,12 @@ pub enum Preference { Hungarian, #[serde(rename = "tr")] Turkish, + #[serde(rename = "ka")] + Georgian, } impl Preference { - pub const ALL: [Self; 17] = [ + pub const ALL: [Self; 18] = [ Self::Auto, Self::English, Self::Greek, @@ -66,6 +68,7 @@ impl Preference { Self::Arabic, Self::Hungarian, Self::Turkish, + Self::Georgian, ]; /// The codes a preference can be given as, for messages ("auto, en or uk"). @@ -96,6 +99,7 @@ impl Preference { Self::Arabic => "ar", Self::Hungarian => "hu", Self::Turkish => "tr", + Self::Georgian => "ka", } } @@ -124,6 +128,15 @@ impl Preference { Self::Arabic => "العربية", Self::Hungarian => "Magyar", Self::Turkish => "Türkçe", + // Georgian letters come from the craft-fonts Georgian face; a build without it shows + // the English name (as Korean does) and keeps the interface in English. + Self::Georgian => { + if crate::theme::can_show("ka") { + "ქართული" + } else { + "Georgian" + } + } } } @@ -154,6 +167,7 @@ impl Preference { Self::Arabic => "ar", Self::Hungarian => "hu", Self::Turkish => "tr", + Self::Georgian => "ka", Self::Auto => locales.iter().find_map(|s| locale_language(s)).unwrap_or("en"), } } @@ -170,7 +184,7 @@ pub struct Language { catalog: OnceLock>, } -pub static LANGUAGES: [Language; 16] = [ +pub static LANGUAGES: [Language; 17] = [ Language { code: "en", name: "English", source: "", plural: plural_en, plural_forms: 2, catalog: OnceLock::new() }, // Greek: one for exactly 1; other for zero and all other integer counts. Language { code: "el", name: "Ελληνικά", source: include_str!("el.tsv"), plural: plural_en, plural_forms: 2, catalog: OnceLock::new() }, @@ -211,6 +225,11 @@ pub static LANGUAGES: [Language; 16] = [ Language { code: "hu", name: "Magyar", source: include_str!("hu.tsv"), plural: plural_ko, plural_forms: 1, catalog: OnceLock::new() }, // Turkish keeps a noun singular after a number ("3 commit"), so like Korean it has one form. Language { code: "tr", name: "Türkçe", source: include_str!("tr.tsv"), plural: plural_ko, plural_forms: 1, catalog: OnceLock::new() }, + // Georgian keeps a noun singular after a numeral ("5 კომიტი"), so one form, the Korean rule. + // Its letters come from the craft-fonts `Geor` face (`theme::can_show`). + Language { + code: "ka", name: "ქართული", source: include_str!("ka.tsv"), plural: plural_ko, plural_forms: 1, catalog: OnceLock::new() + }, ]; /// BCP 47 and POSIX locale tags, including `uk-UA`, `uk_UA.UTF-8` and `pt_BR.UTF-8`. diff --git a/crates/ui-egui/src/i18n/tests.rs b/crates/ui-egui/src/i18n/tests.rs index bbbcded39..052cae5fb 100644 --- a/crates/ui-egui/src/i18n/tests.rs +++ b/crates/ui-egui/src/i18n/tests.rs @@ -39,7 +39,7 @@ fn catalog_is_valid_and_preserves_placeholders_and_ellipses() { /// to English for what they don't cover yet; their gaps are reported, not enforced, so adding a /// command doesn't require a row in every language. const REQUIRED: &[&str] = &["uk"]; -const REPORTED: &[&str] = &["pt-BR", "de", "es", "cs", "ru", "fr", "zh", "it", "ko", "sv", "ar", "hu", "tr", "el"]; +const REPORTED: &[&str] = &["pt-BR", "de", "es", "cs", "ru", "fr", "zh", "it", "ko", "sv", "ar", "hu", "tr", "el", "ka"]; fn check(language: &str, what: &str, missing: Vec) { if REQUIRED.contains(&language) { @@ -1172,3 +1172,112 @@ fn default_fonts_cover_all_greek_letters_in_the_catalog() { } }); } + +#[test] +fn georgian_locales_preferences_and_single_count_form() { + for tag in ["ka", "ka-GE", "ka_GE", "ka_GE.UTF-8", "KA-ge", " ka-GE "] { + assert_eq!(locale_language(tag), Some("ka"), "{tag}"); + } + // `kat`/`geo` are the three-letter codes and `kab` is Kabyle; none picks Georgian. + for tag in ["kat", "geo", "kab", "kartuli"] { + assert_eq!(locale_language(tag), None, "{tag}"); + } + assert_eq!(Preference::parse("ka"), Some(Preference::Georgian)); + assert_eq!(Preference::Georgian.code(), "ka"); + assert_eq!(Preference::Georgian.name(), if crate::theme::can_show("ka") { "ქართული" } else { "Georgian" }); + assert_eq!(Preference::Georgian.resolve(&["en-US".into()]), "ka"); + assert_eq!(Preference::Auto.resolve(&["pl-PL".into(), "ka-GE".into(), "en-US".into()]), "ka"); + let saved = serde_json::to_string(&Preference::Georgian).unwrap(); + assert_eq!(saved, "\"ka\""); + let mut app = CadApp::new(Session::new(), Services::default()); + app.ui.interface_language = Preference::Georgian; + let mut restored = CadApp::new(Session::new(), Services::default()); + restored.load_prefs(&app.prefs_json()); + assert_eq!(restored.ui.interface_language, Preference::Georgian); + with_language("ka", || { + // A Georgian noun stays singular after a numeral, 1 included. + for n in [0, 1, 2, 5, 21, u64::MAX] { + assert_eq!(count(n, "{n} contributor", "{n} contributors"), format!("{n} მონაწილე")); + assert_eq!(count(n, "{n} commit", "{n} commits"), format!("{n} კომიტი")); + } + assert_eq!(t("Open"), "გახსნა"); + assert_eq!(menu("Dimension"), "ზომების დატანა"); + assert_eq!(t("Dimension"), "ზომა"); + assert_eq!(menu("Draw"), "ხაზვა"); + assert_eq!(menu("File"), "ფაილი"); + }); + assert_eq!(t("Open"), "Open", "language must not leak outside a render scope"); +} + +#[test] +fn georgian_catalog_covers_marked_ui_literals_without_mtavruli() { + assert!(missing_marked_ui_literals("ka").is_empty(), "{:?}", missing_marked_ui_literals("ka")); + assert!(missing_commands_menus_tools_and_snap_labels("ka").is_empty(), "{:?}", missing_commands_menus_tools_and_snap_labels("ka")); + // Mtavruli (U+1C90–U+1CBF) is a display style, not upper-case Georgian: never in the catalog. + let mtavruli: Vec = include_str!("ka.tsv").chars().filter(|c| ('\u{1c90}'..='\u{1cbf}').contains(c)).collect(); + assert!(mtavruli.is_empty(), "{mtavruli:?}"); +} + +#[test] +fn georgian_live_switch_keeps_drawing_and_falls_back_without_font() { + let mut app = CadApp::new(Session::new(), Services::default()); + app.ui.in_window_menu = true; + app.session.state_mut().unwrap().title = "Open".into(); + let ctx = egui::Context::default(); + app.logic(&ctx); + assert!(render(&mut app, &ctx).contains("Properties")); + app.start("line"); + let prompt = crate::control::cmdline_state(&app); + let commands = crate::control::all_commands(&app); + let result = app.run("ui.language", json!({"lang": "ka"})).unwrap(); + let supported = crate::theme::can_show("ka"); + assert_eq!(result["shown"], if supported { "ka" } else { "en" }); + assert_eq!(app.ui.interface_language, Preference::Georgian); + app.logic(&ctx); + assert_eq!(app.fonts_language, Some(app.language())); + let text = render(&mut app, &ctx); + if supported { + for label in ["თვისებები", "ფაილი", "ხედი", "ხაზვა", "ზომების დატანა", "მიუთითეთ პირველი წერტილი"] + { + assert!(text.contains(label), "missing {label}: {text}"); + } + } else { + assert!(text.contains("Properties")); + } + assert_eq!(app.session.state().unwrap().title, "Open"); + assert_eq!(crate::control::cmdline_state(&app), prompt); + assert_eq!(crate::control::all_commands(&app), commands); + app.run("ui.language", json!({"lang": "en"})).unwrap(); + app.logic(&ctx); + assert!(render(&mut app, &ctx).contains("Properties")); +} + +#[test] +fn georgian_dialogs_render_with_stable_ids() { + if !crate::theme::can_show("ka") { + return; // The fallback path is covered above; do not claim glyph rendering here. + } + for (dialog, source) in [ + ("dsettings", "Drafting Settings"), + ("about", "About CADCraft"), + ("commands", "Command Reference"), + ("blocks", "Blocks"), + ("layers", "Layer Properties Manager"), + ("qselect", "Quick Select"), + ("parameters", "Parameters Manager"), + ("language", "Interface Language"), + ("options:preferences", "User Preferences"), + ] { + let mut app = CadApp::new(Session::new(), Services::default()); + app.ui.interface_language = Preference::Georgian; + app.ui.dialog = Some(dialog.into()); + let ctx = egui::Context::default(); + app.logic(&ctx); + let text = render(&mut app, &ctx); + assert!(text.contains(tr("ka", source)), "{dialog}: {text}"); + if dialog == "language" { + assert!(text.contains("ქართული"), "{dialog}: {text}"); + } + assert_eq!(app.ui.dialog.as_deref(), Some(dialog)); + } +} diff --git a/crates/ui-egui/src/options/mod.rs b/crates/ui-egui/src/options/mod.rs index d2f805aa6..a3fbd37fc 100644 --- a/crates/ui-egui/src/options/mod.rs +++ b/crates/ui-egui/src/options/mod.rs @@ -10,7 +10,7 @@ //! |---|---| //! | `theme` | `"system"`, `"light"` or `"dark"` | //! | `animations` | `"system"`, `"on"` or `"off"`: dialog and menu fades and smoothed scrolling | -//! | `interfaceLanguage` | `"auto"`, `"en"`, `"uk"`, `"pt-BR"`, `"de"`, `"es"`, `"cs"`, `"ru"`, `"fr"`, `"zh"`, `"it"`, `"ko"`, `"sv"`, `"ar"`, `"hu"`, `"tr"` or `"el"` | +//! | `interfaceLanguage` | `"auto"`, `"en"`, `"uk"`, `"pt-BR"`, `"de"`, `"es"`, `"cs"`, `"ru"`, `"fr"`, `"zh"`, `"it"`, `"ko"`, `"sv"`, `"ar"`, `"hu"`, `"tr"`, `"el"` or `"ka"` | //! | `saveFormat` | `"dxf"` or `"dwg"`: the format Save As suggests for new drawings | //! | `saveVersion` | `"2000"` … `"2018"`: the version drawings with no file yet are saved in | //! | `SAVETIME` | minutes between automatic saves, 0–600 (0: off) | diff --git a/docs/localization-parity.md b/docs/localization-parity.md index 3dbd01e22..a4ededd9b 100644 --- a/docs/localization-parity.md +++ b/docs/localization-parity.md @@ -70,9 +70,10 @@ plus native review by a human; extending the catalog to the remaining English-on | Swedish | sv | 1,330 catalog rows; reference catalog, marked UI literals and menu headings covered (no gaps reported) | dialogs and tooltips yes; contextual menu headings; command reference searchable in Swedish | Latin: yes (bundled egui proportional and monospace fonts; å ä ö é and Swedish quotes tested) | AI-assisted (Claude Code) by @holmbom; terminology and the running app reviewed by a native speaker | complete current catalog; English-only interface gaps remain | line-by-line proofreading + shared English-only UI work | | Italian | it | 1,227 catalog rows; reference catalog and marked UI literals covered | dialogs and tooltips yes; contextual menu headings (Visualizza / Vista, Edita / Modifica); command reference searchable in Italian | Latin: yes (bundled egui fonts; accented letters tested) | AI-assisted by Emanuele Bottelli (Claude), written from the English strings with Italian desktop-CAD vocabulary; no native proofreading pass yet | complete current catalog; English-only interface gaps remain | native review + shared English-only UI work | | Hungarian | hu | 1,326 catalog rows; reference catalog, marked UI literals and menu headings covered (no gaps reported) | dialogs and tooltips yes; contextual menu headings; command reference searchable in Hungarian | Latin: yes (bundled egui proportional and monospace fonts; ő ű Ő Ű and the other accented letters tested) | translated by @Skaywalker from the English strings; independent native proofreading pending | complete current catalog; English-only interface gaps remain | native proofreading + shared English-only UI work | +| Georgian | ka | 1,383 catalog rows (1,377 ordinary, 4 menu, 2 count); the existing catalog union, marked UI literals and menu headings covered (no gaps reported) | dialogs and tooltips yes; contextual menu headings (ზომების დატანა / ზომა); command reference searchable in Georgian | Georgian (Mkhedruli): the craft-fonts Noto Sans Georgian (`Geor`) face, embedded in release and web builds; English fallback without it; Mtavruli never used (tested) | AI-assisted (Claude), written from the English strings with Georgian technical-drawing vocabulary; native proofreading pending | complete current catalog; English-only interface gaps remain | native proofreading + shared English-only UI work | | Turkish | tr | 1,330 catalog rows; reference catalog, marked UI literals and menu headings covered (no gaps reported) | dialogs and tooltips yes; contextual menu headings (Ölçülendirme / Ölçü); command reference searchable in Turkish | Latin: yes (bundled egui proportional and monospace fonts; Ç Ğ İ Ö Ş Ü ç ğ ı ö ş ü tested) | AI-assisted by @ogzhnklvz, written from the English strings with Turkish desktop-CAD vocabulary; the running app reviewed by a native speaker | complete current catalog; English-only interface gaps remain | line-by-line proofreading + shared English-only UI work | -Other languages shipped: Ukrainian, Brazilian Portuguese, German, Czech, Russian, French, Italian, Korean, Swedish, Hungarian and Turkish. +Other languages shipped: Ukrainian, Brazilian Portuguese, German, Czech, Russian, French, Italian, Korean, Swedish, Hungarian, Turkish, Greek and Georgian. Czech, Swedish, Hungarian and Brazilian Portuguese cover the reference catalog and every marked UI literal; engine diagnostics and uncatalogued text remain English. AutoCAD for Mac ships 7 non-English languages (zh-Hans, es, fr, ja, de, ko, it); of those, CADCraft now ships German and Korean, @@ -86,6 +87,7 @@ each language, which needs humans. Translations parallelise fully once the catal | Date | Change | Summary | |---|---|---| +| 2026-10-23 | minor | Georgian (`ka`) added: 1,383 rows (the existing catalog union), single count form, four menu headings, prompt keywords kept in English; the craft-fonts `Geor` face in release and web builds (pin a71c20e3); locale/preferences/menu/live-switch/dialog/font/no-Mtavruli tests; native proofreading pending | | 2026-10-15 | minor | Greek (`el`) catalog: 1,330 rows, context/plural/locale/font tests; review pending | | 2026-10-14 | minor | Swedish completed: 95 rows for strings added since (Hatch and Gradient dialog, Block Editor, REFEDIT, multileader editing, Options selection settings, MTEXT editor, recent files); 1,330 rows, every key of the Ukrainian reference catalog | | 2026-10-18 | minor | Turkish added: 1,330 rows (the existing catalog union), single count form, four menu headings, prompt keywords kept in English; locale/preferences/menu/live-switch/dialog/font tests; no gaps in the marked UI literals; AI-assisted, the running app reviewed by a native speaker | diff --git a/docs/localization.md b/docs/localization.md index d3c6cc4e1..03af02bfb 100644 --- a/docs/localization.md +++ b/docs/localization.md @@ -1,7 +1,7 @@ # Interface languages Choose **Edit → Interface Language** and select **Auto (system language)**, **English**, -**Українська**, **Português (Brasil)**, **Deutsch**, **Español**, **Čeština** (Czech), **Русский**, **Français**, **简体中文**, **Italiano**, **한국어** (Korean), **Svenska** (Swedish), **العربية** (Arabic), **Magyar** (Hungarian), **Türkçe** (Turkish), or **Ελληνικά** (Greek). +**Українська**, **Português (Brasil)**, **Deutsch**, **Español**, **Čeština** (Czech), **Русский**, **Français**, **简体中文**, **Italiano**, **한국어** (Korean), **Svenska** (Swedish), **العربية** (Arabic), **Magyar** (Hungarian), **Türkçe** (Turkish), **Ελληνικά** (Greek), or **ქართული** (Georgian). The interface updates without restarting, including the native macOS menus. The choice is saved with the other interface preferences (`cadcraft.prefs`, beside the theme): eframe storage on the desktop, browser local storage on the web. Installations without a saved @@ -11,7 +11,7 @@ Auto uses the first supported language in the operating system's preferred local browser's `navigator.languages` on the web. BCP 47 and POSIX tags select their primary language: `uk-UA` → `uk`, `de_AT.UTF-8` → `de`, `es-MX` → `es`, `pt_BR.UTF-8` → `pt-BR`, `cs-CZ` and `cs_CZ.UTF-8` → `cs`, `it-IT` and `it_CH.UTF-8` → `it`, `ko-KR` and `ko_KR.UTF-8` → `ko`, -`sv-SE`, `sv-FI` and `sv_SE.UTF-8` → `sv`, `hu-HU` and `hu_HU.UTF-8` → `hu`, `tr-TR` and `tr_TR.UTF-8` → `tr`. Unsupported languages fall back to English. +`sv-SE`, `sv-FI` and `sv_SE.UTF-8` → `sv`, `hu-HU` and `hu_HU.UTF-8` → `hu`, `tr-TR` and `tr_TR.UTF-8` → `tr`, `ka-GE` and `ka_GE.UTF-8` → `ka`. Unsupported languages fall back to English. Set `CADCRAFT_LOCALE=cs-CZ` to override the desktop's locale for a launch. An explicit saved language choice takes precedence over that override. @@ -22,7 +22,7 @@ Automation can select the language through the existing control channel: ``` The `ui.set` method also accepts `{"interfaceLanguage":"cs"}`. Supported values are `auto`, -`en`, `uk`, `pt-BR`, `de`, `es`, `cs`, `ru`, `fr`, `zh`, `it`, `ko`, `sv`, `ar`, `hu`, `tr`, and `el`; invalid values are rejected without changing the current +`en`, `uk`, `pt-BR`, `de`, `es`, `cs`, `ru`, `fr`, `zh`, `it`, `ko`, `sv`, `ar`, `hu`, `tr`, `el`, and `ka`; invalid values are rejected without changing the current selection. Resetting palettes keeps the language choice. ## Translation coverage @@ -115,6 +115,20 @@ original AI-assisted work contributed by @Camthalion77 with language review; it from Autodesk localization files. Independent native proofreading and visual checks remain follow-up work. +## Georgian (`ka`) interface + +Georgian has **1,383 rows**: 1,377 ordinary labels, four contextual menu headings (**ზომების +დატანა** for the Dimension menu, **ზომა** for the object; **ხაზვა** for Draw) and two single-form +count templates, since a Georgian noun stays singular after a numeral ("5 კომიტი"). It covers the +union of the existing catalogs, and no marked UI literal falls back to English. Commands are verbal +nouns (**შენახვა**, **შემობრუნება**); prompts read "მიუთითეთ …" for Specify, "შეიყვანეთ …" for +Enter and "მონიშნეთ …" for Select, and clickable keywords keep the spelling the engine accepts. +Georgian has no letter case, so nothing is capitalised, and Mtavruli (a display style, not upper +case) never appears; a test checks that. The translation is original, AI-assisted work written from +the English strings with Georgian technical-drawing vocabulary (შრე, დაშტრიხვა, მომრგვალება, ფასკა, +წანაცვლება, ობიექტზე მიბმა, ხედვის არე); no other product's localization was consulted. Native +proofreading of the running app is still to do. + ## Adding translations The implementation follows the display-time catalog pattern used by