Merge track r3-t05

# Conflicts:
#	crates/ui-egui/locales/cs-formats.json
#	crates/ui-egui/locales/cs.json
#	crates/ui-egui/locales/de-formats.json
#	crates/ui-egui/locales/de.json
#	crates/ui-egui/locales/es-formats.json
#	crates/ui-egui/locales/es.json
#	crates/ui-egui/locales/fi-formats.json
#	crates/ui-egui/locales/fi.json
#	crates/ui-egui/locales/fr-formats.json
#	crates/ui-egui/locales/fr.json
#	crates/ui-egui/locales/id-formats.json
#	crates/ui-egui/locales/id.json
#	crates/ui-egui/locales/it-formats.json
#	crates/ui-egui/locales/it.json
#	crates/ui-egui/locales/ja-formats.json
#	crates/ui-egui/locales/ja.json
#	crates/ui-egui/locales/ka-formats.json
#	crates/ui-egui/locales/ka.json
#	crates/ui-egui/locales/pl-formats.json
#	crates/ui-egui/locales/pl.json
#	crates/ui-egui/locales/pt-br-formats.json
#	crates/ui-egui/locales/pt-br.json
#	crates/ui-egui/locales/ru-formats.json
#	crates/ui-egui/locales/ru.json
#	crates/ui-egui/locales/sv-formats.json
#	crates/ui-egui/locales/sv.json
#	crates/ui-egui/locales/uk-formats.json
#	crates/ui-egui/locales/uk.json
#	crates/ui-egui/locales/vi-formats.json
#	crates/ui-egui/locales/vi.json
#	crates/ui-egui/locales/zh-hans-formats.json
#	crates/ui-egui/locales/zh-hans.json
#	crates/ui-egui/locales/zh-hant-formats.json
#	crates/ui-egui/locales/zh-hant.json
#	docs/gaps.md
#	docs/parity-checklist.md
#	docs/whats-new.md
This commit is contained in:
aiongg
2026-10-31 02:30:12 +00:00
59 changed files with 4063 additions and 154 deletions
+4 -3
View File
@@ -2,7 +2,7 @@
**Stage: alpha** · next: beta, ~14 points and ~340–600 h away
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-24 · **Change:** minor (the lens profile database priority links its tracking issue #329; Print: Japanese photo and postcard paper sizes — L判, 2L判, KG判, はがき, 往復はがき, 六切, 四切, 名刺; Minolta MRW decoded, 6 bodies verified; RAW: 83% of Adobe's models decode, 38% verified after the camera-coverage sweep #1327; German catalog 91% → 97%: interface strings and What's New lines translated) · **Target:** Adobe Lightroom Classic 15.5 / Lightroom 9.6
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-24 · **Change:** minor (gap 9: CI runs the tests on Linux x64 since #2667; macOS, Windows and the GPU equivalence tests still don't; the lens profile database priority links its tracking issue #329; Print: Japanese photo and postcard paper sizes — L判, 2L判, KG判, はがき, 往復はがき, 六切, 四切, 名刺; Minolta MRW decoded, 6 bodies verified; RAW: 83% of Adobe's models decode, 38% verified after the camera-coverage sweep #1327; German catalog 91% → 97%: interface strings and What's New lines translated) · **Target:** Adobe Lightroom Classic 15.5 / Lightroom 9.6
One-page summary of how close LightCraft is to Adobe Lightroom. Agents: read this, then pick work
from [docs/gaps.md](docs/gaps.md). The full assessment, method and evidence are in
@@ -31,7 +31,7 @@ Each audience with its own hours (Opus 5.5 agent wall-clock hours to ~95%):
The gap between breadth and readiness is quality and coverage, not missing buttons: camera colour is
estimated rather than measured, CR3 decodes on 26 verified Canon bodies (rarer CRX variants still open as previews), compressed ORF and HE NEF
open as previews, rendering is tuned by eye, AI masks are heuristics, there is no lens database, and
tests run in CI on FreeBSD only. **Why alpha:** core workflows run end to end, but readiness is below
tests run in CI on Linux x64 (every pull request and push to `main`) and FreeBSD (nightly), not on macOS or Windows. **Why alpha:** core workflows run end to end, but readiness is below
the ~75% beta bar (it is above the ~40% alpha bar) and Lightroom's main inputs, raw files, still have blocking gaps (compressed ORF and HE NEF open as previews; Canon,
~30% of raw users, decodes CR3 on 26 verified bodies). It passes the alpha gate: all six core workflows
(import, cull, develop, save and reopen, batch looks, export) work end to end on macOS
@@ -109,7 +109,7 @@ Ranked toward beta; detail in [docs/roadmap.md](docs/roadmap.md), gaps in [docs/
5. AI masks: Subject / Sky / People (40–70 h + model decision)
6. Compressed ORF and HE NEF (28–55 h)
7. Lens profile database of our own (40–80 h, #329)
8. Tests in CI on macOS, Windows and Linux (6–12 h)
8. Tests in CI on macOS and Windows, and the GPU tests in CI (6–12 h)
9. Per-model raw verification (20–35 h)
## Progress log
@@ -192,6 +192,7 @@ Ranked toward beta; detail in [docs/roadmap.md](docs/roadmap.md), gaps in [docs/
| Date | Change | Summary |
|---|---|---|
| 2026-10-24 | minor | Priority 7 (lens profile database) links its tracking issue #329; headline numbers unchanged |
| 2026-10-24 | patch | Alpha rationale: tests run in CI on Linux x64 (#2667) and FreeBSD nightly, not on macOS or Windows; ranked item 8 now reads "Tests in CI on macOS and Windows, and the GPU tests in CI"; percentages and hours unchanged |
| 2026-10-22 | minor | Print: Japanese photo and postcard paper sizes (L判, 2L判, KG判, はがき, 往復はがき, 六切, 四切, 名刺) in the page setup, Print dialog and PDF output; headline numbers unchanged |
| 2026-10-19 | minor | Indonesian interface (`id`): every plain and formats message, plus 69 command labels, locale, menu command and tests; What's New left in English; Localization ~55% → ~64% (mean of the 12 key languages), 8 of 12 present |
| 2026-10-12 | minor | Italian interface (`it`, #1192): 2,201 of 2,398 messages, locale, menu command and tests; headline numbers unchanged |
+4 -2
View File
@@ -520,9 +520,11 @@ pub(crate) fn smart_album_holds(id: crate::AlbumId, photo: crate::PhotoId, match
}
}
}
let _forget = Forget(EVALUATING.with_borrow(Vec::is_empty));
let outermost = EVALUATING.with_borrow(Vec::is_empty);
let _forget = Forget(outermost);
let answer = evaluating(id, matches);
if let Some(a) = answer {
// (the outermost answer would be forgotten as this returns: only what a nested question worked out is kept)
if let (Some(a), false) = (answer, outermost) {
ANSWERS.with_borrow_mut(|known| known.insert((id, photo), a));
}
answer.unwrap_or(false)
+48
View File
@@ -297,6 +297,54 @@ fn work_gate_waits_for_room() {
drop(g.acquire(1000));
}
/// Issue #2576: work weighed with saturating maths can ask for `usize::MAX` bytes. Adding to
/// that overflowed (a panic with the gate's mutex held in a debug build, a wrapped count that
/// let everything in for a release one). The count is now exact past `usize::MAX`: later work
/// waits, whichever permit is released first, and even on a gate whose limit is `usize::MAX`.
#[test]
fn work_gate_counts_past_usize_max_instead_of_overflowing() {
use crate::memory::WorkGate;
// a holder of one byte, on its own thread; still waiting 50 ms later
let waiting = |g: &Arc<WorkGate>| {
let g2 = g.clone();
let t = std::thread::spawn(move || {
let _b = g2.acquire(1);
g2.usage().0
});
std::thread::sleep(std::time::Duration::from_millis(50));
assert!(!t.is_finished(), "the next holder waits");
t
};
// the huge permit released first: the urgent one is still counted
let g = Arc::new(WorkGate::new(100));
let huge = g.acquire(usize::MAX);
let urgent = g.acquire_urgent(101);
assert_eq!(g.usage().0, usize::MAX, "reported saturated");
drop(huge);
assert_eq!(g.usage().0, 101);
let t = waiting(&g);
drop(urgent);
assert_eq!(t.join().unwrap(), 1);
assert_eq!(g.usage().0, 0);
// the urgent permit released first
let huge = g.acquire(usize::MAX);
drop(g.acquire_urgent(1));
assert_eq!(g.usage().0, usize::MAX);
let t = waiting(&g);
drop(huge);
assert_eq!(t.join().unwrap(), 1);
assert_eq!(g.usage().0, 0);
// a gate without a practical limit is still full when it holds usize::MAX
let g = Arc::new(WorkGate::new(usize::MAX));
let huge = g.acquire(usize::MAX);
let t = waiting(&g);
drop(huge);
assert_eq!(t.join().unwrap(), 1);
}
#[test]
fn levels_cover_sizes_and_large_exports_use_the_original() {
assert_eq!(SourceLevel::for_size(256), SourceLevel::Thumb);
+15 -9
View File
@@ -99,7 +99,10 @@ pub fn cache_share(budget: usize) -> usize {
/// A weighted semaphore over bytes of working memory: [`WorkGate::acquire`] waits while other
/// holders already use the limit (one holder may always proceed, whatever its size).
pub struct WorkGate {
state: Mutex<(usize, usize)>,
/// Bytes held and the limit. Held is a `u128`: callers weigh work with saturating maths, so a
/// permit may hold `usize::MAX`, and the exact total of several such permits still fits, so
/// releasing one in any order leaves the others counted (issue #2576).
state: Mutex<(u128, usize)>,
cv: Condvar,
}
@@ -114,7 +117,7 @@ impl WorkGate {
WorkGate { state: Mutex::new((0, limit)), cv: Condvar::new() }
}
fn lock(&self) -> std::sync::MutexGuard<'_, (usize, usize)> {
fn lock(&self) -> std::sync::MutexGuard<'_, (u128, usize)> {
self.state.lock().unwrap_or_else(|e| e.into_inner())
}
@@ -123,24 +126,27 @@ impl WorkGate {
self.cv.notify_all();
}
/// Bytes held now and the limit.
/// Bytes held now (at most `usize::MAX`) and the limit.
pub fn usage(&self) -> (usize, usize) {
*self.lock()
let g = self.lock();
(usize::try_from(g.0).unwrap_or(usize::MAX), g.1)
}
/// Hold `bytes`, waiting until they fit (or nothing else is held).
/// Hold `bytes`, waiting until they fit (or nothing else is held). Even `usize::MAX` bytes on
/// a gate whose limit is `usize::MAX` make the next holder wait.
pub fn acquire(&self, bytes: usize) -> Permit<'_> {
let mut g = self.lock();
while g.0 > 0 && g.0 + bytes > g.1 {
while g.0 > 0 && g.0.saturating_add(bytes as u128) > g.1 as u128 {
g = self.cv.wait(g).unwrap_or_else(|e| e.into_inner());
}
g.0 += bytes;
g.0 = g.0.saturating_add(bytes as u128);
Permit { gate: self, bytes }
}
/// Hold `bytes` without waiting (interactive work): counted, so background work waits for it.
pub fn acquire_urgent(&self, bytes: usize) -> Permit<'_> {
self.lock().0 += bytes;
let mut g = self.lock();
g.0 = g.0.saturating_add(bytes as u128);
Permit { gate: self, bytes }
}
}
@@ -148,7 +154,7 @@ impl WorkGate {
impl Drop for Permit<'_> {
fn drop(&mut self) {
let mut g = self.gate.lock();
g.0 = g.0.saturating_sub(self.bytes);
g.0 = g.0.saturating_sub(self.bytes as u128);
drop(g);
self.gate.cv.notify_all();
}
+15 -1
View File
@@ -370,7 +370,21 @@ mod tests {
// identity of either name cannot be read while it is held.
let held = std::fs::OpenOptions::new().read(true).share_mode(0).open(&original).unwrap();
let refused = s.pin_write_target(&linked.to_string_lossy()).unwrap_err();
assert!(refused.contains("cannot tell whether"), "{refused}");
// Except with SeBackupPrivilege enabled (an admin's Git Bash, so every Windows CI gate leg):
// a backup-semantics open of both names, as the guard's identity read uses, gets past the
// held handle. The guard then sees the link and refuses it as the original instead (#3228).
const FILE_FLAG_BACKUP_SEMANTICS: u32 = 0x0200_0000;
let backup_open = |p: &std::path::Path| std::fs::OpenOptions::new().read(true).custom_flags(FILE_FLAG_BACKUP_SEMANTICS).open(p).is_ok();
if backup_open(&original) && backup_open(&linked) {
assert!(refused.contains("is the original"), "{refused}");
assert!(!refused.contains("cannot tell whether"), "{refused}");
lightcraft_testkit::skip!(
System,
"a backup-semantics open gets past share_mode(0) here (SeBackupPrivilege is enabled), so the \"cannot tell whether\" refusal can't be tested"
);
} else {
assert!(refused.contains("cannot tell whether"), "{refused}");
}
drop(held);
let refused = s.pin_write_target(&linked.to_string_lossy()).unwrap_err();
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "Přidáno fotografií: {n}{:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "Kam má jít katalog Lightroomu „{catalog}“?",
"Merge into the open library “{library}” ({count} photo{})": "Sloučit s otevřenou knihovnou „{library}“ (fotografie: {count}{:.0})",
"Photo: {name}": "Fotografie: {name}"
"Photo: {name}": "Fotografie: {name}",
"Panel layout could not be restored: {error}": "Rozložení panelů se nepodařilo obnovit: {error}",
"Panel move was not applied: {error}": "Přesun panelu nebyl použit: {error}",
"{name} is installed": "{name} je nainstalován",
"{name} is installed and in use: face recognition is on": "{name} je nainstalován a používán: rozpoznávání obličejů je zapnuto"
}
+9 -1
View File
@@ -599,6 +599,7 @@
"Download Place Names (GeoNames)": "Stáhnout názvy míst (GeoNames)",
"Download the SAM 3 Model?": "Stáhnout model SAM 3?",
"Downloaded and checked. Installing…": "Staženo a ověřeno. Probíhá instalace…",
"The download failed": "Stažení se nezdařilo",
"Downloading model": "Stahování modelu",
"Downloading place names": "Stahování názvů míst",
"Downloads": "Stažené soubory",
@@ -2421,5 +2422,12 @@
"The photos are imported once it ends": "Fotky se naimportují potom",
"An import is running. Drop photos when it has finished": "Import už běží. Fotky přetáhněte, až skončí",
"Finish Lightroom catalog import before adding photos": "Dokončete import katalogu Lightroom, než přidáte fotky",
"Import Thumbnail Size": "Velikost miniatur při importu"
"Import Thumbnail Size": "Velikost miniatur při importu",
"Face recognition is on": "Rozpoznávání obličejů je zapnuto",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Rozpoznávání obličejů je vypnuto. Zapněte je, abyste dostávali návrhy jmen a viděli podobné obličeje pohromadě.",
"Turn on": "Zapnout",
"Set up face recognition": "Nastavit rozpoznávání obličejů",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Rozpoznávání obličejů potřebuje model, aby mohlo navrhovat jména: jednorázové stažení v Nastavení.",
"Turn on name suggestions": "Zapnout návrhy jmen",
"Set up name suggestions…": "Nastavit návrhy jmen…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "{n} Foto{} hinzugefügt",
"Where should the Lightroom catalog “{catalog}” go?": "Wohin soll der Lightroom-Katalog „{catalog}“?",
"Merge into the open library “{library}” ({count} photo{})": "Mit der geöffneten Bibliothek „{library}“ zusammenführen ({count} Foto{})",
"Photo: {name}": "Foto: {name}"
"Photo: {name}": "Foto: {name}",
"Panel layout could not be restored: {error}": "Die Bereichsanordnung konnte nicht wiederhergestellt werden: {error}",
"Panel move was not applied: {error}": "Das Verschieben des Bereichs wurde nicht ausgeführt: {error}",
"{name} is installed": "{name} ist installiert",
"{name} is installed and in use: face recognition is on": "{name} ist installiert und in Gebrauch: Gesichtserkennung ist eingeschaltet"
}
+9 -1
View File
@@ -1875,6 +1875,7 @@
"Denoise Settings": "Entrauschungseinstellungen",
"Denoise all photos with an Amount": "Alle Fotos mit einer Stärke entrauschen",
"Downloaded and checked. Installing…": "Heruntergeladen und geprüft. Wird installiert…",
"The download failed": "Der Download ist fehlgeschlagen",
"Failed its last test": "Letzter Test fehlgeschlagen",
"Graphics card": "Grafikkarte",
"I have read these terms and accept them for my own use": "Ich habe diese Bedingungen gelesen und akzeptiere sie für meine eigene Nutzung",
@@ -3453,5 +3454,12 @@
"The photos are imported once it ends": "Die Fotos werden danach importiert",
"An import is running. Drop photos when it has finished": "Ein Import läuft. Lege die Fotos ab, wenn er fertig ist",
"Finish Lightroom catalog import before adding photos": "Schließe den Import des Lightroom-Katalogs ab, bevor du Fotos hinzufügst",
"Import Thumbnail Size": "Vorschaubildgröße beim Import"
"Import Thumbnail Size": "Vorschaubildgröße beim Import",
"Face recognition is on": "Gesichtserkennung ist eingeschaltet",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Gesichtserkennung ist ausgeschaltet. Schalte sie ein, um Namensvorschläge zu erhalten und ähnliche Gesichter zusammen zu sehen.",
"Turn on": "Einschalten",
"Set up face recognition": "Gesichtserkennung einrichten",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Die Gesichtserkennung braucht ein Modell, um Namen vorzuschlagen: ein einmaliger Download in den Einstellungen.",
"Turn on name suggestions": "Namensvorschläge einschalten",
"Set up name suggestions…": "Namensvorschläge einrichten…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "{n} foto{0} añadida{0}",
"Where should the Lightroom catalog “{catalog}” go?": "¿Dónde debe ir el catálogo de Lightroom “{catalog}”?",
"Merge into the open library “{library}” ({count} photo{})": "Combinar con la biblioteca abierta “{library}” ({count} foto{})",
"Photo: {name}": "Foto: {name}"
"Photo: {name}": "Foto: {name}",
"Panel layout could not be restored: {error}": "No se pudo restablecer la disposición de paneles: {error}",
"Panel move was not applied: {error}": "No se aplicó el movimiento del panel: {error}",
"{name} is installed": "{name} está instalado",
"{name} is installed and in use: face recognition is on": "{name} está instalado y en uso: el reconocimiento facial está activado"
}
+10 -1
View File
@@ -525,6 +525,7 @@
"Faded Matte": "Mate desvaído",
"Faded Slide": "Diapositiva desvaída",
"Faded Urban": "Urbano desvaído",
"Favorite": "Favorito",
"Favorite Preset": "Ajuste preestablecido favorito",
"Favorite Profile": "Perfil favorito",
"Favorites": "Favoritos",
@@ -1889,6 +1890,7 @@
"Denoise Settings": "Ajustes de reducción de ruido",
"Denoise all photos with an Amount": "Reducir el ruido de todas las fotos con una cantidad",
"Downloaded and checked. Installing…": "Descargado y comprobado. Instalando…",
"The download failed": "La descarga ha fallado",
"Failed its last test": "Falló en su última prueba",
"Graphics card": "Tarjeta gráfica",
"I have read these terms and accept them for my own use": "He leído estas condiciones y las acepto para mi propio uso",
@@ -2372,5 +2374,12 @@
"An import is running. Drop photos when it has finished": "Hay una importación en curso. Suelta las fotos cuando termine",
"Finish Lightroom catalog import before adding photos": "Termina la importación del catálogo de Lightroom antes de añadir fotos",
"Thumbnail size": "Tamaño de las miniaturas",
"Import Thumbnail Size": "Tamaño de las miniaturas de importación"
"Import Thumbnail Size": "Tamaño de las miniaturas de importación",
"Face recognition is on": "El reconocimiento facial está activado",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "El reconocimiento facial está desactivado. Actívalo para obtener sugerencias de nombres y ver juntas las caras parecidas.",
"Turn on": "Activar",
"Set up face recognition": "Configurar el reconocimiento facial",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "El reconocimiento facial necesita un modelo para sugerir nombres: una descarga única, en Ajustes.",
"Turn on name suggestions": "Activar sugerencias de nombres",
"Set up name suggestions…": "Configurar sugerencias de nombres…"
}
+6 -2
View File
@@ -124,7 +124,7 @@
"Lightroom import complete: {imported} photos added; index warning: {warning}": "Lightroom-tuonti valmis: lisättyjä kuvia {imported}; hakemistovaroitus: {warning}",
"Lightroom import failed: {e}{warning}": "Lightroom-tuonti epäonnistui: {e}{warning}",
"Lightroom inspection failed: {e}{warning}": "Lightroom-tarkastelu epäonnistui: {e}{warning}",
"Listing folders — folders: {folders}, files: {files}": "Listing folders — folders: {folders}, files: {files}",
"Listing folders — folders: {folders}, files: {files}": "Listataan kansioita — kansiot: {folders}, tiedostot: {files}",
"MIT OR Apache-2.0. Fonts: {} (OFL). Icons: original.": "MIT OR Apache-2.0. Fontit: {} (OFL). Kuvakkeet: omat.",
"Making the denoised picture… {}%": "Tehdään kohinanpoistettua kuvaa… {}%",
"Matches: {}": "Täsmäävät: {}",
@@ -310,5 +310,9 @@
"Drop to review {n} item{} for import": "Pudota tarkistaaksesi ennen tuontia (kohteita: {n}){:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "Minne Lightroom-luettelo ”{catalog}” tuodaan?",
"Merge into the open library “{library}” ({count} photo{})": "Yhdistä avoimeen kirjastoon ”{library}” (kuvia: {count}{:.0})",
"Photo: {name}": "Kuva: {name}"
"Photo: {name}": "Kuva: {name}",
"Panel layout could not be restored: {error}": "Paneelien asettelua ei voitu palauttaa: {error}",
"Panel move was not applied: {error}": "Paneelin siirtoa ei otettu käyttöön: {error}",
"{name} is installed": "{name} on asennettu",
"{name} is installed and in use: face recognition is on": "{name} on asennettu ja käytössä: kasvojentunnistus on päällä"
}
+9 -1
View File
@@ -556,6 +556,7 @@
"Download Place Names (GeoNames)": "Lataa paikannimet (GeoNames)",
"Download the SAM 3 Model?": "Ladataanko SAM 3 -malli?",
"Downloaded and checked. Installing…": "Ladattu ja tarkistettu. Asennetaan…",
"The download failed": "Lataus epäonnistui",
"Downloading model": "Ladataan mallia",
"Downloading place names": "Ladataan paikannimiä",
"Downloads": "Lataukset",
@@ -2340,5 +2341,12 @@
"Dropped Files": "Pudotetut tiedostot",
"Finish Lightroom catalog import before adding photos": "Viimeistele Lightroom-luettelon tuonti ennen kuvien lisäämistä",
"Import dropped files without review": "Tuo pudotetut tiedostot ilman tarkistusta",
"Import Thumbnail Size": "Tuonnin pienoiskuvien koko"
"Import Thumbnail Size": "Tuonnin pienoiskuvien koko",
"Face recognition is on": "Kasvojentunnistus on päällä",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Kasvojentunnistus on pois päältä. Ota se käyttöön, niin saat nimiehdotuksia ja näet samannäköiset kasvot yhdessä.",
"Turn on": "Ota käyttöön",
"Set up face recognition": "Määritä kasvojentunnistus",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Kasvojentunnistus tarvitsee mallin nimien ehdottamiseen: kertaluonteinen lataus Asetuksissa.",
"Turn on name suggestions": "Ota nimiehdotukset käyttöön",
"Set up name suggestions…": "Määritä nimiehdotukset…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "{n} photo{} ajoutée(s)",
"Where should the Lightroom catalog “{catalog}” go?": "Où importer le catalogue Lightroom « {catalog} » ?",
"Merge into the open library “{library}” ({count} photo{})": "Fusionner avec la bibliothèque ouverte « {library} » ({count} photo{})",
"Photo: {name}": "Photo : {name}"
"Photo: {name}": "Photo : {name}",
"Panel layout could not be restored: {error}": "La disposition des panneaux n'a pas pu être restaurée : {error}",
"Panel move was not applied: {error}": "Le déplacement du panneau n'a pas été appliqué : {error}",
"{name} is installed": "{name} est installé",
"{name} is installed and in use: face recognition is on": "{name} est installé et utilisé : la reconnaissance des visages est activée"
}
File diff suppressed because it is too large Load Diff
+6 -2
View File
@@ -301,7 +301,7 @@
"{what} merge added at {mp}, the largest a panorama can be (its full size is {full})": "Hasil penggabungan {what} ditambahkan dengan resolusi {mp}, resolusi maksimum untuk panorama (resolusi penuhnya {full})",
"{in_trash} catalog photos are in this library's Recently Deleted and stay there; restore them from Recently Deleted to see them.": "{in_trash} foto katalog ada di Baru dihapus pada pustaka ini dan tetap di sana; pulihkan dari Baru dihapus untuk melihatnya.",
"{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}",
"Listing folders — folders: {folders}, files: {files}": "Mendata folder — folder: {folders}, file: {files}",
"Added {n} photo{}": "{n} foto ditambahkan{:.0}",
"Could not read {name}: {e}": "Tidak dapat membaca {name}: {e}",
"Drop to import {n} item{}": "Jatuhkan untuk mengimpor {n} item{:.0}",
@@ -310,5 +310,9 @@
"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})",
"Photo: {name}": "Foto: {name}"
"Photo: {name}": "Foto: {name}",
"Panel layout could not be restored: {error}": "Tata letak panel tidak dapat dipulihkan: {error}",
"Panel move was not applied: {error}": "Pemindahan panel tidak diterapkan: {error}",
"{name} is installed": "{name} sudah terinstal",
"{name} is installed and in use: face recognition is on": "{name} sudah terinstal dan digunakan: pengenalan wajah aktif"
}
+10 -1
View File
@@ -559,6 +559,7 @@
"Download Place Names (GeoNames)": "Unduh nama tempat (GeoNames)",
"Download the SAM 3 Model?": "Unduh model SAM 3?",
"Downloaded and checked. Installing…": "Sudah diunduh dan diverifikasi. Menginstal…",
"The download failed": "Pengunduhan gagal",
"Downloading model": "Mengunduh model",
"Downloading place names": "Mengunduh nama tempat",
"Downloads": "Unduhan",
@@ -694,6 +695,7 @@
"Failed": "Gagal",
"Failed its last test": "Gagal pada pengujian terakhir",
"Favorite Mask Effect": "Jadikan efek masker favorit",
"Favorite": "Favorit",
"Favorite Preset": "Jadikan preset favorit",
"Favorite Profile": "Jadikan profil favorit",
"Favorites": "Favorit",
@@ -2353,5 +2355,12 @@
"Finish Lightroom catalog import before adding photos": "Selesaikan impor katalog Lightroom sebelum menambahkan foto",
"Import dropped files without review": "Impor file yang dijatuhkan tanpa tinjauan",
"Thumbnail size": "Ukuran gambar mini",
"Import Thumbnail Size": "Ukuran Gambar Mini Impor"
"Import Thumbnail Size": "Ukuran Gambar Mini Impor",
"Face recognition is on": "Pengenalan wajah aktif",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Pengenalan wajah nonaktif. Aktifkan untuk mendapatkan saran nama dan melihat wajah yang mirip bersama-sama.",
"Turn on": "Aktifkan",
"Set up face recognition": "Siapkan pengenalan wajah",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Pengenalan wajah memerlukan model untuk menyarankan nama: sekali unduh, di Pengaturan.",
"Turn on name suggestions": "Aktifkan saran nama",
"Set up name suggestions…": "Siapkan saran nama…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "Foto aggiunte: {n}{:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "Dove importare il catalogo Lightroom “{catalog}”?",
"Merge into the open library “{library}” ({count} photo{})": "Unisci alla libreria aperta “{library}” (foto: {count}{:.0})",
"Photo: {name}": "Foto: {name}"
"Photo: {name}": "Foto: {name}",
"Panel layout could not be restored: {error}": "Non è stato possibile ripristinare la disposizione dei pannelli: {error}",
"Panel move was not applied: {error}": "Lo spostamento del pannello non è stato applicato: {error}",
"{name} is installed": "{name} è installato",
"{name} is installed and in use: face recognition is on": "{name} è installato e in uso: il riconoscimento dei volti è attivo"
}
+174 -2
View File
@@ -764,7 +764,6 @@
"LightCraft couldn't open the library at": "LightCraft non è riuscito ad aprire la libreria in",
"There is no LightCraft library in this folder any more.": "In questa cartella non c'è più una libreria LightCraft.",
"The library isn't there: it was moved or renamed, or its drive or network share isn't connected.": "La libreria non c'è: è stata spostata o rinominata, oppure il suo disco o la sua condivisione di rete non è collegata.",
"This folder can't be read:": "Impossibile leggere questa cartella:",
"LightCraft on GitHub": "LightCraft su GitHub",
"LightCraft website": "Sito web di LightCraft",
"LightCraft — Second Window": "LightCraft: seconda finestra",
@@ -1740,6 +1739,7 @@
"Denoise Settings": "Impostazioni della riduzione disturbo",
"Denoise all photos with an Amount": "Riduci il disturbo in tutte le foto con una quantità",
"Downloaded and checked. Installing…": "Scaricato e verificato. Installazione…",
"The download failed": "Download non riuscito",
"Failed its last test": "Non ha superato l'ultimo test",
"Graphics card": "Scheda grafica",
"I have read these terms and accept them for my own use": "Ho letto queste condizioni e le accetto per uso personale",
@@ -2108,6 +2108,48 @@
"Recent Libraries": "Librerie recenti",
"Clear Recent Libraries": "Cancella le librerie recenti",
"No Recent Libraries": "Nessuna libreria recente",
"Always merge into the open library": "Unisci sempre alla libreria aperta",
"Another library was opened since this window appeared: nothing was imported": "Nel frattempo è stata aperta un'altra libreria: non è stato importato nulla",
"Ask me": "Chiedi ogni volta",
"Ask me lists your recent libraries at launch. Holding Alt (Option on a Mac) as the window appears asks once.": "Con Chiedi ogni volta, all'avvio compaiono le librerie recenti. Tenendo premuto Alt (Opzione su Mac) mentre compare la finestra, la domanda viene fatta una volta sola.",
"Ask where to import it": "Chiedi dove importarlo",
"At launch": "All'avvio",
"Burst: how alike (loose … strict)": "Raffica: quanto simili (poco … molto)",
"Burst: shots at most this far apart": "Raffica: scatti distanti al massimo",
"Checking recent libraries": "Controllo delle librerie recenti",
"Choose the library to open.": "Scegli la libreria da aprire.",
"Close a dialog by clicking outside it": "Chiudi una finestra di dialogo facendo clic fuori",
"Create Library and Import": "Crea libreria e importa",
"Create a new library": "Crea una nuova libreria",
"Dialogs": "Finestre di dialogo",
"Don't ask again (always merge into the open library)": "Non chiedere più (unisci sempre alla libreria aperta)",
"Last opened": "Ultima apertura",
"LightCraft opens the new library, then imports the catalog into it. Its folder must be new or empty.": "LightCraft apre la nuova libreria e poi vi importa il catalogo. La sua cartella deve essere nuova o vuota.",
"Lower it when a panning or moving burst splits into several groups.": "Abbassalo quando una raffica in panning o in movimento si divide in più gruppi.",
"No horizon or vertical lines to level by": "Nessun orizzonte o linea verticale su cui livellare",
"No recent libraries. Open one from a folder, or make a new one.": "Nessuna libreria recente. Aprine una da una cartella o creane una nuova.",
"Not answering yet: the drive may be asleep or offline": "Non risponde ancora: il disco potrebbe essere in stop o scollegato",
"Not found: moved, renamed or on a disconnected drive": "Non trovata: spostata, rinominata o su un disco scollegato",
"Open": "Apri",
"Open Another…": "Apri un'altra…",
"Open a Library": "Apri una libreria",
"Open a library first, then drop the presets again": "Apri prima una libreria, poi trascina di nuovo i preset",
"Open now": "Aperta ora",
"Open the last library": "Apri l'ultima libreria",
"Remove from List": "Rimuovi dall'elenco",
"The catalog's photos, collections and edits join the ones already in this library.": "Foto, raccolte e modifiche del catalogo si aggiungono a quelle già presenti in questa libreria.",
"The import reads the catalog without changing it. Next, choose whether its photos, edits, keywords and collections join the library open now or go into a new library.": "L'importazione legge il catalogo senza modificarlo. Poi scegli se foto, modifiche, parole chiave e raccolte vanno nella libreria aperta ora o in una nuova libreria.",
"The library is empty: the catalog's photos, collections and edits become its first.": "La libreria è vuota: foto, raccolte e modifiche del catalogo saranno le sue prime.",
"The library itself stays where it is.": "La libreria resta dov'è.",
"The library's catalog can't be read:": "Impossibile leggere il catalogo della libreria:",
"The photos are imported once a library is open": "Le foto vengono importate appena c'è una libreria aperta",
"There is no LightCraft library in this folder any more": "In questa cartella non c'è più una libreria LightCraft",
"This folder can't be read:": "Impossibile leggere questa cartella:",
"This is a file, not a library folder": "Questo è un file, non una cartella di libreria",
"This library couldn't be checked": "Impossibile controllare questa libreria",
"This library couldn't be checked:": "Impossibile controllare questa libreria:",
"To be asked again: Settings → General → When importing a Lightroom catalog.": "Per riavere la domanda: Impostazioni → Generale → Quando importi un catalogo Lightroom.",
"When importing a Lightroom catalog": "Quando importi un catalogo Lightroom",
"New Library: Choose Where to Put It": "Nuova libreria: scegli dove metterla",
"New Library": "Nuova libreria",
"Library name": "Nome della libreria",
@@ -2374,6 +2416,136 @@
"The photos are imported once it ends": "Le foto verranno importate dopo",
"An import is running. Drop photos when it has finished": "Un'importazione è in corso. Trascina le foto quando è finita",
"Finish Lightroom catalog import before adding photos": "Termina l'importazione del catalogo Lightroom prima di aggiungere foto",
"A slide stays up for its duration, its fade in included. A fade of 0 cuts.": "Una diapositiva resta visibile per la sua durata, dissolvenza d'ingresso compresa. Con una dissolvenza di 0 il passaggio è netto.",
"Add a cell": "Aggiungi una cella",
"cells": "celle",
"cells overlap": "celle sovrapposte",
"Also the masks of the same name on the other selected photos": "Anche le maschere con lo stesso nome nelle altre foto selezionate",
"Apply to All Masks": "Applica a tutte le maschere",
"Choose a group": "Scegli un gruppo",
"Choose at least one setting to include": "Scegli almeno un'impostazione da includere",
"Click a cell to move, resize or arrange it": "Fai clic su una cella per spostarla, ridimensionarla o disporla",
"Color wheel": "Ruota dei colori",
"Combine with the existing person": "Unisci alla persona esistente",
"Copy Settings…": "Copia impostazioni…",
"Curve channel": "Canale della curva",
"Delete Cell": "Elimina cella",
"Delete…": "Elimina…",
"Export Effect Presets": "Esporta preset effetto",
"Fade": "Dissolvenza",
"Fade duration": "Durata della dissolvenza",
"Favorite": "Preferito",
"Filters": "Filtri",
"Group (optional)": "Gruppo (facoltativo)",
"Highlighted: sliders this mask changes. Sliders left out stay as they are when the preset is applied.": "Evidenziati: i cursori che questa maschera modifica. I cursori esclusi restano come sono quando si applica il preset.",
"Include Amount": "Includi quantità",
"Include brush size, feather and flow": "Includi dimensione, sfumatura e flusso del pennello",
"LightCraft Effect Presets": "Preset effetto di LightCraft",
"Manage Presets…": "Gestisci preset…",
"Managed by Printer (Adobe RGB)": "Gestito dalla stampante (Adobe RGB)",
"Managed by Printer (sRGB)": "Gestito dalla stampante (sRGB)",
"Mask": "Maschera",
"Masks keep their sliders. Export presets first to keep a copy.": "Le maschere mantengono i loro cursori. Esporta prima i preset per conservarne una copia.",
"Move to Group…": "Sposta nel gruppo…",
"Name the preset": "Dai un nome al preset",
"New group — Return": "Nuovo gruppo — Invio",
"New spot (Return adds it here)": "Nuova macchia (Invio la aggiunge qui)",
"Next page": "Pagina successiva",
"No Matte": "Nessun passe-partout",
"No change": "Nessuna modifica",
"No effect matches": "Nessun effetto corrisponde",
"No effect presets yet": "Ancora nessun preset effetto",
"One photo fills each page inside the margins.": "Una foto riempie ogni pagina entro i margini.",
"Overlay color": "Colore della sovrapposizione",
"Page": "Pagina",
"Page Options": "Opzioni pagina",
"Previous page": "Pagina precedente",
"Remove region": "Rimuovi area",
"Rename Person…": "Rinomina persona…",
"Renders the next slides while the current one is up, so fades never wait. Off: each slide renders when it is due (less memory and work).": "Prepara le diapositive successive mentre è visibile quella attuale, così le dissolvenze non aspettano mai. Disattivato: ogni diapositiva viene preparata quando tocca a lei (meno memoria e meno lavoro).",
"Reset Sliders": "Reimposta cursori",
"Resize region": "Ridimensiona area",
"Save Current Settings as New Preset…": "Salva le impostazioni attuali come nuovo preset…",
"Search effects": "Cerca effetti",
"Select a mask to apply or update presets.": "Seleziona una maschera per applicare o aggiornare i preset.",
"Show / hide": "Mostra / nascondi",
"Show mask": "Mostra maschera",
"Slide duration": "Durata della diapositiva",
"Slideshow in the View menu plays the photos in view from the selected one. These settings are saved with the library.": "Presentazione nel menu Visualizza riproduce le foto della vista a partire da quella selezionata. Queste impostazioni vengono salvate con la libreria.",
"Template name": "Nome del modello",
"The layout image can't be shown": "Impossibile mostrare l'immagine di layout",
"This page setup is not valid": "Questa impostazione di pagina non è valida",
"Thumbnail size": "Dimensione delle miniature",
"Import Thumbnail Size": "Dimensione delle miniature di importazione"
"Import Thumbnail Size": "Dimensione delle miniature di importazione",
"Title bar": "Barra del titolo",
"Tool Overlay": "Sovrapposizione strumento",
"Ungrouped": "Senza gruppo",
"Unknown date": "Data sconosciuta",
"Unnamed face": "Volto senza nome",
"When pins show on the photo (Shift+H cycles)": "Quando mostrare i punti sulla foto (Maiusc+H li alterna)",
"current edits": "modifiche attuali",
"★ Favorites": "★ Preferiti",
"Tool Overlay: Auto": "Sovrapposizione strumento: automatica",
"Tool Overlay: Always": "Sovrapposizione strumento: sempre",
"Tool Overlay: Selected": "Sovrapposizione strumento: solo quello selezionato",
"Tool Overlay: Never": "Sovrapposizione strumento: mai",
"It is not a denoise model LightCraft understands": "Non è un modello di riduzione disturbo che LightCraft sa leggere",
"Click to hide clipping warnings for shadows and highlights.": "Fai clic per nascondere gli avvisi di taglio per ombre e luci.",
"Click to show clipping warnings for shadows and highlights.": "Fai clic per mostrare gli avvisi di taglio per ombre e luci.",
"Hide this wheel's effect": "Nascondi l'effetto di questa ruota",
"Loupe Overlay": "Sovrapposizione lente",
"Grid: add the next photo to the selection": "Griglia: aggiungi la foto successiva alla selezione",
"Grid: add the previous photo to the selection": "Griglia: aggiungi la foto precedente alla selezione",
"Grid: first photo of the view": "Griglia: prima foto della vista",
"Grid: last photo of the view": "Griglia: ultima foto della vista",
"My Preset": "Il mio preset",
"No clipping detected in this preview.": "Nessun taglio rilevato in questa anteprima.",
"No faces by that name": "Nessun volto con quel nome",
"No named people yet. Name the faces below to start.": "Ancora nessuna persona con nome. Per iniziare, dai un nome ai volti qui sotto.",
"No people yet": "Ancora nessuna persona",
"No person by that name": "Nessuna persona con quel nome",
"No unnamed faces. Faces found in your photos appear here until you name them.": "Nessun volto senza nome. I volti trovati nelle tue foto compaiono qui finché non dai loro un nome.",
"Face recognition is on": "Il riconoscimento dei volti è attivo",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Il riconoscimento dei volti è disattivato. Attivalo per ricevere suggerimenti di nomi e vedere insieme i volti simili.",
"Turn on": "Attiva",
"Set up face recognition": "Configura il riconoscimento dei volti",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Il riconoscimento dei volti ha bisogno di un modello per suggerire i nomi: un download una tantum, in Impostazioni.",
"Turn on name suggestions": "Attiva i suggerimenti di nomi",
"Set up name suggestions…": "Configura i suggerimenti di nomi…",
"A manual slideshow shows each slide until → or ← changes it. Exports still use the slide duration.": "Una presentazione manuale mostra ogni diapositiva finché → o ← non la cambia. Le esportazioni usano comunque la durata della diapositiva.",
"Auto-Collapse Iconic Panels": "Comprimi automaticamente i pannelli a icone",
"Cache limit": "Limite della cache",
"Checking for updates…": "Verifica degli aggiornamenti in corso…",
"Close other panels in group": "Chiudi gli altri pannelli del gruppo",
"Close panel window": "Chiudi la finestra del pannello",
"Close tab group": "Chiudi il gruppo di schede",
"Collapse column": "Comprimi colonna",
"Collapse to Icons": "Comprimi in icone",
"Could not check for updates:\n{error}": "Impossibile verificare gli aggiornamenti:\n{error}",
"Expand column": "Espandi colonna",
"Expand Panels": "Espandi pannelli",
"Field": "Campo",
"Float tab group": "Sgancia il gruppo di schede",
"Hold {key} to undock": "Tieni premuto {key} per sganciare",
"LightCraft Updates": "Aggiornamenti di LightCraft",
"LightCraft {version} is currently the newest version available.": "LightCraft {version} è la versione più recente disponibile.",
"Move group to": "Sposta il gruppo in",
"Move panel column": "Sposta la colonna dei pannelli",
"Move panel window": "Sposta la finestra del pannello",
"Move tab group": "Sposta il gruppo di schede",
"Open a library first, then drop the model again": "Apri prima una libreria, poi trascina di nuovo il modello",
"Operator": "Operatore",
"Organize into": "Organizza in",
"Other preset": "Preset per le altre immagini",
"Photos whose capture time can't be read were left as they were": "Le foto di cui non si può leggere l'ora di scatto sono rimaste invariate",
"Recently deleted files": "File eliminati di recente",
"Resize": "Ridimensiona",
"Restore All": "Ripristina tutto",
"Restore the photo to use it as the reference": "Ripristina la foto per usarla come riferimento",
"Show Metadata For": "Mostra metadati per",
"size": "dimensione",
"source": "origine",
"The active photo's capture time can't be read": "Impossibile leggere l'ora di scatto della foto attiva",
"The place names list towns of 15,000 people or more: in a smaller one, City gets the nearest larger town.": "L'elenco dei luoghi comprende i centri con almeno 15.000 abitanti: per uno più piccolo, Città indica il centro più grande più vicino.",
"Unit": "Unità"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "{n}枚を追加しました{:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "Lightroom カタログ「{catalog}」をどこに読み込みますか?",
"Merge into the open library “{library}” ({count} photo{})": "開いているライブラリ「{library}」に統合(写真{count}枚){:.0}",
"Photo: {name}": "写真: {name}"
"Photo: {name}": "写真: {name}",
"Panel layout could not be restored: {error}": "パネル配置を復元できませんでした:{error}",
"Panel move was not applied: {error}": "パネルの移動は適用されませんでした:{error}",
"{name} is installed": "{name} をインストールしました",
"{name} is installed and in use: face recognition is on": "{name} をインストールして使用中です:顔認識はオンです"
}
+10 -1
View File
@@ -473,6 +473,7 @@
"Faded Matte": "フェードマット",
"Faded Slide": "フェードスライド",
"Faded Urban": "フェードアーバン",
"Favorite": "お気に入り",
"Favorite Preset": "プリセットをお気に入りに追加",
"Favorite Profile": "プロファイルをお気に入りに追加",
"Favorites": "お気に入り",
@@ -1721,6 +1722,7 @@
"Denoise Settings": "ノイズ除去の設定",
"Denoise all photos with an Amount": "適用量のあるすべての写真のノイズを除去",
"Downloaded and checked. Installing…": "ダウンロードして確認しました。インストール中…",
"The download failed": "ダウンロードに失敗しました。",
"Failed its last test": "前回のテストに失敗",
"Graphics card": "グラフィックカード",
"I have read these terms and accept them for my own use": "この条件を読み、自分の使用のために同意します",
@@ -2370,5 +2372,12 @@
"An import is running. Drop photos when it has finished": "読み込み中です。完了してから写真をドロップしてください",
"Finish Lightroom catalog import before adding photos": "写真を追加する前に Lightroom カタログの読み込みを完了してください",
"Thumbnail size": "サムネイルのサイズ",
"Import Thumbnail Size": "読み込みサムネイルのサイズ"
"Import Thumbnail Size": "読み込みサムネイルのサイズ",
"Face recognition is on": "顔認識をオンにしました",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "顔認識はオフです。オンにすると、名前の候補が表示され、似た顔をまとめて見られます。",
"Turn on": "オンにする",
"Set up face recognition": "顔認識を設定",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "顔認識で名前の候補を表示するにはモデルが必要です。設定から一度だけダウンロードします。",
"Turn on name suggestions": "名前の候補をオンにする",
"Set up name suggestions…": "名前の候補を設定…"
}
+53 -49
View File
@@ -251,58 +251,58 @@
"“{parent}” has a “{name}” already. Merge the two?": "„{parent}“-ში „{name}“ უკვე არსებობს. გაერთიანდეს ორივე?",
"• {assumption}": "• {assumption}",
"… and {more} more": "… და კიდევ {more}",
" in {g} group{}": " in {g} group{}",
" · kept, not applied: {}": " · kept, not applied: {}",
" · {n} skipped (could not be rendered)": " · {n} skipped (could not be rendered)",
" — kept but not applied: {}": " — kept but not applied: {}",
"Applied {name}": "Applied {name}",
"Apply to “{mask}” on Selected Photos": "Apply to “{mask}” on Selected Photos",
"Create the keyword “{name}”": "Create the keyword “{name}”",
"Delete the effect preset “{name}”?": "Delete the effect preset “{name}”?",
"Delete these {n} effect presets?": "Delete these {n} effect presets?",
"Delete {n} effect preset{}? This can't be undone.": "Delete {n} effect preset{}? This can't be undone.",
"Delete “{name}”?": "Delete “{name}”?",
"Effect: {name}": "Effect: {name}",
"Exported to {path}": "Exported to {path}",
"Exported {} effect preset{}": "Exported {} effect preset{}",
"Imported {e} mask effect{} (Masking ▸ Effect)": "Imported {e} mask effect{} (Masking → Effect)",
"Imported {name}": "Imported {name}",
"Keywords of {n} selected photos": "Keywords of {n} selected photos",
"LightCraft stopped unexpectedly: {e}": "LightCraft stopped unexpectedly: {e}",
"LightCraft stopped unexpectedly: {e}\n\nThe log file has the details: {path}": "LightCraft stopped unexpectedly: {e}\n\nThe log file has the details: {path}",
"Removed “{name}” from {n} photos. Edit ▸ Undo puts it back.": "Removed “{name}” from {n} photos. Edit → Undo puts it back.",
" in {g} group{}": " · ჯგუფი: {g}{:.0}",
" · kept, not applied: {}": " · შენახულია, არ გამოყენებულა: {}",
" · {n} skipped (could not be rendered)": " · გამოტოვებულია: {n} (ვერ დარენდერდა)",
" — kept but not applied: {}": " — შენახულია, მაგრამ არ გამოყენებულა: {}",
"Applied {name}": "გამოყენებულია: {name}",
"Apply to “{mask}” on Selected Photos": "მონიშნულ ფოტოებზე „{mask}“-ზე გამოყენება",
"Create the keyword “{name}”": "საკვანძო სიტყვის „{name}“ შექმნა",
"Delete the effect preset “{name}”?": "წაიშალოს ეფექტის პრესეტი „{name}“?",
"Delete these {n} effect presets?": "წაიშალოს ეს ეფექტის პრესეტები ({n})?",
"Delete {n} effect preset{}? This can't be undone.": "წაიშალოს ეფექტის პრესეტები ({n}){:.0}? ამის დაბრუნება შეუძლებელია.",
"Delete “{name}”?": "წაიშალოს „{name}“?",
"Effect: {name}": "ეფექტი: {name}",
"Exported to {path}": "ექსპორტირებულია: {path}",
"Exported {} effect preset{}": "ექსპორტირებულია ეფექტის პრესეტი: {}{:.0}",
"Imported {e} mask effect{} (Masking ▸ Effect)": "იმპორტირებულია ნიღბის ეფექტი: {e}{:.0} (ნიღბვა → ეფექტი)",
"Imported {name}": "იმპორტირებულია: {name}",
"Keywords of {n} selected photos": "მონიშნული ფოტოების ({n}) საკვანძო სიტყვები",
"LightCraft stopped unexpectedly: {e}": "LightCraft მოულოდნელად შეწყდა: {e}",
"LightCraft stopped unexpectedly: {e}\n\nThe log file has the details: {path}": "LightCraft მოულოდნელად შეწყდა: {e}\n\nდეტალები ჟურნალის ფაილშია: {path}",
"Removed “{name}” from {n} photos. Edit ▸ Undo puts it back.": "„{name}“ მოშორდა ფოტოებს ({n}). რედაქტირება → დაბრუნება მას უკან აბრუნებს.",
"Inside: {names}": "შიგნით: {names}",
"Renames {n} face{} across the library. The files are not changed.": "Renames {n} face{} across the library. The files are not changed.",
"Saved template {name}": "Saved template {name}",
"Skipped {problem}": "Skipped {problem}",
"Slideshow exported: {what}": "Slideshow exported: {what}",
"Template preview: {name}": "Template preview: {name}",
"The XMP sidecars of {n} photos couldn't be written (is their folder offline?). LightCraft keeps trying.": "The XMP sidecars of {n} photos couldn't be written (is their folder offline?). LightCraft keeps trying.",
"Update “{name}” with Current Settings": "Update “{name}” with Current Settings",
"Updated {name}": "Updated {name}",
"new, inside {parent}": "new, inside {parent}",
"{count} more warnings.": "{count} more warnings.",
"Renames {n} face{} across the library. The files are not changed.": "სახეებს ({n}){:.0} მთელ ბიბლიოთეკაში ეცვლება სახელი. ფაილები არ იცვლება.",
"Saved template {name}": "შაბლონი შენახულია: {name}",
"Skipped {problem}": "გამოტოვებულია: {problem}",
"Slideshow exported: {what}": "სლაიდშოუ ექსპორტირებულია: {what}",
"Template preview: {name}": "შაბლონის გადახედვა: {name}",
"The XMP sidecars of {n} photos couldn't be written (is their folder offline?). LightCraft keeps trying.": "ფოტოების ({n}) XMP თანმხლები ფაილები ვერ ჩაიწერა (მათი საქაღალდე მიუწვდომელია?). LightCraft ცდას აგრძელებს.",
"Update “{name}” with Current Settings": "„{name}“-ის განახლება მიმდინარე პარამეტრებით",
"Updated {name}": "განახლდა: {name}",
"new, inside {parent}": "ახალი, {parent}-ის შიგნით",
"{count} more warnings.": "კიდევ გაფრთხილება: {count}.",
"{in_trash} catalog photos are in this library's Recently Deleted and stay there; restore them from Recently Deleted to see them.": "კატალოგის ფოტოები ამ ბიბლიოთეკის ახლახან წაშლილებში: {in_trash}. ისინი იქ რჩება; სანახავად აღადგინეთ ისინი ახლახან წაშლილებიდან.",
"{skipped} catalog images were not imported because their records in the catalog are incomplete.": "კატალოგის {skipped} სურათი არ დაიმპორტდა, რადგან მათი ჩანაწერები კატალოგში არასრულია.",
"{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} 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.",
"{s} s of AV1 video": "{s} s of AV1 video",
"{what} merge added at {mp}, the largest a panorama can be (its full size is {full})": "{what} merge added at {mp}, the largest a panorama can be (its full size is {full})",
"{what} merge added at {mp}: its full size, {full}, needs more memory than this computer has": "{what} merge added at {mp}: its full size, {full}, needs more memory than this computer has",
"“{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",
"Already in “{}”": "Already in “{}”",
"Move {n} photo{} to “{}”": "Move {n} photo{} to “{}”",
"Move {n} photo{} to “{}”?": "Move {n} photo{} to “{}”?",
"{missing} originals are missing. Their catalog records are available; use Find Missing Photos to relink them.": "დაკარგულია ორიგინალი: {missing}. მათი კატალოგის ჩანაწერები ხელმისაწვდომია; ხელახლა დასაკავშირებლად გამოიყენეთ „დაკარგული ფოტოების მოძებნა“.",
"{n} JPEG files": "JPEG ფაილი: {n}",
"{n} pages": "გვერდი: {n}",
"{n} photos in view · {slides} slides · {time}": "ფოტო ხედში: {n} · სლაიდი: {slides} · {time}",
"{n} preset{}": "პრესეტი: {n}{:.0}",
"{n} raws can now be developed from their raw data": "RAW ფაილების ({n}) დამუშავება ახლა მათი RAW მონაცემებიდან შეიძლება",
"{photos} catalog records processed; {collections} collections.": "დამუშავდა კატალოგის ჩანაწერი: {photos}; კოლექცია: {collections}.",
"{s} s of AV1 video": "{s} წმ AV1 ვიდეო",
"{what} merge added at {mp}, the largest a panorama can be (its full size is {full})": "{what}: გაერთიანება დაემატა {mp} ზომით, რაც პანორამის მაქსიმუმია (მისი სრული ზომაა {full})",
"{what} merge added at {mp}: its full size, {full}, needs more memory than this computer has": "{what}: გაერთიანება დაემატა {mp} ზომით: მის სრულ ზომას, {full}, იმაზე მეტი მეხსიერება სჭირდება, ვიდრე ამ კომპიუტერს აქვს",
"“{to}” is already a person. Combining them makes one person; Undo separates them again.": "„{to}“ უკვე ადამიანია. მათი გაერთიანება ერთ ადამიანს ქმნის; დაბრუნება მათ ისევ გაყოფს.",
"…and {more} more": "…და კიდევ {more}",
"Color space: Rec. 2020 {curve} (HDR AVIF)": "ფერთა სივრცე: Rec. 2020 {curve} (HDR AVIF)",
"{n} selected photos · {pages} pages": "მონიშნული ფოტო: {n} · გვერდი: {pages}",
"Already in “{}”": "უკვე „{}“-შია",
"Move {n} photo{} to “{}”": "ფოტოს გადატანა „{1}“-ში: {n}{0:.0}",
"Move {n} photo{} to “{}”?": "გადავიდეს „{1}“-ში ფოტო: {n}{0:.0}?",
"Listing folders — folders: {folders}, files: {files}": "საქაღალდეების ჩამოთვლა — საქაღალდეები: {folders}, ფაილები: {files}",
"Moved {n} photo{} to “{}”. Edit → Undo moves them back.": "Moved {n} photo{} to “{}”. Edit → Undo moves them back.",
"Moved {n} photo{} to “{}”. Edit → Undo moves them back.": "„{1}“-ში გადავიდა ფოტო: {n}{0:.0}. რედაქტირება → დაბრუნება მათ უკან აბრუნებს.",
"Drop to review {n} item{} for import": "ჩააგდეთ იმპორტამდე გადასახედად (ელემენტები: {n}){:.0}",
"Drop to import {n} item{}": "ჩააგდეთ იმპორტისთვის (ელემენტები: {n}){:.0}",
"Drop to import {n} preset{}": "ჩააგდეთ პრესეტების იმპორტისთვის: {n}{:.0}",
@@ -310,5 +310,9 @@
"Added {n} photo{}": "დაემატა ფოტო: {n}{:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "სად გადავიტანოთ Lightroom-ის კატალოგი „{catalog}“?",
"Merge into the open library “{library}” ({count} photo{})": "გაერთიანება ღია ბიბლიოთეკასთან „{library}“ (ფოტოები: {count}){:.0}",
"Photo: {name}": "ფოტო: {name}"
"Photo: {name}": "ფოტო: {name}",
"Panel layout could not be restored: {error}": "პანელების განლაგების აღდგენა ვერ მოხერხდა: {error}",
"Panel move was not applied: {error}": "პანელის გადატანა არ შესრულდა: {error}",
"{name} is installed": "{name} დაინსტალირებულია",
"{name} is installed and in use: face recognition is on": "{name} დაინსტალირებულია და გამოიყენება: სახეების ამოცნობა ჩართულია"
}
+914 -13
View File
@@ -262,7 +262,7 @@
"Black & White": "შავ-თეთრი",
"Blacks": "შავები",
"Bleach Bypass": "გაუთეთრებელი დამუშავება",
"Bleached": "გაუფერულებული",
"Bleached": "გახუნებული",
"Blending": "შერევა",
"Blown highlights in CR2 files from the Canon EOS 50D, 60D, 450D (Rebel XSi), 500D (Rebel T1i), 550D (Rebel T2i),": "გადაჭარბებით განათებული ღია ტონები Canon EOS 50D, 60D, 450D (Rebel XSi), 500D (Rebel T1i), 550D (Rebel T2i),",
"Blue": "ლურჯი",
@@ -586,7 +586,7 @@
"Description": "აღწერა",
"Deselect": "მონიშვნის მოხსნა",
"Deselect All": "ყველა მონიშვნის მოხსნა",
"Desert Heat": "უდაბნოს პაპანაქება",
"Desert Heat": "უდაბნოს ხვატი",
"Desert Warmth": "უდაბნოს სითბო",
"Desktop": "სამუშაო მაგიდა",
"Detail": "დეტალი",
@@ -620,6 +620,7 @@
"Download Place Names (GeoNames)": "ადგილების სახელების ჩამოტვირთვა (GeoNames)",
"Download the SAM 3 Model?": "ჩამოიტვირთოს SAM 3 მოდელი?",
"Downloaded and checked. Installing…": "ჩამოტვირთულია და შემოწმებულია. ინსტალირდება…",
"The download failed": "ჩამოტვირთვა ვერ მოხერხდა",
"Downloading model": "მოდელი იტვირთება",
"Downloading place names": "ადგილების სახელები იტვირთება",
"Downloads": "ჩამოტვირთვები",
@@ -744,7 +745,7 @@
"Faces": "სახეები",
"Faces of a Person": "ადამიანის სახეები",
"Faded Matte": "გაცრეცილი მატი",
"Faded Slide": "გაცრეცილი სლაიდი",
"Faded Slide": "ძველი სლაიდი",
"Faded Urban": "გაცრეცილი ქალაქი",
"Failed": "ვერ მოხერხდა",
"Failed its last test": "ბოლო შემოწმება ვერ გაიარა",
@@ -851,7 +852,7 @@
"GPU Rendering": "GPU რენდერირება",
"GPU rendering": "GPU რენდერირება",
"General": "ზოგადი",
"Generated demo photo": "გენერირებული სადემონსტრაციო ფოტო",
"Generated demo photo": "სადემონსტრაციო ფოტო",
"Geometry": "გეომეტრია",
"Get Develop Settings": "დამუშავების პარამეტრების აღება",
"Global Hue": "გლობალური ფერის ტონი",
@@ -1066,7 +1067,7 @@
"Keyword lists": "საკვანძო სიტყვების სიები",
"Keyword sets": "საკვანძო სიტყვების ნაკრებები",
"Keyword tag options decide what exported files carry: Include on Export, Export Containing Keywords, Export": "საკვანძო სიტყვის პარამეტრები განსაზღვრავს, რას შეიცავს ექსპორტირებული ფაილები: ექსპორტში ჩართვა, მშობელი საკვანძო სიტყვების ექსპორტი,",
"Keyword to paint": "მისანიჭებელი საკვანძო სიტყვა",
"Keyword to paint": "საკვანძო სიტყვა",
"Type a keyword to paint in the Keywords panel": "აკრიფეთ მისანიჭებელი საკვანძო სიტყვა პანელში „საკვანძო სიტყვები“",
"Keywording box": "საკვანძო სიტყვების ველი",
"Keywords": "საკვანძო სიტყვები",
@@ -1240,9 +1241,9 @@
"Monday": "ორშაბათი",
"Monitor profile": "მონიტორის პროფილი",
"Monitor profiles": "მონიტორის პროფილები",
"Mono Red Filter": "მონოქრომული წითელი ფილტრი",
"Mono Rich": "მდიდარი მონოქრომი",
"Mono Soft": "რბილი მონოქრომი",
"Mono Red Filter": "მონო, წითელი ფილტრი",
"Mono Rich": "მდიდარი მონო",
"Mono Soft": "რბილი მონო",
"Monochrome": "მონოქრომული",
"Month": "თვე",
"Moody": "პირქუში",
@@ -1467,7 +1468,7 @@
"Paste Settings from Previous": "წინა ფოტოს პარამეტრების ჩასმა",
"Paste from Previous": "წინადან ჩასმა",
"Paste pages": "გვერდების ჩასმა",
"Pastel Haze": "პასტელური ბურუსი",
"Pastel Haze": "პასტელის ნისლი",
"Pending photo action cancelled": "ფოტოს მოლოდინში მყოფი მოქმედება გაუქმდა",
"Pending photo action cancelled because its library or photo changed": "ფოტოს მოლოდინში მყოფი მოქმედება გაუქმდა, რადგან მისი ბიბლიოთეკა ან ფოტო შეიცვალა",
"Pentax raws without black borders": "Pentax-ის RAW ფაილები შავი კიდეების გარეშე",
@@ -1830,7 +1831,7 @@
"Search": "ძიება",
"Search Photos": "ფოტოების ძიება",
"Search albums": "ალბომების ძიება",
"Search commands or keys": "ბრძანებების ან კლავიშების ძიება",
"Search commands or keys": "ბრძანების ან კლავიშის ძიება",
"Search…": "ძიება…",
"Seasons": "სეზონები",
"Second Window": "მეორე ფანჯარა",
@@ -2078,7 +2079,7 @@
"Targeted adjustment on: drag up or down on the photo · Esc to stop": "მიზნობრივი კორექცია ჩართულია: გადაათრიეთ ფოტოზე ზემოთ ან ქვემოთ · Esc — შეწყვეტა",
"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": "მიზნობრივი კორექცია: გადაათრიეთ ფოტოზე ზემოთ/ქვემოთ, რომ იქ მრუდი შეცვალოთ",
"Teal & Amber": "ზღვისფერი და ქარვისფერი",
"Teal & Amber": "ზღვა და ქარვა",
"Teal & Orange": "ზღვისფერი და ნარინჯისფერი",
"Temp": "ტემპ.",
"Temperature": "ტემპერატურა",
@@ -2253,7 +2254,7 @@
"Waiting to start…": "დაწყების მოლოდინში…",
"Warm Film": "თბილი ფირი",
"Warm Glow": "თბილი ნათება",
"Warm Print": "თბილი ანაბეჭდი",
"Warm Print": "თბილი ფოტო",
"Warm Table": "თბილი მაგიდა",
"Watched folder": "თვალთვალის ქვეშ მყოფი საქაღალდე",
"Watched-folder auto import; Convert to DNG; Duplicate; Build Standard / 1:1 / Smart Previews.": "ავტოიმპორტი თვალთვალის ქვეშ მყოფი საქაღალდიდან; DNG-ად გარდაქმნა; დუბლირება; სტანდარტული / 1:1 / ჭკვიანი წინასწარი ხედების შექმნა.",
@@ -2747,7 +2748,907 @@
"The photos are imported once it ends": "ფოტოები ამის შემდეგ შემოიტანება",
"An import is running. Drop photos when it has finished": "იმპორტი მიმდინარეობს. ფოტოები ჩააგდეთ, როცა დასრულდება",
"Finish Lightroom catalog import before adding photos": "ფოტოების დამატებამდე დაასრულეთ Lightroom-ის კატალოგის იმპორტი",
"(not in the library)": "(ბიბლიოთეკაში არ არის)",
"1 raw can now be developed from its raw data": "1 RAW ფაილის დამუშავება ახლა მისი RAW მონაცემებიდან შეიძლება",
"150 dpi · sRGB · current edits · fit without cropping": "150 dpi · sRGB · მიმდინარე ცვლილებები · ჩატევა ჩამოჭრის გარეშე",
"A 16:9 frame with black bars above and below, the title in the corner, fades through black and a closing card.": "16:9 კადრი შავი ზოლებით ზემოთ და ქვემოთ, დასახელება კუთხეში, შავში გადასვლით მიქრობა და დასკვნითი ბარათი.",
"A dark slate backdrop with the exposure, ISO and focal length, then the camera and lens, under each photo.": "მუქი ფიქლისფერი ფონი; თითოეული ფოტოს ქვეშ ექსპოზიცია, ISO და ფოკუსური მანძილი, შემდეგ კამერა და ობიექტივი.",
"A face model uses the GPU only when a check shows it gives the same results faster.": "სახეების მოდელი GPU-ს მხოლოდ მაშინ იყენებს, როცა შემოწმება აჩვენებს, რომ ის იმავე შედეგს უფრო სწრაფად იძლევა.",
"A light grey wall with a white mat and a soft shadow; the caption and the rating under the photo.": "ღია ნაცრისფერი კედელი თეთრი პასპარტუთი და რბილი ჩრდილით; ფოტოს ქვეშ წარწერა და შეფასება.",
"A pen's pressure sets the size and flow of the brush": "კალმის დაწოლა ფუნჯის ზომასა და ნაკადს განსაზღვრავს",
"AV1 video, each slide held for its duration with its fades. No sound: music is not exported yet.": "AV1 ვიდეო: თითოეული სლაიდი თავისი ხანგრძლივობით და მიქრობებით. ხმის გარეშე: მუსიკის ექსპორტი ჯერ არ ხდება.",
"Add a model file…": "მოდელის ფაილის დამატება…",
"Add text overlay": "ტექსტური ზედდების დამატება",
"Already installed. Installing again is harmless.": "უკვე დაინსტალირებულია. ხელახლა დაინსტალირება არაფერს დააზიანებს.",
"Anchored to": "მიმაგრებულია",
"Animal Eye Tracking": "ცხოველის თვალის ტრეკინგი",
"Another library was opened since the photos were dropped: nothing was moved": "ფოტოების ჩაგდების შემდეგ სხვა ბიბლიოთეკა გაიხსნა: არაფერი გადატანილა",
"Aspect preview": "თანაფარდობის გადახედვა",
"Automatically show full screen": "სრულეკრანიან რეჟიმში ავტომატურად ჩვენება",
"Backdrop": "ფონი",
"Background colour": "ფონის ფერი",
"Background image": "ფონის გამოსახულება",
"Before the last template": "ბოლო შაბლონამდე",
"Bottom": "ქვედა",
"Built-in": "ჩაშენებული",
"CPU": "CPU",
"Can't be moved here": "აქ ვერ გადაიტანება",
"Cast shadow": "ჩრდილის დაცემა",
"Center": "ცენტრი",
"Checking raw files": "RAW ფაილები მოწმდება",
"Checking the GPU for faces": "GPU მოწმდება სახეებისთვის",
"Checking the GPU…": "GPU მოწმდება…",
"Choose a PDF destination after confirming. Print the PDF from your viewer.": "დადასტურების შემდეგ აირჩიეთ, სად შეინახოს PDF. PDF დაბეჭდეთ თქვენი სანახავი პროგრამიდან.",
"Cinema Wide": "ფართო კინო",
"Click a template to apply it; point at one to preview it on the selected photo. Right-click your own to update, rename, export or delete it.": "დაწკაპეთ შაბლონზე მის გამოსაყენებლად; მიიტანეთ მაჩვენებელი მონიშნულ ფოტოზე მის გადასახედად. საკუთარ შაბლონზე მარჯვენა დაწკაპუნებით შეგიძლიათ მისი განახლება, სახელის შეცვლა, ექსპორტი ან წაშლა.",
"Click to name this face": "დაწკაპეთ ამ სახისთვის სახელის დასარქმევად",
"Click to type a value, drag to change it": "დააწკაპუნეთ მნიშვნელობის შესაყვანად, გადაათრიეთ მის შესაცვლელად",
"Color space: Rec. 2020 HLG (HDR AVIF)": "ფერთა სივრცე: Rec. 2020 HLG (HDR AVIF)",
"Color space: Rec. 2020 PQ (HDR AVIF)": "ფერთა სივრცე: Rec. 2020 PQ (HDR AVIF)",
"Color space: Rec. 2020 PQ (HDR JPEG XL)": "ფერთა სივრცე: Rec. 2020 PQ (HDR JPEG XL)",
"Color space: Rec. 2020 PQ, 16-bit (HDR PNG)": "ფერთა სივრცე: Rec. 2020 PQ, 16-ბიტიანი (HDR PNG)",
"Colour": "ფერი",
"Colour only": "მხოლოდ ფერი",
"Colour wash": "ფერადი შეღებვა",
"Confirm before moving photos to another folder on disk": "დისკზე ფოტოების სხვა საქაღალდეში გადატანამდე დადასტურება",
"Contact Sheet PDF": "საკონტაქტო ფურცელი PDF",
"Container": "კონტეინერი",
"Custom AF Area": "მორგებული AF არე",
"Destination library": "სამიზნე ბიბლიოთეკა",
"Detection": "აღმოჩენა",
"Don't ask again": "აღარ მკითხო",
"Duration": "ხანგრძლივობა",
"Each photo as large as it fits, on black, with a short crossfade. Nothing drawn over it.": "თითოეული ფოტო რაც შეიძლება დიდი, შავ ფონზე, მოკლე გადადნობით. ზემოდან არაფერია დახატული.",
"Edge to Edge": "კიდიდან კიდემდე",
"End": "დასასრული",
"Ending": "დასასრული",
"Ending screen": "დასკვნითი ეკრანი",
"Enter to confirm, Esc to cancel": "Enter — დადასტურება, Esc — გაუქმება",
"Every photo cropped to fill the whole screen, with slow crossfades.": "ყველა ფოტო ჩამოჭრილია მთელი ეკრანის შესავსებად, ნელი გადადნობებით.",
"Expanded Flexible Spot": "გაფართოებული მოქნილი წერტილი",
"Export JPEG…": "JPEG ექსპორტი…",
"Export PDF…": "PDF ექსპორტი…",
"Export Slideshow": "სლაიდშოუს ექსპორტი",
"Export Slideshow Template": "სლაიდშოუს შაბლონის ექსპორტი",
"Export Slideshow: folder for the JPEG files": "სლაიდშოუს ექსპორტი: საქაღალდე JPEG ფაილებისთვის",
"Export Slideshow…": "სლაიდშოუს ექსპორტი…",
"Export Video…": "ვიდეოს ექსპორტი…",
"Export to": "ექსპორტი ფორმატში",
"Exporting slideshow": "სლაიდშოუ ექსპორტირდება",
"Face Tracking": "სახის ტრეკინგი",
"Face tracking": "სახის ტრეკინგი",
"Filename captions": "ფაილის სახელი წარწერად",
"Flexible Spot": "მოქნილი წერტილი",
"Focus": "ფოკუსი",
"Focus point": "ფოკუსის წერტილი",
"Frame rate": "კადრების სიხშირე",
"Gallery Wall": "გალერეის კედელი",
"Grouped by parent": "ზედა საკვანძო სიტყვით დაჯგუფებული",
"Grouped: keywords inside the same keyword share a line naming it, and long lists and the suggestions are shortened.": "დაჯგუფებული: ერთი და იმავე საკვანძო სიტყვის შიგნით მყოფი საკვანძო სიტყვები ერთ სტრიქონზეა მისი სახელით, გრძელი სიები და შეთავაზებები კი შემოკლებულია.",
"HDR TIFF needs 32-bit float.": "HDR TIFF-ს 32-ბიტიანი მცოცავი წერტილი სჭირდება.",
"HDR for Each Bracket Set": "HDR ექსპოზიციის თითოეული სერიისთვის",
"HDR output": "HDR გამოტანა",
"Hold View Until Refreshed": "ხედის შენარჩუნება განახლებამდე",
"Human Eye Tracking": "ადამიანის თვალის ტრეკინგი",
"Identity plate": "საფირმო ნიშანი",
"Import Slideshow Templates": "სლაიდშოუს შაბლონების იმპორტი",
"Import photos to get started": "დასაწყებად ფოტოების იმპორტი გააკეთეთ",
"Import…": "იმპორტი…",
"Intro": "შესავალი",
"Intro screen": "შესავალი ეკრანი",
"Keywords of the selection": "მონიშნულის საკვანძო სიტყვები",
"Layout": "განლაგება",
"Left": "მარცხენა",
"Letter": "წერილი",
"LightCraft stopped": "LightCraft შეწყდა",
"Lightroom Catalog Import": "Lightroom-ის კატალოგის იმპორტი",
"Lightroom catalogs import into the open library; no separate catalog folder is created.": "Lightroom-ის კატალოგების იმპორტი გახსნილ ბიბლიოთეკაში ხდება; კატალოგის ცალკე საქაღალდე არ იქმნება.",
"Link all margins": "ყველა ველის დაკავშირება",
"Local photos aren't in the library yet: Add to My Photos first, then move them": "ლოკალური ფოტოები ჯერ ბიბლიოთეკაში არ არის: ჯერ დაამატეთ „ჩემს ფოტოებში“, შემდეგ გადაიტანეთ",
"Lock On AF": "Lock On AF",
"Margins": "ველები",
"Margins are a share of the slide's shorter side, so slides look the same on any screen.": "ველები სლაიდის მოკლე გვერდის წილია, ამიტომ სლაიდები ნებისმიერ ეკრანზე ერთნაირად გამოიყურება.",
"Move Photos": "ფოტოების გადატანა",
"Multi": "მრავალწერტილოვანი",
"New template name": "შაბლონის სახელი",
"No lens data embedded in this file.": "ამ ფაილში ობიექტივის მონაცემები ჩაშენებული არ არის.",
"None yet: save the current settings as a template below.": "ჯერ არცერთი: შეინახეთ მიმდინარე პარამეტრები შაბლონად ქვემოთ.",
"Not loaded yet": "ჯერ არ ჩატვირთულა",
"Numbered JPEG files (name-001.jpg…) in a new folder named in the next step.": "დანომრილი JPEG ფაილები (name-001.jpg…) ახალ საქაღალდეში, რომლის სახელს შემდეგ ნაბიჯზე მიუთითებთ.",
"Offset": "წანაცვლება",
"One page per slide (the long side in pixels = points), with the slide duration and fade for the viewer's presentation mode.": "თითო სლაიდზე ერთი გვერდი (გრძელი გვერდი პიქსელებში = პუნქტებში), სლაიდის ხანგრძლივობით და მიქრობით სანახავი პროგრამის პრეზენტაციის რეჟიმისთვის.",
"Open Settings": "პარამეტრების გახსნა",
"Overlays": "ზედდებები",
"Override colour": "საკუთარი ფერი",
"Own duration (off: the slide duration)": "საკუთარი ხანგრძლივობა (გამორთული: სლაიდის ხანგრძლივობა)",
"Pen Pressure": "კალმის დაწოლა",
"PhotoCraft": "PhotoCraft",
"Photos edited in HDR: JPEG with an HDR gain map (looks right everywhere, brighter highlights on HDR displays), AVIF as 10-bit, PNG and JPEG XL as 16-bit Rec. 2020 PQ; TIFF needs 32-bit float": "HDR-ში დამუშავებული ფოტოები: JPEG HDR gain map-ით (ყველგან სწორად ჩანს, HDR ეკრანებზე უფრო კაშკაშა ღია ტონებით), AVIF 10-ბიტიანად, PNG და JPEG XL 16-ბიტიან Rec. 2020 PQ-ად; TIFF-ს 32-ბიტიანი მცოცავი წერტილი სჭირდება",
"Photos you import show up here. Nothing is copied or moved unless you choose to.": "იმპორტირებული ფოტოები აქ გამოჩნდება. არაფერი კოპირდება ან გადაიტანება, თუ თქვენ არ აირჩევთ.",
"Plain Black": "უბრალო შავი",
"Playback": "დაკვრა",
"Previous settings": "წინა პარამეტრები",
"Rating stars": "შეფასების ვარსკვლავები",
"Read Focus Points": "ფოკუსის წერტილების წაკითხვა",
"Reading focus points": "ფოკუსის წერტილები იკითხება",
"Recognition": "ამოცნობა",
"Refresh View": "ხედის განახლება",
"Remove Folder Color Label": "საქაღალდის ფერადი იარლიყის მოშორება",
"Render behind image": "გამოსახულების უკან განთავსება",
"Reset all edits": "ყველა ცვლილების ჩამოყრა",
"Reset layout": "განლაგების ჩამოყრა",
"Return creates this keyword and gives it to the selected photos": "Return ქმნის ამ საკვანძო სიტყვას და მონიშნულ ფოტოებს ანიჭებს",
"Right": "მარჯვენა",
"Run face models on the CPU only": "სახეების მოდელების მხოლოდ CPU-ზე გაშვება",
"Same folder as original photo": "ორიგინალი ფოტოს საქაღალდე",
"Save as Template": "შაბლონად შენახვა",
"Select a photo to preview its slide": "მონიშნეთ ფოტო მისი სლაიდის გადასახედად",
"Select a photo, then turn this on to fill the slide behind every photo with it.": "მონიშნეთ ფოტო, შემდეგ ჩართეთ ეს, რომ მან ყველა ფოტოს უკან სლაიდი შეავსოს.",
"Select all": "ყველაფრის მონიშვნა",
"Select none": "მონიშვნის მოხსნა",
"Separate several keywords with commas. Return gives them to the selected photos.": "რამდენიმე საკვანძო სიტყვა მძიმეებით გამოყავით. Return მათ მონიშნულ ფოტოებს ანიჭებს.",
"Settings → Confirm before moving photos to another folder on disk turns it back on": "პარამეტრები → „დისკზე ფოტოების სხვა საქაღალდეში გადატანამდე დადასტურება“ ამას ხელახლა რთავს",
"Shooting Data": "გადაღების მონაცემები",
"Show Focus Point": "ფოკუსის წერტილის ჩვენება",
"Show every keyword of the selected photos": "მონიშნული ფოტოების ყველა საკვანძო სიტყვის ჩვენება",
"Show fewer": "ნაკლების ჩვენება",
"Show guides": "დამხმარე ხაზების ჩვენება",
"Show in Library": "ბიბლიოთეკაში ჩვენება",
"Show photos": "ფოტოების ჩვენება",
"Show the import review when a camera or card is connected": "კამერის ან ბარათის მიერთებისას იმპორტის განხილვის ჩვენება",
"Shows": "ჩვენება",
"Slide": "სლაიდი",
"Slides use the slideshow's layout, overlays and intro and ending screens, in view order.": "სლაიდები სლაიდშოუს განლაგებას, ზედდებებს და შესავალ და დასკვნით ეკრანებს იყენებს, ხედის რიგით.",
"Slideshow Templates": "სლაიდშოუს შაბლონები",
"Smart albums update automatically: change their rules, or use Photo ▸ Delete Photo": "სმარტ-ალბომები ავტომატურად ახლდება: შეცვალეთ მათი წესები ან გამოიყენეთ ფოტო → ფოტოს წაშლა",
"Solo Mode": "სოლო რეჟიმი",
"Specific folder": "კონკრეტული საქაღალდე",
"Spot": "წერტილოვანი",
"Stroke border": "კონტურის ჩარჩო",
"Templates": "შაბლონები",
"Text overlays": "ტექსტური ზედდებები",
"The ending screen, after the last photo.": "დასკვნითი ეკრანი, ბოლო ფოტოს შემდეგ.",
"The export watermark, drawn on the photo and sized relative to it.": "ექსპორტის ჭვირნიშანი, ფოტოზე დახატული და მის მიმართ ზომაშერჩეული.",
"The intro plays once before the first photo; the ending after the last photo when Repeat is off. The identity plate is the one set under Overlays. Titles fade like slides and random order never moves them.": "შესავალი ერთხელ ეშვება პირველ ფოტომდე; დასასრული — ბოლო ფოტოს შემდეგ, როცა გამეორება გამორთულია. საფირმო ნიშანი ის არის, რაც „ზედდებებში“ არის მითითებული. ტიტრები სლაიდებივით მიქრება და შემთხვევითი რიგი მათ არასოდეს გადაადგილებს.",
"The intro screen, before the first photo.": "შესავალი ეკრანი, პირველ ფოტომდე.",
"The photos in view as slides, with the settings above. Progress shows in the activity stack.": "ხედში მყოფი ფოტოები სლაიდებად, ზემოთ მოცემული პარამეტრებით. პროგრესი აქტივობების დასტაში ჩანს.",
"The selected photo as a slide. Playback fills the screen; the aspect preview only changes this preview.": "მონიშნული ფოტო სლაიდად. დაკვრა ეკრანს ავსებს; თანაფარდობის გადახედვა მხოლოდ ამ გადახედვას ცვლის.",
"Their files and XMP sidecars move on disk. Edit → Undo moves them back.": "მათი ფაილები და XMP თანმხლები ფაილები დისკზე გადაიტანება. რედაქტირება → დაბრუნება მათ უკან აბრუნებს.",
"Their photos in the grid": "მათი ფოტოები ბადეში",
"These photos are only in memory. Open a library on disk and import the catalog again to save them.": "ეს ფოტოები მხოლოდ მეხსიერებაშია. მათ შესანახად გახსენით ბიბლიოთეკა დისკზე და კატალოგის იმპორტი ხელახლა გააკეთეთ.",
"This raw is now developed from its raw data": "ეს RAW ფაილი ახლა მისი RAW მონაცემებიდან მუშავდება",
"This raw variant still can't be decoded": "RAW-ის ეს ვარიანტი ჯერ კიდევ ვერ დეკოდირდება",
"This row covers more than one disk: drop on a folder inside it": "ეს სტრიქონი ერთზე მეტ დისკს მოიცავს: ჩააგდეთ მის შიგნით მყოფ საქაღალდეზე",
"This screen is off: turn it on under Titles to play it.": "ეს ეკრანი გამორთულია: დასაკრავად ჩართეთ „ტიტრებში“.",
"Tidying the thumbnail cache": "ესკიზების ქეში სუფთავდება",
"Title text": "ტიტრის ტექსტი",
"Titles": "ტიტრები",
"Tokens: {file}, {name}, {title}, {caption}, {date}, {exposure}, {iso}, {focal}, {camera}, {lens}, {rating}, {creator}, {copyright}. Other text shows as typed.": "ტეგები: {file}, {name}, {title}, {caption}, {date}, {exposure}, {iso}, {focal}, {camera}, {lens}, {rating}, {creator}, {copyright}. სხვა ტექსტი ისე ჩანს, როგორც აკრიფეთ.",
"Top": "ზედა",
"Tracking": "ტრეკინგი",
"Use export watermark": "ექსპორტის ჭვირნიშნის გამოყენება",
"Use selected photo": "მონიშნული ფოტოს გამოყენება",
"Viewers that don't read the PNG cICP chunk show PQ values as sRGB: flat and washed out. For a picture that looks right everywhere, use JPEG (gain map).": "სანახავი პროგრამები, რომლებიც PNG-ის cICP ბლოკს ვერ კითხულობს, PQ მნიშვნელობებს sRGB-ად აჩვენებს: ბრტყლად და გაცრეცილად. სურათისთვის, რომელიც ყველგან სწორად ჩანს, გამოიყენეთ JPEG (gain map).",
"Whole names": "სრული სახელები",
"Wide": "ფართო",
"Wrote the XMP sidecars that were waiting": "მომლოდინე XMP თანმხლები ფაილები ჩაიწერა",
"Your library is empty": "თქვენი ბიბლიოთეკა ცარიელია",
"Your name or studio": "თქვენი სახელი ან სტუდია",
"Your own templates need a settings folder, which this build doesn't have; the built-in ones work.": "საკუთარ შაბლონებს პარამეტრების საქაღალდე სჭირდება, რომელიც ამ ვერსიას არ აქვს; ჩაშენებული შაბლონები მუშაობს.",
"Your templates": "თქვენი შაბლონები",
"Zone": "ზონა",
"Zoom to Focus Point": "ფოკუსის წერტილამდე გადიდება",
"Zoom to fill frame": "კადრის შესავსებად გადიდება",
"new keyword": "ახალი საკვანძო სიტყვა",
"or drop a .onnx file on the window": "ან ჩააგდეთ .onnx ფაილი ფანჯარაზე",
"or drop photos and folders into this window": "ან ჩააგდეთ ფოტოები და საქაღალდეები ამ ფანჯარაში",
"or drop photos into this window": "ან ჩააგდეთ ფოტოები ამ ფანჯარაში",
"Cycle Flag": "დროშის მონაცვლეობა",
"Increase Flag Status": "დროშის სტატუსის აწევა",
"Decrease Flag Status": "დროშის სტატუსის დაწევა",
"Mask Effect Presets": "ნიღბის ეფექტის პრესეტები",
"Apply Mask Effect": "ნიღბის ეფექტის გამოყენება",
"Save Mask Effect": "ნიღბის ეფექტის შენახვა",
"Update Mask Effect": "ნიღბის ეფექტის განახლება",
"Rename Mask Effect": "ნიღბის ეფექტის სახელის შეცვლა",
"Duplicate Mask Effect": "ნიღბის ეფექტის დუბლირება",
"Delete Mask Effect": "ნიღბის ეფექტის წაშლა",
"Favorite Mask Effect": "ნიღბის ეფექტის რჩეულებში დამატება",
"Move Mask Effect to Group": "ნიღბის ეფექტის ჯგუფში გადატანა",
"Rename Mask Effect Group": "ნიღბის ეფექტების ჯგუფის სახელის შეცვლა",
"Set Effect for New Masks": "ახალი ნიღბების ეფექტის დაყენება",
"Import Mask Effects": "ნიღბის ეფექტების იმპორტი",
"Export Mask Effects": "ნიღბის ეფექტების ექსპორტი",
"Write Waiting XMP Sidecars": "მომლოდინე XMP თანმხლები ფაილების ჩაწერა",
"Slideshow Playback Settings": "სლაიდშოუს დაკვრის პარამეტრები",
"Slideshow Layout Settings": "სლაიდშოუს განლაგების პარამეტრები",
"Slideshow Overlay Settings": "სლაიდშოუს ზედდების პარამეტრები",
"Slideshow Title Settings": "სლაიდშოუს ტიტრების პარამეტრები",
"Apply Slideshow Template": "სლაიდშოუს შაბლონის გამოყენება",
"Save Slideshow Template": "სლაიდშოუს შაბლონის შენახვა",
"Update Slideshow Template": "სლაიდშოუს შაბლონის განახლება",
"Rename Slideshow Template": "სლაიდშოუს შაბლონის სახელის შეცვლა",
"Delete Slideshow Template": "სლაიდშოუს შაბლონის წაშლა",
"Import Slideshow Template": "სლაიდშოუს შაბლონის იმპორტი",
"Slideshow Slide Preview": "სლაიდშოუს სლაიდის გადახედვა",
"Slideshow Export Status": "სლაიდშოუს ექსპორტის მდგომარეობა",
"Print Settings": "ბეჭდვის პარამეტრები",
"Set Print Settings": "ბეჭდვის პარამეტრების დაყენება",
"Reset Print Settings": "ბეჭდვის პარამეტრების ჩამოყრა",
"Add Print Cell": "ბეჭდვის უჯრის დამატება",
"Move Print Cell": "ბეჭდვის უჯრის გადატანა",
"Resize Print Cell": "ბეჭდვის უჯრის ზომის შეცვლა",
"Delete Print Cell": "ბეჭდვის უჯრის წაშლა",
"Arrange Print Cell": "ბეჭდვის უჯრის დალაგება",
"Set Print Cell Photo": "ბეჭდვის უჯრის ფოტოს დაყენება",
"Move Print Cell to Page": "ბეჭდვის უჯრის გვერდზე გადატანა",
"Auto Layout": "ავტომატური განლაგება",
"New Print Page": "ახალი საბეჭდი გვერდი",
"Clear Print Layout": "ბეჭდვის განლაგების გასუფთავება",
"Print to PDF": "PDF-ად დაბეჭდვა",
"Print Templates": "ბეჭდვის შაბლონები",
"Save Print Template": "ბეჭდვის შაბლონის შენახვა",
"Apply Print Template": "ბეჭდვის შაბლონის გამოყენება",
"Delete Print Template": "ბეჭდვის შაბლონის წაშლა",
"Recheck Preview-Only Raws": "მხოლოდ წინასწარი ხედის მქონე RAW ფაილების ხელახლა შემოწმება",
"Face Models on the GPU": "სახეების მოდელები GPU-ზე",
"Rename Person": "ადამიანის სახელის შეცვლა",
"Read Focus Points in the Background": "ფოკუსის წერტილების ფონურად წაკითხვა",
"Increase Grid Thumbnail Size": "ბადის ესკიზების ზომის გაზრდა",
"Decrease Grid Thumbnail Size": "ბადის ესკიზების ზომის შემცირება",
"Cycle Tool Overlay": "ხელსაწყოს ზედდების მონაცვლეობა",
"Choose Layout Image…": "განლაგების გამოსახულების არჩევა…",
"Show Layout Image": "განლაგების გამოსახულების ჩვენება",
"Layout Image Opacity": "განლაგების გამოსახულების გაუმჭვირვალობა",
"Layout Image Matte": "განლაგების გამოსახულების მატი",
"Slideshow Options…": "სლაიდშოუს პარამეტრები…",
"Pause / Resume Slideshow": "სლაიდშოუს შეჩერება / გაგრძელება",
"Next Slide": "შემდეგი სლაიდი",
"Previous Slide": "წინა სლაიდი",
"End Slideshow": "სლაიდშოუს დასრულება",
"Save Current Settings as New Effect Preset…": "მიმდინარე პარამეტრების ახალ ეფექტის პრესეტად შენახვა…",
"Manage Effect Presets…": "ეფექტის პრესეტების მართვა…",
"Export Effect Presets…": "ეფექტის პრესეტების ექსპორტი…",
"Dimensions": "ზომები",
"Width & Height": "სიგანე და სიმაღლე",
"Previous page": "წინა გვერდი",
"Next page": "შემდეგი გვერდი",
"No Matte": "მატის გარეშე",
"Tool Overlay: Auto": "ხელსაწყოს ზედდება: ავტომატური",
"Tool Overlay: Always": "ხელსაწყოს ზედდება: ყოველთვის",
"Tool Overlay: Selected": "ხელსაწყოს ზედდება: მონიშნული",
"Tool Overlay: Never": "ხელსაწყოს ზედდება: არასოდეს",
"Copy Settings…": "პარამეტრების კოპირება…",
"Thumbnail size": "მინიატურების ზომა",
"Import Thumbnail Size": "იმპორტის მინიატურების ზომა",
"Click to type a value, drag to change it": "დააწკაპუნეთ მნიშვნელობის შესაყვანად, გადაათრიეთ მის შესაცვლელად"
"It is not a denoise model LightCraft understands": "ეს არ არის ხმაურის მოცილების მოდელი, რომელიც LightCraft-ს ესმის",
"Resize region": "რეგიონის ზომის შეცვლა",
"Remove region": "რეგიონის მოშორება",
"Filters": "ფილტრები",
"Mask": "ნიღაბი",
"New spot (Return adds it here)": "ახალი ლაქა (Return აქ ამატებს)",
"Combine with the existing person": "არსებულ ადამიანთან გაერთიანება",
"Masks keep their sliders. Export presets first to keep a copy.": "ნიღბები თავიანთ სლაიდერებს ინარჩუნებენ. ასლის შესანარჩუნებლად ჯერ პრესეტების ექსპორტი გააკეთეთ.",
"Click to hide clipping warnings for shadows and highlights.": "დაწკაპეთ ჩრდილებისა და ღია ტონების მოკვეთის გაფრთხილებების დასამალად.",
"Click to show clipping warnings for shadows and highlights.": "დაწკაპეთ ჩრდილებისა და ღია ტონების მოკვეთის გაფრთხილებების საჩვენებლად.",
"Curve channel": "მრუდის არხი",
"Color wheel": "ფერთა წრე",
"Show / hide": "ჩვენება / დამალვა",
"Hide this wheel's effect": "ამ ბორბლის ეფექტის დამალვა",
"The layout image can't be shown": "განლაგების გამოსახულების ჩვენება შეუძლებელია",
"No change": "ცვლილების გარეშე",
"Search effects": "ეფექტების ძიება",
"No effect presets yet": "ეფექტის პრესეტები ჯერ არ არის",
"No effect matches": "შესაბამისი ეფექტი არ არის",
"★ Favorites": "★ რჩეულები",
"Reset Sliders": "სლაიდერების ჩამოყრა",
"Save Current Settings as New Preset…": "მიმდინარე პარამეტრების ახალ პრესეტად შენახვა…",
"Manage Presets…": "პრესეტების მართვა…",
"Apply to All Masks": "ყველა ნიღბზე გამოყენება",
"Also the masks of the same name on the other selected photos": "აგრეთვე იმავე სახელის ნიღბები სხვა მონიშნულ ფოტოებზე",
"Delete…": "წაშლა…",
"Group (optional)": "ჯგუფი (არასავალდებულო)",
"Choose a group": "ჯგუფის არჩევა",
"Highlighted: sliders this mask changes. Sliders left out stay as they are when the preset is applied.": "გამოკვეთილია: სლაიდერები, რომლებსაც ეს ნიღაბი ცვლის. გამოტოვებული სლაიდერები პრესეტის გამოყენებისას უცვლელი რჩება.",
"Include Amount": "სიძლიერის ჩართვა",
"Include brush size, feather and flow": "ფუნჯის ზომის, კიდეების შერბილებისა და ნაკადის ჩართვა",
"Name the preset": "პრესეტის დასახელება",
"Choose at least one setting to include": "აირჩიეთ ჩასართავად ერთი პარამეტრი მაინც",
"Ungrouped": "დაუჯგუფებელი",
"Favorite": "რჩეული",
"Move to Group…": "ჯგუფში გადატანა…",
"New group — Return": "ახალი ჯგუფი — Return",
"Select a mask to apply or update presets.": "პრესეტების გამოსაყენებლად ან გასაახლებლად მონიშნეთ ნიღაბი.",
"Show mask": "ნიღბის ჩვენება",
"Overlay color": "ზედდების ფერი",
"Rename Person…": "ადამიანის სახელის შეცვლა…",
"Tool Overlay": "ხელსაწყოს ზედდება",
"When pins show on the photo (Shift+H cycles)": "როდის ჩანს მარკერები ფოტოზე (Shift+H ცვლის)",
"Slide duration": "სლაიდის ხანგრძლივობა",
"Fade duration": "მიქრობის ხანგრძლივობა",
"A slide stays up for its duration, its fade in included. A fade of 0 cuts.": "სლაიდი ეკრანზე რჩება თავისი ხანგრძლივობის განმავლობაში, გამოჩენის მიქრობის ჩათვლით. 0-ის ტოლი მიქრობა პირდაპირ ცვლის სლაიდს.",
"Fade": "მიქრობა",
"Renders the next slides while the current one is up, so fades never wait. Off: each slide renders when it is due (less memory and work).": "შემდეგ სლაიდებს არენდერებს, სანამ მიმდინარე ჩანს, ასე რომ მიქრობა არასოდეს აყოვნებს. გამორთული: ყოველი სლაიდი თავის დროზე რენდერდება (ნაკლები მეხსიერება და სამუშაო).",
"Slideshow in the View menu plays the photos in view from the selected one. These settings are saved with the library.": "„ხედი“ მენიუს „სლაიდშოუ“ ხილულ ფოტოებს მონიშნულიდან უკრავს. ეს პარამეტრები ბიბლიოთეკასთან ერთად ინახება.",
"Title bar": "სათაურის ზოლი",
"Unnamed face": "უსახელო სახე",
"Template name": "შაბლონის სახელი",
"One photo fills each page inside the margins.": "თითო ფოტო ავსებს თითოეულ გვერდს ველებს შიგნით.",
"Add a cell": "უჯრის დამატება",
"Managed by Printer (sRGB)": "პრინტერის მართვით (sRGB)",
"Managed by Printer (Adobe RGB)": "პრინტერის მართვით (Adobe RGB)",
"current edits": "მიმდინარე ცვლილებები",
"This page setup is not valid": "გვერდის ეს პარამეტრები არასწორია",
"Page": "გვერდი",
"cells": "უჯრა",
"cells overlap": "უჯრები ერთმანეთს ფარავს",
"Delete Cell": "უჯრის წაშლა",
"Click a cell to move, resize or arrange it": "დაწკაპეთ უჯრაზე მის გადასაადგილებლად, ზომის შესაცვლელად ან დასალაგებლად",
"Loupe Overlay": "ლუპის ზედდება",
"2026-10-21": "2026-10-21",
"Sharper resampling in HDR and panorama merges": "უფრო მკვეთრი ხელახალი დისკრეტიზაცია HDR-ისა და პანორამის გაერთიანებებში",
"Merged photos (HDR and panorama) are resampled with a sharper filter (Lanczos-3 instead of bilinear). Moving a": "გაერთიანებული ფოტოები (HDR და პანორამა) ხელახლა დისკრეტიზდება უფრო მკვეთრი ფილტრით (Lanczos-3 ბიწრფივის ნაცვლად). ფოტოს",
"photo by half a pixel used to lose a third of its finest detail; now it keeps most of it, without halos around": "ნახევარი პიქსელით გადაადგილებისას ადრე იკარგებოდა მისი ყველაზე წვრილი დეტალების მესამედი; ახლა მათი უმეტესობა რჩება, შარავანდის გარეშე",
"hard edges such as clipped highlights.": "მკვეთრი კიდეების გარშემო, როგორიცაა მოკვეთილი ღია ტონები.",
"Scrolling past editing sliders": "გადახვევა რედაქტირების სლაიდერებზე",
"Leaving a selected slider disarms its vertical mouse-wheel adjustment (issue #1355), even when the pointer leaves": "მონიშნული სლაიდერიდან გასვლა თიშავს მის რეგულირებას მაუსის ვერტიკალური ბორბლით (ხარვეზი #1355), მაშინაც კი, როცა მაჩვენებელი გადის",
"and comes back between two screen updates. Scrolling back over it now scrolls the panel instead of unexpectedly": "და ბრუნდება ეკრანის ორ განახლებას შორის. მასზე უკან გადახვევისას ახლა პანელი გადაიხვევა, ნაცვლად იმისა, რომ მოულოდნელად",
"changing the photo. Click or drag the slider again to adjust it with the vertical wheel; keyboard arrow": "ფოტო შეიცვალოს. სლაიდერის ვერტიკალური ბორბლით სარეგულირებლად ხელახლა დაწკაპეთ ან გადაათრიეთ; კლავიატურის ისრებით",
"adjustments and an ongoing drag still work. A slider reached with Tab takes the arrow keys but not the wheel:": "რეგულირება და მიმდინარე გადათრევა ისევ მუშაობს. Tab-ით მიღწეული სლაიდერი იღებს ისრიან კლავიშებს, ბორბალს კი არა:",
"click it to scroll-adjust it. Sideways scrolling still adjusts the slider under the pointer without selecting it": "გადახვევით სარეგულირებლად დაწკაპეთ. გვერდითი გადახვევა ისევ არეგულირებს მაჩვენებლის ქვეშ მყოფ სლაიდერს, მისი",
"first.": "წინასწარ მონიშვნის გარეშე.",
"A pinch no longer re-renders the photo at every zoom step": "თითებით მასშტაბირება ფოტოს აღარ არენდერებს მასშტაბის ყოველ ნაბიჯზე",
"Pinching the loupe now keeps the size the fit view is rendered at until the gesture is quiet, as it already did for": "ლუპაზე თითებით მასშტაბირებისას ახლა ეკრანში ჩატეული ხედის რენდერის ზომა უცვლელი რჩება ჟესტის დასრულებამდე, როგორც უკვე ხდებოდა",
"the render sizes and windows. Before, each frame of a pinch asked for a new full-frame render at a new size.": "რენდერის ზომებისა და ფანჯრებისთვის. ადრე ჟესტის ყოველი კადრი ახალ სრულკადრიან რენდერს ითხოვდა ახალ ზომაზე.",
"Fujifilm lens corrections that match the camera": "Fujifilm-ის ობიექტივის კორექციები, რომლებიც კამერას ემთხვევა",
"X-T4 raws now read the lens's own distortion and vignetting tables the way the camera does. Many photos from zoom": "X-T4-ის RAW ფაილები ახლა ობიექტივის საკუთარ დეფორმაციისა და ვინიეტირების ცხრილებს ისე კითხულობს, როგორც კამერა. ზუმ-ობიექტივებით",
"lenses got no distortion correction at all (more than half of those checked from the XF16-55 and XF70-300), and": "გადაღებული ბევრი ფოტო დეფორმაციის კორექციას საერთოდ არ იღებდა (XF16-55-ითა და XF70-300-ით შემოწმებულთა ნახევარზე მეტი), ხოლო",
"corners came out up to 6.5 % brighter than in the camera's JPEG. The corrected photo now lines up with the camera's": "კუთხეები კამერის JPEG-თან შედარებით 6.5 %-მდე უფრო ნათელი გამოდიოდა. კორექტირებული ფოტო ახლა ემთხვევა კამერის",
"framing. Other recent Fujifilm bodies whose tables have nine knots are read the same way, but only the X-T4 was": "კადრირებას. Fujifilm-ის სხვა ახალი კორპუსები, რომელთა ცხრილებსაც ცხრა კვანძი აქვს, იმავე გზით იკითხება, მაგრამ მხოლოდ X-T4",
"measured. Thumbnails are redrawn when the library next shows them.": "გაიზომა. ესკიზები ხელახლა დაიხატება, როცა ბიბლიოთეკა მათ შემდეგ ჯერზე აჩვენებს.",
"Reference view reliability": "ეტალონური ხედის საიმედოობა",
"Escape now leaves Reference for Detail without changing the active photo or its edits; the next": "Escape ახლა ეტალონიდან დეტალურ ხედზე გადადის აქტიური ფოტოსა და მისი ცვლილებების შეუცვლელად; შემდეგი",
"Escape returns to the grid. A dialog, tool or Lights Out still handles Escape first.": "Escape ბადეს უბრუნდება. დიალოგი, ხელსაწყო ან სინათლის ჩაქრობა Escape-ს ისევ პირველი ამუშავებს.",
"Opening or creating a different library clears the pinned reference. Photo IDs belong to one": "სხვა ბიბლიოთეკის გახსნა ან შექმნა მიმაგრებულ ეტალონს ასუფთავებს. ფოტოების ID-ები ერთ",
"catalog; a pin no longer silently becomes another library's photo with the same numeric ID.": "კატალოგს ეკუთვნის; მიმაგრება აღარ იქცევა შეუმჩნევლად სხვა ბიბლიოთეკის ფოტოდ იმავე რიცხვითი ID-ით.",
"Missing or Recently Deleted photos cannot be pinned. Deleting the pinned reference stops drawing": "დაკარგული ან ახლახან წაშლილი ფოტოების მიმაგრება შეუძლებელია. მიმაგრებული ეტალონის წაშლის შემდეგ ის",
"it; re-entering Reference chooses a live photo, and restoring the deleted photo makes it pinnable again.": "აღარ იხატება; ეტალონში ხელახლა შესვლა ხელმისაწვდომ ფოტოს ირჩევს, წაშლილი ფოტოს აღდგენა კი მას ისევ მიმაგრებადს ხდის.",
"In Recently Deleted, Set as Reference Photo is greyed out, and a refusal says to restore the photo.": "ახლახან წაშლილში „ეტალონურ ფოტოდ დაყენება“ მიუწვდომელია, უარის შეტყობინება კი ფოტოს აღდგენას გირჩევთ.",
"Switching library from Reference view goes to the grid instead of an empty Reference canvas. A refused": "ეტალონური ხედიდან ბიბლიოთეკის გადართვა ბადეზე გადადის, ნაცვლად ეტალონის ცარიელი ტილოსი. უარყოფილი",
"or failed switch keeps both the reference and the Compare pair.": "ან ჩაშლილი გადართვა ინარჩუნებს როგორც ეტალონს, ისე შედარების წყვილს.",
"`photo.setReference` refuses an `id` that is not a photo id (a string, a negative or fractional": "`photo.setReference` უარყოფს `id`-ს, რომელიც ფოტოს id არ არის (სტრიქონი, უარყოფითი ან წილადი",
"number) instead of pinning the active photo; only an absent or null `id` means the active photo.": "რიცხვი), ნაცვლად აქტიური ფოტოს მიმაგრებისა; აქტიურ ფოტოს მხოლოდ გამოტოვებული ან null `id` ნიშნავს.",
"2026-10-20": "2026-10-20",
"Smart albums check File Path rules faster": "სმარტ-ალბომები ფაილის მისამართის წესებს უფრო სწრაფად ამოწმებს",
"A smart album rule on File Path (contains, doesn't contain, is, isn't, starts with, ends with, is empty, isn't": "სმარტ-ალბომის წესი ფაილის მისამართზე (შეიცავს, არ შეიცავს, არის, არ არის, იწყება, მთავრდება, ცარიელია, არ არის",
"empty) no longer builds new text for every photo. On a synthetic library of 312,000 photos, a File Path \"contains\"": "ცარიელი) აღარ ქმნის ახალ ტექსტს ყოველი ფოტოსთვის. 312,000 ფოტოს სინთეზურ ბიბლიოთეკაში ფაილის მისამართის „შეიცავს“",
"or \"doesn't contain\" rule took about 17 ms per pass instead of about 62 ms, around 3.5 times faster, with the same": "ან „არ შეიცავს“ წესს ერთ გავლაზე დაახლოებით 17 ms სჭირდებოდა დაახლოებით 62 ms-ის ნაცვლად, დაახლოებით 3.5-ჯერ უფრო სწრაფად, იმავე",
"photos matched; about 6 ms of that is only reading the paths. Paths and rule text with letters beyond A–Z are": "შესაბამისი ფოტოებით; აქედან დაახლოებით 6 ms მხოლოდ მისამართების წაკითხვაა. მისამართები და წესის ტექსტი A–Z-ის მიღმა ასოებით",
"compared as before.": "ისევე შედარდება, როგორც ადრე.",
"2026-10-19": "2026-10-19",
"AI Denoise on DirectX 12 with NVIDIA GTX 10-series cards": "AI ხმაურის მოცილება DirectX 12-ზე NVIDIA GTX 10-სერიის ბარათებით",
"AI Denoise on the GPU under DirectX 12 (the Windows default) gives the same result as on the CPU again on an NVIDIA": "AI ხმაურის მოცილება GPU-ზე DirectX 12-ით (Windows-ის ნაგულისხმევი) NVIDIA GeForce GTX 1070-ზე ისევ იმავე შედეგს იძლევა, რასაც",
"GeForce GTX 1070. The driver ran the denoise network's output stores wrong, so every second pixel's colour": "CPU-ზე. დრაივერი ხმაურის მოცილების ქსელის გამოსავალ ჩაწერებს არასწორად ასრულებდა, ამიტომ ყოველი მეორე პიქსელის ფერის",
"channels came out shifted and the denoised photo was wrong without any error. Vulkan was not affected.": "არხები წანაცვლებული გამოდიოდა და ხმაურმოცილებული ფოტო არასწორი იყო ყოველგვარი შეცდომის გარეშე. Vulkan ამას არ შეხებია.",
"The Before label stays in view when zoomed in": "„მანამდე“-ს წარწერა გადიდებისას ხედში რჩება",
"Zoomed in, the \"Before\" label (\\ key or the Before view) now sits at the canvas' corner instead of leaving the": "გადიდებისას „მანამდე“-ს წარწერა (\\ კლავიში ან „მანამდე“-ს ხედი) ახლა ტილოს კუთხეში დგას, ნაცვლად იმისა, რომ",
"screen with the photo's corner (issue #2267).": "ფოტოს კუთხესთან ერთად ეკრანიდან გავიდეს (ხარვეზი #2267).",
"Synchronize Folder on a folder that is up to date": "საქაღალდის სინქრონიზაცია განახლებულ საქაღალდეზე",
"When the scan finds nothing to import, relink, remove or read, the Synchronize Folder dialog says the library is up": "როცა სკანირება იმპორტის, ხელახლა დაკავშირების, მოშორების ან წასაკითხს ვერაფერს პოულობს, საქაღალდის სინქრონიზაციის დიალოგი ამბობს, რომ ბიბლიოთეკა",
"to date with the folder and has one Close button. It used to show four greyed choices, two of them still ticked,": "საქაღალდესთან სინქრონშია, და მას ერთი „დახურვა“ ღილაკი აქვს. ადრე ის ოთხ მიუწვდომელ არჩევანს აჩვენებდა, აქედან ორს ისევ მონიშნულს,",
"and a Synchronize button that started a job with nothing to do. Files it skipped (already in the library elsewhere,": "და „სინქრონიზაციის“ ღილაკს, რომელიც უსაქმო დავალებას იწყებდა. ფაილები, რომლებიც გამოტოვა (უკვე ბიბლიოთეკაში სხვაგან,",
"or unreadable) are still listed.": "ან წაუკითხავი), ისევ ჩამოთვლილია.",
"Hidden Local locations come back one at a time": "დამალული ლოკალური მდებარეობები სათითაოდ ბრუნდება",
"With several locations removed from Local, \"Show N hidden locations\" now lists them, so each comes back on its own": "როცა ლოკალურიდან რამდენიმე მდებარეობაა მოშორებული, „დამალული მდებარეობების ჩვენება: N“ ახლა მათ ჩამოთვლის, ასე რომ თითოეული ცალკე ბრუნდება",
"(Restore All is there too). The row used to bring every hidden location back at once (issue #2114).": "(„ყველას აღდგენაც“ იქვეა). ადრე ეს სტრიქონი ყველა დამალულ მდებარეობას ერთბაშად აბრუნებდა (ხარვეზი #2114).",
"2026-10-18": "2026-10-18",
"Thumbnails of Lightroom HDR and panorama merges in a second": "Lightroom-ის HDR-ისა და პანორამის გაერთიანებების ესკიზები წამში",
"Grid and filmstrip thumbnails of DNGs that Lightroom merged (HDR, Panorama, HDR Panorama) now develop from the": "Lightroom-ის მიერ გაერთიანებული DNG-ების (HDR, Panorama, HDR Panorama) ბადისა და კადრების ზოლის ესკიზები ახლა მუშავდება",
"small copies of the raw image Lightroom keeps inside the file (256 to 2048 px), not from the whole merge. A 23836 ×": "RAW გამოსახულების პატარა ასლებიდან, რომლებსაც Lightroom ფაილის შიგნით ინახავს (256-დან 2048 px-მდე), და არა მთელი გაერთიანებიდან. 23836 ×",
"7078 drone panorama's 512 px thumbnail took 38 s and now takes about a second, with the same look; your edits still": "7078 დრონის პანორამის 512 px ესკიზს 38 s სჭირდებოდა, ახლა კი დაახლოებით წამი, იგივე იერით; თქვენი ცვლილებები ისევ",
"apply. Loupe previews larger than the biggest copy, 1:1 views and exports still read the full image.": "გამოიყენება. ლუპის წინასწარი ხედები, რომლებიც უდიდეს ასლზე დიდია, 1:1 ხედები და ექსპორტები ისევ სრულ გამოსახულებას კითხულობს.",
"Fewer false \"not imported\" warnings for Lightroom raws": "ნაკლები ცრუ გაფრთხილება „არ არის იმპორტირებული“ Lightroom-ის RAW ფაილებისთვის",
"Importing raws with Lightroom XMP sidecars no longer lists settings Lightroom writes only for itself as adjustments": "Lightroom-ის XMP თანმხლები ფაილების მქონე RAW-ების იმპორტი აღარ ჩამოთვლის პარამეტრებს, რომლებსაც Lightroom მხოლოდ თავისთვის წერს, როგორც",
"that weren't imported: `CompatibleVersion`, the camera and lens profile checksums, the lens profile's name, file and": "იმპორტირებულ კორექციებს, რომლებიც ვერ შემოვიდა: `CompatibleVersion`, კამერისა და ობიექტივის პროფილების საკონტროლო ჯამები, ობიექტივის პროფილის სახელი, ფაილი და",
"setup, the crop's \"constrain to image\" option, and the lens profile's strength when it is at its default of 100 %.": "გამართვა, ჩამოჭრის „გამოსახულებით შეზღუდვის“ ვარიანტი და ობიექტივის პროფილის სიძლიერე, როცა ის ნაგულისხმევ 100 %-ზეა.",
"A raw sidecar used to name all of them for every photo. Settings LightCraft really doesn't apply, such as `Look`,": "RAW-ის თანმხლები ფაილი ადრე ყველა მათგანს ასახელებდა ყოველი ფოტოსთვის. პარამეტრები, რომლებსაც LightCraft მართლაც არ იყენებს, მაგალითად `Look`,",
"are still reported.": "ისევ ჩამოთვლილია.",
"Fill Location from GPS: no more neighbouring town in City": "მდებარეობის შევსება GPS-ით: ქალაქის ველში აღარ ხვდება მეზობელი ქალაქი",
"The offline place names list towns of 15,000 people or more, so a photo taken in a smaller one got the nearest larger": "ადგილების ოფლაინ სახელების სია შეიცავს 15,000 ან მეტი მცხოვრების მქონე ქალაქებს, ამიტომ პატარა დასახლებაში გადაღებული ფოტო უახლოეს დიდ",
"town in City, sometimes another municipality (issue #2242). The Fill Location tooltip and the command help now say so,": "ქალაქს იღებდა ქალაქის ველში, ზოგჯერ სხვა მუნიციპალიტეტს (ხარვეზი #2242). მდებარეობის შევსების მინიშნება და ბრძანების დახმარება ახლა ამას ამბობს,",
"and `metadata.reverseGeocode` takes `maxDistance` (metres): past it, City stays empty (State and Country still fill)": "და `metadata.reverseGeocode` იღებს `maxDistance`-ს (მეტრებში): მის მიღმა ქალაქი ცარიელი რჩება (რეგიონი და ქვეყანა ისევ ივსება)",
"and the reply names the town it found as `nearestCity`.": "და პასუხი ნაპოვნ ქალაქს ასახელებს როგორც `nearestCity`.",
"A preset that couldn't be saved is no longer lost silently": "პრესეტი, რომლის შენახვაც ვერ მოხერხდა, აღარ იკარგება შეუმჩნევლად",
"When presets.json can't be written (a full disk, or the browser's storage quota), the new or changed preset now": "როცა presets.json-ის ჩაწერა შეუძლებელია (სავსე დისკი ან ბრაუზერის მეხსიერების კვოტა), ახალი ან შეცვლილი პრესეტი ახლა",
"counts as unsaved, like other changes: the top bar warns, saving is retried, and quitting asks first (issue #2266).": "შეუნახავად ითვლება, როგორც სხვა ცვლილებები: ზედა ზოლი გაფრთხილებას აჩვენებს, შენახვა მეორდება, გასვლისას კი ჯერ შეგეკითხებათ (ხარვეზი #2266).",
"Before, the failure was only logged, and the preset could be lost without any warning.": "ადრე შეცდომა მხოლოდ ჟურნალში იწერებოდა და პრესეტი შეიძლებოდა დაკარგულიყო ყოველგვარი გაფრთხილების გარეშე.",
"Portrait crop ratios stay portrait": "პორტრეტული ჩამოჭრის თანაფარდობები პორტრეტულად რჩება",
"A crop ratio no longer flips to the photo's orientation (issue #2253): after X turns the crop portrait, picking": "ჩამოჭრის თანაფარდობა აღარ გადაბრუნდება ფოტოს ორიენტაციაზე (ხარვეზი #2253): მას შემდეგ, რაც X ჩამოჭრას პორტრეტულად აქცევს,",
"another ratio (4 × 5, 2 × 3…) keeps it portrait, as in Lightroom, and a Custom ratio taller than wide gives a": "სხვა თანაფარდობის არჩევა (4 × 5, 2 × 3…) მას პორტრეტულად ტოვებს, როგორც Lightroom-ში, ხოლო მორგებული თანაფარდობა, რომელიც სიგანეზე მაღალია,",
"portrait crop.": "პორტრეტულ ჩამოჭრას იძლევა.",
"2026-10-16": "2026-10-16",
"Synchronize Folder shows that it is listing the folder": "საქაღალდის სინქრონიზაცია აჩვენებს, რომ საქაღალდის ჩამონათვალს ადგენს",
"A folder with tens of thousands of photos, above all on a network share, can take minutes to list before": "ათიათასობით ფოტოს მქონე საქაღალდის ჩამონათვალის შედგენას, განსაკუთრებით ქსელურ საქაღალდეზე, შეიძლება წუთები დასჭირდეს, სანამ",
"Synchronize Folder checks a single photo. Its row in the activity stack used to sit at \"0 of 64085\" with an empty": "საქაღალდის სინქრონიზაცია ერთ ფოტოსაც შეამოწმებს. მისი სტრიქონი აქტივობების დასტაში მთელი ეს დრო „0 of 64085“-ზე იდგა ცარიელი",
"bar all that time, as if it had stopped. It now says how many folders and files it has listed so far, with a bar": "ზოლით, თითქოს გაჩერებულიყო. ახლა ის ამბობს, რამდენი საქაღალდე და ფაილი ჩამოთვალა აქამდე, ზოლით,",
"that moves on its own, and then counts the photos it checks. The dialog says the same.": "რომელიც თავისით მოძრაობს, შემდეგ კი ითვლის ფოტოებს, რომლებსაც ამოწმებს. დიალოგიც იმავეს ამბობს.",
"✕ on the row stops the listing too, not only the checks after it.": "სტრიქონზე × ჩამონათვალის შედგენასაც აჩერებს და არა მხოლოდ მის შემდგომ შემოწმებებს.",
"The photo grid keeps up with imports into a large library": "ფოტოების ბადე დიდ ბიბლიოთეკაში იმპორტს ფეხს უწყობს",
"While photos are imported into a large library, the grid takes in each batch as it arrives instead of reading": "დიდ ბიბლიოთეკაში ფოტოების იმპორტისას ბადე ყოველ პარტიას მოსვლისთანავე იღებს, ნაცვლად იმისა, რომ ხედის ყველა ფოტო",
"every photo of the view again: at about 180,000 photos a batch cost the window a tenth of a second, over and over": "ხელახლა წაიკითხოს: დაახლოებით 180,000 ფოტოზე ყოველი პარტია ფანჯარას წამის მეათედი უჯდებოდა, ისევ და ისევ,",
"for as long as the import ran. Changing one photo's capture time or crop is quicker too.": "სანამ იმპორტი მიმდინარეობდა. ერთი ფოტოს გადაღების დროის ან ჩამოჭრის შეცვლაც უფრო სწრაფია.",
"2026-10-15": "2026-10-15",
"Photo Merge takes each photo once": "ფოტოების გაერთიანება ყოველ ფოტოს ერთხელ იღებს",
"A merge that names the same photo more than once (through `ids` on the control channel, MCP or the CLI) now merges": "გაერთიანება, რომელიც ერთსა და იმავე ფოტოს ერთზე მეტჯერ ასახელებს (`ids`-ით მართვის არხზე, MCP-ში ან CLI-ში), ახლა მას",
"it once (issue #1947). Naming one photo three times no longer \"merges\" it with itself, and a long repeated list no": "ერთხელ აერთიანებს (ხარვეზი #1947). ერთი ფოტოს სამჯერ დასახელება მას აღარ „აერთიანებს“ საკუთარ თავთან, ხოლო გრძელი განმეორებითი სია",
"longer decodes the photo again for every entry.": "აღარ დეკოდირებს ფოტოს ხელახლა ყოველი ჩანაწერისთვის.",
"Constrain Crop tightens the crop you see": "ჩამოჭრის შეზღუდვა თქვენთვის ხილულ ჩამოჭრას ავიწროებს",
"Geometry ▸ Constrain Crop now changes the crop itself, as in Lightroom (issue #1927). Ticking it, or moving a": "გეომეტრია → ჩამოჭრის შეზღუდვა ახლა თავად ჩამოჭრას ცვლის, როგორც Lightroom-ში (ხარვეზი #1927). მისი მონიშვნა, ან, მონიშნულ მდგომარეობაში,",
"Geometry slider, Upright or a lens correction while it is ticked, shrinks the crop about its centre until the blank": "გეომეტრიის სლაიდერის, Upright-ის ან ობიექტივის კორექციის შეცვლა ჩამოჭრას ცენტრის გარშემო ამცირებს, სანამ არ გაქრება ცარიელი",
"corners left by the correction are gone, and the Crop tool shows the tighter crop. Before, it only applied when the": "კუთხეები, რომლებსაც კორექცია ტოვებს, და ჩამოჭრის ხელსაწყო ვიწრო ჩამოჭრას აჩვენებს. ადრე ის მხოლოდ მაშინ მოქმედებდა, როცა",
"photo was shown outside the Crop tool, so in the Crop panel, where the checkbox is, nothing seemed to change. A crop": "ფოტო ჩამოჭრის ხელსაწყოს გარეთ ჩანდა, ამიტომ ჩამოჭრის პანელში, სადაც მოსანიშნი ველია, თითქოს არაფერი იცვლებოდა. ჩამოჭრა,",
"you draw by hand is kept as drawn, and unticking keeps the tighter crop.": "რომელსაც ხელით ხაზავთ, ისე რჩება, როგორც დახაზეთ, ხოლო მონიშვნის მოხსნა ვიწრო ჩამოჭრას ინარჩუნებს.",
"Web: no backup that misses unsaved changes": "ვები: სარეზერვო ასლი, რომელსაც შეუნახავი ცვლილებები აკლია, აღარ იქმნება",
"In the browser version, File ▸ Back Up Library… no longer reports success while a save is failing (storage full or": "ბრაუზერის ვერსიაში ფაილი → ბიბლიოთეკის სარეზერვო ასლი… აღარ იუწყება წარმატებას, როცა შენახვა ვერ ხერხდება (მეხსიერება სავსეა ან",
"cleared): the backup copies the stored library, so it left out the changes that couldn't be saved (issue #1508). It": "გასუფთავებულია): სარეზერვო ასლი შენახულ ბიბლიოთეკას აკოპირებს, ამიტომ მასში არ ხვდებოდა ცვლილებები, რომელთა შენახვაც ვერ მოხერხდა (ხარვეზი #1508). ის",
"now refuses to start and says how many changes are unsaved and why. LightCraft retries the save with every change;": "ახლა არ იწყება და ამბობს, რამდენი ცვლილებაა შეუნახავი და რატომ. LightCraft შენახვას ყოველ ცვლილებაზე ხელახლა ცდის;",
"back up once nothing is left unsaved.": "სარეზერვო ასლი შექმენით, როცა შეუნახავი აღარაფერი დარჩება.",
"Web: an unreadable library is not opened": "ვები: წაუკითხავი ბიბლიოთეკა აღარ იხსნება",
"In the browser version, a library file that exists but can't be read at start-up is no longer taken for a missing": "ბრაუზერის ვერსიაში ბიბლიოთეკის ფაილი, რომელიც არსებობს, მაგრამ გაშვებისას ვერ იკითხება, აღარ ითვლება დაკარგულად",
"one (issue #1507). LightCraft used to open the library without it, showing an incomplete catalog that the next save": "(ხარვეზი #1507). LightCraft ადრე ბიბლიოთეკას მის გარეშე ხსნიდა და არასრულ კატალოგს აჩვენებდა, რომელსაც შემდეგი შენახვა",
"would write over the stored copy. It now leaves the library unopened, saves nothing and says which file couldn't be": "შენახულ ასლს გადააწერდა. ახლა ის ბიბლიოთეკას გაუხსნელს ტოვებს, არაფერს ინახავს და ასახელებს ფაილს, რომლის წაკითხვაც ვერ",
"read; reload the page to try again.": "მოხერხდა; ხელახლა საცდელად განაახლეთ გვერდი.",
"2026-10-14": "2026-10-14",
"Model downloads time out on a name that doesn't resolve": "მოდელების ჩამოტვირთვა წყდება, თუ სერვერის სახელი ვერ იხსნება",
"Model downloads (AI denoise, faces, SAM) give up on a server name that doesn't resolve within the connect timeout,": "მოდელების ჩამოტვირთვა (AI ხმაურის მოცილება, სახეები, SAM) წყდება, თუ სერვერის სახელი დაკავშირების ლოდინის დროში ვერ იხსნება,",
"and Cancel stops a download that is still looking the name up (issue #1532). The lookup used to block with no time": "და „გაუქმება“ აჩერებს ჩამოტვირთვას, რომელიც ჯერ კიდევ სახელს ეძებს (ხარვეზი #1532). ძიება ადრე უვადოდ ბლოკავდა",
"limit, and each of a server's addresses then got the whole connect timeout of its own.": "და შემდეგ სერვერის თითოეული მისამართი დაკავშირების ლოდინის მთელ დროს ცალკე იღებდა.",
"Sony A7CR distortion correction": "Sony A7CR-ის დეფორმაციის კორექცია",
"Full-frame 3:2 Bayer A7CR raws with distortion Auto or forced Auto now use their embedded distortion table. The corrected render is closer to the camera JPEG geometry. Off files keep their original geometry. APS-C, aspect crops and lossless M/S remain excluded.": "სრულკადრიანი 3:2 Bayer A7CR RAW ფაილები, რომელთა დეფორმაცია ავტომატურზე ან იძულებით ავტომატურზეა, ახლა თავიანთ ჩაშენებულ დეფორმაციის ცხრილს იყენებს. კორექტირებული რენდერი კამერის JPEG-ის გეომეტრიას უფრო უახლოვდება. გამორთული ფაილები თავდაპირველ გეომეტრიას ინარჩუნებს. APS-C, თანაფარდობით ჩამოჭრილი და უდანაკარგო M/S ფაილები ისევ გამორიცხულია.",
"The warp also supplies the geometry needed by the lens-aligned camera-look fit in PR #1586. The pairing code is a separate change. Details and numeric validation are in `docs/sony-lens-corrections.md`.": "დეფორმაციის გასწორება ასევე იძლევა გეომეტრიას, რომელიც სჭირდება ობიექტივთან გასწორებულ კამერის იერის მორგებას PR #1586-ში. დაწყვილების კოდი ცალკე ცვლილებაა. დეტალები და რიცხვითი ვალიდაცია `docs/sony-lens-corrections.md`-შია.",
"Lightroom radial masks on the right side": "Lightroom-ის რადიალური ნიღბები სწორ მხარეს",
"Radial masks brought over from Lightroom Classic (catalog import, XMP sidecars, edits inside DNGs and presets) now": "Lightroom Classic-იდან გადმოტანილი რადიალური ნიღბები (კატალოგის იმპორტი, XMP თანმხლები ფაილები, ცვლილებები DNG-ებსა და პრესეტებში) ახლა",
"apply their effect inside the circle, as Lightroom does, instead of outside it (issue #1815). A mask inverted in": "ეფექტს წრის შიგნით იყენებს, როგორც Lightroom, და არა მის გარეთ (ხარვეზი #1815). Lightroom-ში ინვერტირებული ნიღაბი",
"Lightroom stays inverted, and older Radial Filters keep their Effect Outside / Invert Mask setting. Photos imported": "ინვერტირებული რჩება, ძველი რადიალური ფილტრები კი ინარჩუნებს Effect Outside / „ნიღბის ინვერსია“ პარამეტრს. ფოტოები, რომლებიც დაიმპორტდა",
"before this keep the masks they got: Photo ▸ Read Metadata from File reads a sidecar's again.": "ამაზე ადრე, მიღებულ ნიღბებს ინარჩუნებს: ფოტო → მეტამონაცემების წაკითხვა ფაილიდან თანმხლებ ფაილს ხელახლა წაიკითხავს.",
"Delete in an album removes from the album only": "ალბომში წაშლა მხოლოდ ალბომიდან ამოშლის",
"In an album, the Delete key now takes the selected photos out of the album, as in Lightroom. It used to move them": "ალბომში Delete კლავიში ახლა მონიშნულ ფოტოებს ალბომიდან ამოიღებს, როგორც Lightroom-ში. ადრე ის მათ",
"to Recently Deleted, so they also left their folder's view (issue #1805). They stay in the library and in their": "ახლახან წაშლილში გადაიტანდა, ამიტომ ისინი საქაღალდის ხედიდანაც ქრებოდა (ხარვეზი #1805). ისინი რჩება ბიბლიოთეკასა და თავიანთ",
"folder; Edit ▸ Undo puts them back in the album. Photo ▸ Remove from Album does the same and now shows the key.": "საქაღალდეში; რედაქტირება → დაბრუნება მათ ალბომში აბრუნებს. ფოტო → ალბომიდან ამოშლა იმავეს აკეთებს და ახლა კლავიშსაც აჩვენებს.",
"To delete photos from the library from an album, use Photo ▸ Delete Photo or right-click ▸ Delete Photo. In a smart": "ალბომიდან ფოტოების ბიბლიოთეკიდან წასაშლელად გამოიყენეთ ფოტო → ფოტოს წაშლა ან მარჯვენა დაწკაპება → ფოტოს წაშლა. სმარტ-",
"album, Delete changes nothing: its rules decide what it shows.": "ალბომში Delete არაფერს ცვლის: რას აჩვენებს, მისი წესები წყვეტს.",
"Local folders select a photo": "ლოკალური საქაღალდეები ფოტოს ირჩევს",
"Showing a Local folder now makes its first photo the active one, as albums and the other sources do (issue": "ლოკალური საქაღალდის ჩვენება ახლა მის პირველ ფოტოს აქტიურს ხდის, როგორც ალბომები და სხვა წყაროები (ხარვეზი",
"#1447), or keeps the photo you had when the folder holds it. Before, the photo from the previous view stayed active:": "#1447), ან ტოვებს თქვენს ფოტოს, თუ ის საქაღალდეშია. ადრე წინა ხედის ფოტო აქტიური რჩებოდა:",
"Photo Grid marked nothing, and Detail, the histogram and the photo info showed a photo that isn't in the folder.": "ფოტოების ბადე არაფერს მონიშნავდა, დეტალური ხედი, ჰისტოგრამა და ფოტოს ინფორმაცია კი აჩვენებდა ფოტოს, რომელიც საქაღალდეში არ არის.",
"Nikon Z 6II, Z 8 and D5300 colour profiles": "Nikon Z 6II-ის, Z 8-ისა და D5300-ის ფერის პროფილები",
"Raws from the Nikon Z 6II, Z 8 and D5300 now start from a colour profile built from a few hundred photos from each camera, the same way the": "Nikon Z 6II, Z 8 და D5300 კამერების RAW ფაილები ახლა იწყება ფერის პროფილიდან, რომელიც თითოეული კამერის რამდენიმე ასეული ფოტოთია აგებული, ისევე,",
"Sony and Fujifilm profiles were made, instead of fitting each photo's colour on its own. Colours that one photo": "როგორც Sony-სა და Fujifilm-ის პროფილები შეიქმნა, ნაცვლად იმისა, რომ თითოეული ფოტოს ფერი ცალკე მოერგოს. ფერები, რომლებიც ერთ ფოტოში",
"shows only a little of come out closer to the camera's JPEG.": "მხოლოდ ცოტაა, კამერის JPEG-თან უფრო ახლოს გამოდის.",
"Closer camera colour for lens-corrected raws": "უფრო ზუსტი კამერის ფერი ობიექტივით კორექტირებული RAW ფაილებისთვის",
"Raws from cameras that correct their own JPEG for lens distortion (Panasonic and Fujifilm with that setting on, the": "იმ კამერების RAW ფაილები, რომლებიც საკუთარ JPEG-ში ობიექტივის დეფორმაციას ასწორებს (Panasonic და Fujifilm ამ პარამეტრის ჩართვისას,",
"Sony A7R IVA) now start from colours closer to the camera's. The starting look was being fitted against a JPEG that": "Sony A7R IVA), ახლა კამერისაზე უფრო ახლო ფერებით იწყება. საწყისი იერი ერგებოდა JPEG-ს, რომელიც კიდეებთან RAW-ს",
"didn't line up with the raw near the edges. Photos you already imported pick this up when their previews are rebuilt.": "არ ემთხვეოდა. უკვე იმპორტირებული ფოტოები ამას მიიღებს, როცა მათი წინასწარი ხედები ხელახლა შეიქმნება.",
"HDR merges of moving lights, and many brackets at once": "მოძრავი სინათლეების HDR გაერთიანება და ბევრი ექსპოზიციის სერია ერთად",
"A star, the moon or a light that moves between the photos of a bracket (a night bracket on a tripod) no longer": "ვარსკვლავი, მთვარე ან სინათლე, რომელიც სერიის ფოტოებს შორის მოძრაობს (ღამის სერია შტატივზე), აღარ",
"leaves a black hole where the middle photo had it clipped. With Deghost, the brightest photo's copy of it in a": "ტოვებს შავ ხვრელს იქ, სადაც შუა ფოტოში ის მოკვეთილი იყო. აჩრდილების მოცილებისას მისი ასლი ყველაზე ნათელი ფოტოდან",
"dark sky is now removed too.": "ბნელ ცაზე ახლა ასევე მოცილდება.",
"Photo ▸ Photo Merge ▸ HDR for Each Bracket Set merges every bracket among the selected photos with the last HDR": "ფოტო → ფოტოების გაერთიანება → HDR ექსპოზიციის თითოეული სერიისთვის მონიშნულ ფოტოებში ყველა სერიას აერთიანებს ბოლო HDR",
"settings, one after the other: each stack, and photos taken less than a second apart at different exposures.": "პარამეტრებით, ერთმანეთის მიყოლებით: თითოეულ დასტას და სხვადასხვა ექსპოზიციით ერთ წამზე ნაკლები ინტერვალით გადაღებულ ფოტოებს.",
"From the command line: `lightcraft-cli merge hdr-batch FOLDER`.": "ბრძანების სტრიქონიდან: `lightcraft-cli merge hdr-batch FOLDER`.",
"Merging uses about a quarter less memory: three 67 MP raws need 3.8 GB instead of 4.8 GB.": "გაერთიანება დაახლოებით მეოთხედით ნაკლებ მეხსიერებას იყენებს: სამ 67 MP RAW ფაილს 4.8 GB-ის ნაცვლად 3.8 GB სჭირდება.",
"XMP sidecars catch up after a network share comes back": "XMP თანმხლები ფაილები ქსელური საქაღალდის დაბრუნების შემდეგ ახლდება",
"With automatic XMP writing on, an edit to a photo whose folder can't be written (a network share that dropped": "XMP-ის ავტომატური ჩაწერის ჩართვისას ფოტოს რედაქტირება, რომლის საქაღალდეშიც ჩაწერა შეუძლებელია (გათიშული",
"out, a folder that went read-only) used to be written only to the library, with a line in the log, so the sidecar": "ქსელური საქაღალდე, მხოლოდ წაკითხვადი გამხდარი საქაღალდე), ადრე მხოლოდ ბიბლიოთეკაში იწერებოდა, ჟურნალში ერთი სტრიქონით, ამიტომ თანმხლები ფაილი",
"stayed behind the edit. LightCraft now says once that the sidecars are waiting, tries again every few seconds once": "რედაქტირებას ჩამორჩებოდა. ახლა LightCraft ერთხელ გატყობინებთ, რომ თანმხლები ფაილები ელოდება, ფაილების ხელმისაწვდომობისთანავე ყოველ რამდენიმე წამში",
"the files are reachable, and says when they're written. `library.retrySidecars` does it on request.": "ხელახლა ცდილობს და გატყობინებთ, როცა ისინი ჩაიწერება. `library.retrySidecars` ამას მოთხოვნისას აკეთებს.",
"A damaged or crafted raw can no longer make LightCraft set aside gigabytes of memory before finding out the file is": "დაზიანებულ ან სპეციალურად შექმნილ RAW ფაილს აღარ შეუძლია LightCraft-ს გიგაბაიტობით მეხსიერება დააჯავშნინოს, სანამ ის ფაილის გაუმართაობას",
"bad (issue #1512): a compressed PEF whose data is too short for the size it declares, an uncompressed TIFF-based": "აღმოაჩენს (ხარვეზი #1512): შეკუმშული PEF, რომლის მონაცემები გამოცხადებული ზომისთვის მეტისმეტად მოკლეა, შეუკუმშავი TIFF-ზე დაფუძნებული",
"raw whose tile claims far more samples than it holds, and an ARW6 with a broken tile are refused first. All 74": "RAW, რომლის ფილა ბევრად მეტ ნიმუშს აცხადებს, ვიდრე შეიცავს, და ARW6 დაზიანებული ფილით, წინასწარ უარყოფილია. სატესტო კორპუსის",
"files in the test corpus still decode.": "74-ვე ფაილი კვლავ დეკოდირდება.",
"Thumbnails and previews are written to the cache on disk by one background writer instead of a new thread for": "ესკიზებსა და წინასწარ ხედებს დისკზე არსებულ ქეშში ერთი ფონური ჩამწერი წერს, ნაცვლად ყოველი გამოსახულებისთვის ახალი ნაკადისა",
"each image (issue #1522). When renders come in faster than the disk takes them, at most 128 MB of images wait;": "(ხარვეზი #1522). როცა რენდერები უფრო სწრაფად მოდის, ვიდრე დისკი იღებს, მაქსიმუმ 128 MB გამოსახულება ელოდება;",
"past that a write is skipped (the image stays in memory and is written by a later render), so a slow disk can't": "ამის იქით ჩაწერა გამოტოვდება (გამოსახულება მეხსიერებაში რჩება და მას მომდევნო რენდერი ჩაწერს), ამიტომ ნელ დისკს",
"pile up threads and memory.": "აღარ შეუძლია ნაკადებისა და მეხსიერების დაგროვება.",
"Saving the catalog and resuming a model download no longer write through a link left at the temporary file's": "კატალოგის შენახვა და მოდელის ჩამოტვირთვის გაგრძელება აღარ წერს დროებითი ფაილის სახელით დატოვებულ ბმულში",
"name (`catalog.snap.tmp`, `model.onnx.part`): the link is removed and a new file made in its place, so the file it": "(`catalog.snap.tmp`, `model.onnx.part`): ბმული იშლება და მის ადგილას ახალი ფაილი იქმნება, ამიტომ ფაილი, რომელზეც ის",
"pointed to is never changed (issue #1502).": "მიუთითებდა, არასოდეს იცვლება (ხარვეზი #1502).",
"A photo whose file was replaced (Reload Changed Files after an outside edit) no longer keeps the faces recognition": "ფოტო, რომლის ფაილიც შეიცვალა (შეცვლილი ფაილების ხელახლა ჩატვირთვა გარე რედაქტირების შემდეგ), აღარ ინახავს ამოცნობის მიერ",
"made from the old pixels: they are made again from the new file, and a scan still busy with the old file when it": "ძველი პიქსელებიდან შექმნილ სახეებს: ისინი ახალი ფაილიდან ხელახლა იქმნება, ხოლო სკანირება, რომელიც ცვლილებისას ჯერ კიდევ ძველ ფაილს ამუშავებდა,",
"changed doesn't put its faces on the new one (issue #1524).": "თავის სახეებს ახალს აღარ ადებს (ხარვეზი #1524).",
"Settings stays put when you change tabs": "პარამეტრები ადგილზე რჩება ჩანართების გადართვისას",
"The Settings window keeps its top edge and width when you switch tabs, so the tab row no longer jumps around": "პარამეტრების ფანჯარა ჩანართების გადართვისას ზედა კიდესა და სიგანეს ინარჩუნებს, ამიტომ ჩანართების რიგი მაჩვენებლის ქვეშ აღარ ხტის.",
"under the pointer. It used to be centred, so every tab of a different height moved it.": "ადრე ის ცენტრირებული იყო, ამიტომ განსხვავებული სიმაღლის ყოველი ჩანართი მას ამოძრავებდა.",
"Layout image over the loupe": "განლაგების გამოსახულება ლუპაზე",
"View ▸ Loupe Overlay ▸ Choose Layout Image… draws a PNG with transparency over the photo in the loupe, such as": "ხედი → ლუპის ზედდება → განლაგების გამოსახულების არჩევა… ლუპაში ფოტოს ზემოთ გამჭვირვალობიან PNG-ს ხატავს, მაგალითად",
"a magazine cover's masthead and cover lines, so you can frame a shot for the page it is made for. It fits inside": "ჟურნალის ყდის სათაურსა და წარწერებს, რათა კადრი იმ გვერდისთვის დააკომპოზიციოთ, რომლისთვისაც კეთდება. ის ფოტოში ეტევა,",
"the photo, follows zoom and pan, and ⌥⌘O shows or hides it. The same menu sets its opacity and a matte that": "მასშტაბსა და გადაადგილებას მისდევს, ⌥⌘O კი მას აჩენს ან მალავს. იმავე მენიუში ყენდება მისი გაუმჭვირვალობა და მატი, რომელიც",
"darkens the photo outside it. The layout stays chosen across launches.": "ფოტოს მის გარეთ ამუქებს. არჩეული განლაგება გაშვებებს შორის ნარჩუნდება.",
"Smaller JPEG exports": "უფრო მცირე JPEG ექსპორტი",
"JPEG exports are 12–14 % smaller at the same quality, with exactly the same pixels (issue #1373): each file now": "JPEG ექსპორტი იმავე ხარისხით 12–14 %-ით მცირეა, ზუსტად იგივე პიქსელებით (ხარვეზი #1373): ყოველ ფაილს ახლა",
"carries Huffman tables made for its own picture instead of the standard example tables. Every viewer opens them": "საკუთარი გამოსახულებისთვის შექმნილი Huffman-ის ცხრილები აქვს სტანდარტული სანიმუშო ცხრილების ნაცვლად. ნებისმიერი დამთვალიერებელი მათ",
"as before.": "ისე ხსნის, როგორც ადრე.",
"A photo whose Defringe amount was stored far past the sliders' 20 (in a damaged catalog or sidecar) no longer": "ფოტო, რომლის კიდის შარავანდის მოცილების სიძლიერე სლაიდერის 20-ს ბევრად აღემატებოდა (დაზიანებულ კატალოგში ან თანმხლებ ფაილში),",
"crashes LightCraft each time it renders: the amount acts as 20.": "ყოველი რენდერისას LightCraft-ის ავარიულ დახურვას აღარ იწვევს: სიძლიერე 20-ის ტოლად მოქმედებს.",
"Lens names for Nikon DSLR raws": "ობიექტივის სახელები Nikon DSLR-ის RAW ფაილებისთვის",
"Photos from Nikon DSLRs like the D700, D750, D80 or D5300 now show which lens they were taken with, for example": "Nikon DSLR-ების (მაგ. D700, D750, D80 ან D5300) ფოტოები ახლა აჩვენებს, რომელი ობიექტივით არის გადაღებული, მაგალითად „24.0-70.0 mm f/2.8“.",
"\"24.0-70.0 mm f/2.8\". Those cameras don't write a lens name, so the lens field was empty and you couldn't filter or": "ეს კამერები ობიექტივის სახელს არ წერს, ამიტომ ობიექტივის ველი ცარიელი იყო და ობიექტივით ვერც გაფილტრავდით და ვერც მოძებნიდით.",
"search by lens. LightCraft now reads the lens range Nikon keeps in its own maker note, the way Lightroom shows a": "LightCraft ახლა კითხულობს ობიექტივის დიაპაზონს, რომელსაც Nikon საკუთარ მწარმოებლის ჩანაწერში ინახავს, ისე, როგორც Lightroom აჩვენებს",
"lens it doesn't have a name for. Newly imported photos show it.": "ობიექტივს, რომლის სახელიც არ იცის. ამას ახლად იმპორტირებული ფოტოები აჩვენებს.",
"Import when a card is connected": "იმპორტი ბარათის მიერთებისას",
"Settings → Import → Cameras and Cards has an option to open the import review as soon as a camera or memory card": "პარამეტრები → იმპორტი → კამერები და ბარათები გთავაზობთ ვარიანტს, რომ იმპორტის განხილვა გაიხსნას, როგორც კი კამერა ან მეხსიერების ბარათი",
"is connected, the same review File → Import from Device opens. It's off by default. A card that's already in when": "მიერთდება — იმავე განხილვას, რომელსაც ფაილი → იმპორტი მოწყობილობიდან ხსნის. ნაგულისხმევად გამორთულია. ბარათი, რომელიც LightCraft-ის გაშვებისას",
"LightCraft starts doesn't ask, and if a dialog is open or an import is running it waits until that's done.": "უკვე ჩადებულია, არაფერს კითხულობს, ხოლო თუ დიალოგი ღიაა ან იმპორტი მიმდინარეობს, ის მის დასრულებას ელოდება.",
"Photos deleted (or moved) by another app no longer stay in a Local folder, failing to load and logging an error": "სხვა აპის მიერ წაშლილი (ან გადატანილი) ფოტოები აღარ რჩება ლოკალურ საქაღალდეში, სადაც ვერ იტვირთებოდა და",
"each time you look (issue #1392): the next time you browse the folder, in a later session, they're left out. A photo you had rated, flagged or": "ყოველი დათვალიერებისას ჟურნალში შეცდომას წერდა (ხარვეზი #1392): საქაღალდის შემდეგი დათვალიერებისას, მომდევნო სესიაში, ისინი გამოტოვებულია. ფოტო, რომელიც შეაფასეთ, დროშით მონიშნეთ ან",
"edited stays, marked missing, so its changes aren't lost; photos in My Photos are unchanged.": "დაარედაქტირეთ, რჩება, დაკარგულად მონიშნული, ამიტომ მისი ცვლილებები არ იკარგება; ჩემს ფოტოებში არსებული ფოტოები უცვლელია.",
"Full-resolution panoramas": "სრული გარჩევადობის პანორამები",
"Panorama and HDR Panorama merges keep the resolution of their photos instead of stopping at 40 megapixels": "პანორამისა და HDR პანორამის გაერთიანება ფოტოების გარჩევადობას ინარჩუნებს, ნაცვლად 40 მეგაპიქსელზე გაჩერებისა",
"(issue #1455), up to 512 MP and 65,000 pixels on the long edge, as in Lightroom. When the full size needs more": "(ხარვეზი #1455), 512 MP-მდე და გრძელ კიდეზე 65,000 პიქსელამდე, როგორც Lightroom-ში. როცა სრულ ზომას კომპიუტერზე არსებულზე მეტი",
"memory than the computer has, the panorama is made as large as fits (five 51 MP photos: up to 166 MP with": "მეხსიერება სჭირდება, პანორამა იმხელა იქმნება, რამხელაც ეტევა (ხუთი 51 MP ფოტო: 166 MP-მდე 16 GB-ით, 355 MP 32 GB-ით),",
"16 GB, 355 MP with 32 GB) and the message says so. The merge also frees each photo's pixels once they are": "და შეტყობინება ამას აღნიშნავს. გაერთიანება ასევე ათავისუფლებს თითოეული ფოტოს პიქსელებს მათი პროეცირებისთანავე, ამიტომ",
"projected, so it needs less memory than before at any size (an 81 MP stitch: 4.4 GB instead of 6.2 GB).": "ნებისმიერ ზომაზე ადრეზე ნაკლებ მეხსიერებას საჭიროებს (81 MP-იანი გაკერვა: 6.2 GB-ის ნაცვლად 4.4 GB).",
"Nikon D600, D610 and D5000": "Nikon D600, D610 და D5000",
"Raws from the Nikon D600, D610 and D5000 no longer show a bright line down the right edge (issue #1627). Their": "Nikon D600, D610 და D5000 კამერების RAW ფაილები მარჯვენა კიდეზე აღარ აჩვენებს ნათელ ხაზს (ხარვეზი #1627). მათი",
"sensor data runs a few columns of filler past the picture, which stayed in the image; these bodies now develop": "სენსორის მონაცემები კადრის მიღმა შემავსებლის რამდენიმე სვეტს შეიცავს, რომელიც გამოსახულებაში რჩებოდა; ეს კამერები ახლა",
"at the camera JPEG's size (6016 × 4016 for the D600 and D610, 4288 × 2848 for the D5000, as the D90 already": "კამერის JPEG-ის ზომით მუშავდება (6016 × 4016 D600-სა და D610-ისთვის, 4288 × 2848 D5000-ისთვის, როგორც D90 უკვე",
"did). On the D600 and D610 the white level is also measured inside the picture, so the filler can't pass for": "მუშავდებოდა). D600-სა და D610-ზე თეთრის დონე ასევე კადრის შიგნით იზომება, ამიტომ შემავსებელი ვეღარ ჩაითვლება",
"clipped highlights.": "მოკვეთილ ღია ტონებად.",
"More Canon EOS R6 Mark II C-RAW files decode": "Canon EOS R6 Mark II-ის მეტი C-RAW ფაილი დეკოდირდება",
"Some EOS R6 Mark II C-RAW files (about 1 in 50 in one photographer's library) opened as their preview with": "EOS R6 Mark II-ის ზოგიერთი C-RAW ფაილი (ერთი ფოტოგრაფის ბიბლიოთეკაში დაახლოებით 50-დან 1) მხოლოდ წინასწარი ხედით იხსნებოდა შეტყობინებით",
"\"Canon CRX adaptive QP value 172\" or \"175\". They now decode from the sensor data. Photos imported before this": "„Canon CRX adaptive QP value 172“ ან „175“. ახლა ისინი სენსორის მონაცემებიდან დეკოდირდება. ამაზე ადრე იმპორტირებული ფოტოები",
"switch over with Photo ▸ Reload from Disk.": "გადაერთვება ბრძანებით ფოტო → დისკიდან ხელახლა ჩატვირთვა.",
"Nikon raws without coloured edge bars": "Nikon-ის RAW ფაილები ფერადი ზოლების გარეშე კიდეზე",
"Raws from older Nikon bodies no longer show a thin coloured or dark bar along one edge (the right edge, or the top": "ძველი Nikon კამერების RAW ფაილები აღარ აჩვენებს ვიწრო ფერად ან მუქ ზოლს ერთ კიდეზე (მარჯვენა კიდეზე, ან ზედა კიდეზე",
"of a portrait photo): masked sensor columns were being developed as part of the picture (issues #976, #914,": "პორტრეტული ფოტოს შემთხვევაში): სენსორის დაფარული სვეტები სურათის ნაწილად მუშავდებოდა (ხარვეზები #976, #914,",
"#1236). The D7000, D5100, D800, D800E, Df, D4, D3, D3S, D700, D300, D300S, D600, D610, D810, D4S, D5600,": "#1236). D7000, D5100, D800, D800E, Df, D4, D3, D3S, D700, D300, D300S, D600, D610, D810, D4S, D5600,",
"Coolpix A, D3000, D40X, D60, D80, D2Xs, D200, D3200, D3100, D5000, D40, D50, D70, D70s and Nikon 1 V1 now show": "Coolpix A, D3000, D40X, D60, D80, D2Xs, D200, D3200, D3100, D5000, D40, D50, D70, D70s და Nikon 1 V1 ახლა აჩვენებს",
"the area the camera itself frames, a few pixels smaller than before.": "იმ არეს, რომელსაც თავად კამერა ჩარჩოში სვამს, ადრინდელზე რამდენიმე პიქსელით პატარას.",
"An empty library leads to Import": "ცარიელი ბიბლიოთეკა იმპორტისკენ მიგიძღვით",
"A library with no photos now opens on the Photo Grid with the sidebar (Square Grid stays as it is), instead of a": "ფოტოების გარეშე ბიბლიოთეკა ახლა ფოტოების ბადეზე იხსნება გვერდითი ზოლით (კვადრატული ბადე უცვლელი რჩება), ნაცვლად",
"Detail view that pointed at an empty grid. The grid and Detail view offer Import Photos… and, in the desktop app,": "დეტალური ხედისა, რომელიც ცარიელ ბადეზე მიუთითებდა. ბადე და დეტალური ხედი გთავაზობს ღილაკებს „ფოტოების იმპორტი…“ და, დესკტოპ აპში,",
"Import Lightroom Catalog… as buttons, and say that photos (and, in the desktop app, folders) can be dropped into": "„Lightroom-ის კატალოგის იმპორტი…“ და გეუბნებათ, რომ ფოტოები (და, დესკტოპ აპში, საქაღალდეები) შეგიძლიათ ჩააგდოთ",
"the window. The shortcut they show is the one Import Photos… has now.": "ფანჯარაში. ნაჩვენები მალსახმობი ის არის, რომელიც ახლა „ფოტოების იმპორტი…“-ს აქვს.",
"The top bar has an Import button, beside Export, in every library.": "ზედა ზოლს ყველა ბიბლიოთეკაში იმპორტის ღილაკი აქვს, ექსპორტის გვერდით.",
"One kind of button": "ერთი სახის ღილაკი",
"Dialogs' buttons and About's Discord link are drawn by one button component: primary (filled with the accent),": "დიალოგების ღილაკებს და „პროგრამის შესახებ“-ის Discord-ის ბმულს ერთი ღილაკის კომპონენტი ხატავს: ძირითადი (აქცენტის ფერით შევსებული),",
"secondary, danger (filled red) and ghost, in three sizes, with an icon or without, and an icon alone (named for": "მეორეხარისხოვანი, საშიში (წითლად შევსებული) და გამჭვირვალე, სამ ზომაში, ხატულით ან მის გარეშე, და მხოლოდ ხატულა (ეკრანის",
"screen readers). Each darkens a little when hovered and more when pressed, shows a ring where the keyboard is, and": "წამკითხველებისთვის სახელდებული). თითოეული ოდნავ მუქდება კურსორის მიტანისას და უფრო მეტად — დაჭერისას, აჩვენებს რგოლს იქ, სადაც კლავიატურის ფოკუსია, და",
"its text reads at 4.5:1 or more on its fill in every theme. Dialog buttons are 30 points tall, like the welcome's.": "მისი ტექსტი ყოველ თემაში შევსებაზე 4.5:1 ან მეტი კონტრასტით იკითხება. დიალოგის ღილაკები 30 წერტილის სიმაღლისაა, როგორც მისასალმებელი ეკრანისა.",
"A dialog's confirm button says it's the next step": "დიალოგის დადასტურების ღილაკი აჩვენებს, რომ ის შემდეგი ნაბიჯია",
"In dialogs, the confirm button is on the right with Cancel to its left, and filled with the accent when it makes or": "დიალოგებში დადასტურების ღილაკი მარჯვნივაა, გაუქმება — მის მარცხნივ, და აქცენტის ფერით ივსება, როცა რაიმეს ქმნის ან",
"brings in something (Import N Photos, Merge, Save, Create, Download…). Delete and Remove stay plain, so a destructive": "შემოაქვს (N ფოტოს იმპორტი, შერწყმა, შენახვა, შექმნა, ჩამოტვირთვა…). წაშლა და მოშორება უბრალო რჩება, ამიტომ დესტრუქციული",
"choice is never the eye-catching default.": "არჩევანი არასოდეს არის თვალშისაცემი ნაგულისხმევი.",
"Straight brush strokes with ⇧-click": "ფუნჯის სწორი შტრიხები ⇧-დაწკაპებით",
"With the brush, click once, then ⇧-click somewhere else: the brush paints a straight line between the two, and": "ფუნჯით ერთხელ დაწკაპეთ, შემდეგ ⇧-ით დაწკაპეთ სხვაგან: ფუნჯი მათ შორის სწორ ხაზს ხატავს, შემდგომი",
"further ⇧-clicks carry on from the last point, as in Lightroom. Change the brush size, feather or flow before the": "⇧-დაწკაპებები კი ბოლო წერტილიდან აგრძელებს, როგორც Lightroom-ში. ⇧-დაწკაპებამდე შეცვალეთ ფუნჯის ზომა, კიდეების შერბილება ან",
"⇧-click and the line tapers from the old values to the new ones. The whole line is one undo step.": "ნაკადი და ხაზი ძველი მნიშვნელობებიდან ახლისკენ გადავა. მთელი ხაზი ერთი დაბრუნების ნაბიჯია.",
"`mask.brushStroke {connect: true}` does the same for agents.": "`mask.brushStroke {connect: true}` იგივეს აკეთებს აგენტებისთვის.",
"Local folders you browse are kept": "ლოკალური საქაღალდეები, რომლებსაც ათვალიერებთ, ინახება",
"Browsing a folder under Local now records it as browsed, so the photos in folders you use aren't forgotten after": "ლოკალურში საქაღალდის დათვალიერება ახლა მას დათვალიერებულად აღრიცხავს, ამიტომ თქვენ მიერ გამოყენებული საქაღალდეების ფოტოები აღარ ივიწყება",
"the number of days set in Settings → Performance. Only the `library.browse` command recorded it before, so a": "„პარამეტრები → წარმადობა“-ში მითითებული დღეების შემდეგ. ადრე ამას მხოლოდ `library.browse` ბრძანება აღრიცხავდა, ამიტომ",
"folder browsed every day from the sidebar was forgotten anyway and read again from scratch on the next visit,": "გვერდითი ზოლიდან ყოველდღე დათვალიერებული საქაღალდე მაინც ივიწყებოდა და მომდევნო ვიზიტისას თავიდან იკითხებოდა,",
"which is slow on a network share.": "რაც ქსელურ საქაღალდეზე ნელია.",
"Hard-edged Heal and Clone spots": "მკვეთრკიდიანი აღდგენისა და კლონირების ლაქები",
"A spot with Feather at 0 no longer draws black pixels exactly on its radius. This also fixes spots at 0% Opacity": "ლაქა, რომლის კიდეების შერბილება 0-ზეა, აღარ ხატავს შავ პიქსელებს ზუსტად თავის რადიუსზე. ეს ასევე ასწორებს 0% გაუმჭვირვალობის",
"changing pixels along their edge. The hard edge now leaves pixels on the radius unchanged.": "ლაქებს, რომლებიც კიდის გასწვრივ პიქსელებს ცვლიდა. მკვეთრი კიდე ახლა რადიუსზე მდებარე პიქსელებს უცვლელს ტოვებს.",
"Search finds people": "ძიება ადამიანებს პოულობს",
"Typing a person's name in Search Photos finds the photos with that named face (issue #1449).": "ფოტოების ძიებაში ადამიანის სახელის აკრეფა პოულობს ფოტოებს ამ სახელით მონიშნული სახით (ხარვეზი #1449).",
"Quotes keep several words together: `person:\"Jane Doe\"` finds exactly that person, `\"jane doe\"` those words side": "ბრჭყალები რამდენიმე სიტყვას ერთად ინახავს: `person:\"Jane Doe\"` პოულობს ზუსტად ამ ადამიანს, `\"jane doe\"` — ამ სიტყვებს გვერდიგვერდ,",
"by side, and `keyword:\"new york\"` a keyword of two words.": "ხოლო `keyword:\"new york\"` — ორსიტყვიან საკვანძო სიტყვას.",
"Where the camera focused": "სად დააფოკუსა კამერამ",
"**View ▸ Show Focus Point** (⌥F) draws the autofocus frame the camera recorded over the photo, in Detail, Compare": "**ხედი → ფოკუსის წერტილის ჩვენება** (⌥F) ფოტოს ზემოთ ხატავს კამერის მიერ ჩაწერილ ავტოფოკუსის ჩარჩოს დეტალურ ხედში, შედარებასა",
"and Survey, following rotation and crops; the Info panel says how it focused (`AF-C · Wide · Animal Eye Tracking`).": "და მიმოხილვაში, მობრუნებისა და ჩამოჭრის გათვალისწინებით; ინფორმაციის პანელი აჩვენებს, როგორ მოხდა ფოკუსირება (`AF-C · Wide · Animal Eye Tracking`).",
"Lightroom has no such view.": "Lightroom-ს ასეთი ხედი არ აქვს.",
"**Z zooms to it**: Toggle Zoom centres on the focus point, so checking that the subject is sharp is one key": "**Z მასზე ადიდებს**: მასშტაბის გადართვა ფოკუსის წერტილზე ცენტრირდება, ამიტომ საგნის სიმკვეთრის შემოწმება ერთი კლავიშია",
"(View ▸ Zoom to Focus Point turns this off). Photos without a point zoom as before.": "(ხედი → ფოკუსის წერტილამდე გადიდება ამას გამორთავს). წერტილის გარეშე ფოტოები ისე დიდდება, როგორც ადრე.",
"Sony α1 (ILCE-1) and A7S III (ILCE-7SM3) raws for now; manual-focus shots and Wide shots that only report the frame": "ჯერჯერობით Sony α1 (ILCE-1) და A7S III (ILCE-7SM3) RAW ფაილები; ხელით ფოკუსირებული კადრები და Wide კადრები, რომლებიც მხოლოდ კადრის ცენტრს",
"centre show nothing. More cameras will follow. Details: [focus-points.md](focus-points.md).": "აცნობებს, არაფერს აჩვენებს. სხვა კამერებიც დაემატება. დეტალები: [focus-points.md](focus-points.md).",
"**Photos already in your library get theirs in the background**: LightCraft reads just the few kilobytes of each": "**ბიბლიოთეკაში უკვე არსებული ფოტოები თავისას ფონურად იღებს**: LightCraft კითხულობს თითოეული ფაილის მხოლოდ იმ რამდენიმე კილობაიტს,",
"file that hold the focus point (about 100 photos a second from a spinning disk), with a *Reading focus points* row": "რომელიც ფოკუსის წერტილს შეიცავს (მბრუნავი დისკიდან დაახლოებით 100 ფოტო წამში), აქტივობების დასტაში *ფოკუსის წერტილები იკითხება* სტრიქონით,",
"in the activity stack you can stop. Photo ▸ Read Focus Points runs it by hand.": "რომლის შეჩერებაც შეგიძლიათ. ფოტო → ფოკუსის წერტილების წაკითხვა მას ხელით უშვებს.",
"Cleaner HDR merges": "უფრო სუფთა HDR გაერთიანება",
"Bright windows in an HDR made with Photo ▸ Photo Merge ▸ HDR no longer take a magenta tinge from the brighter": "ფოტო → ფოტოების გაერთიანება → HDR-ით შექმნილ HDR-ში ნათელი ფანჯრები აღარ იღებს მეწამულ ელფერს უფრო ნათელი ფოტოებიდან",
"photos along the areas they clipped: right next to a clipped area, a photo's colour isn't used. It showed most when": "იმ უბნების გასწვრივ, სადაც ისინი მოკვეთილი იყო: მოკვეთილი უბნის უშუალო სიახლოვეს ფოტოს ფერი არ გამოიყენება. ეს ყველაზე მეტად ჩანდა,",
"the highlights were darkened or saturated.": "როცა ღია ტონები დამუქებული ან გაჯერებული იყო.",
"The same photos give the same HDR whatever order they are selected in; before, a different order could change a": "ერთი და იგივე ფოტოები ერთსა და იმავე HDR-ს იძლევა, რა თანმიმდევრობითაც არ უნდა მოინიშნოს; ადრე სხვა თანმიმდევრობას",
"few pixels.": "რამდენიმე პიქსელის შეცვლა შეეძლო.",
"HDR merges keep the white balance": "HDR გაერთიანება თეთრის ბალანსს ინარჩუნებს",
"An HDR merged from raws that LightCraft colours from the camera's JPEG (CR2, NEF, ARW…) now opens at the same": "RAW ფაილებიდან გაერთიანებული HDR, რომლებსაც LightCraft კამერის JPEG-ის მიხედვით აფერადებს (CR2, NEF, ARW…), ახლა იხსნება",
"As Shot temperature and tint as its photos, and changing the white balance no longer turns it green. Sony ARW": "იმავე „როგორც გადაღებულია“ ტემპერატურითა და ტონირებით, როგორც მისი ფოტოები, და თეთრის ბალანსის შეცვლა მას აღარ ამწვანებს. Sony ARW",
"merges used to open at about 7000 K / +115 where the photos show 4000–5300 K / +8. HDRs merged before this keep": "გაერთიანებები ადრე იხსნებოდა დაახლოებით 7000 K / +115-ზე, მაშინ როცა ფოტოები 4000–5300 K / +8-ს აჩვენებს. ამაზე ადრე გაერთიანებული HDR-ები",
"their old white balance; merge them again.": "ძველ თეთრის ბალანსს ინარჩუნებს; გააერთიანეთ ისინი ხელახლა.",
"Edits keep up in a large library": "რედაქტირება დიდ ბიბლიოთეკაშიც არ ჩამორჩება",
"A small edit (a keyword, a rating, a flag, a slider) no longer has the grid's list worked out again from every": "მცირე რედაქტირება (საკვანძო სიტყვა, შეფასება, დროშა, სლაიდერი) ბადის სიას აღარ ითვლის თავიდან ყველა ფოტოდან: ხელახლა მოწმდება",
"photo: only the photos the edit touched are asked about again and put at their place in the order. In a library of": "მხოლოდ ის ფოტოები, რომლებსაც რედაქტირება შეეხო, და ისინი თანმიმდევრობაში თავის ადგილას დგება. 67,000 ფოტოს ბიბლიოთეკაში",
"67,000 photos that step went from 37 ms to under 1 ms. Still worked out whole: an edit to more than 256 photos, a": "ეს ნაბიჯი 37 ms-დან 1 ms-ზე ნაკლებამდე შემცირდა. კვლავ მთლიანად ითვლება: 256-ზე მეტი ფოტოს რედაქტირება,",
"change to an album, a stack or the keyword list, an album shown in its own order, Recently Added, Missing Photos,": "ალბომის, დასტის ან საკვანძო სიტყვების სიის ცვლილება, საკუთარი თანმიმდევრობით ნაჩვენები ალბომი, ბოლოს დამატებული, დაკარგული ფოტოები",
"and a view that asks about \"the last N days\".": "და ხედი, რომელიც „ბოლო N დღეს“ ეკითხება.",
"With no filter set, the count of the source is taken from the list instead of from a second pass over the library.": "როცა ფილტრი დაყენებული არ არის, წყაროს რაოდენობა სიიდან აიღება ბიბლიოთეკის მეორედ გავლის ნაცვლად.",
"The side panels keep a tally an edit cannot have changed: a rating or a slider changes none of the folders,": "გვერდითი პანელები ინახავს დათვლას, რომელსაც რედაქტირება ვერ შეცვლიდა: შეფასება ან სლაიდერი არ ცვლის საქაღალდეებს,",
"keywords, dates, people and counts; a keyword leaves the folders, the dates and the counts as they are. With both": "საკვანძო სიტყვებს, თარიღებს, ადამიანებსა და რაოდენობებს; საკვანძო სიტყვა საქაღალდეებს, თარიღებსა და რაოდენობებს უცვლელს ტოვებს. ორივე",
"side panels open, the frame after a keyword went from about 156 ms to about 54 ms in that library (2 ms with the": "ღია გვერდითი პანელით საკვანძო სიტყვის შემდგომი კადრი იმ ბიბლიოთეკაში დაახლოებით 156 ms-დან დაახლოებით 54 ms-მდე შემცირდა",
"panels closed, from 71 ms).": "(დახურული პანელებით 2 ms, 71 ms-ის ნაცვლად).",
"The count beside each smart album in the left panel follows an edit the same way: the album asks only the photos": "მარცხენა პანელში ყოველი სმარტ-ალბომის გვერდით რაოდენობა რედაქტირებას ასევე მისდევს: ალბომი ამოწმებს მხოლოდ რედაქტირებით შეხებულ",
"the edit touched, where it asked every photo of the library after each edit (about 25 ms an album in that library).": "ფოტოებს, მაშინ როცა ადრე ყოველი რედაქტირების შემდეგ ბიბლიოთეკის ყველა ფოტოს ამოწმებდა (იმ ბიბლიოთეკაში დაახლოებით 25 ms ალბომზე).",
"With that, the frame after a keyword is at about 29 ms there. New rules, a change to an album or the keyword list,": "ამით საკვანძო სიტყვის შემდგომი კადრი იქ დაახლოებით 29 ms-ია. ახალი წესები, ალბომის ან საკვანძო სიტყვების სიის ცვლილება,",
"an edit to more than 256 photos, and each new minute for an album that asks about \"the last N days\" are still": "256-ზე მეტი ფოტოს რედაქტირება და ყოველი ახალი წუთი ალბომისთვის, რომელიც „ბოლო N დღეს“ ეკითხება, კვლავ",
"counted from every photo.": "ყველა ფოტოდან ითვლება.",
"Still tallied from every photo on each edit: the filter bar's lists of cameras, lenses and keywords.": "ყოველი რედაქტირებისას კვლავ ყველა ფოტოდან ითვლება: ფილტრების ზოლის კამერების, ობიექტივებისა და საკვანძო სიტყვების სიები.",
"A view can hold its photos until you refresh it": "ხედს შეუძლია ფოტოების შენარჩუნება, სანამ მას არ განაახლებთ",
"View ▸ Hold View Until Refreshed (off unless you turn it on; kept with the library). With it on, an edit that makes": "ხედი → ხედის შენარჩუნება განახლებამდე (გამორთულია, სანამ არ ჩართავთ; ინახება ბიბლიოთეკასთან ერთად). ჩართულისას რედაქტირება, რის შემდეგაც",
"a photo stop matching the view keeps it in the view: a keyword given in a smart album of photos without keywords,": "ფოტო ხედს აღარ შეესაბამება, მას ხედში ტოვებს: საკვანძო სიტყვის გარეშე ფოტოების სმარტ-ალბომში მინიჭებული საკვანძო სიტყვა,",
"a flag taken off in Picks, a rating that falls under the filter bar's. With it off, as before, the photo leaves the": "რჩეულებში მოხსნილი დროშა, შეფასება, რომელიც ფილტრების ზოლის შეფასებაზე დაბლა ჩამოვიდა. გამორთულისას, როგორც ადრე, ფოტო",
"grid at once and every photo after it moves up. View ▸ Refresh View (also in the sort menu while the hold is on),": "ბადიდან მაშინვე ქრება და მის შემდეგ ყველა ფოტო ზემოთ ინაცვლებს. ხედი → ხედის განახლება (შენარჩუნების ჩართვისას სორტირების მენიუშიც არის),",
"Reshuffle, another source, filter or sort, or new rules for the smart album shows what matches now.": "ხელახლა არევა, სხვა წყარო, ფილტრი ან სორტირება, ან სმარტ-ალბომის ახალი წესები აჩვენებს, რა შეესაბამება ახლა.",
"Photos that start matching still appear at once, and deleting a photo or taking it out of the album or folder": "ფოტოები, რომლებიც შესაბამისი ხდება, კვლავ მაშინვე ჩნდება, ხოლო ფოტოს წაშლა ან მისი ამოღება ნაჩვენები ალბომიდან ან",
"shown still takes it out of the view.": "საქაღალდიდან მას კვლავ ხედიდანაც აქრობს.",
"The window opens at the size you left it": "ფანჯარა იმ ზომით იხსნება, როგორითაც დატოვეთ",
"LightCraft's window opens at the size it had when you last used it, and zoomed (macOS) / maximized if it was: it": "LightCraft-ის ფანჯარა იხსნება იმ ზომით, რაც ბოლო გამოყენებისას ჰქონდა, და გადიდებული (macOS) / მაქსიმიზებული, თუ ასეთი იყო:",
"used to open at 1600 × 1000 every time. Double-click the top bar to zoom the window, quit, and it is zoomed when": "ადრე ის ყოველთვის 1600 × 1000 ზომით იხსნებოდა. ორჯერ დაწკაპეთ ზედა ზოლზე ფანჯრის გასადიდებლად, გამოდით, და დაბრუნებისას",
"you come back; un-zoom it and it goes back to the size it had before.": "ის გადიდებული იქნება; გააუქმეთ გადიდება და ის წინა ზომას დაუბრუნდება.",
"Full screen is not remembered (the app opens as a window), and neither is where on the desktop the window was:": "სრულეკრანიანი რეჟიმი არ ინახება (პროგრამა ფანჯრად იხსნება), არც ის, სამუშაო მაგიდის რა ადგილას იყო ფანჯარა:",
"the system places it.": "მას სისტემა ათავსებს.",
"On macOS the system does not tell LightCraft when a window is zoomed from the Window menu or resized after a": "macOS-ზე სისტემა LightCraft-ს არ ატყობინებს, როცა ფანჯარა ფანჯრის მენიუდან დიდდება ან გადიდების შემდეგ",
"zoom, so it goes by the window's size, and when in doubt takes the window for a window of the size it has: it": "ზომას იცვლის, ამიტომ ის ფანჯრის ზომით ხელმძღვანელობს და ეჭვის შემთხვევაში მას ამავე ზომის ჩვეულებრივ ფანჯრად თვლის: ის",
"comes back as large as you left it, but not as a zoomed window. That is so after a zoom from the Window menu": "ისეთივე დიდი ბრუნდება, როგორიც დატოვეთ, მაგრამ არა გადიდებული ფანჯრის სახით. ასეა ფანჯრის მენიუდან გადიდების შემდეგ,",
"with the Dock at a side of the screen, or of a window already as wide as the screen. Zoomed by a double-click": "როცა Dock ეკრანის გვერდითაა, ან უკვე ეკრანის სიგანის ფანჯრის შემთხვევაში. ზედა ზოლზე ორმაგი დაწკაპუნებით",
"on the top bar it comes back zoomed. The other way round, a window you drag out until it is as wide as the": "გადიდებული ფანჯარა გადიდებულივე ბრუნდება. პირიქით, ფანჯარა, რომელსაც გაწელავთ, სანამ ის ეკრანის სიგანის",
"screen and nearly as tall counts as zoomed.": "და თითქმის ეკრანის სიმაღლის არ გახდება, გადიდებულად ითვლება.",
"For scripts: a size set with `ui.resize` is remembered like any other, so a script that needs a size sets it.": "სკრიპტებისთვის: `ui.resize`-ით დაყენებული ზომა ისევე ინახება, როგორც ნებისმიერი სხვა, ამიტომ სკრიპტი, რომელსაც კონკრეტული ზომა სჭირდება, თავად აყენებს მას.",
"HDR merges keep the lens correction": "HDR გაერთიანებები ობიექტივის კორექციას ინარჩუნებს",
"An HDR made with Photo ▸ Photo Merge ▸ HDR now keeps the lens correction the photos carry (Sony's, Panasonic's": "ფოტო → ფოტოების გაერთიანება → HDR-ით შექმნილი HDR ახლა ინარჩუნებს ფოტოებში ჩაწერილ ობიექტივის კორექციას (Sony-ის, Panasonic-ის",
"and Leica's, and the one some DNGs carry, e.g. from drones): Optics ▸ Enable Lens Corrections straightens it as it": "და Leica-ს კორექციას, და იმას, რაც ზოგიერთ DNG-შია, მაგ. დრონებიდან): ოპტიკა → ობიექტივის კორექციების ჩართვა მას ისე ასწორებს, როგორც",
"does the photos it was made from. HDRs merged before this don't have it; merge them again.": "ფოტოებს, რომლებიდანაც შეიქმნა. ამაზე ადრე გაერთიანებულ HDR-ებს ეს არ აქვს; გააერთიანეთ ისინი ხელახლა.",
"Portable mode": "პორტატული რეჟიმი",
"A file named `portable.txt` next to the LightCraft program makes it keep its settings, logs and downloaded": "LightCraft-ის პროგრამის გვერდით მდებარე ფაილი `portable.txt` აიძულებს მას, პარამეტრები, ჟურნალები და ჩამოტვირთული",
"models in a `LightCraftData` folder beside it instead of the per-user settings folder (issue #1200), as": "მოდელები გვერდით მდებარე `LightCraftData` საქაღალდეში შეინახოს მომხმარებლის პარამეტრების საქაღალდის ნაცვლად (ხარვეზი #1200), როგორც ამას",
"PhotoCraft does. If that folder can't be written, the usual folder is used and the log says why.": "PhotoCraft აკეთებს. თუ ამ საქაღალდეში ჩაწერა შეუძლებელია, ჩვეული საქაღალდე გამოიყენება და ჟურნალში მიზეზი ჩაიწერება.",
"Importing a preset zip that unpacks to far more than any preset (a \"zip bomb\") is refused with a message naming": "პრესეტების zip-ის იმპორტი, რომელიც გაშლისას ნებისმიერ პრესეტზე ბევრად დიდია („zip-ბომბი“), უარყოფილია შეტყობინებით, რომელიც",
"the file, instead of asking for gigabytes of memory, which could end LightCraft.": "ფაილს ასახელებს, ნაცვლად გიგაბაიტობით მეხსიერების მოთხოვნისა, რასაც LightCraft-ის გათიშვა შეეძლო.",
"A crop of no size (from an agent or a sidecar) no longer gives the Detail view a photo of no size to lay out": "ნულოვანი ზომის ჩამოჭრა (აგენტიდან ან თანმხლები ფაილიდან) დეტალურ ხედს განსალაგებლად აღარ აძლევს ნულოვანი ზომის ფოტოს",
"(its width over its height was 0 / 0, which stopped debug builds); it shows as a single pixel's colour.": "(მისი სიგანე შეფარდებული სიმაღლესთან იყო 0 / 0, რაც გამართვის აწყობებს აჩერებდა); ის ერთი პიქსელის ფერად ჩანს.",
"A crop a hair wide (or of no size), set by an agent or read from a sidecar, no longer crashes or hangs the": "თმის სიგანის (ან ნულოვანი ზომის) ჩამოჭრა, აგენტის მიერ დაყენებული ან თანმხლები ფაილიდან წაკითხული, აღარ თიშავს და აღარ ყინავს",
"render with Clarity, Dehaze, Texture or Highlights / Shadows on: their blurs are held to the picture's size.": "რენდერს, როცა ჩართულია სიცხადე, ბურუსის მოცილება, ტექსტურა ან ღია ტონები / ჩრდილები: მათი გაბუნდოვნება სურათის ზომით შემოიფარგლება.",
"A crop of no size with healing spots or masks no longer crashes the render: samples outside the picture read its": "ნულოვანი ზომის ჩამოჭრა აღდგენის წერტილებით ან ნიღბებით რენდერს აღარ თიშავს: სურათის გარეთ აღებული ნიმუშები მის",
"edge.": "კიდეს კითხულობს.",
"A library whose catalog file was damaged (or edited by hand) in a way that still reads no longer crashes": "ბიბლიოთეკა, რომლის კატალოგის ფაილი ისე დაზიანდა (ან ხელით შეიცვალა), რომ მაინც იკითხება, აღარ თიშავს",
"LightCraft when it shows a stack, or hangs it when a folder is moved: on opening, records are put back under": "LightCraft-ს დასტის ჩვენებისას და აღარ ყინავს მას საქაღალდის გადატანისას: გახსნისას ჩანაწერები საკუთარ",
"their own ids, stacks keep only photos that exist (at least two), folders inside themselves move to the top,": "ID-ებს უბრუნდება, დასტებში მხოლოდ არსებული ფოტოები რჩება (მინიმუმ ორი), საკუთარ თავში მოთავსებული საქაღალდეები ზედა დონეზე გადადის,",
"and new photos never reuse an id in use. What was repaired is written to the log.": "და ახალი ფოტოები არასდროს იყენებს უკვე დაკავებულ ID-ს. რაც შეკეთდა, ჟურნალში იწერება.",
"Nikon lens corrections": "Nikon-ის ობიექტივის კორექციები",
"Raws from the Nikon Z 6II, Z 8 and Z f now open with the camera's own distortion correction, as Lightroom applies a": "Nikon Z 6II, Z 8 და Z f კამერების RAW ფაილები ახლა კამერის საკუთარი დეფორმაციის კორექციით იხსნება, ისე, როგორც Lightroom იყენებს",
"built-in profile: straight lines near the edges stay straight and the framing matches the camera's JPEG. It works": "ჩაშენებულ პროფილს: კიდეებთან სწორი ხაზები სწორი რჩება და კადრირება კამერის JPEG-ს ემთხვევა. ის მუშაობს",
"with Z lenses and with F-mount lenses on the FTZ adapter, follows the in-body stabilisation's shift of the optical": "Z ობიექტივებთან და FTZ ადაპტერზე დამაგრებულ F-mount ობიექტივებთან, ითვალისწინებს კორპუსის სტაბილიზაციით გამოწვეულ ოპტიკური",
"centre, and can be turned off under Lens Corrections. Vignetting correction from the file comes later.": "ცენტრის წანაცვლებას და შეიძლება გამოირთოს ობიექტივის კორექციებში. ფაილიდან ვინიეტირების კორექცია მოგვიანებით დაემატება.",
"Thumbnail cache stays in its folder": "ესკიზების ქეში თავის საქაღალდეში რჩება",
"The thumbnail cache no longer follows a shard folder (`thumbs/ab/`) that is a symlink or junction to somewhere": "ესკიზების ქეში აღარ მიჰყვება ქვესაქაღალდეს (`thumbs/ab/`), რომელიც სიმბოლური ბმული ან junction-ია სხვა",
"else (issue #1504): trimming or clearing the cache can't delete files outside it, and thumbnails are never read": "ადგილას (ხარვეზი #1504): ქეშის შემცირება ან გასუფთავება ვერ წაშლის მის გარეთ არსებულ ფაილებს, ხოლო ესკიზები ასეთი ბმულის",
"from or written through such a link.": "გავლით არასდროს იკითხება და არ იწერება.",
"Synchronize Folder asks a network share less": "საქაღალდის სინქრონიზაცია ქსელურ საქაღალდეს ნაკლებ კითხვას უსვამს",
"A Synchronize Folder scan no longer asks the disk about every photo of the library in the folder (is its file": "საქაღალდის სინქრონიზაციის სკანირება დისკს აღარ ეკითხება საქაღალდეში ბიბლიოთეკის ყოველი ფოტოს შესახებ (არის თუ არა მისი ფაილი",
"there, has it a sidecar): it has just listed the folder, and reads the answers off the listing. On a network share": "ადგილზე, აქვს თუ არა თანმხლები ფაილი): მან ახლახან ჩამოთვალა საქაღალდე და პასუხებს ამ სიიდან კითხულობს. ქსელურ საქაღალდეზე",
"each of those questions is a round trip. Measured on a hard disk over SMB, for folders of 1,600 to 2,400 photos": "თითოეული ასეთი კითხვა ქსელში ცალკე მიმოსვლაა. გაზომილია მყარ დისკზე SMB-ით, 1,600-დან 2,400 ფოტომდე საქაღალდეებზე,",
"that had not changed: 4.6 to 7.1 s of questions after the listing (about 3 ms a photo), now under 0.05 s. The": "რომლებიც არ შეცვლილა: სიის შემდეგ 4.6-დან 7.1 წმ-მდე კითხვები (დაახლოებით 3 მწმ ფოტოზე), ახლა 0.05 წმ-ზე ნაკლები.",
"listing itself took 4 to 5 s and is as it was.": "თავად სიის მიღებას 4-დან 5 წმ-მდე სჭირდებოდა და ასევე რჩება.",
"The disk is still asked wherever a listing can't be sure what a file system would say: about a name that is": "დისკს კვლავ ეკითხება ყველგან, სადაც სია ვერ იქნება დარწმუნებული, რას იტყოდა ფაილური სისტემა: სახელზე, რომელიც",
"there in another case, a link, a name Windows reads another way (`aux.jpg`, a `~`, a `:`, a dot or a space at the": "სხვა რეგისტრით არსებობს, ბმულზე, სახელზე, რომელსაც Windows სხვაგვარად კითხულობს (`aux.jpg`, `~`, `:`, წერტილი ან ჰარი ბოლოში),",
"end), a folder the scan did not walk to its end, and, in a folder that holds any name with a character outside": "საქაღალდეზე, რომელიც სკანირებამ ბოლომდე არ გაიარა, და, საქაღალდეში, სადაც რომელიმე სახელი შეიცავს ASCII-ს გარეთ მყოფ",
"ASCII (an umlaut, a curly apostrophe, a dash), about every name the folder does not list. Names it does list are": "სიმბოლოს (უმლაუტს, ხვეულ აპოსტროფს, ტირეს), ყოველ სახელზე, რომელიც საქაღალდის სიაში არ არის. სიაში არსებულ სახელებზე",
"answered there too. In such a folder the scan saves less, and its checks now start after the listing where they": "პასუხიც იქვე მიიღება. ასეთ საქაღალდეში სკანირება ნაკლებს ზოგავს, და მისი შემოწმებები ახლა სიის შემდეგ იწყება, მაშინ როცა",
"ran beside it.": "ადრე მის პარალელურად მიმდინარეობდა.",
"A photo the folder lists is there for the scan, also where its file could not be opened by its path (a folder": "ფოტო, რომელიც საქაღალდის სიაშია, სკანირებისთვის არსებულად ითვლება, მაშინაც, როცა მისი ფაილის გახსნა მისამართით ვერ მოხერხდა (საქაღალდე,",
"that may be listed but not searched, a path longer than the system takes): such photos used to be listed as": "რომლის ჩამოთვლა შეიძლება, მაგრამ მასში ძებნა არა, ან მისამართი, რომელიც სისტემისთვის ზედმეტად გრძელია): ასეთი ფოტოები ადრე",
"missing. And a share that drops after the scan has listed a folder no longer turns that folder's photos into": "დაკარგულად აღინიშნებოდა. ასევე ქსელური საქაღალდე, რომელიც სკანირების მიერ საქაღალდის ჩამოთვლის შემდეგ ითიშება, ამ საქაღალდის ფოტოებს აღარ აქცევს",
"missing ones.": "დაკარგულად.",
"Large libraries: Synchronize Folder, import and sidecars start sooner": "დიდი ბიბლიოთეკები: საქაღალდის სინქრონიზაცია, იმპორტი და თანმხლები ფაილები უფრო მალე იწყება",
"Opening Synchronize Folder, an import review or an import no longer makes a table of every photo in the library": "საქაღალდის სინქრონიზაციის, იმპორტის გადახედვის ან იმპორტის გახსნა აღარ ადგენს ბიბლიოთეკის ყველა ფოტოს ცხრილს",
"before it looks at the first file. In a library of 3.5 million photos that held the window for about 6 s before": "პირველი ფაილის ნახვამდე. 3.5 მილიონი ფოტოს ბიბლიოთეკაში ეს ფანჯარას დაახლოებით 6 წმ-ით აყოვნებდა",
"a Synchronize scan began (now under 1 s), 2.6 s before an import review (now 0.05 s) and 1.7 s before an import": "სინქრონიზაციის სკანირების დაწყებამდე (ახლა 1 წმ-ზე ნაკლები), 2.6 წმ-ით იმპორტის გადახედვამდე (ახლა 0.05 წმ) და 1.7 წმ-ით იმპორტამდე",
"(now 0.05 s). The scan looks up only the files it finds and the contents it reads, on its own thread.": "(ახლა 0.05 წმ). სკანირება საკუთარ ნაკადში ეძებს მხოლოდ იმ ფაილებს, რომლებსაც პოულობს, და იმ შიგთავსს, რომელსაც კითხულობს.",
"Writing one photo's XMP sidecar (Save Metadata to File, or automatically after an edit) no longer works out who": "ერთი ფოტოს XMP თანმხლები ფაილის ჩაწერა (მეტამონაცემების ფაილში შენახვა, ან ავტომატურად რედაქტირების შემდეგ) აღარ არკვევს, ვის",
"owns every shared sidecar name in the library: 2.4 s a write in that library, now under 1 s.": "ეკუთვნის ბიბლიოთეკაში თანმხლები ფაილის ყოველი საერთო სახელი: იმ ბიბლიოთეკაში 2.4 წმ თითო ჩაწერაზე, ახლა 1 წმ-ზე ნაკლები.",
"Nothing else changes: the same files are found new, already there, moved or missing, and sidecars get the same": "სხვა არაფერი იცვლება: იგივე ფაილები აღმოჩნდება ახალი, უკვე არსებული, გადატანილი ან დაკარგული, და თანმხლები ფაილები იგივე",
"names.": "სახელებს იღებს.",
"Faces load faster in the People view": "სახეები ადამიანების ხედში უფრო სწრაფად იტვირთება",
"Faces on unedited raws are cut from the camera's preview inside the file instead of developing the raw (issue": "დაურედაქტირებელ RAW ფაილებზე სახეები ფაილში შენახული კამერის წინასწარი ხედიდან იჭრება RAW-ის დამუშავების ნაცვლად (ხარვეზი",
"#1440): a Sony α1 face reads 8 MB instead of 70 MB, an A7S III face about 1 MB instead of 24 MB, several times": "#1440): Sony α1-ის სახე 70 MB-ის ნაცვლად 8 MB-ს კითხულობს, A7S III-ის სახე დაახლოებით 1 MB-ს 24 MB-ის ნაცვლად, რამდენჯერმე",
"faster on an external hard disk. A face whose preview is too small, and any edited photo, is still developed from": "უფრო სწრაფად გარე მყარ დისკზე. სახე, რომლის წინასწარი ხედი ძალიან პატარაა, და ნებისმიერი რედაქტირებული ფოტო კვლავ",
"the raw, so it keeps its look.": "RAW-იდან მუშავდება, ამიტომ თავის იერს ინარჩუნებს.",
"Raws whose preview is in Adobe RGB (Sony α1 among others) no longer read the whole file for their grid thumbnail:": "RAW ფაილები, რომელთა წინასწარი ხედი Adobe RGB-შია (მათ შორის Sony α1), ბადის ესკიზისთვის აღარ კითხულობს მთელ ფაილს:",
"only the header and the preview are read, as for other raws.": "იკითხება მხოლოდ სათაური და წინასწარი ხედი, როგორც სხვა RAW ფაილებისთვის.",
"Faces are kept in the thumbnail cache at a few fixed sizes, so moving the thumbnail slider no longer renders them": "სახეები ესკიზების ქეშში რამდენიმე ფიქსირებული ზომით ინახება, ამიტომ ესკიზების სლაიდერის გადაადგილება მათ აღარ არენდერებს",
"all again.": "ყველას ხელახლა.",
"A raw file whose black level is stored as \"not a number\" (or infinity), or a floating-point DNG with such": "RAW ფაილი, რომლის შავის დონე შენახულია როგორც „არა რიცხვი“ (ან უსასრულობა), ან მცურავმძიმიანი DNG ასეთი",
"samples, no longer crashes LightCraft at 1:1 or on export: the bad values read as black.": "ნიმუშებით, LightCraft-ს აღარ თიშავს 1:1-ზე ან ექსპორტისას: არასწორი მნიშვნელობები შავად იკითხება.",
"Exporting a photo more than 65,535 times as long as it is wide (a one-pixel strip), or opening the Export dialog's": "ფოტოს ექსპორტი, რომლის სიგრძე სიგანეზე 65,535-ჯერ მეტია (ერთპიქსელიანი ზოლი), ან მისთვის ექსპორტის დიალოგის",
"watermark preview for it, no longer crashes LightCraft; the export is capped at the encoders' 65,535 pixels.": "ჭვირნიშნის წინასწარი ხედის გახსნა LightCraft-ს აღარ თიშავს; ექსპორტი შემოიფარგლება ენკოდერების 65,535 პიქსელით.",
"Dragging a Tone Curve point that sits very close to its neighbours (two clicks side by side, or a curve from a": "ტონალური მრუდის წერტილის გადათრევა, რომელიც მეზობლებთან ძალიან ახლოსაა (ორი დაწკაპუნება გვერდიგვერდ, ან მრუდი",
"sidecar, a preset or an agent) no longer crashes LightCraft; the point stays between them. Curve points sent to": "თანმხლები ფაილიდან, პრესეტიდან ან აგენტიდან), LightCraft-ს აღარ თიშავს; წერტილი მათ შორის რჩება. `develop.curve`-ისთვის",
"`develop.curve` are kept in order, and a sidecar curve with a \"NaN\" or \"inf\" point is ignored.": "გაგზავნილი მრუდის წერტილები რიგითობას ინარჩუნებს, ხოლო თანმხლები ფაილის მრუდი „NaN“ ან „inf“ წერტილით იგნორირდება.",
"A demo photo whose stored size was damaged (a width of 4294967295) is rendered at its own size instead of": "სადემონსტრაციო ფოტო, რომლის შენახული ზომა დაზიანდა (სიგანე 4294967295), საკუთარი ზომით რენდერდება და არა",
"one that overflows.": "გადავსებული ზომით.",
"DNG camera identity": "კამერის იდენტიფიკაცია DNG-ში",
"DNG export and Convert to DNG no longer duplicate the camera make when the model already": "DNG ექსპორტი და DNG-ად გარდაქმნა აღარ აორმაგებს კამერის მწარმოებელს, როცა მოდელი მას უკვე",
"contains it: `Canon EOS R6` stays `Canon EOS R6`, rather than `Canon Canon EOS R6` (the camera": "შეიცავს: `Canon EOS R6` რჩება `Canon EOS R6`, და არა `Canon Canon EOS R6` (კამერის",
"identity subissue in #840). The separate Make and Model tags keep their original values.": "იდენტიფიკაციის ქვეხარვეზი #840-ში). ცალკეული Make და Model ტეგები თავდაპირველ მნიშვნელობებს ინარჩუნებს.",
"This does not change colour matrices, camera calibration or RAW noise rendering.": "ეს არ ცვლის ფერის მატრიცებს, კამერის კალიბრაციას ან RAW ხმაურის რენდერირებას.",
"Building from source": "აწყობა საწყისი კოდიდან",
"The English and Simplified Chinese build guides now describe command-local job and release": "ინგლისური და გამარტივებული ჩინური აწყობის სახელმძღვანელოები ახლა აღწერს ბრძანების დონეზე ნაკადების რაოდენობისა და release",
"profile overrides for memory-constrained builders (issue #1196), including why packaging": "პროფილის გადაფარვას შეზღუდული მეხსიერების მქონე ამწყობებისთვის (ხარვეზი #1196), მათ შორის იმას, თუ რატომ შეუძლია შეფუთვის",
"recipes can override inherited settings. Default release profiles and application behavior": "რეცეპტებს მემკვიდრეობით მიღებული პარამეტრების გადაფარვა. ნაგულისხმევი release პროფილები და პროგრამის ქცევა",
"are unchanged; the guidance does not guarantee a build will fit every 16 GB machine.": "უცვლელია; ეს რჩევები არ იძლევა გარანტიას, რომ აწყობა 16 GB-იან ნებისმიერ კომპიუტერზე მოთავსდება.",
"Lightroom catalog import": "Lightroom-ის კატალოგის იმპორტი",
"A Lightroom Classic catalog whose changes are all still in its `.lrcat-wal` file (a new catalog Lightroom has": "Lightroom Classic-ის კატალოგი, რომლის ყველა ცვლილება ჯერ კიდევ `.lrcat-wal` ფაილშია (ახალი კატალოგი, რომელიც Lightroom-ს",
"open and hasn't written back yet) imports instead of failing with \"unsupported SQLite schema format\".": "გახსნილი აქვს და ჯერ უკან არ ჩაუწერია), იმპორტირდება, ნაცვლად „unsupported SQLite schema format“ შეცდომისა.",
"An export enlarged far past the photo's size (20000 typed for 2000 with Don't Enlarge off) no longer ends": "ექსპორტი, რომელიც ფოტოს ზომას ბევრად აჭარბებს (2000-ის ნაცვლად აკრეფილი 20000, როცა „გადიდების გარეშე“ გამორთულია), აღარ თიშავს",
"LightCraft: an enlargement stops at 512 megapixels, as in Lightroom, and one that needs more memory than the": "LightCraft-ს: გადიდება 512 მეგაპიქსელზე ჩერდება, როგორც Lightroom-ში, ხოლო ის, რომელსაც კომპიუტერზე არსებულზე მეტი მეხსიერება",
"computer has is refused with the size it would take, before it starts.": "სჭირდება, დაწყებამდე უარყოფილია და შეტყობინება მისთვის საჭირო ზომას ასახელებს.",
"Confirm matching faces together": "შესაბამისი სახეების ერთად დადასტურება",
"On a person's page, the ↑ control on a suggested face confirms it and all shown suggestions with equal or higher": "ადამიანის გვერდზე შემოთავაზებულ სახეზე ↑ მართვის ელემენტი ადასტურებს მას და ყველა ნაჩვენებ შეთავაზებას თანაბარი ან მეტი",
"similarity as one undo step. Hover or focus that face and press A for the same action; hidden suggestions stay hidden.": "მსგავსებით, ერთ დაბრუნების ნაბიჯად. იგივე მოქმედებისთვის მიიტანეთ მაჩვენებელი ამ სახეზე ან მოახდინეთ მასზე ფოკუსირება და დააჭირეთ A-ს; დამალული შეთავაზებები დამალული რჩება.",
"Noise reduction looks the same at every size": "ხმაურის შემცირება ყველა ზომაზე ერთნაირად გამოიყურება",
"Luminance and colour noise reduction no longer look much stronger in grid thumbnails and the filmstrip than in": "სიკაშკაშისა და ფერის ხმაურის შემცირება ბადის ესკიზებში და კადრების ზოლში აღარ გამოიყურება ბევრად ძლიერად, ვიდრე",
"the loupe (issue #960). Their radii are now set in the original photo's pixels, so a thumbnail, the fitted loupe": "ლუპაში (ხარვეზი #960). მათი რადიუსები ახლა ორიგინალი ფოტოს პიქსელებში ყენდება, ამიტომ ესკიზი, ჩატეული ლუპა",
"and a smaller export look like the full-size result scaled down; 1:1 views and full-size exports are unchanged.": "და უფრო პატარა ექსპორტი სრული ზომის შედეგის შემცირებულ ვერსიას ჰგავს; 1:1 ხედები და სრული ზომის ექსპორტი უცვლელია.",
"Like in Lightroom, judge noise reduction at 1:1: at small sizes the noise it removes is mostly averaged away.": "როგორც Lightroom-ში, ხმაურის შემცირება 1:1-ზე შეაფასეთ: მცირე ზომებზე ხმაური, რომელსაც ის აშორებს, ძირითადად ისედაც გასაშუალოებულია.",
"Cached thumbnails are redrawn.": "ქეშირებული ესკიზები ხელახლა იხატება.",
"When the graphics driver resets the GPU while LightCraft is exporting or rendering (issue #1337, seen on Windows": "როცა გრაფიკული დრაივერი GPU-ს გადატვირთავს, სანამ LightCraft ექსპორტს ან რენდერს ასრულებს (ხარვეზი #1337, შენიშნულია Windows-ზე",
"with NVIDIA), LightCraft still stops, because its window can't keep drawing on the lost device, but it now says": "NVIDIA-თი), LightCraft მაინც ჩერდება, რადგან მის ფანჯარას დაკარგულ მოწყობილობაზე ხატვის გაგრძელება არ შეუძლია, მაგრამ ახლა ამბობს",
"\"LightCraft stopped unexpectedly\" and why, instead of \"could not open its window\", and the next start renders": "„LightCraft მოულოდნელად შეწყდა“ და მიზეზს, „ფანჯარა ვერ გახსნა“-ს ნაცვლად, ხოლო შემდეგი გაშვება რენდერს",
"on the CPU and explains how to turn the GPU back on.": "CPU-ზე აკეთებს და ხსნის, როგორ ჩართოთ GPU ისევ.",
"Resetting a slider": "სლაიდერის ჩამოყრა",
"Resting the pointer on a slider's name or its thumb now says that a double-click resets it (\"Exposure — double-click": "სლაიდერის სახელზე ან მის სახელურზე მაჩვენებლის გაჩერებისას ახლა ჩანს, რომ ორმაგი დაწკაპუნება მას ჩამოყრის („ექსპოზიცია — ორმაგი დაწკაპუნებით",
"to reset it\"), in every language (issue #1436).": "ჩამოყრა“), ყველა ენაზე (ხარვეზი #1436).",
"A double-click on the thumb is a single step in History and Undo. Its first click no longer nudges the value to": "ორმაგი დაწკაპუნება სახელურზე ისტორიასა და დაბრუნებაში ერთი ნაბიჯია. მისი პირველი დაწკაპუნება აღარ წევს მნიშვნელობას",
"where the pointer landed, and a single click on the thumb leaves the value alone.": "იქით, სადაც მაჩვენებელი მოხვდა, ხოლო სახელურზე ერთი დაწკაპუნება მნიშვნელობას არ ცვლის.",
"Dehaze while zoomed in": "ბურუსის მოცილება გადიდებისას",
"With Dehaze on, panning a photo zoomed to 1:1 or moving a slider while zoomed no longer samples the whole": "ჩართული ბურუსის მოცილებისას 1:1-ზე გადიდებული ფოტოს გადაადგილება ან სლაიდერის მოძრაობა გადიდებისას აღარ ამოწმებს მთელ",
"original again to find the haze colour. On a 64 MP raw (Sony A7R VI) that took ~0.2 s of CPU per pan and per": "ორიგინალს ხელახლა ბურუსის ფერის საპოვნელად. 64 MP RAW-ზე (Sony A7R VI) ამას ~0.2 წმ CPU-ს დრო სჭირდებოდა თითო გადაადგილებასა და",
"slider step; a slider step now takes ~5 ms on the GPU.": "სლაიდერის ბიჯზე; სლაიდერის ბიჯი ახლა GPU-ზე ~5 მწმ-ს იკავებს.",
"Thumbnails of raw files appear sooner": "RAW ფაილების ესკიზები უფრო მალე ჩნდება",
"Grid thumbnails and the first picture in the loupe of an unedited raw now come from the smallest JPEG the camera": "დაურედაქტირებელი RAW-ის ბადის ესკიზები და პირველი სურათი ლუპაში ახლა კამერის მიერ შენახული უმცირესი საკმარისი ზომის JPEG-იდან",
"stored that is big enough, not always from the largest one. On a Sony A7R VI file a 512 px thumbnail decodes": "მიიღება და არა ყოველთვის უდიდესიდან. Sony A7R VI-ის ფაილზე 512 px ესკიზი 5.6 MB-ის ნაცვლად JPEG-ის",
"0.3 MB of JPEG instead of 5.6 MB and is ready several times sooner; Nikon and Panasonic raws with a mid-sized": "0.3 MB-ს დეკოდირებს და რამდენჯერმე უფრო მალეა მზად; Nikon-ისა და Panasonic-ის RAW ფაილებიც საშუალო ზომის",
"JPEG get faster too.": "JPEG-ით ასევე აჩქარდა.",
"Keywords panel": "საკვანძო სიტყვების პანელი",
"The titles **Keywords** and **Keyword List** in the Keywords panel fold their sections shut and open again, so": "სათაურები **საკვანძო სიტყვები** და **საკვანძო სიტყვების სია** საკვანძო სიტყვების პანელში თავიანთ სექციებს კეცავს და ისევ შლის, ამიტომ",
"the list of every keyword is one click away however many keywords the selected photos have. What is folded is": "ყველა საკვანძო სიტყვის სია ერთ დაწკაპუნებაზეა, რამდენი საკვანძო სიტყვაც არ უნდა ჰქონდეს მონიშნულ ფოტოებს. რაც ჩაკეცილია,",
"remembered.": "ის დამახსოვრებულია.",
"Settings ▸ Interface ▸ Keywords of the selection ▸ **Grouped by parent** lays the selected photos' keywords out by": "პარამეტრები → ინტერფეისი → მონიშნულის საკვანძო სიტყვები → **ზედა საკვანძო სიტყვით დაჯგუფებული** მონიშნული ფოტოების საკვანძო სიტყვებს",
"the keyword they are inside: \"Places › Italy\" once, on a line of its own, with Rome, Venice and the others side by": "იმ საკვანძო სიტყვის მიხედვით ალაგებს, რომელშიც ისინი შედის: „Places › Italy“ ერთხელ, ცალკე ხაზზე, მის ქვეშ კი Rome, Venice და სხვები",
"side under it. A long list stops after eight lines with \"+N more\", and the suggestions say only the keyword's own": "გვერდიგვერდ. გრძელი სია რვა ხაზის შემდეგ წყდება ჩანაწერით „+N კიდევ“, ხოლო შეთავაზებებში მხოლოდ საკვანძო სიტყვის საკუთარი",
"name. Whole names, one chip per keyword, stays the default.": "სახელი ჩანს. ნაგულისხმევად კვლავ სრული სახელები რჩება, თითო ჩიპი თითო საკვანძო სიტყვაზე.",
"A selection without keywords now says \"No keywords yet\" where its chips would be.": "მონიშნული ფოტოები საკვანძო სიტყვების გარეშე ახლა ჩიპების ადგილას აჩვენებს: „საკვანძო სიტყვები ჯერ არ არის“.",
"Typing in **Add keyword** offers the library's matching keywords right under the box. ↓ and Return (or a click)": "**საკვანძო სიტყვის დამატება** ველში აკრეფისას ველის ქვემოთვე ჩნდება ბიბლიოთეკის შესაბამისი საკვანძო სიტყვები. ↓ და Return (ან დაწკაპება)",
"give the offered keyword and keep the cursor in the box for the next one; Return alone still adds what you typed.": "შეთავაზებულ საკვანძო სიტყვას ჩასვამს და კურსორს ველში ტოვებს შემდეგისთვის; მხოლოდ Return კვლავ აკრეფილს ამატებს.",
"A name the library doesn't have is marked as a new keyword before you press Return, so a misspelling no longer": "სახელი, რომელიც ბიბლიოთეკაში არ არის, Return-ის დაჭერამდე ახალ საკვანძო სიტყვად აღინიშნება, ამიტომ შეცდომით აკრეფილი სიტყვა",
"becomes a keyword unnoticed. The suggestions further down stay put while you type.": "შეუმჩნევლად საკვანძო სიტყვად აღარ იქცევა. ქვემოთ მდებარე შეთავაზებები აკრეფისას ადგილზე რჩება.",
"With several photos selected, the Keywords panel says how many photos its keywords belong to. The × on a keyword": "რამდენიმე მონიშნული ფოტოს შემთხვევაში საკვანძო სიტყვების პანელი აჩვენებს, რამდენ ფოტოს ეკუთვნის მისი საკვანძო სიტყვები. საკვანძო სიტყვის ×",
"is a larger target that lights up on its own, and taking a keyword off several photos at once now says which": "უფრო დიდი სამიზნეა და ცალკე ინათება, ხოლო საკვანძო სიტყვის ერთდროულად რამდენიმე ფოტოდან მოხსნისას ახლა ჩანს, რომელი",
"keyword left how many photos, and that Edit ▸ Undo puts it back.": "საკვანძო სიტყვა რამდენ ფოტოს მოეხსნა და რომ რედაქტირება → დაბრუნება მას აღადგენს.",
"Lens corrections": "ობიექტივის კორექციები",
"Sony A7R VI (ILCE-7RM6) raws are corrected for lens distortion from the table the camera records in each file,": "Sony A7R VI (ILCE-7RM6) კამერის RAW ფაილებში ობიექტივის დეფორმაცია სწორდება ცხრილით, რომელსაც კამერა თითოეულ ფაილში იწერს,",
"under Optics ▸ Enable Lens Corrections, on by default for newly imported photos. On 33 photos shot with the camera's": "ოპტიკა → ობიექტივის კორექციების ჩართვა პარამეტრით, რომელიც ახლად იმპორტირებულ ფოტოებზე ნაგულისხმევად ჩართულია. კამერის",
"correction on (24–70 mm, 100 mm macro, 200–600 mm) the render lines up with the camera's JPEG within 0.68 px at": "ჩართული კორექციით გადაღებულ 33 ფოტოზე (24–70 mm, 100 mm მაკრო, 200–600 mm) რენდერი კამერის JPEG-ს 0.68 px სიზუსტით ემთხვევა",
"1440 px at the corners, where it was up to 17 px off before. The camera's lateral chromatic aberration table is read": "1440 px-ზე კუთხეებში, სადაც ადრე 17 px-მდე სცდებოდა. კამერის ლატერალური ქრომატული აბერაციის ცხრილიც იკითხება,",
"too, but not applied by default: our demosaic already hides most of that colour fringing, and the table on top made": "მაგრამ ნაგულისხმევად არ გამოიყენება: ჩვენი დემოზაიკა ამ ფერად შარავანდს უკვე ძირითადად მალავს, ცხრილი კი ზედ",
"it slightly worse. The vignetting table is read but not applied: the camera's own JPEGs don't apply it either. This": "მას ოდნავ აუარესებდა. ვინიეტირების ცხრილი იკითხება, მაგრამ არ გამოიყენება: არც კამერის საკუთარი JPEG-ები იყენებს მას. ეს",
"covers lossless, Compressed and Compressed HQ (ARW 6.0) ARWs alike. The A7R IVA (ILCE-7RM4A) has its own distortion": "ერთნაირად ეხება უდანაკარგო, Compressed და Compressed HQ (ARW 6.0) ARW-ებს. A7R IVA (ILCE-7RM4A) კამერას საკუთარი დეფორმაციის",
"correction, checked against Sony's exports; other Sony bodies record the same tables, but they stay uncorrected until": "კორექცია აქვს, Sony-ის ექსპორტებთან შემოწმებული; სხვა Sony კამერებიც იგივე ცხრილებს იწერს, მაგრამ ისინი შეუსწორებელი რჩება, სანამ",
"they are checked the same way. Photos imported earlier get the correction with Photo ▸ Reload from Disk (when still": "იმავენაირად არ შემოწმდება. ადრე იმპორტირებული ფოტოები კორექციას ფოტო → დისკიდან ხელახლა ჩატვირთვით იღებს (თუ ისინი ჯერ კიდევ",
"at their import settings). See `docs/sony-ilce7rm6-lens-corrections.md`.": "იმპორტის პარამეტრებზეა). იხილეთ `docs/sony-ilce7rm6-lens-corrections.md`.",
"The thumbnail cache is no longer taken for your photos": "ესკიზების ქეში აღარ ითვლება თქვენს ფოტოებად",
"LightCraft's cached thumbnails no longer show up in Windows Photos / Gallery or other photo apps as pictures of": "LightCraft-ის ქეშირებული ესკიზები აღარ ჩანს Windows Photos / Gallery-ში ან სხვა ფოტოპროგრამებში თქვენს",
"yours (issues #610, #1066). They were ordinary `.jpg` files in the library's `thumbs` folder, which is usually": "სურათებად (ხარვეზები #610, #1066). ისინი ჩვეულებრივი `.jpg` ფაილები იყო ბიბლიოთეკის `thumbs` საქაღალდეში, რომელიც, როგორც წესი,",
"inside Pictures, so every thumbnail (one for each photo, size and state of its edits) was listed as a photo.": "Pictures-შია, ამიტომ ყოველი ესკიზი (თითო თითოეული ფოტოს, ზომისა და მისი რედაქტირების მდგომარეობისთვის) ფოტოდ ჩანდა.",
"They are now kept under a name that is no picture's. The ones already there are taken over, not rendered again:": "ახლა ისინი ისეთი სახელით ინახება, რომელიც არცერთ სურათს არ ეკუთვნის. უკვე არსებულები გადმოიტანება და ხელახლა არ რენდერდება:",
"the first time a library opens after this update, \"Tidying the thumbnail cache\" shows in the activity stack": "ამ განახლების შემდეგ ბიბლიოთეკის პირველი გახსნისას აქტივობების დასტაში ჩანს „ესკიზების ქეში სუფთავდება“,",
"while they are renamed (it can be stopped, and goes on at the next open).": "სანამ მათ სახელი ეცვლება (მისი შეჩერება შეიძლება და შემდეგ გახსნაზე გაგრძელდება).",
"Opening a library no longer rewrites the date of every thumbnail it shows, which made them all look new at each": "ბიბლიოთეკის გახსნა აღარ გადაწერს თითოეული ნაჩვენები ესკიზის თარიღს, რის გამოც ყოველი გაშვებისას ყველა მათგანი ახალი",
"launch. Reading a thumbnail writes nothing (but for one that went unused for a week, whose date is brought": "ჩანდა. ესკიზის წაკითხვა არაფერს წერს (გარდა იმისა, რომელიც ერთი კვირა არ გამოყენებულა: მისი თარიღი",
"forward); what was read is remembered for the session, so a full cache still lets go of what is not in use first.": "წინ გადაიწევს); წაკითხული სესიის განმავლობაში ახსოვს, ამიტომ სავსე ქეში კვლავ ჯერ გამოუყენებელს ათავისუფლებს.",
"A `thumbs` folder that holds nothing but the cache says that it is one (`CACHEDIR.TAG`), so backup programs that": "`thumbs` საქაღალდე, რომელშიც მხოლოდ ქეშია, ამას თავადვე აცხადებს (`CACHEDIR.TAG`), ამიტომ სარეზერვო პროგრამებს, რომლებიც ამას",
"go by that can leave it out. It is safe to delete while LightCraft is closed, as before. A `thumbs` folder that": "ითვალისწინებს, შეუძლია ის გამოტოვოს. მისი წაშლა უსაფრთხოა, როცა LightCraft დახურულია, როგორც ადრე. `thumbs` საქაღალდე, რომელიც",
"also holds files of yours (a library opened on a photo folder that had one) is not tagged, and your files in it": "თქვენს ფაილებსაც შეიცავს (ბიბლიოთეკა, გახსნილი ფოტოების საქაღალდეზე, რომელსაც ასეთი ჰქონდა), არ მოინიშნება, ხოლო მასში თქვენი ფაილები",
"are left as they are. Note that files there named exactly like the cache's own (`ab/ab…` with 32 hex digits and": "ხელუხლებელი რჩება. გაითვალისწინეთ, რომ იქ არსებული ფაილები, რომელთა სახელი ზუსტად ქეშის ფაილების სახელს ემთხვევა (`ab/ab…` 32 თექვსმეტობითი ციფრით და",
"`.jpg`) have always been taken for the cache's, and are renamed with it.": "`.jpg`), ყოველთვის ქეშისად ითვლებოდა და მასთან ერთად ეცვლება სახელი.",
"If you go back to an older version, it renders its thumbnails again as `.jpg`. This version then takes those": "თუ ძველ ვერსიაზე დაბრუნდებით, ის ესკიზებს ხელახლა `.jpg`-ად რენდერავს. შემდეგ ეს ვერსია მათ",
"over one by one as they are used; the rest stay until the cache makes room.": "სათითაოდ გადმოიტანს, როგორც კი გამოიყენება; დანარჩენები რჩება, სანამ ქეშს ადგილი არ დასჭირდება.",
"of a portrait photo): masked sensor columns were being developed as part of the picture (issues #976, #914). The": "პორტრეტული ფოტოს შემთხვევაში): სენსორის დაფარული სვეტები სურათის ნაწილად მუშავდებოდა (ხარვეზები #976, #914).",
"D7000, D5100, D800, D800E, Df, D4, D3, D3S, D700, D300, D300S, D600, D610, D810, D4S, D5600, Coolpix A, D3000, D40X,": "D7000, D5100, D800, D800E, Df, D4, D3, D3S, D700, D300, D300S, D600, D610, D810, D4S, D5600, Coolpix A, D3000, D40X,",
"D60, D80 and D2Xs now show the area the camera itself frames, a few pixels smaller than before.": "D60, D80 და D2Xs ახლა აჩვენებს იმ არეს, რომელსაც თავად კამერა ჩარჩოში სვამს, ადრინდელზე რამდენიმე პიქსელით პატარას.",
"Export next to the originals": "ექსპორტი ორიგინალების გვერდით",
"The Export dialog has Export to: Specific folder (as before) or Same folder as original photo, like Lightroom": "ექსპორტის დიალოგში ექსპორტის ადგილად შეგიძლიათ აირჩიოთ კონკრეტული საქაღალდე (როგორც ადრე) ან ორიგინალი ფოტოს საქაღალდე, როგორც Lightroom",
"Classic (issue #956). With the second, each photo is exported into the folder its original is in, plus the": "Classic-ში (ხარვეზი #956). მეორე ვარიანტით თითოეული ფოტოს ექსპორტი ხდება იმ საქაღალდეში, სადაც მისი ორიგინალია, დამატებით",
"Subfolder if you give one (say `Exports`), so a batch from several folders lands next to each set of originals.": "ქვესაქაღალდეში, თუ მიუთითებთ (ვთქვათ, `Exports`), ამიტომ რამდენიმე საქაღალდიდან აღებული ჯგუფი ორიგინალების თითოეული ნაკრების გვერდით ხვდება.",
"\"If file exists\" works per folder as usual, and an original is never written over.": "„თუ ფაილი არსებობს“ ჩვეულებისამებრ თითოეულ საქაღალდეზე ცალკე მოქმედებს, ხოლო ორიგინალი არასოდეს გადაიწერება.",
"A photo that has no folder on disk (a demo photo, or one in the web version's browser storage) or whose folder": "ფოტოს, რომელსაც დისკზე საქაღალდე არ აქვს (სადემონსტრაციო ფოტო, ან ვებ-ვერსიის ბრაუზერის საცავში არსებული) ან რომლის საქაღალდე",
"is missing (moved, drive unplugged) is not exported; it gets its own error naming it.": "დაკარგულია (გადატანილია, დისკი გამორთულია), ექსპორტი არ უკეთდება; მისთვის ცალკე შეცდომა ჩნდება, სადაც ის სახელითაა მითითებული.",
"The choice is saved in export presets and Export with Previous. Agents pass": "არჩევანი ინახება ექსპორტის პრესეტებში და „ექსპორტი წინა პარამეტრებით“-ში. აგენტები `app.export`-ს გადასცემენ",
"`destinationMode: \"sameAsOriginal\"` (or `\"specificFolder\"`) to `app.export`; `dir` is then not needed.": "`destinationMode: \"sameAsOriginal\"` (ან `\"specificFolder\"`); ამ დროს `dir` საჭირო აღარ არის.",
"Slideshow export: PDF, JPEG and video": "სლაიდშოუს ექსპორტი: PDF, JPEG და ვიდეო",
"View ▸ Export Slideshow… (or the Export buttons at the end of Settings ▸ Slideshow) writes the slideshow out, like": "ხედი → სლაიდშოუს ექსპორტი… (ან ექსპორტის ღილაკები პარამეტრები → სლაიდშოუს ბოლოში) სლაიდშოუს ფაილად წერს, როგორც",
"Lightroom Classic's Export PDF, Export JPEG and Export Video: the photos in view as their slides, with the layout,": "Lightroom Classic-ის Export PDF, Export JPEG და Export Video: ხედში არსებული ფოტოები სლაიდებად, განლაგებით,",
"overlays and the intro and ending screens, in view order.": "ზედდებებით, შესავალი და დასკვნითი ეკრანებით, ხედის თანმიმდევრობით.",
"**PDF:** one page per slide at 1024, 1920 or 3840 pixels on the long side, at a JPEG quality you choose. Each page": "**PDF:** თითო გვერდი თითო სლაიდზე, გრძელ მხარეზე 1024, 1920 ან 3840 პიქსელით, თქვენ მიერ არჩეული JPEG ხარისხით. ყოველი გვერდი",
"carries the slide duration and fade, so a PDF viewer's presentation mode plays it as a slideshow, and \"Automatically": "სლაიდის ხანგრძლივობასა და მიქრობას ინახავს, ამიტომ PDF-ის სანახავი პროგრამის პრეზენტაციის რეჟიმი მას სლაიდშოუდ უკრავს, ხოლო „სრულეკრანიან",
"show full screen\" asks the viewer to open it that way.": "რეჟიმში ავტომატურად ჩვენება“ პროგრამას სთხოვს, ის ამ სახით გახსნას.",
"**JPEG:** numbered files (`Holiday-001.jpg`, `Holiday-002.jpg`…) in a new folder.": "**JPEG:** დანომრილი ფაილები (`Holiday-001.jpg`, `Holiday-002.jpg`…) ახალ საქაღალდეში.",
"**Video:** AV1 video in an MP4 (or WebM) file at 720p or 1080p, 24 or 30 frames per second: each slide stays up for": "**ვიდეო:** AV1 ვიდეო MP4 (ან WebM) ფაილში, 720p ან 1080p, წამში 24 ან 30 კადრი: თითოეული სლაიდი ჩანს",
"its duration and the fades are rendered frame by frame (crossfades, or fades through the fade colour). The video has": "თავისი ხანგრძლივობით, მიქრობები კი კადრ-კადრ რენდერდება (გადადინება, ან მიქრობა მიქრობის ფერში). ვიდეოს",
"no sound yet. It is AV1 rather than Lightroom's H.264, which has no open encoder we can ship; current browsers,": "ჯერ ხმა არ აქვს. ეს AV1-ია და არა Lightroom-ის H.264, რომლისთვისაც ღია ენკოდერი, რომლის მიწოდებაც შეგვეძლება, არ არსებობს; მას თანამედროვე ბრაუზერები,",
"VLC and recent phones and TVs play it.": "VLC და ახალი ტელეფონები და ტელევიზორები უკრავს.",
"The export runs in the background with its row in the activity stack; ✕ stops it and leaves no half-written file": "ექსპორტი ფონურ რეჟიმში მიმდინარეობს, საკუთარი სტრიქონით აქტივობების დასტაში; × მას აჩერებს და ნახევრად ჩაწერილ ფაილს",
"behind. A photo that can't be read is skipped and named in the message at the end. Agents use `slideshow.export`": "არ ტოვებს. ფოტო, რომლის წაკითხვაც ვერ ხერხდება, გამოიტოვება და ბოლოს შეტყობინებაში სახელით მოიხსენიება. აგენტები იყენებენ `slideshow.export`-ს",
"(`slideshow.exportStatus` for the result).": "(`slideshow.exportStatus`-ს შედეგისთვის).",
"Slideshow templates": "სლაიდშოუს შაბლონები",
"Settings ▸ Slideshow now opens with a template browser, like Lightroom Classic's Template Browser. A template holds": "პარამეტრები → სლაიდშოუ ახლა შაბლონების ბრაუზერით იხსნება, როგორც Lightroom Classic-ის Template Browser. შაბლონი",
"everything about how a slideshow looks and plays: the playback timing and fades, the layout, options and backdrop,": "ინახავს ყველაფერს, თუ როგორ გამოიყურება და იკვრება სლაიდშოუ: დაკვრის დროსა და მიქრობებს, განლაგებას, პარამეტრებსა და ფონს,",
"the overlays and the intro and ending screens. Click one to apply it; point at one to see it on the selected photo in": "ზედდებებს, შესავალ და დასკვნით ეკრანებს. დაწკაპეთ შაბლონზე მის გამოსაყენებლად; მიიტანეთ მაჩვენებელი, რომ ის მონიშნულ ფოტოზე დაინახოთ",
"the preview beside it without changing anything.": "გვერდით მდებარე წინასწარ ხედში, ისე, რომ არაფერი შეიცვალოს.",
"Five built-in templates of our own: Plain Black (the photo on black), Gallery Wall (a light wall, a white mat and a": "ხუთი ჩვენი ჩაშენებული შაბლონი: უბრალო შავი (ფოტო შავზე), გალერეის კედელი (ღია კედელი, თეთრი პასპარტუ და",
"soft shadow, with the caption and rating under the photo), Edge to Edge (photos cropped to fill the screen), Cinema": "რბილი ჩრდილი, წარწერითა და შეფასებით ფოტოს ქვეშ), კიდიდან კიდემდე (ეკრანის შესავსებად ჩამოჭრილი ფოტოები), ფართო",
"Wide (16:9 with black bars, the title in the corner, fades through black and a closing card) and Shooting Data (the": "კინო (16:9 შავი ზოლებით, სათაური კუთხეში, მიქრობა შავის გავლით და დასკვნითი ბარათი) და გადაღების მონაცემები (ექსპოზიცია,",
"exposure, ISO, focal length, camera and lens under each photo on a dark backdrop).": "ISO, ფოკუსური მანძილი, კამერა და ობიექტივი თითოეული ფოტოს ქვეშ, მუქ ფონზე).",
"Save the current settings as a template of your own; right-click it to update it with the current settings, rename,": "შეინახეთ მიმდინარე პარამეტრები საკუთარ შაბლონად; მარჯვენა დაწკაპებით შეგიძლიათ განაახლოთ ის მიმდინარე პარამეტრებით, შეუცვალოთ სახელი,",
"export or delete it, and import templates others share with you. Your templates are `.json` files in the settings": "გაიტანოთ ან წაშალოთ, და შემოიტანოთ სხვების გაზიარებული შაბლონები. თქვენი შაბლონები `.json` ფაილებია პარამეტრების",
"folder's `slideshow-templates` folder, shared by all your libraries.": "საქაღალდის `slideshow-templates` საქაღალდეში, საერთო თქვენი ყველა ბიბლიოთეკისთვის.",
"Applying a template can't be undone with Edit ▸ Undo (slideshow settings are library preferences), so the settings it": "შაბლონის გამოყენების გაუქმება რედაქტირება → დაბრუნებით შეუძლებელია (სლაიდშოუს პარამეტრები ბიბლიოთეკის პარამეტრებია), ამიტომ ჩანაცვლებული",
"replaced are listed as \"Previous settings\" until you quit: click that to go back.": "პარამეტრები გასვლამდე ჩანს როგორც „წინა პარამეტრები“: დაწკაპეთ მასზე დასაბრუნებლად.",
"A template file that can't be used (damaged, from a newer LightCraft, too large) is listed as skipped instead of": "შაბლონის ფაილი, რომლის გამოყენებაც შეუძლებელია (დაზიანებული, უფრო ახალი LightCraft-იდან, ზედმეტად დიდი), გამოტოვებულად ჩამოითვლება და",
"stopping the others, and a template whose identity plate image or background photo isn't there still applies, with a": "დანარჩენებს არ აჩერებს, ხოლო შაბლონი, რომლის საფირმო ნიშნის გამოსახულება ან ფონის ფოტო არ მოიძებნა, მაინც გამოიყენება,",
"note saying what is missing. Agents use `slideshow.templates.*`, and `slideshow.preview {template}` renders a template": "შენიშვნით იმის შესახებ, რა აკლია. აგენტები იყენებენ `slideshow.templates.*`-ს, ხოლო `slideshow.preview {template}` შაბლონს",
"without applying it.": "გამოყენების გარეშე არენდერებს.",
"Slideshow intro and ending screens": "სლაიდშოუს შესავალი და დასკვნითი ეკრანები",
"A slideshow can now open with an intro screen and close with an ending screen, like Lightroom Classic's Titles": "სლაიდშოუ ახლა შეიძლება შესავალი ეკრანით დაიწყოს და დასკვნითი ეკრანით დასრულდეს, როგორც Lightroom Classic-ის Titles",
"panel. Each is switched on on its own and has a background colour and, centred on it, your identity plate (the one": "პანელში. თითოეული ცალკე ირთვება და აქვს ფონის ფერი, მის ცენტრში კი თქვენი საფირმო ნიშანი (ზედდებებში",
"set under Overlays: its text or image) or a line of text of its own, in the plate's colour or one you pick, at a": "დაყენებული: მისი ტექსტი ან გამოსახულება) ან საკუთარი ტექსტის ხაზი, ნიშნის ფერით ან თქვენ მიერ არჩეულით, მითითებული",
"scale. Each stays up for its own duration (by default the slide duration) and fades in and out like a slide.": "მასშტაბით. თითოეული ჩანს საკუთარი ხანგრძლივობით (ნაგულისხმევად სლაიდის ხანგრძლივობით) და სლაიდივით ჩნდება და ქრება.",
"The intro plays once before the first photo; the ending after the last photo when Repeat is off (while repeating": "შესავალი ერთხელ იკვრება პირველი ფოტოს წინ; დასკვნითი ეკრანი ბოლო ფოტოს შემდეგ, როცა გამეორება გამორთულია (გამეორებისას",
"the show runs until you stop it, so the ending doesn't come up). Random order never moves them, ←/→ step across them,": "ჩვენება გრძელდება, სანამ არ შეაჩერებთ, ამიტომ დასკვნითი ეკრანი არ ჩნდება). შემთხვევითი რიგი მათ არასოდეს ანაცვლებს, ←/→ მათზეც გადადის,",
"and the control bar says Intro or End while one is up (the photo count only counts photos).": "ხოლო მართვის ზოლზე წერია „შესავალი“ ან „დასასრული“, სანამ ერთ-ერთი ჩანს (ფოტოების მთვლელი მხოლოდ ფოტოებს ითვლის).",
"Set them in Settings ▸ Slideshow ▸ Titles; the preview there switches between the photo's slide, the intro and the": "დააყენეთ ისინი პარამეტრები → სლაიდშოუ → ტიტრებში; იქ არსებული წინასწარი ხედი გადაირთვება ფოტოს სლაიდს, შესავალსა და",
"ending. They are saved with the library. Agents use `slideshow.titles`, and `slideshow.preview {title: \"intro\"}`": "დასკვნით ეკრანს შორის. ისინი ბიბლიოთეკასთან ერთად ინახება. აგენტები იყენებენ `slideshow.titles`-ს, ხოლო `slideshow.preview {title: \"intro\"}`",
"renders a screen as a PNG.": "ეკრანს PNG-ად არენდერებს.",
"Slideshow overlays": "სლაიდშოუს ზედდებები",
"Slides can now carry Lightroom Classic's Slideshow overlays: an identity plate (a line of text in a colour, or an": "სლაიდებს ახლა შეიძლება ჰქონდეს Lightroom Classic-ის სლაიდშოუს ზედდებები: საფირმო ნიშანი (ტექსტის ხაზი რაიმე ფერით, ან",
"image file such as a PNG logo with transparency, at a size and opacity, optionally drawn behind the photo), the": "გამოსახულების ფაილი, მაგალითად გამჭვირვალობიანი PNG ლოგო, მითითებული ზომითა და გაუმჭვირვალობით, სურვილისამებრ ფოტოს უკან დახატული),",
"photo's rating as stars, and any number of text overlays (up to 16) built from tokens: `{caption}`, `{title}`,": "ფოტოს შეფასება ვარსკვლავებად და ნებისმიერი რაოდენობის ტექსტური ზედდება (16-მდე), აწყობილი ტოკენებისგან: `{caption}`, `{title}`,",
"`{file}`, `{date}`, `{exposure}` (\"1/250 s at f/8\"), `{iso}`, `{focal}`, `{camera}`, `{lens}`, `{rating}` and the": "`{file}`, `{date}`, `{exposure}` („1/250 s at f/8“), `{iso}`, `{focal}`, `{camera}`, `{lens}`, `{rating}` და",
"other file-naming tokens, with a size, colour, opacity and an optional soft shadow (opacity, offset, radius, angle).": "ფაილის სახელის სხვა ტოკენები, ზომით, ფერით, გაუმჭვირვალობით და სურვილისამებრ რბილი ჩრდილით (გაუმჭვირვალობა, წანაცვლება, რადიუსი, კუთხე).",
"Each sits at one of nine anchors of the slide or of the photo, moved by an offset, and never leaves the slide.": "თითოეული სლაიდის ან ფოტოს ცხრა მიმაგრების წერტილიდან ერთ-ერთზე დგას, წანაცვლებით გადაადგილებული, და სლაიდს არასოდეს სცდება.",
"The export watermark can be drawn on every slide's photo too (\"Use export watermark\" takes the one you last": "ექსპორტის ჭვირნიშანი შეიძლება თითოეული სლაიდის ფოტოზეც დაიხატოს („ექსპორტის ჭვირნიშნის გამოყენება“ იღებს იმას, რომლითაც ბოლოს",
"exported with).": "გააკეთეთ ექსპორტი).",
"Set them in Settings ▸ Slideshow ▸ Overlays; the slide preview there and View ▸ Slideshow show them. Sizes are a": "დააყენეთ ისინი პარამეტრები → სლაიდშოუ → ზედდებებში; მათ აჩვენებს იქ არსებული სლაიდის წინასწარი ხედი და ხედი → სლაიდშოუ. ზომები",
"share of the slide, so slides look the same on any screen. They are saved with the library. Agents use": "სლაიდის წილია, ამიტომ სლაიდები ნებისმიერ ეკრანზე ერთნაირად გამოიყურება. ისინი ბიბლიოთეკასთან ერთად ინახება. აგენტები იყენებენ",
"`slideshow.overlays`; `slideshow.preview` now also returns where each overlay landed.": "`slideshow.overlays`-ს; `slideshow.preview` ახლა იმასაც აბრუნებს, სად მოხვდა თითოეული ზედდება.",
"Slideshow layout, options and backdrop": "სლაიდშოუს განლაგება, პარამეტრები და ფონი",
"Slides can now be laid out like Lightroom Classic's Slideshow Layout, Options and Backdrop panels: margins (all four": "სლაიდების განლაგება ახლა შეიძლება Lightroom Classic-ის Slideshow-ის Layout, Options და Backdrop პანელების მსგავსად: ველები (ოთხივე",
"linked, or each on its own), Zoom to Fill Frame (crop the photo to fill its cell), a stroke border (colour, width),": "დაკავშირებული, ან თითოეული ცალკე), კადრის შესავსებად გადიდება (ფოტო ჩამოიჭრება, რომ თავისი უჯრა შეავსოს), კონტურის ჩარჩო (ფერი, სისქე),",
"a cast shadow (opacity, offset, radius, angle), and a backdrop colour with an optional colour wash (a gradient from a": "ჩრდილის დაცემა (გაუმჭვირვალობა, წანაცვლება, რადიუსი, კუთხე) და ფონის ფერი სურვილისამებრ ფერადი შეღებვით (გრადიენტი",
"second colour, at an angle and opacity) and a background image (a photo from the library, at an opacity).": "მეორე ფერიდან, მითითებული კუთხითა და გაუმჭვირვალობით) და ფონის გამოსახულებით (ფოტო ბიბლიოთეკიდან, მითითებული გაუმჭვირვალობით).",
"Set them in Settings ▸ Slideshow, which now shows the selected photo as a slide as you change them (with the margin": "დააყენეთ ისინი პარამეტრები → სლაიდშოუში, რომელიც ახლა მონიშნულ ფოტოს სლაიდად აჩვენებს მათი შეცვლისას (ველების",
"guides, at the screen's aspect or 16:9 / 4:3). Sizes are a share of the slide, so a slide looks the same on any": "დამხმარე ხაზებით, ეკრანის თანაფარდობით ან 16:9 / 4:3). ზომები სლაიდის წილია, ამიტომ სლაიდი ნებისმიერ",
"screen. They are saved with the library.": "ეკრანზე ერთნაირად გამოიყურება. ისინი ბიბლიოთეკასთან ერთად ინახება.",
"View ▸ Slideshow plays the composed slides, prepared ahead off the UI thread like before, so fades and the playback": "ხედი → სლაიდშოუ უკრავს აწყობილ სლაიდებს, რომლებიც წინასწარ მზადდება UI ნაკადის გარეთ, როგორც ადრე, ამიტომ მიქრობები და დაკვრის",
"controls work as they did. With the default layout (no margins, border, shadow or backdrop) it plays the photos as": "მართვის ელემენტები ისე მუშაობს, როგორც მუშაობდა. ნაგულისხმევი განლაგებით (ველების, ჩარჩოს, ჩრდილისა და ფონის გარეშე) ის ფოტოებს ისე უკრავს, როგორც",
"before. Agents use `slideshow.layout`, and `slideshow.preview` returns one composed slide as a PNG.": "ადრე. აგენტები იყენებენ `slideshow.layout`-ს, ხოლო `slideshow.preview` ერთ აწყობილ სლაიდს PNG-ად აბრუნებს.",
"Slideshow playback": "სლაიდშოუს დაკვრა",
"View ▸ Slideshow (⌥⌘↩) now plays with Lightroom Classic's Playback settings: how long each slide stays up, a fade": "ხედი → სლაიდშოუ (⌥⌘↩) ახლა Lightroom Classic-ის Playback პარამეტრებით უკრავს: რამდენ ხანს ჩანს თითოეული სლაიდი, მიქრობა",
"between slides (a crossfade, or through black, white or any colour; 0 cuts), random order (every photo once per": "სლაიდებს შორის (გადადინება, ან შავის, თეთრის ან ნებისმიერი ფერის გავლით; 0 — უბრალო გადაჭრა), შემთხვევითი რიგი (ყოველი ფოტო ერთხელ თითო",
"pass, a new order each time round), repeat (off: the slideshow ends after the last photo) and preparing previews in": "გავლაზე, ყოველ ჯერზე ახალი რიგით), გამეორება (გამორთულისას სლაიდშოუ ბოლო ფოტოს შემდეგ მთავრდება) და წინასწარი ხედების",
"advance (the next two slides render while the current one is up, so a fade never waits or flashes).": "წინასწარ მომზადება (შემდეგი ორი სლაიდი რენდერდება, სანამ მიმდინარე ჩანს, ამიტომ მიქრობა არასოდეს ყოვნდება და არ ციმციმებს).",
"Change them in Settings ▸ Slideshow (View ▸ Slideshow Options…); they are saved with the library. Agents use": "შეცვალეთ ისინი პარამეტრები → სლაიდშოუში (ხედი → სლაიდშოუს პარამეტრები…); ისინი ბიბლიოთეკასთან ერთად ინახება. აგენტები იყენებენ",
"`slideshow.playback`; `view.slideshow` takes any of them for one run (`interval` still sets the slide duration).": "`slideshow.playback`-ს; `view.slideshow` ნებისმიერ მათგანს ერთი გაშვებისთვის იღებს (`interval` კვლავ სლაიდის ხანგრძლივობას ადგენს).",
"While it plays, moving the pointer shows a small control bar: previous, play / pause, next, the slide number and": "დაკვრისას მაჩვენებლის მოძრაობა პატარა მართვის ზოლს აჩენს: წინა, დაკვრა / პაუზა, შემდეგი, სლაიდის ნომერი და",
"end. Space pauses, ← / → step (a cut), Esc ends. A slide's time starts once it is shown sharp.": "დასრულება. Space აპაუზებს, ← / → გადადის (გადაჭრით), Esc ასრულებს. სლაიდის დრო მაშინ იწყება, როცა ის მკვეთრად გამოჩნდება.",
"M50, R100, R8 and RP (on the RP also in 1.6× crop mode). CR3 files the decoder can't read yet still open from their embedded JPEG, as before.": "M50, R100, R8 და RP კამერებზე (RP-ზე 1.6× ჩამოჭრის რეჟიმშიც). CR3 ფაილები, რომლებსაც დეკოდერი ჯერ ვერ კითხულობს, კვლავ ჩაშენებული JPEG-იდან იხსნება, როგორც ადრე.",
"Face recognition is on": "სახეების ამოცნობა ჩართულია",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "სახეების ამოცნობა გამორთულია. ჩართეთ, რომ მიიღოთ სახელების შეთავაზებები და ერთად ნახოთ მსგავსი სახეები.",
"Turn on": "ჩართვა",
"Set up face recognition": "სახეების ამოცნობის დაყენება",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "სახეების ამოცნობას სახელების შესათავაზებლად მოდელი სჭირდება: ერთჯერადი ჩამოტვირთვა, პარამეტრებში.",
"Turn on name suggestions": "სახელების შეთავაზებების ჩართვა",
"Set up name suggestions…": "სახელების შეთავაზებების დაყენება…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Inside: {names}": "Wewnątrz: {names}",
"Where should the Lightroom catalog “{catalog}” go?": "Dokąd zaimportować katalog Lightroom „{catalog}”?",
"Merge into the open library “{library}” ({count} photo{})": "Scal z otwartą biblioteką „{library}” (zdjęcia: {count}){:.0}",
"Photo: {name}": "Zdjęcie: {name}"
"Photo: {name}": "Zdjęcie: {name}",
"Panel layout could not be restored: {error}": "Nie udało się przywrócić układu paneli: {error}",
"Panel move was not applied: {error}": "Przeniesienie panelu nie zostało zastosowane: {error}",
"{name} is installed": "{name} jest zainstalowany",
"{name} is installed and in use: face recognition is on": "{name} jest zainstalowany i używany: rozpoznawanie twarzy jest włączone"
}
+10 -1
View File
@@ -481,6 +481,7 @@
"Faded Matte": "Wyblakły mat",
"Faded Slide": "Wyblakły slajd",
"Faded Urban": "Wyblakłe miasto",
"Favorite": "Ulubiony",
"Favorite Preset": "Ulubione ustawienie wstępne",
"Favorite Profile": "Ulubiony profil",
"Favorites": "Ulubione",
@@ -1673,6 +1674,7 @@
"Denoise Settings": "Ustawienia odszumiania",
"Denoise all photos with an Amount": "Odszum wszystkie zdjęcia z ustawioną intensywnością",
"Downloaded and checked. Installing…": "Pobrano i sprawdzono. Instalowanie…",
"The download failed": "Pobieranie nie powiodło się",
"Failed its last test": "Nie przeszedł ostatniego testu",
"Graphics card": "Karta graficzna",
"I have read these terms and accept them for my own use": "Przeczytałem warunki i akceptuję je na własny użytek",
@@ -2297,5 +2299,12 @@
"An import is running. Drop photos when it has finished": "Import jest w toku. Upuść zdjęcia, gdy się zakończy",
"Finish Lightroom catalog import before adding photos": "Zakończ import katalogu Lightrooma, zanim dodasz zdjęcia",
"Thumbnail size": "Rozmiar miniatur",
"Import Thumbnail Size": "Rozmiar miniatur importu"
"Import Thumbnail Size": "Rozmiar miniatur importu",
"Face recognition is on": "Rozpoznawanie twarzy jest włączone",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Rozpoznawanie twarzy jest wyłączone. Włącz je, aby dostawać propozycje imion i widzieć podobne twarze razem.",
"Turn on": "Włącz",
"Set up face recognition": "Skonfiguruj rozpoznawanie twarzy",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Rozpoznawanie twarzy potrzebuje modelu, aby proponować imiona: jednorazowe pobranie w Ustawieniach.",
"Turn on name suggestions": "Włącz propozycje imion",
"Set up name suggestions…": "Skonfiguruj propozycje imion…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "{n} foto{0} adicionada{0}",
"Where should the Lightroom catalog “{catalog}” go?": "Para onde vai o catálogo do Lightroom “{catalog}”?",
"Merge into the open library “{library}” ({count} photo{})": "Mesclar na biblioteca aberta “{library}” ({count} foto{})",
"Photo: {name}": "Foto: {name}"
"Photo: {name}": "Foto: {name}",
"Panel layout could not be restored: {error}": "Não foi possível restaurar a disposição dos painéis: {error}",
"Panel move was not applied: {error}": "A movimentação do painel não foi aplicada: {error}",
"{name} is installed": "{name} está instalado",
"{name} is installed and in use: face recognition is on": "{name} está instalado e em uso: o reconhecimento facial está ativado"
}
+10 -1
View File
@@ -498,6 +498,7 @@
"Faded Matte": "Fosco desbotado",
"Faded Slide": "Slide desbotado",
"Faded Urban": "Urbano desbotado",
"Favorite": "Favorito",
"Favorite Preset": "Predefinição favorita",
"Favorite Profile": "Perfil favorito",
"Favorites": "Favoritos",
@@ -1721,6 +1722,7 @@
"Denoise Settings": "Configurações de redução de ruído",
"Denoise all photos with an Amount": "Reduzir o ruído de todas as fotos com uma Quantidade",
"Downloaded and checked. Installing…": "Baixado e verificado. Instalando…",
"The download failed": "Falha ao baixar",
"Failed its last test": "Falhou no último teste",
"Graphics card": "Placa de vídeo",
"I have read these terms and accept them for my own use": "Li estes termos e os aceito para meu uso pessoal",
@@ -2216,5 +2218,12 @@
"An import is running. Drop photos when it has finished": "Uma importação está em andamento. Solte as fotos quando ela terminar",
"Finish Lightroom catalog import before adding photos": "Conclua a importação do catálogo do Lightroom antes de adicionar fotos",
"Thumbnail size": "Tamanho das miniaturas",
"Import Thumbnail Size": "Tamanho das miniaturas de importação"
"Import Thumbnail Size": "Tamanho das miniaturas de importação",
"Face recognition is on": "O reconhecimento facial está ativado",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "O reconhecimento facial está desativado. Ative-o para receber sugestões de nomes e ver rostos parecidos juntos.",
"Turn on": "Ativar",
"Set up face recognition": "Configurar o reconhecimento facial",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "O reconhecimento facial precisa de um modelo para sugerir nomes: um download único, em Configurações.",
"Turn on name suggestions": "Ativar sugestões de nomes",
"Set up name suggestions…": "Configurar sugestões de nomes…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "Добавлено фото: {n}{:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "Куда импортировать каталог Lightroom «{catalog}»?",
"Merge into the open library “{library}” ({count} photo{})": "Объединить с открытой библиотекой «{library}» (фото: {count}){:.0}",
"Photo: {name}": "Фото: {name}"
"Photo: {name}": "Фото: {name}",
"Panel layout could not be restored: {error}": "Не удалось восстановить расположение панелей: {error}",
"Panel move was not applied: {error}": "Перемещение панели не применено: {error}",
"{name} is installed": "Модель {name} установлена",
"{name} is installed and in use: face recognition is on": "Модель {name} установлена и используется: распознавание лиц включено"
}
+9 -1
View File
@@ -1610,6 +1610,7 @@
"Denoise Settings": "Настройки шумоподавления",
"Denoise all photos with an Amount": "Подавить шум на всех фото с заданным количеством",
"Downloaded and checked. Installing…": "Загружено и проверено. Установка…",
"The download failed": "Не удалось загрузить",
"Failed its last test": "Последняя проверка не пройдена",
"Graphics card": "Видеокарта",
"I have read these terms and accept them for my own use": "Я прочитал эти условия и принимаю их для собственного использования",
@@ -2579,5 +2580,12 @@
"An import is running. Drop photos when it has finished": "Импорт уже выполняется. Перетащите фото, когда он закончится",
"Finish Lightroom catalog import before adding photos": "Завершите импорт каталога Lightroom, прежде чем добавлять фото",
"★ Favorites": "★ Избранное",
"Import Thumbnail Size": "Размер миниатюр при импорте"
"Import Thumbnail Size": "Размер миниатюр при импорте",
"Face recognition is on": "Распознавание лиц включено",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Распознавание лиц выключено. Включите его, чтобы получать подсказки имён и видеть похожие лица вместе.",
"Turn on": "Включить",
"Set up face recognition": "Настроить распознавание лиц",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Для подсказок имён распознаванию лиц нужна модель: однократная загрузка в Настройках.",
"Turn on name suggestions": "Включить подсказки имён",
"Set up name suggestions…": "Настроить подсказки имён…"
}
+6 -2
View File
@@ -301,7 +301,7 @@
"{n} selected photos · {pages} pages": "{n} selected photos · {pages} pages",
"{in_trash} catalog photos are in this library's Recently Deleted and stay there; restore them from Recently Deleted to see them.": "{in_trash} katalogfoton finns i Nyligen raderade i det här biblioteket och ligger kvar där; återställ dem från Nyligen raderade för att se dem.",
"{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}",
"Listing folders — folders: {folders}, files: {files}": "Listar mappar — mappar: {folders}, filer: {files}",
"Added {n} photo{}": "{n} foto tillagda{:.0}",
"Could not read {name}: {e}": "Kunde inte läsa {name}: {e}",
"Drop to import {n} item{}": "Släpp för att importera {n} objekt{:.0}",
@@ -310,5 +310,9 @@
"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})",
"Photo: {name}": "Foto: {name}"
"Photo: {name}": "Foto: {name}",
"Panel layout could not be restored: {error}": "Panellayouten kunde inte återställas: {error}",
"Panel move was not applied: {error}": "Panelflytten tillämpades inte: {error}",
"{name} is installed": "{name} är installerad",
"{name} is installed and in use: face recognition is on": "{name} är installerad och används: ansiktsigenkänning är på"
}
+9 -1
View File
@@ -605,6 +605,7 @@
"Download Place Names (GeoNames)": "Hämta ortnamn (GeoNames)",
"Download the SAM 3 Model?": "Vill du hämta SAM 3-modellen?",
"Downloaded and checked. Installing…": "Hämtad och kontrollerad. Installerar…",
"The download failed": "Hämtningen misslyckades",
"Downloading model": "Hämtar modell",
"Downloading place names": "Hämtar ortnamn",
"Downloads": "Hämtade filer",
@@ -2443,5 +2444,12 @@
"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 Thumbnail Size": "Miniatyrstorlek vid import",
"Click to type a value, drag to change it": "Klicka för att ange ett värde, dra för att ändra det"
"Click to type a value, drag to change it": "Klicka för att ange ett värde, dra för att ändra det",
"Face recognition is on": "Ansiktsigenkänning är på",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Ansiktsigenkänning är av. Slå på den för att få namnförslag och se liknande ansikten tillsammans.",
"Turn on": "Slå på",
"Set up face recognition": "Ställ in ansiktsigenkänning",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Ansiktsigenkänning behöver en modell för att föreslå namn: en engångsnedladdning, i Inställningar.",
"Turn on name suggestions": "Slå på namnförslag",
"Set up name suggestions…": "Ställ in namnförslag…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "Додано фото: {n}{:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "Куди імпортувати каталог Lightroom «{catalog}»?",
"Merge into the open library “{library}” ({count} photo{})": "Об’єднати з відкритою бібліотекою «{library}» (фото: {count}){:.0}",
"Photo: {name}": "Фото: {name}"
"Photo: {name}": "Фото: {name}",
"Panel layout could not be restored: {error}": "Не вдалося відновити розташування панелей: {error}",
"Panel move was not applied: {error}": "Переміщення панелі не застосовано: {error}",
"{name} is installed": "{name} установлено",
"{name} is installed and in use: face recognition is on": "{name} установлено й використовується: розпізнавання облич увімкнено"
}
+10 -1
View File
@@ -733,6 +733,7 @@
"Faded Matte": "Вицвіле матове",
"Faded Slide": "Вицвілий слайд",
"Faded Urban": "Вицвіле місто",
"Favorite": "Улюблений",
"Favorite Preset": "Додати набір налаштувань до улюблених",
"Favorite Profile": "Додати профіль до улюблених",
"File & date": "Файл і дата",
@@ -1712,6 +1713,7 @@
"Denoise Settings": "Налаштування усунення шуму",
"Denoise all photos with an Amount": "Обробити всі фото зі значенням усунення шуму",
"Downloaded and checked. Installing…": "Завантажено й перевірено. Установлення…",
"The download failed": "Не вдалося завантажити",
"Failed its last test": "Останню перевірку не пройдено",
"Graphics card": "Відеокарта",
"I have read these terms and accept them for my own use": "Я прочитав ці умови й приймаю їх для власного використання",
@@ -2368,5 +2370,12 @@
"An import is running. Drop photos when it has finished": "Імпорт уже виконується. Перетягніть фото, коли він завершиться",
"Finish Lightroom catalog import before adding photos": "Завершіть імпорт каталогу Lightroom, перш ніж додавати фото",
"Thumbnail size": "Розмір мініатюр",
"Import Thumbnail Size": "Розмір мініатюр імпорту"
"Import Thumbnail Size": "Розмір мініатюр імпорту",
"Face recognition is on": "Розпізнавання облич увімкнено",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Розпізнавання облич вимкнено. Увімкніть його, щоб отримувати підказки імен і бачити схожі обличчя разом.",
"Turn on": "Увімкнути",
"Set up face recognition": "Налаштувати розпізнавання облич",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Для підказок імен розпізнаванню облич потрібна модель: одноразове завантаження в Налаштуваннях.",
"Turn on name suggestions": "Увімкнути підказки імен",
"Set up name suggestions…": "Налаштувати підказки імен…"
}
+7 -3
View File
@@ -124,7 +124,7 @@
"Lightroom import complete: {imported} photos added; index warning: {warning}": "Nhập Lightroom xong: đã thêm {imported} ảnh; cảnh báo chỉ mục: {warning}",
"Lightroom import failed: {e}{warning}": "Nhập Lightroom thất bại: {e}{warning}",
"Lightroom inspection failed: {e}{warning}": "Kiểm tra Lightroom thất bại: {e}{warning}",
"Listing folders — folders: {folders}, files: {files}": "Listing folders — folders: {folders}, files: {files}",
"Listing folders — folders: {folders}, files: {files}": "Đang liệt kê thư mục — thư mục: {folders}, tệp: {files}",
"MIT OR Apache-2.0. Fonts: {} (OFL). Icons: original.": "MIT OR Apache-2.0. Phông: {} (OFL). Biểu tượng: tác phẩm gốc.",
"Making the denoised picture… {}%": "Đang tạo ảnh đã khử nhiễu… {}%",
"Matches: {}": "Khớp: {}",
@@ -302,7 +302,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.",
"• {assumption}": "• {assumption}",
"… and {more} more": "… và {more} nữa",
"…and {more} more": "…and {more} more",
"…and {more} more": "…và {more} nữa",
"Added {n} photo{}": "Đã thêm {n} ảnh{:.0}",
"Could not read {name}: {e}": "Không thể đọc {name}: {e}",
"Drop to import {n} item{}": "Thả để nhập {n} mục{:.0}",
@@ -310,5 +310,9 @@
"Drop to review {n} item{} for import": "Thả để xem lại {n} mục trước khi nhập{:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "Nhập danh mục Lightroom «{catalog}» vào đâu?",
"Merge into the open library “{library}” ({count} photo{})": "Gộp vào thư viện đang mở «{library}» ({count} ảnh{:.0})",
"Photo: {name}": "Ảnh: {name}"
"Photo: {name}": "Ảnh: {name}",
"Panel layout could not be restored: {error}": "Không thể khôi phục bố cục bảng: {error}",
"Panel move was not applied: {error}": "Việc di chuyển bảng chưa được áp dụng: {error}",
"{name} is installed": "{name} đã được cài đặt",
"{name} is installed and in use: face recognition is on": "{name} đã được cài đặt và đang dùng: nhận diện khuôn mặt đã bật"
}
+428 -2
View File
@@ -517,6 +517,7 @@
"Download Place Names (GeoNames)": "Tải tên địa điểm (GeoNames)",
"Download the SAM 3 Model?": "Tải mô hình SAM 3?",
"Downloaded and checked. Installing…": "Đã tải và kiểm tra. Đang cài…",
"The download failed": "Tải xuống không thành công",
"Downloading model": "Đang tải mô hình",
"Downloading place names": "Đang tải tên địa điểm",
"Downloads": "Tải xuống",
@@ -962,7 +963,6 @@
"LightCraft couldn't open the library at": "LightCraft không mở được thư viện tại",
"There is no LightCraft library in this folder any more.": "Thư mục này không còn thư viện LightCraft nào.",
"The library isn't there: it was moved or renamed, or its drive or network share isn't connected.": "Thư viện không có ở đây: nó đã bị di chuyển hoặc đổi tên, hoặc ổ đĩa hay ổ mạng của nó chưa được kết nối.",
"This folder can't be read:": "Không đọc được thư mục này:",
"LightCraft does not know this model, so it assumed:": "LightCraft không biết mô hình này, nên đã giả định:",
"LightCraft no longer crashes at launch on Windows PCs whose Vulkan driver is broken (issue #136, e.g. some Intel UHD": "LightCraft không còn sự cố khi khởi động trên PC Windows có driver Vulkan lỗi (issue #136, ví dụ một số Intel UHD",
"LightCraft on GitHub": "LightCraft trên GitHub",
@@ -2248,7 +2248,433 @@
"Dropped Files": "Tệp đã thả",
"Finish Lightroom catalog import before adding photos": "Hoàn tất nhập danh mục Lightroom trước khi thêm ảnh",
"Import dropped files without review": "Nhập các tệp đã thả mà không xem lại",
"(not in the library)": "(không có trong thư viện)",
"1 raw can now be developed from its raw data": "Hiện có thể xử lý 1 tệp RAW từ dữ liệu thô",
"150 dpi · sRGB · current edits · fit without cropping": "150 dpi · sRGB · chỉnh sửa hiện tại · vừa khung không cắt xén",
"A 16:9 frame with black bars above and below, the title in the corner, fades through black and a closing card.": "Khung hình 16:9 với dải đen trên và dưới, tiêu đề ở góc, chuyển mờ qua nền đen và thẻ kết thúc.",
"A dark slate backdrop with the exposure, ISO and focal length, then the camera and lens, under each photo.": "Phông nền xám đá tối với thông số phơi sáng, ISO và tiêu cự, cùng máy ảnh và ống kính bên dưới mỗi ảnh.",
"A face model uses the GPU only when a check shows it gives the same results faster.": "Mô hình khuôn mặt chỉ dùng GPU khi kiểm tra cho thấy kết quả tương đương nhưng nhanh hơn.",
"A light grey wall with a white mat and a soft shadow; the caption and the rating under the photo.": "Tường xám nhạt với bo viền trắng và bóng đổ mềm; chú thích và đánh giá nằm dưới ảnh.",
"A pen's pressure sets the size and flow of the brush": "Lực nhấn bút điều chỉnh kích thước và lưu lượng của cọ",
"A slide stays up for its duration, its fade in included. A fade of 0 cuts.": "Mỗi trang trình chiếu hiển thị trong thời lượng đã đặt, tính cả lúc hiện dần. Đặt chuyển mờ bằng 0 để chuyển cảnh ngay.",
"AV1 video, each slide held for its duration with its fades. No sound: music is not exported yet.": "Video AV1, mỗi trang trình chiếu giữ theo thời lượng cùng hiệu ứng chuyển mờ. Không có âm thanh: chưa hỗ trợ xuất nhạc.",
"Add Print Cell": "Thêm ô in",
"Add a Face Recognition Model": "Thêm mô hình nhận diện khuôn mặt",
"Add a cell": "Thêm ô",
"Add a model file…": "Thêm tệp mô hình…",
"Add text overlay": "Thêm lớp phủ văn bản",
"Already installed. Installing again is harmless.": "Đã được cài đặt. Cài đặt lại cũng không gây ảnh hưởng gì.",
"Also the masks of the same name on the other selected photos": "Áp dụng cả cho các mặt nạ cùng tên trên những ảnh đã chọn khác",
"Anchored to": "Neo vào",
"Animal Eye Tracking": "Theo dõi mắt động vật",
"Another library was opened since the photos were dropped: nothing was moved": "Một thư viện khác đã được mở kể từ khi thả ảnh: chưa di chuyển tệp nào",
"Apply Mask Effect": "Áp dụng hiệu ứng mặt nạ",
"Apply Print Template": "Áp dụng mẫu in",
"Apply Slideshow Template": "Áp dụng mẫu trình chiếu",
"Apply to All Masks": "Áp dụng cho tất cả mặt nạ",
"Arrange Print Cell": "Sắp xếp ô in",
"Aspect preview": "Xem trước tỷ lệ",
"Auto Layout": "Bố cục tự động",
"Automatically show full screen": "Tự động hiển thị toàn màn hình",
"Backdrop": "Phông nền",
"Background colour": "Màu nền",
"Background image": "Ảnh nền",
"Before the last template": "Trước mẫu cuối cùng",
"Bottom": "Dưới",
"Built-in": "Tích hợp sẵn",
"CPU": "CPU",
"Can't be moved here": "Không thể chuyển vào đây",
"Cast shadow": "Đổ bóng",
"Center": "Giữa",
"Checking raw files": "Đang kiểm tra tệp RAW",
"Checking the GPU for faces": "Đang kiểm tra GPU cho nhận diện khuôn mặt",
"Checking the GPU…": "Đang kiểm tra GPU…",
"Choose Layout Image…": "Chọn ảnh bố cục…",
"Choose Monitor Profile": "Chọn hồ sơ màn hình",
"Choose a PDF destination after confirming. Print the PDF from your viewer.": "Chọn nơi lưu PDF sau khi xác nhận. Hãy in tệp PDF từ trình xem của bạn.",
"Choose a group": "Chọn một nhóm",
"Choose at least one setting to include": "Chọn ít nhất một cài đặt để bao gồm",
"Cinema Wide": "Điện ảnh rộng",
"Clear Print Layout": "Xóa bố cục in",
"Click a cell to move, resize or arrange it": "Nhấp vào ô để di chuyển, đổi kích thước hoặc sắp xếp",
"Click a template to apply it; point at one to preview it on the selected photo. Right-click your own to update, rename, export or delete it.": "Nhấp vào mẫu để áp dụng; trỏ vào mẫu để xem trước trên ảnh đã chọn. Nhấp chuột phải vào mẫu của bạn để cập nhật, đổi tên, xuất hoặc xóa.",
"Click to name this face": "Nhấp để đặt tên cho khuôn mặt này",
"Click to type a value, drag to change it": "Nhấp để nhập giá trị, kéo để thay đổi",
"Color Overlay": "Phủ màu",
"Color Overlay on B&W": "Phủ màu trên Đen & Trắng",
"Color space: Rec. 2020 HLG (HDR AVIF)": "Không gian màu: Rec. 2020 HLG (HDR AVIF)",
"Color space: Rec. 2020 PQ (HDR AVIF)": "Không gian màu: Rec. 2020 PQ (HDR AVIF)",
"Color space: Rec. 2020 PQ (HDR JPEG XL)": "Không gian màu: Rec. 2020 PQ (HDR JPEG XL)",
"Color space: Rec. 2020 PQ, 16-bit (HDR PNG)": "Không gian màu: Rec. 2020 PQ, 16-bit (HDR PNG)",
"Color wheel": "Bánh xe màu",
"Colour": "Màu",
"Colour only": "Chỉ màu",
"Colour wash": "Phủ sắc màu",
"Combine with the existing person": "Gộp với người đã có",
"Confirm before moving photos to another folder on disk": "Xác nhận trước khi di chuyển ảnh sang thư mục khác trên ổ đĩa",
"Contact Sheet PDF": "Bảng liên hệ PDF",
"Container": "Vùng chứa",
"Copy Settings…": "Sao chép cài đặt…",
"Curve channel": "Kênh đường cong",
"Custom AF Area": "Vùng AF tùy chỉnh",
"Cycle Flag": "Chuyển đổi cờ",
"Cycle Tool Overlay": "Chuyển đổi lớp phủ công cụ",
"Decrease Flag Status": "Giảm trạng thái cờ",
"Decrease Grid Thumbnail Size": "Giảm kích thước ảnh thu nhỏ trên lưới",
"Delete Cell": "Xóa ô",
"Delete Mask Effect": "Xóa hiệu ứng mặt nạ",
"Delete Print Cell": "Xóa ô in",
"Delete Print Template": "Xóa mẫu in",
"Delete Slideshow Template": "Xóa mẫu trình chiếu",
"Delete…": "Xóa…",
"Destination library": "Thư viện đích",
"Detection": "Phát hiện",
"Don't ask again": "Không hỏi lại",
"Duplicate Mask Effect": "Nhân bản hiệu ứng mặt nạ",
"Duration": "Thời lượng",
"Each photo as large as it fits, on black, with a short crossfade. Nothing drawn over it.": "Mỗi ảnh hiển thị lớn nhất vừa khung trên nền đen, với chuyển mờ ngắn. Không vẽ đè thông tin lên ảnh.",
"Edge to Edge": "Tràn viền",
"End": "Kết thúc",
"End Slideshow": "Kết thúc trình chiếu",
"Ending": "Kết thúc",
"Ending screen": "Màn hình kết thúc",
"Enter to confirm, Esc to cancel": "Enter để xác nhận, Esc để hủy",
"Every photo cropped to fill the whole screen, with slow crossfades.": "Mọi ảnh được cắt vừa kín toàn màn hình, với hiệu ứng chuyển mờ chậm.",
"Expanded Flexible Spot": "Điểm linh hoạt mở rộng",
"Export Effect Presets": "Xuất thiết lập hiệu ứng sẵn",
"Export Effect Presets…": "Xuất thiết lập hiệu ứng sẵn…",
"Export JPEG…": "Xuất JPEG…",
"Export Mask Effects": "Xuất hiệu ứng mặt nạ",
"Export PDF…": "Xuất PDF…",
"Export Slideshow": "Xuất bản trình chiếu",
"Export Slideshow Template": "Xuất mẫu trình chiếu",
"Export Slideshow: folder for the JPEG files": "Xuất bản trình chiếu: thư mục chứa tệp JPEG",
"Export Slideshow…": "Xuất bản trình chiếu…",
"Export Video…": "Xuất video…",
"Export to": "Xuất ra",
"Exporting slideshow": "Đang xuất bản trình chiếu",
"Face Models on the GPU": "Mô hình khuôn mặt trên GPU",
"Face Tracking": "Theo dõi khuôn mặt",
"Face models (ONNX)": "Mô hình khuôn mặt (ONNX)",
"Face tracking": "Theo dõi khuôn mặt",
"Fade": "Giảm dần",
"Fade duration": "Thời lượng chuyển mờ",
"Favorite": "Yêu thích",
"Favorite Mask Effect": "Yêu thích hiệu ứng mặt nạ",
"Filename captions": "Chú thích tên tệp",
"Filters": "Bộ lọc",
"Flexible Spot": "Điểm linh hoạt",
"Focus": "Lấy nét",
"Focus point": "Điểm lấy nét",
"Frame rate": "Tốc độ khung hình",
"Gallery Wall": "Tường trưng bày",
"Group (optional)": "Nhóm (tùy chọn)",
"Grouped by parent": "Nhóm theo mục cha",
"Grouped: keywords inside the same keyword share a line naming it, and long lists and the suggestions are shortened.": "Theo nhóm: các từ khóa con trong cùng một từ khóa cha sẽ chung một dòng có tên mục cha, đồng thời danh sách dài và gợi ý được rút gọn.",
"HDR TIFF needs 32-bit float.": "TIFF HDR cần định dạng dấu phẩy động 32-bit.",
"HDR for Each Bracket Set": "Tạo HDR cho mỗi bộ chụp bù trừ sáng",
"HDR output": "Đầu ra HDR",
"Highlighted: sliders this mask changes. Sliders left out stay as they are when the preset is applied.": "Được tô sáng: các thanh trượt mà mặt nạ này thay đổi. Những thanh trượt không chọn sẽ giữ nguyên khi áp dụng thiết lập sẵn.",
"Hold View Until Refreshed": "Giữ nguyên chế độ xem cho đến khi làm mới",
"Human Eye Tracking": "Theo dõi mắt người",
"ICC Profiles": "Hồ sơ ICC",
"Identity plate": "Biểu trưng định danh",
"Image on Black": "Ảnh trên nền đen",
"Image on White": "Ảnh trên nền trắng",
"Import Mask Effects": "Nhập hiệu ứng mặt nạ",
"Import Slideshow Template": "Nhập mẫu trình chiếu",
"Import Slideshow Templates": "Nhập các mẫu trình chiếu",
"Import photos to get started": "Nhập ảnh để bắt đầu",
"Import…": "Nhập…",
"Include Amount": "Bao gồm Mức tác động",
"Include brush size, feather and flow": "Bao gồm kích thước cọ, độ nhòe biên và lưu lượng",
"Increase Flag Status": "Tăng trạng thái cờ",
"Increase Grid Thumbnail Size": "Tăng kích thước ảnh thu nhỏ trên lưới",
"Intro": "Mở đầu",
"Intro screen": "Màn hình mở đầu",
"Keywords of the selection": "Từ khóa của vùng chọn",
"Layout": "Bố cục",
"Layout Image Matte": "Bo viền ảnh bố cục",
"Layout Image Opacity": "Độ mờ đục ảnh bố cục",
"Left": "Trái",
"Letter": "Thư",
"LightCraft Effect Presets": "Thiết lập hiệu ứng LightCraft",
"LightCraft stopped": "LightCraft đã dừng",
"Lightroom Catalog Import": "Nhập danh mục Lightroom",
"Lightroom catalogs import into the open library; no separate catalog folder is created.": "Danh mục Lightroom được nhập vào thư viện đang mở; không tạo thư mục danh mục riêng.",
"Link all margins": "Liên kết tất cả các lề",
"Local photos aren't in the library yet: Add to My Photos first, then move them": "Ảnh cục bộ chưa có trong thư viện: hãy Thêm vào Ảnh của tôi trước, sau đó mới di chuyển",
"Lock On AF": "AF bám nét khóa mục tiêu",
"Manage Effect Presets…": "Quản lý thiết lập hiệu ứng sẵn…",
"Manage Presets…": "Quản lý thiết lập sẵn…",
"Managed by Printer (Adobe RGB)": "Do máy in quản lý (Adobe RGB)",
"Managed by Printer (sRGB)": "Do máy in quản lý (sRGB)",
"Margins": "Lề",
"Margins are a share of the slide's shorter side, so slides look the same on any screen.": "Lề được tính theo tỷ lệ cạnh ngắn của trang chiếu, giúp trang chiếu hiển thị đồng nhất trên mọi màn hình.",
"Mask": "Mặt nạ",
"Mask Effect Presets": "Thiết lập hiệu ứng mặt nạ sẵn",
"Masks keep their sliders. Export presets first to keep a copy.": "Các mặt nạ vẫn giữ nguyên thanh trượt. Hãy xuất thiết lập sẵn trước để lưu bản sao.",
"Move Mask Effect to Group": "Chuyển hiệu ứng mặt nạ vào nhóm",
"Move Photos": "Di chuyển ảnh",
"Move Print Cell": "Di chuyển ô in",
"Move Print Cell to Page": "Chuyển ô in sang trang",
"Move to Group…": "Di chuyển vào nhóm…",
"Multi": "Đa vùng",
"Name the preset": "Đặt tên thiết lập sẵn",
"New Print Page": "Trang in mới",
"New group — Return": "Nhóm mới — nhấn Return",
"New spot (Return adds it here)": "Điểm mới (nhấn Return để thêm tại đây)",
"New template name": "Tên mẫu mới",
"Next Slide": "Trang chiếu tiếp theo",
"Next page": "Trang tiếp theo",
"No Matte": "Không bo viền",
"No change": "Không thay đổi",
"No effect matches": "Không có hiệu ứng phù hợp",
"No effect presets yet": "Chưa có thiết lập hiệu ứng sẵn",
"No lens data embedded in this file.": "Không có dữ liệu ống kính nhúng trong tệp này.",
"None yet: save the current settings as a template below.": "Chưa có mẫu nào: hãy lưu cài đặt hiện tại thành mẫu ở bên dưới.",
"Not loaded yet": "Chưa tải",
"Numbered JPEG files (name-001.jpg…) in a new folder named in the next step.": "Các tệp JPEG đánh số thứ tự (tên-001.jpg…) trong thư mục mới được đặt tên ở bước tiếp theo.",
"Offset": "Dịch lệch",
"One page per slide (the long side in pixels = points), with the slide duration and fade for the viewer's presentation mode.": "Mỗi trang trình chiếu là một trang (cạnh dài tính bằng pixel = point), kèm thời lượng và hiệu ứng chuyển mờ cho chế độ thuyết trình của trình xem.",
"One photo fills each page inside the margins.": "Mỗi ảnh lấp đầy một trang bên trong phần lề.",
"Open Settings": "Mở Cài đặt",
"Overlay color": "Màu lớp phủ",
"Overlays": "Lớp phủ",
"Override colour": "Ghi đè màu",
"Own duration (off: the slide duration)": "Thời lượng riêng (tắt: dùng thời lượng trang chiếu)",
"Page": "Trang",
"Page Options": "Tùy chọn trang",
"Pause / Resume Slideshow": "Tạm dừng / Tiếp tục trình chiếu",
"Pen Pressure": "Áp lực bút",
"Photos edited in HDR: JPEG with an HDR gain map (looks right everywhere, brighter highlights on HDR displays), AVIF as 10-bit, PNG and JPEG XL as 16-bit Rec. 2020 PQ; TIFF needs 32-bit float": "Ảnh chỉnh sửa ở chế độ HDR: JPEG kèm bản đồ khuếch đại HDR (hiển thị chuẩn ở mọi nơi và sáng rõ vùng cao quang trên màn hình HDR), AVIF 10-bit, PNG và JPEG XL ở dạng 16-bit Rec. 2020 PQ; TIFF cần định dạng dấu phẩy động 32-bit",
"Photos you import show up here. Nothing is copied or moved unless you choose to.": "Những ảnh bạn nhập sẽ hiển thị tại đây. Không có tệp nào bị sao chép hay di chuyển trừ khi bạn chọn.",
"Plain Black": "Đen tuyền",
"Playback": "Phát trình chiếu",
"Previous Slide": "Trang chiếu trước",
"Previous page": "Trang trước",
"Previous settings": "Cài đặt trước đó",
"Print Settings": "Cài đặt in",
"Print Templates": "Mẫu in",
"Print to PDF": "In thành PDF",
"Rating stars": "Sao đánh giá",
"Read Focus Points": "Đọc điểm lấy nét",
"Read Focus Points in the Background": "Đọc điểm lấy nét trong nền",
"Reading focus points": "Đang đọc điểm lấy nét",
"Recheck Preview-Only Raws": "Kiểm tra lại các tệp RAW chỉ có xem trước",
"Recognition": "Nhận diện",
"Refresh View": "Làm mới chế độ xem",
"Remove Folder Color Label": "Xóa nhãn màu thư mục",
"Remove region": "Xóa vùng",
"Rename Mask Effect": "Đổi tên hiệu ứng mặt nạ",
"Rename Mask Effect Group": "Đổi tên nhóm hiệu ứng mặt nạ",
"Rename Person": "Đổi tên người",
"Rename Person…": "Đổi tên người…",
"Rename Slideshow Template": "Đổi tên mẫu trình chiếu",
"Render behind image": "Kết xuất phía sau ảnh",
"Renders the next slides while the current one is up, so fades never wait. Off: each slide renders when it is due (less memory and work).": "Kết xuất trước các trang chiếu kế tiếp trong khi trang hiện tại đang hiển thị để hiệu ứng chuyển mờ luôn mượt. Tắt: chỉ kết xuất từng trang khi đến lượt (tiết kiệm bộ nhớ và tài nguyên hơn).",
"Reset Print Settings": "Đặt lại cài đặt in",
"Reset Sliders": "Đặt lại thanh trượt",
"Reset all edits": "Đặt lại mọi chỉnh sửa",
"Reset layout": "Đặt lại bố cục",
"Resize Print Cell": "Đổi kích thước ô in",
"Resize region": "Đổi kích thước vùng",
"Return creates this keyword and gives it to the selected photos": "Nhấn Return để tạo từ khóa này và gắn cho các ảnh đã chọn",
"Right": "Phải",
"Run face models on the CPU only": "Chỉ chạy mô hình khuôn mặt trên CPU",
"Same folder as original photo": "Cùng thư mục với ảnh gốc",
"Save Current Settings as New Effect Preset…": "Lưu cài đặt hiện tại thành thiết lập hiệu ứng mới…",
"Save Current Settings as New Preset…": "Lưu cài đặt hiện tại thành thiết lập sẵn mới…",
"Save Mask Effect": "Lưu hiệu ứng mặt nạ",
"Save Print Template": "Lưu mẫu in",
"Save Slideshow Template": "Lưu mẫu trình chiếu",
"Save as Template": "Lưu thành mẫu",
"Search effects": "Tìm hiệu ứng",
"Select Only Active Photo": "Chỉ chọn ảnh đang mở",
"Select a mask to apply or update presets.": "Chọn một mặt nạ để áp dụng hoặc cập nhật thiết lập sẵn.",
"Select a photo to preview its slide": "Chọn một ảnh để xem trước trang trình chiếu",
"Select a photo, then turn this on to fill the slide behind every photo with it.": "Chọn một ảnh, sau đó bật tùy chọn này để dùng ảnh đó làm nền trang chiếu phía sau mọi ảnh.",
"Select all": "Chọn tất cả",
"Select none": "Bỏ chọn tất cả",
"Separate several keywords with commas. Return gives them to the selected photos.": "Ngăn cách nhiều từ khóa bằng dấu phẩy. Nhấn Return để gắn cho các ảnh đã chọn.",
"Set Effect for New Masks": "Đặt hiệu ứng cho mặt nạ mới",
"Set Print Cell Photo": "Đặt ảnh cho ô in",
"Set Print Settings": "Đặt cài đặt in",
"Settings → Confirm before moving photos to another folder on disk turns it back on": "Có thể bật lại trong Cài đặt → Xác nhận trước khi di chuyển ảnh sang thư mục khác trên ổ đĩa",
"Shooting Data": "Thông số chụp",
"Show / hide": "Hiện / ẩn",
"Show Layout Image": "Hiện ảnh bố cục",
"Show every keyword of the selected photos": "Hiện mọi từ khóa của các ảnh đã chọn",
"Show fewer": "Hiện ít hơn",
"Show guides": "Hiện đường gióng",
"Show in Library": "Hiện trong Thư viện",
"Show mask": "Hiện mặt nạ",
"Show photos": "Hiện ảnh",
"Show the import review when a camera or card is connected": "Hiện hộp thoại xem lại nhập ảnh khi kết nối máy ảnh hoặc thẻ nhớ",
"Show this wheel's effect": "Hiện hiệu ứng của bánh xe màu này",
"Shows": "Hiển thị",
"Slide": "Trang chiếu",
"Slide duration": "Thời lượng trang chiếu",
"Slides use the slideshow's layout, overlays and intro and ending screens, in view order.": "Các trang chiếu sử dụng bố cục, lớp phủ cùng màn hình mở đầu và kết thúc của bản trình chiếu, theo thứ tự đang xem.",
"Slideshow Export Status": "Trạng thái xuất bản trình chiếu",
"Slideshow Layout Settings": "Cài đặt bố cục trình chiếu",
"Slideshow Options…": "Tùy chọn trình chiếu…",
"Slideshow Overlay Settings": "Cài đặt lớp phủ trình chiếu",
"Slideshow Playback Settings": "Cài đặt phát trình chiếu",
"Slideshow Slide Preview": "Xem trước trang trình chiếu",
"Slideshow Templates": "Mẫu trình chiếu",
"Slideshow Title Settings": "Cài đặt tiêu đề trình chiếu",
"Slideshow in the View menu plays the photos in view from the selected one. These settings are saved with the library.": "Trình chiếu trong trình đơn Xem sẽ phát các ảnh đang hiển thị bắt đầu từ ảnh đang chọn. Những cài đặt này được lưu cùng thư viện.",
"Smart albums update automatically: change their rules, or use Photo ▸ Delete Photo": "Album thông minh tự động cập nhật: hãy thay đổi quy tắc hoặc dùng Ảnh → Xóa ảnh",
"Solo Mode": "Chế độ đơn (Solo)",
"Specific folder": "Thư mục cụ thể",
"Spot": "Chấm",
"Stroke border": "Đường viền nét",
"Template name": "Tên mẫu",
"Templates": "Mẫu",
"Text overlays": "Lớp phủ văn bản",
"The ending screen, after the last photo.": "Màn hình kết thúc, hiển thị sau bức ảnh cuối cùng.",
"The export watermark, drawn on the photo and sized relative to it.": "Hình mờ xuất ảnh, được vẽ lên ảnh và co giãn tỷ lệ theo kích thước ảnh.",
"The intro plays once before the first photo; the ending after the last photo when Repeat is off. The identity plate is the one set under Overlays. Titles fade like slides and random order never moves them.": "Màn hình mở đầu phát một lần trước ảnh đầu tiên; màn hình kết thúc phát sau ảnh cuối cùng khi tắt Lặp lại. Biểu trưng định danh được lấy từ phần Lớp phủ. Tiêu đề chuyển mờ giống như trang chiếu và không bị đổi vị trí khi bật thứ tự ngẫu nhiên.",
"The intro screen, before the first photo.": "Màn hình mở đầu, hiển thị trước bức ảnh đầu tiên.",
"The layout image can't be shown": "Không thể hiển thị ảnh bố cục",
"The photos in view as slides, with the settings above. Progress shows in the activity stack.": "Xuất các ảnh đang xem thành trang trình chiếu với cài đặt ở trên. Tiến độ sẽ hiển thị trong ngăn hoạt động.",
"The selected photo as a slide. Playback fills the screen; the aspect preview only changes this preview.": "Hiển thị ảnh đang chọn dưới dạng trang trình chiếu. Khi phát sẽ lấp đầy màn hình; xem trước tỷ lệ chỉ thay đổi khung xem trước này.",
"Their files and XMP sidecars move on disk. Edit → Undo moves them back.": "Các tệp ảnh và tệp phụ XMP sẽ được di chuyển trên ổ đĩa. Chọn Chỉnh sửa → Hoàn tác để chuyển về chỗ cũ.",
"Their photos in the grid": "Ảnh của họ trong lưới",
"These photos are only in memory. Open a library on disk and import the catalog again to save them.": "Những ảnh này chỉ đang lưu trong bộ nhớ. Hãy mở một thư viện trên ổ đĩa và nhập lại danh mục để lưu chúng.",
"This page setup is not valid": "Thiết lập trang này không hợp lệ",
"This raw is now developed from its raw data": "Tệp RAW này hiện đã được xử lý từ dữ liệu thô",
"This raw variant still can't be decoded": "Biến thể RAW này hiện vẫn chưa thể giải mã",
"This row covers more than one disk: drop on a folder inside it": "Dòng này bao gồm nhiều ổ đĩa: hãy thả vào một thư mục cụ thể bên trong",
"This screen is off: turn it on under Titles to play it.": "Màn hình này đang tắt: hãy bật trong mục Tiêu đề để phát.",
"Thumbnail size": "Kích thước ảnh thu nhỏ",
"Import Thumbnail Size": "Kích thước ảnh thu nhỏ khi nhập",
"Click to type a value, drag to change it": "Nhấp để nhập giá trị, kéo để thay đổi"
"Tidying the thumbnail cache": "Đang dọn dẹp bộ nhớ đệm ảnh thu nhỏ",
"Title bar": "Thanh tiêu đề",
"Title text": "Văn bản tiêu đề",
"Titles": "Tiêu đề",
"Tokens: {file}, {name}, {title}, {caption}, {date}, {exposure}, {iso}, {focal}, {camera}, {lens}, {rating}, {creator}, {copyright}. Other text shows as typed.": "Thẻ đại diện: {file}, {name}, {title}, {caption}, {date}, {exposure}, {iso}, {focal}, {camera}, {lens}, {rating}, {creator}, {copyright}. Các văn bản khác sẽ hiển thị đúng như bạn nhập.",
"Tool Overlay": "Lớp phủ công cụ",
"Top": "Trên",
"Tracking": "Giãn ký tự",
"Ungrouped": "Chưa phân nhóm",
"Unknown date": "Không rõ ngày",
"Unnamed face": "Khuôn mặt chưa đặt tên",
"Update Mask Effect": "Cập nhật hiệu ứng mặt nạ",
"Update Slideshow Template": "Cập nhật mẫu trình chiếu",
"Use export watermark": "Dùng hình mờ khi xuất",
"Use selected photo": "Dùng ảnh đang chọn",
"Viewers that don't read the PNG cICP chunk show PQ values as sRGB: flat and washed out. For a picture that looks right everywhere, use JPEG (gain map).": "Các trình xem không đọc khối cICP của PNG sẽ hiển thị giá trị PQ như sRGB: nhợt nhạt và thiếu tương phản. Để ảnh hiển thị chuẩn ở mọi nơi, hãy dùng JPEG (kèm bản đồ khuếch đại).",
"When pins show on the photo (Shift+H cycles)": "Khi ghim hiển thị trên ảnh (nhấn Shift+H để chuyển đổi)",
"White on Black": "Trắng trên nền đen",
"Whole names": "Toàn bộ tên",
"Wide": "Rộng",
"Write Waiting XMP Sidecars": "Ghi các tệp phụ XMP đang chờ",
"Wrote the XMP sidecars that were waiting": "Đã ghi xong các tệp phụ XMP đang chờ",
"Your library is empty": "Thư viện của bạn đang trống",
"Your name or studio": "Tên của bạn hoặc studio",
"Your own templates need a settings folder, which this build doesn't have; the built-in ones work.": "Mẫu riêng của bạn cần có thư mục cài đặt mà bản dựng này không có; các mẫu tích hợp sẵn vẫn hoạt động bình thường.",
"Your templates": "Mẫu của bạn",
"Zone": "Vùng",
"Zoom to Focus Point": "Phóng tới điểm lấy nét",
"Zoom to fill frame": "Phóng lấp đầy khung",
"cells": "ô",
"cells overlap": "các ô bị chồng lấp",
"current edits": "chỉnh sửa hiện tại",
"new keyword": "từ khóa mới",
"or drop a .onnx file on the window": "hoặc kéo thả tệp .onnx vào cửa sổ",
"or drop photos and folders into this window": "hoặc kéo thả ảnh và thư mục vào cửa sổ này",
"or drop photos into this window": "hoặc kéo thả ảnh vào cửa sổ này",
"size": "kích thước",
"source": "nguồn",
"★ Favorites": "★ Yêu thích",
"Always merge into the open library": "Luôn gộp vào thư viện đang mở",
"Another library was opened since this window appeared: nothing was imported": "Một thư viện khác đã được mở kể từ khi cửa sổ này xuất hiện: chưa nhập mục nào",
"Ask me": "Hỏi tôi",
"Ask me lists your recent libraries at launch. Holding Alt (Option on a Mac) as the window appears asks once.": "Tùy chọn Hỏi tôi sẽ liệt kê các thư viện gần đây khi khởi động. Giữ phím Alt (Option trên máy Mac) khi cửa sổ xuất hiện để hỏi một lần.",
"Ask where to import it": "Hỏi nơi nhập danh mục",
"At launch": "Khi khởi động",
"Burst: how alike (loose … strict)": "Chụp liên tiếp: mức độ tương đồng (lỏng … chặt)",
"Burst: shots at most this far apart": "Chụp liên tiếp: khoảng cách tối đa giữa các lần chụp",
"Camera & Lens": "Máy ảnh & Ống kính",
"Checking recent libraries": "Đang kiểm tra các thư viện gần đây",
"Choose the library to open.": "Chọn thư viện cần mở.",
"Click to hide clipping warnings for shadows and highlights.": "Nhấp để ẩn cảnh báo cháy sáng và bết tối.",
"Click to show clipping warnings for shadows and highlights.": "Nhấp để hiện cảnh báo cháy sáng và bết tối.",
"Close a dialog by clicking outside it": "Đóng hộp thoại khi nhấp ra bên ngoài",
"Create Library and Import": "Tạo thư viện và nhập",
"Create a new library": "Tạo thư viện mới",
"Dimensions": "Kích thước",
"Don't ask again (always merge into the open library)": "Không hỏi lại (luôn gộp vào thư viện đang mở)",
"Grid: add the next photo to the selection": "Lưới: thêm ảnh tiếp theo vào vùng chọn",
"Grid: add the previous photo to the selection": "Lưới: thêm ảnh trước đó vào vùng chọn",
"Grid: first photo of the view": "Lưới: ảnh đầu tiên trong khung xem",
"Grid: last photo of the view": "Lưới: ảnh cuối cùng trong khung xem",
"Hide this wheel's effect": "Ẩn hiệu ứng của vòng màu này",
"It is not a denoise model LightCraft understands": "Đây không phải là mô hình khử nhiễu mà LightCraft hỗ trợ",
"Last opened": "Mở lần cuối",
"LightCraft opens the new library, then imports the catalog into it. Its folder must be new or empty.": "LightCraft sẽ mở thư viện mới rồi nhập danh mục vào đó. Thư mục của thư viện phải là thư mục mới hoặc trống.",
"Loupe Info 1": "Thông tin kính lúp 1",
"Loupe Info 2": "Thông tin kính lúp 2",
"Loupe Overlay": "Lớp phủ kính lúp",
"Loupe View": "Chế độ kính lúp",
"Lower it when a panning or moving burst splits into several groups.": "Giảm giá trị này khi loạt chụp lia máy hoặc chuyển động bị tách thành nhiều nhóm.",
"M50, R100 and R8. CR3 files the decoder can't read yet still open from their embedded JPEG, as before.": "M50, R100 và R8. Các tệp CR3 mà bộ giải mã chưa đọc được vẫn mở từ ảnh JPEG nhúng như trước.",
"My Preset": "Thiết lập sẵn của tôi",
"No clipping detected in this preview.": "Không phát hiện vùng cháy sáng hay bết tối trong bản xem trước này.",
"No faces by that name": "Không có khuôn mặt nào mang tên đó",
"No horizon or vertical lines to level by": "Không tìm thấy đường chân trời hoặc đường thẳng đứng để cân chỉnh",
"No named people yet. Name the faces below to start.": "Chưa có người nào được đặt tên. Hãy đặt tên cho các khuôn mặt bên dưới để bắt đầu.",
"No people yet": "Chưa có người nào",
"No person by that name": "Không có người nào mang tên đó",
"No recent libraries. Open one from a folder, or make a new one.": "Không có thư viện gần đây. Hãy mở một thư viện từ thư mục hoặc tạo thư viện mới.",
"No unnamed faces. Faces found in your photos appear here until you name them.": "Không có khuôn mặt chưa đặt tên. Các khuôn mặt tìm thấy trong ảnh sẽ xuất hiện tại đây cho đến khi bạn đặt tên.",
"Not answering yet: the drive may be asleep or offline": "Chưa phản hồi: ổ đĩa có thể đang ở chế độ ngủ hoặc ngoại tuyến",
"Not found: moved, renamed or on a disconnected drive": "Không tìm thấy: đã di chuyển, đổi tên hoặc nằm trên ổ đĩa đã ngắt kết nối",
"Open": "Mở",
"Open Another…": "Mở thư viện khác…",
"Open a Library": "Mở thư viện",
"Open a library first, then drop the presets again": "Hãy mở một thư viện trước, sau đó thả lại các thiết lập sẵn",
"Open now": "Mở ngay",
"Open the last library": "Mở thư viện gần nhất",
"Remove from List": "Xóa khỏi danh sách",
"Show Info Overlay": "Hiện lớp phủ thông tin",
"Show briefly when photo changes": "Hiện thoáng qua khi đổi ảnh",
"Show in Folders": "Hiển thị trong Thư mục",
"Show message when loading or rendering photos": "Hiện thông báo khi đang tải hoặc kết xuất ảnh",
"The catalog's photos, collections and edits join the ones already in this library.": "Ảnh, bộ sưu tập và các chỉnh sửa của danh mục sẽ được gộp vào thư viện hiện tại.",
"The import reads the catalog without changing it. Next, choose whether its photos, edits, keywords and collections join the library open now or go into a new library.": "Quá trình nhập chỉ đọc danh mục mà không làm thay đổi danh mục gốc. Tiếp theo, hãy chọn gộp ảnh, chỉnh sửa, từ khóa và bộ sưu tập vào thư viện đang mở hoặc đưa vào một thư viện mới.",
"The library is empty: the catalog's photos, collections and edits become its first.": "Thư viện đang trống: ảnh, bộ sưu tập và các chỉnh sửa của danh mục sẽ là những mục đầu tiên trong thư viện.",
"The library itself stays where it is.": "Bản thân thư viện vẫn giữ nguyên ở vị trí hiện tại.",
"The library's catalog can't be read:": "Không thể đọc danh mục của thư viện:",
"The photos are imported once a library is open": "Ảnh sẽ được nhập ngay khi mở một thư viện",
"There is no LightCraft library in this folder any more": "Không còn thư viện LightCraft nào trong thư mục này nữa",
"This folder can't be read:": "Không đọc được thư mục này:",
"This is a file, not a library folder": "Đây là một tệp, không phải thư mục thư viện",
"This library couldn't be checked": "Không thể kiểm tra thư viện này",
"This library couldn't be checked:": "Không thể kiểm tra thư viện này:",
"To be asked again: Settings → General → When importing a Lightroom catalog.": "Để được hỏi lại: Cài đặt → Chung → Khi nhập danh mục Lightroom.",
"Tool Overlay: Always": "Lớp phủ công cụ: Luôn hiện",
"Tool Overlay: Auto": "Lớp phủ công cụ: Tự động",
"Tool Overlay: Never": "Lớp phủ công cụ: Không bao giờ",
"Tool Overlay: Selected": "Lớp phủ công cụ: Khi chọn",
"Use Defaults": "Dùng mặc định",
"View Options": "Tùy chọn hiển thị",
"View Options…": "Tùy chọn hiển thị…",
"View → View Options chooses the lines Info 1 and Info 2 show.": "Xem → Tùy chọn hiển thị để chọn các dòng hiển thị trong Thông tin 1 và Thông tin 2.",
"When importing a Lightroom catalog": "Khi nhập danh mục Lightroom",
"Width & Height": "Chiều rộng & Chiều cao",
"Check for Updates…": "Kiểm tra cập nhật…",
"Checking for updates…": "Đang kiểm tra cập nhật…",
"LightCraft {version} is currently the newest version available.": "LightCraft {version} hiện là phiên bản mới nhất.",
"Could not check for updates:\n{error}": "Không thể kiểm tra cập nhật:\n{error}",
"LightCraft Updates": "Cập nhật LightCraft",
"Face recognition is on": "Nhận diện khuôn mặt đã bật",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "Nhận diện khuôn mặt đang tắt. Hãy bật để nhận gợi ý tên và xem các khuôn mặt giống nhau cùng nhau.",
"Turn on": "Bật",
"Set up face recognition": "Thiết lập nhận diện khuôn mặt",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "Nhận diện khuôn mặt cần một mô hình để gợi ý tên: tải xuống một lần, trong Cài đặt.",
"Turn on name suggestions": "Bật gợi ý tên",
"Set up name suggestions…": "Thiết lập gợi ý tên…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "已添加 {n} 张照片{:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "Lightroom 目录“{catalog}”要导入到哪里?",
"Merge into the open library “{library}” ({count} photo{})": "合并到当前打开的图库“{library}”({count} 张照片){:.0}",
"Photo: {name}": "照片:{name}"
"Photo: {name}": "照片:{name}",
"Panel layout could not be restored: {error}": "无法恢复面板布局:{error}",
"Panel move was not applied: {error}": "面板移动未应用:{error}",
"{name} is installed": "{name} 已安装",
"{name} is installed and in use: face recognition is on": "{name} 已安装并在使用:人脸识别已开启"
}
+167 -1
View File
@@ -495,6 +495,7 @@
"Faded Matte": "褪色哑光",
"Faded Slide": "褪色正片",
"Faded Urban": "褪色都市",
"Favorite": "收藏",
"Favorite Preset": "收藏预设",
"Favorite Profile": "收藏配置文件",
"Favorites": "收藏夹",
@@ -1715,6 +1716,7 @@
"Denoise Settings": "降噪设置",
"Denoise all photos with an Amount": "对所有设置了数量的照片进行降噪",
"Downloaded and checked. Installing…": "已下载并校验完成。正在安装…",
"The download failed": "下载失败。",
"Failed its last test": "上次检测未通过",
"Graphics card": "显卡",
"I have read these terms and accept them for my own use": "我已阅读这些条款,并为个人使用表示接受",
@@ -2214,5 +2216,169 @@
"An import is running. Drop photos when it has finished": "正在导入。导入完成后再拖放照片",
"Finish Lightroom catalog import before adding photos": "添加照片前,请先完成 Lightroom 目录的导入",
"Thumbnail size": "缩略图大小",
"Import Thumbnail Size": "导入缩略图大小"
"Import Thumbnail Size": "导入缩略图大小",
"\"saved in memory but not written to disk\", the top bar shows a warning, and LightCraft keeps retrying until the": "“已保存在内存中但未写入磁盘”,顶栏会显示警告,LightCraft 会持续重试,直到",
"#106): a DNG is checked against the raw data, written to a temp file, synced and read back before it gets its": "#106):DNG 会先与原始数据核对,写入临时文件、同步并读回校验,然后才获得其",
"(`gpuReason`, `gpuFallback`), Help ▸ System Info and Settings ▸ Performance say why the GPU isn't": "(`gpuReason`、`gpuFallback`)——帮助 → 系统信息 和 设置 → 性能 会说明为何未使用 GPU",
"(e.g. D750, D780, D850, D7500, Z 50) no longer render nearly black or with crushed shadows: their black level was": "(如 D750、D780、D850、D7500、Z 50)不再近乎全黑或阴影死黑:其黑电平之前被",
"(issue #94): an HTTP request from a web page can no longer carry a command in its body. Lines are capped at": "(问题 #94):网页发出的 HTTP 请求不再能在请求体中携带命令。每行长度上限为",
"123 on studio-mac)\") instead of letting both write and silently drop each other's edits. A crash never leaves the": "123(位于 studio-mac)\"),而不是让双方同时写入、悄然丢弃彼此的编辑。崩溃绝不会让",
"1620 × 1080 preview, and import with their metadata: capture time, camera, lens, exposure, GPS and XMP. Their raw": "1620 × 1080 预览,并连同其元数据一起导入:拍摄时间、相机、镜头、曝光、GPS 和 XMP。它们的原始数据",
"23 new built-in presets: Portrait, Landscape, Urban, Food, Seasons, Vintage and B&W toners.": "新增 23 款内置预设:人像、风光、城市、美食、四季、复古和黑白调色。",
"4 MiB and connections at 16.": "4 MiB,连接数上限为 16。",
"630 drivers): on Windows the window and GPU rendering use DirectX 12 only and never load the Vulkan driver unless": "630 显卡驱动):在 Windows 上,窗口和 GPU 渲染仅使用 DirectX 12,除非明确要求,否则绝不加载 Vulkan 驱动",
"`img_1-1.JPG`; on case-insensitive volumes the case change still goes through.": "`img_1-1.JPG`;在大小写不敏感的卷上,大小写更改仍会生效。",
"`Photos/2026/20260114/20260114_001.jpg`) together with their XMP sidecars; each original leaves the card only after its": "`Photos/2026/20260114/20260114_001.jpg`)连同其 XMP 附属文件;每张原图只有在其",
"A change that can't be saved to disk (full or unplugged drive) is no longer silent: the command reports": "无法保存到磁盘的更改(磁盘已满或已拔出)不再无声失败:命令会报告",
"a full drive) no longer counts as built and Build Smart Previews replaces it.": "(磁盘已满)不再被算作已构建,可用“构建智能预览”重新构建。",
"A library is open in one program at a time (issue #99): opening a library that LightCraft or `lightcraft-cli` already": "一个图库同时只能由一个程序打开(问题 #99):打开 LightCraft 或 `lightcraft-cli` 已打开的图库时",
"A save that fails part-way (a full disk, a network share that drops) no longer looks like a damaged catalog": "保存中途失败(磁盘已满、网络共享断开)不再表现为图库损坏",
"A sleeping NAS, a dropped network share or a USB drive spinning up no longer freezes the window (issue #104):": "休眠的 NAS、断开的网络共享或正在启动的 USB 硬盘不再让窗口卡死(问题 #104):",
"afterwards (issue #101): the partial write is cut off before LightCraft retries, so the next launch replays every": "之后(问题 #101):部分写入会在 LightCraft 重试前被截断,因此下次启动会重放所有",
"again. Change the period (or turn it off) in Settings → Performance.": "在 设置 → 性能 中更改周期(或将其关闭)。",
"against the library's originals no longer scans the whole library when nothing is at that path.": "与图库原图核对时,若该路径下没有文件,不再扫描整个图库。",
"AI masks with SAM 3 (Object and Describe in the Masking panel): click an object to select it (⌥-click leaves a": "AI 蒙版使用 SAM 3(蒙版面板中的“对象”和“描述”):点击对象即可选中(⌥-点击会留下一个",
"already has a `thumbs/` folder of other pictures no longer loses them when the cache is trimmed or cleared.": "已包含其他图片 `thumbs/` 文件夹的图库,在缓存清理时不再丢失这些图片。",
"and checks the file before using it. Masks keep their selection, so they render and export without the model.": "并在使用前检查文件。蒙版会保留其选区,因此无需模型即可渲染和导出。",
"and every imported photo as one zip, and File ▸ Restore Library from Backup… brings it back (the current library": "以及每张导入的照片打包为一个 zip,文件 → 从备份恢复图库… 可将其还原(当前图库",
"and never freezes the window. It is optional and not part of LightCraft (Meta's SAM License, about 3.4 GB): the": "并且绝不会让窗口卡死。它是可选的,不属于 LightCraft 的一部分(Meta 的 SAM 许可,约 3.4 GB):",
"as `<name>.corrupt-<time>` and you're told; one that can't be read (e.g. locked by another program) is left alone": "保存为 `<name>.corrupt-<时间>` 并会收到提示;无法读取的(如被其他程序锁定)则保持原样",
"asked to. `LIGHTCRAFT_GPU_BACKEND=dx12 | vulkan | metal | off` (or wgpu's `WGPU_BACKEND`, which GPU rendering": "按需使用。`LIGHTCRAFT_GPU_BACKEND=dx12 | vulkan | metal | off`(或 wgpu 的 `WGPU_BACKEND`,GPU 渲染",
"Auto Sync: edits apply to every selected photo. Auto B&W mix. Automatic versions.": "自动同步:编辑应用于每张选中的照片。自动黑白混合。自动版本。",
"Auto-Tag from Tracklog: GPS locations for your photos from a GPX track log, matched by capture time.": "从轨迹记录自动标记:根据 GPX 轨迹记录中的 GPS 位置,按拍摄时间为照片添加定位。",
"Browser version (experimental), keeping a library safe (issue #107): File ▸ Back Up Library… downloads the catalog": "浏览器版本(实验性)下的图库安全(问题 #107):文件 → 备份图库… 会下载目录",
"bundles of any of these — whole folders at once, grouped by pack. Masks inside presets come along.": "这些类别的合集——可一次导入整个文件夹,按包分组。预设中的蒙版会一并导入。",
"camera no longer gets baked in. Photos already imported as \"preview only\" switch over on Reload. (Files that": "相机设置不再被固化进照片。已以“仅预览”方式导入的照片会在重新加载后切换。",
"Canon CR2 photos from the EOS 7D, 50D, 60D, 550D, 600D, 1200D, 1300D, 5D Mark II and 1D Mark IV (and other": "来自 EOS 7D、50D、60D、550D、600D、1200D、1300D、5D Mark II 和 1D Mark IV(及其他",
"Canon CR3 files show their full-size embedded JPEG (e.g. 6960 × 4640 on an EOS R6 Mark III) instead of the": "Canon CR3 文件显示其全尺寸内嵌 JPEG(如 EOS R6 Mark III 上的 6960 × 4640),而不是",
"Canon EOS R5 Mark II C-RAW files that opened as \"preview only\" (more than half of them, depending on the": "此前只能以“仅预览”方式打开的 Canon EOS R5 Mark II C-RAW 文件(其中超过半数,视",
"change. Catalogs already holding such a fragment load in full. Quitting while the catalog log can't be written": "变更。已包含此类片段的目录会完整加载。在目录日志无法写入时退出",
"changes couldn't be saved tries once more, then asks: Try Saving Again, Quit Anyway or Cancel.": "更改未能保存时,会再尝试一次,然后询问:再次尝试保存、仍要退出 或 取消。",
"channel or MCP, a merge preview path or `lightcraft-cli render IMG.jpg -o IMG.jpg` is refused with a clear": "通道或 MCP,合并预览路径或 `lightcraft-cli render IMG.jpg -o IMG.jpg` 会被明确拒绝,并给出清晰的",
"checked against the content read from the card. A copy that fails or differs is removed and reported as a failed": "与从存储卡读取的内容进行核对。复制失败或内容不一致的文件会被移除,并报告为复制失败",
"Cmd+Shift+R, keeps the photo and clears its edits.)": "Cmd+Shift+R,保留照片并清除其编辑。)",
"colour and tone look fitted to the camera's own JPEG, as Nikon and Sony raws do, framed in the aspect ratio set in": "色彩和色调外观与相机自带的 JPEG 相匹配,如同 Nikon 和 Sony 的 RAW 文件,并按设置的宽高比取景",
"Colour-label filter with several labels at once; expandable folder tree in Local.": "可同时按多个颜色标签筛选;“本地”中可展开的文件夹树。",
"Colour-range masks: click the photo to sample. Luminance ranges: range bar, smoothness, luminance map.": "颜色范围蒙版:点击照片取样。亮度范围:范围条、平滑度、亮度映射。",
"Compressed Nikon NEFs (lossless and lossy compressed, 12- and 14-bit — e.g. D3200, D5100, D7000, D750, D850, Z 50)": "压缩的 Nikon NEF(无损和有损压缩,12 位和 14 位——如 D3200、D5100、D7000、D750、D850、Z 50)",
"Convert to DNG, Copy as DNG, Photo Merge and smart previews no longer write straight to the final file (issue": "转换为 DNG、复制为 DNG、照片合并和智能预览不再直接写入最终文件(问题",
"copy is verified and in the library. Duplicates and files that fail stay where they were.": "复制完成后经过验证并入库。重复文件及失败的文件保持原位。",
"Copyright status, rights usage terms and copyright info URL in Info, metadata presets and exports.": "信息面板、元数据预设和导出中包含版权状态、权利使用条款和版权信息 URL。",
"data is not decoded yet, so they stay preview-only. For CR3s imported earlier, Photo ▸ Reload from Disk (now in": "数据尚未解码,因此仍为仅预览。对于之前导入的 CR3,照片 → 从磁盘重新加载(现位于",
"edge are cropped away, and \"12-bit uncompressed\" files are no longer clipped. The RX100 series renders much closer": "边缘被裁掉,且“12 位未压缩”文件不再被截断。RX100 系列渲染效果与",
"Edge setting, and get a sharper zoomed-in pass in the background. The model runs inside LightCraft in pure Rust": "“边缘”设置,并在后台获得更清晰的放大渲染。该模型以纯 Rust 在 LightCraft 内部运行",
"Edit in External Editor (⇧⌘E): a 16-bit TIFF copy, stacked, refreshed when you come back.": "在外部编辑器中编辑(⇧⌘E):生成 16 位 TIFF 副本、与原图堆叠,返回后自动刷新。",
"every format the cameras write. Most bodies opened as preview only before: GH1–GH5, the G, GX, GF, GM, FZ, LX and": "相机支持写入的每一种格式。此前大多数机身只能以仅预览方式打开:GH1–GH5,以及 G、GX、GF、GM、FZ、LX 系列",
"Export file names use the Rename Photos tokens ({title}, {seq:2}, {date:%Y-%m-%d}…), plus new {num}, {folder}, {lens}, {iso}, {rating}, {creator}.": "导出文件名支持“重命名照片”的标记({title}、{seq:2}、{date:%Y-%m-%d}…),并新增 {num}、{folder}、{lens}、{iso}、{rating}、{creator}。",
"export. The catalog, XMP sidecars, settings, DNGs, merges, smart previews and the copies an import makes are still": "导出。目录、XMP 附属文件、设置、DNG、合并结果、智能预览以及导入产生的副本仍会",
"Exported files are written to a temp file and then renamed into place, so a full disk or an unplugged drive": "导出文件会先写入临时文件,再重命名到位,因此磁盘已满或硬盘被拔出",
"Exports and renders never write over a photo's original (issue #93): exporting into the photo's own folder with": "导出和渲染绝不会覆盖照片原图(问题 #93):当导出到照片所在文件夹且使用",
"Exports are never black because of the GPU (issue #78): a GPU render that runs out of device": "导出永远不会因为 GPU 而变黑(问题 #78):GPU 渲染耗尽设备",
"Faster exports and card imports, with the same protection for what can't be recreated (issue #134): exports,": "更快的导出和存储卡导入,对无法重建的内容提供同等保护(问题 #134):导出、",
"fields in and keeps the rest — e.g. that application's develop settings and edit history — byte for byte. A": "字段合入其中,其余部分(如该应用的显影设置和编辑历史)则逐字节保留。",
"file (Sony stores them only in scrambled maker-note data on these bodies), the few columns of padding at the right": "文件(Sony 在这些机身上仅将数据存储在加密的制造商注释数据中),右侧几列填充像素",
"first time you use an AI mask, LightCraft asks before downloading it, shows the progress, can cancel and resume,": "首次使用 AI 蒙版时,LightCraft 会在下载前征询同意,显示进度,可取消和续传,",
"for the session instead of being overwritten with defaults. The app settings (`ui.json`, which remembers your": "在本次会话中生效,而不会被默认值覆盖。应用设置(`ui.json`,记录您的",
"gets -1, -2… instead of being replaced.": "会得到 -1、-2… 而不是被替换。",
"greenish neutral rendering (issue #150); white balance is adjusted relative to the as-shot look. 12-bit NEFs": "发绿的中间调渲染(问题 #150);白平衡会相对于拍摄时的外观进行调整。12 位 NEF",
"has open — on this computer or another one sharing the folder — says who has it (\"already open in LightCraft (process": "正在打开——在本机或共享该文件夹的其他电脑上——会说明是谁在打开(“已在 LightCraft 中打开(进程",
"how to restore it or delete it permanently and import it afresh. (For a fresh start on a photo, Reset Edits,": "如何恢复它、永久删除它,或重新导入。(若要重新开始编辑某张照片,可使用“重置编辑”,",
"If your library can't be opened at launch (open in another program, unreadable, on a drive that isn't connected,": "如果您的图库在启动时无法打开(被其他程序占用、无法读取、位于未连接的驱动器上,",
"ignored before) chooses the graphics backend; `off` renders on the CPU. The GPU now starts after the window": "此前会被忽略)选择图形后端;`off` 表示使用 CPU 渲染。GPU 现在会在窗口",
"immutable, and HOSTING.md describes the actual build.": "不可变,HOSTING.md 描述了实际构建方式。",
"Import presets from other editors: XMP presets, classic `.lrtemplate` files, \"DNG presets\" from mobile apps and `.zip`": "从其他编辑器导入预设:XMP 预设、经典 `.lrtemplate` 文件、来自手机应用的“DNG 预设”以及 `.zip`",
"import — so \"import complete\" means the copies are good before you format the card — and a name that is taken": "导入——因此“导入完成”意味着在格式化存储卡前副本完好——若名称已被占用",
"Import ▸ Copy verifies every copy, like Move (issue #96): each file is written as a new file, synced to disk and": "导入 → 复制 会像移动一样校验每一份副本(问题 #96):每个文件都作为新文件写入、同步到磁盘并",
"Import ▸ Move: photos go into the destination (with the same folders and renaming as Copy, e.g.": "导入 → 移动:照片移入目标位置(文件夹结构和重命名规则与“复制”相同,例如",
"Import: copy to any folder, by day / by month / one folder, rename on import, metadata preset, Copy as DNG.": "导入:复制到任意文件夹、按天/按月/单文件夹、导入时重命名、元数据预设、复制为 DNG。",
"imported as \"preview only\" switch over on Reload.": "以“仅预览”方式导入的照片会在重新加载后切换。",
"imported earlier switch over with Photo ▸ Reload from Disk.": "之前导入的照片可通过 照片 → 从磁盘重新加载 切换。",
"in short pieces so slow integrated GPUs aren't reset by their watchdog. `ui.inspect` → `perf`": "分小段发送,以免慢速集成 GPU 被其看门狗重置。`ui.inspect` → `perf`",
"incomplete is redone on the CPU — the file is the same image either way. Work is sent to the GPU": "未完成的渲染会在 CPU 上重做——无论哪种方式,文件都是同一张图像。任务会发送给 GPU",
"is kept). A failed save (storage full) now shows the unsaved warning and is retried, a photo that can't be stored": "会被保留)。保存失败(存储已满)现在会显示未保存警告并重试,无法存储的照片",
"is refused and nothing is overwritten.": "会被拒绝,不会覆盖任何内容。",
"is up, and only when Settings ▸ Performance ▸ Use the GPU for rendering is on; if LightCraft ever dies while": "已启动,并且仅在 设置 → 性能 → 使用 GPU 渲染 开启时生效;如果 LightCraft 在",
"isn't added, a second tab shows a message instead of overwriting the first, `?reset` asks first, and the page says": "未添加,第二个标签页会显示提示而不是覆盖第一个,`?reset` 会先询问,页面会显示",
"it away from the other (issue #92). Find Missing Photos also finds renamed files by their content, prefers a content match": "将其与另一个区分开(问题 #92)。“查找缺失的照片”也会按内容查找重命名的文件,优先内容匹配",
"its photos and XMP sidecars, and the photos point at it again. If something now occupies the old place, the undo": "其照片和 XMP 附属文件随之移动,照片再次指向新位置。如果原位置已被占用,撤销操作",
"JPEG with the same name (`IMG_0001.CR3` + `IMG_0001.JPG`) no longer share one sidecar: the raw keeps `IMG_0001.xmp`,": "同名的 JPEG(`IMG_0001.CR3` + `IMG_0001.JPG`)不再共用一个附属文件:RAW 文件保留 `IMG_0001.xmp`,",
"layout is read from each file instead of assumed.": "布局会从每个文件中读取,而不是假设。",
"leaves no DNG and keeps the raw. Smart previews are written the same way; a damaged one (cut short by a crash or": "不留下 DNG,并保留原始文件。智能预览采用同样的写入方式;损坏的(因崩溃或",
"library locked: the lock is the operating system's and goes away with the program.": "图库已锁定:该锁由操作系统持有,随程序退出而解除。",
"library) are written atomically and saved as soon as you open another library, not only at quit. Quitting while": "图库)采用原子写入,并在您打开另一个图库时立即保存,而不仅仅在退出时。在退出时如果",
"LightCraft 0.2.0 and older refuse it (\"unsupported format … v2\").": "LightCraft 0.2.0 及更早版本会拒绝它(“不支持的格式 … v2”)。",
"LightCraft no longer crashes at launch on Windows PCs whose Vulkan driver is broken (issue #136, e.g. some Intel UHD": "LightCraft 不再在 Vulkan 驱动损坏的 Windows 电脑上启动时崩溃(问题 #136,例如某些 Intel UHD",
"longer just says \"duplicate skipped\": it opens the side panel on Recently Deleted with the photo selected and says": "不再只是提示“已跳过重复项”:它会打开“最近删除”的侧边面板并选中该照片,然后说明",
"Lossy DNG files and Smart Previews open as raw photos.": "有损 DNG 文件和智能预览会以 RAW 照片形式打开。",
"lost everything at quit; a temporary session shows a banner the whole time and never writes to your library.": "退出时会丢失所有内容;临时会话会一直显示横幅,并且绝不会写入您的图库。",
"Luminar looks: `.lmp` files and `.mplumpack` collections import as presets (grouped by collection); the sliders": "Luminar 风格:`.lmp` 文件和 `.mplumpack` 合集可作为预设导入(按合集分组);滑块",
"memory, exceeds the GPU's buffer limits, hits a driver error or reset, or comes back": "内存、超出 GPU 的缓冲区限制、遇到驱动错误或重置,或者恢复",
"message, and the original is left byte for byte. Ordinary earlier exports are still overwritten when asked.": "消息,原图则逐字节保留。早前的普通导出在用户要求时仍会被覆盖。",
"mid-batch: the error lists them (old → new) and the library points at their new names (an undoable partial rename),": "批处理中途:错误会列出它们(旧名 → 新名),图库指向其新名称(可撤销的部分重命名),",
"models whose sensor starts on a green-blue row) no longer come out magenta (issue #85): the colour-filter": "传感器从绿蓝行开始的机型)不再偏洋红(问题 #85):色彩滤镜",
"name (never replacing a file), and only then is the photo relinked or the raw copy removed — a failed write": "名称(绝不替换现有文件),然后才重新关联照片或移除 RAW 副本——写入失败时",
"never leaves a truncated file; the XMP sidecar of an \"Original\" export follows the \"If file exists\" choice too.": "绝不会留下截断的文件;“原始”导出的 XMP 附属文件也遵循“如果文件已存在”选项。",
"Nikon NEFs start from a colour and tone look fitted to the camera's own JPEG, as Sony ARWs do, instead of a muted,": "Nikon NEF 从与相机自带 JPEG 匹配的色彩和色调外观开始,如同 Sony ARW,而不是灰暗、",
"Nikon splits into two differently compressed halves still use the preview for now.)": "Nikon 分成两半、压缩方式不同的文件目前仍使用预览。)",
"now develop from the raw data instead of the camera's embedded JPEG, so a B&W or other picture style set in the": "现在从原始数据而非相机内嵌 JPEG 进行显影,因此相机中设置的黑白或其他照片风格",
"Photo menu. The filmstrip has the photo context menu too. Adding a file again that is in Recently Deleted no": "照片菜单。胶片条也具有照片右键菜单。再次添加已在“最近删除”中的文件时,不再",
"Photos in Recently Deleted can be restored from the app: right-click ▸ Restore (or Delete Permanently), also in the": "“最近删除”中的照片可以从应用中恢复:右键 → 恢复(或 永久删除),也位于",
"Photos); importing (also by drag and drop), Find Missing Photos, Build / Discard Smart Previews, the Rename preview,": "照片);导入(也支持拖放)、“查找缺失的照片”、“构建/丢弃智能预览”、“重命名预览”、",
"preserving RAW editing & full-resolution export instead of using embedded JPEG previews.": "保留 RAW 编辑与全分辨率导出,而不使用内嵌的 JPEG 预览。",
"Quick Collection and target album (B in the grid), keyword sets (⌥1–⌥9), colour-label sets.": "快速收藏和目标相册(网格中按 B)、关键字组(⌥1–⌥9)、颜色标签组。",
"read in the wrong units.": "以错误的单位读取。",
"reading the card a third time (Move still compares byte for byte before it deletes a source); a file that changed": "第三次读取存储卡(移动仍会在删除源文件前逐字节比较);已更改的文件",
"Rename Folder… and Move Folder To… (Local) can be undone and redone (issue #97): the folder moves back on disk with": "重命名文件夹… 和 移动文件夹到…(本地)可以撤销和重做(问题 #97):文件夹会在磁盘上移回原位,连同",
"Rename Photos never overwrites another photo when only the letter case changes (issue #95): on case-sensitive": "“重命名照片”在仅更改字母大小写时绝不会覆盖另一张照片(问题 #95):在大小写敏感",
"Rename Photos reports files it could not move back after a failure (issue #105), e.g. when a network share drops": "“重命名照片”会报告失败后无法移回的文件(问题 #105),例如网络共享断开时",
"renders and screenshots are still written to a temp file and renamed into place, but no longer forced to disk": "渲染结果和截图仍会写入临时文件并重命名到位,但不再强制刷入磁盘",
"Saving metadata to an XMP sidecar another application wrote no longer replaces it (issue #92): LightCraft merges its": "将元数据保存到其他应用写入的 XMP 附属文件时,不再替换该文件(问题 #92):LightCraft 会将其",
"scene) now develop from their sensor data with every editing tool, like the camera's other raws. Photos": "场景)现在可以使用所有编辑工具从其传感器数据进行显影,如同相机的其他 RAW 文件。照片",
"Settings files are never quietly reset (issue #103): a damaged `prefs.json`, `presets.json` or `view.json` is kept": "设置文件绝不会被静默重置(问题 #103):损坏的 `prefs.json`、`presets.json` 或 `view.json` 会被保留",
"siblings) no longer open bright green (issue #148): their as-shot white balance and black level are read from the": "同类文件)不再显示亮绿色(问题 #148):其拍摄时的白平衡和黑电平会从",
"sidecar that isn't valid XMP is copied to `<name>.xmp.bak-<time>` first. With the default stem naming, a raw and a": "不是有效 XMP 的附属文件会先复制为 `<name>.xmp.bak-<时间>`。使用默认的主干命名时,RAW 和",
"Slideshow, second window, All Metadata, System Info.": "幻灯片放映、第二窗口、全部元数据、系统信息。",
"Smaller, faster catalogs: photos you only looked at in Local (never added, rated or edited) are forgotten once": "更小、更快的目录:您仅在“本地”中查看过(从未添加、评分或编辑)的照片,一旦",
"Smart albums with a rule editor: match all / any / none, nested groups, 26 fields.": "带规则编辑器的智能相册:匹配全部/任一/无、嵌套组、26 个字段。",
"so none shows as missing. Renaming one of a raw + JPEG pair copies their shared `IMG_0001.xmp` instead of taking": "因此不会有任何照片显示为缺失。重命名 RAW + JPEG 组合中的一张时,会复制它们共用的 `IMG_0001.xmp`,而不是拿走",
"Sony ARWs from before about 2017 (RX100, RX100 II–V, RX10, NEX, SLT, ILCE-6000, A7 / A7 II / A7R II and their": "约 2017 年之前的 Sony ARW(RX100、RX100 II–V、RX10、NEX、SLT、ILCE-6000、A7 / A7 II / A7R II 及其",
"Sony ILCE-7M4 downsized lossless ARWs now decode subsampled YCbCr tiles into linear RGB,": "Sony ILCE-7M4 缩小尺寸的无损 ARW 现在可将子采样 YCbCr 块解码为线性 RGB,",
"starting the GPU, the next launch starts with GPU rendering off and says how to turn it back on.": "启动 GPU 时,下次启动将以 GPU 渲染关闭状态开始,并说明如何重新开启。",
"still saves your queued changes in the closing snapshot.": "仍会将您排队的更改保存到关闭快照中。",
"synced. Import ▸ Copy now checks each copy against the content hash taken while scanning the card instead of": "同步。导入 → 复制 现在会根据扫描存储卡时取得的内容哈希校验每一份副本,而不是",
"the camera; mapped-out sensor defects are filled in. `.rwl` and `.raw` files are imported too. Photos already": "相机;已标记的传感器缺陷会被填充。`.rwl` 和 `.raw` 文件也可导入。已",
"The catalog has a format version (issue #102). Opening a library from an older LightCraft upgrades it; a library": "目录具有格式版本(问题 #102)。打开旧版 LightCraft 创建的图库会自动升级;由",
"The control port (`--control`) closes a connection as soon as it receives anything that isn't a JSON request": "控制端口(`--control`)在收到任何非 JSON 请求的内容时,会立即关闭连接",
"the JPEG uses `IMG_0001.JPG.xmp`.": "JPEG 则使用 `IMG_0001.JPG.xmp`。",
"the Local folder tree and Auto Import read the disk on worker threads too. The import progress window has Cancel.": "“本地”文件夹树和自动导入也在工作线程上读取磁盘。导入进度窗口提供“取消”按钮。",
"the Photo menu and the photo context menu) picks up the full-size preview and fills in the camera metadata they": "照片菜单和照片右键菜单)会获取全尺寸预览,并补全相机元数据",
"the same name and \"Overwrite\" (or Export with Previous repeating it), an exact output path from the control": "同名且使用“覆盖”(或“使用上次设置导出”重复执行)时,来自控制",
"The thumbnail cache only ever counts and deletes its own files (issue #98): a library opened on a folder that": "缩略图缓存只会统计和删除自己的文件(问题 #98):在包含",
"their folder has not been browsed for 30 days — your files and sidecars stay, and browsing the folder shows them": "其所在文件夹 30 天未被浏览——您的文件和附属文件会保留,浏览该文件夹时会重新显示它们",
"to the camera's own JPEG.": "与相机自带的 JPEG 相匹配。",
"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 一代。它们从",
"untouched — older versions no longer read part of it as a damaged log. Once this version has opened a library,": "保持不变——旧版本不再将其部分内容读取为损坏的日志。一旦此版本打开过某个图库,",
"used (e.g. a skipped software adapter such as llvmpipe) and why the last render fell back.": "使用的后端(例如被跳过的软件适配器,如 llvmpipe),以及上次渲染为何回退。",
"volumes (Linux, case-sensitive APFS) `img_1.JPG` next to `IMG_1.JPG` is a different photo and the renamed one gets": "卷(Linux、大小写敏感的 APFS)上,`img_1.JPG` 与 `IMG_1.JPG` 是不同照片,重命名后的照片会得到",
"Watched-folder auto import; Convert to DNG; Duplicate; Build Standard / 1:1 / Smart Previews.": "监视文件夹自动导入;转换为 DNG;复制;构建标准 / 1:1 / 智能预览。",
"were missing, without touching anything already set.": "缺失的内容,而不改动任何已设置的项目。",
"when the browser may evict the library. Hosting: the sample cache headers no longer mark the (unhashed) files": "浏览器可能驱逐图库时。托管:示例缓存头不再将(未哈希的)文件标记为",
"whether originals are there is checked on a worker thread (grid thumbnails, the Info panel, the photo menu, Missing": "原图是否存在会在工作线程上检查(网格缩略图、信息面板、照片菜单、“缺失",
"with a counterpart here come along, the rest is listed.": "在这里有对应项的一同导入,其余部分会列出。",
"Without Saving and Quit (issue #100). It no longer quietly starts a demo session that looked like a reset library and": "不保存并退出(问题 #100)。它不再静默启动一个看似已重置图库的演示会话,",
"written by a newer LightCraft is refused with \"this library was written by a newer version of LightCraft\" and left": "由更新版本 LightCraft 写入的目录会被拒绝,提示“此图库由更新版本的 LightCraft 写入”,并保持",
"written by a newer LightCraft), LightCraft says so and why, and offers Try Again, Choose Another Library…, Continue": "由更新版本 LightCraft 写入),LightCraft 会说明情况和原因,并提供 重试、选择其他图库…、继续",
"⌘-drag to straighten, ⇧G Guided Upright, a grid while transforming.": "⌘-拖拽进行拉直,⇧G 引导式垂直校正,变换时显示网格。",
"on the card after Review Import is reported instead of being imported with stale details. Checking an export path": "在“审阅导入”后在存储卡上发生的更改会被报告,而不会以过时信息导入。检查导出路径",
"one by one — they can always be exported again, and on a USB drive or a NAS that per-file sync dominated a large": "逐个进行——它们随时可以重新导出,而在 USB 硬盘或 NAS 上,逐文件同步曾占用了大量",
"over a same-name same-size look-alike, and skips (and reports) photos it can't tell apart instead of guessing.": "而不是同名同大小的相似文件,并且会跳过(并报告)无法区分的照片,而不是猜测。",
"Panasonic and Leica raws (RW2, RWL and the older RAW files, DMC-LX1 to DC-S1R II) develop from the raw data in": "Panasonic 和 Leica 的 RAW 文件(RW2、RWL 及更早的 RAW 文件,DMC-LX1 至 DC-S1R II)在",
"part out), or type what to select (\"sky\", \"the red car\", \"car, road\"); both combine with other masks, have an": "部分选中),或输入要选择的内容(“天空”、“红色汽车”、“汽车、道路”);两者都可与其他蒙版组合,并具有",
"Face recognition is on": "人脸识别已开启",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "人脸识别已关闭。开启后可获得姓名建议,并将相似的人脸放在一起查看。",
"Turn on": "开启",
"Set up face recognition": "设置人脸识别",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "人脸识别需要一个模型来建议姓名:只需在“设置”中下载一次。",
"Turn on name suggestions": "开启姓名建议",
"Set up name suggestions…": "设置姓名建议…"
}
+5 -1
View File
@@ -310,5 +310,9 @@
"Added {n} photo{}": "已加入 {n} 張照片{:.0}",
"Where should the Lightroom catalog “{catalog}” go?": "Lightroom 目錄「{catalog}」要匯入到哪裡?",
"Merge into the open library “{library}” ({count} photo{})": "合併到目前開啟的照片庫「{library}」({count} 張照片){:.0}",
"Photo: {name}": "照片:{name}"
"Photo: {name}": "照片:{name}",
"Panel layout could not be restored: {error}": "無法還原面板配置:{error}",
"Panel move was not applied: {error}": "面板移動未套用:{error}",
"{name} is installed": "{name} 已安裝",
"{name} is installed and in use: face recognition is on": "{name} 已安裝並在使用中:臉部辨識已開啟"
}
+210 -1
View File
@@ -496,6 +496,7 @@
"Faded Matte": "褪色霧面",
"Faded Slide": "褪色正片",
"Faded Urban": "褪色城市",
"Favorite": "喜好項目",
"Favorite Preset": "將預設集加入喜好項目",
"Favorite Profile": "將描述檔加入喜好項目",
"Favorites": "喜好項目",
@@ -1721,6 +1722,7 @@
"Denoise Settings": "Denoise Settings",
"Denoise all photos with an Amount": "Denoise all photos with an Amount",
"Downloaded and checked. Installing…": "Downloaded and checked. Installing…",
"The download failed": "下載失敗。",
"Failed its last test": "Failed its last test",
"Graphics card": "Graphics card",
"I have read these terms and accept them for my own use": "I have read these terms and accept them for my own use",
@@ -2171,5 +2173,212 @@
"An import is running. Drop photos when it has finished": "正在匯入。匯入完成後再拖放照片",
"Finish Lightroom catalog import before adding photos": "新增照片前,請先完成 Lightroom 目錄的匯入",
"Thumbnail size": "縮圖大小",
"Import Thumbnail Size": "匯入縮圖大小"
"Import Thumbnail Size": "匯入縮圖大小",
"\"saved in memory but not written to disk\", the top bar shows a warning, and LightCraft keeps retrying until the": "「已儲存在記憶體中但尚未寫入磁碟」,頂端列會顯示警告,LightCraft 會持續重試,直到",
"#106): a DNG is checked against the raw data, written to a temp file, synced and read back before it gets its": "#106):DNG 會先與原始資料核對,寫入暫存檔、同步並讀回驗證,然後才獲得其",
"(`gpuReason`, `gpuFallback`), Help ▸ System Info and Settings ▸ Performance say why the GPU isn't": "(`gpuReason`、`gpuFallback`)——輔助說明 → 系統資訊 和 設定 → 效能 會說明為何未使用 GPU",
"(e.g. D750, D780, D850, D7500, Z 50) no longer render nearly black or with crushed shadows: their black level was": "(例如 D750、D780、D850、D7500、Z 50)不再近乎全黑或陰影死黑:其黑色位準之前被",
"(issue #94): an HTTP request from a web page can no longer carry a command in its body. Lines are capped at": "(問題 #94):網頁發出的 HTTP 要求不再能在內容中攜帶指令。每行長度上限為",
"123 on studio-mac)\") instead of letting both write and silently drop each other's edits. A crash never leaves the": "123(位於 studio-mac)\"),而不是讓雙方同時寫入、悄然丟棄彼此的編輯。當機絕不會讓",
"1620 × 1080 preview, and import with their metadata: capture time, camera, lens, exposure, GPS and XMP. Their raw": "1620 × 1080 預覽,並連同其中繼資料一起匯入:拍攝時間、相機、鏡頭、曝光、GPS 和 XMP。它們的原始資料",
"23 new built-in presets: Portrait, Landscape, Urban, Food, Seasons, Vintage and B&W toners.": "新增 23 款內建預設:人像、風景、城市、美食、季節、復古和黑白調色。",
"4 MiB and connections at 16.": "4 MiB,連線數上限為 16。",
"630 drivers): on Windows the window and GPU rendering use DirectX 12 only and never load the Vulkan driver unless": "630 顯示卡驅動程式):在 Windows 上,視窗和 GPU 算繪僅使用 DirectX 12,除非明確要求,否則絕不載入 Vulkan 驅動程式",
"`img_1-1.JPG`; on case-insensitive volumes the case change still goes through.": "`img_1-1.JPG`;在大小寫不敏感的磁碟區上,大小寫變更仍會生效。",
"`Photos/2026/20260114/20260114_001.jpg`) together with their XMP sidecars; each original leaves the card only after its": "`Photos/2026/20260114/20260114_001.jpg`)連同其 XMP 附屬檔案;每張原始照片只有在其",
"A change that can't be saved to disk (full or unplugged drive) is no longer silent: the command reports": "無法儲存到磁碟的變更(磁碟已滿或已拔除)不再無聲失敗:指令會回報",
"a full drive) no longer counts as built and Build Smart Previews replaces it.": "(磁碟已滿)不再視為已建立,「建立智慧型預覽」會取代它。",
"A library is open in one program at a time (issue #99): opening a library that LightCraft or `lightcraft-cli` already": "一個圖庫同時只能由一個程式開啟(問題 #99):開啟 LightCraft 或 `lightcraft-cli` 已開啟的圖庫時",
"A save that fails part-way (a full disk, a network share that drops) no longer looks like a damaged catalog": "儲存中途失敗(磁碟已滿、網路共享中斷)不再表現為圖庫損毀",
"A sleeping NAS, a dropped network share or a USB drive spinning up no longer freezes the window (issue #104):": "休眠的 NAS、中斷的網路共享或正在啟動的 USB 硬碟不再讓視窗卡住(問題 #104):",
"Add Face Model…": "新增人臉模型…",
"afterwards (issue #101): the partial write is cut off before LightCraft retries, so the next launch replays every": "之後(問題 #101):部分寫入會在 LightCraft 重試前被截斷,因此下次啟動會重播所有",
"again. Change the period (or turn it off) in Settings → Performance.": "在 設定 → 效能 中更改週期(或將其關閉)。",
"against the library's originals no longer scans the whole library when nothing is at that path.": "與圖庫原始照片核對時,若該路徑下沒有檔案,不再掃描整個圖庫。",
"AI masks with SAM 3 (Object and Describe in the Masking panel): click an object to select it (⌥-click leaves a": "AI 遮色片使用 SAM 3(遮色片面板中的「物件」和「描述」):點按物件即可選取(⌥-點按會留下一個",
"already has a `thumbs/` folder of other pictures no longer loses them when the cache is trimmed or cleared.": "已包含其他照片 `thumbs/` 資料夾的圖庫,在清理快取時不再遺失這些照片。",
"and checks the file before using it. Masks keep their selection, so they render and export without the model.": "並在使用前檢查檔案。遮色片會保留其選取範圍,因此無需模型即可算繪和匯出。",
"and every imported photo as one zip, and File ▸ Restore Library from Backup… brings it back (the current library": "以及每張匯入的照片打包為一個 zip,檔案 → 從備份還原圖庫… 可將其還原(目前的圖庫",
"and never freezes the window. It is optional and not part of LightCraft (Meta's SAM License, about 3.4 GB): the": "並且絕不會讓視窗卡住。它是選用的,不屬於 LightCraft 的一部分(Meta 的 SAM 授權,約 3.4 GB):",
"as `<name>.corrupt-<time>` and you're told; one that can't be read (e.g. locked by another program) is left alone": "儲存為 `<name>.corrupt-<時間>` 並會收到通知;無法讀取的(如遭其他程式鎖定)則保持原狀",
"asked to. `LIGHTCRAFT_GPU_BACKEND=dx12 | vulkan | metal | off` (or wgpu's `WGPU_BACKEND`, which GPU rendering": "依要求使用。`LIGHTCRAFT_GPU_BACKEND=dx12 | vulkan | metal | off`(或 wgpu 的 `WGPU_BACKEND`,GPU 算繪",
"Auto Sync: edits apply to every selected photo. Auto B&W mix. Automatic versions.": "自動同步:編輯會套用至每張選取的照片。自動黑白混合。自動版本。",
"Auto-Tag from Tracklog: GPS locations for your photos from a GPX track log, matched by capture time.": "從軌跡記錄自動標記:根據 GPX 軌跡記錄中的 GPS 位置,按拍攝時間為照片加上定位。",
"Browser version (experimental), keeping a library safe (issue #107): File ▸ Back Up Library… downloads the catalog": "瀏覽器版本(實驗性)下的圖庫安全(問題 #107):檔案 → 備份圖庫… 會下載目錄",
"bundles of any of these — whole folders at once, grouped by pack. Masks inside presets come along.": "這些類別的組合——可一次匯入整個資料夾,依套件分組。預設中的遮色片會一併匯入。",
"camera no longer gets baked in. Photos already imported as \"preview only\" switch over on Reload. (Files that": "相機設定不再被固化進照片。已以「僅預覽」方式匯入的照片會在重新載入後切換。",
"Cancel Face Model Download": "取消人臉模型下載",
"Cancel Pending Photo Action": "取消待處理的照片動作",
"Canon CR2 photos from the EOS 7D, 50D, 60D, 550D, 600D, 1200D, 1300D, 5D Mark II and 1D Mark IV (and other": "來自 EOS 7D、50D、60D、550D、600D、1200D、1300D、5D Mark II 和 1D Mark IV(及其他",
"Canon CR3 files show their full-size embedded JPEG (e.g. 6960 × 4640 on an EOS R6 Mark III) instead of the": "Canon CR3 檔案顯示其全尺寸內嵌 JPEG(例如 EOS R6 Mark III 上的 6960 × 4640),而不是",
"Canon EOS R5 Mark II C-RAW files that opened as \"preview only\" (more than half of them, depending on the": "先前只能以「僅預覽」方式開啟的 Canon EOS R5 Mark II C-RAW 檔案(其中超過半數,視",
"change. Catalogs already holding such a fragment load in full. Quitting while the catalog log can't be written": "變更。已包含此類片段的目錄會完整載入。在目錄日誌無法寫入時結束",
"changes couldn't be saved tries once more, then asks: Try Saving Again, Quit Anyway or Cancel.": "變更未能儲存時,會再嘗試一次,然後詢問:再次嘗試儲存、仍要結束 或 取消。",
"channel or MCP, a merge preview path or `lightcraft-cli render IMG.jpg -o IMG.jpg` is refused with a clear": "通道或 MCP,合併預覽路徑或 `lightcraft-cli render IMG.jpg -o IMG.jpg` 會被明確拒絕,並給出清晰的",
"checked against the content read from the card. A copy that fails or differs is removed and reported as a failed": "與從記憶卡讀取的內容進行核對。複製失敗或內容不一致的檔案會被移除,並回報為複製失敗",
"Choose a model below (Use) to start.": "請在下方選擇模型(使用)以開始。",
"Choose Face Recognition Model": "選擇人臉辨識模型",
"Cmd+Shift+R, keeps the photo and clears its edits.)": "Cmd+Shift+R,保留照片並清除其編輯。)",
"colour and tone look fitted to the camera's own JPEG, as Nikon and Sony raws do, framed in the aspect ratio set in": "色彩和色調外觀與相機自帶的 JPEG 相符,如同 Nikon 和 Sony 的 RAW 檔案,並按設定的長寬比取景",
"Colour-label filter with several labels at once; expandable folder tree in Local.": "可同時依多個顏色標籤篩選;「本機」中可展開的資料夾樹狀結構。",
"Colour-range masks: click the photo to sample. Luminance ranges: range bar, smoothness, luminance map.": "顏色範圍遮色片:點按照片取樣。亮度範圍:範圍列、平滑度、亮度對應。",
"Compressed Nikon NEFs (lossless and lossy compressed, 12- and 14-bit — e.g. D3200, D5100, D7000, D750, D850, Z 50)": "壓縮的 Nikon NEF(無損和有損壓縮,12 位元和 14 位元——例如 D3200、D5100、D7000、D750、D850、Z 50)",
"Convert to DNG, Copy as DNG, Photo Merge and smart previews no longer write straight to the final file (issue": "轉換為 DNG、複製為 DNG、照片合併和智慧型預覽不再直接寫入最終檔案(問題",
"copy is verified and in the library. Duplicates and files that fail stay where they were.": "複製完成後經過驗證並入庫。重複的檔案及失敗的檔案保持原位。",
"Copyright status, rights usage terms and copyright info URL in Info, metadata presets and exports.": "資訊面板、中繼資料預設和匯出中包含版權狀態、權利使用條款和版權資訊 URL。",
"data is not decoded yet, so they stay preview-only. For CR3s imported earlier, Photo ▸ Reload from Disk (now in": "資料尚未解碼,因此仍為僅預覽。對於先前匯入的 CR3,照片 → 從磁碟重新載入(現位於",
"Detect Faces": "偵測人臉",
"Detect Faces (Photo menu) needs it: a small one-time download.": "偵測人臉(照片選單)需要它:一次小型的一次性下載。",
"Download Face Model": "下載人臉模型",
"Drag Crop Handle": "拖曳裁切控點",
"edge are cropped away, and \"12-bit uncompressed\" files are no longer clipped. The RX100 series renders much closer": "邊緣被裁掉,且「12 位元未壓縮」檔案不再被截斷。RX100 系列算繪效果與",
"Edge setting, and get a sharper zoomed-in pass in the background. The model runs inside LightCraft in pure Rust": "「邊緣」設定,並在背景獲得更清晰的放大算繪。該模型以純 Rust 在 LightCraft 內部執行",
"Edit in External Editor (⇧⌘E): a 16-bit TIFF copy, stacked, refreshed when you come back.": "在外部編輯器中編輯(⇧⌘E):產生 16 位元 TIFF 副本、堆疊顯示,返回後自動重新整理。",
"Evaluate Face Recognition": "評估人臉辨識",
"every format the cameras write. Most bodies opened as preview only before: GH1–GH5, the G, GX, GF, GM, FZ, LX and": "相機支援寫入的每一種格式。先前大多數機身只能以僅預覽方式開啟:GH1–GH5,以及 G、GX、GF、GM、FZ、LX 系列",
"Export file names use the Rename Photos tokens ({title}, {seq:2}, {date:%Y-%m-%d}…), plus new {num}, {folder}, {lens}, {iso}, {rating}, {creator}.": "匯出檔案名稱支援「重新命名照片」的標記({title}、{seq:2}、{date:%Y-%m-%d}…),並新增 {num}、{folder}、{lens}、{iso}、{rating}、{creator}。",
"export. The catalog, XMP sidecars, settings, DNGs, merges, smart previews and the copies an import makes are still": "匯出。目錄、XMP 附屬檔案、設定、DNG、合併結果、智慧型預覽以及匯入產生的副本仍會",
"Exported files are written to a temp file and then renamed into place, so a full disk or an unplugged drive": "匯出檔案會先寫入暫存檔,再重新命名到位,因此磁碟已滿或硬碟被拔除",
"Exports and renders never write over a photo's original (issue #93): exporting into the photo's own folder with": "匯出和算繪絕不會覆寫照片原始檔(問題 #93):當匯出到照片所在資料夾且使用",
"Exports are never black because of the GPU (issue #78): a GPU render that runs out of device": "匯出永遠不會因為 GPU 而變黑(問題 #78):GPU 算繪耗盡裝置",
"Face detector": "人臉偵測器",
"Face Model Downloads": "人臉模型下載",
"Face Models": "人臉模型",
"Face recognition": "人臉辨識",
"Face Recognition On/Off": "人臉辨識 開啟/關閉",
"Faces": "人臉",
"Faces of a Person": "某人的臉孔",
"Faster exports and card imports, with the same protection for what can't be recreated (issue #134): exports,": "更快的匯出和記憶卡匯入,對無法重建的內容提供同等保護(問題 #134):匯出、",
"fields in and keeps the rest — e.g. that application's develop settings and edit history — byte for byte. A": "欄位合入其中,其餘部分(如該應用程式的顯影設定和編輯歷史)則逐位元組保留。",
"file (Sony stores them only in scrambled maker-note data on these bodies), the few columns of padding at the right": "檔案(Sony 在這些機身上僅將資料儲存在加密的製造商註記資料中),右側幾欄填補像素",
"first time you use an AI mask, LightCraft asks before downloading it, shows the progress, can cancel and resume,": "首次使用 AI 遮色片時,LightCraft 會在下載前徵求同意,顯示進度,可取消和續傳,",
"for the session instead of being overwritten with defaults. The app settings (`ui.json`, which remembers your": "在本次工作階段中生效,而不會被預設值覆寫。應用程式設定(`ui.json`,記錄您的",
"gets -1, -2… instead of being replaced.": "會得到 -1、-2… 而不是被取代。",
"Go back to listing them by name": "改回依名稱列出",
"greenish neutral rendering (issue #150); white balance is adjusted relative to the as-shot look. 12-bit NEFs": "偏綠的中性色算繪(問題 #150);白平衡會相對於拍攝時的外觀進行調整。12 位元 NEF",
"has open — on this computer or another one sharing the folder — says who has it (\"already open in LightCraft (process": "正在開啟——在本機或共享該資料夾的其他電腦上——會說明是誰在開啟(「已在 LightCraft 中開啟(處理程序",
"how to restore it or delete it permanently and import it afresh. (For a fresh start on a photo, Reset Edits,": "如何還原它、永久刪除它,或重新匯入。(若要重新開始編輯某張照片,可使用「重設編輯」,",
"If your library can't be opened at launch (open in another program, unreadable, on a drive that isn't connected,": "如果您的圖庫在啟動時無法開啟(被其他程式占用、無法讀取、位於未連接的磁碟上,",
"ignored before) chooses the graphics backend; `off` renders on the CPU. The GPU now starts after the window": "先前會被忽略)選擇圖形後端;`off` 表示使用 CPU 算繪。GPU 現在會在視窗",
"immutable, and HOSTING.md describes the actual build.": "不可變更,HOSTING.md 描述了實際建置方式。",
"Import presets from other editors: XMP presets, classic `.lrtemplate` files, \"DNG presets\" from mobile apps and `.zip`": "從其他編輯器匯入預設:XMP 預設、經典 `.lrtemplate` 檔案、來自手機應用程式的「DNG 預設」以及 `.zip`",
"import — so \"import complete\" means the copies are good before you format the card — and a name that is taken": "匯入——因此「匯入完成」表示在格式化記憶卡前副本完好——若名稱已被占用",
"Import ▸ Copy verifies every copy, like Move (issue #96): each file is written as a new file, synced to disk and": "匯入 → 複製 會像移動一樣驗證每一份副本(問題 #96):每個檔案都作為新檔案寫入、同步到磁碟並",
"Import ▸ Move: photos go into the destination (with the same folders and renaming as Copy, e.g.": "匯入 → 移動:照片移入目標位置(資料夾結構和重新命名規則與「複製」相同,例如",
"Import: copy to any folder, by day / by month / one folder, rename on import, metadata preset, Copy as DNG.": "匯入:複製到任意資料夾、依天/依月/單一資料夾、匯入時重新命名、中繼資料預設、複製為 DNG。",
"imported as \"preview only\" switch over on Reload.": "以「僅預覽」方式匯入的照片會在重新載入後切換。",
"imported earlier switch over with Photo ▸ Reload from Disk.": "先前匯入的照片可透過 照片 → 從磁碟重新載入 切換。",
"in short pieces so slow integrated GPUs aren't reset by their watchdog. `ui.inspect` → `perf`": "分小段傳送,以免慢速整合式 GPU 被其看門狗重設。`ui.inspect` → `perf`",
"Include selected photos": "包含選取的照片",
"incomplete is redone on the CPU — the file is the same image either way. Work is sent to the GPU": "未完成的算繪會在 CPU 上重做——無論哪種方式,檔案都是同一張影像。工作會傳送給 GPU",
"Index Faces": "建立人臉索引",
"Index Faces in the Background": "在背景建立人臉索引",
"Inspect Face Model File": "檢查人臉模型檔案",
"Install Face Model": "安裝人臉模型",
"is kept). A failed save (storage full) now shows the unsaved warning and is retried, a photo that can't be stored": "會被保留)。儲存失敗(儲存空間已滿)現在會顯示未儲存警告並重試,無法儲存的照片",
"is refused and nothing is overwritten.": "會被拒絕,不會覆寫任何內容。",
"is up, and only when Settings ▸ Performance ▸ Use the GPU for rendering is on; if LightCraft ever dies while": "已啟動,並且僅在 設定 → 效能 → 使用 GPU 算繪 開啟時生效;如果 LightCraft 在",
"isn't added, a second tab shows a message instead of overwriting the first, `?reset` asks first, and the page says": "未新增,第二個分頁會顯示提示而不是覆寫第一個,`?reset` 會先詢問,頁面會顯示",
"it away from the other (issue #92). Find Missing Photos also finds renamed files by their content, prefers a content match": "將其與另一個區分開(問題 #92)。「尋找遺失的照片」也會依內容尋找重新命名的檔案,優先內容相符",
"its photos and XMP sidecars, and the photos point at it again. If something now occupies the old place, the undo": "其照片和 XMP 附屬檔案隨之移動,照片再次指向新位置。如果原位置已被占用,復原操作",
"JPEG with the same name (`IMG_0001.CR3` + `IMG_0001.JPG`) no longer share one sidecar: the raw keeps `IMG_0001.xmp`,": "同名的 JPEG(`IMG_0001.CR3` + `IMG_0001.JPG`)不再共用一個附屬檔案:RAW 檔案保留 `IMG_0001.xmp`,",
"layout is read from each file instead of assumed.": "版面配置會從每個檔案中讀取,而不是假設。",
"leaves no DNG and keeps the raw. Smart previews are written the same way; a damaged one (cut short by a crash or": "不留下 DNG,並保留原始檔案。智慧型預覽採用同樣的寫入方式;損壞的(因當機或",
"Library Folders": "圖庫資料夾",
"library locked: the lock is the operating system's and goes away with the program.": "圖庫已鎖定:該鎖由作業系統持有,隨程式結束而解除。",
"library) are written atomically and saved as soon as you open another library, not only at quit. Quitting while": "圖庫)採用原子寫入,並在您開啟另一個圖庫時立即儲存,而不僅在結束時。在結束時如果",
"LightCraft 0.2.0 and older refuse it (\"unsupported format … v2\").": "LightCraft 0.2.0 及更早版本會拒絕它(「不支援的格式 … v2」)。",
"LightCraft no longer crashes at launch on Windows PCs whose Vulkan driver is broken (issue #136, e.g. some Intel UHD": "LightCraft 不再在 Vulkan 驅動程式損壞的 Windows 電腦上啟動時當機(問題 #136,例如某些 Intel UHD",
"longer just says \"duplicate skipped\": it opens the side panel on Recently Deleted with the photo selected and says": "不再只是提示「已略過重複項目」:它會開啟「最近刪除」的側邊面板並選取該照片,然後說明",
"Lossy DNG files and Smart Previews open as raw photos.": "有損 DNG 檔案和智慧型預覽會以 RAW 照片形式開啟。",
"lost everything at quit; a temporary session shows a banner the whole time and never writes to your library.": "結束時會遺失所有內容;暫時工作階段會一直顯示橫幅,並且絕不會寫入您的圖庫。",
"Luminar looks: `.lmp` files and `.mplumpack` collections import as presets (grouped by collection); the sliders": "Luminar 風格:`.lmp` 檔案和 `.mplumpack` 合集可作為預設匯入(依合集分組);滑桿",
"memory, exceeds the GPU's buffer limits, hits a driver error or reset, or comes back": "記憶體、超出 GPU 的緩衝區限制、遇到驅動程式錯誤或重設,或者恢復",
"message, and the original is left byte for byte. Ordinary earlier exports are still overwritten when asked.": "訊息,原始檔則逐位元組保留。先前的普通匯出在使用者要求時仍會被覆寫。",
"mid-batch: the error lists them (old → new) and the library points at their new names (an undoable partial rename),": "批次中途:錯誤會列出它們(舊名 → 新名),圖庫指向其新名稱(可復原的部分重新命名),",
"models whose sensor starts on a green-blue row) no longer come out magenta (issue #85): the colour-filter": "感應器從綠藍列開始的機型)不再偏洋紅色(問題 #85):色彩濾鏡",
"name (never replacing a file), and only then is the photo relinked or the raw copy removed — a failed write": "名稱(絕不取代現有檔案),然後才重新連結照片或移除 RAW 副本——寫入失敗時",
"Name Face": "為人臉命名",
"Name Faces": "為人臉命名",
"never leaves a truncated file; the XMP sidecar of an \"Original\" export follows the \"If file exists\" choice too.": "絕不會留下截斷的檔案;「原始」匯出的 XMP 附屬檔案也遵循「如果檔案已存在」選項。",
"Nikon NEFs start from a colour and tone look fitted to the camera's own JPEG, as Sony ARWs do, instead of a muted,": "Nikon NEF 從與相機自帶 JPEG 相符的色彩和色調外觀開始,如同 Sony ARW,而不是黯淡、",
"Nikon splits into two differently compressed halves still use the preview for now.)": "Nikon 分成兩半、壓縮方式不同的檔案目前仍使用預覽。)",
"now develop from the raw data instead of the camera's embedded JPEG, so a B&W or other picture style set in the": "現在從原始資料而非相機內嵌 JPEG 進行顯影,因此相機中設定的黑白或其他照片風格",
"on the card after Review Import is reported instead of being imported with stale details. Checking an export path": "在「檢閱匯入」後在記憶卡上發生的變更會被回報,而不會以過時資訊匯入。檢查匯出路徑",
"one by one — they can always be exported again, and on a USB drive or a NAS that per-file sync dominated a large": "逐一進行——它們隨時可以重新匯出,而在 USB 硬碟或 NAS 上,逐一檔案同步曾占用大量",
"over a same-name same-size look-alike, and skips (and reports) photos it can't tell apart instead of guessing.": "而不是同名同大小的相似檔案,並且會略過(並回報)無法區分的照片,而不是猜測。",
"Panasonic and Leica raws (RW2, RWL and the older RAW files, DMC-LX1 to DC-S1R II) develop from the raw data in": "Panasonic 和 Leica 的 RAW 檔案(RW2、RWL 及更早的 RAW 檔案,DMC-LX1 至 DC-S1R II)在",
"part out), or type what to select (\"sky\", \"the red car\", \"car, road\"); both combine with other masks, have an": "部分選取),或輸入要選取的內容(「天空」、「紅色汽車」、「汽車、道路」);兩者都可與其他遮色片組合,並具有",
"Photo menu. The filmstrip has the photo context menu too. Adding a file again that is in Recently Deleted no": "照片選單。底片列也具有照片右鍵選單。再次新增已在「最近刪除」中的檔案時,不再",
"Photos in Recently Deleted can be restored from the app: right-click ▸ Restore (or Delete Permanently), also in the": "「最近刪除」中的照片可以從應用程式還原:按右鍵 → 還原(或 永久刪除),也位於",
"Photos); importing (also by drag and drop), Find Missing Photos, Build / Discard Smart Previews, the Rename preview,": "照片);匯入(也支援拖放)、「尋找遺失的照片」、「建立/捨棄智慧型預覽」、「重新命名預覽」、",
"preserving RAW editing & full-resolution export instead of using embedded JPEG previews.": "保留 RAW 編輯與全解析度匯出,而不使用內嵌的 JPEG 預覽。",
"Quick Collection and target album (B in the grid), keyword sets (⌥1–⌥9), colour-label sets.": "快速收藏和目標相簿(網格中按 B)、關鍵字組(⌥1–⌥9)、顏色標籤組。",
"read in the wrong units.": "以錯誤的單位讀取。",
"reading the card a third time (Move still compares byte for byte before it deletes a source); a file that changed": "第三次讀取記憶卡(移動仍會在刪除來源檔案前逐一比對位元組);已變更的檔案",
"Recognise faces (experimental)": "辨識人臉(實驗性)",
"Recognition models": "辨識模型",
"Remove Face Model": "移除人臉模型",
"Rename Folder… and Move Folder To… (Local) can be undone and redone (issue #97): the folder moves back on disk with": "重新命名資料夾… 和 移動資料夾到…(本機)可以復原和重做(問題 #97):資料夾會在磁碟上移回原位,連同",
"Rename Photos never overwrites another photo when only the letter case changes (issue #95): on case-sensitive": "「重新命名照片」在僅變更字母大小寫時絕不會覆寫另一張照片(問題 #95):在大小寫敏感",
"Rename Photos reports files it could not move back after a failure (issue #105), e.g. when a network share drops": "「重新命名照片」會回報失敗後無法移回的檔案(問題 #105),例如網路共享中斷時",
"renders and screenshots are still written to a temp file and renamed into place, but no longer forced to disk": "算繪結果和螢幕擷取畫面仍會寫入暫存檔並重新命名到位,但不再強制刷入磁碟",
"Reorder Album": "重新排列相簿",
"save goes through.": "儲存會完成。",
"Saving metadata to an XMP sidecar another application wrote no longer replaces it (issue #92): LightCraft merges its": "將中繼資料儲存到其他應用程式寫入的 XMP 附屬檔案時,不再取代該檔案(問題 #92):LightCraft 會將其",
"scene) now develop from their sensor data with every editing tool, like the camera's other raws. Photos": "場景)現在可以使用所有編輯工具從其感應器資料進行顯影,如同相機的其他 RAW 檔案。照片",
"Settings files are never quietly reset (issue #103): a damaged `prefs.json`, `presets.json` or `view.json` is kept": "設定檔案絕不會被靜默重設(問題 #103):損壞的 `prefs.json`、`presets.json` 或 `view.json` 會被保留",
"Show Person": "顯示人物",
"siblings) no longer open bright green (issue #148): their as-shot white balance and black level are read from the": "同類檔案)不再顯示亮綠色(問題 #148):其拍攝時的白平衡和黑色位準會從",
"sidecar that isn't valid XMP is copied to `<name>.xmp.bak-<time>` first. With the default stem naming, a raw and a": "不是有效 XMP 的附屬檔案會先複製為 `<name>.xmp.bak-<時間>`。使用預設的主幹命名時,RAW 和",
"Slideshow, second window, All Metadata, System Info.": "幻燈片放映、第二視窗、所有中繼資料、系統資訊。",
"Smaller, faster catalogs: photos you only looked at in Local (never added, rated or edited) are forgotten once": "更小、更快的目錄:您僅在「本機」中查看過(從未新增、評分或編輯)的照片,一旦",
"smart album value|No": "否",
"smart album value|Yes": "是",
"Smart albums with a rule editor: match all / any / none, nested groups, 26 fields.": "具規則編輯器的智慧型相簿:符合全部/任一/無、巢狀群組、26 個欄位。",
"so none shows as missing. Renaming one of a raw + JPEG pair copies their shared `IMG_0001.xmp` instead of taking": "因此不會有任何照片顯示為遺失。重新命名 RAW + JPEG 組合中的一張時,會複製它們共用的 `IMG_0001.xmp`,而不是拿走",
"Sony ARWs from before about 2017 (RX100, RX100 II–V, RX10, NEX, SLT, ILCE-6000, A7 / A7 II / A7R II and their": "約 2017 年之前的 Sony ARW(RX100、RX100 II–V、RX10、NEX、SLT、ILCE-6000、A7 / A7 II / A7R II 及其",
"Sony ILCE-7M4 downsized lossless ARWs now decode subsampled YCbCr tiles into linear RGB,": "Sony ILCE-7M4 縮小尺寸的無損 ARW 現在可將子取樣 YCbCr 區塊解碼為線性 RGB,",
"Sort Albums A–Z": "依 A–Z 排序相簿",
"Sort Albums by Name": "依名稱排序相簿",
"Sort Contents A–Z": "依 A–Z 排序內容",
"starting the GPU, the next launch starts with GPU rendering off and says how to turn it back on.": "啟動 GPU 時,下次啟動將以 GPU 算繪關閉狀態開始,並說明如何重新開啟。",
"still saves your queued changes in the closing snapshot.": "仍會將您排入佇列的變更儲存到結束快照中。",
"Suggest Names for Faces": "建議人臉名稱",
"Suggests who is in a photo from the faces you have named. Everything stays on your computer.": "根據您已命名的人臉,建議照片中的人物是誰。一切資料都保留在您的電腦上。",
"synced. Import ▸ Copy now checks each copy against the content hash taken while scanning the card instead of": "同步。匯入 → 複製 現在會根據掃描記憶卡時取得的內容雜湊驗證每一份副本,而不是",
"Test Face Model": "測試人臉模型",
"the camera; mapped-out sensor defects are filled in. `.rwl` and `.raw` files are imported too. Photos already": "相機;已標記的感應器缺陷會被填補。`.rwl` 和 `.raw` 檔案也可匯入。已",
"The catalog has a format version (issue #102). Opening a library from an older LightCraft upgrades it; a library": "目錄具有格式版本(問題 #102)。開啟舊版 LightCraft 建立的圖庫會自動升級;由",
"The control port (`--control`) closes a connection as soon as it receives anything that isn't a JSON request": "控制連接埠(`--control`)在收到任何非 JSON 要求的內容時,會立即關閉連線",
"the JPEG uses `IMG_0001.JPG.xmp`.": "JPEG 則使用 `IMG_0001.JPG.xmp`。",
"the Local folder tree and Auto Import read the disk on worker threads too. The import progress window has Cancel.": "「本機」資料夾樹狀結構和自動匯入也在背景執行緒上讀取磁碟。匯入進度視窗提供「取消」按鈕。",
"the Photo menu and the photo context menu) picks up the full-size preview and fills in the camera metadata they": "照片選單和照片右鍵選單)會取得全尺寸預覽,並補齊相機中繼資料",
"the same name and \"Overwrite\" (or Export with Previous repeating it), an exact output path from the control": "同名且使用「覆寫」(或「使用上次設定匯出」重複執行)時,來自控制",
"The thumbnail cache only ever counts and deletes its own files (issue #98): a library opened on a folder that": "縮圖快取只會統計和刪除自己的檔案(問題 #98):在包含",
"their folder has not been browsed for 30 days — your files and sidecars stay, and browsing the folder shows them": "其所在資料夾 30 天未被瀏覽——您的檔案和附屬檔案會保留,瀏覽該資料夾時會重新顯示它們",
"This build cannot run recognition models: they can be added and chosen, not used.": "此建置無法執行辨識模型:可以新增和選擇,但無法使用。",
"This build has nowhere to keep face models, so the model list is not available. (The desktop app has.)": "此建置沒有地方存放人臉模型,因此模型清單無法使用。(桌面應用程式有。)",
"to the camera's own JPEG.": "與相機自帶的 JPEG 相符。",
"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 世代。它們從",
"Unnamed Faces": "未命名的人臉",
"untouched — older versions no longer read part of it as a damaged log. Once this version has opened a library,": "保持原狀——舊版本不再將其部分內容讀取為損壞的日誌。一旦此版本開啟過某個圖庫,",
"used (e.g. a skipped software adapter such as llvmpipe) and why the last render fell back.": "使用的後端(例如被略過的軟體轉接器,如 llvmpipe),以及上次算繪為何退回。",
"volumes (Linux, case-sensitive APFS) `img_1.JPG` next to `IMG_1.JPG` is a different photo and the renamed one gets": "磁碟區(Linux、大小寫敏感的 APFS)上,`img_1.JPG` 與 `IMG_1.JPG` 是不同照片,重新命名後的照片會得到",
"Watched-folder auto import; Convert to DNG; Duplicate; Build Standard / 1:1 / Smart Previews.": "監看資料夾自動匯入;轉換為 DNG;複製;建立標準 / 1:1 / 智慧型預覽。",
"were missing, without touching anything already set.": "遺失的內容,而不改動任何已設定的項目。",
"when the browser may evict the library. Hosting: the sample cache headers no longer mark the (unhashed) files": "瀏覽器可能驅離圖庫時。託管:範例快取標頭不再將(未雜湊的)檔案標記為",
"whether originals are there is checked on a worker thread (grid thumbnails, the Info panel, the photo menu, Missing": "原始檔案是否存在會在背景執行緒上檢查(網格縮圖、資訊面板、照片選單、「遺失",
"with a counterpart here come along, the rest is listed.": "在這裡有對應項目的一同匯入,其餘部分會列出。",
"Without Saving and Quit (issue #100). It no longer quietly starts a demo session that looked like a reset library and": "不儲存並結束(問題 #100)。它不再靜默啟動一個看似已重設圖庫的示範工作階段,",
"written by a newer LightCraft is refused with \"this library was written by a newer version of LightCraft\" and left": "由更新版本 LightCraft 寫入的目錄會被拒絕,提示「此圖庫由更新版本的 LightCraft 寫入」,並保持",
"written by a newer LightCraft), LightCraft says so and why, and offers Try Again, Choose Another Library…, Continue": "由更新版本 LightCraft 寫入),LightCraft 會說明情況和原因,並提供 重試、選擇其他圖庫…、繼續",
"⌘-drag to straighten, ⇧G Guided Upright, a grid while transforming.": "⌘-拖曳進行拉直,⇧G 引導式垂直校正,變換時顯示網格。",
"Face recognition is on": "臉部辨識已開啟",
"Face recognition is off. Turn it on to get name suggestions and see look-alike faces together.": "臉部辨識已關閉。開啟後可取得姓名建議,並將相似的臉孔放在一起檢視。",
"Turn on": "開啟",
"Set up face recognition": "設定臉部辨識",
"Face recognition needs a model to suggest names: a one-time download, in Settings.": "臉部辨識需要一個模型來建議姓名:只需在「設定」中下載一次。",
"Turn on name suggestions": "開啟姓名建議",
"Set up name suggestions…": "設定姓名建議…"
}
+12 -7
View File
@@ -137,7 +137,7 @@ pub fn take_step(app: &mut LightcraftApp, ctx: &egui::Context, step: Setup) {
if app.run("faces.enable", json!({"enabled": true})).is_ok() {
app.caches.faces_epoch += 1;
app.ui.status = "Face recognition is on".into();
app.toast(ctx, "Face recognition is on");
app.toast(ctx, crate::i18n::tr("Face recognition is on"));
}
}
Setup::GetModel => {
@@ -154,8 +154,8 @@ pub fn setup_banner(app: &mut LightcraftApp, ui: &mut egui::Ui) {
let t = Tokens::get(ui.ctx());
egui::Frame::NONE.inner_margin(egui::Margin::symmetric(12, 6)).show(ui, |ui| {
ui.horizontal_wrapped(|ui| {
ui.label(RichText::new(message).font(t.font(12.5)).color(t.text_dim));
let r = ui.button(button);
ui.label(RichText::new(crate::i18n::tr(message)).font(t.font(12.5)).color(t.text_dim));
let r = ui.button(crate::i18n::tr(button));
register(ui, "faces:setup", r.rect);
if r.clicked() {
take_step(app, ui.ctx(), step);
@@ -379,7 +379,7 @@ fn model_row(app: &mut LightcraftApp, ui: &mut egui::Ui, t: &Tokens, m: &Value,
});
}
(Some("failed"), Some(d)) => {
let why = sentence(d["error"].as_str().unwrap_or("The download failed"));
let why = crate::panels::denoise::download_failure(d);
ui.add(egui::Label::new(RichText::new(why).font(t.font(11.5)).color(t.caution)).wrap());
}
_ => {}
@@ -683,7 +683,7 @@ pub fn name_editor(
}
}
if let Some(label) = setup.short() {
let b = ui.add(egui::Button::new(RichText::new(label).font(t.font(12.0)).color(t.accent)).frame(false));
let b = ui.add(egui::Button::new(RichText::new(crate::i18n::tr(label)).font(t.font(12.0)).color(t.accent)).frame(false));
register(ui, "faces:setup", b.rect);
if b.clicked() {
outcome = Editor::Setup;
@@ -809,8 +809,13 @@ fn watch_downloads(app: &mut LightcraftApp, ctx: &egui::Context) {
.ok()
.is_some_and(|l| l["models"].as_array().is_some_and(|a| a.iter().any(|m| m["id"] == id.as_str() && m["role"] == "detector")));
let text = if detector { format!("{name} is installed") } else { format!("{name} is installed and in use: face recognition is on") };
app.ui.status = text.clone();
app.toast(ctx, text);
let toast = if detector {
crate::i18n::tr_format!("{name} is installed", name = name)
} else {
crate::i18n::tr_format!("{name} is installed and in use: face recognition is on", name = name)
};
app.ui.status = text;
app.toast(ctx, toast);
}
ctx.request_repaint_after(std::time::Duration::from_millis(120));
}
+2 -2
View File
@@ -347,7 +347,7 @@ pub fn show(app: &mut crate::LightcraftApp, ui: &mut egui::Ui) {
let t = crate::theme::Tokens::get(ui.ctx());
let mut workspace = app.ui.docking.clone().unwrap_or_else(|| from_ui(app));
if let Err(error) = validate(&workspace).and_then(|()| sync(&mut workspace, app)) {
app.ui.toast = Some((format!("Panel layout could not be restored: {error}"), app.tick_now() + 8.0, None));
app.ui.toast = Some((crate::i18n::tr_format!("Panel layout could not be restored: {error}", error = error), app.tick_now() + 8.0, None));
workspace = from_ui(app);
let _ = sync(&mut workspace, app);
}
@@ -454,7 +454,7 @@ pub fn show(app: &mut crate::LightcraftApp, ui: &mut egui::Ui) {
.map_err(|error| error.to_string())
.and_then(|action| command_impl(app, false, &json!({"action": action}), true))
{
app.ui.toast = Some((format!("Panel move was not applied: {error}"), app.tick_now() + 8.0, None));
app.ui.toast = Some((crate::i18n::tr_format!("Panel move was not applied: {error}", error = error), app.tick_now() + 8.0, None));
}
}
}
+12
View File
@@ -872,11 +872,23 @@ fn people_and_the_name_box_offer_to_set_face_recognition_up() {
h.step();
assert!(offers(&mut h));
assert_eq!(h.app.session.execute("faces.models.list", &json!({})).unwrap()["enabled"], false);
h.app.ui.language = crate::i18n::Locale::De;
crate::i18n::set_language(crate::i18n::Locale::De);
h.step();
h.step();
assert!(offers(&mut h), "the offer is still there in German");
let r = h.request("ui.clickWidget", json!({"id": "faces:setup"}), t);
assert_eq!(r["ok"], true, "{r}");
h.step();
h.step();
assert_eq!(h.app.session.execute("faces.models.list", &json!({})).unwrap()["enabled"], true);
assert_eq!(
h.app.ui.toast.as_ref().map(|toast| toast.0.as_str()),
Some(crate::i18n::Locale::De.tr("Face recognition is on")),
"the toast is looked up in the UI language"
);
h.app.ui.language = crate::i18n::Locale::En;
crate::i18n::set_language(crate::i18n::Locale::En);
assert_eq!(h.app.ui.dialog, None, "nothing to go to Settings for");
h.step();
assert!(!offers(&mut h), "once it is on the offer is gone");
+3
View File
@@ -569,6 +569,9 @@ pub fn rules_label(rules: &lightcraft_catalog::RuleSet, catalog: &lightcraft_cat
if language() == Locale::En { rules.describe_with(catalog) } else { describe(rules, catalog, 0) }
}
#[cfg(test)]
mod gaps;
#[cfg(test)]
mod tests;
+475
View File
@@ -0,0 +1,475 @@
//! The plain `tr("…")` messages of the app's source, for `i18n::tests::translation_gaps_report`.
//!
//! A catalog only holds the strings someone translated, so a string no language has yet is in no
//! catalog and the report could not name it. This reads the source for them: every `tr("…")` /
//! `.tr("…")` call in `crates/ui-egui/src` and `apps/lightcraft/src` whose argument is one string
//! literal (a trailing comma, as rustfmt leaves in a wrapped call, is fine), or an `if`/`match`
//! whose branches are literals (`tr(if on { "On" } else { "Off" })`). Test code (`tests.rs` and
//! `tests_*.rs` files, `tests/` folders and items under exactly `#[cfg(test)]`) is skipped. The scanner lexes
//! the source (comments, strings, raw strings and chars) rather than grepping it, so a `tr(` in a
//! comment or a string is not a use.
//!
//! A key that reaches `tr` through a variable (`tr(label)` over a table of labels,
//! `tr(&format!(…))`) cannot be read from the source; the report takes those labels from its own
//! tables. `tr_ctx` keys (`"<context>|<source>"`) are optional by design.
use std::{
collections::BTreeSet,
fs,
path::{Path, PathBuf},
};
/// Source folders whose `tr` calls are read, relative to the crate.
const SOURCES: [&str; 2] = ["src", "../../apps/lightcraft/src"];
#[derive(Debug, Clone, PartialEq)]
enum Kind {
Ident(String),
Str(String),
Punct(char),
Other,
}
#[derive(Debug, Clone)]
struct Tok {
kind: Kind,
line: usize,
}
/// One `tr` call with a literal key.
#[derive(Debug, Clone, PartialEq)]
struct Use {
key: String,
line: usize,
}
/// Split Rust source into the tokens the scan needs. Comments vanish; strings, raw strings and
/// chars are single tokens, so braces and parentheses inside them never count.
fn lex(source: &str) -> Vec<Tok> {
let chars: Vec<char> = source.replace("\r\n", "\n").chars().collect();
let mut tokens = Vec::new();
let (mut i, mut line) = (0, 1);
while i < chars.len() {
let c = chars[i];
let next = chars.get(i + 1).copied();
if c == '\n' {
line += 1;
i += 1;
} else if c.is_whitespace() {
i += 1;
} else if c == '/' && next == Some('/') {
while i < chars.len() && chars[i] != '\n' {
i += 1;
}
} else if c == '/' && next == Some('*') {
let mut depth = 0;
while i < chars.len() {
if chars[i] == '/' && chars.get(i + 1) == Some(&'*') {
depth += 1;
i += 2;
} else if chars[i] == '*' && chars.get(i + 1) == Some(&'/') {
depth -= 1;
i += 2;
if depth == 0 {
break;
}
} else {
if chars[i] == '\n' {
line += 1;
}
i += 1;
}
}
} else if c == '"' {
let start = line;
let (text, end, lines) = read_string(&chars, i + 1);
tokens.push(Tok { kind: Kind::Str(text), line: start });
line += lines;
i = end;
} else if c == '\'' {
// A char literal (`'x'`, `'\n'`, `'\u{1F600}'`) is one token; anything else is a lifetime.
let is_char = next == Some('\\') || chars.get(i + 2) == Some(&'\'');
if is_char {
i += if next == Some('\\') { 3 } else { 1 };
while i < chars.len() && chars[i] != '\'' {
i += 1;
}
i += 1;
tokens.push(Tok { kind: Kind::Other, line });
} else {
tokens.push(Tok { kind: Kind::Punct('\''), line });
i += 1;
}
} else if c.is_alphabetic() || c == '_' {
let start = i;
while i < chars.len() && (chars[i].is_alphanumeric() || chars[i] == '_') {
i += 1;
}
let word: String = chars[start..i].iter().collect();
let raw_prefix = word == "r" || word == "br";
let hashes = chars[i..].iter().take_while(|c| **c == '#').count();
if raw_prefix && chars.get(i + hashes) == Some(&'"') {
let begin = i + hashes + 1;
let closing: Vec<char> = std::iter::once('"').chain(std::iter::repeat_n('#', hashes)).collect();
let end = (begin..chars.len()).find(|at| chars[*at..].starts_with(&closing)).unwrap_or(chars.len());
let text: String = chars[begin..end].iter().collect();
let lines = text.matches('\n').count();
tokens.push(Tok { kind: Kind::Str(text), line });
line += lines;
i = (end + closing.len()).min(chars.len());
} else {
tokens.push(Tok { kind: Kind::Ident(word), line });
}
} else if c.is_ascii_digit() {
while i < chars.len() && (chars[i].is_alphanumeric() || chars[i] == '_') {
i += 1;
}
tokens.push(Tok { kind: Kind::Other, line });
} else {
tokens.push(Tok { kind: Kind::Punct(c), line });
i += 1;
}
}
tokens
}
/// Read a (non-raw) string body starting after its opening quote: the decoded text, the index after
/// the closing quote and how many newlines the literal spans.
fn read_string(chars: &[char], mut i: usize) -> (String, usize, usize) {
let (mut text, mut lines) = (String::new(), 0);
while i < chars.len() && chars[i] != '"' {
if chars[i] != '\\' {
if chars[i] == '\n' {
lines += 1;
}
text.push(chars[i]);
i += 1;
continue;
}
i += 1;
match chars.get(i).copied() {
Some('n') => text.push('\n'),
Some('t') => text.push('\t'),
Some('r') => text.push('\r'),
Some('0') => text.push('\0'),
Some('x') => {
let hex: String = chars[i + 1..(i + 3).min(chars.len())].iter().collect();
text.extend(u8::from_str_radix(&hex, 16).ok().map(char::from));
i += 2;
}
Some('u') => {
let close = (i..chars.len()).find(|at| chars[*at] == '}').unwrap_or(chars.len() - 1);
let hex: String = chars[i + 2..close].iter().filter(|c| **c != '_').collect();
text.extend(u32::from_str_radix(&hex, 16).ok().and_then(char::from_u32));
i = close;
}
// A backslash before a newline joins the lines and drops the next line's indentation.
Some('\n') => {
lines += 1;
while chars.get(i + 1).is_some_and(|c| c.is_whitespace()) {
if chars[i + 1] == '\n' {
lines += 1;
}
i += 1;
}
}
Some(other) => text.push(other),
None => {}
}
i += 1;
}
(text, i + 1, lines)
}
/// The index of the token that closes the group opened at `open`.
fn matching(tokens: &[Tok], open: usize) -> usize {
let Kind::Punct(opener) = tokens[open].kind else { return open };
let closer = match opener {
'(' => ')',
'{' => '}',
_ => ']',
};
let mut depth = 0;
for (at, token) in tokens.iter().enumerate().skip(open) {
match token.kind {
Kind::Punct(c) if c == opener => depth += 1,
Kind::Punct(c) if c == closer => {
depth -= 1;
if depth == 0 {
return at;
}
}
_ => {}
}
}
tokens.len() - 1
}
fn is_punct(token: Option<&Tok>, c: char) -> bool {
token.is_some_and(|token| token.kind == Kind::Punct(c))
}
fn is_ident(token: Option<&Tok>, name: &str) -> bool {
token.is_some_and(|token| matches!(&token.kind, Kind::Ident(word) if word == name))
}
/// Is `tokens[at..]` the attribute `#[cfg(test)]`?
fn is_cfg_test(tokens: &[Tok], at: usize) -> bool {
is_punct(tokens.get(at), '#')
&& is_punct(tokens.get(at + 1), '[')
&& is_ident(tokens.get(at + 2), "cfg")
&& is_punct(tokens.get(at + 3), '(')
&& is_ident(tokens.get(at + 4), "test")
&& is_punct(tokens.get(at + 5), ')')
&& is_punct(tokens.get(at + 6), ']')
}
/// Does a comma-terminated entry start at `at`: a struct field (or a field in a struct literal,
/// `name: …`) or an enum variant (`Name,` `Name(…)` `Name { … }` `Name = 3`)?
fn starts_entry(tokens: &[Tok], mut at: usize) -> bool {
if is_ident(tokens.get(at), "pub") {
at += 1;
if is_punct(tokens.get(at), '(') {
at = matching(tokens, at) + 1;
}
}
const STATEMENTS: [&str; 10] = ["if", "let", "match", "for", "while", "loop", "unsafe", "return", "else", "break"];
let Some(Kind::Ident(name)) = tokens.get(at).map(|token| &token.kind) else { return false };
if STATEMENTS.contains(&name.as_str()) {
return false;
}
let field = is_punct(tokens.get(at + 1), ':') && !is_punct(tokens.get(at + 2), ':');
let variant = matches!(tokens.get(at + 1).map(|token| &token.kind), Some(Kind::Punct(',' | '(' | '{' | '=' | '}')));
field || variant
}
/// The index just past the item that starts at `at` (after its attributes): a struct field, a
/// field in a struct literal or an enum variant ends at its comma, anything else at its closing
/// brace or its `;`. Groups are jumped over, so a `;` in `[u8; 4]` or a `,` in `f(a, b)` ends nothing.
fn skip_item(tokens: &[Tok], mut at: usize) -> usize {
while is_punct(tokens.get(at), '#') && is_punct(tokens.get(at + 1), '[') {
at = matching(tokens, at + 1) + 1;
}
let entry = starts_entry(tokens, at);
while let Some(token) = tokens.get(at) {
match token.kind {
Kind::Punct('(' | '[') => at = matching(tokens, at) + 1,
Kind::Punct('{') if entry => at = matching(tokens, at) + 1,
Kind::Punct('{') => return matching(tokens, at) + 1,
Kind::Punct(';') => return at + 1,
Kind::Punct(',') if entry => return at + 1,
// The enclosing block ends: the last entry has no comma.
Kind::Punct('}' | ')' | ']') if entry => return at,
_ => at += 1,
}
}
at
}
/// The literal keys of every non-test `tr(…)` call in one source file.
fn scan_source(source: &str) -> Vec<Use> {
let tokens = lex(source);
let mut found = Vec::new();
let mut at = 0;
while at < tokens.len() {
if is_cfg_test(&tokens, at) {
at = skip_item(&tokens, at + 7);
continue;
}
let is_call = is_ident(tokens.get(at), "tr") && is_punct(tokens.get(at + 1), '(') && !(at > 0 && is_ident(tokens.get(at - 1), "fn"));
if is_call {
let close = matching(&tokens, at + 1);
let mut inner = &tokens[at + 2..close];
// rustfmt wraps a long call as `tr(\n "…",\n)`: the trailing comma is not an argument.
if let [rest @ .., Tok { kind: Kind::Punct(','), .. }] = inner {
inner = rest;
}
let mut keys = Vec::new();
match inner {
[Tok { kind: Kind::Str(key), line }] => keys.push((key.clone(), *line)),
// `tr(if flag { "On" } else { "Off" })` and `tr(match x { A => "a", B => { "b" } })`:
// each literal that is a whole branch is a key.
[Tok { kind: Kind::Ident(word), .. }, ..] if word == "if" || word == "match" => {
for window in inner.windows(3) {
if let [before, Tok { kind: Kind::Str(key), line }, after] = window {
let braced = before.kind == Kind::Punct('{') && after.kind == Kind::Punct('}');
let arm = before.kind == Kind::Punct('>') && matches!(after.kind, Kind::Punct(',' | '}'));
if braced || arm {
keys.push((key.clone(), *line));
}
}
}
}
_ => {}
}
found.extend(keys.into_iter().filter(|(key, _)| !key.is_empty()).map(|(key, line)| Use { key, line }));
}
at += 1;
}
found
}
/// Every `.rs` file under `dir` that is not a test file, in a stable order.
fn source_files(dir: &Path, out: &mut Vec<PathBuf>) {
let Ok(entries) = fs::read_dir(dir) else { return };
let mut paths: Vec<PathBuf> = entries.filter_map(|entry| entry.ok().map(|entry| entry.path())).collect();
paths.sort();
for path in paths {
let name = path.file_name().and_then(|name| name.to_str()).unwrap_or_default();
if path.is_dir() {
if name != "tests" {
source_files(&path, out);
}
} else if name.ends_with(".rs") && name != "tests.rs" && !name.starts_with("tests_") {
out.push(path);
}
}
}
/// The literal keys of the `tr(…)` calls in one source file.
pub(super) fn messages_in(source: &str) -> BTreeSet<String> {
scan_source(source).into_iter().map(|used| used.key).collect()
}
/// The literal key of every `tr("…")` call in the app's non-test source.
pub(super) fn source_messages() -> BTreeSet<String> {
let root = Path::new(env!("CARGO_MANIFEST_DIR"));
let mut files = Vec::new();
for source in SOURCES {
assert!(root.join(source).is_dir(), "{source} (relative to the crate) is not a folder: the report has nothing to scan");
source_files(&root.join(source), &mut files);
}
let mut keys = BTreeSet::new();
for path in files {
let text = fs::read_to_string(&path).unwrap_or_else(|error| panic!("{}: {error}", path.display()));
keys.extend(messages_in(&text));
}
keys
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn a_file_named_tests_rs_is_test_code_and_is_not_read() {
// Given a folder with a file of the app and the `tests.rs` of a `#[cfg(test)] mod tests;`
let dir = std::env::temp_dir().join(format!("lightcraft-gaps-{}", std::process::id()));
fs::create_dir_all(dir.join("sub")).unwrap();
for file in ["app.rs", "sub/tests.rs", "sub/widget.rs"] {
fs::write(dir.join(file), "").unwrap();
}
// When the source files are listed
let mut files = Vec::new();
source_files(&dir, &mut files);
let names: Vec<PathBuf> = files.iter().map(|path| path.strip_prefix(&dir).unwrap().to_path_buf()).collect();
fs::remove_dir_all(&dir).unwrap();
// Then the tests.rs is not among them (compared as paths: the separator is `\` on Windows)
assert_eq!(names, [PathBuf::from("app.rs"), Path::new("sub").join("widget.rs")]);
}
#[test]
fn the_scanner_reads_literals_and_skips_comments_strings_and_tests() {
let source = r##"
use crate::i18n::tr;
fn f(ui: &mut Ui, on: bool, label: &str) {
ui.label(tr("Plain"));
ui.label(crate::i18n::tr("Qualified"));
ui.label(format!("{}: x", i18n::tr("In a macro")));
ui.label(Locale::De.tr("Method"));
ui.label(tr("Two \"quoted\" \u{2605} words"));
ui.label(tr("Wrapped \
line"));
ui.label(tr(r#"Raw "string""#));
ui.label(tr(if on { "On" } else { "Off" }));
ui.label(tr(label));
ui.label(tr(&format!("{label}")));
// tr("In a line comment")
/* tr("In a /* nested */ block comment") */
let s = "tr(\"In a string\")"; let c = '"'; let r = &'a str;
ui.label(tr("After the char and lifetime"));
}
fn tr(source: &str) -> &str { source }
#[cfg(test)]
mod tests {
fn t() { tr("In a test module"); }
}
#[cfg(test)]
fn only_in_tests() { tr("In a test fn"); }
fn last() { tr("Last"); }
"##;
let keys: Vec<(String, usize)> = scan_source(source).into_iter().map(|used| (used.key, used.line)).collect();
let keys: Vec<(&str, usize)> = keys.iter().map(|(key, line)| (key.as_str(), *line)).collect();
assert_eq!(
keys,
vec![
("Plain", 4),
("Qualified", 5),
("In a macro", 6),
("Method", 7),
("Two \"quoted\" \u{2605} words", 8),
("Wrapped line", 9),
("Raw \"string\"", 11),
("On", 12),
("Off", 12),
("After the char and lifetime", 18),
("Last", 27),
]
);
}
#[test]
fn the_scanner_reads_wrapped_calls_and_match_arms_and_skips_only_the_test_item() {
let source = r#"
fn f(m: Mode) {
ui.label(crate::i18n::tr(
"Wrapped by rustfmt",
));
ui.label(tr(match m { Mode::A => "Arm", Mode::B => { "Braced arm" }, Mode::C => "Last arm" }));
ui.label(tr(match m { Mode::A => other(), Mode::B => "Mixed arm" }));
let r = Renderer {
#[cfg(test)]
built: 0,
after: tr("After a test-only field"),
};
}
struct S {
#[cfg(test)]
seen: u32
}
fn g() { tr("After a last test-only field"); }
enum E {
A,
#[cfg(test)]
B { x: u8 },
#[cfg(test)]
C(u8),
#[cfg(test)]
D = 3,
F,
}
fn after_enum() { tr("After test-only variants"); }
#[cfg(test)]
fn h() -> [u8; 4] { tr("Test only"); [0; 4] }
#[cfg(not(test))]
fn n() { tr("Not a test"); }
"#;
let source = format!("{source}fn crlf() {{\r\n tr(\"Crlf \\\r\n line\");\r\n}}\r\n");
let keys: Vec<String> = scan_source(&source).into_iter().map(|used| used.key).collect();
assert_eq!(
keys,
[
"Wrapped by rustfmt",
"Arm",
"Braced arm",
"Last arm",
"Mixed arm",
"After a test-only field",
"After a last test-only field",
"After test-only variants",
"Not a test",
"Crlf line"
]
);
}
}
+34 -6
View File
@@ -943,14 +943,40 @@ fn vietnamese_panels_dialogs_and_diacritics_paint_with_bundled_fonts() {
}
/// The messages each language lacks, which it shows in English. Never fails: `cargo xtask ci`
/// runs it with `--nocapture`, so the list lands in the gate log. Plain messages are every key
/// some catalog has plus the labels the UI passes to `tr` from tables (commands, controls, rule
/// fields…); formats are every key some `*-formats.json` has plus every `tr_format!` message in
/// the app's source. An empty translation counts as missing.
/// some catalog has, every `tr("…")` literal in the app's source (`gaps.rs`, wrapped calls and
/// `if`/`match` branches included, so a string no language has yet is listed too) and the
/// labels the UI passes to `tr` from tables (commands, controls, rule fields…); formats are
/// every key some `*-formats.json` has plus every `tr_format!` message in the app's source. An
/// empty translation counts as missing.
#[test]
fn translation_gaps_report() {
let notes = whats_new_lines();
let messages: std::collections::BTreeSet<String> = plain_messages().into_iter().filter(|m| !notes.contains(&m.as_str())).collect();
let formats = format_messages();
println!("{}", gaps_text(&messages, &format_messages(), &notes));
}
/// A string only the source parsing finds (a call rustfmt wrapped, the branches of an `if` or a
/// `match`) is in no catalog, and the report still lists it for every language.
#[test]
fn translation_gaps_report_lists_strings_no_catalog_has() {
let found = gaps::messages_in(
"fn f(m: u8) {\n ui.label(crate::i18n::tr(\n \"Only wrapped here\",\n ));\n \
ui.label(tr(if m == 0 { \"Only in an if\" } else { \"Only in an else\" }));\n \
ui.label(tr(match m { 1 => \"Only in a match\", _ => \"Only in a last arm\" }));\n}\n",
);
assert_eq!(found.len(), 5, "{found:?}");
let text = gaps_text(&found, &Default::default(), &[]);
for language in Locale::ALL.iter().filter(|language| **language != Locale::En) {
let line = text.lines().find(|line| line.starts_with(&format!("{}: ", language.code()))).expect("a line per language");
assert!(line.contains("5 messages"), "{line}");
}
for key in &found {
assert!(text.contains(&format!("{key:?}")), "{key}");
}
}
/// The report: the totals, then per language its counts and the lists.
fn gaps_text(messages: &std::collections::BTreeSet<String>, formats: &std::collections::BTreeSet<String>, notes: &[&str]) -> String {
let quoted = |list: &[&str]| list.iter().map(|m| format!("{m:?}")).collect::<Vec<_>>().join(", ");
let mut out =
format!("Translation gaps, shown in English ({} messages, {} formats, {} What's New lines):\n", messages.len(), formats.len(), notes.len());
@@ -974,11 +1000,12 @@ fn translation_gaps_report() {
out.push_str(&format!(" formats: {}\n", quoted(&missing_formats)));
}
}
println!("{out}");
out
}
/// Every plain message: the keys of every catalog (but contextual entries, which a language adds
/// only where it needs one) and the labels the UI translates from tables.
/// only where it needs one), the `tr("…")` literals in the source and the labels the UI
/// translates from tables.
fn plain_messages() -> std::collections::BTreeSet<String> {
use lightcraft_catalog::rules;
let mut labels: Vec<&str> = lightcraft_engine::command_specs().iter().map(|spec| spec.label).collect();
@@ -1020,6 +1047,7 @@ fn plain_messages() -> std::collections::BTreeSet<String> {
.flat_map(|language| language.catalog().keys())
.filter(|key| !key.starts_with(&contextual))
.cloned()
.chain(gaps::source_messages())
.chain(labels.into_iter().map(str::to_string))
.collect()
}
+23 -2
View File
@@ -508,7 +508,7 @@ fn model_row(app: &mut LightcraftApp, ui: &mut egui::Ui, t: &Tokens, m: &Value,
});
}
(Some("failed"), Some(d)) => {
let why = sentence(d["error"].as_str().unwrap_or("The download failed"));
let why = download_failure(d);
ui.add(egui::Label::new(RichText::new(why).font(t.font(11.5)).color(t.caution)).wrap());
}
_ => {}
@@ -664,10 +664,15 @@ pub(super) fn mb(bytes: Option<u64>) -> String {
}
}
/// Why a model download failed, as a sentence: the engine's reason, or, when it gave none, a message in the UI language.
pub(crate) fn download_failure(d: &Value) -> String {
sentence(d["error"].as_str().unwrap_or_else(|| tr("The download failed")))
}
pub(super) fn sentence(s: &str) -> String {
let s = s.trim();
let mut out = crate::i18n::upper_first(s);
if !out.is_empty() && !out.ends_with(['.', '!', '?']) {
if !out.is_empty() && !out.ends_with(['.', '!', '?', '。', '!', '?']) {
out.push('.');
}
out
@@ -765,3 +770,19 @@ pub fn model_dialog(app: &mut LightcraftApp, ui: &mut egui::Ui, t: &Tokens, info
};
ui.label(RichText::new(tr(closing)).font(t.font(11.5)).color(t.text_dim));
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn a_download_failure_without_a_reason_is_said_in_the_ui_language() {
let de = crate::i18n::Locale::De;
crate::i18n::set_language(de);
let said = download_failure(&json!({}));
crate::i18n::set_language(crate::i18n::Locale::En);
assert_eq!(said, sentence(de.tr("The download failed")));
assert_eq!(download_failure(&json!({"error": "no space left"})), "No space left.", "the engine's own reason is shown as given");
assert_eq!(sentence("下载失败。"), "下载失败。", "a Chinese or Japanese full stop ends the sentence");
}
}
+1 -1
View File
@@ -204,7 +204,7 @@ pub fn show(app: &mut LightcraftApp, ui: &mut egui::Ui, id: PhotoId) {
if m == WbMode::Custom {
continue;
}
if ui.selectable_label(d.wb.mode == m, m.label()).clicked() {
if ui.selectable_label(d.wb.mode == m, crate::i18n::tr(m.label())).clicked() {
let mode = serde_json::to_value(m).unwrap_or_default();
let _ = app.run("develop.wb", json!({"mode": mode}));
}
+1 -1
View File
@@ -14,7 +14,7 @@ pub fn show(app: &mut LightcraftApp, ctx: &egui::Context) {
return;
}
let vid = egui::ViewportId::from_hash_of("lightcraft-second-window");
let builder = egui::ViewportBuilder::default().with_title("LightCraft — Second Window").with_inner_size([960.0, 640.0]);
let builder = egui::ViewportBuilder::default().with_title(crate::i18n::tr("LightCraft — Second Window")).with_inner_size([960.0, 640.0]);
ctx.show_viewport_immediate(vid, builder, |ui, class| {
// 0.37 passes the viewport's root `Ui` (not a `Context`). Do not enter `root_ui` from it.
// (without native windows — web, headless — egui wraps this in a floating window)
+26 -3
View File
@@ -254,7 +254,7 @@ pub struct Renderer {
/// asks every frame.
failed: HashMap<Slot, (u64, String, u64, PhotoId)>,
/// The catalog revision seen at the last poll: a failure is retried once the catalog changes
/// (a relinked or re-imported file).
/// its photo (a relinked or re-imported file), see [`Self::follow_catalog`].
catalog_rev: u64,
/// Prefetch slot → key of the last job submitted (each runs once).
prefetched: HashMap<Slot, u64>,
@@ -843,11 +843,34 @@ impl Renderer {
}
/// Whether `slot`'s pending render asks again for the key that last failed (a library change
/// retries failures): what is on screen stays what the failure left until it answers.
/// to its photo retries it): what is on screen stays what the failure left until it answers.
pub fn retrying(&self, slot: Slot) -> bool {
self.pending.get(&slot).zip(self.failed.get(&slot)).is_some_and(|(p, f)| p.0 == f.0)
}
/// Follow the library to `catalog`'s revision. A failure stands while its photo is unchanged:
/// only the photos the ops since the last poll touched are tried again, and every photo when
/// the catalog can't say which. So faces found or metadata written for other photos don't
/// send each undecodable file back to the decoder (issue #2682: 37 tries each in 154 s idle).
/// A file `files` knows to be missing (its drive unplugged) is still tried at every change, so
/// its photo comes back with the drive, as before.
fn follow_catalog(&mut self, catalog: &lightcraft_catalog::Catalog, files: &lightcraft_engine::availability::Availability) {
let rev = catalog.revision;
if rev == self.catalog_rev {
return;
}
if let Some(touched) = catalog.touched_since(self.catalog_rev) {
let missing =
|id| matches!(catalog.photo(id).map(|p| &p.source), Some(lightcraft_catalog::Source::File { path }) if files.is_offline(path));
for f in self.failed.values_mut() {
if f.2 == self.catalog_rev && touched.binary_search(&f.3).is_err() && !missing(f.3) {
f.2 = rev;
}
}
}
self.catalog_rev = rev;
}
/// The slots with a render pending (diagnostics: `ui.inspect`).
pub fn pending_slots(&self) -> Vec<String> {
self.pending.keys().map(|s| format!("{s:?}")).collect()
@@ -944,7 +967,7 @@ impl Renderer {
self.forget_all();
}
self.preview_generation = Some((Arc::downgrade(cache), generation));
self.catalog_rev = session.catalog.revision;
self.follow_catalog(&session.catalog, &session.media.availability);
self.frame += 1;
self.trim_stages();
// wasm: run one job per frame on this thread, timed with the host clock
@@ -218,6 +218,55 @@ fn larger_texture_for_another_key_does_not_count_as_current() {
assert!(r.thumb_current(&p, 256, 10), "the recorded key's larger texture serves the smaller bucket");
}
/// Issue #2682: writes to other photos in the background (faces found, metadata read) moved
/// the catalog revision on and sent every undecodable file back to the decoder, 37 times each
/// in 154 s of idle. A failure is tried again only when its own photo changes, when the
/// catalog can't say which photos did, or, at any change, when its file is known to be missing.
#[test]
fn a_failed_thumbnail_is_retried_only_when_its_photo_changes() {
use std::sync::atomic::{AtomicBool, Ordering};
let mut catalog = Catalog::default();
let p = photo();
let other = PhotoId(2);
catalog.apply(Op::AddPhoto { photo: Box::new((*p).clone()) }).unwrap();
let other_photo = Photo::new(other, Source::File { path: "other.jpg".into() }, "other.jpg", "JPEG", 60, 40, "2026-01-01");
catalog.apply(Op::AddPhoto { photo: Box::new(other_photo) }).unwrap();
// the files are there (an undecodable file is still a file)
let here = Arc::new(AtomicBool::new(true));
let mut files = lightcraft_engine::availability::Availability::default();
let h = here.clone();
files.set_probe(Arc::new(move |_| h.load(Ordering::SeqCst)));
let slot = Slot::Thumb(p.id);
let mut r = Renderer::default();
r.follow_catalog(&catalog, &files);
r.failed.insert(slot, (77, "unrecognised image format".into(), r.catalog_rev, p.id));
assert!(!r.request_needed(slot, 77, 10), "a failure stands");
// the other photo changes, op after op, as background work does
for rating in 1..=5 {
catalog.apply(Op::SetRating { id: other, rating }).unwrap();
r.follow_catalog(&catalog, &files);
assert!(!r.request_needed(slot, 77, 10), "another photo's change (rating {rating}) retries nothing");
}
// a change to the photo itself is a reason to try again
catalog.apply(Op::SetRating { id: p.id, rating: 2 }).unwrap();
r.follow_catalog(&catalog, &files);
assert!(r.request_needed(slot, 77, 10), "its own photo changed");
// so is a change the catalog can't attribute to photos
r.failed.insert(slot, (77, "unrecognised image format".into(), r.catalog_rev, p.id));
assert!(!r.request_needed(slot, 77, 10));
let album = catalog.alloc_album_id();
catalog.apply(Op::AddAlbum { album: lightcraft_catalog::Album::new(album, "Trip") }).unwrap();
r.follow_catalog(&catalog, &files);
assert!(r.request_needed(slot, 77, 10), "which photos changed is unknown");
// a file known to be missing (its drive unplugged) is tried at every change, as before, so
// the photo comes back with its drive
r.failed.insert(slot, (77, "file not found".into(), r.catalog_rev, p.id));
here.store(false, Ordering::SeqCst);
catalog.apply(Op::SetRating { id: other, rating: 1 }).unwrap();
r.follow_catalog(&catalog, &files);
assert!(r.request_needed(slot, 77, 10), "a missing file is tried again");
}
#[test]
fn a_fast_draft_is_drawn_in_the_frame_that_asked_for_it() {
let mut s = Session::new();
+3 -2
View File
@@ -1,6 +1,6 @@
# Gaps: where LightCraft falls short of Lightroom
> **Last reviewed:** 2026-10-11 · **Last updated:** 2026-10-29 · **Change:** minor (LR-LIB-VIRTUALCOPY: default number exhaustion is validated before copy creation; gap 8: lens profile work is tracked in #329; gap 30: the Info panel shows the selected photos' shared metadata and marks mixed fields; gap 28: ⌘⌥⇧C / ⌘⌥⇧V copy and paste metadata; gap 13: before a Lightroom catalog import the app asks merge or new library, #2672; gap 28: F8 shows / hides the right panel; import review album hierarchy, #2362; gap 20: Minolta MRW decodes; gap 10: 551 models verified; gap 15: Print Page Options — page numbers, page info, crop marks; gap 28: `\` shows / hides the Filter Bar in the grids; gap 21: Indonesian interface shipped, every message but What's New; gap 27: the Windows x64 installer verified on Windows 11; the Settings → Apps uninstall confirmation remains; gap 28: ⌘L Enable Filters switches the filter off and on; gap 15: Japanese photo and postcard paper sizes in the Print page setup and PDF; typed GPS input now rejects malformed coordinates before metadata changes; LR-MAP-TRACKLOG decodes GPX character references in coordinates, elevations and timestamps; malformed references error; CDATA stays literal; ranked gaps unchanged; gap 8: lens profile work is tracked in #329; gap 30: the Info panel shows the selected photos' shared metadata and marks mixed fields; gap 28: ⌘⌥⇧C / ⌘⌥⇧V copy and paste metadata; gap 13: before a Lightroom catalog import the app asks merge or new library, #2672; gap 28: F8 shows / hides the right panel; import review album hierarchy, #2362; gap 20: Minolta MRW decodes; gap 10: 551 models verified; gap 15: Print Page Options — page numbers, page info, crop marks; gap 28: `\` shows / hides the Filter Bar in the grids; gap 21: Indonesian interface shipped, every message but What's New; gap 27: the Windows x64 installer verified on Windows 11; the Settings → Apps uninstall confirmation remains; gap 28: ⌘L Enable Filters switches the filter off and on; gap 15: Japanese photo and postcard paper sizes in the Print page setup and PDF; import: checked rename-sequence exhaustion; import review: remembered thumbnail size and density-aware previews (#2237, part of #2056); pre-import loupe/keyboard culling remains open; no ranked gap closes; gap 8: lens profile work is tracked in #329; gap 30: the Info panel shows the selected photos' shared metadata and marks mixed fields; gap 28: ⌘⌥⇧C / ⌘⌥⇧V copy and paste metadata; gap 13: before a Lightroom catalog import the app asks merge or new library, #2672; gap 28: F8 shows / hides the right panel; import review album hierarchy, #2362; gap 20: Minolta MRW decodes; gap 10: 551 models verified; gap 15: Print Page Options — page numbers, page info, crop marks; gap 28: `\` shows / hides the Filter Bar in the grids; gap 21: Indonesian interface shipped, every message but What's New; gap 27: the Windows x64 installer verified on Windows 11; the Settings → Apps uninstall confirmation remains; gap 28: ⌘L Enable Filters switches the filter off and on; gap 15: Japanese photo and postcard paper sizes in the Print page setup and PDF)
> **Last reviewed:** 2026-10-11 · **Last updated:** 2026-10-29 · **Change:** minor (LR-LIB-VIRTUALCOPY: default number exhaustion is validated before copy creation; gap 8: lens profile work is tracked in #329; gap 30: the Info panel shows the selected photos' shared metadata and marks mixed fields; gap 28: ⌘⌥⇧C / ⌘⌥⇧V copy and paste metadata; gap 13: before a Lightroom catalog import the app asks merge or new library, #2672; gap 28: F8 shows / hides the right panel; import review album hierarchy, #2362; gap 20: Minolta MRW decodes; gap 10: 551 models verified; gap 15: Print Page Options — page numbers, page info, crop marks; gap 28: `\` shows / hides the Filter Bar in the grids; gap 21: Indonesian interface shipped, every message but What's New; gap 27: the Windows x64 installer verified on Windows 11; the Settings → Apps uninstall confirmation remains; gap 28: ⌘L Enable Filters switches the filter off and on; gap 15: Japanese photo and postcard paper sizes in the Print page setup and PDF; typed GPS input now rejects malformed coordinates before metadata changes; LR-MAP-TRACKLOG decodes GPX character references in coordinates, elevations and timestamps; malformed references error; CDATA stays literal; ranked gaps unchanged; gap 8: lens profile work is tracked in #329; gap 30: the Info panel shows the selected photos' shared metadata and marks mixed fields; gap 28: ⌘⌥⇧C / ⌘⌥⇧V copy and paste metadata; gap 13: before a Lightroom catalog import the app asks merge or new library, #2672; gap 28: F8 shows / hides the right panel; import review album hierarchy, #2362; gap 20: Minolta MRW decodes; gap 10: 551 models verified; gap 15: Print Page Options — page numbers, page info, crop marks; gap 28: `\` shows / hides the Filter Bar in the grids; gap 21: Indonesian interface shipped, every message but What's New; gap 27: the Windows x64 installer verified on Windows 11; the Settings → Apps uninstall confirmation remains; gap 28: ⌘L Enable Filters switches the filter off and on; gap 15: Japanese photo and postcard paper sizes in the Print page setup and PDF; import: checked rename-sequence exhaustion; import review: remembered thumbnail size and density-aware previews (#2237, part of #2056); pre-import loupe/keyboard culling remains open; no ranked gap closes; gap 8: lens profile work is tracked in #329; gap 30: the Info panel shows the selected photos' shared metadata and marks mixed fields; gap 28: ⌘⌥⇧C / ⌘⌥⇧V copy and paste metadata; gap 13: before a Lightroom catalog import the app asks merge or new library, #2672; gap 28: F8 shows / hides the right panel; import review album hierarchy, #2362; gap 20: Minolta MRW decodes; gap 10: 551 models verified; gap 15: Print Page Options — page numbers, page info, crop marks; gap 28: `\` shows / hides the Filter Bar in the grids; gap 21: Indonesian interface shipped, every message but What's New; gap 27: the Windows x64 installer verified on Windows 11; the Settings → Apps uninstall confirmation remains; gap 28: ⌘L Enable Filters switches the filter off and on; gap 15: Japanese photo and postcard paper sizes in the Print page setup and PDF; gap 9: CI runs the tests on Linux x64 since #2667; macOS, Windows and the GPU equivalence tests still don't; gap 8: lens profile work is tracked in #329; gap 30: the Info panel shows the selected photos' shared metadata and marks mixed fields; gap 28: ⌘⌥⇧C / ⌘⌥⇧V copy and paste metadata; gap 13: before a Lightroom catalog import the app asks merge or new library, #2672; gap 28: F8 shows / hides the right panel; import review album hierarchy, #2362; gap 20: Minolta MRW decodes; gap 10: 551 models verified; gap 15: Print Page Options — page numbers, page info, crop marks; gap 28: `\` shows / hides the Filter Bar in the grids; gap 21: Indonesian interface shipped, every message but What's New; gap 27: the Windows x64 installer verified on Windows 11; the Settings → Apps uninstall confirmation remains; gap 28: ⌘L Enable Filters switches the filter off and on; gap 15: Japanese photo and postcard paper sizes in the Print page setup and PDF)
Every known shortfall, one entry each, ranked by user impact (how many Lightroom users hit it, and
how hard it blocks them), then by effort. **Agents pick work from the top** (the first entry nobody is
@@ -23,7 +23,7 @@ Hours are Opus 5.5 agent wall-clock hours (see [target-app-parity.md](target-app
| 6 B | **Compressed ORF** (every Olympus / OM body since ~2008) | measured: 66 of 78 Olympus / OM models preview-only; `orf.rs` refuses; OM bucket 3% of photographers, 3% of them fully work | +2.6 points; best gain per hour of any raw gap (~0.2) | 8–15 | [raw-parity](raw-parity.md#compressed-orf-a-clean-room-starting-point) (the two Olympus patents that describe the method) |
| 7 | **Nikon High Efficiency NEF** (HE / HE★ on Z 8, Z 9, Z 6III, Z f, Z50II, Z5II when set to HE) | named and preview only (#193); needs a pure-Rust JPEG XS decoder | +1.1 points (only shots taken in HE; lossless works on the same bodies); low gain per hour (~0.04), so not a beta blocker | 20–40 | [raw-parity](raw-parity.md) |
| 8 B | **No lens profile database** (LR-EDIT-OPTICS-PROFILE): only DNG opcodes, RW2 in-file distortion, Sony ILCE-7RM4A, full-frame ILCE-7CR distortion (Auto only) and ILCE-7RM6 distortion (`docs/sony-ilce7rm6-lens-corrections.md`) and Nikon Z 6II / Z 8 / Z f distortion (`docs/nikon-lens-corrections.md`); tracked in #329 | Adobe ships 3,635 lens profiles; we never use them | distortion / vignetting correction is a default step for many | 40–80 + calibration shots | [raw-parity](raw-parity.md#lens-profiles) |
| 9 B | **Tests don't run in CI on macOS or Windows**: Linux x64 runs `cargo xtask ci` on every PR and push to main (`.github/workflows/ci.yml`) and FreeBSD runs `cargo test`; the others build packages | `.github/workflows/` (ci, freebsd, packaging-lint, release, windows-arm64); the linux-riscv64 release job added in 0.6.0 (#844) runs only `lightcraft-cli --version` under QEMU; macOS / Windows jobs: #1148 | regressions in `cfg(target_os)` code reach macOS and Windows users | 6–12 | [target-app-parity](target-app-parity.md#by-dimension) |
| 9 B | **Tests don't run in CI on macOS or Windows, and no CI job runs the GPU equivalence tests**: the CI gate (`ci.yml`, #2667) runs `cargo xtask ci`, which includes `cargo test`, on Linux x64 for every push to `main` and every pull request; FreeBSD runs `cargo test` nightly, on pushes to `release` and on PRs that change its workflow or `packaging/freebsd/`; the macOS and Windows jobs build packages | `.github/workflows/` (ci, freebsd, packaging-lint, release, sonarcloud, windows-arm64); the gate's runner has Mesa software Vulkan drivers installed, but `Gpu::new` refuses software adapters (`crates/gpu/src/ctx.rs`), so the CPU ↔ GPU equivalence tests skip; the linux-riscv64 release job added in 0.6.0 (#844) runs only `lightcraft-cli --version` under QEMU; #1148 (open, not merged; #2667 names it superseded) has the macOS and Windows test legs and a `LIGHTCRAFT_GPU_ALLOW_SOFTWARE` opt-in that runs the GPU tests on lavapipe, Metal and WARP | a regression that only shows on macOS or Windows, or only on a GPU, reaches users; `cargo xtask ci` runs only on Linux in CI | 6–12 | [target-app-parity](target-app-parity.md#by-dimension) |
| 10 B | **Per-model verification thin, plus cheap per-body decode fixes**: 551 of 1,446 Adobe models verified (38%), ~85% of photographers on a verified body; Nikon 5 bodies verified, Canon 34, Leica 14 (the Q3 by a recorded check of 38 private DNGs). Cheap fixes: Z 6II packed 14-bit NEF (#769, PR #671), Sony A100 regression (#702); F828 SRF now discovered and imported as preview-only, sensor decoding still missing, DSLR-A200…A390 / A850 12-bit ARW (#535) | measured: [raw/coverage.tsv](raw/coverage.tsv) | per-body bugs (levels, crops, WB) surface only from users | 25–45 | [raw-parity](raw-parity.md#by-maker-measured) |
| 11 | **Enhance: Raw Details, Super Resolution; AI denoise without shippable weights or X-Trans** | ENH rows 0%; denoise Bayer only, RawNIND weights GPL and opt-in | Fujifilm users get no AI denoise; nobody gets it out of the box | 30–60 + model decision | [raw-parity](raw-parity.md#demosaic-levels-crops-and-lens-metadata) |
| 12 | **Content-aware / generative remove, detect distractions, reflections removal** | REM rows 75%; patch synthesis missing | cleanup work goes back to Photoshop | 25–45 (+ generative model) | [target-app-parity](target-app-parity.md#ai) |
@@ -97,6 +97,7 @@ Beta-blocking gaps (B) total **~230–430 h**; with the stability and platform w
| 2026-10-24 | minor | Gap 30 shrinks: the Info panel's Show Metadata For (Target Photo / Selected Photos, `view.infoSelectedPhotos`) shows the selected photos' shared values and marks fields that differ as Mixed; the All Metadata dialog remains; 1–3 h (was 4–8) |
| 2026-10-24 | patch | Typed GPS input now validates the complete coordinate expression, rejecting unknown text, wrong-axis or conflicting hemispheres, and invalid DMS minutes/seconds before changing metadata; ranked gaps, estimates and readiness counts unchanged |
| 2026-10-24 | patch | LR-EXP-METADATA: Original export refuses embedded GPS or nonblank place names when Remove Location Info is on; ranked gaps, estimates and readiness unchanged |
| 2026-10-24 | patch | Gap 9 corrected: since #2667 the CI gate runs `cargo xtask ci` (so `cargo test`) on Linux x64 for every push to `main` and every pull request; FreeBSD tests now run nightly, on `release` and on FreeBSD packaging PRs; macOS, Windows and the GPU equivalence tests still have no CI run (#1148 open but superseded by #2667's Linux-only gate); rank and 6–12 h estimate unchanged |
| 2026-10-23 | minor | Gap 13: before a Lightroom catalog import the app asks whether it merges into the open library or goes into a new one (opt-out in Settings, #2672); hours unchanged |
| 2026-10-22 | patch | Gap 28: View shows the current grid-cycle key beside Photo Grid and Square Grid (#2500); no new binding and no change to the remaining shortcut gap or hours |
| 2026-10-22 | minor | Gap 15: the Print page setup and PDF gain the Japanese photo and postcard paper sizes (L判 89×127, 2L判 127×178, KG判 102×152, はがき 100×148, 往復はがき 148×200, 六切 203×254, 四切 254×305, 名刺 55×91 mm), by their customary names; gap not closed |
+1 -1
View File
@@ -64,7 +64,7 @@ Please follow this table and the shared ArtCraft Georgian glossary when you add
## Maintenance and checks
Fixed texts: `crates/ui-egui/locales/ka.json` (2,719 entries). Messages with values:
Fixed texts: `crates/ui-egui/locales/ka.json` (3,616 entries). Messages with values:
`crates/ui-egui/locales/ka-formats.json` (249 entries). The English keys stay unchanged; Rust checks
the placeholders at build time. Strings not yet in the plain catalog show in English.
+2 -1
View File
@@ -60,7 +60,7 @@ string follows that.
| 9 | Japanese | `ja` | 2,383 / 2,398 (99%; 2026-10-12) | as zh-hans; vertical export watermarks | Jpan via craft-fonts (BIZ UDPGothic / UDMincho); IME through winit | no (community edits) | partial | 2–4 h (native review, lower-layer errors) |
| 10 | German | `de` | 3,644 / 3,754 (97%; 2026-10-16: every interface message and every What's New line except 59: the distinct What's New lines whose English text has a ▸ menu path have no German entry yet and wait for #2016; the rest are words spelled the same) | as zh-hans; What's New translated line by line | Latin | partly (2026-10-24: every interface string and formats message, reviewed with an agent and spot-checked by a native speaker; What's New lines not reviewed) | partial | 1–2 h (What's New review, lower-layer errors) |
| 11 | Korean | `ko` | 0 (0%) | none | **no Korean (Hangul) face**: needs a non-Adobe OFL face in craft-fonts (Noto CJK is allowed only for Chinese) | no | none | 14–22 h |
| 12 | Vietnamese | `vi` | 2,471 / 2,471 (100% key coverage of current union; intentional English like `ISO`/`OK` kept) | menus, panels, dialogs, presets, profiles, dates, formats; lower-layer errors English | Latin with stacked diacritics (Inter) | no (community contribution) | partial (catalog complete; lower-layer errors English) | 1–3 h |
| 12 | Vietnamese | `vi` | 2,965 / 2,965 (2,658 plain + 307 formats; 100% of every non-What's New plain and format message across all catalogs) | menus, panels, dialogs, presets, profiles, dates, formats; lower-layer errors English | Latin with stacked diacritics (Inter) | no (community contribution) | partial (catalog complete; lower-layer errors English) | 1–3 h |
## Other languages LightCraft ships (7)
@@ -99,6 +99,7 @@ Target languages LightCraft lacks: Korean, Dutch, Norwegian Bokmål, Thai
| Date | Change | Summary |
|---|---|---|
| 2026-10-26 | minor | Vietnamese (`vi`): 421 missing plain interface messages translated (2,658 plain + 307 formats = 2,965 messages; 0 missing non-What's New plain or format messages in `translation_gaps_report`) |
| 2026-10-19 | minor | Indonesian interface catalog (`id`): every plain and formats message any catalog has, plus 69 command labels; What's New left in English |
| 2026-10-17 | minor | Finnish interface catalog (`fi`): 2,610 of 3,308 messages (2,313 plain + 297 formats), What's New left in English |
| 2026-10-15 | minor | Polish row added: the format messages still in English translated, counts made right for every number, dates day.month.year ([localization-pl.md](localization-pl.md)) |
+3 -3
View File
@@ -8,10 +8,10 @@ Các tag locale hệ thống sau cũng chọn tiếng Việt: `vi`, `vi-VN`, `vi
## Phạm vi
Catalog tiếng Việt phủ **toàn bộ** bề mặt localization hiện tại của LightCraft
(đo 2026-10-13: union plain **2 222** + formats **249** = **2 471** thông điệp):
(đo 2026-10-26: union plain **2 658** + formats **307** = **2 965** thông điệp):
- `crates/ui-egui/locales/vi.json` — thông điệp plain / nhãn hiển thị (2 222 khóa)
- `crates/ui-egui/locales/vi-formats.json` — thông điệp có giá trị runtime và mẫu ngày (249 khóa)
- `crates/ui-egui/locales/vi.json` — thông điệp plain / nhãn hiển thị (2 658 khóa)
- `crates/ui-egui/locales/vi-formats.json` — thông điệp có giá trị runtime và mẫu ngày (307 khóa)
Điều này là **100% bề mặt localizable/runtime hiện tại**, không phải “mọi chuỗi tiếng Anh
trong toàn bộ repository”. Lỗi kỹ thuật từ crate tầng dưới vẫn có thể là tiếng Anh, giống
+6 -2
View File
@@ -95,8 +95,12 @@ cargo test -p lightcraft-ui-egui --lib -- --exact i18n::tests::translation_gaps_
The tests fail on a broken catalog (malformed JSON, a repeated key, placeholders that differ from
the source), never on a missing translation. The last command is the translation gaps report: per
language, the count and list of plain and format messages it lacks and the number of untranslated
What's New lines. It always passes, and `cargo xtask ci` prints it after its test step. The glyph
tests are skipped without `CRAFT_FONTS_DIR` (there are no CJK faces to check then).
What's New lines. The plain messages include every `tr("…")` string in the app's source, whether
or not some catalog has it yet: the report reads calls rustfmt wrapped over several lines and the
literal branches of `tr(if …)` and `tr(match …)`, and skips tests and comments. A string that
reaches `tr` through a variable is listed only when it is a catalog key or in one of the label
tables the report reads. It always passes, and `cargo xtask ci` prints it after its test step. The
glyph tests are skipped without `CRAFT_FONTS_DIR` (there are no CJK faces to check then).
To look at a language, render it headless:
```sh
+1
View File
@@ -1008,3 +1008,4 @@ Latin stays upright. Advanced Japanese composition remains open. Regression cove
| 2026-10-27 | patch | MENU-FILE-CLOSE, KEY-CLOSEWINDOW: the notes say that Close Window and the red close button of the main window quit the app, after the check Quit makes; kept on purpose; a user page says so; status unchanged (✅) |
| 2026-10-24 | patch | LRC-LIB-LIBFOLDERS: Don't ask again in the Move Photos question is kept only when the move started, so a move that is refused no longer switches the question off; status unchanged (✅) |
| 2026-10-24 | patch | LR-IMP-ADD-DIALOG: an import checks that each file a scan already probed is as it was up to 16 files at a time (an import batch's files, at most) instead of one after another, and looks up a batch's sidecars the same way (`import::sidecars_of`); on a network share a folder of thousands of photos spent most of its import time waiting for those checks; status unchanged (✅) |
| 2026-10-23 | minor | LR-BEHAV-LOCALIZE: panel layout toasts, the face recognition prompts and toasts, and the second window's title are looked up in the interface language in all 17 catalogs; status unchanged (🟡) |
+3 -2
View File
@@ -1,6 +1,6 @@
# Roadmap: milestones, current focus and what's next
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-10 · **Change:** major (created; milestones moved here from ROADMAP.md, focus re-ranked after the 2026-10-10 re-measure) · **Target:** Adobe Lightroom Classic 15.5 / Lightroom 9.6
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-24 · **Change:** major (gap 9: roadmap item 8 no longer lists Linux, where CI runs the tests since #2667, and lists the GPU tests; created; milestones moved here from ROADMAP.md, focus re-ranked after the 2026-10-10 re-measure) · **Target:** Adobe Lightroom Classic 15.5 / Lightroom 9.6
Forward-looking plan. The summary with the headline numbers is [ROADMAP.md](../ROADMAP.md); the
ranked shortfalls are [gaps.md](gaps.md); the numbers come from [target-app-parity.md](target-app-parity.md).
@@ -23,7 +23,7 @@ Toward **beta** (~340–600 Opus 5.5 agent hours; ranked, each a gap in [gaps.md
mirror. Needs the maintainer's model decision.
6. **Compressed ORF and HE NEF** (gaps 6–7, 28–55 h).
7. **Lens profiles of our own** (gap 8, 40–80 h).
8. **Tests in CI on macOS, Windows and Linux** (gap 9, 6–12 h).
8. **Tests in CI on macOS and Windows, and the GPU tests in CI** (gap 9, 6–12 h).
9. **Per-model verification** (gap 10, 20–35 h).
## Alpha gate
@@ -108,6 +108,7 @@ calibration: M0–M13 took ≈ 25 active hours against an estimate of ≈ 110–
| Date | Change | Summary |
|---|---|---|
| 2026-10-24 | patch | Item 8 (gap 9): Linux dropped from "Tests in CI" and "the GPU tests in CI" added, because the CI gate has run the tests there since #2667; hours unchanged |
| 2026-10-10 | minor | Beta hours 340–600; full ready ~59% in the gate note |
| 2026-10-10 | minor | Added the Alpha gate table (core-workflow gate from the revised standard): passes, stays alpha |
| 2026-10-10 | major | Created: milestones moved from ROADMAP.md (statuses refreshed: M3 ✅, M11 / M12 / M15 detail), current focus re-ranked toward beta, risks and design notes kept |
+6 -5
View File
@@ -1,6 +1,6 @@
# Target-app parity: LightCraft vs Adobe Lightroom
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-19 · **Change:** minor (Minolta MRW decoded, 6 bodies verified; RAW: 83% of Adobe's models decode, 38% verified after the camera-coverage sweep #1327; Platforms: the Windows x64 installer verified on Windows 11) · **Target:** Adobe Lightroom Classic 15.5 (August 2026) and Lightroom 9.6 (desktop)
> **Last reviewed:** 2026-10-10 · **Last updated:** 2026-10-24 · **Change:** minor (gap 9: CI runs the tests on Linux x64 since #2667; macOS, Windows and the GPU equivalence tests still don't; Minolta MRW decoded, 6 bodies verified; RAW: 83% of Adobe's models decode, 38% verified after the camera-coverage sweep #1327; Platforms: the Windows x64 installer verified on Windows 11) · **Target:** Adobe Lightroom Classic 15.5 (August 2026) and Lightroom 9.6 (desktop)
The authoritative assessment of how close LightCraft is to Lightroom. The row-by-row checklist is
[parity-checklist.md](parity-checklist.md); the ranked work list is [gaps.md](gaps.md); deep areas
@@ -53,7 +53,7 @@ phase #85, duplicate Local entries #22, black GPU exports on an Intel iGPU #78).
| Hardware | ~50% | ~40% | 40–80 h (+ tethering and printing, counted under Classic modules) | [hardware-parity.md](hardware-parity.md) |
| Localization (12 key languages) | 8 of 12 present | ~64% (mean of the 12, measured) | 130–210 h for the target's set; +135–239 h for Hindi, Arabic, Vietnamese, Korean | [localization-parity.md](localization-parity.md) |
| Performance | ~80% | ~70% | 30–50 h | 24 MP GPU slider 3.9 ms, export 0.3 s (measured, [gpu-pipeline.md](gpu-pipeline.md)); 85k library opens in 1.7–4.7 s; 100k test pending |
| Stability | — | ~60% | 30–60 h | never-crash lints and guards workspace-wide, crash-tested journal, 2,561 tests; but CI runs tests only on FreeBSD, user reports keep finding bugs in ✅ areas |
| Stability | — | ~60% | 30–60 h | never-crash lints and guards workspace-wide, crash-tested journal, 2,561 tests; but CI runs tests on Linux x64 (every pull request and push to `main`) and FreeBSD (nightly), not on macOS or Windows, user reports keep finding bugs in ✅ areas |
| Platforms | macOS, Windows (x64 / x86 / ARM64), Linux (AppImage, deb, rpm, Flatpak, Nix), FreeBSD, web | ~60% | 25–45 h | macOS is where it is tested; the Windows x64 installer is verified on Windows 11 (0.9.1) except for a confirmation after uninstalling from Settings → Apps (#892); web experimental (CPU only) |
| Ecosystem / plug-ins | ~25% | ~15% | 40–80 h + owner decision | no Lightroom SDK equivalent (export, publish, metadata plug-ins); beyond the target: JSON-lines control channel, MCP server with 28 tools + one per command, CLI |
| AI features | ~30% | ~20% | 120–220 h + model decisions | [AI](#ai) (overlaps the masking and Enhance rows; not added twice) |
@@ -158,7 +158,7 @@ essentials replaces its guessed 45% raw look with 84% × 0.75 (+1 point).
| Discount | Mainstream | Essentials | Evidence |
|---|---:|---:|---|
| Interaction fidelity / UI clarity | ×0.95 | ×0.95 | brush live preview gaps and feathering (#517, #518); crop artefacts and limits (#731, #742, #770, #771); Compare white-balance selector (#743–#745); low-res slider previews (#330); dialogs taller than the window (#781); mouse-wheel scroll (#714) |
| Stability on real machines | ×0.92 | ×0.92 | launch and quit crashes or silent startup failures (#250 macOS 12 Intel, #315 Windows Intel GPU, #431 Intel Mac, #260, #462, #783 Linux / Nouveau, #790 Windows installer, fixed in 0.9.1); tests run in CI on Linux x64 and FreeBSD only (gap 9) |
| Stability on real machines | ×0.92 | ×0.92 | launch and quit crashes or silent startup failures (#250 macOS 12 Intel, #315 Windows Intel GPU, #431 Intel Mac, #260, #462, #783 Linux / Nouveau, #790 Windows installer, fixed in 0.9.1); tests run in CI on Linux x64 and FreeBSD (nightly), not on macOS or Windows (gap 9) |
| File exchange with Lightroom users (mainstream) / opening files people send (essentials) | ×0.92 | ×0.95 | Adobe XMP sidecars change colours (#290), XMP CameraProfile and Upright ignored (#204, #205), catalog import fails (#599), same Light values render differently (#523, #209), no write-back to `.lrcat`; for casual users: CR3 beyond verified bodies, compressed ORF, HE NEF open as previews (#473, #485, #556), HEIC trouble (#693) |
| **Product** | **×0.804** | **×0.830** | |
@@ -242,7 +242,7 @@ variants, compressed ORF, HE NEF as previews) degrade but don't block a workflow
around them. Beta needs: CR3, ORF and
HE NEF decoding from sensor data; measured colour for the popular models and a fidelity suite with
scores; Subject / Sky / People masks; a lens profile database for the
popular lenses; tests in CI on macOS, Windows and Linux.
popular lenses; tests in CI on macOS and Windows, and the GPU tests in CI.
## How hours are calibrated
@@ -268,7 +268,7 @@ verification. Calibrated on this repository's history (git log and GitHub PR ope
The previous estimate (2026-10-02, kept below) was ≈ 270–505 h to full parity. It counted checklist
rows only. New evidence since: the target's own lists (≈ 1,000 dedicated camera models, 3,635 lens
profiles, 37 AI models, 16 languages) measured from the installed bundle; per-maker verification
counts; that CI tests only FreeBSD; and the standard's added dimensions (localization, stability,
counts; that CI then tested only FreeBSD; and the standard's added dimensions (localization, stability,
platforms, ecosystem). The raw-codec package it estimated at 40–80 h took roughly that and closed
most of its list; what remains is the data-heavy part (colour, lenses, models) it did not count.
@@ -300,6 +300,7 @@ P2 items 12–25 h; look tuning, performance, packaging, hardening 25–45 h.
| Date | Change | Summary |
|---|---|---|
| 2026-10-24 | patch | Stability, the stability discount, the Beta-needs list and the estimate history: tests run in CI on Linux x64 since #2667 (FreeBSD nightly), not on macOS or Windows (gap 9); percentages and hours unchanged |
| 2026-10-19 | patch | Stability note: tests run in CI on Linux x64 (every PR) as well as FreeBSD; macOS and Windows remain (gap 9) |
| 2026-10-19 | minor | Localization ~55% → ~64% (mean of the 12 key languages): Indonesian (`id`) catalog, every message but What's New; full target 61.2% → 61.5% (still ~61%) |
| 2026-10-19 | patch | Platforms: the Windows installer is no longer listed as unverified (the 0.9.1 x64 MSI is tested on Windows 11; a confirmation after uninstalling from Settings → Apps, #892, remains); #790 noted as fixed in 0.9.1; percentages and hours unchanged |
+16
View File
@@ -213,6 +213,14 @@
Before, the field took the focus back every frame, so only Return and Esc got you out of it. Return still
confirms and Esc still cancels.
### A thumbnail that can't be read is tried again only when its photo changes
- A file the grid can't draw (a damaged JPEG, a file the decoders can't read) was decoded again after every change to
the library, even a change to another photo: face recognition and metadata reads at launch made each such file
fail 20 to 40 times in a few minutes, one log warning each time (issue #2682). It is now tried again when that photo
changes (Locate Missing File, Reload, an edit) or when the library can't say which photos changed. A photo whose
file is missing, such as one on a drive that is unplugged, is still tried again at every change, so it comes back
once the drive does.
### Foreign XMP metadata survives namespace-prefix collisions
- Saving a sidecar keeps another application's properties even when its namespace uses prefixes such as `lc`
or `xmp`. Those foreign properties no longer become LightCraft settings or ratings when imported.
@@ -292,6 +300,14 @@
2026)`). Two albums with the same name in the same place have nothing to tell them apart by and keep the plain
name.
### Panel layout messages, face recognition prompts and the second window's title in your language
- The messages shown when a panel layout cannot be restored or a panel move is not applied, the face recognition
prompts (the banner and the name box's offer, with their buttons), the "Face recognition is on" and "is installed"
messages, and the title of the second window are now in the interface language in all 17 languages. They stayed in
English before. So did "The download failed", shown under a denoise or face recognition model's download when the
download gives no reason.
## 2026-10-22
### Reliability