Merge pull request #2609 from dotCooCoo/fix/history-labels-translated

i18n: the History panel translates the undo step names the sources write as literals
This commit is contained in:
BFlat
2026-10-17 17:41:28 +07:00
committed by GitHub
25 changed files with 2012 additions and 4 deletions
+70
View File
@@ -1318,6 +1318,76 @@
History История
History Options… Опции за историята…
History States Състояния на историята
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Прилагане на набор от данни
Cancel Pattern Editing Отказ от редактирането на мостра
Copy Appearance Копиране на външния вид
Copy Guide Копиране на водач
Copy in Perspective Копиране в перспектива
Create Slice from Selection Създаване на отрязък от селекцията
Create Slices from Guides Създаване на отрязъци от водачи
Delete All Slices Изтриване на всички отрязъци
Delete Data Sets Изтриване на набори от данни
Delete Graphic Styles Изтриване на графични стилове
Delete Guide Изтриване на водач
Delete Guides Изтриване на водачи
Delete Slice Изтриване на отрязък
Delete Style Изтриване на стил
Delete Variables Изтриване на променливи
Delete View Изтриване на изглед
Done Editing Pattern Край на редактирането на мостра
Duplicate Rows Дублиране на редове
Edit Perspective Grid Редактиране на перспективна мрежа
Expand Blend Разширяване на преливането
Expand Envelope Разширяване на обвивката
Expand Image Trace Разширяване на трасирането на изображение
Expand Live Paint Разширяване на динамичното оцветяване
Live Shape Динамична фигура
Make Blend Създаване на преливане
Make Dynamic Превръщане в динамично
Make Intertwine Създаване на преплитане
Make Live Paint Създаване на динамично оцветяване
Make Pattern Създаване на мостра
Make Slice Създаване на отрязък
Merge Live Paint Сливане на динамично оцветяване
Mesh Point Color Цвят на точка от мрежата
Move Envelope Point Преместване на точка от обвивката
Move Plane and Copy Objects Преместване на равнината и копиране на обектите
Move Plane and Objects Преместване на равнината и обектите
Move Slice Преместване на отрязък
Move Type on a Path Преместване на текст по пътя
New Guide Нов водач
Place from Library Вмъкване от библиотека
Rearrange Artboards Пренареждане на работните области
Release Blend Освобождаване на преливане
Release Envelope Освобождаване на обвивка
Release Intertwine Освобождаване на преплитане
Release Live Paint Освобождаване на динамично оцветяване
Release Repeat Освобождаване на повторение
Release Slice Освобождаване на отрязък
Release Threaded Text Освобождаване на свързан текст
Rename Design Преименуване на дизайн
Rename Style Преименуване на стил
Rename View Преименуване на изглед
Reorder Appearance Пренареждане на външния вид
Reorder Artboards Промяна на реда на работните области
Reshape Spine Промяна на формата на оста
Resize Artboard Преоразмеряване на работна област
Resize Slice Преоразмеряване на отрязък
Resize Type Area Преоразмеряване на текстова област
Scale in Perspective Мащабиране в перспектива
Shape Builder Delete Създател на фигури (изтриване)
Sort Swatches Сортиране на образци
Symbol Screener Филтър на символи
Symbol Scruncher Свиване на символи
Symbol Shifter Преместване на символи
Symbol Sizer Мащабиране на символи
Symbol Spinner Завъртане на символи
Symbol Stainer Оцветяване на символи
Symbol Styler Стил на символи
Text Orientation Ориентация на текста
Thread Text Свързване на текст
Typing Въвеждане на текст
Hollow Кух
Home Начало
Horizon Height: Височина на хоризонта:
Can't render this file because it contains an unexpected character in line 2 and column 73.
+70
View File
@@ -1512,6 +1512,76 @@ lighting Light Světlo
{percent}% opacity krytí {percent} %
History Options… Možnosti historie…
Open a document to see its history. Otevřete dokument, abyste viděli jeho historii.
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Použít sadu dat
Cancel Pattern Editing Zrušit úpravy vzorku
Copy Appearance Kopírovat vzhled
Copy Guide Kopírovat vodítko
Copy in Perspective Kopírovat v perspektivě
Create Slice from Selection Vytvořit řez z výběru
Create Slices from Guides Vytvořit řezy z vodítek
Delete All Slices Odstranit všechny řezy
Delete Data Sets Odstranit sady dat
Delete Graphic Styles Odstranit grafické styly
Delete Guide Odstranit vodítko
Delete Guides Odstranit vodítka
Delete Slice Odstranit řez
Delete Style Odstranit styl
Delete Variables Odstranit proměnné
Delete View Odstranit zobrazení
Done Editing Pattern Dokončit úpravy vzorku
Duplicate Rows Duplikovat řádky
Edit Perspective Grid Upravit perspektivní mřížku
Expand Blend Rozložit prolnutí
Expand Envelope Rozložit obálku
Expand Image Trace Rozložit vektorizaci obrazu
Expand Live Paint Rozložit živou malbu
Live Shape Živý tvar
Make Blend Vytvořit prolnutí
Make Dynamic Nastavit jako dynamické
Make Intertwine Vytvořit propletení
Make Live Paint Vytvořit živou malbu
Make Pattern Vytvořit vzorek
Make Slice Vytvořit řez
Merge Live Paint Sloučit živou malbu
Mesh Point Color Barva bodu sítě
Move Envelope Point Přesunout bod obálky
Move Plane and Copy Objects Posunout rovinu a kopírovat objekty
Move Plane and Objects Posunout rovinu a objekty
Move Slice Přesunout řez
Move Type on a Path Přesunout text na cestě
New Guide Nové vodítko
Place from Library Umístit z knihovny
Rearrange Artboards Přeuspořádat pracovní plochy
Release Blend Uvolnit prolnutí
Release Envelope Uvolnit obálku
Release Intertwine Uvolnit propletení
Release Live Paint Uvolnit živou malbu
Release Repeat Uvolnit opakování
Release Slice Uvolnit řez
Release Threaded Text Uvolnit zřetězený text
Rename Design Přejmenovat návrh
Rename Style Přejmenovat styl
Rename View Přejmenovat zobrazení
Reorder Appearance Změnit pořadí vzhledu
Reorder Artboards Změnit pořadí pracovních ploch
Reshape Spine Přetvarovat páteř
Resize Artboard Změnit velikost pracovní plochy
Resize Slice Změnit velikost řezu
Resize Type Area Změnit velikost oblasti textu
Scale in Perspective Změnit měřítko v perspektivě
Shape Builder Delete Tvorba tvarů (odstranění)
Sort Swatches Seřadit vzorník
Symbol Screener Průhlednost symbolů
Symbol Scruncher Zhuštění symbolů
Symbol Shifter Posun symbolů
Symbol Sizer Velikost symbolů
Symbol Spinner Otáčení symbolů
Symbol Stainer Obarvení symbolů
Symbol Styler Stylování symbolů
Text Orientation Orientace textu
Thread Text Zřetězit text
Typing Psaní
Abutting Sousedící
Black and White Černobílé
Corners Rohy
Can't render this file because it contains an unexpected character in line 2 and column 73.
+69
View File
@@ -5080,3 +5080,72 @@ swatch Bright Violet Kraftig violet
Cutout Udklip
Neon Glow Neonglød
Poster Edges Plakatkanter
Apply Data Set Anvend datasæt
Cancel Pattern Editing Annullér redigering af mønster
Copy Appearance Kopiér udseende
Copy Guide Kopiér hjælpelinje
Copy in Perspective Kopiér i perspektiv
Create Slice from Selection Opret udsnit fra markering
Create Slices from Guides Opret udsnit fra hjælpelinjer
Delete All Slices Slet alle udsnit
Delete Data Sets Slet datasæt
Delete Graphic Styles Slet grafiske stile
Delete Guide Slet hjælpelinje
Delete Guides Slet hjælpelinjer
Delete Slice Slet udsnit
Delete Style Slet typografi
Delete Variables Slet variabler
Delete View Slet visning
Done Editing Pattern Redigering af mønster udført
Duplicate Rows Duplikér rækker
Edit Perspective Grid Redigér perspektivgitter
Expand Blend Udvid blanding
Expand Envelope Udvid konvolut
Expand Image Trace Udvid billedsporing
Expand Live Paint Udvid live-maling
Live Shape Live-figur
Make Blend Opret blanding
Make Dynamic Gør dynamisk
Make Intertwine Opret sammenfletning
Make Live Paint Opret live-maling
Make Pattern Opret mønster
Make Slice Opret udsnit
Merge Live Paint Flet live-maling
Mesh Point Color Farve på maskepunkt
Move Envelope Point Flyt konvolutpunkt
Move Plane and Copy Objects Flyt plan og kopiér objekter
Move Plane and Objects Flyt plan og objekter
Move Slice Flyt udsnit
Move Type on a Path Flyt tekst på kurve
New Guide Ny hjælpelinje
Place from Library Placér fra bibliotek
Rearrange Artboards Omarrangér tegneflader
Release Blend Frigør blanding
Release Envelope Frigør konvolut
Release Intertwine Frigør sammenfletning
Release Live Paint Frigør live-maling
Release Repeat Frigør gentagelse
Release Slice Frigør udsnit
Release Threaded Text Frigør sammenkædet tekst
Rename Design Omdøb design
Rename Style Omdøb typografi
Rename View Omdøb visning
Reorder Appearance Omarrangér udseende
Reorder Artboards Omarrangér tegneflader
Reshape Spine Omform rygrad
Resize Artboard Tilpas størrelse på tegneflade
Resize Slice Tilpas størrelse på udsnit
Resize Type Area Tilpas størrelse på tekstområde
Scale in Perspective Skalér i perspektiv
Shape Builder Delete Sletning med Formbygger
Sort Swatches Sortér farveprøver
Symbol Screener Symbolgennemsigtighed
Symbol Scruncher Symbolsamling
Symbol Shifter Symbolflytning
Symbol Sizer Symbolstørrelse
Symbol Spinner Symbolrotering
Symbol Stainer Symbolfarvning
Symbol Styler Symboltypografi
Text Orientation Tekstretning
Thread Text Sammenkæd tekst
Typing Indtastning
Can't render this file because it contains an unexpected character in line 2 and column 73.
+84
View File
@@ -1336,6 +1336,90 @@ file-filter Templates Vorlagen
History Protokoll
History Options… Protokolloptionen…
History States Protokollschritte
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Datensatz anwenden
Area Type Flächentext
Bloat Aufblasen
Cancel Pattern Editing Musterbearbeitung abbrechen
Copy Appearance Aussehen kopieren
Copy Guide Hilfslinie kopieren
Copy in Perspective In Perspektive kopieren
Create Slice from Selection Slice aus Auswahl erstellen
Create Slices from Guides Slices aus Hilfslinien erstellen
Delete All Slices Alle Slices löschen
Delete Data Sets Datensätze löschen
Delete Graphic Styles Grafikstile löschen
Delete Guide Hilfslinie löschen
Delete Guides Hilfslinien löschen
Delete Slice Slice löschen
Delete Style Format löschen
Delete Variables Variablen löschen
Delete View Ansicht löschen
Done Editing Pattern Musterbearbeitung beenden
Duplicate Rows Zeilen duplizieren
Edit Perspective Grid Perspektivenraster bearbeiten
Expand Blend Angleichung umwandeln
Expand Envelope Hülle umwandeln
Expand Image Trace Bildnachzeichner umwandeln
Expand Live Paint „Interaktiv malen“ umwandeln
Grid Repeat Rasterwiederholung
Image Trace (Make and Expand) Bildnachzeichner (erstellen und umwandeln)
Live Shape Interaktive Form
Make Blend Angleichung erstellen
Make Dynamic Dynamisch machen
Make Intertwine Verflechtung erstellen
Make Live Paint „Interaktiv malen“ erstellen
Make Pattern Muster erstellen
Make Slice Slice erstellen
Make Text Wrap Textumfluss erstellen
Merge Live Paint „Interaktiv malen“ zusammenfügen
Mesh Point Color Farbe des Gitterpunkts
Mirror Repeat Spiegelwiederholung
Move Envelope Point Hüllenpunkt verschieben
Move Plane and Copy Objects Perspektivebene verschieben und Objekte kopieren
Move Plane and Objects Perspektivebene und Objekte verschieben
Move Slice Slice verschieben
Move Type on a Path Pfadtext verschieben
New Guide Neue Hilfslinie
Pen Zeichenstift
Place from Library Aus Bibliothek platzieren
Pucker Zusammenziehen
Radial Repeat Radiale Wiederholung
Rearrange Artboards Zeichenflächen neu anordnen
Release Blend Angleichung zurückwandeln
Release Envelope Hülle zurückwandeln
Release Image Trace Bildnachzeichner zurückwandeln
Release Intertwine Verflechtung zurückwandeln
Release Live Paint „Interaktiv malen“ zurückwandeln
Release Repeat Wiederholung zurückwandeln
Release Slice Slice zurückwandeln
Release Text Wrap Textumfluss zurückwandeln
Release Threaded Text Verketteten Text zurückwandeln
Rename Design Design umbenennen
Rename Style Format umbenennen
Rename View Ansicht umbenennen
Reorder Appearance Aussehen neu anordnen
Reorder Artboards Reihenfolge der Zeichenflächen ändern
Reshape Spine Achse umformen
Resize Artboard Größe der Zeichenfläche ändern
Resize Slice Slice-Größe ändern
Resize Type Area Größe der Textfläche ändern
Scale in Perspective In Perspektive skalieren
Scallop Ausbuchten
Shape Builder Delete Formerstellung (Löschen)
Sort Swatches Farbfelder sortieren
Symbol Screener Symbol transparent gestalten
Symbol Scruncher Symbol stauchen
Symbol Shifter Symbol verschieben
Symbol Sizer Symbol skalieren
Symbol Spinner Symbol drehen
Symbol Stainer Symbol färben
Symbol Styler Symbol gestalten
Text Orientation Textrichtung
Thread Text Text verketten
Twirl Strudel
Typing Texteingabe
Wrinkle Zerknittern
Hollow Hohl
Home Start
Horizon Height: Horizonthöhe:
Can't render this file because it contains an unexpected character in line 2 and column 73.
+70
View File
@@ -1281,6 +1281,76 @@
History Ιστορικό
History Options… Επιλογές ιστορικού…
History States Καταστάσεις ιστορικού
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Εφαρμογή συνόλου δεδομένων
Cancel Pattern Editing Ακύρωση επεξεργασίας μοτίβου
Copy Appearance Αντιγραφή εμφάνισης
Copy Guide Αντιγραφή οδηγού
Copy in Perspective Αντιγραφή σε προοπτική
Create Slice from Selection Δημιουργία τομής από επιλογή
Create Slices from Guides Δημιουργία τομών από οδηγούς
Delete All Slices Διαγραφή όλων των τομών
Delete Data Sets Διαγραφή συνόλων δεδομένων
Delete Graphic Styles Διαγραφή στυλ γραφικών
Delete Guide Διαγραφή οδηγού
Delete Guides Διαγραφή οδηγών
Delete Slice Διαγραφή τομής
Delete Style Διαγραφή στυλ
Delete Variables Διαγραφή μεταβλητών
Delete View Διαγραφή προβολής
Done Editing Pattern Ολοκλήρωση επεξεργασίας μοτίβου
Duplicate Rows Δημιουργία αντιγράφου γραμμών
Edit Perspective Grid Επεξεργασία πλέγματος προοπτικής
Expand Blend Επέκταση ανάμειξης
Expand Envelope Επέκταση περιβλήματος
Expand Image Trace Επέκταση ανίχνευσης περιγραμμάτων εικόνας
Expand Live Paint Επέκταση δυναμικής βαφής
Live Shape Δυναμικό σχήμα
Make Blend Δημιουργία ανάμειξης
Make Dynamic Μετατροπή σε δυναμικό
Make Intertwine Δημιουργία διαπλοκής
Make Live Paint Δημιουργία δυναμικής βαφής
Make Pattern Δημιουργία μοτίβου
Make Slice Δημιουργία τομής
Merge Live Paint Συγχώνευση δυναμικής βαφής
Mesh Point Color Χρώμα σημείου πλέγματος
Move Envelope Point Μετακίνηση σημείου περιβλήματος
Move Plane and Copy Objects Μετακίνηση επιπέδου προοπτικής και αντιγραφή αντικειμένων
Move Plane and Objects Μετακίνηση επιπέδου προοπτικής και αντικειμένων
Move Slice Μετακίνηση τομής
Move Type on a Path Μετακίνηση κειμένου σε διαδρομή
New Guide Νέος οδηγός
Place from Library Τοποθέτηση από βιβλιοθήκη
Rearrange Artboards Αναδιάταξη πινάκων σχεδίασης
Release Blend Αποδέσμευση ανάμειξης
Release Envelope Αποδέσμευση περιβλήματος
Release Intertwine Αποδέσμευση διαπλοκής
Release Live Paint Αποδέσμευση δυναμικής βαφής
Release Repeat Αποδέσμευση επανάληψης
Release Slice Αποδέσμευση τομής
Release Threaded Text Αποδέσμευση συνδεδεμένου κειμένου
Rename Design Μετονομασία σχεδίου
Rename Style Μετονομασία στυλ
Rename View Μετονομασία προβολής
Reorder Appearance Αναδιάταξη εμφάνισης
Reorder Artboards Αλλαγή σειράς πινάκων σχεδίασης
Reshape Spine Αναδιαμόρφωση κεντρικής καμπύλης
Resize Artboard Αλλαγή μεγέθους πίνακα σχεδίασης
Resize Slice Αλλαγή μεγέθους τομής
Resize Type Area Αλλαγή μεγέθους περιοχής κειμένου
Scale in Perspective Κλιμάκωση σε προοπτική
Shape Builder Delete Δημιουργία σχημάτων (διαγραφή)
Sort Swatches Ταξινόμηση δειγμάτων χρωμάτων
Symbol Screener Αραίωση συμβόλων
Symbol Scruncher Σύμπτυξη συμβόλων
Symbol Shifter Μετατόπιση συμβόλων
Symbol Sizer Αλλαγή μεγέθους συμβόλων
Symbol Spinner Περιστροφή συμβόλων
Symbol Stainer Χρωματισμός συμβόλων
Symbol Styler Μορφοποίηση συμβόλων
Text Orientation Προσανατολισμός κειμένου
Thread Text Σύνδεση κειμένου
Typing Πληκτρολόγηση
Hollow Κοίλο
Home Αρχική οθόνη
Horizon Height: Ύψος ορίζοντα:
1 # Ελληνικά (el) — VectorCraft
1281
1282
1283
1284 # History panel: the names of undo steps (`every_undo_label_is_translated`).
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
+70
View File
@@ -1344,6 +1344,76 @@
History Historial
History Options… Opciones de historial…
History States Estados de historial
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Aplicar conjunto de datos
Cancel Pattern Editing Cancelar edición de motivo
Copy Appearance Copiar apariencia
Copy Guide Copiar guía
Copy in Perspective Copiar en perspectiva
Create Slice from Selection Crear sector a partir de la selección
Create Slices from Guides Crear sectores a partir de guías
Delete All Slices Eliminar todos los sectores
Delete Data Sets Eliminar conjuntos de datos
Delete Graphic Styles Eliminar estilos gráficos
Delete Guide Eliminar guía
Delete Guides Eliminar guías
Delete Slice Eliminar sector
Delete Style Eliminar estilo
Delete Variables Eliminar variables
Delete View Eliminar vista
Done Editing Pattern Terminar edición de motivo
Duplicate Rows Duplicar filas
Edit Perspective Grid Editar cuadrícula de perspectiva
Expand Blend Expandir fusión
Expand Envelope Expandir envolvente
Expand Image Trace Expandir calco de imagen
Expand Live Paint Expandir pintura interactiva
Live Shape Forma dinámica
Make Blend Crear fusión
Make Dynamic Hacer dinámico
Make Intertwine Crear entrelazado
Make Live Paint Crear pintura interactiva
Make Pattern Crear motivo
Make Slice Crear sector
Merge Live Paint Combinar pintura interactiva
Mesh Point Color Color de punto de malla
Move Envelope Point Mover punto de envolvente
Move Plane and Copy Objects Mover plano y copiar objetos
Move Plane and Objects Mover plano y objetos
Move Slice Mover sector
Move Type on a Path Mover texto en trazado
New Guide Nueva guía
Place from Library Colocar desde biblioteca
Rearrange Artboards Reorganizar mesas de trabajo
Release Blend Soltar fusión
Release Envelope Soltar envolvente
Release Intertwine Soltar entrelazado
Release Live Paint Soltar pintura interactiva
Release Repeat Soltar repetición
Release Slice Soltar sector
Release Threaded Text Soltar texto enlazado
Rename Design Cambiar nombre del diseño
Rename Style Cambiar nombre del estilo
Rename View Cambiar nombre de la vista
Reorder Appearance Reordenar apariencia
Reorder Artboards Reordenar mesas de trabajo
Reshape Spine Remodelar eje
Resize Artboard Cambiar tamaño de la mesa de trabajo
Resize Slice Cambiar tamaño del sector
Resize Type Area Cambiar tamaño del área de texto
Scale in Perspective Escalar en perspectiva
Shape Builder Delete Generador de formas (eliminar)
Sort Swatches Ordenar muestras
Symbol Screener Transparencia de símbolos
Symbol Scruncher Concentración de símbolos
Symbol Shifter Desplazamiento de símbolos
Symbol Sizer Tamaño de símbolos
Symbol Spinner Giro de símbolos
Symbol Stainer Tinte de símbolos
Symbol Styler Estilo de símbolos
Text Orientation Orientación del texto
Thread Text Enlazar texto
Typing Escritura
Hollow Hueco
Home Inicio
Horizon Height: Altura del horizonte:
Can't render this file because it contains an unexpected character in line 2 and column 73.
+70
View File
@@ -1486,6 +1486,76 @@ lighting Light Valo
{percent}% opacity {percent}% peittävyys
History Options… Historian asetukset…
Open a document to see its history. Avaa asiakirja, niin näet sen historian.
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Käytä tietojoukkoa
Cancel Pattern Editing Peruuta kuvion muokkaus
Copy Appearance Kopioi ulkoasu
Copy Guide Kopioi apuviiva
Copy in Perspective Kopioi perspektiivissä
Create Slice from Selection Luo siivu valinnasta
Create Slices from Guides Luo siivut apuviivoista
Delete All Slices Poista kaikki siivut
Delete Data Sets Poista tietojoukot
Delete Graphic Styles Poista grafiikkatyylit
Delete Guide Poista apuviiva
Delete Guides Poista apuviivat
Delete Slice Poista siivu
Delete Style Poista tyyli
Delete Variables Poista muuttujat
Delete View Poista näkymä
Done Editing Pattern Lopeta kuvion muokkaus
Duplicate Rows Monista rivit
Edit Perspective Grid Muokkaa perspektiiviruudukkoa
Expand Blend Laajenna sulautus
Expand Envelope Laajenna kuori
Expand Image Trace Laajenna kuvan jäljitys
Expand Live Paint Laajenna elävä maalaus
Live Shape Elävä muoto
Make Blend Luo sulautus
Make Dynamic Tee dynaamiseksi
Make Intertwine Luo lomitus
Make Live Paint Luo elävä maalaus
Make Pattern Luo kuvio
Make Slice Luo siivu
Merge Live Paint Yhdistä elävä maalaus
Mesh Point Color Verkkopisteen väri
Move Envelope Point Siirrä kuoren pistettä
Move Plane and Copy Objects Siirrä tasoa ja kopioi objektit
Move Plane and Objects Siirrä tasoa ja objekteja
Move Slice Siirrä siivua
Move Type on a Path Siirrä polun tekstiä
New Guide Uusi apuviiva
Place from Library Sijoita kirjastosta
Rearrange Artboards Järjestä piirtoalustat uudelleen
Release Blend Vapauta sulautus
Release Envelope Vapauta kuori
Release Intertwine Vapauta lomitus
Release Live Paint Vapauta elävä maalaus
Release Repeat Vapauta toisto
Release Slice Vapauta siivu
Release Threaded Text Vapauta ketjutettu teksti
Rename Design Nimeä malli uudelleen
Rename Style Nimeä tyyli uudelleen
Rename View Nimeä näkymä uudelleen
Reorder Appearance Järjestä ulkoasu uudelleen
Reorder Artboards Muuta piirtoalustojen järjestystä
Reshape Spine Muotoile selkäranka uudelleen
Resize Artboard Muuta piirtoalustan kokoa
Resize Slice Muuta siivun kokoa
Resize Type Area Muuta tekstialueen kokoa
Scale in Perspective Skaalaa perspektiivissä
Shape Builder Delete Muodonmuodostin (poisto)
Sort Swatches Lajittele värimallit
Symbol Screener Symbolien läpinäkyvyys
Symbol Scruncher Symbolien tiivistys
Symbol Shifter Symbolien siirto
Symbol Sizer Symbolien koonmuutos
Symbol Spinner Symbolien kierto
Symbol Stainer Symbolien värjäys
Symbol Styler Symbolien tyylittely
Text Orientation Tekstin suunta
Thread Text Ketjuta teksti
Typing Kirjoitus
Abutting Vierekkäinen
Black and White Mustavalkoinen
Corners Kulmat
Can't render this file because it contains an unexpected character in line 2 and column 73.
+70
View File
@@ -1343,6 +1343,76 @@
History Historique
History Options… Options d’historique…
History States États de l’historique
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Appliquer le jeu de données
Cancel Pattern Editing Annuler la modification du motif
Copy Appearance Copier l’aspect
Copy Guide Copier le repère
Copy in Perspective Copier en perspective
Create Slice from Selection Créer une tranche à partir de la sélection
Create Slices from Guides Créer des tranches à partir des repères
Delete All Slices Supprimer toutes les tranches
Delete Data Sets Supprimer les jeux de données
Delete Graphic Styles Supprimer les styles graphiques
Delete Guide Supprimer le repère
Delete Guides Supprimer les repères
Delete Slice Supprimer la tranche
Delete Style Supprimer le style
Delete Variables Supprimer les variables
Delete View Supprimer la vue
Done Editing Pattern Terminer la modification du motif
Duplicate Rows Dupliquer les lignes
Edit Perspective Grid Modifier la grille de perspective
Expand Blend Décomposer le dégradé de formes
Expand Envelope Décomposer l’enveloppe
Expand Image Trace Décomposer la vectorisation de l’image
Expand Live Paint Décomposer la peinture dynamique
Live Shape Forme dynamique
Make Blend Créer un dégradé de formes
Make Dynamic Rendre dynamique
Make Intertwine Créer un entrelacement
Make Live Paint Créer une peinture dynamique
Make Pattern Créer un motif
Make Slice Créer une tranche
Merge Live Paint Fusionner la peinture dynamique
Mesh Point Color Couleur du point de filet
Move Envelope Point Déplacer le point d’enveloppe
Move Plane and Copy Objects Déplacer le plan et copier les objets
Move Plane and Objects Déplacer le plan et les objets
Move Slice Déplacer la tranche
Move Type on a Path Déplacer le texte curviligne
New Guide Nouveau repère
Place from Library Importer depuis la bibliothèque
Rearrange Artboards Réorganiser les plans de travail
Release Blend Annuler le dégradé de formes
Release Envelope Annuler l’enveloppe
Release Intertwine Annuler l’entrelacement
Release Live Paint Annuler la peinture dynamique
Release Repeat Annuler la répétition
Release Slice Annuler la tranche
Release Threaded Text Annuler le texte lié
Rename Design Renommer la conception
Rename Style Renommer le style
Rename View Renommer la vue
Reorder Appearance Réorganiser l’aspect
Reorder Artboards Changer l’ordre des plans de travail
Reshape Spine Modeler la dorsale
Resize Artboard Redimensionner le plan de travail
Resize Slice Redimensionner la tranche
Resize Type Area Redimensionner la zone de texte
Scale in Perspective Mettre à l’échelle en perspective
Shape Builder Delete Concepteur de forme (suppression)
Sort Swatches Trier les nuances
Symbol Screener Transparence de symboles
Symbol Scruncher Espacement de symboles
Symbol Shifter Glissement de symboles
Symbol Sizer Redimensionnement de symboles
Symbol Spinner Rotation de symboles
Symbol Stainer Coloration de symboles
Symbol Styler Stylisation de symboles
Text Orientation Orientation du texte
Thread Text Chaîner le texte
Typing Saisie
Hollow Évidé
Home Accueil
Horizon Height: Hauteur de l’horizon :
Can't render this file because it contains an unexpected character in line 2 and column 73.
+70
View File
@@ -1717,6 +1717,76 @@ file-filter Templates Sablonok
History Előzmények
History Options… Előzmények beállításai…
History States Előzmények lépésszáma
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Adatkészlet alkalmazása
Cancel Pattern Editing Mintázatszerkesztés megszakítása
Copy Appearance Megjelenés másolása
Copy Guide Segédvonal másolása
Copy in Perspective Másolás perspektívában
Create Slice from Selection Szelet létrehozása a kijelölésből
Create Slices from Guides Szeletek létrehozása segédvonalakból
Delete All Slices Összes szelet törlése
Delete Data Sets Adatkészletek törlése
Delete Graphic Styles Grafikai stílusok törlése
Delete Guide Segédvonal törlése
Delete Guides Segédvonalak törlése
Delete Slice Szelet törlése
Delete Style Stílus törlése
Delete Variables Változók törlése
Delete View Nézet törlése
Done Editing Pattern Mintázatszerkesztés befejezése
Duplicate Rows Sorok kettőzése
Edit Perspective Grid Perspektivikus rács szerkesztése
Expand Blend Összemosás kibontása
Expand Envelope Burkoló kibontása
Expand Image Trace Képvektorizálás kibontása
Expand Live Paint Élő festés kibontása
Live Shape Élő alakzat
Make Blend Összemosás létrehozása
Make Dynamic Dinamikussá tétel
Make Intertwine Összefonás létrehozása
Make Live Paint Élő festés létrehozása
Make Pattern Mintázat létrehozása
Make Slice Szelet létrehozása
Merge Live Paint Élő festés összeolvasztása
Mesh Point Color Hálópont színe
Move Envelope Point Burkolópont áthelyezése
Move Plane and Copy Objects Sík áthelyezése és objektumok másolása
Move Plane and Objects Sík és objektumok áthelyezése
Move Slice Szelet áthelyezése
Move Type on a Path Útvonalszöveg áthelyezése
New Guide Új segédvonal
Place from Library Elhelyezés könyvtárból
Rearrange Artboards Rajztáblák átrendezése
Release Blend Összemosás megszüntetése
Release Envelope Burkoló megszüntetése
Release Intertwine Összefonás megszüntetése
Release Live Paint Élő festés megszüntetése
Release Repeat Ismétlés megszüntetése
Release Slice Szelet megszüntetése
Release Threaded Text Láncolt szöveg megszüntetése
Rename Design Minta átnevezése
Rename Style Stílus átnevezése
Rename View Nézet átnevezése
Reorder Appearance Megjelenés átrendezése
Reorder Artboards Rajztáblák sorrendjének módosítása
Reshape Spine Gerinc átformálása
Resize Artboard Rajztábla átméretezése
Resize Slice Szelet átméretezése
Resize Type Area Szövegterület átméretezése
Scale in Perspective Méretezés perspektívában
Shape Builder Delete Alakzatépítő (törlés)
Sort Swatches Színminták rendezése
Symbol Screener Szimbólumhalványító
Symbol Scruncher Szimbólumtömörítő
Symbol Shifter Szimbólumtoló
Symbol Sizer Szimbólumméretező
Symbol Spinner Szimbólumforgató
Symbol Stainer Szimbólumszínező
Symbol Styler Szimbólumstilizáló
Text Orientation Szöveg iránya
Thread Text Szöveg láncolása
Typing Gépelés
Hold Nyomva tartás
Hollow Üreges
Home Kezdőképernyő
Can't render this file because it contains an unexpected character in line 2 and column 73.
+69
View File
@@ -5080,3 +5080,72 @@ swatch Bright Violet Violet cerah
Cutout Potongan
Neon Glow Pendar neon
Poster Edges Tepi poster
Apply Data Set Terapkan set data
Cancel Pattern Editing Batalkan pengeditan pola
Copy Appearance Salin tampilan
Copy Guide Salin panduan
Copy in Perspective Salin dalam perspektif
Create Slice from Selection Buat slice dari pilihan
Create Slices from Guides Buat slice dari panduan
Delete All Slices Hapus semua slice
Delete Data Sets Hapus set data
Delete Graphic Styles Hapus gaya grafis
Delete Guide Hapus panduan
Delete Guides Hapus semua panduan
Delete Slice Hapus slice
Delete Style Hapus gaya
Delete Variables Hapus variabel
Delete View Hapus tampilan
Done Editing Pattern Selesai mengedit pola
Duplicate Rows Duplikatkan baris
Edit Perspective Grid Edit kisi perspektif
Expand Blend Perluas blend
Expand Envelope Perluas amplop
Expand Image Trace Perluas Image Trace
Expand Live Paint Perluas Live Paint
Live Shape Bentuk langsung
Make Blend Buat blend
Make Dynamic Jadikan dinamis
Make Intertwine Buat jalinan
Make Live Paint Buat Live Paint
Make Pattern Buat pola
Make Slice Buat slice
Merge Live Paint Gabungkan Live Paint
Mesh Point Color Warna titik mesh
Move Envelope Point Pindahkan titik amplop
Move Plane and Copy Objects Pindahkan bidang dan salin objek
Move Plane and Objects Pindahkan bidang dan objek
Move Slice Pindahkan slice
Move Type on a Path Pindahkan teks pada jalur
New Guide Panduan baru
Place from Library Tempatkan dari pustaka
Rearrange Artboards Atur ulang artboard
Release Blend Lepaskan blend
Release Envelope Lepaskan amplop
Release Intertwine Lepaskan jalinan
Release Live Paint Lepaskan Live Paint
Release Repeat Lepaskan perulangan
Release Slice Lepaskan slice
Release Threaded Text Lepaskan teks beruntun
Rename Design Ganti nama desain
Rename Style Ganti nama gaya
Rename View Ganti nama tampilan
Reorder Appearance Susun ulang tampilan
Reorder Artboards Susun ulang artboard
Reshape Spine Bentuk ulang spine
Resize Artboard Ubah ukuran artboard
Resize Slice Ubah ukuran slice
Resize Type Area Ubah ukuran area teks
Scale in Perspective Skalakan dalam perspektif
Shape Builder Delete Hapus dengan Pembangun bentuk
Sort Swatches Urutkan sampel warna
Symbol Screener Penyaring simbol
Symbol Scruncher Perapat simbol
Symbol Shifter Penggeser simbol
Symbol Sizer Pengubah ukuran simbol
Symbol Spinner Pemutar simbol
Symbol Stainer Pewarna simbol
Symbol Styler Penerap gaya simbol
Text Orientation Orientasi teks
Thread Text Untai teks
Typing Mengetik
Can't render this file because it contains an unexpected character in line 3755 and column 19.
+84
View File
@@ -1353,6 +1353,90 @@ file-filter Templates Modelli
History Cronologia
History Options… Opzioni cronologia…
History States Stati cronologia
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Applica set di dati
Area Type Testo in area
Bloat Gonfia
Cancel Pattern Editing Annulla modifica motivo
Copy Appearance Copia aspetto
Copy Guide Copia guida
Copy in Perspective Copia in prospettiva
Create Slice from Selection Crea sezione dalla selezione
Create Slices from Guides Crea sezioni da guide
Delete All Slices Elimina tutte le sezioni
Delete Data Sets Elimina set di dati
Delete Graphic Styles Elimina stili grafici
Delete Guide Elimina guida
Delete Guides Elimina guide
Delete Slice Elimina sezione
Delete Style Elimina stile
Delete Variables Elimina variabili
Delete View Elimina vista
Done Editing Pattern Termina modifica motivo
Duplicate Rows Duplica righe
Edit Perspective Grid Modifica griglia prospettica
Expand Blend Espandi fusione
Expand Envelope Espandi involucro
Expand Image Trace Espandi ricalco immagine
Expand Live Paint Espandi pittura dinamica
Grid Repeat Ripetizione griglia
Image Trace (Make and Expand) Ricalco immagine (crea ed espandi)
Live Shape Forma dinamica
Make Blend Crea fusione
Make Dynamic Rendi dinamico
Make Intertwine Crea intreccio
Make Live Paint Crea pittura dinamica
Make Pattern Crea motivo
Make Slice Crea sezione
Make Text Wrap Crea testo attorno
Merge Live Paint Unisci pittura dinamica
Mesh Point Color Colore punto trama
Mirror Repeat Ripetizione speculare
Move Envelope Point Sposta punto involucro
Move Plane and Copy Objects Sposta piano e copia oggetti
Move Plane and Objects Sposta piano e oggetti
Move Slice Sposta sezione
Move Type on a Path Sposta testo su tracciato
New Guide Nuova guida
Pen Penna
Place from Library Inserisci da libreria
Pucker Contrai
Radial Repeat Ripetizione radiale
Rearrange Artboards Ridisponi tavole da disegno
Release Blend Rilascia fusione
Release Envelope Rilascia involucro
Release Image Trace Rilascia ricalco immagine
Release Intertwine Rilascia intreccio
Release Live Paint Rilascia pittura dinamica
Release Repeat Rilascia ripetizione
Release Slice Rilascia sezione
Release Text Wrap Rilascia testo attorno
Release Threaded Text Rilascia testo concatenato
Rename Design Rinomina design
Rename Style Rinomina stile
Rename View Rinomina vista
Reorder Appearance Riordina aspetto
Reorder Artboards Riordina tavole da disegno
Reshape Spine Rimodella dorsale
Resize Artboard Ridimensiona tavola da disegno
Resize Slice Ridimensiona sezione
Resize Type Area Ridimensiona area di testo
Scale in Perspective Scala in prospettiva
Scallop Smerla
Shape Builder Delete Generatore forme (elimina)
Sort Swatches Ordina campioni
Symbol Screener Trasparenza simboli
Symbol Scruncher Addensamento simboli
Symbol Shifter Spostamento simboli
Symbol Sizer Ridimensionamento simboli
Symbol Spinner Rotazione simboli
Symbol Stainer Colorazione simboli
Symbol Styler Stile simboli
Text Orientation Orientamento testo
Thread Text Concatena testo
Twirl Vortice
Typing Digitazione
Wrinkle Grinza
Hollow Vuoto
Home Home
Horizon Height: Altezza orizzonte:
Can't render this file because it contains an unexpected character in line 2 and column 73.
+84
View File
@@ -1598,6 +1598,90 @@
Highlight anchors on mouse over マウスオーバー時にアンカーをハイライト
History Options… ヒストリーオプション…
History States ヒストリー数
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set データセットを適用
Area Type エリア内文字
Bloat 膨張
Cancel Pattern Editing パターン編集をキャンセル
Copy Appearance アピアランスをコピー
Copy Guide ガイドをコピー
Copy in Perspective 遠近でコピー
Create Slice from Selection 選択範囲からスライスを作成
Create Slices from Guides ガイドからスライスを作成
Delete All Slices すべてのスライスを削除
Delete Data Sets データセットを削除
Delete Graphic Styles グラフィックスタイルを削除
Delete Guide ガイドを削除
Delete Guides ガイドを削除
Delete Slice スライスを削除
Delete Style スタイルを削除
Delete Variables 変数を削除
Delete View 表示を削除
Done Editing Pattern パターン編集を完了
Duplicate Rows 行を複製
Edit Perspective Grid 遠近グリッドを編集
Expand Blend ブレンドを拡張
Expand Envelope エンベロープを拡張
Expand Image Trace 画像トレースを拡張
Expand Live Paint ライブペイントを拡張
Grid Repeat グリッドリピート
Image Trace (Make and Expand) 画像トレース (作成して拡張)
Live Shape ライブシェイプ
Make Blend ブレンドを作成
Make Dynamic 動的にする
Make Intertwine 織り交ぜを作成
Make Live Paint ライブペイントを作成
Make Pattern パターンを作成
Make Slice スライスを作成
Make Text Wrap テキストの回り込みを作成
Merge Live Paint ライブペイントを結合
Mesh Point Color メッシュポイントのカラー
Mirror Repeat ミラーリピート
Move Envelope Point エンベロープのポイントを移動
Move Plane and Copy Objects 面を移動してオブジェクトをコピー
Move Plane and Objects 面とオブジェクトを移動
Move Slice スライスを移動
Move Type on a Path パス上文字を移動
New Guide 新規ガイド
Pen ペン
Place from Library ライブラリから配置
Pucker 収縮
Radial Repeat ラジアルリピート
Rearrange Artboards アートボードを再配置
Release Blend ブレンドを解除
Release Envelope エンベロープを解除
Release Image Trace 画像トレースを解除
Release Intertwine 織り交ぜを解除
Release Live Paint ライブペイントを解除
Release Repeat リピートを解除
Release Slice スライスを解除
Release Text Wrap テキストの回り込みを解除
Release Threaded Text スレッドテキストを解除
Rename Design デザインの名前を変更
Rename Style スタイルの名前を変更
Rename View 表示の名前を変更
Reorder Appearance アピアランスの順序を変更
Reorder Artboards アートボードの順序を変更
Reshape Spine スパインをシェイプ変形
Resize Artboard アートボードのサイズを変更
Resize Slice スライスのサイズを変更
Resize Type Area テキストエリアのサイズを変更
Scale in Perspective 遠近で拡大・縮小
Scallop ギザギザ
Shape Builder Delete シェイプ形成 (削除)
Sort Swatches スウォッチを並べ替え
Symbol Screener シンボルスクリーナー
Symbol Scruncher シンボルスクランチャー
Symbol Shifter シンボルシフター
Symbol Sizer シンボルリサイザー
Symbol Spinner シンボルスピン
Symbol Stainer シンボルステイン
Symbol Styler シンボルスタイル
Text Orientation 組み方向
Thread Text テキストをスレッド
Twirl 旋回
Typing 文字入力
Wrinkle しわ
Hollow 中空
Home ホーム
Horizon Height: 水平線の高さ:
Can't render this file because it contains an unexpected character in line 2 and column 73.
+84
View File
@@ -1593,6 +1593,90 @@
Highlight anchors on mouse over 마우스를 올리면 앵커 강조 표시
History Options… 히스토리 옵션…
History States 히스토리 상태
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set 데이터 세트 적용
Area Type 영역 문자
Bloat 부풀리기
Cancel Pattern Editing 패턴 편집 취소
Copy Appearance 모양새 복사
Copy Guide 안내선 복사
Copy in Perspective 원근 복사
Create Slice from Selection 선택 영역으로 분할 만들기
Create Slices from Guides 안내선으로 분할 만들기
Delete All Slices 모든 분할 삭제
Delete Data Sets 데이터 세트 삭제
Delete Graphic Styles 그래픽 스타일 삭제
Delete Guide 안내선 삭제
Delete Guides 안내선 삭제
Delete Slice 분할 삭제
Delete Style 스타일 삭제
Delete Variables 변수 삭제
Delete View 보기 삭제
Done Editing Pattern 패턴 편집 완료
Duplicate Rows 행 복제
Edit Perspective Grid 원근 격자 편집
Expand Blend 블렌드 확장
Expand Envelope 엔벨로프 확장
Expand Image Trace 이미지 추적 확장
Expand Live Paint 라이브 페인트 확장
Grid Repeat 격자 반복
Image Trace (Make and Expand) 이미지 추적 (만들기 및 확장)
Live Shape 라이브 모양
Make Blend 블렌드 만들기
Make Dynamic 동적으로 만들기
Make Intertwine 교차 만들기
Make Live Paint 라이브 페인트 만들기
Make Pattern 패턴 만들기
Make Slice 분할 만들기
Make Text Wrap 텍스트 감싸기 만들기
Merge Live Paint 라이브 페인트 병합
Mesh Point Color 메시 점 색상
Mirror Repeat 미러 반복
Move Envelope Point 엔벨로프 점 이동
Move Plane and Copy Objects 평면 이동 및 개체 복사
Move Plane and Objects 평면 및 개체 이동
Move Slice 분할 이동
Move Type on a Path 패스 위 문자 이동
New Guide 새 안내선
Pen 펜
Place from Library 라이브러리에서 가져오기
Pucker 오므리기
Radial Repeat 방사형 반복
Rearrange Artboards 아트보드 재정렬
Release Blend 블렌드 해제
Release Envelope 엔벨로프 해제
Release Image Trace 이미지 추적 해제
Release Intertwine 교차 해제
Release Live Paint 라이브 페인트 해제
Release Repeat 반복 해제
Release Slice 분할 해제
Release Text Wrap 텍스트 감싸기 해제
Release Threaded Text 연결된 문자 해제
Rename Design 디자인 이름 바꾸기
Rename Style 스타일 이름 바꾸기
Rename View 보기 이름 바꾸기
Reorder Appearance 모양새 순서 변경
Reorder Artboards 아트보드 순서 변경
Reshape Spine 스파인 모양 변경
Resize Artboard 아트보드 크기 조절
Resize Slice 분할 크기 조절
Resize Type Area 문자 영역 크기 조절
Scale in Perspective 원근 크기 조절
Scallop 스캘럽
Shape Builder Delete 모양 빌더 (삭제)
Sort Swatches 견본 정렬
Symbol Screener 심볼 스크리너
Symbol Scruncher 심볼 스크런처
Symbol Shifter 심볼 시프터
Symbol Sizer 심볼 크기
Symbol Spinner 심볼 회전
Symbol Stainer 심볼 염색기
Symbol Styler 심볼 스타일
Text Orientation 문자 방향
Thread Text 문자 연결
Twirl 돌리기
Typing 문자 입력
Wrinkle 주름
Hollow 속이 빈
Home 홈
Horizon Height: 수평선 높이:
Can't render this file because it contains an unexpected character in line 2 and column 73.
+69
View File
@@ -5080,3 +5080,72 @@ swatch Bright Violet Felviolet
Cutout Knipsel
Neon Glow Neongloed
Poster Edges Posterranden
Apply Data Set Gegevensset toepassen
Cancel Pattern Editing Patroon bewerken annuleren
Copy Appearance Uiterlijk kopiëren
Copy Guide Hulplijn kopiëren
Copy in Perspective Kopiëren in perspectief
Create Slice from Selection Slice maken van selectie
Create Slices from Guides Slices maken van hulplijnen
Delete All Slices Alle slices verwijderen
Delete Data Sets Gegevenssets verwijderen
Delete Graphic Styles Grafische stijlen verwijderen
Delete Guide Hulplijn verwijderen
Delete Guides Hulplijnen verwijderen
Delete Slice Slice verwijderen
Delete Style Stijl verwijderen
Delete Variables Variabelen verwijderen
Delete View Weergave verwijderen
Done Editing Pattern Patroon bewerken voltooid
Duplicate Rows Rijen dupliceren
Edit Perspective Grid Perspectiefraster bewerken
Expand Blend Vermenging uitbreiden
Expand Envelope Omvorming uitbreiden
Expand Image Trace Afbeelding traceren uitbreiden
Expand Live Paint Live Paint uitbreiden
Live Shape Live vorm
Make Blend Vermenging maken
Make Dynamic Dynamisch maken
Make Intertwine Verstrengeling maken
Make Live Paint Live Paint maken
Make Pattern Patroon maken
Make Slice Slice maken
Merge Live Paint Live Paint samenvoegen
Mesh Point Color Kleur van rasterpunt
Move Envelope Point Omvormingspunt verplaatsen
Move Plane and Copy Objects Vlak verplaatsen en objecten kopiëren
Move Plane and Objects Vlak en objecten verplaatsen
Move Slice Slice verplaatsen
Move Type on a Path Tekst op pad verplaatsen
New Guide Nieuwe hulplijn
Place from Library Plaatsen uit bibliotheek
Rearrange Artboards Tekengebieden herschikken
Release Blend Vermenging vrijgeven
Release Envelope Omvorming vrijgeven
Release Intertwine Verstrengeling vrijgeven
Release Live Paint Live Paint vrijgeven
Release Repeat Herhaling vrijgeven
Release Slice Slice vrijgeven
Release Threaded Text Gekoppelde tekst vrijgeven
Rename Design Ontwerp hernoemen
Rename Style Stijl hernoemen
Rename View Weergave hernoemen
Reorder Appearance Uiterlijk opnieuw ordenen
Reorder Artboards Tekengebieden opnieuw ordenen
Reshape Spine As opnieuw vormgeven
Resize Artboard Grootte van tekenbord wijzigen
Resize Slice Grootte van slice wijzigen
Resize Type Area Grootte van tekstvak wijzigen
Scale in Perspective Schalen in perspectief
Shape Builder Delete Verwijderen met Vormopbouw
Sort Swatches Stalen sorteren
Symbol Screener Symbooltransparantie
Symbol Scruncher Symboolverdichter
Symbol Shifter Symboolverschuiver
Symbol Sizer Symboolgrootte
Symbol Spinner Symboolrotatie
Symbol Stainer Symboolkleuring
Symbol Styler Symboolstijl
Text Orientation Tekstrichting
Thread Text Tekst koppelen
Typing Typen
Can't render this file because it contains an unexpected character in line 2 and column 73.
+76
View File
@@ -1426,6 +1426,82 @@ lighting Light Światło
{percent}% opacity Krycie {percent}%
History Options… Opcje historii…
Open a document to see its history. Otwórz dokument, aby zobaczyć jego historię.
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Zastosuj zestaw danych
Area Type Tekst akapitowy
Cancel Pattern Editing Anuluj edycję wzorka
Copy Appearance Kopiuj wygląd
Copy Guide Kopiuj linię pomocniczą
Copy in Perspective Kopiuj w perspektywie
Create Slice from Selection Utwórz plasterek z zaznaczenia
Create Slices from Guides Utwórz plasterki z linii pomocniczych
Delete All Slices Usuń wszystkie plasterki
Delete Data Sets Usuń zestawy danych
Delete Graphic Styles Usuń style graficzne
Delete Guide Usuń linię pomocniczą
Delete Guides Usuń linie pomocnicze
Delete Slice Usuń plasterek
Delete Style Usuń styl
Delete Variables Usuń zmienne
Delete View Usuń widok
Done Editing Pattern Zakończ edycję wzorka
Duplicate Rows Powiel wiersze
Edit Perspective Grid Edytuj siatkę perspektywy
Expand Blend Rozszerz przejście
Expand Envelope Rozszerz kopertę
Expand Image Trace Rozszerz obrys obrazu
Expand Live Paint Rozszerz aktywne malowanie
Image Trace (Make and Expand) Obrys obrazu (utwórz i rozszerz)
Live Shape Aktywny kształt
Make Blend Utwórz przejście
Make Dynamic Uczyń dynamicznym
Make Intertwine Utwórz przeplatanie
Make Live Paint Utwórz aktywne malowanie
Make Pattern Utwórz wzorek
Make Slice Utwórz plasterek
Make Text Wrap Utwórz oblewanie tekstem
Merge Live Paint Scal aktywne malowanie
Mesh Point Color Kolor punktu siatki
Move Envelope Point Przesuń punkt koperty
Move Plane and Copy Objects Przesuń płaszczyznę i kopiuj obiekty
Move Plane and Objects Przesuń płaszczyznę i obiekty
Move Slice Przesuń plasterek
Move Type on a Path Przesuń tekst na ścieżce
New Guide Nowa linia pomocnicza
Pen Pióro
Place from Library Umieść z biblioteki
Rearrange Artboards Przestaw obszary kompozycji
Release Blend Uwolnij przejście
Release Envelope Uwolnij kopertę
Release Image Trace Uwolnij obrys obrazu
Release Intertwine Uwolnij przeplatanie
Release Live Paint Uwolnij aktywne malowanie
Release Repeat Uwolnij powtórzenie
Release Slice Uwolnij plasterek
Release Text Wrap Uwolnij oblewanie tekstem
Release Threaded Text Uwolnij tekst wątkowy
Rename Design Zmień nazwę projektu
Rename Style Zmień nazwę stylu
Rename View Zmień nazwę widoku
Reorder Appearance Zmień kolejność wyglądu
Reorder Artboards Zmień kolejność obszarów kompozycji
Reshape Spine Zmień kształt grzbietu
Resize Artboard Zmień rozmiar obszaru kompozycji
Resize Slice Zmień rozmiar plasterka
Resize Type Area Zmień rozmiar obszaru tekstu
Scale in Perspective Skaluj w perspektywie
Shape Builder Delete Kreator kształtów (usuwanie)
Sort Swatches Sortuj próbki
Symbol Screener Przesłanianie symboli
Symbol Scruncher Zagęszczanie symboli
Symbol Shifter Przesuwanie symboli
Symbol Sizer Skalowanie symboli
Symbol Spinner Obracanie symboli
Symbol Stainer Barwienie symboli
Symbol Styler Stylizowanie symboli
Text Orientation Orientacja tekstu
Thread Text Połącz tekst w wątek
Typing Pisanie
Abutting Stykające się
Black and White Czarno-biały
Corners Narożniki
Can't render this file because it contains an unexpected character in line 2 and column 73.
+70
View File
@@ -1159,6 +1159,76 @@
History Histórico
History Options… Opções do Histórico…
History States Estados do Histórico
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Aplicar Conjunto de Dados
Cancel Pattern Editing Cancelar Edição de Padrão
Copy Appearance Copiar Aparência
Copy Guide Copiar Guia
Copy in Perspective Copiar em Perspectiva
Create Slice from Selection Criar Fatia a partir da Seleção
Create Slices from Guides Criar Fatias a partir de Guias
Delete All Slices Excluir Todas as Fatias
Delete Data Sets Excluir Conjuntos de Dados
Delete Graphic Styles Excluir Estilos Gráficos
Delete Guide Excluir Guia
Delete Guides Excluir Guias
Delete Slice Excluir Fatia
Delete Style Excluir Estilo
Delete Variables Excluir Variáveis
Delete View Excluir Exibição
Done Editing Pattern Concluir Edição de Padrão
Duplicate Rows Duplicar Linhas
Edit Perspective Grid Editar Grade de Perspectiva
Expand Blend Expandir Mesclagem
Expand Envelope Expandir Envelope
Expand Image Trace Expandir Rastreamento de Imagem
Expand Live Paint Expandir Pintura ao Vivo
Live Shape Forma ao Vivo
Make Blend Criar Mesclagem
Make Dynamic Tornar Dinâmico
Make Intertwine Criar Entrelaçamento
Make Live Paint Criar Pintura ao Vivo
Make Pattern Criar Padrão
Make Slice Criar Fatia
Merge Live Paint Mesclar Pintura ao Vivo
Mesh Point Color Cor do Ponto de Malha
Move Envelope Point Mover Ponto do Envelope
Move Plane and Copy Objects Mover Plano e Copiar Objetos
Move Plane and Objects Mover Plano e Objetos
Move Slice Mover Fatia
Move Type on a Path Mover Texto em um Caminho
New Guide Nova Guia
Place from Library Colocar da Biblioteca
Rearrange Artboards Reorganizar Mesas de Trabalho
Release Blend Liberar Mesclagem
Release Envelope Liberar Envelope
Release Intertwine Liberar Entrelaçamento
Release Live Paint Liberar Pintura ao Vivo
Release Repeat Liberar Repetição
Release Slice Liberar Fatia
Release Threaded Text Liberar Texto Encadeado
Rename Design Renomear Design
Rename Style Renomear Estilo
Rename View Renomear Exibição
Reorder Appearance Reordenar Aparência
Reorder Artboards Reordenar Mesas de Trabalho
Reshape Spine Remodelar Coluna
Resize Artboard Redimensionar Mesa de Trabalho
Resize Slice Redimensionar Fatia
Resize Type Area Redimensionar Área de Texto
Scale in Perspective Dimensionar em Perspectiva
Shape Builder Delete Construtor de Formas (Excluir)
Sort Swatches Ordenar Amostras
Symbol Screener Peneira de Símbolos
Symbol Scruncher Amontoar Símbolos
Symbol Shifter Deslocador de Símbolos
Symbol Sizer Dimensionador de Símbolos
Symbol Spinner Gira Símbolos
Symbol Stainer Mancha de Símbolos
Symbol Styler Estilizador de Símbolos
Text Orientation Orientação do Texto
Thread Text Encadear Texto
Typing Digitação
Hollow Oco
Home Início
Horizon Height: Altura do Horizonte:
Can't render this file because it contains an unexpected character in line 6 and column 47.
+84
View File
@@ -1351,6 +1351,90 @@ file-filter Templates Шаблоны
History История
History Options… Параметры истории…
History States Состояния истории
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Применить набор данных
Area Type Текст в области
Bloat Раздувание
Cancel Pattern Editing Отменить редактирование узора
Copy Appearance Копировать оформление
Copy Guide Копировать направляющую
Copy in Perspective Копировать в перспективе
Create Slice from Selection Создать фрагмент из выделения
Create Slices from Guides Создать фрагменты из направляющих
Delete All Slices Удалить все фрагменты
Delete Data Sets Удалить наборы данных
Delete Graphic Styles Удалить графические стили
Delete Guide Удалить направляющую
Delete Guides Удалить направляющие
Delete Slice Удалить фрагмент
Delete Style Удалить стиль
Delete Variables Удалить переменные
Delete View Удалить вид
Done Editing Pattern Завершить редактирование узора
Duplicate Rows Дублировать строки
Edit Perspective Grid Редактировать сетку перспективы
Expand Blend Разобрать переход
Expand Envelope Разобрать оболочку
Expand Image Trace Разобрать трассировку изображения
Expand Live Paint Разобрать быструю заливку
Grid Repeat Повтор сеткой
Image Trace (Make and Expand) Трассировка изображения (создать и разобрать)
Live Shape Динамическая фигура
Make Blend Создать переход
Make Dynamic Сделать динамическим
Make Intertwine Создать переплетение
Make Live Paint Создать быструю заливку
Make Pattern Создать узор
Make Slice Создать фрагмент
Make Text Wrap Создать обтекание текстом
Merge Live Paint Объединить быструю заливку
Mesh Point Color Цвет точки сетки
Mirror Repeat Зеркальный повтор
Move Envelope Point Переместить точку оболочки
Move Plane and Copy Objects Переместить плоскость и копировать объекты
Move Plane and Objects Переместить плоскость и объекты
Move Slice Переместить фрагмент
Move Type on a Path Переместить текст по контуру
New Guide Новая направляющая
Pen Перо
Place from Library Поместить из библиотеки
Pucker Сморщивание
Radial Repeat Радиальный повтор
Rearrange Artboards Переставить монтажные области
Release Blend Освободить переход
Release Envelope Освободить оболочку
Release Image Trace Освободить трассировку изображения
Release Intertwine Освободить переплетение
Release Live Paint Освободить быструю заливку
Release Repeat Освободить повтор
Release Slice Освободить фрагмент
Release Text Wrap Освободить обтекание текстом
Release Threaded Text Освободить связанный текст
Rename Design Переименовать дизайн
Rename Style Переименовать стиль
Rename View Переименовать вид
Reorder Appearance Изменить порядок оформления
Reorder Artboards Изменить порядок монтажных областей
Reshape Spine Изменить форму остова
Resize Artboard Изменить размер монтажной области
Resize Slice Изменить размер фрагмента
Resize Type Area Изменить размер текстовой области
Scale in Perspective Масштабировать в перспективе
Scallop Фестоны
Shape Builder Delete Создание фигур (удаление)
Sort Swatches Сортировать образцы
Symbol Screener Прозрачность символов
Symbol Scruncher Сжатие символов
Symbol Shifter Сдвиг символов
Symbol Sizer Размер символов
Symbol Spinner Вращение символов
Symbol Stainer Тонирование символов
Symbol Styler Стилизация символов
Text Orientation Ориентация текста
Thread Text Связать текст
Twirl Закручивание
Typing Ввод текста
Wrinkle Морщины
Hollow Полый
Home Домой
Horizon Height: Высота горизонта:
Can't render this file because it contains an unexpected character in line 2 and column 73.
+70
View File
@@ -1320,6 +1320,76 @@
History Historik
History Options… Historikalternativ…
History States Historiktillstånd
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Använd datauppsättning
Cancel Pattern Editing Avbryt mönsterredigering
Copy Appearance Kopiera utseende
Copy Guide Kopiera stödlinje
Copy in Perspective Kopiera i perspektiv
Create Slice from Selection Skapa skiva från markering
Create Slices from Guides Skapa skivor från stödlinjer
Delete All Slices Radera alla skivor
Delete Data Sets Radera datauppsättningar
Delete Graphic Styles Radera grafikstilar
Delete Guide Radera stödlinje
Delete Guides Radera stödlinjer
Delete Slice Radera skiva
Delete Style Radera stil
Delete Variables Radera variabler
Delete View Radera vy
Done Editing Pattern Avsluta mönsterredigering
Duplicate Rows Duplicera rader
Edit Perspective Grid Redigera perspektivrutnät
Expand Blend Expandera blandning
Expand Envelope Expandera kuvert
Expand Image Trace Expandera bildkalkering
Expand Live Paint Expandera direktmålning
Live Shape Direktform
Make Blend Skapa blandning
Make Dynamic Gör dynamisk
Make Intertwine Skapa sammanflätning
Make Live Paint Skapa direktmålning
Make Pattern Skapa mönster
Make Slice Skapa skiva
Merge Live Paint Sammanfoga direktmålning
Mesh Point Color Nätpunktsfärg
Move Envelope Point Flytta kuvertpunkt
Move Plane and Copy Objects Flytta plan och kopiera objekt
Move Plane and Objects Flytta plan och objekt
Move Slice Flytta skiva
Move Type on a Path Flytta text på bana
New Guide Ny stödlinje
Place from Library Placera från bibliotek
Rearrange Artboards Ordna om ritytor
Release Blend Släpp blandning
Release Envelope Släpp kuvert
Release Intertwine Släpp sammanflätning
Release Live Paint Släpp direktmålning
Release Repeat Släpp upprepning
Release Slice Släpp skiva
Release Threaded Text Släpp länkad text
Rename Design Byt namn på design
Rename Style Byt namn på stil
Rename View Byt namn på vy
Reorder Appearance Ändra ordning på utseende
Reorder Artboards Ändra ordning på ritytor
Reshape Spine Omforma ryggrad
Resize Artboard Ändra storlek på rityta
Resize Slice Ändra storlek på skiva
Resize Type Area Ändra storlek på textområde
Scale in Perspective Skala i perspektiv
Shape Builder Delete Formbyggare (radera)
Sort Swatches Sortera färgrutor
Symbol Screener Symbolopacitet
Symbol Scruncher Dra ihop symboler
Symbol Shifter Flytta symboler
Symbol Sizer Symbolstorlek
Symbol Spinner Rotera symboler
Symbol Stainer Färga symboler
Symbol Styler Symbolstil
Text Orientation Textorientering
Thread Text Länka text
Typing Skrivning
Hollow Ihålig
Home Start
Horizon Height: Horisonthöjd:
Can't render this file because it contains an unexpected character in line 5 and column 25.
+318
View File
@@ -440,6 +440,21 @@ fn every_tl_literal_is_translated() {
}
}
/// Every undo step name the engine, the tools and the shell record ([`undo_labels`]), and every
/// effect's name without its ellipsis, has a row in each language marked `complete_menus`: its plain
/// row, or the row of the same name with an ellipsis (`panels::history::step_name`).
#[test]
fn every_undo_label_is_translated() {
let mut labels = undo_labels();
assert!(labels.len() > 300, "scan found only {} undo labels", labels.len());
labels.extend(vectorcraft_effects::effect_catalog().iter().map(|e| e.label.trim_end_matches('…').to_string()));
for l in LANGUAGES.iter().filter(|l| l.complete_menus) {
let lang = Lang::from_code(l.code).expect("registered");
let missing: Vec<_> = labels.iter().filter(|s| crate::panels::history::step_name(lang, s).is_none()).collect();
assert!(missing.is_empty(), "{}: {} untranslated undo labels: {missing:#?}", l.code, missing.len());
}
}
/// Every `tl!("…")` literal in this crate's sources (test modules aside).
pub fn tl_literals() -> std::collections::BTreeSet<String> {
let dir = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("src");
@@ -473,6 +488,308 @@ pub fn tl_literals() -> std::collections::BTreeSet<String> {
literals
}
/// Crates whose undo steps the History panel lists.
const UNDO_CRATES: &[&str] = &["engine", "tools", "ui-egui"];
/// Calls whose first argument names an undo step.
const UNDO_MARKERS: &[&str] = &[".edit(", "begin_interaction(", "Action::Begin(", "begin_named_undo_group(Some("];
/// A function in a source file, as [`undo_labels`] reads it.
struct SourceFn<'a> {
file: usize,
name: &'a str,
/// Declared `pub` (`pub(crate)`, `pub(super)`), so other files call it too.
public: bool,
/// Position of its `label` parameter among a call's arguments (`self` not counted).
label: Option<usize>,
body: &'a str,
}
/// Every undo step name in [`UNDO_CRATES`] (test modules aside) that the sources write as a
/// literal: the first argument at each of [`UNDO_MARKERS`], the argument a function whose `label`
/// parameter reaches one of them takes at each of its calls, and the value of each `let label = …`
/// in a function that passes `label` on. A literal counts where it is the value (`"Move"`,
/// `if copy { "Copy" } else { "Move" }`, a match arm's result). A call of a function named
/// `…label` (`pf_label(op)`, `kind.label()`) gives the literals that function returns in the same
/// file. A name built with `format!` or taken from data (an effect's, a plug-in's) is not read.
pub fn undo_labels() -> std::collections::BTreeSet<String> {
let crates = std::path::Path::new(env!("CARGO_MANIFEST_DIR")).join("..");
let mut out = std::collections::BTreeSet::new();
for krate in UNDO_CRATES {
let files = undo_sources(&crates.join(krate).join("src"));
let fns: Vec<SourceFn> = files.iter().enumerate().flat_map(|(i, t)| source_fns(i, t)).collect();
// Functions whose `label` parameter reaches a marker, directly or through one another.
let mut forwards = vec![false; fns.len()];
loop {
let before = forwards.clone();
for (i, f) in fns.iter().enumerate().filter(|(_, f)| f.label.is_some()) {
let passed = |g: &SourceFn| call_args(f.body, g).iter().any(|a| bare(a) == "label");
forwards[i] |= marker_args(f.body).iter().any(|a| bare(a) == "label") || fns.iter().zip(&before).any(|(g, &on)| on && passed(g));
}
if forwards == before {
break;
}
}
let forwarders: Vec<&SourceFn> = fns.iter().zip(&forwards).filter(|(_, on)| **on).map(|(f, _)| f).collect();
// Each expression that gives a step's name, with the file it is in.
let mut exprs: Vec<(usize, &str)> = vec![];
for (i, t) in files.iter().enumerate() {
exprs.extend(marker_args(t).into_iter().map(|a| (i, a)));
for g in forwarders.iter().filter(|g| g.public || g.file == i) {
exprs.extend(call_args(t, g).into_iter().map(|a| (i, a)));
}
}
for f in &fns {
let mut passed = marker_args(f.body);
passed.extend(forwarders.iter().flat_map(|g| call_args(f.body, g)));
if !passed.iter().any(|a| bare(a).starts_with("label")) {
continue;
}
for (at, m) in f.body.match_indices("let label =") {
let rest = &f.body[at + m.len()..];
exprs.push((f.file, rest[..top_level(rest).1].trim()));
}
}
for (file, e) in exprs {
label_literals(e, file, &fns, &mut out);
}
}
out
}
/// The sources of a crate's `src` directory, test modules and files and `//` comments aside.
fn undo_sources(dir: &std::path::Path) -> Vec<String> {
let mut out = vec![];
let mut stack = vec![dir.to_path_buf()];
while let Some(d) = stack.pop() {
for entry in std::fs::read_dir(&d).into_iter().flatten().flatten() {
let path = entry.path();
let name = path.file_name().and_then(|n| n.to_str()).unwrap_or("");
if path.is_dir() {
if name != "tests" {
stack.push(path);
}
} else if name.ends_with(".rs") && !name.starts_with("tests") && !name.ends_with("_tests.rs") {
let text = std::fs::read_to_string(&path).unwrap_or_default();
out.push(without_comments(without_test_module(&text)));
}
}
}
out
}
/// `text` with each `//` comment removed (a `//` inside a string literal stays).
fn without_comments(text: &str) -> String {
let mut out = String::with_capacity(text.len());
let mut i = 0;
while let Some(c) = text[i..].chars().next() {
if let Some(end) = (c == '"' || c == '\'').then(|| quoted_end(text, i)).flatten() {
out.push_str(&text[i..end]);
i = end;
} else if text[i..].starts_with("//") {
i = text[i..].find('\n').map_or(text.len(), |n| i + n);
} else {
out.push(c);
i += c.len_utf8();
}
}
out
}
/// Where the string or character literal starting at `text[at]` (a `"` or `'`) ends, raw strings
/// (`r#"…"#`) included; `None` for a lifetime's `'`.
fn quoted_end(text: &str, at: usize) -> Option<usize> {
let rest = &text[at + 1..];
if text[at..].starts_with('\'') {
let mut it = rest.char_indices();
let (_, c) = it.next()?;
if c == '\\' {
it.next()?;
return it.find(|(_, c)| *c == '\'').map(|(n, _)| at + 1 + n + 1);
}
return it.next().filter(|(_, c)| *c == '\'').map(|(n, _)| at + 1 + n + 1);
}
let hashes = text[..at].chars().rev().take_while(|c| *c == '#').count();
if text[..at - hashes].ends_with('r') {
let close = format!("\"{}", "#".repeat(hashes));
return rest.find(&close).map(|n| at + 1 + n + close.len());
}
let mut it = rest.char_indices();
while let Some((n, c)) = it.next() {
match c {
'\\' => {
it.next();
}
'"' => return Some(at + 1 + n + 1),
_ => {}
}
}
None
}
/// In `s` (the text after an opening bracket), the offset of each top-level `,`, and where the
/// list ends: at the bracket that closes it, a top-level `;`, or the end of `s`.
fn top_level(s: &str) -> (Vec<usize>, usize) {
let (mut commas, mut depth, mut i) = (vec![], 0usize, 0);
while let Some(c) = s[i..].chars().next() {
if let Some(end) = (c == '"' || c == '\'').then(|| quoted_end(s, i)).flatten() {
i = end;
continue;
}
match c {
'(' | '[' | '{' => depth += 1,
')' | ']' | '}' if depth == 0 => return (commas, i),
')' | ']' | '}' => depth -= 1,
';' if depth == 0 => return (commas, i),
',' if depth == 0 => commas.push(i),
_ => {}
}
i += c.len_utf8();
}
(commas, s.len())
}
/// The length of the block at the start of `s` (which starts with `{`), braces included.
fn block_len(s: &str) -> usize {
let mut at = 1;
while at < s.len() {
let end = at + top_level(&s[at..]).1;
if !s[end..].starts_with(';') {
return (end + 1).min(s.len());
}
at = end + 1;
}
s.len()
}
/// The arguments of the call whose `(` comes just before `s`, trimmed.
fn arguments(s: &str) -> Vec<&str> {
let (commas, end) = top_level(s);
let mut out = vec![];
let mut start = 0;
for at in commas.into_iter().chain([end]) {
out.push(s[start..at].trim());
start = at + 1;
}
out
}
/// The functions defined in a source file, with their bodies.
fn source_fns(file: usize, text: &str) -> Vec<SourceFn<'_>> {
let mut out = vec![];
for (at, _) in text.match_indices("fn ") {
if text[..at].chars().next_back().is_some_and(|c| c.is_alphanumeric() || c == '_') {
continue;
}
let after = &text[at + 3..];
let name_len = after.find(|c: char| !(c.is_alphanumeric() || c == '_')).unwrap_or(after.len());
let (name, mut rest) = after.split_at(name_len);
if rest.starts_with('<') {
let mut depth = 0;
let close = rest
.char_indices()
.find(|&(n, c)| {
depth += match c {
'<' => 1,
'>' if !rest[..n].ends_with('-') => -1,
_ => 0,
};
depth == 0
})
.map(|(n, _)| n);
rest = close.map_or("", |n| &rest[n + 1..]);
}
let Some(params) = rest.strip_prefix('(') else { continue };
let names: Vec<&str> =
arguments(params).into_iter().map(|p| p.split(':').next().unwrap_or("").trim().trim_start_matches("mut ").trim()).collect();
let after_params = &params[top_level(params).1..];
let (Some(open), semi) = (after_params.find('{'), after_params.find(';')) else { continue };
if semi.is_some_and(|s| s < open) {
continue;
}
let body = &after_params[open..];
let body = &body[..block_len(body)];
let skip = usize::from(names.first().is_some_and(|n| n.ends_with("self")));
let line = &text[text[..at].rfind('\n').map_or(0, |n| n + 1)..at];
out.push(SourceFn { file, name, public: line.contains("pub"), label: names.iter().position(|n| *n == "label").map(|k| k - skip), body });
}
out
}
/// The first argument at each of [`UNDO_MARKERS`] in `text`.
fn marker_args(text: &str) -> Vec<&str> {
UNDO_MARKERS.iter().flat_map(|m| text.match_indices(m).filter_map(move |(at, _)| arguments(&text[at + m.len()..]).first().copied())).collect()
}
/// The argument at `g`'s `label` position at each call of `g` in `text`.
fn call_args<'a>(text: &'a str, g: &SourceFn) -> Vec<&'a str> {
let Some(k) = g.label else { return vec![] };
let call = format!("{}(", g.name);
text.match_indices(&call)
.filter(|(at, _)| !text[..*at].chars().next_back().is_some_and(|c| c.is_alphanumeric() || c == '_') && !text[..*at].ends_with("fn "))
.filter_map(|(at, _)| arguments(&text[at + call.len()..]).get(k).copied())
.collect()
}
/// An expression without a leading `&` and trailing conversions (`.into()`, `.to_string()`).
fn bare(e: &str) -> &str {
let mut e = e.trim().trim_start_matches('&');
while let Some(s) = [".into()", ".to_string()", ".clone()", ".as_str()", ".to_owned()"].iter().find_map(|t| e.strip_suffix(t)) {
e = s.trim_end();
}
e
}
/// Add the step names expression `e` in source file `file` gives (see [`undo_labels`]).
fn label_literals(e: &str, file: usize, fns: &[SourceFn], out: &mut std::collections::BTreeSet<String>) {
let mut e = bare(e);
if e.starts_with("format!(") {
return;
}
if let Some(body) = e.strip_prefix('|').and_then(|r| r.find('|').map(|n| &r[n + 1..])) {
e = body.trim();
}
let values = string_literals(e, |before, after| {
let before = before.trim_end();
let value = before.is_empty() || ["{", "=>", "else", "Some(", "unwrap_or("].iter().any(|t| before.ends_with(t));
value && !after.trim_start().starts_with("=>") && !after.trim_start().starts_with('|')
});
if !values.is_empty() {
out.extend(values);
return;
}
let Some(inner) = e.strip_suffix(')') else { return };
let Some(open) = inner.rfind('(').filter(|n| !inner[n + 1..].contains(')')) else { return };
let name_at = inner[..open].rfind(|c: char| !(c.is_alphanumeric() || c == '_')).map_or(0, |n| n + 1);
let name = &inner[name_at..open];
let method = inner[..name_at].ends_with('.');
if name.ends_with("label") && (name != "label" || method) {
for f in fns.iter().filter(|f| f.file == file && f.name == name) {
out.extend(string_literals(f.body, |_, after| !after.trim_start().starts_with("=>") && !after.trim_start().starts_with('|')));
}
}
}
/// The string literals in `e` that `keep` accepts, given the text before and after each.
fn string_literals(e: &str, keep: impl Fn(&str, &str) -> bool) -> Vec<String> {
let mut out = vec![];
let mut i = 0;
while let Some(c) = e[i..].chars().next() {
if let Some(end) = (c == '"' || c == '\'').then(|| quoted_end(e, i)).flatten() {
if c == '"'
&& let Some(lit) = string_literal(&e[i + 1..])
&& keep(&e[..i], &e[end..])
{
out.push(lit);
}
i = end;
} else {
i += c.len_utf8();
}
}
out
}
/// `VECTORCRAFT_I18N_DUMP=<file> cargo test -p vectorcraft-ui-egui dump_source_strings` writes every
/// English source string a complete catalog has to cover, one per line, for translators.
#[test]
@@ -480,6 +797,7 @@ fn dump_source_strings() {
let Ok(path) = std::env::var("VECTORCRAFT_I18N_DUMP") else { return };
let mut all = crate::menus::menu_strings();
all.extend(tl_literals());
all.extend(undo_labels());
let text: String = all.iter().map(|s| format!("{}\n", s.replace('\\', "\\\\").replace('\n', "\\n").replace('\t', "\\t"))).collect();
std::fs::write(path, text).expect("write dump");
}
+84
View File
@@ -1347,6 +1347,90 @@ file-filter Templates Шаблони
History Історія
History Options… Параметри історії…
History States Стан історії
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Застосувати набір даних
Area Type Текст в області
Bloat Роздування
Cancel Pattern Editing Скасувати редагування візерунка
Copy Appearance Копіювати оформлення
Copy Guide Копіювати напрямну
Copy in Perspective Копіювати у перспективі
Create Slice from Selection Створити фрагмент із виділення
Create Slices from Guides Створити фрагменти з напрямних
Delete All Slices Видалити всі фрагменти
Delete Data Sets Видалити набори даних
Delete Graphic Styles Видалити графічні стилі
Delete Guide Видалити напрямну
Delete Guides Видалити напрямні
Delete Slice Видалити фрагмент
Delete Style Видалити стиль
Delete Variables Видалити змінні
Delete View Видалити вигляд
Done Editing Pattern Завершити редагування візерунка
Duplicate Rows Дублювати рядки
Edit Perspective Grid Редагувати сітку перспективи
Expand Blend Розібрати перехід
Expand Envelope Розібрати оболонку
Expand Image Trace Розібрати трасування зображення
Expand Live Paint Розібрати швидку заливку
Grid Repeat Повтор сіткою
Image Trace (Make and Expand) Трасування зображення (створити та розібрати)
Live Shape Динамічна фігура
Make Blend Створити перехід
Make Dynamic Зробити динамічним
Make Intertwine Створити переплетення
Make Live Paint Створити швидку заливку
Make Pattern Створити візерунок
Make Slice Створити фрагмент
Make Text Wrap Створити обтікання текстом
Merge Live Paint Об’єднати швидку заливку
Mesh Point Color Колір точки сітки
Mirror Repeat Дзеркальний повтор
Move Envelope Point Перемістити точку оболонки
Move Plane and Copy Objects Перемістити площину й копіювати об’єкти
Move Plane and Objects Перемістити площину й об’єкти
Move Slice Перемістити фрагмент
Move Type on a Path Перемістити текст за контуром
New Guide Нова напрямна
Pen Перо
Place from Library Помістити з бібліотеки
Pucker Зморщування
Radial Repeat Радіальний повтор
Rearrange Artboards Переставити монтажні області
Release Blend Звільнити перехід
Release Envelope Звільнити оболонку
Release Image Trace Звільнити трасування зображення
Release Intertwine Звільнити переплетення
Release Live Paint Звільнити швидку заливку
Release Repeat Звільнити повтор
Release Slice Звільнити фрагмент
Release Text Wrap Звільнити обтікання текстом
Release Threaded Text Звільнити пов’язаний текст
Rename Design Перейменувати дизайн
Rename Style Перейменувати стиль
Rename View Перейменувати вигляд
Reorder Appearance Змінити порядок оформлення
Reorder Artboards Змінити порядок монтажних областей
Reshape Spine Змінити форму осі
Resize Artboard Змінити розмір монтажної області
Resize Slice Змінити розмір фрагмента
Resize Type Area Змінити розмір текстової області
Scale in Perspective Масштабувати у перспективі
Scallop Фестон
Shape Builder Delete Створення фігур (видалення)
Sort Swatches Сортувати зразки
Symbol Screener Прозорість символів
Symbol Scruncher Стиск символів
Symbol Shifter Зсув символів
Symbol Sizer Розмір символів
Symbol Spinner Обертання символів
Symbol Stainer Тонування символів
Symbol Styler Стилізація символів
Text Orientation Орієнтація тексту
Thread Text Зв’язати текст
Twirl Закручування
Typing Введення тексту
Wrinkle Зморшки
Hollow Порожній
Home Додому
Horizon Height: Висота горизонту:
Can't render this file because it contains an unexpected character in line 723 and column 40.
+84
View File
@@ -1546,6 +1546,90 @@ file-filter Templates Mẫu
History Lịch sử
History Options… Tùy chọn lịch sử…
History States Trạng thái lịch sử
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set Áp dụng tập dữ liệu
Area Type Chữ vùng
Bloat Phình
Cancel Pattern Editing Hủy chỉnh sửa họa tiết
Copy Appearance Sao chép diện mạo
Copy Guide Sao chép đường căn
Copy in Perspective Sao chép theo phối cảnh
Create Slice from Selection Tạo lát cắt từ vùng chọn
Create Slices from Guides Tạo lát cắt từ đường căn
Delete All Slices Xóa tất cả lát cắt
Delete Data Sets Xóa tập dữ liệu
Delete Graphic Styles Xóa kiểu đồ họa
Delete Guide Xóa đường căn
Delete Guides Xóa các đường căn
Delete Slice Xóa lát cắt
Delete Style Xóa kiểu
Delete Variables Xóa biến số
Delete View Xóa chế độ xem
Done Editing Pattern Hoàn tất chỉnh sửa họa tiết
Duplicate Rows Nhân bản hàng
Edit Perspective Grid Chỉnh sửa lưới phối cảnh
Expand Blend Mở rộng hòa trộn
Expand Envelope Mở rộng Envelope
Expand Image Trace Mở rộng vector hóa ảnh
Expand Live Paint Mở rộng tô trực tiếp
Grid Repeat Lặp lại dạng lưới
Image Trace (Make and Expand) Vector hóa ảnh (tạo và mở rộng)
Live Shape Hình dạng trực tiếp
Make Blend Tạo hòa trộn
Make Dynamic Tạo động
Make Intertwine Tạo đan xen
Make Live Paint Tạo tô trực tiếp
Make Pattern Tạo họa tiết
Make Slice Tạo lát cắt
Make Text Wrap Tạo bao văn bản
Merge Live Paint Hợp nhất tô trực tiếp
Mesh Point Color Màu điểm lưới
Mirror Repeat Lặp lại đối xứng
Move Envelope Point Di chuyển điểm Envelope
Move Plane and Copy Objects Di chuyển mặt phẳng và sao chép đối tượng
Move Plane and Objects Di chuyển mặt phẳng và đối tượng
Move Slice Di chuyển lát cắt
Move Type on a Path Di chuyển chữ trên đường dẫn
New Guide Đường căn mới
Pen Bút
Place from Library Đặt từ thư viện
Pucker Nhíu
Radial Repeat Lặp lại hướng tâm
Rearrange Artboards Sắp xếp lại bảng vẽ
Release Blend Giải phóng hòa trộn
Release Envelope Giải phóng Envelope
Release Image Trace Giải phóng vector hóa ảnh
Release Intertwine Giải phóng đan xen
Release Live Paint Giải phóng tô trực tiếp
Release Repeat Giải phóng lặp lại
Release Slice Giải phóng lát cắt
Release Text Wrap Giải phóng bao văn bản
Release Threaded Text Giải phóng văn bản chuỗi
Rename Design Đổi tên thiết kế
Rename Style Đổi tên kiểu
Rename View Đổi tên chế độ xem
Reorder Appearance Sắp xếp lại diện mạo
Reorder Artboards Đổi thứ tự bảng vẽ
Reshape Spine Định hình lại trục
Resize Artboard Đổi kích thước bảng vẽ
Resize Slice Đổi kích thước lát cắt
Resize Type Area Đổi kích thước vùng chữ
Scale in Perspective Tỷ lệ theo phối cảnh
Scallop Vỏ sò
Shape Builder Delete Tạo hình dạng (xóa)
Sort Swatches Sắp xếp mẫu màu
Symbol Screener Lọc ký hiệu
Symbol Scruncher Thu gọn ký hiệu
Symbol Shifter Dịch chuyển ký hiệu
Symbol Sizer Kích thước ký hiệu
Symbol Spinner Xoay ký hiệu
Symbol Stainer Tô màu ký hiệu
Symbol Styler Tạo kiểu ký hiệu
Text Orientation Hướng chữ
Thread Text Xâu chuỗi văn bản
Twirl Xoáy
Typing Nhập chữ
Wrinkle Nhăn
Hold Giữ
Hollow Rỗng
Home Trang chủ
1 # Vietnamese (vi) catalog. Same format as zh-hant.tsv: context <TAB> source <TAB> translation
1546
1547
1548
1549 # History panel: the names of undo steps (`every_undo_label_is_translated`).
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
+78
View File
@@ -1295,6 +1295,84 @@ file-filter Templates 模板
History 历史记录
History Options… 历史记录选项…
History States 历史记录步数
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set 应用数据集
Bloat 膨胀
Cancel Pattern Editing 取消图案编辑
Copy Appearance 复制外观
Copy Guide 复制参考线
Copy in Perspective 在透视中复制
Create Slice from Selection 从选区创建切片
Create Slices from Guides 从参考线创建切片
Delete All Slices 删除所有切片
Delete Data Sets 删除数据集
Delete Graphic Styles 删除图形样式
Delete Guide 删除参考线
Delete Guides 删除参考线
Delete Slice 删除切片
Delete Style 删除样式
Delete Variables 删除变量
Delete View 删除视图
Done Editing Pattern 完成图案编辑
Duplicate Rows 复制行
Edit Perspective Grid 编辑透视网格
Expand Blend 扩展混合
Expand Envelope 扩展封套
Expand Image Trace 扩展图像描摹
Expand Live Paint 扩展实时上色
Grid Repeat 网格重复
Live Shape 实时形状
Make Blend 创建混合
Make Dynamic 使其动态化
Make Intertwine 创建交织
Make Live Paint 创建实时上色
Make Pattern 创建图案
Make Slice 创建切片
Merge Live Paint 合并实时上色
Mesh Point Color 网格点颜色
Mirror Repeat 镜像重复
Move Envelope Point 移动封套点
Move Plane and Copy Objects 移动平面并复制对象
Move Plane and Objects 移动平面和对象
Move Slice 移动切片
Move Type on a Path 移动路径文字
New Guide 新建参考线
Place from Library 从库置入
Pucker 收缩
Radial Repeat 径向重复
Rearrange Artboards 重新排列画板
Release Blend 释放混合
Release Envelope 释放封套
Release Intertwine 释放交织
Release Live Paint 释放实时上色
Release Repeat 释放重复
Release Slice 释放切片
Release Threaded Text 释放串接文本
Rename Design 重命名设计
Rename Style 重命名样式
Rename View 重命名视图
Reorder Appearance 重新排序外观
Reorder Artboards 重新排序画板
Reshape Spine 整形脊线
Resize Artboard 调整画板大小
Resize Slice 调整切片大小
Resize Type Area 调整文字区域大小
Scale in Perspective 在透视中缩放
Scallop 扇贝
Shape Builder Delete 形状生成器 (删除)
Sort Swatches 排序色板
Symbol Screener 符号透明度
Symbol Scruncher 符号紧缩
Symbol Shifter 符号移位
Symbol Sizer 符号缩放
Symbol Spinner 符号旋转
Symbol Stainer 符号着色
Symbol Styler 符号样式
Text Orientation 文字方向
Thread Text 串接文本
Twirl 旋转扭曲
Typing 输入文字
Wrinkle 褶皱
Hollow 空心
Home 主页
Horizon Height: 地平线高度:
Can't render this file because it contains an unexpected character in line 2 and column 73.
+84
View File
@@ -1325,6 +1325,90 @@ file-filter Templates 範本
History 步驟記錄
History Options… 步驟記錄選項…
History States 步驟記錄狀態
# History panel: the names of undo steps (`every_undo_label_is_translated`).
Apply Data Set 套用資料集
Area Type 區域文字
Bloat 膨脹
Cancel Pattern Editing 取消圖樣編輯
Copy Appearance 複製外觀
Copy Guide 複製參考線
Copy in Perspective 在透視中複製
Create Slice from Selection 從選取範圍建立切片
Create Slices from Guides 從參考線建立切片
Delete All Slices 刪除所有切片
Delete Data Sets 刪除資料集
Delete Graphic Styles 刪除繪圖樣式
Delete Guide 刪除參考線
Delete Guides 刪除參考線
Delete Slice 刪除切片
Delete Style 刪除樣式
Delete Variables 刪除變數
Delete View 刪除檢視
Done Editing Pattern 完成圖樣編輯
Duplicate Rows 製作列複本
Edit Perspective Grid 編輯透視格點
Expand Blend 展開漸變
Expand Envelope 展開封套
Expand Image Trace 展開影像描圖
Expand Live Paint 展開即時上色
Grid Repeat 格點重複
Image Trace (Make and Expand) 影像描圖 (製作並展開)
Live Shape 即時形狀
Make Blend 製作漸變
Make Dynamic 使其動態化
Make Intertwine 製作交織
Make Live Paint 製作即時上色
Make Pattern 製作圖樣
Make Slice 製作切片
Make Text Wrap 製作文字繞圖
Merge Live Paint 合併即時上色
Mesh Point Color 網格點顏色
Mirror Repeat 鏡射重複
Move Envelope Point 移動封套點
Move Plane and Copy Objects 移動平面並複製物件
Move Plane and Objects 移動平面和物件
Move Slice 移動切片
Move Type on a Path 移動路徑文字
New Guide 新增參考線
Pen 筆型
Place from Library 從資料庫置入
Pucker 縮攏
Radial Repeat 放射狀重複
Rearrange Artboards 重新排列工作區域
Release Blend 釋放漸變
Release Envelope 釋放封套
Release Image Trace 釋放影像描圖
Release Intertwine 釋放交織
Release Live Paint 釋放即時上色
Release Repeat 釋放重複
Release Slice 釋放切片
Release Text Wrap 釋放文字繞圖
Release Threaded Text 釋放串連文字
Rename Design 重新命名設計
Rename Style 重新命名樣式
Rename View 重新命名檢視
Reorder Appearance 重新排序外觀
Reorder Artboards 重新排序工作區域
Reshape Spine 改變脊線外框
Resize Artboard 調整工作區域大小
Resize Slice 調整切片大小
Resize Type Area 調整文字區域大小
Scale in Perspective 在透視中縮放
Scallop 扇形化
Shape Builder Delete 形狀建立 (刪除)
Sort Swatches 排序色票
Symbol Screener 符號濾色器
Symbol Scruncher 符號緊縮器
Symbol Shifter 符號移位器
Symbol Sizer 符號縮放器
Symbol Spinner 符號旋轉器
Symbol Stainer 符號染色器
Symbol Styler 符號樣式器
Text Orientation 文字方向
Thread Text 串連文字
Twirl 旋轉扭曲
Typing 輸入文字
Wrinkle 皺摺
Hollow 空心
Home 首頁
Horizon Height: 地平線高度:
Can't render this file because it contains an unexpected character in line 6 and column 47.
+30 -4
View File
@@ -13,16 +13,32 @@ pub fn steps_to(current: usize, target: usize) -> i64 {
target as i64 - current as i64
}
/// A step's name in `lang`: its plain row, else the row of the same name with an ellipsis (a menu
/// item's, such as an effect's) without the ellipsis; `None` when the catalog has neither.
pub fn step_name(lang: crate::i18n::Lang, label: &str) -> Option<String> {
use crate::i18n::{has, tr};
if has(lang, label) {
return Some(tr(lang, label).to_string());
}
let dotted = format!("{label}…");
has(lang, &dotted).then(|| tr(lang, &dotted).trim_end_matches('…').to_string())
}
/// A step's name as the panel lists it: in the UI language, else as recorded.
fn shown(label: &str) -> String {
step_name(crate::i18n::current(), label).unwrap_or_else(|| label.to_string())
}
pub fn show(app: &mut VectorcraftApp, ui: &mut Ui) {
let t = Tokens::get(ui.ctx());
let Some(st) = app.session.active() else {
super::empty_state(ui, "history", tl!("No document"), tl!("Open a document to see its history."));
return;
};
let mut rows: Vec<(String, bool)> = vec![("Open".to_string(), false)];
rows.extend(st.history.undo.iter().map(|h| (h.label.clone(), false)));
let mut rows: Vec<(String, bool)> = vec![(tl!("Open").to_string(), false)];
rows.extend(st.history.undo.iter().map(|h| (shown(&h.label), false)));
let current = rows.len() - 1;
rows.extend(st.history.redo.iter().rev().map(|h| (h.label.clone(), true)));
rows.extend(st.history.redo.iter().rev().map(|h| (shown(&h.label), true)));
let mut steps: Option<i64> = None;
crate::widgets::list_box(ui, |ui| {
ui.spacing_mut().item_spacing.y = 0.0;
@@ -42,7 +58,7 @@ pub fn show(app: &mut VectorcraftApp, ui: &mut Ui) {
if *future { t.text_disabled } else { t.icon },
);
let col = if *future { t.text_disabled } else { t.text };
ui.painter().text(r.left_center() + vec2(30.0, 0.0), egui::Align2::LEFT_CENTER, tl!(label), egui::FontId::proportional(12.5), col);
ui.painter().text(r.left_center() + vec2(30.0, 0.0), egui::Align2::LEFT_CENTER, label, egui::FontId::proportional(12.5), col);
if resp.clicked() && i != current {
steps = Some(steps_to(current, i));
}
@@ -73,4 +89,14 @@ mod tests {
assert_eq!(steps_to(2, 4), 2);
assert_eq!(steps_to(3, 3), 0);
}
/// A step named after an effect whose catalog row has only the menu label with its ellipsis
/// takes that row's translation without the ellipsis; a name with no row has none.
#[test]
fn effect_steps_read_the_menu_row() {
let ja = crate::i18n::Lang::from_code("ja").expect("ja registered");
assert_eq!(step_name(ja, "Revolve").as_deref(), Some("回転体"));
assert_eq!(step_name(ja, "Feather").as_deref(), Some("ぼかし"));
assert_eq!(step_name(ja, "No Such Step"), None);
}
}
+1
View File
@@ -453,6 +453,7 @@ Moved from the ROADMAP's "Shipped so far" on 2026-10-10. Update it when a featur
- The dock's double arrow collapses Properties, Layers and Libraries to icons at the top of the icon column, popping out like the other icon panels, and expands them again (`window.collapseDock`, kept with the preferences and in saved workspaces). The icon column's own arrow (expanding the icon panels into a full column) is not done.
- Czech render-site labels: desktop/web file filters, diagnostics, suggested preset names and contributor tooltips/plurals now use catalog lookups; gradients have Czech adjective agreement and printer marks have a separate context (PDF/Print and Summary). Search, Home, toolbar/panel tooltips and Preferences already look up their labels. Every complete catalog has rows for these labels and for the Roman and Japanese printer mark styles. Evidence: `i18n::tests::czech_render_site_follow_up`, `i18n::tests::complete_catalogs_translate_render_site_labels`, `dialogs::tests_modal::printer_mark_labels_are_distinct_from_language_names`; see [localization-parity.md](localization-parity.md).
- Localised UI: menus (in-window and native), panels, dialogs, toolbar and Preferences read from per-language catalogs (`crates/ui-egui/src/i18n`, see `docs/development.md`); Traditional Chinese (Taiwan), Simplified Chinese (mainland), Japanese, Korean, Vietnamese, German, Spanish, French, Italian, Polish, Brazilian Portuguese, Russian and Ukrainian ship complete, and Czech covers every menu label (and more), with system-locale detection on macOS, Windows, Linux and the web (the browser's languages, or `?lang=`), a Language preference and, on macOS, a VectorCraft ▸ Language menu. Names are never translated (fonts and their styles, layers, artboards, saved presets, user libraries, custom workspaces, recent files, plug-ins).
- The History panel translates the undo step names the engine, the tools and the shell write as literals: each has a row in every complete catalog (`every_undo_label_is_translated`), and a step whose catalog row exists only with an ellipsis (such as an effect's menu name) shows that row without the ellipsis.
- Native macOS menu bar, vector tool cursors, a ⌘K command palette, middle-button panning with any tool. Native menus explicitly end tracking on command selection, outside window presses and Escape; menu updates wait until tracking ends, and a dismissing press never starts a canvas gesture (M14.8).
- The errors of the blend spine commands (Move Spine Point, Reshape Spine Segment, Add Spine Point and Delete Spine Point) show in the status bar in the interface language: each has a row in every catalog that translates all status and error messages and in Bulgarian (`blend_spine_param_errors_are_translated`).
- The macOS menu bar is built from the in-window menus (one model, `native_menu`) and laid out as a Mac app's: the VectorCraft menu holds About, Settings ▸ (each Preferences page, General… ⌘K), Language ▸, Appearance ▸ (UI brightness), Services, Hide VectorCraft ⌃⌘H (⌘H stays Hide Edges), Hide Others, Show All and Quit; Window gains Minimize ⌃⌘M, Zoom and Bring All to Front, and Help the system's search field. Its key equivalents go back to egui as key presses, so user shortcuts, focused text fields and the Type tool's input method behave as in the window, and nothing fires twice; enabled, check marks and labels update in place. `--in-window-menus` or `VECTORCRAFT_IN_WINDOW_MENUS=1` keeps the menus in the window; `ui.inspect` reports `nativeMenuBar`.