mirror of
https://github.com/storytold/lightcraft.git
synced 2026-10-24 10:09:01 -06:00
View > Export Slideshow... (and Export PDF / JPEG / Video in Settings > Slideshow) writes the photos in view as their composed slides, between the intro and ending screens that are on: - PDF: a page per slide (1024/1920/3840 px long side, JPEG quality), /Dur and /Trans fades per page, optional /PageMode /FullScreen. The contact sheet's writer moves to engine/src/pdf.rs and streams to disk. - JPEG: <name>-001.jpg... in a folder. - Video: AV1 (rav1e, speed 10, low latency) in MP4 or WebM written by our own muxers (codecs/src/video.rs); fades rendered as blended frames, held slides one key-frame sample with a long duration; 720p/1080p, 24/30 fps; no audio; capped at 2 hours. slideshow.export runs in the background with a row in the activity stack (activity.cancel stops it); outputs are written as .part and renamed when complete, so cancel or failure leaves nothing behind. A photo that can't be rendered is skipped with a warning. slideshow.exportStatus reports the result.
248 lines
23 KiB
JSON
248 lines
23 KiB
JSON
{
|
||
" ({unsure} with several look-alike files: use Locate)": " (из них с несколькими похожими файлами: {unsure} — используйте «Найти фото»)",
|
||
" ({} in Recently Deleted)": " ({} в «Недавно удалённых»)",
|
||
" · {:.0}% clipped": " · обрезано: {:.0}%",
|
||
" · {failed} couldn't be rendered": " · не удалось отрисовать: {failed}",
|
||
" · {skipped} skipped (file exists)": " · пропущено: {skipped} (файл существует)",
|
||
" · {} duplicate{} skipped": " · пропущено дубликатов: {}{:.0}",
|
||
" · {} failed: {}": " · не удалось: {}; ошибка: {}",
|
||
" · {} moved": " · перемещено: {}",
|
||
" · {} not readable": " · не читается: {}",
|
||
" · {} original{} left at the source": " · оригиналов оставлено в источнике: {}{:.0}",
|
||
" · {} restored from Recently Deleted": " · восстановлено из «Недавно удалённых»: {}",
|
||
" — not carried over: {}{}": " — не перенесено: {}{}",
|
||
"+{} more": "+{} ещё",
|
||
", {failed} file{} not readable": ", не читается файлов: {failed}{:.0}",
|
||
", {} label": ", метка: {}",
|
||
", {} star{}": ", звёзд: {}{:.0}",
|
||
"; {kept} already had a location": "; уже имели местоположение: {kept}",
|
||
"; {outside} outside its time range": "; вне временного диапазона трека: {outside}",
|
||
"@{}: {} PRs, {} commits, +{} / −{} lines (Δ {}), +{} / −{} binary assets, {} – {}": "@{}: PR: {}, коммитов: {}, строк: +{} / −{} (Δ {}), бинарных файлов: +{} / −{}, {} – {}",
|
||
"Add {local_n} to My Photos": "Добавить в «Мои фото»: {local_n}",
|
||
"Add {} Photo{}": "Добавить фото: {}{:.0}",
|
||
"Add {} Photo{}, restore {}": "Добавить фото: {}{:.0}, восстановить: {}",
|
||
"Add “{}” to Favorites": "Добавить «{}» в избранное",
|
||
"Added {n} photo{} to My Photos": "В «Мои фото» добавлено фото: {n}{:.0}",
|
||
"Added {n} photo{} to “{}”": "В «{1}» добавлено фото: {n}{0:.0}",
|
||
"Added {what} to {name}": "{what}: добавлено в {name}",
|
||
"Adding photos… {} of {}": "Добавление фото… {} из {}",
|
||
"All {n} selected photos move by the same amount.": "Все выбранные фото ({n}) сдвигаются на одно и то же значение.",
|
||
"Already in the library, in Recently Deleted: {} photo{} selected · right-click ▸ Restore, or Delete Permanently to import afresh": "Уже в библиотеке, в «Недавно удалённых»: выбрано фото: {}{:.0} · щёлкните правой кнопкой → Восстановить или Удалить навсегда, чтобы импортировать заново",
|
||
"Already in the library: {} photo{} selected in All Photos": "Уже в библиотеке: выбрано фото в разделе «Все фото»: {}{:.0}",
|
||
"Auto ({})": "Авто ({})",
|
||
"Auto Import: added {} photo{}": "Автоимпорт: добавлено фото: {}{:.0}",
|
||
"Auto Sync: edits apply to {n} photos": "Автосинхронизация: правки применяются к фото: {n}",
|
||
"Automatic ({} MB)": "Автоматически ({} МБ)",
|
||
"Build 1:1 Previews ({scope})": "Создать просмотры 1:1 ({scope})",
|
||
"Build Smart Previews ({scope})": "Создать смарт-просмотры ({scope})",
|
||
"Build Standard-Sized Previews ({scope})": "Создать просмотры стандартного размера ({scope})",
|
||
"Building previews for {} photos…": "Создание просмотров для фото: {}…",
|
||
"Click {}:1": "Щелчок {}:1",
|
||
"Couldn't open the editor: {e}": "Не удалось открыть редактор: {e}",
|
||
"Create {n} Virtual Copies": "Создать виртуальные копии: {n}",
|
||
"Creates {} stacks from {} of {scope}": "Будет создано стопок: {} из {} фото ({scope})",
|
||
"Decoder: {reason}": "Декодер: {reason}",
|
||
"Delete \"{label}\"": "Удалить «{label}»",
|
||
"Delete \"{label}\" (and the mask)": "Удалить «{label}» (и маску)",
|
||
"Delete {n} Photos": "Удалить фото: {n}",
|
||
"Delete “{current}”": "Удалить «{current}»",
|
||
"Discard Smart Previews ({scope})": "Удалить смарт-просмотры ({scope})",
|
||
"Done ({what}): {done} photo{plural}": "Готово ({what}): фото: {done}{plural:.0}",
|
||
"Duplicate \"{label}\"": "Дублировать «{label}»",
|
||
"Example: {example}": "Пример: {example}",
|
||
"Exported {n} photo{}": "Экспортировано фото: {n}{:.0}",
|
||
"Exported {ok} of {total} photo{}": "Экспортировано фото: {ok} из {total}{:.0}",
|
||
"Exported {} point curve preset{}": "Экспортировано пресетов точечной кривой: {}{:.0}",
|
||
"Exported {} preset{}": "Экспортировано пресетов: {}{:.0}",
|
||
"Exporting {} of {total}": "Экспорт: {} из {total}",
|
||
"Filter bar — {active} active filter{}": "Панель фильтров — активных фильтров: {active}{:.0}",
|
||
"Filtered: {label}": "Отфильтровано: {label}",
|
||
"Focus {:.0}": "Резкость {:.0}",
|
||
"Folder “{}” (and its subfolders)": "Папка «{}» (и вложенные папки)",
|
||
"Found {n} missing photo{}; {left} still missing{unsure}": "Найдено отсутствующих фото: {n}{:.0}; всё ещё отсутствует: {left}{unsure}",
|
||
"Healed {n} dust spot{}": "Убрано пылинок: {n}{:.0}",
|
||
"Import cancelled · {} photo{} added": "Импорт отменён · добавлено фото: {}{:.0}",
|
||
"Import failed: {e}": "Ошибка импорта: {e}",
|
||
"Imported {n} point curve preset{}": "Импортировано пресетов точечной кривой: {n}{:.0}",
|
||
"Imported {n} preset{}": "Импортировано пресетов: {n}{:.0}",
|
||
"Imported {n} preset{}, {f} file{} not readable": "Импортировано пресетов: {n}{:.0}, не читается файлов: {f}{:.0}",
|
||
"Imported {profiles} profile{} (Profile browser ▸ their groups)": "Импортировано профилей: {profiles}{:.0} (Обозреватель профилей → их группы)",
|
||
"Imported {} photo{}": "Импортировано фото: {}{:.0}",
|
||
"Insert at the cursor (also written {})": "Вставить в позицию курсора (также пишется как {})",
|
||
"Label Set: {name}": "Набор меток: {name}",
|
||
"LightCraft can't decode this raw variant yet ({}). You're editing the camera's embedded JPEG preview, which already includes the camera's picture style (e.g. Monochrome) and white balance.": "LightCraft пока не умеет декодировать этот вариант RAW ({}). Вы редактируете встроенный в файл JPEG-просмотр камеры, в котором уже применены стиль изображения камеры (например, «Монохром») и баланс белого.",
|
||
"LightCraft could not open its window: {e}": "LightCraft не удалось открыть окно: {e}",
|
||
"LightCraft could not open its window: {e}\n\nThe log file has the details: {path}": "LightCraft не удалось открыть окно: {e}\n\nПодробности в файле журнала: {path}",
|
||
"Lightroom catalog inspected: {photos} photos, {collections} collections, {missing} missing": "Каталог Lightroom проверен: фото — {photos}, коллекций — {collections}, отсутствует — {missing}",
|
||
"Lightroom import complete: {imported} photos added": "Импорт из Lightroom завершён: добавлено фото — {imported}",
|
||
"Lightroom import complete: {imported} photos added, {failed} failed": "Импорт из Lightroom завершён: добавлено фото — {imported}, ошибок — {failed}",
|
||
"Lightroom import complete: {imported} photos added; index warning: {warning}": "Импорт из Lightroom завершён: добавлено фото — {imported}; предупреждение индекса: {warning}",
|
||
"Lightroom import failed: {e}{warning}": "Ошибка импорта из Lightroom: {e}{warning}",
|
||
"Lightroom inspection failed: {e}{warning}": "Ошибка проверки Lightroom: {e}{warning}",
|
||
"MIT OR Apache-2.0. Fonts: {} (OFL). Icons: original.": "MIT OR Apache-2.0. Шрифты: {} (OFL). Значки: оригинальные.",
|
||
"Matches: {}": "Совпадения: {}",
|
||
"Merging… {stage} {:.0}%": "Слияние… {stage} {:.0}%",
|
||
"Move {what} to Recently Deleted?": "Переместить {what} в «Недавно удалённые»?",
|
||
"Moved; {} photo(s) relinked": "Перемещено; перепривязано фото: {}",
|
||
"Named ({named_n})": "Именованные ({named_n})",
|
||
"Painting “{k}”: click photos to add or remove it · Esc stops": "Назначение «{k}»: щёлкайте по фото, чтобы добавить или снять его · Esc — завершить",
|
||
"Paste into {n} photo{} — only settings that were copied are pasted": "Вставка в фото: {n}{:.0} — вставляются только скопированные настройки",
|
||
"Preset: {name}": "Пресет: {name}",
|
||
"Preview only — editing the camera's embedded JPEG ({})": "Только просмотр — правка встроенного в камеру JPEG ({})",
|
||
"Preview only — {}": "Только просмотр — {}",
|
||
"Previews ready for {done} photo{plural}": "Просмотры готовы, фото: {done}{plural:.0}",
|
||
"Profile: {}": "Профиль: {}",
|
||
"Proof Copy ({})": "Пробная копия ({})",
|
||
"Proof Preview · {}": "Пробный просмотр · {}",
|
||
"Quick Develop · {n} photos": "Быстрая коррекция · фото: {n}",
|
||
"Quick Develop: {name}": "Быстрая коррекция: {name}",
|
||
"Rated {}": "Оценка: {}",
|
||
"Reading Lightroom catalog… {done} of {total}": "Чтение каталога Lightroom… {done} из {total}",
|
||
"Reading photos… {done} of {total}": "Чтение фото… {done} из {total}",
|
||
"Reading photos… {} of {}": "Чтение фото… {} из {}",
|
||
"Redo {}": "Повторить {}",
|
||
"Remove “{name}” and its {count} photo{} from the library?": "Удалить «{name}» и фото ({count}){:.0} из библиотеки?",
|
||
"Remove “{}” from Favorites": "Убрать «{}» из избранного",
|
||
"Removed from {}": "Удалено из: {}",
|
||
"Removed {what} from {name}": "{what}: удалено из {name}",
|
||
"Rename {n} Photos…": "Переименовать фото: {n}…",
|
||
"Rename “{name}”": "Переименовать «{name}»",
|
||
"Renames “{from}” on {n} photo{} (keywords below it too). Use | for levels, e.g. Travel|Italy. An existing name merges the two.": "Переименовывает «{from}» на фото ({n}){:.0} (включая вложенные ключевые слова). Уровни разделяются символом |, например Путешествия|Италия. Если такое имя уже есть, слова объединяются.",
|
||
"Rendering on the CPU: {why}": "Рендеринг на CPU: {why}",
|
||
"Replace {} with:": "Заменить {} на:",
|
||
"Reset {name}": "Сбросить: {name}",
|
||
"Reset {} Channel": "Сбросить канал: {}",
|
||
"Restore {}": "Восстановить {}",
|
||
"Restore {} Photo{}": "Восстановить фото: {}{:.0}",
|
||
"Saved export preset “{}”": "Пресет экспорта «{}» сохранён",
|
||
"Scores {scope} for focus and exposure and finds similar shots taken within seconds of each other (bursts).": "Оценивает резкость и экспозицию ({scope}) и находит похожие снимки, сделанные с разницей в несколько секунд (серии).",
|
||
"Show {hidden} hidden location{}": "Показать скрытые места: {hidden}{:.0}",
|
||
"Showing {n} of {}": "Показано {n} из {}",
|
||
"Smart album: {}": "Смарт-альбом: {}",
|
||
"Tagged {n} photo{} from the tracklog": "Привязано по треку фото: {n}{:.0}",
|
||
"The SAM 3 download failed: {e}": "Не удалось загрузить SAM 3: {e}",
|
||
"Undo {}": "Отменить {}",
|
||
"Unknown tag{s} {} stay{} as typed (see Tags)": "Неизвестные теги{s:.0} {} остаются как введены{:.0} (см. «Теги»)",
|
||
"Updated “{name}”": "«{name}» обновлено",
|
||
"Version {} — a clean-room, pure-Rust photo library and raw developer.": "Версия {} — независимо разработанная библиотека фото и RAW-конвертер на чистом Rust.",
|
||
"Version: {}": "Версия: {}",
|
||
"Virtual copy “{name}” of {of}": "Виртуальная копия «{name}» от {of}",
|
||
"Working on {what} for {} photos…": "{what}: обработка фото ({})…",
|
||
"none (CPU rendering): {why}": "нет (рендеринг на CPU): {why}",
|
||
"the {n} selected photos": "выбранные {n} фото",
|
||
"the {} photos in view": "все {} фото в представлении",
|
||
"these {count} photos": "эти {count} фото",
|
||
"{count} smart preview{} · {:.1} MB": "Смарт-просмотров: {count}{:.0} · {:.1} МБ",
|
||
"{f} folders (and their subfolders)": "Папок: {f} (и их подпапок)",
|
||
"{label} Grading": "Цветокоррекция: {label}",
|
||
"{label} {d:+} on every selected photo": "{label} {d:+} для каждого выбранного фото",
|
||
"{label} {index} of {n}": "{label} {index} из {n}",
|
||
"{label}, {n} photos": "{label}, фото: {n}",
|
||
"{matching} of {t} photos": "Фото: {matching} из {t}",
|
||
"{matching} photos": "Фото: {matching}",
|
||
"{mode} spot {} of {}": "{mode}: пятно {} из {}",
|
||
"{month}": "{month}",
|
||
"{month} {year}": "{month:02}.{year}",
|
||
"{msg} ({failed} failed)": "{msg} (ошибок: {failed})",
|
||
"{name} Label": "Метка: {name}",
|
||
"{name} Off": "{name}: выкл.",
|
||
"{name} On": "{name}: вкл.",
|
||
"{name} opened for editing; it is stacked with the original": "{name} открыт для редактирования и объединён в стопку с оригиналом",
|
||
"{name} — double-click to reset it": "{name} — двойной щелчок для сброса",
|
||
"{n} change{} couldn't be written to disk: {e}\nIf you quit now, {} lost.": "Изменений не удалось записать на диск: {n}{0:.0}: {e}\nЕсли выйти сейчас, они будут потеряны.{1:.0}",
|
||
"{n} change{} saved in memory but not written to disk: {e}\nLightCraft retries automatically; quitting now would lose {}.": "Не записано на диск, хранится только в памяти (изменений: {n}): {e}\nLightCraft повторяет попытку автоматически; при выходе сейчас они будут потеряны.{:.0}{:.0}",
|
||
"{n} change{} saved in memory but not written to disk: {e} — LightCraft will retry": "Изменений сохранено в памяти, но не записано на диск: {n}{:.0}: {e} — LightCraft повторит попытку",
|
||
"{n} found · {sel} selected": "Найдено: {n} · выбрано: {sel}",
|
||
"{n} photos": "Фото: {n}",
|
||
"{n} photos in {} are hidden by the filters above": "Фильтры выше скрывают фото в разделе «{}»: {n}",
|
||
"{n} photo{}": "Фото: {n}{:.0}",
|
||
"{n} photo{} match · updates automatically as photos change": "Подходящих фото: {n}{:.0} · обновляется автоматически при изменении фото",
|
||
"{n} photo{} now · updates automatically as photos change": "Сейчас фото: {n}{:.0} · обновляется автоматически при изменении фото",
|
||
"{n} similar photo{} · View ▸ Clear Filters to see all": "Похожих фото: {n}{:.0} · Вид → Сбросить фильтры, чтобы увидеть все",
|
||
"{pid} (missing)": "{pid} (отсутствует)",
|
||
"{sel_n} selected · {counted}": "Выбрано: {sel_n} · {counted}",
|
||
"{stage}… {:.0}%": "{stage}… {:.0}%",
|
||
"{verb} {n} Photo{}": "{verb} (фото: {n}){:.0}",
|
||
"{weekday}, {day}": "{weekday}, {day}",
|
||
"{weekday}, {day} {month} {year}": "{weekday}, {day:02}.{month:02}.{year}",
|
||
"{what} merge added": "{what}: слияние добавлено",
|
||
"{what} merge failed: {e}": "{what}: ошибка слияния: {e}",
|
||
"{year}": "{year}",
|
||
"{{date:…}} directives: {}": "Директивы {{date:…}}: {}",
|
||
"{} and higher": "{} и выше",
|
||
"{} contributors · {} commits": "Участников: {} · коммитов: {}",
|
||
"{} failed": "Ошибка: {}",
|
||
"{} files": "Файлов: {}",
|
||
"{} files and {f} folder{}": "Файлов: {}, папок: {f}{:.0}",
|
||
"{} item{}": "Элементов: {}{:.0}",
|
||
"{} label (click more labels to show any of them)": "Метка «{}» (щёлкните другие метки, чтобы показать фото с любой из них)",
|
||
"{} of 4 guides — drag along lines that should be vertical or horizontal.": "Направляющих: {} из 4 — проведите вдоль линий, которые должны быть вертикальными или горизонтальными.",
|
||
"{} photos": "Фото: {}",
|
||
"{} photos · exposures {} EV": "Фото: {} · экспозиции {} EV",
|
||
"{} photos · {} · {:.0}° × {:.0}°": "Фото: {} · {} · {:.0}° × {:.0}°",
|
||
"{} photo{} not readable": "Не читается фото: {}{:.0}",
|
||
"{} sample{}": "Образцов: {}{:.0}",
|
||
"{} sec": "{} с",
|
||
"{} spot(s) on this photo": "Пятен на этом фото: {}",
|
||
"{} — show their photos": "{} — показать фото этого человека",
|
||
"· {dups} already in the library": "· уже в библиотеке: {dups}",
|
||
"· {n} photo{}": "· фото: {n}{:.0}",
|
||
"… and {more} more": "… и ещё {more}",
|
||
"Downloads from {host}. Once it has arrived and checked out, LightCraft installs it, {after}.": "Downloads from {host}. Once it has arrived and checked out, LightCraft installs it, {after}.",
|
||
"{:.1} MB": "{:.1} MB",
|
||
"Running on the processor: {}.": "Running on the processor: {}.",
|
||
"{} · {}. Kept in the library's “denoise” folder; the oldest ones that no photo uses go first when the limit is reached.": "{} · {}. Kept in the library's “denoise” folder; the oldest ones that no photo uses go first when the limit is reached.",
|
||
"Denoising {name}: {done} of {total} tiles{}": "Denoising {name}: {done} of {total} tiles{}",
|
||
"{size} GB": "{size} GB",
|
||
"{} of {} from {host}": "{} of {} from {host}",
|
||
"{} KB": "{} KB",
|
||
"{} MB": "{} MB",
|
||
"Making the denoised picture… {}%": "Making the denoised picture… {}%",
|
||
"{name} · {terms}": "{name} · {terms}",
|
||
"{n} {noun}": "{n} {noun}",
|
||
"Trained on: {provenance}": "Trained on: {provenance}",
|
||
" · {queued} waiting": " · {queued} waiting",
|
||
"Shows the model's terms, then downloads {} from {host}, installs it and starts using it. Nothing else is sent.": "Shows the model's terms, then downloads {} from {host}, installs it and starts using it. Nothing else is sent.",
|
||
"In line for AI Denoise ({ahead} ahead)…": "In line for AI Denoise ({ahead} ahead)…",
|
||
"Running on {}.": "Running on {}.",
|
||
"{file} · {size}": "{file} · {size}",
|
||
"• {assumption}": "• {assumption}",
|
||
"Put inside “{parent}”": "Поместить в «{parent}»",
|
||
"Delete the keyword “{name}”?": "Удалить ключевое слово «{name}»?",
|
||
"It is taken off {count} photo{}, with the keywords below it. Undo brings it back.": "Оно будет снято с фото ({count}){:.0} вместе с вложенными ключевыми словами. Отмена вернёт его.",
|
||
"Create Keyword Tag Inside “{name}”…": "Создать ключевое слово в «{name}»…",
|
||
"“{parent}” has a “{name}” already. Merge the two?": "В «{parent}» уже есть «{name}». Объединить их?",
|
||
"There is a “{name}” at the top level already. Merge the two?": "На верхнем уровне уже есть «{name}». Объединить их?",
|
||
"Added “{keyword}” to {n} photo{}": "«{keyword}» добавлено к фото ({n}){:.0}",
|
||
"On {have} of {of} selected photos": "На {have} из {of} выбранных фото",
|
||
"Remove “{name}”": "Убрать «{name}»",
|
||
"There is a keyword set “{name}” already": "Набор ключевых слов «{name}» уже есть",
|
||
"Added {n} keyword{}": "Добавлено ключевых слов: {n}{:.0}",
|
||
"; {n} gained synonyms": "; синонимы добавлены к {n}",
|
||
"Exported {n} keyword{}": "Экспортировано ключевых слов: {n}{:.0}",
|
||
" — Capture One won't import a list with ; , < or > in a keyword: {names}": " — Capture One не импортирует список, где в ключевом слове есть ; , < или >: {names}",
|
||
" — left out, as a keyword list can't hold them: {names}": " — пропущены: список ключевых слов не может их содержать: {names}",
|
||
"{done} of {total}": "{done} из {total}",
|
||
"{done} of {total} MB": "{done} из {total} МБ",
|
||
"{pct} %": "{pct} %",
|
||
"+{n} more": "ещё {n}",
|
||
"1 task is still running: {names}. Quitting stops it.": "Ещё выполняется задача: {names}. Выход прервёт её.",
|
||
"{n} tasks are still running: {names}. Quitting stops them.": "Ещё выполняется задач: {n} — {names}. Выход прервёт их.",
|
||
"{what} merge cancelled": "{what}: слияние отменено",
|
||
"Applied {name}": "Применено: {name}",
|
||
"Delete “{name}”?": "Удалить «{name}»?",
|
||
"Updated {name}": "Обновлено: {name}",
|
||
"Exported to {path}": "Экспортировано в {path}",
|
||
"Saved template {name}": "Шаблон {name} сохранён",
|
||
"Imported {name}": "Импортировано: {name}",
|
||
"Skipped {problem}": "Пропущено: {problem}",
|
||
"…and {more} more": "…и ещё {more}",
|
||
"Template preview: {name}": "Просмотр шаблона: {name}",
|
||
"{n} photos in view · {slides} slides · {time}": "Фото в просмотре: {n} · слайдов: {slides} · {time}",
|
||
"{n} pages": "Страниц: {n}",
|
||
"{n} JPEG files": "Файлов JPEG: {n}",
|
||
"{s} s of AV1 video": "{s} с видео AV1",
|
||
"Slideshow exported: {what}": "Слайд-шоу экспортировано: {what}",
|
||
" · {n} skipped (could not be rendered)": " · пропущено: {n} (не удалось отрисовать)"
|
||
}
|