mirror of
https://github.com/storytold/lightcraft.git
synced 2026-11-02 14:39:41 -06:00
LR-BEHAV-DIALOGS: dialog confirm buttons name their action
The confirm button was "OK" in every dialog that had no special case: New Album, Rename Photos, Auto-Stack, Capture Time, Export and more. It now says what it does: Create, Rename, Stack, Change, Cull, Copy, Paste, Export N Photos, and a verb per one-field prompt command. "OK" stays only for a prompt opened with a command that has no verb. The automation id button:dialogOk is unchanged. Rename Photos' help text pointed at the Tags button without saying what it does; it now says it lists template placeholders, and that each file is renamed on disk with its XMP sidecar. Contact Sheet, Auto-Stack and Slideshow Export said "1 photos" / "1 stacks"; their nouns now agree with the count. All 13 catalogs updated. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude
parent
59a5d00c60
commit
023ee0ef5b
@@ -49,7 +49,7 @@
|
||||
"Couldn't open the editor: {e}": "Editor se nepodařilo otevřít: {e}",
|
||||
"Create Keyword Tag Inside “{name}”…": "Vytvořit značku klíčového slova uvnitř „{name}“…",
|
||||
"Create {n} Virtual Copies": "Vytvořit virtuální kopie: {n}",
|
||||
"Creates {} stacks from {} of {scope}": "Vytvoří {} sad z {} v {scope}",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Vytvoří sady: {stacks} z fotografií: {photos} ({scope}){:.0}",
|
||||
"Decoder: {reason}": "Dekodér: {reason}",
|
||||
"Delete \"{label}\"": "Odstranit „{label}“",
|
||||
"Delete \"{label}\" (and the mask)": "Odstranit „{label}“ (i masku)",
|
||||
@@ -279,7 +279,7 @@
|
||||
"Skipped {problem}": "Přeskočeno: {problem}",
|
||||
"…and {more} more": "…a další: {more}",
|
||||
"Template preview: {name}": "Náhled šablony: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "Fotografie v zobrazení: {n} · snímky: {slides} · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "Fotografií v zobrazení: {n} · snímků: {slides} · {time}{:.0}{:.0}",
|
||||
"{n} pages": "Stránky: {n}",
|
||||
"{n} JPEG files": "Soubory JPEG: {n}",
|
||||
"{s} s of AV1 video": "Video AV1: {s} s",
|
||||
@@ -293,7 +293,7 @@
|
||||
"{what} merge added at {mp}: its full size, {full}, needs more memory than this computer has": "Přidáno sloučení {what} v rozlišení {mp}: plné rozlišení {full} vyžaduje více paměti, než má tento počítač",
|
||||
"{what} merge added at {mp}, the largest a panorama can be (its full size is {full})": "Přidáno sloučení {what} v rozlišení {mp}, což je nejvyšší možné rozlišení panoramatu (plné rozlišení je {full})",
|
||||
"Color space: Rec. 2020 {curve} (HDR AVIF)": "Barevný prostor: Rec. 2020 {curve} (HDR AVIF)",
|
||||
"{n} selected photos · {pages} pages": "Vybrané fotografie: {n} · stránky: {pages}",
|
||||
"{n} selected photo{} · {pages} page{}": "Vybrané fotografie: {n} · stránek: {pages}{:.0}{:.0}",
|
||||
"Already in “{}”": "Již v „{}“",
|
||||
"Move {n} photo{} to “{}”": "Přesunout do „{1}“ fotografie: {n}{0:.0}",
|
||||
"Move {n} photo{} to “{}”?": "Přesunout do „{1}“ fotografie: {n}{0:.0}?",
|
||||
|
||||
@@ -254,6 +254,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "Doplnit polohu fotografií ze záznamu trasy",
|
||||
"Auto-Tag from Tracklog": "Doplnit polohu ze záznamu trasy",
|
||||
"Auto-Tag from Tracklog…": "Doplnit polohu ze záznamu trasy…",
|
||||
"Add Locations": "Doplnit polohy",
|
||||
"Automatic": "Automatické",
|
||||
"Automatic renders the Detail view at the size it is shown, up to the photo's own pixels. Choose a size to cap it: smaller is faster.": "Automatický režim vykresluje detail podle velikosti zobrazení, nejvýše v rozlišení fotografie. Zvolením velikosti nastavíte limit: menší je rychlejší.",
|
||||
"Automatic uses the graphics card where it is faster than the processor: both are timed on this computer the first time a photo is made.": "Automatický režim používá grafickou kartu tam, kde je rychlejší než procesor: při prvním zpracování fotografie se na tomto počítači změří obě možnosti.",
|
||||
@@ -499,6 +500,7 @@
|
||||
"Cropped": "Oříznuto",
|
||||
"Cross Process": "Křížové vyvolání",
|
||||
"Culling": "Třídění",
|
||||
"Cull": "Roztřídit",
|
||||
"Curve": "Křivka",
|
||||
"Custom": "Vlastní",
|
||||
"Custom template…": "Vlastní šablona…",
|
||||
@@ -1885,7 +1887,7 @@
|
||||
"System default": "Výchozí systémové nastavení",
|
||||
"Table": "Tabulka",
|
||||
"Tags": "Značky",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Značky: viz Značky vedle šablony. Soubory se přejmenují na disku (s přidruženými XMP); existující názvy získají -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Tlačítko Značky vypíše zástupné symboly pro šablonu, například {date} nebo {seq}. Každý soubor se na disku přejmenuje spolu s doprovodným souborem XMP; obsazený název dostane příponu -1, -2…",
|
||||
"Take a snapshot": "Pořídit snímek stavu",
|
||||
"Targeted Adjustment": "Cílená úprava",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "Cílená úprava: tažením nahoru/dolů po fotografii upravíte barvy v daném místě",
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"Color space: Rec. 2020 {curve} (HDR AVIF)": "Farbraum: Rec. 2020 {curve} (HDR-AVIF)",
|
||||
"Couldn't open the editor: {e}": "Editor konnte nicht geöffnet werden: {e}",
|
||||
"Create {n} Virtual Copies": "{n} virtuelle Kopien erstellen",
|
||||
"Creates {} stacks from {} of {scope}": "Erstellt {} Stapel aus {} von {scope}",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Erstellt {stacks} Stapel aus {photos} von {scope}{:.0}",
|
||||
"Decoder: {reason}": "Decoder: {reason}",
|
||||
"Delete \"{label}\"": "„{label}“ löschen",
|
||||
"Delete \"{label}\" (and the mask)": "„{label}“ löschen (und die Maske)",
|
||||
@@ -163,7 +163,6 @@
|
||||
"{n} photo{}": "{n} Foto{}",
|
||||
"{n} photo{} match · updates automatically as photos change": "Passende Fotos: {n}{:.0} · wird bei Änderungen an Fotos automatisch aktualisiert",
|
||||
"{n} photo{} now · updates automatically as photos change": "Derzeit {n} Foto{} · wird bei Änderungen an Fotos automatisch aktualisiert",
|
||||
"{n} selected photos · {pages} pages": "{n} ausgewählte Fotos · {pages} Seiten",
|
||||
"{pid} (missing)": "{pid} (fehlt)",
|
||||
"{sel_n} selected · {counted}": "{sel_n} ausgewählt · {counted}",
|
||||
"{stage}… {:.0}%": "{stage}… {:.0}%",
|
||||
@@ -281,7 +280,8 @@
|
||||
"Skipped {problem}": "Übersprungen: {problem}",
|
||||
"…and {more} more": "…und {more} weitere",
|
||||
"Template preview: {name}": "Vorlagenvorschau: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "{n} Fotos in der Ansicht · {slides} Dias · {time}",
|
||||
"{n} selected photo{} · {pages} page{}": "Ausgewählte Fotos: {n} · Seiten: {pages}{:.0}{:.0}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "Fotos in der Ansicht: {n} · Folien: {slides} · {time}{:.0}{:.0}",
|
||||
"{n} pages": "{n} Seiten",
|
||||
"{n} JPEG files": "{n} JPEG-Dateien",
|
||||
"{s} s of AV1 video": "{s} s AV1-Video",
|
||||
|
||||
@@ -135,6 +135,7 @@
|
||||
"Auto-Tag from Tracklog": "Anhand eines GPS-Tracks automatisch verorten",
|
||||
"Auto-Tag from Tracklog: GPS locations for your photos from a GPX track log, matched by capture time.": "Automatisches Verorten anhand eines GPS-Tracks: GPS-Orte für deine Fotos aus einem GPX-Track, abgeglichen nach Aufnahmezeit.",
|
||||
"Auto-Tag from Tracklog…": "Anhand eines GPS-Tracks automatisch verorten…",
|
||||
"Add Locations": "Orte hinzufügen",
|
||||
"Automatic": "Automatisch",
|
||||
"Automatic renders the Detail view at the size it is shown, up to the photo's own pixels. Choose a size to cap it: smaller is faster.": "Automatisch rendert die Detailansicht in der angezeigten Größe, bis zu den eigenen Pixeln des Fotos. Eine Größe wählen, um sie zu begrenzen: kleiner ist schneller.",
|
||||
"Automatically Write Changes into XMP": "Änderungen automatisch in XMP schreiben",
|
||||
@@ -360,6 +361,7 @@
|
||||
"Crop, Rotate, Geometry": "Zuschnitt, Drehung, Geometrie",
|
||||
"Cross Process": "Crossentwicklung",
|
||||
"Culling": "Fotoauswahl",
|
||||
"Cull": "Auswählen",
|
||||
"Curve": "Kurve",
|
||||
"Custom": "Benutzerdefiniert",
|
||||
"Custom template…": "Benutzerdefinierte Vorlage…",
|
||||
@@ -1521,7 +1523,7 @@
|
||||
"TZ/ZS series, Leica D-Lux, V-Lux and C-Lux, and the GH6, GH7, G9 II, S5 II and S9 generation. They start from a": "und TZ/ZS-Serien, Leica D-Lux, V-Lux und C-Lux sowie GH6, GH7, G9 II, S5 II und S9. Ihr Farb- und Tonwertbild wird",
|
||||
"Table": "Tabelle",
|
||||
"Tags": "Platzhalter",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Platzhalter: Siehe „Platzhalter“ neben der Vorlage. Dateien werden auf dem Datenträger umbenannt (mit ihren XMP-Begleitdateien); vorhandene Namen erhalten -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Die Schaltfläche „Platzhalter“ zeigt, was in der Vorlage stehen kann, z. B. {date} oder {seq}. Jede Datei wird auf dem Datenträger zusammen mit ihrer XMP-Begleitdatei umbenannt; ein bereits vergebener Name erhält -1, -2…",
|
||||
"Take a snapshot": "Schnappschuss erstellen",
|
||||
"Targeted Adjustment": "Gezielte Anpassung",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "Gezielte Anpassung: Im Foto nach oben/unten ziehen, um die dortigen Farben anzupassen",
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"Color space: Rec. 2020 {curve} (HDR AVIF)": "Espacio de color: Rec. 2020 {curve} (AVIF HDR)",
|
||||
"Couldn't open the editor: {e}": "No se pudo abrir el editor: {e}",
|
||||
"Create {n} Virtual Copies": "Crear {n} copias virtuales",
|
||||
"Creates {} stacks from {} of {scope}": "Crea {} pilas a partir de {} de {scope}",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Crea {stacks} pila{} a partir de {photos} de {scope}",
|
||||
"Decoder: {reason}": "Decodificador: {reason}",
|
||||
"Delete \"{label}\"": "Eliminar \"{label}\"",
|
||||
"Delete \"{label}\" (and the mask)": "Eliminar \"{label}\" (y la máscara)",
|
||||
@@ -163,7 +163,7 @@
|
||||
"{n} photo{}": "{n} foto{}",
|
||||
"{n} photo{} match · updates automatically as photos change": "{n} foto{0} coincidente{0} · se actualiza automáticamente cuando cambian las fotos",
|
||||
"{n} photo{} now · updates automatically as photos change": "{n} foto{} ahora · se actualiza automáticamente cuando cambian las fotos",
|
||||
"{n} selected photos · {pages} pages": "{n} fotos seleccionadas · {pages} páginas",
|
||||
"{n} selected photo{} · {pages} page{}": "{n} foto{0} seleccionada{0} · {pages} página{1}",
|
||||
"{pid} (missing)": "{pid} (falta)",
|
||||
"{sel_n} selected · {counted}": "{sel_n} seleccionadas · {counted}",
|
||||
"{stage}… {:.0}%": "{stage}… {:.0}%",
|
||||
@@ -281,7 +281,7 @@
|
||||
"Skipped {problem}": "Omitido: {problem}",
|
||||
"…and {more} more": "…y {more} más",
|
||||
"Template preview: {name}": "Vista previa de la plantilla: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "{n} fotos en la vista · {slides} diapositivas · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "{n} foto{0} en la vista · {slides} diapositiva{1} · {time}",
|
||||
"{n} pages": "{n} páginas",
|
||||
"{n} JPEG files": "{n} archivos JPEG",
|
||||
"{s} s of AV1 video": "{s} s de vídeo AV1",
|
||||
|
||||
@@ -118,6 +118,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "Etiquetar fotos automáticamente desde el registro de ruta",
|
||||
"Auto-Tag from Tracklog": "Etiquetar automáticamente desde el registro de ruta",
|
||||
"Auto-Tag from Tracklog…": "Etiquetar automáticamente desde el registro de ruta…",
|
||||
"Add Locations": "Añadir ubicaciones",
|
||||
"Automatic": "Automático",
|
||||
"Automatic renders the Detail view at the size it is shown, up to the photo's own pixels. Choose a size to cap it: smaller is faster.": "Automático muestra la vista Detalle al tamaño en que se ve, hasta los píxeles propios de la foto. Elegir un tamaño para limitarla: cuanto más pequeño, más rápido.",
|
||||
"Automatically Write Changes into XMP": "Escribir automáticamente los cambios en XMP",
|
||||
@@ -350,6 +351,7 @@
|
||||
"Crop, Rotate, Geometry": "Recorte, rotación, geometría",
|
||||
"Cross Process": "Proceso cruzado",
|
||||
"Culling": "Selección",
|
||||
"Cull": "Seleccionar",
|
||||
"Curve": "Curva",
|
||||
"Custom": "Personalizado",
|
||||
"Custom template…": "Plantilla personalizada…",
|
||||
@@ -1537,7 +1539,7 @@
|
||||
"System default": "Predeterminado del sistema",
|
||||
"Table": "Tabla",
|
||||
"Tags": "Etiquetas",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Etiquetas: ver Etiquetas junto a la plantilla. Los archivos cambian de nombre en el disco (con sus archivos XMP complementarios); los nombres existentes reciben -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "El botón Etiquetas muestra los marcadores que puedes usar en la plantilla, como {date} o {seq}. Cada archivo cambia de nombre en el disco junto con su archivo XMP; si el nombre ya existe, se le añade -1, -2…",
|
||||
"Take a snapshot": "Crear una instantánea",
|
||||
"Targeted Adjustment": "Ajuste selectivo",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "Ajuste selectivo: arrastrar hacia arriba/abajo en la foto para ajustar los colores de ese punto",
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
"Create Keyword Tag Inside “{name}”…": "Luo avainsanatunniste kohteen ”{name}” sisään…",
|
||||
"Create the keyword “{name}”": "Luo avainsana ”{name}”",
|
||||
"Create {n} Virtual Copies": "Luo {n} virtuaalikopiota",
|
||||
"Creates {} stacks from {} of {scope}": "Luo pinoja: {} · kuvia: {} ({scope})",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Luo pinoja: {stacks}, kuvia: {photos} ({scope}){:.0}",
|
||||
"Decoder: {reason}": "Purkaja: {reason}",
|
||||
"Delete \"{label}\"": "Poista ”{label}”",
|
||||
"Delete \"{label}\" (and the mask)": "Poista ”{label}” (ja maski)",
|
||||
@@ -240,15 +240,15 @@
|
||||
"{n} originals opened in the other editor": "Toisessa muokkausohjelmassa avattuja alkuperäisiä: {n}",
|
||||
"{n} pages": "Sivuja: {n}",
|
||||
"{n} photos": "Kuvia: {n}",
|
||||
"{n} photos in view · {slides} slides · {time}": "Kuvia näkymässä: {n} · dioja: {slides} · {time}",
|
||||
"{n} photos in {} are hidden by the filters above": "Yllä olevat suodattimet piilottavat kuvia kohteessa {}: {n}",
|
||||
"{n} photos opened for editing; each is stacked with its original": "Muokattavaksi avattuja kuvia: {n}; kukin pinotaan alkuperäisensä kanssa",
|
||||
"{n} photo{}": "Kuvia: {n}{:.0}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "Kuvia näkymässä: {n} · dioja: {slides} · {time}{:.0}{:.0}",
|
||||
"{n} photo{} match · updates automatically as photos change": "Täsmääviä kuvia: {n}{:.0} · päivittyy automaattisesti kuvien muuttuessa",
|
||||
"{n} photo{} now · updates automatically as photos change": "Kuvia nyt: {n}{:.0} · päivittyy automaattisesti kuvien muuttuessa",
|
||||
"{n} preset{}": "Esiasetuksia: {n}{:.0}",
|
||||
"{n} raws can now be developed from their raw data": "Raw-kuvia, jotka voidaan nyt kehittää raakadatastaan: {n}",
|
||||
"{n} selected photos · {pages} pages": "Valittuja kuvia: {n} · sivuja: {pages}",
|
||||
"{n} selected photo{} · {pages} page{}": "Valittuja kuvia: {n} · sivuja: {pages}{:.0}{:.0}",
|
||||
"{n} similar photo{} · View ▸ Clear Filters to see all": "Samankaltaisia kuvia: {n}{:.0} · Näytä → Tyhjennä suodattimet näyttääksesi kaikki",
|
||||
"{n} tasks are still running: {names}. Quitting stops them.": "Käynnissä olevia tehtäviä: {n}: {names}. Lopettaminen pysäyttää ne.",
|
||||
"{n} {noun}": "{n} {noun}",
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
"Add Catchlight": "Lisää silmänvalo",
|
||||
"Add Face Model…": "Lisää kasvomalli…",
|
||||
"Add Folder to Local": "Lisää kansio paikalliseen",
|
||||
"Add Locations": "Lisää sijainnit",
|
||||
"Add Mask": "Lisää maski",
|
||||
"Add Object Click": "Lisää kohdenapsautus",
|
||||
"Add Point Color Sample": "Lisää pistevärin näyte",
|
||||
@@ -269,6 +270,7 @@
|
||||
"Center": "Keskellä",
|
||||
"Change": "Muuta",
|
||||
"Change Component Mode": "Vaihda komponenttitilaa",
|
||||
"Change Time": "Muuta aikaa",
|
||||
"Characters not allowed in file names (/ \\ : * ? \" < > |) become -; an existing name gets -1, -2….": "Tiedostonimissä kiellettyjä merkkejä (/ \\ : * ? \" < > |) korvataan merkillä -; olemassa oleva nimi saa lopun -1, -2….",
|
||||
"Charcoal": "Hiili",
|
||||
"Check All": "Valitse kaikki",
|
||||
@@ -430,6 +432,7 @@
|
||||
"Create Smart Album from Filter…": "Luo älyalbumi suodattimesta…",
|
||||
"Create Smart Album…": "Luo älyalbumi…",
|
||||
"Create Stack": "Luo pino",
|
||||
"Create Stacks": "Luo pinot",
|
||||
"Create Version": "Luo versio",
|
||||
"Create Version from Step": "Luo versio vaiheesta",
|
||||
"Create Virtual Copy": "Luo virtuaalikopio",
|
||||
@@ -444,6 +447,7 @@
|
||||
"Crop, Rotate, Geometry": "Rajaus, kierto, geometria",
|
||||
"Cropped": "Rajattu",
|
||||
"Cross Process": "Ristiinkäsittely",
|
||||
"Cull": "Karsi",
|
||||
"Culling": "Karsinta",
|
||||
"Curve": "Käyrä",
|
||||
"Curve channel": "Käyrän kanava",
|
||||
@@ -1971,7 +1975,6 @@
|
||||
"System default": "Järjestelmän oletus",
|
||||
"Table": "Taulukko",
|
||||
"Tags": "Tunnisteet",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Tunnisteet: katso mallipohjan vieressä olevat Tunnisteet. Tiedostot nimetään uudelleen levyllä (XMP-sivutiedostoineen); olemassa olevat nimet saavat lopun -1, -2…",
|
||||
"Take a snapshot": "Ota tilannevedos",
|
||||
"Targeted Adjustment": "Kohdistettu säätö",
|
||||
"Targeted adjustment on: drag up or down on the photo · Esc to stop": "Kohdistettu säätö päällä: vedä kuvassa ylös tai alas · Esc lopettaa",
|
||||
@@ -1996,6 +1999,7 @@
|
||||
"That includes the photos in the folders inside it.": "Tämä sisältää myös sen sisällä olevien kansioiden kuvat.",
|
||||
"That key can't be used as a shortcut": "Tätä näppäintä ei voi käyttää pikanäppäimenä",
|
||||
"The SAM 3 model is installed: Object and Describe masks are ready.": "SAM 3 -malli on asennettu: Kohde- ja Kuvaile-maskit ovat valmiita.",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Tunnisteet-painike näyttää mallin paikkamerkit, kuten {date} tai {seq}. Jokainen tiedosto nimetään levyllä uudelleen yhdessä XMP-sivutiedostonsa kanssa; jo käytetty nimi saa lopuksi -1, -2…",
|
||||
"The denoise model is installed and in use: the AI Denoise Amount slider under Detail now works": "Kohinanpoistomalli on asennettu ja käytössä: Tekoälykohinanpoiston Määrä-liukusäädin Tarkastelun alla toimii nyt",
|
||||
"The download didn't work:": "Lataus ei onnistunut:",
|
||||
"The ending screen, after the last photo.": "Lopetusnäyttö viimeisen kuvan jälkeen.",
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"Color space: Rec. 2020 {curve} (HDR AVIF)": "Espace colorimétrique : Rec. 2020 {curve} (AVIF HDR)",
|
||||
"Couldn't open the editor: {e}": "Impossible d’ouvrir l’éditeur : {e}",
|
||||
"Create {n} Virtual Copies": "Créer {n} copies virtuelles",
|
||||
"Creates {} stacks from {} of {scope}": "Crée {} piles à partir de {} parmi {scope}",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Crée {stacks} pile{} à partir de {photos} parmi {scope}",
|
||||
"Decoder: {reason}": "Décodeur : {reason}",
|
||||
"Delete \"{label}\"": "Supprimer « {label} »",
|
||||
"Delete \"{label}\" (and the mask)": "Supprimer « {label} » (et le masque)",
|
||||
@@ -163,7 +163,7 @@
|
||||
"{n} photo{}": "{n} photo{}",
|
||||
"{n} photo{} match · updates automatically as photos change": "{n} photo{} correspondante(s) · mise à jour automatique lorsque les photos changent",
|
||||
"{n} photo{} now · updates automatically as photos change": "{n} photo{} actuellement · mise à jour automatique lorsque les photos changent",
|
||||
"{n} selected photos · {pages} pages": "{n} photos sélectionnées · {pages} pages",
|
||||
"{n} selected photo{} · {pages} page{}": "{n} photo{0} sélectionnée{0} · {pages} page{1}",
|
||||
"{pid} (missing)": "{pid} (manquant)",
|
||||
"{sel_n} selected · {counted}": "{sel_n} sélectionné(s) · {counted}",
|
||||
"{stage}… {:.0}%": "{stage}… {:.0} %",
|
||||
@@ -281,7 +281,7 @@
|
||||
"Skipped {problem}": "Ignoré : {problem}",
|
||||
"…and {more} more": "…et {more} de plus",
|
||||
"Template preview: {name}": "Aperçu du modèle : {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "{n} photos affichées · {slides} diapositives · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "{n} photo{0} affichée{0} · {slides} diapositive{1} · {time}",
|
||||
"{n} pages": "{n} pages",
|
||||
"{n} JPEG files": "{n} fichiers JPEG",
|
||||
"{s} s of AV1 video": "{s} s de vidéo AV1",
|
||||
|
||||
@@ -117,6 +117,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "Géolocaliser automatiquement les photos à partir d'une trace GPS",
|
||||
"Auto-Tag from Tracklog": "Géolocaliser automatiquement à partir d'une trace GPS",
|
||||
"Auto-Tag from Tracklog…": "Géolocaliser automatiquement à partir d'une trace GPS…",
|
||||
"Add Locations": "Ajouter les lieux",
|
||||
"Automatic": "Automatique",
|
||||
"Automatic renders the Detail view at the size it is shown, up to the photo's own pixels. Choose a size to cap it: smaller is faster.": "Automatique calcule la vue Détail à la taille affichée, jusqu'aux pixels de la photo elle-même. Choisissez une taille pour la plafonner : plus petit, c'est plus rapide.",
|
||||
"Automatically Write Changes into XMP": "Écrire automatiquement les modifications dans XMP",
|
||||
@@ -333,6 +334,7 @@
|
||||
"Crop, Rotate, Geometry": "Recadrage, rotation, géométrie",
|
||||
"Cross Process": "Traitement croisé",
|
||||
"Culling": "Tri",
|
||||
"Cull": "Trier",
|
||||
"Curve": "Courbe",
|
||||
"Custom": "Personnalisé",
|
||||
"Custom template…": "Modèle personnalisé…",
|
||||
@@ -1453,7 +1455,7 @@
|
||||
"System default": "Valeur par défaut du système",
|
||||
"Table": "Tableau",
|
||||
"Tags": "Balises",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Balises : voir Balises à côté du modèle. Les fichiers sont renommés sur le disque (avec leurs fichiers annexes XMP) ; les noms existants reçoivent -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Le bouton Balises liste les éléments utilisables dans le modèle, comme {date} ou {seq}. Chaque fichier est renommé sur le disque avec son fichier annexe XMP ; un nom déjà pris reçoit -1, -2…",
|
||||
"Take a snapshot": "Créer un instantané",
|
||||
"Targeted Adjustment": "Réglage ciblé",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "Réglage ciblé : faites glisser vers le haut/bas sur la photo pour ajuster les couleurs à cet endroit",
|
||||
|
||||
@@ -99,7 +99,6 @@
|
||||
"{n} photo{}": "{n} foto{:.0}",
|
||||
"{n} photo{} match · updates automatically as photos change": "{n} foto cocok{:.0} · diperbarui otomatis saat foto berubah",
|
||||
"{n} photo{} now · updates automatically as photos change": "Saat ini {n} foto{:.0} · diperbarui otomatis saat foto berubah",
|
||||
"{n} selected photos · {pages} pages": "{n} foto dipilih · {pages} halaman",
|
||||
"{sel_n} selected · {counted}": "{sel_n} dipilih · {counted}",
|
||||
"{stage}… {:.0}%": "{stage}… {:.0}%",
|
||||
"{what} merge added": "Hasil penggabungan {what} ditambahkan",
|
||||
@@ -156,7 +155,6 @@
|
||||
"Auto Import: added {} photo{}": "Impor otomatis: {} foto{:.0} ditambahkan",
|
||||
"Building previews for {} photos…": "Membuat pratinjau untuk {} foto…",
|
||||
"Couldn't open the editor: {e}": "Tidak dapat membuka editor: {e}",
|
||||
"Creates {} stacks from {} of {scope}": "Membuat {} tumpukan dari {} di antara {scope}",
|
||||
"Done ({what}): {done} photo{plural}": "Selesai ({what}): {done} foto{plural:.0}",
|
||||
"Focus {:.0}": "Fokus {:.0}",
|
||||
"Folder “{}” (and its subfolders)": "Folder “{}” (beserta subfoldernya)",
|
||||
@@ -283,7 +281,6 @@
|
||||
"Skipped {problem}": "Dilewati: {problem}",
|
||||
"…and {more} more": "…dan {more} lainnya",
|
||||
"Template preview: {name}": "Pratinjau templat: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "{n} foto dalam tampilan · {slides} slide · {time}",
|
||||
"{n} pages": "{n} halaman",
|
||||
"{n} JPEG files": "{n} file JPEG",
|
||||
"{s} s of AV1 video": "Video AV1 {s} detik",
|
||||
@@ -305,5 +302,8 @@
|
||||
"Drop to review {n} item{} for import": "Jatuhkan untuk meninjau {n} item sebelum impor{:.0}",
|
||||
"Inside: {names}": "Di dalam: {names}",
|
||||
"Where should the Lightroom catalog “{catalog}” go?": "Ke mana katalog Lightroom “{catalog}” diimpor?",
|
||||
"Merge into the open library “{library}” ({count} photo{})": "Gabungkan ke pustaka yang terbuka “{library}” ({count} foto{:.0})"
|
||||
"Merge into the open library “{library}” ({count} photo{})": "Gabungkan ke pustaka yang terbuka “{library}” ({count} foto{:.0})",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Membuat {stacks} tumpukan dari {photos} foto ({scope}){:.0}",
|
||||
"{n} selected photo{} · {pages} page{}": "{n} foto dipilih · {pages} halaman{:.0}{:.0}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "{n} foto di tampilan · {slides} slide · {time}{:.0}{:.0}"
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
"Add Catchlight": "Tambahkan catchlight",
|
||||
"Add Face Model…": "Tambahkan model wajah…",
|
||||
"Add Folder to Local": "Tambahkan folder ke Lokal",
|
||||
"Add Locations": "Tambahkan lokasi",
|
||||
"Add Mask": "Tambahkan masker",
|
||||
"Add Object Click": "Tambahkan titik objek",
|
||||
"Add Point Color Sample": "Tambahkan sampel warna titik",
|
||||
@@ -273,6 +274,7 @@
|
||||
"Center": "Tengah",
|
||||
"Change": "Ubah",
|
||||
"Change Component Mode": "Ubah mode komponen",
|
||||
"Change Time": "Ubah waktu",
|
||||
"Characters not allowed in file names (/ \\ : * ? \" < > |) become -; an existing name gets -1, -2….": "Karakter yang tidak boleh ada di nama file (/ \\ : * ? \" < > |) diganti dengan -; nama yang sudah ada diberi akhiran -1, -2….",
|
||||
"Charcoal": "Abu-abu arang",
|
||||
"Check All": "Centang semua",
|
||||
@@ -429,6 +431,7 @@
|
||||
"Create Smart Album from Filter…": "Buat album pintar dari filter…",
|
||||
"Create Smart Album…": "Buat album pintar…",
|
||||
"Create Stack": "Buat tumpukan",
|
||||
"Create Stacks": "Buat tumpukan",
|
||||
"Create Version": "Buat versi",
|
||||
"Create Version from Step": "Buat versi dari langkah ini",
|
||||
"Create Virtual Copy": "Buat salinan virtual",
|
||||
@@ -443,6 +446,7 @@
|
||||
"Crop, Rotate, Geometry": "Pangkas, putar, geometri",
|
||||
"Cropped": "Dipangkas",
|
||||
"Cross Process": "Cross Process",
|
||||
"Cull": "Seleksi",
|
||||
"Culling": "Seleksi foto",
|
||||
"Curve": "Kurva",
|
||||
"Custom": "Kustom",
|
||||
@@ -1971,7 +1975,6 @@
|
||||
"System default": "Bawaan sistem",
|
||||
"Table": "Tabel",
|
||||
"Tags": "Tag",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Tag: lihat Tag di samping templat. Nama file diganti di disk (beserta file sidecar XMP-nya); nama yang sudah ada diberi akhiran -1, -2…",
|
||||
"Take a snapshot": "Ambil snapshot",
|
||||
"Targeted Adjustment": "Penyesuaian terarah",
|
||||
"Targeted adjustment on: drag up or down on the photo · Esc to stop": "Penyesuaian terarah aktif: seret ke atas atau ke bawah pada foto · Esc untuk berhenti",
|
||||
@@ -1995,6 +1998,7 @@
|
||||
"That includes the photos in the folders inside it.": "Termasuk foto di dalam subfoldernya.",
|
||||
"That key can't be used as a shortcut": "Tombol itu tidak dapat digunakan sebagai pintasan",
|
||||
"The SAM 3 model is installed: Object and Describe masks are ready.": "Model SAM 3 sudah terinstal: masker Objek dan Deskripsi siap digunakan.",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Tombol Tag menampilkan placeholder untuk templat, seperti {date} atau {seq}. Setiap file diganti namanya di disk bersama file sidecar XMP-nya; nama yang sudah dipakai mendapat -1, -2…",
|
||||
"The denoise model is installed and in use: the AI Denoise Amount slider under Detail now works": "Model pengurangan noise sudah terinstal dan digunakan: slider Kekuatan pengurangan noise AI di panel Detail kini dapat dipakai",
|
||||
"The download didn't work:": "Unduhan gagal:",
|
||||
"The ending screen, after the last photo.": "Layar penutup, setelah foto terakhir.",
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"Click {}:1": "Clic {}:1",
|
||||
"Couldn't open the editor: {e}": "Impossibile aprire l'editor: {e}",
|
||||
"Create {n} Virtual Copies": "Crea {n} copie virtuali",
|
||||
"Creates {} stacks from {} of {scope}": "Crea pile: {} (da {} di {scope})",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Crea pile: {stacks} (da {photos} di {scope}){:.0}",
|
||||
"Decoder: {reason}": "Decodificatore: {reason}",
|
||||
"Delete \"{label}\"": "Elimina \"{label}\"",
|
||||
"Delete \"{label}\" (and the mask)": "Elimina \"{label}\" (e la maschera)",
|
||||
@@ -285,7 +285,7 @@
|
||||
"Removed “{name}” from {n} photos. Edit ▸ Undo puts it back.": "Removed “{name}” from {n} photos. Edit → Undo puts it back.",
|
||||
"Inside: {names}": "Al suo interno: {names}",
|
||||
"Template preview: {name}": "Anteprima del modello: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "Foto nella vista: {n} · diapositive: {slides} · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "Foto nella vista: {n} · diapositive: {slides} · {time}{:.0}{:.0}",
|
||||
"Applied {name}": "{name} applicato",
|
||||
"“{to}” is already a person. Combining them makes one person; Undo separates them again.": "“{to}” è già una persona. Unirle ne crea una sola; Annulla le separa di nuovo.",
|
||||
"{n} originals opened in the other editor": "Originali aperti nell'altro editor: {n}",
|
||||
@@ -293,7 +293,7 @@
|
||||
"Effect: {name}": "Effetto: {name}",
|
||||
" in {g} group{}": " in gruppi: {g}{:.0}",
|
||||
"Color space: Rec. 2020 {curve} (HDR AVIF)": "Spazio colore: Rec. 2020 {curve} (AVIF HDR)",
|
||||
"{n} selected photos · {pages} pages": "Foto selezionate: {n} · pagine: {pages}",
|
||||
"{n} selected photo{} · {pages} page{}": "Foto selezionate: {n} · pagine: {pages}{:.0}{:.0}",
|
||||
"Already in “{}”": "Già in “{}”",
|
||||
"Move {n} photo{} to “{}”": "Sposta foto in “{1}” ({n}){0:.0}",
|
||||
"Move {n} photo{} to “{}”?": "Spostare le foto in “{1}” ({n})?{0:.0}",
|
||||
|
||||
@@ -118,6 +118,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "Geolocalizza automaticamente le foto dal tracciato",
|
||||
"Auto-Tag from Tracklog": "Geolocalizza dal tracciato",
|
||||
"Auto-Tag from Tracklog…": "Geolocalizza dal tracciato…",
|
||||
"Add Locations": "Aggiungi posizioni",
|
||||
"Automatic": "Automatico",
|
||||
"Automatic renders the Detail view at the size it is shown, up to the photo's own pixels. Choose a size to cap it: smaller is faster.": "Automatico disegna la vista Dettaglio alla dimensione in cui è mostrata, fino ai pixel della foto. Scegli una dimensione per limitarla: più piccola è più veloce.",
|
||||
"Automatically Write Changes into XMP": "Scrivi automaticamente le modifiche nell'XMP",
|
||||
@@ -334,6 +335,7 @@
|
||||
"Crop, Rotate, Geometry": "Ritaglio, rotazione, geometria",
|
||||
"Cross Process": "Processo incrociato",
|
||||
"Culling": "Selezione",
|
||||
"Cull": "Seleziona",
|
||||
"Curve": "Curva",
|
||||
"Custom": "Personalizzato",
|
||||
"Custom template…": "Modello personalizzato…",
|
||||
@@ -1484,7 +1486,7 @@
|
||||
"System default": "Predefinito di sistema",
|
||||
"Table": "Tabella",
|
||||
"Tags": "Tag",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Tag: vedi Tag accanto al modello. I file vengono rinominati sul disco (con i loro XMP collaterali); ai nomi già esistenti si aggiunge -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Il pulsante Tag elenca i segnaposto per il modello, come {date} o {seq}. Ogni file viene rinominato sul disco insieme al suo file XMP collaterale; un nome già in uso riceve -1, -2…",
|
||||
"Take a snapshot": "Acquisisci istantanea",
|
||||
"Targeted Adjustment": "Regolazione mirata",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "Regolazione mirata: trascina in su o in giù sulla foto per regolare i colori in quel punto",
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
"{n} photo{}": "{n}枚{:.0}",
|
||||
"{n} photo{} match · updates automatically as photos change": "{n}枚が一致{:.0}・写真の変更に応じて自動更新",
|
||||
"{n} photo{} now · updates automatically as photos change": "現在{n}枚{:.0}・写真の変更に応じて自動更新",
|
||||
"{n} selected photos · {pages} pages": "選択した写真 {n} 枚 · {pages} ページ",
|
||||
"{n} selected photo{} · {pages} page{}": "選択した写真 {n} 枚 · {pages} ページ{:.0}{:.0}",
|
||||
"{sel_n} selected · {counted}": "{sel_n}枚選択・{counted}",
|
||||
"{stage}… {:.0}%": "{stage}… {:.0}%",
|
||||
"{what} merge added": "{what}合成を追加しました",
|
||||
@@ -156,7 +156,7 @@
|
||||
"Auto Import: added {} photo{}": "自動読み込み:{}枚の写真を追加しました{:.0}",
|
||||
"Building previews for {} photos…": "{}枚のプレビューを作成中…",
|
||||
"Couldn't open the editor: {e}": "エディターを開けませんでした:{e}",
|
||||
"Creates {} stacks from {} of {scope}": "{scope}の{1}枚から{0}個のスタックを作成します",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "{scope}の{photos}枚から{stacks}個のスタックを作成します{:.0}",
|
||||
"Done ({what}): {done} photo{plural}": "完了({what}):{done}枚{plural:.0}",
|
||||
"Focus {:.0}": "ピント {:.0}",
|
||||
"Folder “{}” (and its subfolders)": "フォルダ「{}」(サブフォルダを含む)",
|
||||
@@ -285,7 +285,7 @@
|
||||
"Skipped {problem}": "スキップ: {problem}",
|
||||
"…and {more} more": "…ほか {more} 件",
|
||||
"Template preview: {name}": "テンプレートのプレビュー: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "表示中の写真 {n} 枚 · スライド {slides} 枚 · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "表示中の写真 {n} 枚 · スライド {slides} 枚 · {time}{:.0}{:.0}",
|
||||
"{n} pages": "{n} ページ",
|
||||
"{n} JPEG files": "JPEG ファイル {n} 個",
|
||||
"{s} s of AV1 video": "AV1 ビデオ {s} 秒",
|
||||
|
||||
@@ -120,6 +120,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "GPS軌跡から写真に位置情報を自動で付ける",
|
||||
"Auto-Tag from Tracklog": "GPS軌跡から位置情報を付ける",
|
||||
"Auto-Tag from Tracklog…": "GPS軌跡から位置情報を付ける…",
|
||||
"Add Locations": "位置情報を追加",
|
||||
"Automatic": "自動",
|
||||
"Automatically Write Changes into XMP": "変更をXMPに自動保存",
|
||||
"Automatically write changes into XMP sidecars": "変更をXMPサイドカーファイルに自動保存",
|
||||
@@ -324,6 +325,7 @@
|
||||
"Crop, Rotate, Geometry": "切り抜き・回転・ジオメトリ",
|
||||
"Cross Process": "クロスプロセス",
|
||||
"Culling": "写真の選別",
|
||||
"Cull": "選別",
|
||||
"Curve": "カーブ",
|
||||
"Custom": "カスタム",
|
||||
"Custom template…": "カスタムテンプレート…",
|
||||
@@ -1396,7 +1398,7 @@
|
||||
"System default": "システム標準",
|
||||
"Table": "表",
|
||||
"Tags": "タグ",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "テンプレート横の「タグ」を参照してください。ファイルとXMPの名前を変更し、同名の場合は-1、-2…を付けます",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "「タグ」ボタンで、{date} や {seq} などテンプレートに使えるタグの一覧を表示します。各ファイルは XMP ファイルとともにディスク上で名前が変更され、同名のものには -1、-2… が付きます",
|
||||
"Targeted Adjustment": "ターゲット調整",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "写真の上を上下にドラッグして、その部分の色を調整",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the curve there": "写真の上を上下にドラッグして、その部分のカーブを調整",
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
"Couldn't open the editor: {e}": "რედაქტორი ვერ გაიხსნა: {e}",
|
||||
"Create Keyword Tag Inside “{name}”…": "საკვანძო სიტყვის შექმნა „{name}“-ში…",
|
||||
"Create {n} Virtual Copies": "ვირტუალური ასლების შექმნა: {n}",
|
||||
"Creates {} stacks from {} of {scope}": "შეიქმნება დასტა: {} — {}-დან ({scope})",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "შეიქმნება დასტა: {stacks} — {photos}-დან ({scope}){:.0}",
|
||||
"Decoder: {reason}": "დეკოდერი: {reason}",
|
||||
"Delete \"{label}\"": "„{label}“-ის წაშლა",
|
||||
"Delete \"{label}\" (and the mask)": "„{label}“-ის წაშლა (ნიღაბთან ერთად)",
|
||||
@@ -283,7 +283,7 @@
|
||||
"{missing} originals are missing. Their catalog records are available; use Find Missing Photos to relink them.": "{missing} originals are missing. Their catalog records are available; use Find Missing Photos to relink them.",
|
||||
"{n} JPEG files": "{n} JPEG files",
|
||||
"{n} pages": "{n} pages",
|
||||
"{n} photos in view · {slides} slides · {time}": "{n} photos in view · {slides} slides · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "ფოტო ხედში: {n} · სლაიდი: {slides} · {time}{:.0}{:.0}",
|
||||
"{n} preset{}": "{n} preset{}",
|
||||
"{n} raws can now be developed from their raw data": "{n} raws can now be developed from their raw data",
|
||||
"{photos} catalog records processed; {collections} collections.": "{photos} catalog records processed; {collections} collections.",
|
||||
@@ -293,7 +293,7 @@
|
||||
"“{to}” is already a person. Combining them makes one person; Undo separates them again.": "“{to}” is already a person. Combining them makes one person; Undo separates them again.",
|
||||
"…and {more} more": "…and {more} more",
|
||||
"Color space: Rec. 2020 {curve} (HDR AVIF)": "Color space: Rec. 2020 {curve} (HDR AVIF)",
|
||||
"{n} selected photos · {pages} pages": "{n} selected photos · {pages} pages",
|
||||
"{n} selected photo{} · {pages} page{}": "არჩეული ფოტო: {n} · გვერდი: {pages}{:.0}{:.0}",
|
||||
"Already in “{}”": "Already in “{}”",
|
||||
"Move {n} photo{} to “{}”": "Move {n} photo{} to “{}”",
|
||||
"Move {n} photo{} to “{}”?": "Move {n} photo{} to “{}”?",
|
||||
|
||||
@@ -229,6 +229,7 @@
|
||||
"Auto-Tag from Tracklog": "მდებარეობის მინიჭება მარშრუტის ჟურნალიდან",
|
||||
"Auto-Tag from Tracklog: GPS locations for your photos from a GPX track log, matched by capture time.": "მდებარეობის მინიჭება მარშრუტის ჟურნალიდან: GPS მდებარეობები თქვენი ფოტოებისთვის GPX მარშრუტის ჟურნალიდან, გადაღების დროის მიხედვით.",
|
||||
"Auto-Tag from Tracklog…": "მდებარეობის მინიჭება მარშრუტის ჟურნალიდან…",
|
||||
"Add Locations": "მდებარეობების დამატება",
|
||||
"Automatic": "ავტომატური",
|
||||
"Automatic renders the Detail view at the size it is shown, up to the photo's own pixels. Choose a size to cap it: smaller is faster.": "ავტომატური რეჟიმი დეტალურ ხედს ასახავს იმ ზომით, რომლითაც ის ჩანს, ფოტოს საკუთარ პიქსელებამდე. ზღვრისთვის აირჩიეთ ზომა: პატარა უფრო სწრაფია.",
|
||||
"Automatic uses the graphics card where it is faster than the processor: both are timed on this computer the first time a photo is made.": "ავტომატური რეჟიმი იყენებს ვიდეობარათს, როცა ის პროცესორზე სწრაფია: ორივეს დრო ამ კომპიუტერზე იზომება, როცა ფოტო პირველად მზადდება.",
|
||||
@@ -507,6 +508,7 @@
|
||||
"Cropped": "ჩამოჭრილი",
|
||||
"Cross Process": "ჯვარედინი დამუშავება",
|
||||
"Culling": "გადარჩევა",
|
||||
"Cull": "გადარჩევა",
|
||||
"Culling.": "გადარჩევა.",
|
||||
"Curve": "მრუდი",
|
||||
"Custom": "მორგებული",
|
||||
@@ -2061,7 +2063,7 @@
|
||||
"TZ/ZS series, Leica D-Lux, V-Lux and C-Lux, and the GH6, GH7, G9 II, S5 II and S9 generation. They start from a": "TZ/ZS სერია, Leica D-Lux, V-Lux და C-Lux, ასევე GH6, GH7, G9 II, S5 II და S9 თაობა. ისინი იწყება",
|
||||
"Table": "ცხრილი",
|
||||
"Tags": "ტეგები",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "ტეგები: იხილეთ „ტეგები“ შაბლონის გვერდით. ფაილებს სახელი დისკზე ეცვლება (მათ XMP თანმხლებ ფაილებთან ერთად); არსებულ სახელებს ემატება -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "ღილაკი „ტეგები“ აჩვენებს შაბლონში გამოსაყენებელ ჩანაცვლებებს, მაგალითად {date} ან {seq}. თითოეულ ფაილს სახელი დისკზე ეცვლება მის XMP თანმხლებ ფაილთან ერთად; დაკავებულ სახელს ემატება -1, -2…",
|
||||
"Take a snapshot": "მომენტალური ასლის შექმნა",
|
||||
"Targeted Adjustment": "მიზნობრივი კორექცია",
|
||||
"Targeted adjustment on: drag up or down on the photo · Esc to stop": "მიზნობრივი კორექცია ჩართულია: გადაათრიეთ ფოტოზე ზემოთ ან ქვემოთ · Esc — შეწყვეტა",
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"Click {}:1": "Kliknij {}:1",
|
||||
"Couldn't open the editor: {e}": "Nie można otworzyć edytora: {e}",
|
||||
"Create {n} Virtual Copies": "Utwórz {n} kopii wirtualnych",
|
||||
"Creates {} stacks from {} of {scope}": "Tworzy {} stosów z {} w zakresie: {scope}",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Tworzy stosy: {stacks} z {photos} w zakresie: {scope}{:.0}",
|
||||
"Decoder: {reason}": "Dekoder: {reason}",
|
||||
"Delete \"{label}\"": "Usuń „{label}”",
|
||||
"Delete \"{label}\" (and the mask)": "Usuń „{label}” (wraz z maską)",
|
||||
@@ -273,7 +273,7 @@
|
||||
"Skipped {problem}": "Pominięto: {problem}",
|
||||
"…and {more} more": "…i jeszcze {more}",
|
||||
"Template preview: {name}": "Podgląd szablonu: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "Zdjęcia w widoku: {n} · slajdy: {slides} · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "Zdjęcia w widoku: {n} · slajdy: {slides} · {time}{:.0}{:.0}",
|
||||
"{n} pages": "Strony: {n}",
|
||||
"{n} JPEG files": "Pliki JPEG: {n}",
|
||||
"{s} s of AV1 video": "Wideo AV1: {s} s",
|
||||
@@ -292,7 +292,7 @@
|
||||
"{what} merge added at {mp}: its full size, {full}, needs more memory than this computer has": "Dodano scalenie {what} w rozdzielczości {mp}: pełny rozmiar, {full}, wymaga więcej pamięci, niż ma ten komputer",
|
||||
"{what} merge added at {mp}, the largest a panorama can be (its full size is {full})": "Dodano scalenie {what} w rozdzielczości {mp}, największej możliwej dla panoramy (pełny rozmiar: {full})",
|
||||
"Color space: Rec. 2020 {curve} (HDR AVIF)": "Przestrzeń kolorów: Rec. 2020 {curve} (HDR AVIF)",
|
||||
"{n} selected photos · {pages} pages": "Zaznaczone zdjęcia: {n} · strony: {pages}",
|
||||
"{n} selected photo{} · {pages} page{}": "Wybrane zdjęcia: {n} · stron: {pages}{:.0}{:.0}",
|
||||
"Already in “{}”": "Już w „{}”",
|
||||
"Move {n} photo{} to “{}”": "Przenieś do „{1}” — zdjęcia: {n}{0:.0}",
|
||||
"Move {n} photo{} to “{}”?": "Przenieść do „{1}” — zdjęcia: {n}{0:.0}?",
|
||||
|
||||
@@ -114,6 +114,7 @@
|
||||
"Auto-Tag from Tracklog": "Automatycznie oznacz na podstawie śladu GPS",
|
||||
"Auto-Tag from Tracklog: GPS locations for your photos from a GPX track log, matched by capture time.": "Automatyczne tagowanie ze śladu: przypisuje zdjęciom pozycje GPS ze śladu GPX na podstawie czasu wykonania.",
|
||||
"Auto-Tag from Tracklog…": "Automatycznie oznacz na podstawie śladu GPS…",
|
||||
"Add Locations": "Dodaj lokalizacje",
|
||||
"Automatic": "Automatycznie",
|
||||
"Automatic renders the Detail view at the size it is shown, up to the photo's own pixels. Choose a size to cap it: smaller is faster.": "Tryb automatyczny renderuje widok szczegółów w wyświetlanym rozmiarze, nie przekraczając rozdzielczości zdjęcia. Wybierz mniejszy limit, aby przyspieszyć działanie.",
|
||||
"Automatically Write Changes into XMP": "Automatycznie zapisuj zmiany w XMP",
|
||||
@@ -322,6 +323,7 @@
|
||||
"Crop, Rotate, Geometry": "Kadrowanie, obrót, geometria",
|
||||
"Cross Process": "Obróbka krzyżowa",
|
||||
"Culling": "Selekcja zdjęć",
|
||||
"Cull": "Selekcjonuj",
|
||||
"Curve": "Krzywa",
|
||||
"Custom": "Niestandardowe",
|
||||
"Custom template…": "Szablon niestandardowy…",
|
||||
@@ -1940,7 +1942,7 @@
|
||||
"Sony ARWs from before about 2017 (RX100, RX100 II–V, RX10, NEX, SLT, ILCE-6000, A7 / A7 II / A7R II and their": "Pliki Sony ARW sprzed około 2017 r. (RX100, RX100 II–V, RX10, NEX, SLT, ILCE-6000, A7 / A7 II / A7R II i pokrewne",
|
||||
"Sony ILCE-7M4 downsized lossless ARWs now decode subsampled YCbCr tiles into linear RGB,": "Pomniejszone bezstratne pliki ARW z Sony ILCE-7M4 dekodują teraz próbki YCbCr do liniowej przestrzeni RGB,",
|
||||
"TZ/ZS series, Leica D-Lux, V-Lux and C-Lux, and the GH6, GH7, G9 II, S5 II and S9 generation. They start from a": "serii TZ/ZS, Leica D-Lux, V-Lux i C-Lux oraz generacji GH6, GH7, G9 II, S5 II i S9. Wstępne kolory są dopasowywane do",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Znaczniki: zobacz Znaczniki obok szablonu. Nazwy plików na dysku (wraz z plikami XMP) są zmieniane; kolizje otrzymują przyrostek -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Przycisk Tagi pokazuje symbole, których można użyć w szablonie, np. {date} lub {seq}. Każdy plik jest zmieniany na dysku razem ze swoim plikiem XMP; zajęta nazwa dostaje przyrostek -1, -2…",
|
||||
"The catalog has a format version (issue #102). Opening a library from an older LightCraft upgrades it; a library": "Katalog ma wersję formatu (zgłoszenie #102). Otwarcie biblioteki ze starszego LightCraft aktualizuje ją; biblioteka",
|
||||
"The control port (`--control`) closes a connection as soon as it receives anything that isn't a JSON request": "Port sterujący (`--control`) zamyka połączenie natychmiast po otrzymaniu danych innych niż żądanie JSON",
|
||||
"The thumbnail cache only ever counts and deletes its own files (issue #98): a library opened on a folder that": "Pamięć podręczna miniaturek zlicza i usuwa wyłącznie własne pliki (zgłoszenie #98): otwarcie biblioteki w folderze, który",
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
"{n} photo{}": "{n} foto{}",
|
||||
"{n} photo{} match · updates automatically as photos change": "{n} foto{0} correspondente{0} · atualiza automaticamente conforme as fotos mudam",
|
||||
"{n} photo{} now · updates automatically as photos change": "{n} foto{} agora · atualiza automaticamente conforme as fotos mudam",
|
||||
"{n} selected photos · {pages} pages": "{n} fotos selecionadas · {pages} páginas",
|
||||
"{n} selected photo{} · {pages} page{}": "{n} foto{0} selecionada{0} · {pages} página{1}",
|
||||
"{sel_n} selected · {counted}": "{sel_n} selecionadas · {counted}",
|
||||
"{stage}… {:.0}%": "{stage}… {:.0}%",
|
||||
"{verb} {n} Photo{}": "{verb} {n} foto{}",
|
||||
@@ -156,7 +156,7 @@
|
||||
"Auto Import: added {} photo{}": "Importação automática: {} foto{1} adicionada{1}",
|
||||
"Building previews for {} photos…": "Gerando prévias de {} fotos…",
|
||||
"Couldn't open the editor: {e}": "Não foi possível abrir o editor: {e}",
|
||||
"Creates {} stacks from {} of {scope}": "Cria {} pilhas a partir de {} de {scope}",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Cria {stacks} pilha{} a partir de {photos} de {scope}",
|
||||
"Done ({what}): {done} photo{plural}": "Concluído ({what}): {done} foto{plural}",
|
||||
"Focus {:.0}": "Foco {:.0}",
|
||||
"Folder “{}” (and its subfolders)": "Pasta “{}” (e suas subpastas)",
|
||||
@@ -285,7 +285,7 @@
|
||||
"Skipped {problem}": "Ignorado: {problem}",
|
||||
"…and {more} more": "…e mais {more}",
|
||||
"Template preview: {name}": "Prévia do modelo: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "{n} fotos na visualização · {slides} slides · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "{n} foto{0} na visualização · {slides} slide{1} · {time}",
|
||||
"{n} pages": "{n} páginas",
|
||||
"{n} JPEG files": "{n} arquivos JPEG",
|
||||
"{s} s of AV1 video": "{s} s de vídeo AV1",
|
||||
|
||||
@@ -123,6 +123,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "Etiquetar fotos automaticamente pelo tracklog",
|
||||
"Auto-Tag from Tracklog": "Etiquetar automaticamente pelo tracklog",
|
||||
"Auto-Tag from Tracklog…": "Etiquetar automaticamente pelo tracklog…",
|
||||
"Add Locations": "Adicionar locais",
|
||||
"Automatic": "Automático",
|
||||
"Automatically Write Changes into XMP": "Gravar alterações automaticamente no XMP",
|
||||
"Automatically write changes into XMP sidecars": "Grava automaticamente as alterações nos arquivos XMP auxiliares",
|
||||
@@ -341,6 +342,7 @@
|
||||
"Crop, Rotate, Geometry": "Recorte, rotação, geometria",
|
||||
"Cross Process": "Processamento cruzado",
|
||||
"Culling": "Triagem",
|
||||
"Cull": "Fazer triagem",
|
||||
"Curve": "Curva",
|
||||
"Custom": "Personalizado",
|
||||
"Custom template…": "Modelo personalizado…",
|
||||
@@ -1476,7 +1478,7 @@
|
||||
"System default": "Padrão do sistema",
|
||||
"Table": "Tabela",
|
||||
"Tags": "Marcadores",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Marcadores: consulte Marcadores ao lado do modelo. Os arquivos são renomeados no disco (com seus sidecars XMP); nomes existentes recebem -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "O botão Marcadores lista os itens que você pode usar no modelo, como {date} ou {seq}. Cada arquivo é renomeado no disco junto com seu sidecar XMP; um nome já usado recebe -1, -2…",
|
||||
"Take a snapshot": "Tirar um instantâneo",
|
||||
"Targeted Adjustment": "Ajuste direcionado",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "Ajuste direcionado: arraste para cima/baixo na foto para ajustar as cores ali",
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
"Color space: Rec. 2020 {curve} (HDR AVIF)": "Цветовое пространство: Rec. 2020 {curve} (HDR AVIF)",
|
||||
"Couldn't open the editor: {e}": "Не удалось открыть редактор: {e}",
|
||||
"Create {n} Virtual Copies": "Создать виртуальные копии: {n}",
|
||||
"Creates {} stacks from {} of {scope}": "Будет создано стопок: {} из {} фото ({scope})",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Будет создано стопок: {stacks} из {photos} фото ({scope}){:.0}",
|
||||
"Decoder: {reason}": "Декодер: {reason}",
|
||||
"Delete \"{label}\"": "Удалить «{label}»",
|
||||
"Delete \"{label}\" (and the mask)": "Удалить «{label}» (и маску)",
|
||||
@@ -168,7 +168,7 @@
|
||||
"{n} photo{}": "Фото: {n}{:.0}",
|
||||
"{n} photo{} match · updates automatically as photos change": "Подходящих фото: {n}{:.0} · обновляется автоматически при изменении фото",
|
||||
"{n} photo{} now · updates automatically as photos change": "Сейчас фото: {n}{:.0} · обновляется автоматически при изменении фото",
|
||||
"{n} selected photos · {pages} pages": "Выбрано фото: {n} · страниц: {pages}",
|
||||
"{n} selected photo{} · {pages} page{}": "Выбрано фото: {n} · страниц: {pages}{:.0}{:.0}",
|
||||
"{n} similar photo{} · View ▸ Clear Filters to see all": "Похожих фото: {n}{:.0} · Вид → Сбросить фильтры, чтобы увидеть все",
|
||||
"{pid} (missing)": "{pid} (отсутствует)",
|
||||
"{sel_n} selected · {counted}": "Выбрано: {sel_n} · {counted}",
|
||||
@@ -281,7 +281,7 @@
|
||||
"Skipped {problem}": "Пропущено: {problem}",
|
||||
"…and {more} more": "…и ещё {more}",
|
||||
"Template preview: {name}": "Просмотр шаблона: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "Фото в просмотре: {n} · слайдов: {slides} · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "Фото в просмотре: {n} · слайдов: {slides} · {time}{:.0}{:.0}",
|
||||
"{n} pages": "Страниц: {n}",
|
||||
"{n} JPEG files": "Файлов JPEG: {n}",
|
||||
"{s} s of AV1 video": "{s} с видео AV1",
|
||||
|
||||
@@ -97,6 +97,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "Автопривязка фото по треку",
|
||||
"Auto-Tag from Tracklog": "Автопривязка по треку",
|
||||
"Auto-Tag from Tracklog…": "Автопривязка по треку…",
|
||||
"Add Locations": "Добавить места",
|
||||
"Automatic": "Автоматически",
|
||||
"Automatic renders the Detail view at the size it is shown, up to the photo's own pixels. Choose a size to cap it: smaller is faster.": "Автоматический режим рендерит «Детализацию» в отображаемом размере, вплоть до собственных пикселей фото. Выберите размер, чтобы ограничить: меньше — быстрее.",
|
||||
"Automatically Write Changes into XMP": "Автоматически записывать изменения в XMP",
|
||||
@@ -287,6 +288,7 @@
|
||||
"Crop Aspect": "Пропорции кадра",
|
||||
"Cross Process": "Кросс-процесс",
|
||||
"Culling": "Отбор",
|
||||
"Cull": "Отобрать",
|
||||
"Curve": "Кривая",
|
||||
"Custom": "Свои",
|
||||
"Custom…": "Свои…",
|
||||
@@ -1235,7 +1237,7 @@
|
||||
"System Info…": "Сведения о системе…",
|
||||
"System default": "Как в системе",
|
||||
"Tags": "Теги",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Теги: см. «Теги» рядом с шаблоном. Файлы переименовываются на диске (вместе с XMP-файлами); к существующим именам добавляется -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Кнопка «Теги» показывает, что можно вставить в шаблон, например {date} или {seq}. Каждый файл переименовывается на диске вместе с XMP-файлом; к занятому имени добавляется -1, -2…",
|
||||
"Take a snapshot": "Сделать снимок",
|
||||
"Targeted Adjustment": "Целевая коррекция",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "Целевая коррекция: перетаскивайте вверх/вниз по фото, чтобы менять цвета в этом месте",
|
||||
|
||||
@@ -56,7 +56,6 @@
|
||||
"Create Keyword Tag Inside “{name}”…": "Skapa nyckelordstagg i ”{name}”…",
|
||||
"Create the keyword “{name}”": "Skapa nyckelordet ”{name}”",
|
||||
"Create {n} Virtual Copies": "Skapa {n} virtuella kopior",
|
||||
"Creates {} stacks from {} of {scope}": "Skapar {} staplar av {} i {scope}",
|
||||
"Decoder: {reason}": "Avkodare: {reason}",
|
||||
"Delete \"{label}\"": "Radera ”{label}”",
|
||||
"Delete \"{label}\" (and the mask)": "Radera ”{label}” (och masken)",
|
||||
@@ -233,7 +232,6 @@
|
||||
"{n} originals opened in the other editor": "{n} original har öppnats i den andra redigeraren",
|
||||
"{n} pages": "{n} sidor",
|
||||
"{n} photos": "{n} foton",
|
||||
"{n} photos in view · {slides} slides · {time}": "{n} foton i vyn · {slides} bilder · {time}",
|
||||
"{n} photos in {} are hidden by the filters above": "{n} foton i {} döljs av filtren ovan",
|
||||
"{n} photos opened for editing; each is stacked with its original": "{n} foton har öppnats för redigering; vart och ett staplas med sitt original",
|
||||
"{n} photo{}": "{n} foto{}",
|
||||
@@ -295,7 +293,6 @@
|
||||
"Move {n} photo{} to “{}”": "Move {n} photo{} to “{}”",
|
||||
"Move {n} photo{} to “{}”?": "Move {n} photo{} to “{}”?",
|
||||
"Moved {n} photo{} to “{}”. Edit → Undo moves them back.": "Moved {n} photo{} to “{}”. Edit → Undo moves them back.",
|
||||
"{n} selected photos · {pages} pages": "{n} selected photos · {pages} pages",
|
||||
"{skipped} catalog images were not imported because their records in the catalog are incomplete.": "{skipped} catalog images were not imported because their records in the catalog are incomplete.",
|
||||
"Listing folders — folders: {folders}, files: {files}": "Listing folders — folders: {folders}, files: {files}",
|
||||
"Added {n} photo{}": "{n} foto tillagda{:.0}",
|
||||
@@ -305,5 +302,8 @@
|
||||
"Drop to review {n} item{} for import": "Släpp för att granska {n} objekt före import{:.0}",
|
||||
"Inside: {names}": "Inuti: {names}",
|
||||
"Where should the Lightroom catalog “{catalog}” go?": "Vart ska Lightroom-katalogen ”{catalog}” importeras?",
|
||||
"Merge into the open library “{library}” ({count} photo{})": "Slå samman med det öppna biblioteket ”{library}” ({count} foto{:.0})"
|
||||
"Merge into the open library “{library}” ({count} photo{})": "Slå samman med det öppna biblioteket ”{library}” ({count} foto{:.0})",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Skapar staplar: {stacks}, av {photos} foton ({scope}){:.0}",
|
||||
"{n} selected photo{} · {pages} page{}": "Valda foton: {n} · sidor: {pages}{:.0}{:.0}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "Foton i vyn: {n} · bilder: {slides} · {time}{:.0}{:.0}"
|
||||
}
|
||||
|
||||
@@ -2141,7 +2141,6 @@
|
||||
"System Info…": "Systeminfo…",
|
||||
"Table": "Tabell",
|
||||
"Tags": "Taggar",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Taggar: se Taggar bredvid mallen. Filerna byter namn på disken (tillsammans med sina XMP-sidofiler); befintliga namn får -1, -2…",
|
||||
"Take a snapshot": "Ta en ögonblicksbild",
|
||||
"Targeted Adjustment": "Riktad justering",
|
||||
"Targeted adjustment on: drag up or down on the photo · Esc to stop": "Riktad justering på: dra uppåt eller nedåt på fotot · Esc för att sluta",
|
||||
@@ -2429,5 +2428,10 @@
|
||||
"Drop to open the face model": "Släpp för att öppna ansiktsmodellen",
|
||||
"Dropped Files": "Släppta filer",
|
||||
"Finish Lightroom catalog import before adding photos": "Slutför importen av Lightroom-katalogen innan du lägger till foton",
|
||||
"Import dropped files without review": "Importera släppta filer utan granskning"
|
||||
"Import dropped files without review": "Importera släppta filer utan granskning",
|
||||
"Change Time": "Ändra tid",
|
||||
"Cull": "Gallra",
|
||||
"Add Locations": "Lägg till platser",
|
||||
"Create Stacks": "Skapa staplar",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Knappen Taggar visar platshållare för mallen, till exempel {date} eller {seq}. Varje fil byter namn på disken tillsammans med sin XMP-sidofil; ett namn som redan finns får -1, -2…"
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"Color space: Rec. 2020 {curve} (HDR AVIF)": "Колірний простір: Rec. 2020 {curve} (HDR AVIF)",
|
||||
"Couldn't open the editor: {e}": "Не вдалося відкрити редактор: {e}",
|
||||
"Create {n} Virtual Copies": "Створити віртуальні копії: {n}",
|
||||
"Creates {} stacks from {} of {scope}": "Буде створено стосів: {} із {} ({scope})",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Буде створено стосів: {stacks} із {photos} ({scope}){:.0}",
|
||||
"Decoder: {reason}": "Декодер: {reason}",
|
||||
"Delete \"{label}\"": "Видалити «{label}»",
|
||||
"Delete \"{label}\" (and the mask)": "Видалити «{label}» (і маску)",
|
||||
@@ -163,7 +163,7 @@
|
||||
"{n} photo{}": "Фото: {n}{:.0}",
|
||||
"{n} photo{} match · updates automatically as photos change": "Відповідних фото: {n}{:.0} · оновлюється автоматично зі зміною фото",
|
||||
"{n} photo{} now · updates automatically as photos change": "Зараз фото: {n}{:.0} · оновлюється автоматично зі зміною фото",
|
||||
"{n} selected photos · {pages} pages": "Вибрано фото: {n} · сторінок: {pages}",
|
||||
"{n} selected photo{} · {pages} page{}": "Вибрано фото: {n} · сторінок: {pages}{:.0}{:.0}",
|
||||
"{pid} (missing)": "{pid} (відсутній)",
|
||||
"{sel_n} selected · {counted}": "Вибрано: {sel_n} · {counted}",
|
||||
"{stage}… {:.0}%": "{stage}… {:.0}%",
|
||||
@@ -281,7 +281,7 @@
|
||||
"Skipped {problem}": "Пропущено: {problem}",
|
||||
"…and {more} more": "…і ще {more}",
|
||||
"Template preview: {name}": "Перегляд шаблону: {name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "Фото в перегляді: {n} · слайдів: {slides} · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "Фото в перегляді: {n} · слайдів: {slides} · {time}{:.0}{:.0}",
|
||||
"{n} pages": "Сторінок: {n}",
|
||||
"{n} JPEG files": "Файлів JPEG: {n}",
|
||||
"{s} s of AV1 video": "{s} с відео AV1",
|
||||
|
||||
@@ -463,6 +463,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "Автоматично позначити фото за журналом маршруту",
|
||||
"Auto-Tag from Tracklog": "Автоматично позначити за журналом маршруту",
|
||||
"Auto-Tag from Tracklog…": "Автоматично позначити за журналом маршруту…",
|
||||
"Add Locations": "Додати місця",
|
||||
"Automatically Write Changes into XMP": "Автоматично записувати зміни в XMP",
|
||||
"Automatically write changes into XMP sidecars": "Автоматично записувати зміни в супровідні файли XMP",
|
||||
"Autumn Gold": "Осіннє золото",
|
||||
@@ -615,6 +616,7 @@
|
||||
"Crop Aspect": "Пропорції кадрування",
|
||||
"Crop, Rotate, Geometry": "Кадрування, обертання, геометрія",
|
||||
"Culling": "Відбір",
|
||||
"Cull": "Відібрати",
|
||||
"Custom template…": "Власний шаблон…",
|
||||
"Cycle Crop Overlay": "Перемкнути накладання кадрування",
|
||||
"Cycle Crop Overlay Orientation": "Перемкнути орієнтацію накладання кадрування",
|
||||
@@ -1448,7 +1450,7 @@
|
||||
"Sync Settings": "Синхронізувати налаштування",
|
||||
"System default": "Типові системні налаштування",
|
||||
"Tags": "Теги",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Теги: див. «Теги» біля шаблону. Файли перейменовуються на диску (разом із супровідними XMP); до наявних назв додається -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Кнопка «Теги» показує, що можна вставити в шаблон, наприклад {date} або {seq}. Кожен файл перейменовується на диску разом із супровідним XMP-файлом; до зайнятої назви додається -1, -2…",
|
||||
"Targeted Adjustment": "Цільова корекція",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "Цільова корекція: тягніть угору/вниз на фото, щоб змінити кольори в цьому місці",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the curve there": "Цільова корекція: тягніть угору/вниз на фото, щоб змінити криву в цьому місці",
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
"Create Keyword Tag Inside “{name}”…": "Tạo từ khóa trong «{name}»…",
|
||||
"Create the keyword “{name}”": "Create the keyword “{name}”",
|
||||
"Create {n} Virtual Copies": "Tạo {n} bản sao ảo",
|
||||
"Creates {} stacks from {} of {scope}": "Tạo {} chồng từ {} trong {scope}",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "Tạo {stacks} chồng từ {photos} ảnh ({scope}){:.0}",
|
||||
"Decoder: {reason}": "Bộ giải mã: {reason}",
|
||||
"Delete \"{label}\"": "Xóa «{label}»",
|
||||
"Delete \"{label}\" (and the mask)": "Xóa «{label}» (và mặt nạ)",
|
||||
@@ -240,15 +240,15 @@
|
||||
"{n} originals opened in the other editor": "Đã mở {n} bản gốc trong trình chỉnh sửa khác",
|
||||
"{n} pages": "{n} pages",
|
||||
"{n} photos": "{n} ảnh",
|
||||
"{n} photos in view · {slides} slides · {time}": "{n} photos in view · {slides} slides · {time}",
|
||||
"{n} photos in {} are hidden by the filters above": "{n} ảnh trong «{}» bị ẩn bởi bộ lọc phía trên",
|
||||
"{n} photos opened for editing; each is stacked with its original": "Đã mở {n} ảnh để chỉnh sửa; mỗi ảnh xếp chồng với bản gốc",
|
||||
"{n} photo{}": "{n} ảnh{:.0}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "{n} ảnh trong chế độ xem · {slides} trang chiếu · {time}{:.0}{:.0}",
|
||||
"{n} photo{} match · updates automatically as photos change": "{n} ảnh{:.0} khớp · tự cập nhật khi ảnh thay đổi",
|
||||
"{n} photo{} now · updates automatically as photos change": "Hiện {n} ảnh{:.0} · tự cập nhật khi ảnh thay đổi",
|
||||
"{n} preset{}": "{n} preset{}",
|
||||
"{n} raws can now be developed from their raw data": "{n} raws can now be developed from their raw data",
|
||||
"{n} selected photos · {pages} pages": "{n} selected photos · {pages} pages",
|
||||
"{n} selected photo{} · {pages} page{}": "{n} ảnh đã chọn · {pages} trang{:.0}{:.0}",
|
||||
"{n} similar photo{} · View ▸ Clear Filters to see all": "{n} ảnh tương tự{:.0} · Xem → Xóa bộ lọc để thấy tất cả",
|
||||
"{n} tasks are still running: {names}. Quitting stops them.": "Còn {n} tác vụ đang chạy: {names}. Thoát sẽ dừng chúng.",
|
||||
"{n} {noun}": "{noun}: {n}",
|
||||
|
||||
@@ -50,6 +50,7 @@
|
||||
"Add Catchlight": "Thêm điểm sáng mắt",
|
||||
"Add Face Model…": "Thêm mô hình khuôn mặt…",
|
||||
"Add Folder to Local": "Thêm thư mục vào Cục bộ",
|
||||
"Add Locations": "Thêm vị trí",
|
||||
"Add Mask": "Thêm mặt nạ",
|
||||
"Add Object Click": "Thêm cú nhấp đối tượng",
|
||||
"Add Point Color Sample": "Thêm mẫu Point Color",
|
||||
@@ -260,6 +261,7 @@
|
||||
"Catchlight": "Điểm sáng mắt",
|
||||
"Change": "Đổi",
|
||||
"Change Component Mode": "Đổi chế độ thành phần",
|
||||
"Change Time": "Đổi thời gian",
|
||||
"Characters not allowed in file names (/ \\ : * ? \" < > |) become -; an existing name gets -1, -2….": "Ký tự không hợp lệ trong tên tệp (/ \\ : * ? \" < > |) thành -; tên đã tồn tại thêm -1, -2….",
|
||||
"Charcoal": "Than",
|
||||
"Check All": "Chọn tất cả",
|
||||
@@ -399,6 +401,7 @@
|
||||
"Create Smart Album from Filter…": "Tạo album thông minh từ bộ lọc…",
|
||||
"Create Smart Album…": "Tạo album thông minh…",
|
||||
"Create Stack": "Tạo chồng",
|
||||
"Create Stacks": "Tạo chồng",
|
||||
"Create Version": "Tạo phiên bản",
|
||||
"Create Version from Step": "Tạo phiên bản từ bước",
|
||||
"Create Virtual Copy": "Tạo bản sao ảo",
|
||||
@@ -413,6 +416,7 @@
|
||||
"Crop, Rotate, Geometry": "Cắt, xoay, hình học",
|
||||
"Cropped": "Đã cắt",
|
||||
"Cross Process": "Cross Process",
|
||||
"Cull": "Sàng lọc",
|
||||
"Culling": "Sàng lọc",
|
||||
"Curve": "Đường cong",
|
||||
"Custom": "Tùy chỉnh",
|
||||
@@ -1812,7 +1816,6 @@
|
||||
"TZ/ZS series, Leica D-Lux, V-Lux and C-Lux, and the GH6, GH7, G9 II, S5 II and S9 generation. They start from a": "Dòng TZ/ZS, Leica D-Lux, V-Lux và C-Lux, và thế hệ GH6, GH7, G9 II, S5 II và S9. Chúng bắt đầu từ",
|
||||
"Table": "Bảng",
|
||||
"Tags": "Thẻ",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "Thẻ: xem Thẻ bên cạnh mẫu. Tệp đổi tên trên đĩa (kèm sidecar XMP); tên có sẵn thêm -1, -2…",
|
||||
"Take a snapshot": "Chụp snapshot",
|
||||
"Targeted Adjustment": "Điều chỉnh có mục tiêu",
|
||||
"Targeted adjustment on: drag up or down on the photo · Esc to stop": "Chỉnh theo vùng đang bật: kéo lên/xuống trên ảnh · Esc để dừng",
|
||||
@@ -1834,6 +1837,7 @@
|
||||
"That includes the photos in the folders inside it.": "Bao gồm cả ảnh trong các thư mục bên trong.",
|
||||
"That key can't be used as a shortcut": "Phím đó không thể dùng làm phím tắt",
|
||||
"The SAM 3 model is installed: Object and Describe masks are ready.": "Đã cài mô hình SAM 3: Mặt nạ đối tượng và Mô tả đã sẵn sàng.",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "Nút Thẻ liệt kê các phần giữ chỗ cho mẫu, chẳng hạn {date} hoặc {seq}. Mỗi tệp được đổi tên trên đĩa cùng với tệp phụ XMP của nó; tên đã dùng sẽ thêm -1, -2…",
|
||||
"The catalog has a format version (issue #102). Opening a library from an older LightCraft upgrades it; a library": "Catalog có phiên bản định dạng (issue #102). Mở thư viện từ LightCraft cũ hơn sẽ nâng cấp; thư viện",
|
||||
"The control port (`--control`) closes a connection as soon as it receives anything that isn't a JSON request": "Cổng điều khiển (`--control`) đóng kết nối ngay khi nhận bất kỳ thứ gì không phải yêu cầu JSON",
|
||||
"The denoise model is installed and in use: the AI Denoise Amount slider under Detail now works": "Mô hình khử nhiễu đã cài và đang dùng: thanh AI Denoise Amount trong Chi tiết giờ hoạt động",
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
"{n} photo{}": "{n} 张照片{0:.0}",
|
||||
"{n} photo{} match · updates automatically as photos change": "{n} 张照片符合 · 随照片变化自动更新{0:.0}",
|
||||
"{n} photo{} now · updates automatically as photos change": "当前 {n} 张照片 · 随照片变化自动更新{0:.0}",
|
||||
"{n} selected photos · {pages} pages": "已选 {n} 张照片 · {pages} 页",
|
||||
"{n} selected photo{} · {pages} page{}": "已选 {n} 张照片 · {pages} 页{:.0}{:.0}",
|
||||
"{sel_n} selected · {counted}": "已选择 {sel_n} · {counted}",
|
||||
"{stage}… {:.0}%": "{stage}… {0:.0}%",
|
||||
"{what} merge added": "已添加 {what} 合并",
|
||||
@@ -156,7 +156,7 @@
|
||||
"Auto Import: added {} photo{}": "自动导入:已添加 {0} 张照片{1:.0}",
|
||||
"Building previews for {} photos…": "正在为 {0} 张照片生成预览…",
|
||||
"Couldn't open the editor: {e}": "无法打开编辑器:{e}",
|
||||
"Creates {} stacks from {} of {scope}": "将从{scope}中的 {1} 张照片创建 {0} 个堆叠",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "将从{scope}中的 {photos} 张照片创建 {stacks} 个堆叠{:.0}",
|
||||
"Done ({what}): {done} photo{plural}": "完成({what}):{done} 张照片{plural:.0}",
|
||||
"Focus {:.0}": "对焦 {0:.0}",
|
||||
"Folder “{}” (and its subfolders)": "文件夹“{0}”(含子文件夹)",
|
||||
@@ -285,7 +285,7 @@
|
||||
"Skipped {problem}": "已跳过:{problem}",
|
||||
"…and {more} more": "…还有 {more} 个",
|
||||
"Template preview: {name}": "模板预览:{name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "视图中 {n} 张照片 · {slides} 张幻灯片 · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "视图中 {n} 张照片 · {slides} 张幻灯片 · {time}{:.0}{:.0}",
|
||||
"{n} pages": "{n} 页",
|
||||
"{n} JPEG files": "{n} 个 JPEG 文件",
|
||||
"{s} s of AV1 video": "{s} 秒 AV1 视频",
|
||||
|
||||
@@ -122,6 +122,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "从轨迹日志自动标记照片",
|
||||
"Auto-Tag from Tracklog": "从轨迹日志自动标记",
|
||||
"Auto-Tag from Tracklog…": "从轨迹日志自动标记…",
|
||||
"Add Locations": "添加位置",
|
||||
"Automatic": "自动",
|
||||
"Automatically Write Changes into XMP": "自动将更改写入 XMP",
|
||||
"Automatically write changes into XMP sidecars": "自动将更改写入 XMP 附属文件",
|
||||
@@ -338,6 +339,7 @@
|
||||
"Crop, Rotate, Geometry": "裁剪、旋转、几何",
|
||||
"Cross Process": "交叉冲洗",
|
||||
"Culling": "挑片",
|
||||
"Cull": "筛选",
|
||||
"Curve": "曲线",
|
||||
"Custom": "自定义",
|
||||
"Custom template…": "自定义模板…",
|
||||
@@ -1455,7 +1457,7 @@
|
||||
"System default": "系统默认",
|
||||
"Table": "表格",
|
||||
"Tags": "标签",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "标签:请参阅模板旁的“标签”。文件将在磁盘上重命名(连同其 XMP 附属文件);已有同名文件会得到 -1、-2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "“标签”按钮会列出可用于模板的占位符,例如 {date} 或 {seq}。每个文件会连同其 XMP 附属文件在磁盘上重命名;名称已被占用时会加上 -1、-2…",
|
||||
"Take a snapshot": "创建快照",
|
||||
"Targeted Adjustment": "局部调整",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "局部调整:在照片上上下拖动以调整该处的颜色",
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
"{n} photo{}": "{n} 張照片{:.0}",
|
||||
"{n} photo{} match · updates automatically as photos change": "{n} 張照片符合{:.0} · 隨照片變更自動更新",
|
||||
"{n} photo{} now · updates automatically as photos change": "目前 {n} 張照片{:.0} · 隨照片變更自動更新",
|
||||
"{n} selected photos · {pages} pages": "已選取 {n} 張照片 · {pages} 頁",
|
||||
"{n} selected photo{} · {pages} page{}": "已選取 {n} 張照片 · {pages} 頁{:.0}{:.0}",
|
||||
"{sel_n} selected · {counted}": "已選取 {sel_n} 張 · {counted}",
|
||||
"{stage}… {:.0}%": "{stage}… {:.0}%",
|
||||
"{verb} {n} Photo{}": "{verb} {n} 張照片{:.0}",
|
||||
@@ -156,7 +156,7 @@
|
||||
"Auto Import: added {} photo{}": "自動匯入:已新增 {} 張照片{:.0}",
|
||||
"Building previews for {} photos…": "正在為 {} 張照片建立預覽…",
|
||||
"Couldn't open the editor: {e}": "無法開啟編輯器:{e}",
|
||||
"Creates {} stacks from {} of {scope}": "將從{scope}中的 {1} 張照片建立 {0} 個堆疊",
|
||||
"Creates {stacks} stack{} from {photos} of {scope}": "將從{scope}中的 {photos} 張照片建立 {stacks} 個堆疊{:.0}",
|
||||
"Done ({what}): {done} photo{plural}": "完成({what}):{done} 張照片{plural:.0}",
|
||||
"Focus {:.0}": "焦點 {:.0}",
|
||||
"Folder “{}” (and its subfolders)": "資料夾「{}」(含子資料夾)",
|
||||
@@ -285,7 +285,7 @@
|
||||
"Skipped {problem}": "已略過:{problem}",
|
||||
"…and {more} more": "…還有 {more} 個",
|
||||
"Template preview: {name}": "範本預覽:{name}",
|
||||
"{n} photos in view · {slides} slides · {time}": "檢視中 {n} 張照片 · {slides} 張幻燈片 · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}": "檢視中 {n} 張照片 · {slides} 張幻燈片 · {time}{:.0}{:.0}",
|
||||
"{n} pages": "{n} 頁",
|
||||
"{n} JPEG files": "{n} 個 JPEG 檔案",
|
||||
"{s} s of AV1 video": "{s} 秒 AV1 視訊",
|
||||
|
||||
@@ -122,6 +122,7 @@
|
||||
"Auto-Tag Photos from Tracklog": "依軌跡記錄自動標記照片位置",
|
||||
"Auto-Tag from Tracklog": "依軌跡記錄自動加入位置標記",
|
||||
"Auto-Tag from Tracklog…": "依軌跡記錄自動加入位置標記…",
|
||||
"Add Locations": "新增位置",
|
||||
"Automatic": "自動",
|
||||
"Automatically Write Changes into XMP": "自動將變更寫入 XMP",
|
||||
"Automatically write changes into XMP sidecars": "自動將變更寫入 XMP 附屬檔案",
|
||||
@@ -339,6 +340,7 @@
|
||||
"Crop, Rotate, Geometry": "裁切、旋轉、幾何",
|
||||
"Cross Process": "交叉沖洗",
|
||||
"Culling": "挑片",
|
||||
"Cull": "開始挑片",
|
||||
"Curve": "曲線",
|
||||
"Custom": "自訂",
|
||||
"Custom template…": "自訂範本…",
|
||||
@@ -1461,7 +1463,7 @@
|
||||
"System default": "系統預設值",
|
||||
"Table": "表格",
|
||||
"Tags": "標籤",
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…": "標籤:請參閱範本旁的「標籤」。檔案及其 XMP 附屬檔案會在磁碟上重新命名;遇到同名檔案會加上 -1、-2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…": "「標籤」按鈕會列出可用於範本的佔位符,例如 {date} 或 {seq}。每個檔案會連同其 XMP 附屬檔案在磁碟上重新命名;名稱已被使用時會加上 -1、-2…",
|
||||
"Take a snapshot": "擷取快照",
|
||||
"Targeted Adjustment": "目標調整",
|
||||
"Targeted adjustment: drag up/down on the photo to adjust the colours there": "目標調整:在照片上向上/下拖曳,調整該位置的色彩",
|
||||
|
||||
@@ -335,6 +335,10 @@ fn ok_label(app: &LightcraftApp, dlg: &Dialog, informational: bool, sam: &SamSta
|
||||
let verb = if opts.copy && opts.move_files { "Move" } else { "Import" };
|
||||
return crate::i18n::tr_format!("{verb} {n} Photo{}", if n == 1 { "" } else { "s" }, verb = crate::i18n::tr(verb), n = n);
|
||||
}
|
||||
Dialog::Export { .. } => {
|
||||
let n = app.session.selection.ids.len().max(1);
|
||||
return crate::i18n::tr_format!("{verb} {n} Photo{}", if n == 1 { "" } else { "s" }, verb = crate::i18n::tr("Export"), n = n);
|
||||
}
|
||||
Dialog::LightroomResult { first: Some(_), .. } => "Show in Library",
|
||||
Dialog::ContactSheet { .. } => "Choose PDF…",
|
||||
Dialog::SlideshowExport { .. } => "Export…",
|
||||
@@ -345,10 +349,22 @@ fn ok_label(app: &LightcraftApp, dlg: &Dialog, informational: bool, sam: &SamSta
|
||||
Dialog::FaceModel { info, .. } if !informational && info["download"].is_string() => "Download",
|
||||
Dialog::FaceModel { .. } if !informational => "Install",
|
||||
Dialog::ConfirmDelete { .. } | Dialog::DeleteKeyword { .. } | Dialog::DeleteEffects { .. } => "Delete",
|
||||
Dialog::SaveEffect { .. } => "Create",
|
||||
Dialog::SaveEffect { .. }
|
||||
| Dialog::NewAlbum { .. }
|
||||
| Dialog::NewSmartAlbum { .. }
|
||||
| Dialog::SmartRules { id: None, .. }
|
||||
| Dialog::CreatePreset { .. } => "Create",
|
||||
Dialog::SmartRules { .. } | Dialog::LabelNames { .. } => "Save",
|
||||
Dialog::RenameAlbum { .. } | Dialog::Rename { .. } | Dialog::RenameKeyword { .. } => "Rename",
|
||||
Dialog::AutoStack { .. } => "Stack",
|
||||
Dialog::CaptureTime { .. } => "Change",
|
||||
Dialog::Cull { .. } => "Cull",
|
||||
Dialog::CopySettings { .. } => "Copy",
|
||||
Dialog::PasteSettings { .. } => "Paste",
|
||||
Dialog::TextPrompt { command, .. } => prompt_verb(command),
|
||||
Dialog::MovePhotos { .. } => "Move",
|
||||
// (not "Merge": that is photo merging, HDR / panorama, in some languages)
|
||||
Dialog::MoveKeyword { .. } => "Merge Keywords",
|
||||
Dialog::MoveKeyword { .. } | Dialog::MergeKeywords { .. } => "Merge Keywords",
|
||||
Dialog::KeywordSet { .. } => "Save",
|
||||
Dialog::KeywordTag { editing: None, .. } => "Create",
|
||||
Dialog::KeywordTag { .. } => "Save",
|
||||
@@ -359,7 +375,9 @@ fn ok_label(app: &LightcraftApp, dlg: &Dialog, informational: bool, sam: &SamSta
|
||||
Dialog::SynchronizeFolder { .. } => "Synchronize",
|
||||
Dialog::SamModel { .. } => return sam_ok_label(dlg, sam).to_string(),
|
||||
Dialog::RenamePerson { from, to, .. } if person_rename_plan(&app.session.catalog, from, to).needs_merge => "Merge",
|
||||
Dialog::RenamePerson { .. } => "Rename",
|
||||
_ if informational => "Close",
|
||||
// only a one-field prompt opened with a command that has no verb here
|
||||
_ => "OK",
|
||||
};
|
||||
label.to_string()
|
||||
@@ -512,6 +530,19 @@ fn confirmed(app: &mut LightcraftApp, ctx: &egui::Context, dlg: &mut Dialog) ->
|
||||
/// The last frame a dialog was drawn and stayed open, for [`clicked_backdrop`].
|
||||
const BACKDROP_SHOWN: &str = "dialog-backdrop-shown";
|
||||
|
||||
/// What a one-field prompt's confirm button says, by the command it runs. A command that isn't
|
||||
/// listed (one opened by automation) has no verb to name and keeps "OK".
|
||||
fn prompt_verb(command: &str) -> &'static str {
|
||||
match command {
|
||||
"album.rename" | "folder.rename" | "version.rename" | "preset.rename" | "mask.renameEffect" => "Rename",
|
||||
"folder.create" | "mask.setEffectGroup" | "app.newLibrary" => "Create",
|
||||
"preset.move" => "Move",
|
||||
"keyword.saveSet" | "filter.savePreset" | "curve.savePreset" | "metadata.savePreset" => "Save",
|
||||
"photo.tagFromTracklog" => "Add Locations",
|
||||
_ => "OK",
|
||||
}
|
||||
}
|
||||
|
||||
/// Whether a dialog stays open after its action succeeded (the SAM 3 dialog while the model
|
||||
/// downloads).
|
||||
pub fn keeps_open(app: &LightcraftApp, dlg: &Dialog) -> bool {
|
||||
@@ -533,12 +564,16 @@ fn auto_stack_body(app: &mut LightcraftApp, ui: &mut egui::Ui, t: &Tokens, dlg:
|
||||
let preview = app.session.execute("stack.auto", &json!({"gap": *gap, "preview": true})).unwrap_or_default();
|
||||
let scope = if app.session.selection.ids.len() > 1 { "the selected photos" } else { "the photos in view" };
|
||||
ui.label(
|
||||
egui::RichText::new(crate::i18n::tr_format!(
|
||||
"Creates {} stacks from {} of {scope}",
|
||||
preview["stacks"],
|
||||
preview["photos"],
|
||||
scope = crate::i18n::tr(scope)
|
||||
))
|
||||
egui::RichText::new({
|
||||
let (stacks, photos) = (preview["stacks"].as_u64().unwrap_or(0), preview["photos"].as_u64().unwrap_or(0));
|
||||
crate::i18n::tr_format!(
|
||||
"Creates {stacks} stack{} from {photos} of {scope}",
|
||||
if stacks == 1 { "" } else { "s" },
|
||||
stacks = stacks,
|
||||
photos = photos,
|
||||
scope = crate::i18n::tr(scope)
|
||||
)
|
||||
})
|
||||
.color(t.text_dim),
|
||||
);
|
||||
}
|
||||
@@ -910,7 +945,7 @@ fn rename_body(app: &mut LightcraftApp, ui: &mut egui::Ui, t: &Tokens, dlg: &mut
|
||||
field(ui, "Start at", |ui| ui.add(egui::DragValue::new(start).range(0..=999_999)));
|
||||
ui.label(
|
||||
egui::RichText::new(crate::i18n::tr(
|
||||
"Tags: see Tags beside the template. Files are renamed on disk (with their XMP sidecars); existing names get -1, -2…",
|
||||
"The Tags button lists placeholders for the template, such as {date} or {seq}. Each file is renamed on disk along with its XMP sidecar; a name that is taken gets -1, -2…",
|
||||
))
|
||||
.color(t.text_dim),
|
||||
);
|
||||
@@ -1057,7 +1092,14 @@ fn contact_sheet_body(app: &mut LightcraftApp, ui: &mut egui::Ui, dlg: &mut Dial
|
||||
options.columns = options.columns.clamp(1, 8);
|
||||
options.rows = options.rows.clamp(1, 10);
|
||||
let n = app.session.selected().len();
|
||||
ui.label(crate::i18n::tr_format!("{n} selected photos · {pages} pages", n = n, pages = n.div_ceil(options.columns * options.rows)));
|
||||
let pages = n.div_ceil(options.columns * options.rows);
|
||||
ui.label(crate::i18n::tr_format!(
|
||||
"{n} selected photo{} · {pages} page{}",
|
||||
if n == 1 { "" } else { "s" },
|
||||
if pages == 1 { "" } else { "s" },
|
||||
n = n,
|
||||
pages = pages
|
||||
));
|
||||
field(ui, "Paper", |ui| {
|
||||
let c = crate::widgets::combo_box("contactSheetPaper").selected_text(&options.paper).show_ui(ui, |ui| {
|
||||
ui.selectable_value(&mut options.paper, "a4".into(), "A4");
|
||||
|
||||
@@ -85,7 +85,9 @@ pub(super) fn slideshow_export_body(app: &mut LightcraftApp, ui: &mut egui::Ui,
|
||||
let titles = usize::from(intro.is_some()) + usize::from(ending.is_some());
|
||||
let seconds = photos as f64 * slide + intro.unwrap_or(0.0) + ending.unwrap_or(0.0);
|
||||
let summary = crate::i18n::tr_format!(
|
||||
"{n} photos in view · {slides} slides · {time}",
|
||||
"{n} photo{} in view · {slides} slide{} · {time}",
|
||||
if photos == 1 { "" } else { "s" },
|
||||
if photos + titles == 1 { "" } else { "s" },
|
||||
n = photos,
|
||||
slides = photos + titles,
|
||||
time = format!("{}:{:02}", (seconds / 60.0).floor() as u64, (seconds % 60.0).round() as u64)
|
||||
|
||||
@@ -14,6 +14,7 @@ mod crop_rotate;
|
||||
mod crop_tool;
|
||||
mod curve;
|
||||
mod date_picker;
|
||||
mod dialog_copy;
|
||||
mod dialog_fit;
|
||||
mod dialog_primary;
|
||||
mod dialog_settings;
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
//! A dialog's confirm button names what it does ("Rename", "Create", "Stack"…), not "OK": the
|
||||
//! button is the last thing read before a change is made.
|
||||
|
||||
use crate::headless::Headless;
|
||||
use crate::state::Dialog;
|
||||
use crate::{LightcraftApp, Services};
|
||||
use serde_json::json;
|
||||
use std::time::Duration;
|
||||
|
||||
const T: Duration = Duration::from_secs(20);
|
||||
|
||||
fn demo() -> Headless {
|
||||
let app = LightcraftApp::new(lightcraft_engine::Session::with_demo(), Services { png: None, ..Default::default() });
|
||||
let mut h = Headless::new(app, [1300.0, 1000.0], 1.0);
|
||||
h.settle(T);
|
||||
h
|
||||
}
|
||||
|
||||
fn show(h: &mut Headless, dialog: Dialog) -> Vec<String> {
|
||||
h.app.ui.dialog = Some(dialog);
|
||||
h.step();
|
||||
h.step();
|
||||
h.painted_text()
|
||||
}
|
||||
|
||||
fn dialog(value: serde_json::Value) -> Dialog {
|
||||
serde_json::from_value(value).unwrap_or_else(|e| panic!("bad dialog json: {e}"))
|
||||
}
|
||||
|
||||
/// Dialogs whose confirm may stay "OK" because nothing more specific is true of them: none today.
|
||||
/// (A one-field prompt opened with a command the app doesn't know has no verb to name.)
|
||||
const KEEPS_OK: &[&str] = &[];
|
||||
|
||||
#[test]
|
||||
fn confirm_buttons_name_their_action() {
|
||||
let mut h = demo();
|
||||
let cases: Vec<(&str, serde_json::Value, &str)> = vec![
|
||||
("new album", json!({"kind": "newAlbum", "name": "", "folder": false}), "Create"),
|
||||
("new folder", json!({"kind": "newAlbum", "name": "", "folder": true}), "Create"),
|
||||
("rename album", json!({"kind": "renameAlbum", "id": 1, "name": "A"}), "Rename"),
|
||||
("new smart album", json!({"kind": "newSmartAlbum", "name": ""}), "Create"),
|
||||
("auto-stack", json!({"kind": "autoStack", "gap": 60.0}), "Stack"),
|
||||
("capture time", json!({"kind": "captureTime", "mode": "set", "time": "", "days": 0, "hours": 0, "minutes": 0, "zone": 0.0}), "Change"),
|
||||
("label names", json!({"kind": "labelNames", "names": [], "save_as": ""}), "Save"),
|
||||
("rename photos", json!({"kind": "rename", "template": "{name}", "start": 1}), "Rename"),
|
||||
("rename keyword", json!({"kind": "renameKeyword", "from": "a", "to": "b"}), "Rename"),
|
||||
("merge keywords", json!({"kind": "mergeKeywords", "from": ["a"], "into": "b"}), "Merge Keywords"),
|
||||
("assisted culling", json!({"kind": "cull", "reject_below": 0.0, "pick_best": true, "burst_gap": 10.0, "similarity": 0.93}), "Cull"),
|
||||
("new preset", json!({"kind": "createPreset", "name": "", "group": ""}), "Create"),
|
||||
("copy settings", json!({"kind": "copySettings", "groups": []}), "Copy"),
|
||||
("paste settings", json!({"kind": "pasteSettings", "groups": []}), "Paste"),
|
||||
];
|
||||
for (what, value, want) in cases {
|
||||
let text = show(&mut h, dialog(value));
|
||||
assert!(text.iter().any(|t| t == want), "{what}: the confirm button reads {want:?}: {text:?}");
|
||||
assert!(KEEPS_OK.contains(&what) || !text.iter().any(|t| t == "OK"), "{what}: the confirm button still reads OK: {text:?}");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn one_field_prompts_name_what_they_do() {
|
||||
let mut h = demo();
|
||||
let prompts = [
|
||||
("album.rename", "Rename"),
|
||||
("folder.rename", "Rename"),
|
||||
("folder.create", "Create"),
|
||||
("version.rename", "Rename"),
|
||||
("preset.rename", "Rename"),
|
||||
("mask.renameEffect", "Rename"),
|
||||
("mask.setEffectGroup", "Create"),
|
||||
("preset.move", "Move"),
|
||||
("app.newLibrary", "Create"),
|
||||
("keyword.saveSet", "Save"),
|
||||
("filter.savePreset", "Save"),
|
||||
("curve.savePreset", "Save"),
|
||||
("metadata.savePreset", "Save"),
|
||||
("photo.tagFromTracklog", "Add Locations"),
|
||||
];
|
||||
for (command, want) in prompts {
|
||||
let prompt = Dialog::TextPrompt {
|
||||
title: "Title".into(),
|
||||
hint: "Hint".into(),
|
||||
value: String::new(),
|
||||
command: command.into(),
|
||||
params: json!({}),
|
||||
key: "name".into(),
|
||||
};
|
||||
let text = show(&mut h, prompt);
|
||||
assert!(text.iter().any(|t| t == want), "{command}: the confirm button reads {want:?}: {text:?}");
|
||||
assert!(!text.iter().any(|t| t == "OK"), "{command}: no OK: {text:?}");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn export_confirm_says_how_many_photos() {
|
||||
let mut h = demo();
|
||||
h.app.run("dialog.export", json!({})).unwrap();
|
||||
h.step();
|
||||
h.step();
|
||||
let one = h.painted_text();
|
||||
let n = h.app.session.selection.ids.len().max(1);
|
||||
let want = if n == 1 { "Export 1 Photo".to_string() } else { format!("Export {n} Photos") };
|
||||
assert!(one.contains(&want), "reads {want:?}: {one:?}");
|
||||
assert!(!one.iter().any(|t| t == "OK"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn counts_agree_with_their_nouns() {
|
||||
let mut h = demo();
|
||||
let ids: Vec<u64> = h.app.session.catalog.photos().map(|p| p.id.0).take(2).collect();
|
||||
let rows = |h: &mut Headless, n: usize| {
|
||||
h.app.session.selection.ids = ids.iter().take(n).map(|i| lightcraft_catalog::PhotoId(*i)).collect();
|
||||
let text = show(
|
||||
h,
|
||||
dialog(json!({"kind": "contactSheet", "options": serde_json::to_value(lightcraft_engine::contact_sheet::Options::default()).unwrap()})),
|
||||
);
|
||||
text.into_iter().find(|t| t.contains("selected photo") || t.contains("1 photo")).unwrap_or_default()
|
||||
};
|
||||
let one = rows(&mut h, 1);
|
||||
assert!(one.starts_with("1 selected photo ·") && one.ends_with("1 page"), "{one:?}");
|
||||
let two = rows(&mut h, 2);
|
||||
assert!(two.starts_with("2 selected photos ·") && two.ends_with("1 page"), "{two:?}");
|
||||
}
|
||||
@@ -468,7 +468,7 @@ differences and missing bindings are in [ui-parity.md](ui-parity.md#shortcuts).
|
||||
| LR-BEHAV-RENDER-FIDELITY | Rendering matches Lightroom | P1 | 🟡 | `crates/pipeline/src/lib.rs`, `crates/pipeline/src/tone.rs` | every slider exists and works, but the character of the result (tone curve shape, highlight recovery, texture / clarity / dehaze, noise reduction, sharpening, default look) is tuned by eye; there is no systematic side-by-side comparison against Lightroom on the same CC0 raws. Needs a fidelity suite: Lightroom reference renders kept only in the local `plan/` (never committed), compared per slider and preset with a perceptual metric. Tuning that changes how existing settings render ships as a new process version (LRC-DEV-PROCESS, `docs/process-versions.md`) |
|
||||
| LR-BEHAV-DRAGDROP | Drag and drop | P1 | ✅ | `crates/ui-egui/src/lib.rs`, `crates/ui-egui/src/panels/grid.rs` (`drag_feedback`), `crates/ui-egui/src/panels/left.rs` (`drop_target`, `album_drag_over`, `top_level_drop_target`, `drag_auto_scroll`) | files → app (a drop-target card while they hover, then the import review); grid photos → an album row (adds the selection, with a count badge while dragging); sidebar album / folder rows → a folder (moves it; its name follows the pointer); a drag of albums or grid photos near the top or bottom edge of the sidebar scrolls it (faster nearer the edge, only while the pointer is over the sidebar) |
|
||||
| LR-BEHAV-TOAST | Toast notifications | P1 | ✅ | `crates/ui-egui/src/panels.rs` | |
|
||||
| LR-BEHAV-DIALOGS | Dialogs fit the window | P1 | ✅ | `crates/ui-egui/src/dialogs.rs` (`dialog_body`, `list_height`), `crates/ui-egui/src/tests/dialog_fit.rs`, `crates/ui-egui/src/tests/dialogs.rs` (`a_click_outside_closes_the_dialog_when_settings_allow_it`) | a dialog taller than the window (Export on a 1366×768 screen, issue #781) never runs off it: its options scroll while the title bar and the Cancel / OK row stay on screen; lists that scroll on their own (What's New, All Metadata, shortcuts, smart-album rules, credits) get shorter first; dialogs that fit look as before; Import keeps its own resizable, scrolling window; Settings → Dialogs → Close a dialog by clicking outside it (off by default, so a stray click never throws away a dialog's choices): a click pressed and released on the dimmed backdrop closes the dialog like Esc and doesn't reach the panels below, while a drag that ends outside (a slider pulled past the edge) or a click that closes a dropdown keeps it; the import review never closes this way (`clicked_backdrop`) |
|
||||
| LR-BEHAV-DIALOGS | Dialogs fit the window | P1 | ✅ | `crates/ui-egui/src/dialogs.rs` (`dialog_body`, `list_height`), `crates/ui-egui/src/tests/dialog_fit.rs`, `crates/ui-egui/src/tests/dialog_copy.rs`, `crates/ui-egui/src/tests/dialogs.rs` (`a_click_outside_closes_the_dialog_when_settings_allow_it`) | a dialog taller than the window (Export on a 1366×768 screen, issue #781) never runs off it: its options scroll while the title bar and the Cancel / OK row stay on screen (the confirm button names its action: Create, Rename, Stack, Export 3 Photos…, with "OK" kept only for a one-field prompt opened with a command that has no verb, `crates/ui-egui/src/tests/dialog_copy.rs`); lists that scroll on their own (What's New, All Metadata, shortcuts, smart-album rules, credits) get shorter first; dialogs that fit look as before; Import keeps its own resizable, scrolling window; Settings → Dialogs → Close a dialog by clicking outside it (off by default, so a stray click never throws away a dialog's choices): a click pressed and released on the dimmed backdrop closes the dialog like Esc and doesn't reach the panels below, while a drag that ends outside (a slider pulled past the edge) or a click that closes a dropdown keeps it; the import review never closes this way (`clicked_backdrop`) |
|
||||
| LR-BEHAV-SIDEBAR-COLLAPSE | Collapsible left-sidebar sections | P2 | ✅ | `crates/ui-egui/src/panels/left.rs` (`section`, `section_header`), `crates/ui-egui/src/sidebar.rs` (`SidebarLayout`), `crates/ui-egui/src/tests/panels.rs` | click the Albums, Local, By Date, Folders or Keywords header (or drive `ui.clickWidget` `sidebarSection:<albums\|local\|byDate\|folders\|keywords>`) to fold or unfold the section; a chevron before the title shows the state; the choice is kept across restarts (`sidebar` in the UI state; the `collapsedSidebar` list of older settings files is still read). the click itself is UI-only, like the By Date / Keywords disclosure triangles, and `cmd:view.sidebarSection` `{section, collapsed}` folds and unfolds for agents; photos dropped on a folded Albums section have no target |
|
||||
| LR-BEHAV-SIDEBAR-SECTIONS | Left-sidebar sections share one frame and one arrangement | P2 | ✅ | `crates/ui-egui/src/sidebar.rs` (`SidebarSection`, `SidebarLayout`), `crates/ui-egui/src/panels/left.rs` (`section`, `section_header`, `tree_toggle`), `crates/ui-egui/src/tests/panels.rs` | Albums, Local, By Date, Folders and Keywords are drawn by one `section` frame (the same gap above, header, fold and accessibility name) from one arrangement, `sidebar` in the UI state: a list of `{id, hidden, collapsed}` top to bottom, also settable with `ui.set`. Whatever is read, every section is in it exactly once (unknown and repeated entries are dropped, the rest follow in the usual order), so a damaged or newer settings file never loses the other settings. Rows that open (album folders, Local folders, dates, library folders, keywords) share `tree_toggle`: the same triangle, the same remembered open state, announced as Expand / Collapse. A section with nothing to list (Folders before anything is imported, Keywords before any is added) stays, open, with a one-line note in place of rows (`sidebarEmpty:<id>`) instead of disappearing. `ui.set` reads `sidebar` strictly (`SidebarLayout::parse`): an unknown or repeated section, or a flag that is not true / false, is refused and changes nothing; sections left out follow in the usual order, shown and open; the older `collapsedSidebar` list still folds and unfolds. A section may have one button at the end of its header, declared in one place (`header_button`: an icon, a tooltip, and either an action or a menu): the frame draws it at the visible edge in the header and its pinned copy, keeps its click from folding the section and leaves it room beside a folded section's count. Albums has + (`icon:albumNew`: Create Album / Smart Album / Folder…), Keywords has + (`icon:keywordNew`: Create Keyword Tag, for a keyword inside the default parent, not inside what the Keyword List has picked; once made, Keywords is shown and opened down to it). My Photos (All Photos, Recently Added, Picks, Missing Photos, Recently Deleted) is not a section: it stays on top |
|
||||
| LR-BEHAV-SIDEBAR-HIDE | Show and hide left-sidebar sections | P2 | ✅ | `cmd:view.sidebarSection`, `cmd:view.sidebarReset`, `crates/ui-egui/src/sidebar.rs`, `crates/ui-egui/src/panels/left.rs` (`sections_menu`), `crates/ui-egui/src/menus/menubar.rs`, `crates/ui-egui/src/tests/panels.rs` | View ▸ Sidebar Sections lists Albums, Local, By Date, Folders and Keywords in the sidebar's order, each checked while shown; unchecking one takes its header and rows off the sidebar, checking it puts it back where and how it was (still folded if it was). The same list opens with a right-click on any section header (with Hide This Section first; widgets `sidebarMenu:hide`, `sidebarMenu:section:<id>`, `sidebarMenu:reset`) and on the My Photos title (`sidebarTitle`), which is always there, so hidden sections can always come back. Reset Sidebar Sections (enabled once something changed) shows and opens every section in the usual order. `view.sidebarSection` `{section, show?, collapsed?}` flips shown / hidden when neither flag is given and refuses an unknown section or a flag that is not true / false. Hiding the section of what the grid shows (an album, a keyword filter) leaves the grid as it is; an album made while Albums is hidden or folded brings Albums back, open. Kept with the UI state (`sidebar`). My Photos itself can't be hidden |
|
||||
|
||||
@@ -157,6 +157,13 @@
|
||||
the full count took about 14 s instead of about 23 s on a heavily loaded machine; the rest is the text rules of
|
||||
the albums themselves. The counts are the same as before, including for albums that loop through each other.
|
||||
|
||||
### Dialog buttons say what they do
|
||||
- The confirm button in dialogs now names its action instead of "OK": Create for a new album, smart album, folder or
|
||||
preset, Rename for photos, albums, keywords, people and presets, Stack for Auto-Stack, Change for Capture Time,
|
||||
Copy and Paste for settings, and Export 12 Photos in the Export dialog. Rename Photos now explains what its Tags
|
||||
button lists and what happens on disk, instead of pointing at the button. Contact Sheet, Auto-Stack and
|
||||
Slideshow Export no longer say "1 photos" or "1 stacks".
|
||||
|
||||
### Sharper resampling in HDR and panorama merges
|
||||
- Merged photos (HDR and panorama) are resampled with a sharper filter (Lanczos-3 instead of bilinear). Moving a
|
||||
photo by half a pixel used to lose a third of its finest detail; now it keeps most of it, without halos around
|
||||
|
||||
Reference in New Issue
Block a user