{
  "projectHistory": {
    "title": "История проекта",
    "description": "Просмотр автоматически сохранённых снимков на этом устройстве.",
    "empty": "Автоматически сохранённых снимков пока нет.",
    "summary": "Слоёв: {{count}} · масштаб {{zoom}}",
    "restore": "Восстановить",
    "discard": "Отбросить",
    "restoreError": "Не удалось восстановить этот снимок. Возможно, он повреждён или несовместим с этой версией GeoLibre.",
    "recoveryTitle": "Восстановить несохранённую работу?",
    "recoveryDescription": "GeoLibre завершился некорректно. Доступно более новое автосохранение «{{name}}»."
  },
  "browser": {
    "title": "Обозреватель",
    "services": "Сервисы",
    "recent": "Недавние",
    "databases": "Базы данных",
    "newDatabaseConnection": "Новое подключение к базе данных",
    "searchPlaceholder": "Поиск источников данных",
    "empty": "Пока нет сохранённых сервисов или недавних проектов.",
    "emptyGroup": "Пусто",
    "noMatches": "Совпадений нет.",
    "addFailed": "Не удалось добавить этот источник данных.",
    "builtinBadge": "встроенный",
    "newConnection": "Новое подключение {{kind}}",
    "loadingTables": "Загрузка таблиц…",
    "files": "Файлы",
    "addFolder": "Добавить папку",
    "addFolderFailed": "Не удалось добавить эту папку.",
    "addFileFailed": "Не удалось добавить этот файл.",
    "loadFolderFailed": "Не удалось прочитать эту папку.",
    "unpinFolder": "Удалить «{{name}}» из списка",
    "loadingFolder": "Загрузка…",
    "folderTruncated": "Показаны первые {{shown}} из {{total}}",
    "favorites": "Избранное",
    "favorite": "Добавить «{{name}}» в избранное",
    "unfavorite": "Удалить «{{name}}» из избранного",
    "favoriteMissing": "Этот источник данных больше не существует — удалён из избранного.",
    "myData": "Мои данные",
    "renameLibraryLayer": "Переименовать «{{name}}»",
    "deleteLibraryLayer": "Удалить «{{name}}» из Моих данных",
    "desktopOnlyBadge": "десктоп",
    "importLibrary": "Импортировать сохранённые слои",
    "exportLibrary": "Экспортировать сохранённые слои",
    "libraryFilterName": "JSON библиотеки слоёв",
    "libraryImportFailed": "Не удалось прочитать этот файл библиотеки слоёв.",
    "libraryExportFailed": "Не удалось экспортировать библиотеку слоёв.",
    "libraryLayerMissing": "Этого сохранённого слоя больше не существует.",
    "libraryLayerNeedsDesktop": "Этот сохранённый слой читает файл с диска, поэтому ему требуется GeoLibre Desktop. Добавьте файл заново, чтобы сохранить новую запись.",
    "libraryLayerConfigNotApplied": "Файл для «{{name}}» добавлен, но сохранённое оформление не удалось сопоставить с одним слоем, поэтому оно не было применено повторно.",
    "libraryLayerJoinsUnresolved_one": "Слой добавлен, но одно сохранённое соединение не удалось применить повторно: слоя, с которым оно связано, нет в этом проекте.",
    "libraryLayerJoinsUnresolved_other": "Слой добавлен, но {{count}} сохранённых соединений не удалось применить повторно: слоёв, с которыми они связаны, нет в этом проекте.",
    "libraryLayerJoinsUnresolved_many": "Слой добавлен, но {{count}} сохранённых соединений не удалось применить повторно: слоёв, с которыми они связаны, нет в этом проекте.",
    "libraryLayerJoinsUnresolved_few": "Слой добавлен, но {{count}} сохранённых соединения не удалось применить повторно: слоёв, с которыми они связаны, нет в этом проекте."
  },
  "about": {
    "trigger": "О программе",
    "title": "О GeoLibre",
    "description": "GeoLibre — лёгкая облачная ГИС-платформа.",
    "version": "Версия",
    "checkForUpdates": "Проверить обновления",
    "tryAgain": "Повторить",
    "checking": "Проверка обновлений",
    "upToDate": "У вас установлена последняя версия ({{version}}).",
    "upToDateNoVersion": "У вас установлена последняя версия.",
    "generalSectionTitle": "Общее",
    "homePage": "Домашняя страница",
    "githubRepository": "Репозиторий GitHub"
  },
  "updates": {
    "changelogTitle": "Что нового",
    "noChangelog": "Примечания к выпуску недоступны. Подробности см. на странице загрузок.",
    "stepsTitle": "Как обновить",
    "download": "Скачать обновление",
    "steps": {
      "download": "Скачайте установщик для вашей платформы со страницы загрузок.",
      "install": "Запустите установщик. Ваши локальные проекты, настройки и API-ключи сохранятся.",
      "reopen": "Откройте GeoLibre заново, чтобы завершить обновление."
    },
    "severity": {
      "major": "Крупный выпуск",
      "minor": "Обновление функций",
      "patch": "Патч-обновление"
    },
    "available": {
      "title": "Доступна версия {{version}}",
      "fallback": "Новая версия",
      "summary": "У вас установлена версия {{current}}."
    },
    "error": {
      "message": "Не удалось проверить обновления.",
      "rateLimit": "Превышен лимит запросов GitHub. Повторите попытку позже.",
      "http": "GitHub вернул {{status}}.",
      "noTag": "В последнем выпуске отсутствует тег версии.",
      "network": "Не удалось подключиться к GitHub. Проверьте соединение и повторите попытку.",
      "viewDownloads": "Открыть страницу загрузок",
      "viewDownloadsHint": "Открывает страницу загрузок GeoLibre в браузере, чтобы вы могли вручную проверить последнюю версию."
    },
    "startup": {
      "title": "Доступно обновление",
      "currentVersion": "Текущая версия",
      "latestVersion": "Последняя доступная версия",
      "download": "Скачать пакет обновления",
      "remindLater": "Напомнить позже",
      "skipVersion": "Пропустить эту версию",
      "settingsHint": "Вы можете изменить параметры проверки обновлений в Настройки → Обновления."
    }
  },
  "masBuild": {
    "unavailable": "Эта возможность недоступна в версии GeoLibre Desktop из Mac App Store."
  },
  "bookmark": {
    "captureStateLabel": "Включить полное состояние слоёв (активные, неактивные и порядок слоёв)",
    "captureStateTooltip": "Применяется только к следующей сохраняемой закладке, а не как глобальная настройка. Оставьте включённым, чтобы позже восстановить именно эту компоновку слоёв.",
    "export": "Экспорт",
    "exportSelected": "Экспортировать выбранное",
    "exportAll": "Экспортировать всё",
    "newFolder": "Новая папка",
    "defaultFolderName": "Папка"
  },
  "managePlugins": {
    "failed": "Не удалось",
    "failedToLoad": "Не удалось загрузить: {{message}}",
    "trust": {
      "title": "Загрузить плагины из этого проекта?",
      "description_one": "Этот проект хочет загрузить 1 внешний плагин по URL, который вы не устанавливали. Плагины выполняют код с полным доступом к приложению.",
      "description_few": "Этот проект хочет загрузить {{count}} внешних плагина по URL, которые вы не устанавливали. Плагины выполняют код с полным доступом к приложению.",
      "description_many": "Этот проект хочет загрузить {{count}} внешних плагинов по URL, которые вы не устанавливали. Плагины выполняют код с полным доступом к приложению.",
      "description_other": "Этот проект хочет загрузить {{count}} внешних плагина по URL, которые вы не устанавливали. Плагины выполняют код с полным доступом к приложению.",
      "warning": "Загружайте плагины только из источников, которым доверяете. Загруженные плагины работают с теми же правами, что и сам GeoLibre.",
      "trustButton": "Доверять и загрузить",
      "dismissButton": "Не загружать"
    },
    "title": "Управление плагинами",
    "searchAria": "Поиск плагинов",
    "searchPlaceholder": "Поиск плагинов",
    "refresh": "Обновить",
    "loadingRegistry": "Загрузка реестра…",
    "registryEmpty": "В реестре нет ни одного плагина.",
    "noPluginsHere": "Здесь нет плагинов.",
    "sectionAll": "Все ({{total}})",
    "sectionInstalled": "Установленные ({{total}})",
    "sectionNotInstalled": "Не установленные ({{total}})",
    "sectionUpgradeable": "Обновляемые ({{total}})",
    "sectionSettings": "Настройки",
    "openHomepageAria": "Открыть домашнюю страницу {{name}}",
    "byAuthor": "автор: {{author}}",
    "updateAvailable": "доступно обновление",
    "requiresVersion": "требуется GeoLibre {{version}}+",
    "install": "Установить",
    "installAria": "Установить {{name}}",
    "removeConfirm": "Удалить?",
    "uninstall": "Удалить",
    "uninstallAria": "Удалить {{name}}",
    "confirmUninstallAria": "Подтвердить удаление {{name}}",
    "update": "Обновить",
    "updateAria": "Обновить {{name}}",
    "loading": "Загрузка…",
    "installed": "Установлен",
    "settingsIntro": "GeoLibre всегда сканирует свой каталог плагинов в данных приложения. Установите упакованный плагин (.zip) из файла или добавьте дополнительные локальные каталоги (только в настольной версии). URL-адреса манифестов (включая установки из магазина) загружаются по сети; изменения здесь применяются сразу.",
    "installFromFile": "Установить из файла",
    "chooseZip": "Выбрать .zip…",
    "installFromFileHintDesktop": "Копирует архив упакованного плагина в каталог плагинов GeoLibre.",
    "installFromFileHintWeb": "Загружает архив упакованного плагина; он сохраняется в браузере и загружается снова при следующем посещении.",
    "localDirectories": "Локальные каталоги",
    "directoryAria": "Каталог плагинов",
    "browseDirectoryAria": "Обзор каталога плагинов",
    "noDirectories": "Дополнительные каталоги плагинов не настроены.",
    "manifestUrls": "URL-адреса манифестов",
    "manifestUrlAria": "URL манифеста плагина",
    "noManifestUrls": "URL-адреса манифестов плагинов не настроены.",
    "removeAria": "Удалить {{name}}",
    "errorLoadRegistry": "Не удалось загрузить реестр плагинов.",
    "errorUpdate": "Не удалось обновить плагин.",
    "errorDirectoryPicker": "Не удалось открыть выбор каталога.",
    "errorInstall": "Не удалось установить плагин.",
    "errorUninstall": "Не удалось удалить плагин.",
    "description": "Просматривайте, устанавливайте, обновляйте и удаляйте внешние плагины GeoLibre. Плагины перечислены в <registryLink>реестре плагинов GeoLibre</registryLink>."
  },
  "viewState": {
    "panelTitle": "Инфо"
  },
  "terrainMeasure": {
    "title": "Рельеф (3D)",
    "surfaceDistance": "Расстояние по поверхности",
    "surfaceArea": "Площадь поверхности",
    "elevationGainLoss": "Набор / потеря высоты",
    "elevationRange": "Мин. / макс. высота",
    "meanSlope": "Средний уклон",
    "computing": "Расчёт рельефа…",
    "partialData": "Для части точек нет данных рельефа"
  },
  "fileNamePrompt": {
    "title": "Сохранить файл как",
    "description": "Введите имя файла. Файл будет загружен в папку загрузок вашего браузера.",
    "label": "Имя файла"
  },
  "newProject": {
    "basemapDescription": "Выберите базовую карту OpenFreeMap или Protomaps, пустой фон или URL стиля MapLibre.",
    "basemapDescriptionNoProtomaps": "Выберите базовую карту OpenFreeMap, пустой фон или URL стиля MapLibre.",
    "sectionOpenFreeMap": "OpenFreeMap",
    "sectionProtomaps": "Protomaps",
    "sectionOther": "Другое",
    "customUrlButton": "Пользовательский URL",
    "invalidCustomUrl": "Введите корректный URL style.json или .pmtiles.",
    "savePromptTitle": "Сохранить текущий проект?",
    "savePromptDescription": "В текущем проекте есть несохранённые изменения. Сохранить их перед созданием нового проекта?",
    "doNotSave": "Не сохранять",
    "saving": "Сохранение...",
    "title": "Новый проект",
    "projectName": "Название проекта",
    "savedTemplates": "Сохранённые шаблоны",
    "deleteTemplate": "Удалить шаблон",
    "basemapLabel": "Базовая карта",
    "create": "Создать"
  },
  "basemapPicker": {
    "title": "Изменить базовую карту",
    "applyCustom": "Применить",
    "invalidUrl": "Введите корректный URL стиля (HTTP или HTTPS).",
    "sectionMoon": "Луна",
    "sectionMars": "Марс",
    "sectionOther": "Другие небесные тела"
  },
  "planetSwitcher": {
    "label": "Небесное тело",
    "earth": "Земля",
    "mercury": "Меркурий",
    "venus": "Венера",
    "moon": "Луна",
    "mars": "Марс",
    "io": "Ио",
    "europa": "Европа",
    "ganymede": "Ганимед",
    "callisto": "Каллисто",
    "titan": "Титан",
    "pluto": "Плутон",
    "charon": "Харон"
  },
  "common": {
    "pickColorFromScreen": "Выбрать цвет с экрана",
    "save": "Сохранить",
    "cancel": "Отмена",
    "close": "Закрыть",
    "retry": "Повторить",
    "reset": "Сбросить",
    "remove": "Удалить",
    "add": "Добавить",
    "ok": "ОК",
    "done": "Готово",
    "openWebApp": "Открыть веб-приложение GeoLibre"
  },
  "addData": {
    "title": "Добавить данные",
    "kind": {
      "xyz": {
        "label": "Добавить слой XYZ",
        "description": "Добавить шаблон растровых тайлов, используя заполнители x, y и z."
      },
      "wms": {
        "label": "Добавить слой WMS",
        "description": "Добавить сервис WMS GetMap как тайловый растровый слой."
      },
      "wfs": {
        "label": "Добавить слой WFS",
        "description": "Добавить объекты WFS, запросив GeoJSON у сервиса GetFeature."
      },
      "wmts": {
        "label": "Добавить слой WMTS",
        "description": "Добавить шаблон URL тайлов WMTS как растровый слой."
      },
      "ogcVectorTiles": {
        "label": "Добавить OGC Vector Tiles",
        "description": "Добавить сервис OGC API - Tiles (векторный) из TileJSON или шаблона тайлов, при необходимости считывая исходные слои из URL стиля."
      },
      "gpx": {
        "label": "Добавить слой GPX",
        "description": "Добавить путевые точки, маршруты и треки GPX как один или несколько векторных слоёв."
      },
      "georss": {
        "label": "Добавить слой GeoRSS",
        "description": "Добавить ленту GeoRSS (RSS, Atom или RDF) по URL или из файла как векторный слой."
      },
      "delimitedText": {
        "label": "Добавить слой с разделителями",
        "description": "Добавить файл с разделителями или URL как точечный слой, используя поля долготы и широты, либо как таблицу атрибутов без пространственной привязки, если координаты недоступны."
      },
      "cad": {
        "label": "Добавить слой CAD (DXF/DWG)",
        "description": "Добавить чертёж AutoCAD DXF или DWG как векторный слой, выбрав слой для загрузки и систему координат для перепроецирования."
      },
      "gdb": {
        "label": "Добавить слой файловой базы геоданных",
        "description": "Добавить слой из файловой базы геоданных Esri (папки .gdb). Слой читается локальным сервером GeoLibre и перепроецируется в WGS84."
      },
      "photos": {
        "label": "Добавить геопривязанные фотографии",
        "description": "Импортировать фотографии JPEG/HEIC как точечный слой, размещая каждую по данным EXIF GPS."
      },
      "mbtiles": {
        "label": "Добавить слой MBTiles",
        "description": "Добавить локальный файл MBTiles как растровый или векторный тайловый слой."
      },
      "arcgis": {
        "label": "Добавить слой ArcGIS",
        "description": "Добавить слой ArcGIS FeatureServer, VectorTileServer, MapServer или ImageServer либо элемент портала."
      },
      "postgres": {
        "label": "Добавить слой PostgreSQL",
        "description": "Запустить Martin локально, обнаружить источники PostGIS и добавить источник как векторные тайлы."
      },
      "deckglViz": {
        "label": "Добавить слой Deck.gl",
        "description": "Выберите тип слоя deck.gl, затем загрузите пример данных либо загрузите файл или URL CSV/JSON/GeoJSON."
      },
      "video": {
        "label": "Добавить видеослой",
        "description": "Добавить геопривязанное видеоналожение, указав URL MP4 и координаты четырёх углов."
      },
      "ogcFeatures": {
        "label": "Добавить слой OGC API - Features",
        "description": "Добавить объекты из коллекции OGC API - Features как векторный слой, переходя по ссылкам постраничной навигации сервиса, пока не будет загружено запрошенное количество объектов."
      }
    },
    "shared": {
      "layerName": "Имя слоя",
      "insertBelow": "Вставить ниже",
      "insertTop": "Верх списка слоёв (по умолчанию)",
      "layersGroup": "Слои",
      "basemapLayersGroup": "Слои базовой карты",
      "showBasemapLayers": "Показывать слои базовой карты (расширенные)",
      "addLayer": "Добавить слой",
      "adding": "Добавление…",
      "addError": "Не удалось добавить слой.",
      "sampleData": "Пример данных",
      "loadSampleData": "Загрузить пример данных…"
    },
    "common": {
      "serviceUrl": "URL сервиса",
      "tileSize": "Размер тайла",
      "tileUrlTemplate": "Шаблон URL тайлов",
      "sourceType": "Тип источника",
      "layerType": "Тип слоя",
      "format": "Формат",
      "optional": "Необязательно",
      "chooseFile": "Выбрать файл",
      "noFileSelected": "Файл не выбран",
      "loading": "Загрузка...",
      "workspaceLayerPlaceholder": "рабочая_область:слой",
      "requestFailed": "Запрос завершился ошибкой со статусом {{status}}",
      "networkFailure": "Не удалось связаться с сервисом. Убедитесь, что хост доступен, а его TLS-сертификат, брандмауэр и настройки прокси разрешают запрос; в браузере запрос также может блокироваться CORS — попробуйте настольное приложение.",
      "requestTimedOut": "Время ожидания запроса истекло. Возможно, хост работает медленно, недоступен или заблокирован брандмауэром либо прокси."
    },
    "serviceLibrary": {
      "title": "Сохранённые сервисы",
      "saveCurrent": "Сохранить текущий",
      "importLibrary": "Импортировать библиотеку из JSON",
      "exportLibrary": "Экспортировать библиотеку в JSON",
      "loadAria": "Загрузить сохранённый сервис",
      "loadPlaceholder": "Загрузить сохранённый сервис…",
      "builtin": "{{name}} (встроенный)",
      "deleteAria": "Удалить сохранённый сервис",
      "empty": "Пока нет сохранённых сервисов — заполните форму и нажмите «Сохранить текущий».",
      "name": "Имя",
      "category": "Категория",
      "categoryPlaceholder": "Необязательно (например, страна, тема)",
      "uncategorized": "Без категории",
      "errorName": "Введите имя для сохранённого сервиса.",
      "saved": "«{{name}}» сохранён в библиотеке сервисов.",
      "removed": "«{{name}}» удалён.",
      "errorExport": "Не удалось экспортировать библиотеку.",
      "errorTooLarge": "Файл слишком большой для импорта (максимум 5 МБ).",
      "errorNoServices": "В этом файле не найдено допустимых сервисов.",
      "errorRead": "Не удалось прочитать этот файл как библиотеку сервисов.",
      "imported_one": "Импортирован {{count}} сервис.",
      "imported_few": "Импортировано {{count}} сервиса.",
      "imported_many": "Импортировано {{count}} сервисов.",
      "imported_other": "Импортировано {{count}} сервиса.",
      "importedWithDropped_one": "Импортирован {{count}} сервис ({{dropped}} пропущено — библиотека заполнена).",
      "importedWithDropped_few": "Импортировано {{count}} сервиса ({{dropped}} пропущено — библиотека заполнена).",
      "importedWithDropped_many": "Импортировано {{count}} сервисов ({{dropped}} пропущено — библиотека заполнена).",
      "importedWithDropped_other": "Импортировано {{count}} сервиса ({{dropped}} пропущено — библиотека заполнена)."
    },
    "xyz": {
      "defaultName": "Слой XYZ",
      "sampleLabel": "Снимки USGS",
      "errorUrl": "Введите шаблон URL тайлов XYZ.",
      "urlPlaceholder": "https://example.com/{z}/{x}/{y}.png",
      "shortUrlPlaceholder": "https://go.example.com/layer",
      "shortUrl": "Короткий URL"
    },
    "wms": {
      "defaultName": "Слой WMS",
      "sampleLabel": "Снимки USGS NAIP",
      "sampleLabelGebco": "Батиметрия океана GEBCO",
      "errorUrl": "Введите URL сервиса WMS.",
      "errorLayers": "Введите один или несколько слоёв WMS.",
      "urlPlaceholder": "https://example.com/geoserver/wms",
      "layers": "Слои",
      "styles": "Стили",
      "transparent": "Прозрачный фон",
      "retrieveLayers": "Получить слои",
      "retrieving": "Получение...",
      "retrievedLayers": "Слои получены",
      "selectLayer_one": "Выбрать из {{count}} слоя",
      "selectLayer_few": "Выбрать из {{count}} слоёв",
      "selectLayer_many": "Выбрать из {{count}} слоёв",
      "selectLayer_other": "Выбрать из {{count}} слоя",
      "noLayersFound": "Для этого сервиса не найдено слоёв.",
      "retrieveError": "Не удалось получить слои из этого сервиса.",
      "version": "Версия WMS"
    },
    "wfs": {
      "defaultName": "Слой WFS",
      "sampleLabel": "Штаты США (GeoServer)",
      "errorUrl": "Введите URL сервиса WFS.",
      "errorTypeName": "Введите имя типа объекта WFS.",
      "errorOutputFormat": "Введите формат вывода WFS.",
      "urlPlaceholder": "https://example.com/geoserver/wfs",
      "featureType": "Тип объекта",
      "version": "Версия",
      "outputFormat": "Формат вывода",
      "srsName": "Имя SRS",
      "maxFeatures": "Максимум объектов",
      "errorMaxFeaturesNumeric": "Введите числовое значение максимального количества объектов.",
      "retrieveTypes": "Получить типы",
      "retrieving": "Получение...",
      "retrievedTypes": "Типы объектов получены",
      "selectType_one": "Выбрать из {{count}} типа объектов",
      "selectType_few": "Выбрать из {{count}} типов объектов",
      "selectType_many": "Выбрать из {{count}} типов объектов",
      "selectType_other": "Выбрать из {{count}} типа объектов",
      "noTypesFound": "Для этого сервиса не найдено типов объектов.",
      "retrieveError": "Не удалось получить типы объектов из этого сервиса."
    },
    "wmts": {
      "defaultName": "Слой WMTS",
      "sampleLabel": "EOX Мировые снимки (Sentinel-2)",
      "errorUrl": "Введите шаблон URL тайлов WMTS.",
      "urlPlaceholder": "https://example.com/wmts/{z}/{y}/{x}.png"
    },
    "ogcVectorTiles": {
      "defaultName": "Слой OGC Vector Tiles",
      "tilesUrl": "URL тайлов",
      "tilesUrlPlaceholder": "https://example.com/tiles/WebMercatorQuad?f=tilejson",
      "tilesUrlHint": "URL метаданных TileJSON или шаблон тайлов {z}/{y}/{x} MVT.",
      "styleUrl": "URL стиля",
      "styleUrlPlaceholder": "https://example.com/styles/default?f=mapbox",
      "styleUrlHint": "Необязательный JSON-стиль Mapbox/MapLibre. Используется для определения исходных слоёв тайлсета, если TileJSON их не указывает.",
      "sourceLayers": "Исходные слои",
      "sourceLayersPlaceholder": "layer_a, layer_b",
      "sourceLayersHint": "Необязательные имена исходных слоёв через запятую. Переопределяют слои, найденные в TileJSON или стиле.",
      "sampleLabel": "PDOK BGT (Нидерланды)",
      "errorUrl": "Введите URL тайлов или URL стиля.",
      "errorNoTiles": "Не удалось определить конечную точку векторных тайлов. Введите URL TileJSON, шаблон тайлов или URL стиля.",
      "errorNoLayers": "Не удалось определить исходные слои векторных тайлов. Добавьте URL стиля или введите имена исходных слоёв."
    },
    "arcgis": {
      "defaultName": "Слой ArcGIS",
      "sampleFeatureLabel": "Крупные города США (объектный)",
      "sampleVectorTileLabel": "Участки Санта-Моники (векторные тайлы)",
      "sampleMapServiceLabel": "Границы США (сервис карт)",
      "sampleImageServiceLabel": "Отмывка рельефа USGS 3DEP (сервис изображений)",
      "featureLayer": "Объектный слой",
      "vectorTileLayer": "Слой векторных тайлов",
      "mapServiceLayer": "Сервис карт",
      "imageServiceLayer": "Сервис изображений",
      "portalItemId": "ID элемента портала",
      "featureUrlPlaceholder": "https://services.arcgis.com/.../FeatureServer/0",
      "vectorTileUrlPlaceholder": "https://.../arcgis/rest/services/.../VectorTileServer",
      "mapServiceUrlPlaceholder": "https://.../arcgis/rest/services/.../MapServer",
      "imageServiceUrlPlaceholder": "https://.../arcgis/rest/services/.../ImageServer",
      "sublayers": "Подслои",
      "sublayersPlaceholder": "Все видимые подслои",
      "sublayersHint": "Необязательные идентификаторы подслоёв через запятую, например 0,2,5. Выбор подслоёв отрисовывает сервис динамически вместо использования его кэшированных тайлов.",
      "renderingRule": "Правило отрисовки",
      "renderingRulePlaceholder": "{\"rasterFunction\":\"Hillshade\"}",
      "renderingRuleHint": "Необязательный JSON растровой функции, применяемой сервисом. Правило отрисовки отрисовывает сервис динамически вместо использования его кэшированных тайлов.",
      "portalUrl": "URL портала",
      "portalUrlPlaceholder": "https://www.arcgis.com/sharing/rest",
      "accessToken": "Токен доступа"
    },
    "gpx": {
      "defaultName": "Слой GPX",
      "sampleLabel": "Маршрут Fells Loop",
      "errorFileMissing": "Отсутствуют данные файла GPX.",
      "readError": "Не удалось прочитать файл GPX.",
      "errorChooseFile": "Выберите файл GPX.",
      "errorUrl": "Введите URL GPX.",
      "errorSelectType": "Выберите хотя бы один тип слоя GPX.",
      "errorNotFound": "Выбранные типы слоёв GPX не найдены.",
      "waypoints": "Путевые точки",
      "tracks": "Треки",
      "trackPoints": "Точки трека",
      "routes": "Маршруты",
      "routePoints": "Точки маршрута",
      "url": "URL GPX",
      "file": "Файл GPX",
      "urlPlaceholder": "https://example.com/route.gpx",
      "layerTypes": "Типы слоёв"
    },
    "georss": {
      "defaultName": "Слой GeoRSS",
      "sampleLabel": "Землетрясения USGS (за последние сутки)",
      "errorFileMissing": "Отсутствуют данные файла GeoRSS.",
      "readError": "Не удалось прочитать файл GeoRSS.",
      "errorChooseFile": "Выберите файл GeoRSS.",
      "errorUrl": "Введите URL GeoRSS.",
      "url": "URL GeoRSS",
      "file": "Файл GeoRSS",
      "urlPlaceholder": "https://example.com/feed.atom"
    },
    "cad": {
      "defaultName": "Слой CAD",
      "fileFilter": "CAD (DXF/DWG)",
      "layer": "Слой CAD",
      "layerPlaceholder": "Сначала выберите файл CAD",
      "readingLayers": "Чтение слоёв...",
      "layerOption": "{{name}} ({{type}}, {{count}} объектов)",
      "crs": "Исходная СК",
      "crsPlaceholder": "например, EPSG:26915",
      "crsPresetLabel": "Распространённые системы координат...",
      "crsHelp": "Оставьте пустым, если чертёж уже в долготе/широте (WGS84). В противном случае введите код EPSG системы координат чертежа для перепроецирования.",
      "readError": "Не удалось прочитать этот файл CAD.",
      "errorNoLayers": "В этом файле CAD не найдено слоёв.",
      "errorChooseFile": "Сначала выберите файл CAD (DXF/DWG).",
      "errorNoLayer": "Выберите слой CAD для загрузки.",
      "errorUnsupportedGeometry": "Этот слой CAD содержит смешанную геометрию или коллекцию геометрий, которую нельзя отобразить. Попробуйте другой слой."
    },
    "gdb": {
      "defaultName": "Слой базы геоданных",
      "chooseFolder": "Выбрать папку .gdb...",
      "noFolderSelected": "База геоданных не выбрана",
      "layer": "Класс объектов",
      "layerPlaceholder": "Сначала выберите базу геоданных",
      "readingLayers": "Чтение слоёв...",
      "layerOption": "{{name}} ({{type}}, объектов: {{count}})",
      "help": "Таблицы без геометрии не показываются. Выбранный класс объектов загружается через локальный сервер GeoLibre и перепроецируется в WGS84.",
      "desktopOnly": "Слои файловой базы геоданных доступны только в GeoLibre Desktop. Эта функция читает локальную папку .gdb через локальный сервер GeoLibre, к которому у веб-приложения нет доступа.",
      "readError": "Не удалось прочитать эту файловую базу геоданных.",
      "convertError": "Не удалось загрузить этот класс объектов.",
      "errorNotGdb": "Выберите папку с окончанием .gdb (файловую базу геоданных Esri).",
      "errorNoLayers": "В этой базе геоданных не найдено классов объектов с геометрией.",
      "errorChooseFolder": "Сначала выберите папку .gdb.",
      "errorNoLayer": "Выберите класс объектов для загрузки.",
      "errorTimeout": "Время чтения базы геоданных истекло.",
      "crs": "Исходная CRS",
      "crsPlaceholder": "например, EPSG:26915",
      "crsHelp": "Не удалось определить систему координат этого класса объектов. Введите код EPSG (или ESRI), в котором он сохранён, чтобы перепроецировать его в WGS84.",
      "errorMissingCrs": "Не удалось определить систему координат этого класса объектов. Укажите исходную CRS, чтобы добавить его."
    },
    "delimitedText": {
      "defaultName": "Слой с разделителями",
      "sampleLabel": "Города США",
      "errorChooseFile": "Выберите файл с разделителями.",
      "errorUrl": "Введите URL файла с разделителями.",
      "errorFileMissing": "Отсутствуют данные файла с разделителями.",
      "readError": "Не удалось прочитать файл с разделителями.",
      "errorDataMissing": "Отсутствуют данные файла с разделителями.",
      "retrievedColumns_one": "Получен {{count}} столбец.",
      "retrievedColumns_few": "Получено {{count}} столбца.",
      "retrievedColumns_many": "Получено {{count}} столбцов.",
      "retrievedColumns_other": "Получено {{count}} столбца.",
      "retrievedColumnsTable_one": "Получен {{count}} столбец. Столбцы координат не обнаружены; будет добавлено как таблица атрибутов.",
      "retrievedColumnsTable_few": "Получено {{count}} столбца. Столбцы координат не обнаружены; будет добавлено как таблица атрибутов.",
      "retrievedColumnsTable_many": "Получено {{count}} столбцов. Столбцы координат не обнаружены; будет добавлено как таблица атрибутов.",
      "retrievedColumnsTable_other": "Получено {{count}} столбца. Столбцы координат не обнаружены; будет добавлено как таблица атрибутов.",
      "errorRetrieveColumns": "Не удалось получить имена столбцов.",
      "url": "URL файла с разделителями",
      "file": "Файл с разделителями",
      "urlPlaceholder": "https://example.com/data.csv",
      "retrieving": "Получение...",
      "retrieveColumns": "Получить столбцы",
      "delimiter": "Разделитель",
      "delimiterComma": "Запятая",
      "delimiterTab": "Табуляция",
      "delimiterSemicolon": "Точка с запятой",
      "delimiterPipe": "Вертикальная черта",
      "delimiterCustom": "Пользовательский",
      "customDelimiter": "Пользовательский разделитель",
      "longitudeField": "Поле долготы",
      "latitudeField": "Поле широты",
      "noneField": "Нет (таблица атрибутов)",
      "tableHint": "Оставьте оба поля координат как «Нет», чтобы добавить файл как таблицу атрибутов без пространственной привязки (для использования в соединении по атрибутам).",
      "crs": "Система координат",
      "crsPlaceholder": "например, EPSG:32643",
      "crsPresetLabel": "Распространённые системы координат...",
      "crsHelp": "Оставьте пустым, если координаты уже указаны в долготе/широте (WGS84). В противном случае введите код EPSG столбцов координат, и точки будут перепроецированы в WGS84. Для проекционной СК поля долготы и широты выбирают столбцы X (восток) и Y (север).",
      "importMode": "Импортировать как",
      "modeCoordinates": "Координаты",
      "modeAddresses": "Адреса (геокодирование)",
      "addressColumns": "Столбцы адреса",
      "addressColumnsEmptyHint": "Сначала получите столбцы, чтобы выбрать столбцы адреса.",
      "addressColumnsHint": "Выберите один или несколько столбцов, которые будут объединены в адрес, отправляемый геокодеру (например, улица, город, область).",
      "errorNoAddressColumns": "Выберите хотя бы один столбец адреса.",
      "errorNoAddressesFound": "Ни в одной строке нет значения в выбранных столбцах адреса."
    },
    "photos": {
      "defaultName": "Фотографии",
      "chooseLabel": "Фотографии",
      "choosePhotos": "Выбрать фотографии",
      "hint": "Выберите фотографии JPEG, PNG, TIFF или HEIC. Каждая размещается по данным EXIF GPS. Фотографии HEIC размещаются, но отображаются без миниатюры.",
      "readError": "Не удалось прочитать выбранные фотографии.",
      "errorChooseFiles": "Выберите одну или несколько фотографий.",
      "selectedCount_one": "Выбрана {{count}} фотография",
      "selectedCount_few": "Выбрано {{count}} фотографии",
      "selectedCount_many": "Выбрано {{count}} фотографий",
      "selectedCount_other": "Выбрано {{count}} фотографии",
      "errorNoGps_one": "В выбранной фотографии не найдено местоположение GPS.",
      "errorNoGps_few": "В {{count}} выбранных фотографиях не найдено местоположение GPS.",
      "errorNoGps_many": "В {{count}} выбранных фотографиях не найдено местоположение GPS.",
      "errorNoGps_other": "В {{count}} выбранных фотографиях не найдено местоположение GPS.",
      "addedSummary_one": "Добавлена {{count}} геопривязанная фотография.",
      "addedSummary_few": "Добавлено {{count}} геопривязанные фотографии.",
      "addedSummary_many": "Добавлено {{count}} геопривязанных фотографий.",
      "addedSummary_other": "Добавлено {{count}} геопривязанной фотографии.",
      "skippedNote_one": "{{count}} фотография пропущена (нет местоположения GPS).",
      "skippedNote_few": "{{count}} фотографии пропущены (нет местоположения GPS).",
      "skippedNote_many": "{{count}} фотографий пропущено (нет местоположения GPS).",
      "skippedNote_other": "{{count}} фотографии пропущено (нет местоположения GPS).",
      "noThumbnailNote_one": "{{count}} фотография без миниатюры (HEIC или неподдерживаемый формат).",
      "noThumbnailNote_few": "{{count}} фотографии без миниатюры (HEIC или неподдерживаемый формат).",
      "noThumbnailNote_many": "{{count}} фотографий без миниатюры (HEIC или неподдерживаемый формат).",
      "noThumbnailNote_other": "{{count}} фотографии без миниатюры (HEIC или неподдерживаемый формат).",
      "manualPromptTitle": "В этой фотографии не найдено местоположение GPS.",
      "manualPromptBody": "Разместите её в центре карты и перетащите на нужную позицию.",
      "manualPromptCenter": "Центр карты: {{lng}}, {{lat}}",
      "manualPlace": "Разместить в центре карты",
      "manualHint": "Перетащите этот маркер, чтобы разместить фотографию, затем нажмите «Готово»."
    },
    "mbtiles": {
      "defaultName": "Слой MBTiles",
      "readError": "Не удалось прочитать файл MBTiles.",
      "errorChooseFile": "Выберите файл MBTiles.",
      "errorSourceLayers": "Введите хотя бы один векторный исходный слой.",
      "tileType": "Тип тайлов",
      "sourceLayers": "Исходные слои",
      "sourceLayersPlaceholder": "building, place, water"
    },
    "postgres": {
      "defaultName": "Слой PostgreSQL",
      "errorDesktopOnly": "Слои PostgreSQL требуют GeoLibre Desktop.",
      "errorConnectionString": "Введите строку подключения PostgreSQL.",
      "statusCheckingBinary": "Проверка двоичного файла Martin...",
      "statusDownloaded": "Martin загружен. Запуск локального сервера...",
      "statusStarting": "Запуск локального сервера Martin...",
      "statusReadingCatalog": "Чтение каталога Martin...",
      "statusFound_one": "Найден {{count}} источник.",
      "statusFound_few": "Найдено {{count}} источника.",
      "statusFound_many": "Найдено {{count}} источников.",
      "statusFound_other": "Найдено {{count}} источника.",
      "statusNoSources": "Martin запущен, но совместимые источники PostGIS не найдены.",
      "errorConnect": "Не удалось подключиться к PostgreSQL.",
      "statusStopped": "Martin остановлен.",
      "errorStop": "Не удалось остановить Martin.",
      "errorConnectFirst": "Сначала подключитесь к PostgreSQL.",
      "errorNoVectorLayers": "У выбранного источника Martin нет векторных слоёв.",
      "errorSelectSource": "Выберите источник Martin для добавления.",
      "desktopOnlyNotice": "Слои PostgreSQL доступны только в GeoLibre Desktop. Эта функция запускает локальный тайловый сервер Martin, который веб-приложение запустить не может.",
      "savedConnection": "Сохранённое подключение",
      "selectSavedConnection": "Выбрать сохранённое подключение",
      "connectionString": "Строка подключения PostgreSQL",
      "connectionStringPlaceholder": "postgres://user:password@host:5432/database",
      "defaultSrid": "SRID по умолчанию",
      "connect": "Подключиться",
      "stop": "Остановить",
      "martinSource": "Источник Martin",
      "runningOnPort": "Martin запущен на порту {{port}}.",
      "loadMode": "Загрузить как",
      "loadModeTiles": "Векторные тайлы (Martin, только чтение)",
      "loadModeEditable": "Редактируемый слой (загружает все объекты)",
      "editableNotice": "Загружает объекты таблицы через локальный сервер обработки, чтобы их можно было редактировать. Сохраняйте изменения обратно действием слоя «Сохранить изменения в таблицу PostGIS».",
      "statusListingTables": "Чтение пространственных таблиц...",
      "statusTablesFound_one": "Найдена {{count}} пространственная таблица.",
      "statusTablesFound_few": "Найдено {{count}} пространственные таблицы.",
      "statusTablesFound_many": "Найдено {{count}} пространственных таблиц.",
      "statusTablesFound_other": "Найдено {{count}} пространственной таблицы.",
      "statusNoTables": "В этой базе данных не найдено пространственных таблиц.",
      "editableTable": "Таблица",
      "tableReadOnly": "{{table}} (только чтение: нет первичного ключа)",
      "errorSelectTable": "Выберите таблицу для загрузки.",
      "errorRuntimeMissing": "У сервера обработки не установлен рантайм PostGIS (psycopg). Установите дополнение 'postgis' для geolibre-server, чтобы загружать редактируемые слои."
    },
    "video": {
      "defaultName": "Видеослой",
      "sampleLabel": "Прибрежные волны у Сан-Франциско",
      "errorUrl": "Введите URL видео.",
      "errorHttps": "URL видео должен начинаться с https://.",
      "cornerTopLeft": "верхний левый",
      "cornerTopRight": "верхний правый",
      "cornerBottomRight": "нижний правый",
      "cornerBottomLeft": "нижний левый",
      "errorCornerFormat": "Введите {{corner}} угол в формате «долгота, широта».",
      "errorCornerNumber": "Введите числовые значения долготы и широты для угла {{corner}}.",
      "errorCornerLng": "Долгота угла {{corner}} должна быть от -180 до 180.",
      "errorCornerLat": "Широта угла {{corner}} должна быть от -90 до 90.",
      "primaryUrl": "Основной URL видео",
      "primaryUrlPlaceholder": "https://example.com/clip.mp4",
      "fallbackUrl": "Резервный URL видео (необязательно)",
      "fallbackUrlPlaceholder": "https://example.com/clip.webm",
      "topLeft": "Верхний левый (долгота, широта)",
      "topRight": "Верхний правый (долгота, широта)",
      "bottomRight": "Нижний правый (долгота, широта)",
      "bottomLeft": "Нижний левый (долгота, широта)",
      "cornersNote": "Четыре угла задают геопривязку видео на карте. Видео должно передаваться по HTTPS, а сервер — разрешать межсайтовые запросы (CORS), чтобы кадры отображались."
    },
    "netcdf": {
      "sampleLabel": "Температура воздуха",
      "title": "Добавить NetCDF / HDF",
      "description": "Отобразить набор данных NetCDF или HDF5: удалённый Cloud-Optimized файл через ссылку kerchunk (чтение через HTTP range-запросы) или локальный файл NetCDF или HDF5, прочитанный в браузере.",
      "sourceLabel": "Источник",
      "sourceCloud": "Cloud-Optimized (URL kerchunk)",
      "sourceLocal": "Локальный файл (NetCDF / HDF5)",
      "localFileLabel": "Локальный файл",
      "chooseDifferentFile": "Выбрать другой файл",
      "readingFile": "Чтение...",
      "readingRemote": "Чтение метаданных файла по HTTP...",
      "localFileHelp": "Выберите локальный файл NetCDF или HDF5 (.nc, .nc4, .cdf, .h5 или .hdf5); поддерживаются как классический NetCDF-3, так и NetCDF-4/HDF5. Декодируется в браузере; большие файлы используют больше памяти.",
      "errorNoVariables": "В файле не найдено переменных, пригодных для отображения (2D или выше).",
      "errorNoFile": "Файл не загружен.",
      "kerchunkUrlLabel": "URL kerchunk-ссылки",
      "kerchunkUrlHelp": "Выберите пример набора данных выше или вставьте собственный URL kerchunk-ссылки, затем нажмите «Загрузить переменные».",
      "loading": "Загрузка...",
      "loadVariables": "Загрузить переменные",
      "variableLabel": "Переменная",
      "dimIndexLabel": "Индекс {{dim}}",
      "colormapLabel": "Цветовая карта",
      "bandCombinationLabel": "Комбинация каналов",
      "bandCombinationHelp": "Один канал отображается по цветовой карте; RGB-композит рисует три канала этой переменной как красный, зелёный и синий каналы, каждый растянут по собственному диапазону 2-98 %.",
      "modeSingleBand": "Один канал (по цветовой карте)",
      "modeRgb": "RGB-композит (три канала)",
      "colorMin": "Минимум цвета (необязательно)",
      "colorMax": "Максимум цвета (необязательно)",
      "adding": "Добавление...",
      "addLayer": "Добавить слой",
      "channel": {
        "red": "Красный канал",
        "green": "Зелёный канал",
        "blue": "Синий канал"
      }
    },
    "deckViz": {
      "defaultName": "Слой Deck.gl",
      "errorChooseFile": "Выберите файл CSV, JSON или GeoJSON.",
      "errorUrl": "Введите URL данных.",
      "errorUnknownType": "Неизвестный тип слоя.",
      "needsGeojson": "{{label}} требует файл GeoJSON.",
      "needsTabular": "{{label}} требует табличные данные CSV/JSON, а не GeoJSON.",
      "mapRequiredFields_one": "Сопоставьте обязательное поле: {{fields}}.",
      "mapRequiredFields_few": "Сопоставьте обязательные поля: {{fields}}.",
      "mapRequiredFields_many": "Сопоставьте обязательные поля: {{fields}}.",
      "mapRequiredFields_other": "Сопоставьте обязательные поля: {{fields}}.",
      "errorExample": "Не удалось загрузить пример данных.",
      "loadedFeatures_one": "Загружен {{count}} объект.",
      "loadedFeatures_few": "Загружено {{count}} объекта.",
      "loadedFeatures_many": "Загружено {{count}} объектов.",
      "loadedFeatures_other": "Загружено {{count}} объекта.",
      "loadedRows_one": "{{count}} строка",
      "loadedRows_few": "{{count}} строки",
      "loadedRows_many": "{{count}} строк",
      "loadedRows_other": "{{count}} строки",
      "loadedColumns_one": "{{count}} столбец",
      "loadedColumns_few": "{{count}} столбца",
      "loadedColumns_many": "{{count}} столбцов",
      "loadedColumns_other": "{{count}} столбца",
      "loadedTabular": "Загружено {{rows}} · {{columns}}.",
      "errorLoad": "Не удалось загрузить данные.",
      "errorLoadFirst": "Сначала загрузите пример данных или файл/URL.",
      "useExample": "Использовать пример данных",
      "loadYourOwn": "Или загрузите свои",
      "dataUrl": "URL данных",
      "localFile": "Локальный файл",
      "urlPlaceholder": "https://example.com/data.csv",
      "chooseFileLoad": "Выбрать файл и загрузить",
      "loadData": "Загрузить данные",
      "selectRole": "— выбрать —",
      "roleNone": "(нет)",
      "closeAfterAdd": "Закрыть диалог после добавления слоя",
      "color": "Цвет",
      "pointSize": "Размер точки",
      "cellSize": "Размер ячейки",
      "lineWidth": "Толщина линии",
      "extrusion": "3D-выдавливание",
      "modelUrlPlaceholder": "https://example.com/model.glb"
    },
    "ogcFeatures": {
      "defaultName": "Слой OGC API - Features",
      "sampleLabel": "Озёра мира (демо pygeoapi)",
      "urlPlaceholder": "https://example.com/ogcapi",
      "urlHint": "Начальная страница сервиса или любой скопированный из неё URL (адрес /collections или /collections/{id}/items тоже подойдёт).",
      "retrieveCollections": "Получить коллекции",
      "retrieving": "Получение...",
      "retrievedCollections": "Полученные коллекции",
      "selectCollection_one": "Выбрать из {{count}} коллекции",
      "selectCollection_few": "Выбрать из {{count}} коллекций",
      "selectCollection_many": "Выбрать из {{count}} коллекций",
      "selectCollection_other": "Выбрать из {{count}} коллекции",
      "noCollectionsFound": "Для этого сервиса не найдено ни одной коллекции объектов.",
      "retrieveError": "Не удалось получить коллекции из этого сервиса.",
      "collection": "Коллекция",
      "collectionPlaceholder": "collection-id",
      "maxFeatures": "Максимум объектов",
      "bbox": "Ограничивающий прямоугольник",
      "datetime": "Дата и время",
      "errorCollection": "Введите идентификатор коллекции OGC API - Features.",
      "errorMaxFeatures": "Введите максимальное количество объектов, равное 1 или больше.",
      "errorBbox": "Введите ограничивающий прямоугольник в виде «запад,юг,восток,север».",
      "errorNoFeatures": "Эта коллекция не вернула ни одного объекта."
    },
    "nonGeographicCoordinates": "Координаты в {{names}} не являются долготой/широтой, поэтому на карте ничего не отобразится. СК указана неверно — перепроецируйте данные (или исправьте .prj) и загрузите снова."
  },
  "offline": {
    "title": "Скачать офлайн-область",
    "description": "Сохранить тайлы базовой карты текущего вида, чтобы эта область работала без подключения к сети.",
    "noServiceWorker": "Для офлайн-кэширования требуется установленное веб-приложение. Скачанные здесь тайлы не будут сохранены для офлайн-использования в этой сборке.",
    "uncacheable": "Следующие источники базовой карты не поддерживают офлайн-загрузку и будут отсутствовать на офлайн-карте: {{hosts}}.",
    "cacheable": "Следующие источники базовой карты будут загружены и доступны офлайн: {{hosts}}.",
    "includeExtra": "Включить дополнительные уровни детализации для увеличения масштаба",
    "currentViewOnly": "Только текущий вид · Масштаб {{zoom}}",
    "detailLevels": "Дополнительные уровни детализации",
    "relativeLevels_one": "+{{count}} уровень · Масштаб {{min}}–{{max}}",
    "relativeLevels_few": "+{{count}} уровня · Масштаб {{min}}–{{max}}",
    "relativeLevels_many": "+{{count}} уровней · Масштаб {{min}}–{{max}}",
    "relativeLevels_other": "+{{count}} уровня · Масштаб {{min}}–{{max}}",
    "tiles": "Ресурсы для загрузки",
    "tooManyTiles": "Эта область превышает лимит офлайн-кэша ({{max}} ресурсов); при загрузке новых ресурсов старые кэшированные тайлы могут быть вытеснены. Уменьшите уровни детализации или выберите область меньшего размера.",
    "acknowledgeEviction": "Всё равно скачать, при необходимости вытесняя старые тайлы",
    "download": "Скачать",
    "cancel": "Отмена",
    "progress": "Скачивание {{done}} / {{total}}…",
    "complete_one": "Офлайн-область сохранена. {{count}} ресурс кэширован для офлайн-использования.",
    "complete_few": "Офлайн-область сохранена. {{count}} ресурса кэшировано для офлайн-использования.",
    "complete_many": "Офлайн-область сохранена. {{count}} ресурсов кэшировано для офлайн-использования.",
    "complete_other": "Офлайн-область сохранена. {{count}} ресурса кэшировано для офлайн-использования.",
    "completeWithFailures": "Сохранено {{done}} из {{total}} ресурсов ({{failed}} с ошибкой).",
    "retryFailed_one": "Повторить {{count}} неудачный ресурс",
    "retryFailed_few": "Повторить {{count}} неудачных ресурса",
    "retryFailed_many": "Повторить {{count}} неудачных ресурсов",
    "retryFailed_other": "Повторить {{count}} неудачного ресурса",
    "retryAll": "Повторить все ресурсы",
    "advanced": "Дополнительные параметры",
    "concurrency": "Одновременные запросы",
    "concurrencyHint": "Уменьшите это значение, чтобы снизить нагрузку на серверы, ограничивающие частоту запросов тайлов.",
    "timeout": "Тайм-аут запроса (секунды)",
    "timeoutHint": "Каждому запросу тайла даётся до {{seconds}} с, прежде чем он считается неудачным.",
    "timeoutDisabled": "Без тайм-аута — запросы используют значение браузера по умолчанию. Увеличьте его для медленных соединений."
  },
  "offlineManager": {
    "title": "Управление офлайн-областями",
    "description": "Просматривайте загруженные для офлайн-использования области базовой карты, обновляйте их или удаляйте для освобождения места.",
    "noServiceWorker": "Для офлайн-кэширования требуется установленное веб-приложение. Обновление областей не сохранит тайлы для офлайн-использования в этой сборке.",
    "empty": "Пока нет офлайн-областей. Используйте «Скачать офлайн-область», чтобы сохранить текущий вид карты для офлайн-использования.",
    "zoomRange": "Масштаб {{min}}–{{max}}",
    "tilesCount_one": "{{count}} тайл",
    "tilesCount_few": "{{count}} тайла",
    "tilesCount_many": "{{count}} тайлов",
    "tilesCount_other": "{{count}} тайла",
    "savedOn": "Сохранено {{date}}",
    "rename": "Переименовать эту область",
    "nameLabel": "Имя области",
    "update": "Обновить эту область",
    "delete": "Удалить эту область",
    "confirmDelete": "Удалить",
    "updateAll": "Обновить все",
    "updating": "Обновление {{done}} / {{total}}…",
    "totalFootprint_one": "{{size}} в {{count}} области",
    "totalFootprint_few": "{{size}} в {{count}} областях",
    "totalFootprint_many": "{{size}} в {{count}} областях",
    "totalFootprint_other": "{{size}} в {{count}} области",
    "deviceUsage": "Использовано {{usage}} из {{quota}}"
  },
  "recordTour": {
    "title": "Записать тур по карте",
    "hint": "Перемещайте и масштабируйте карту, затем захватывайте каждый вид. Пока панель открыта, карта остаётся интерактивной.",
    "unsupported": "Этот браузер не может записывать холст карты. Попробуйте актуальную версию Chrome, Edge или Firefox.",
    "addView": "Добавить текущий вид",
    "pathTitle": "Создать из пути",
    "pathNoLayers": "Добавьте слой LineString, чтобы создать ключевые кадры из пути.",
    "pathLayer": "Слой пути",
    "pathLayerOption": "{{name}} (точек: {{count}})",
    "pathKeyframes": "Ключевые кадры",
    "pathZoom": "Масштаб",
    "pathPitch": "Наклон",
    "pathHold": "Удержание",
    "pathTransition": "Переход",
    "pathGenerate": "Создать",
    "pathConfirmReplace": "Заменить текущие ключевые кадры кадрами, созданными из этого пути?",
    "pathGenerated_one": "Из пути создан {{count}} ключевой кадр.",
    "pathGenerated_few": "Из пути создано {{count}} ключевых кадра.",
    "pathGenerated_many": "Из пути создано {{count}} ключевых кадров.",
    "pathGenerated_other": "Из пути создано {{count}} ключевого кадра.",
    "pathGenerateError": "Не удалось создать ключевые кадры из этого пути.",
    "loadConfig": "Загрузить настройку",
    "saveConfig": "Сохранить настройку",
    "confirmLoad": "Заменить текущие ключевые кадры загруженной настройкой?",
    "configFileType": "Конфигурация тура",
    "configSaved": "Настройка сохранена как {{name}}",
    "configLoaded_one": "Загружена настройка с {{count}} ключевым кадром.",
    "configLoaded_few": "Загружена настройка с {{count}} ключевыми кадрами.",
    "configLoaded_many": "Загружена настройка с {{count}} ключевыми кадрами.",
    "configLoaded_other": "Загружена настройка с {{count}} ключевого кадра.",
    "configSaveError": "Не удалось сохранить настройку тура. Повторите попытку.",
    "configLoadError": "Не удалось загрузить настройку тура. Файл может быть повреждён.",
    "keyframeCount_one": "{{count}} ключевой кадр",
    "keyframeCount_few": "{{count}} ключевых кадра",
    "keyframeCount_many": "{{count}} ключевых кадров",
    "keyframeCount_other": "{{count}} ключевого кадра",
    "empty": "Переместите и масштабируйте карту к начальному виду, затем добавьте его как первый ключевой кадр. Добавьте не менее двух ключевых кадров, чтобы записать тур.",
    "flyToKeyframe": "Перелететь к этому виду",
    "hold": "Удержание",
    "transition": "Переход",
    "secondsShort": "сек",
    "holdSeconds": "Секунды удержания на этом виде",
    "segmentSeconds": "Секунды перехода к следующему виду",
    "resizeLeft": "Изменить размер панели от нижнего левого угла",
    "resizeRight": "Изменить размер панели от нижнего правого угла",
    "recapture": "Обновить до текущего вида карты",
    "moveUp": "Переместить ключевой кадр вверх",
    "moveDown": "Переместить ключевой кадр вниз",
    "removeKeyframe": "Удалить ключевой кадр",
    "fps": "Кадров в секунду",
    "estimatedLength": "Около {{seconds}} с",
    "record": "Записать",
    "videoFileType": "Видео WebM",
    "recordingStatus": "Запись… {{percent}}%",
    "savingStatus": "Сохранение видео…",
    "stop": "Стоп",
    "recordingReady": "Запись готова. Назовите её и сохраните, либо отмените, чтобы перезаписать.",
    "fileNameLabel": "Имя файла",
    "saveVideo": "Сохранить видео…",
    "discard": "Отменить",
    "saved": "{{name}} сохранён",
    "saveCancelled": "Сохранение отменено.",
    "recordError": "Не удалось записать тур. Повторите попытку.",
    "saveError": "Не удалось сохранить видео. Повторите попытку."
  },
  "recordVideo": {
    "title": "Записать видео",
    "hint": "Записывайте карту в реальном времени как видео. Перемещайте и масштабируйте её во время записи — каждое движение попадёт в запись. Эта панель и рамка выделения в видео не входят.",
    "unsupported": "Этот браузер не может записывать холст карты. Попробуйте актуальную версию Chrome, Edge или Firefox.",
    "area": "Область захвата",
    "wholeMap": "Вся карта",
    "selectArea": "Выбрать область…",
    "redrawArea": "Перерисовать область…",
    "drawHint": "Растяните прямоугольник на карте, чтобы задать область записи, или нажмите Esc для отмены.",
    "regionChosen": "Область записи: {{width}} × {{height}} px. Рамка остаётся неподвижной, пока карта движется под ней.",
    "noRegion": "Нарисуйте прямоугольник на карте, чтобы выбрать область записи.",
    "needRegion": "Сначала выберите область на карте.",
    "fps": "Кадров в секунду",
    "caption": "Подпись (встраивается в видео)",
    "captionTitlePlaceholder": "Заголовок (необязательно)",
    "captionTextLabel": "Подзаголовок или источник данных",
    "captionTextPlaceholder": "Подзаголовок или источник данных (необязательно)",
    "captionPosition": "Положение подписи",
    "captionPos": {
      "top-left": "Сверху слева",
      "top-center": "Сверху по центру",
      "top-right": "Сверху справа",
      "bottom-left": "Снизу слева",
      "bottom-center": "Снизу по центру",
      "bottom-right": "Снизу справа"
    },
    "includePanels": "Включать панели карты (легенду, шкалу цветов, HTML) в видео",
    "record": "Записать",
    "preparing": "Подготовка…",
    "stop": "Стоп",
    "savingStatus": "Сохранение видео…",
    "recordingReady": "Запись готова. Назовите её и сохраните, либо отмените, чтобы перезаписать.",
    "fileNameLabel": "Имя файла",
    "saveVideo": "Сохранить видео…",
    "discard": "Отменить",
    "videoFileType": "Видео",
    "saved": "{{name}} сохранён",
    "saveCancelled": "Сохранение отменено.",
    "recordError": "Не удалось записать видео. Повторите попытку.",
    "saveError": "Не удалось сохранить видео. Повторите попытку."
  },
  "fieldCollection": {
    "title": "Полевой сбор данных",
    "description": "Фиксируйте точечные, линейные или полигональные наблюдения по пользовательской форме. Размещайте точку по GPS или касанием карты, рисуйте линии и полигоны по вершинам.",
    "captureDescription": "Зафиксируйте местоположение по GPS или на карте, затем заполните форму, чтобы сохранить его.",
    "captureReviewDescription": "Проверьте зафиксированное местоположение, заполните форму и сохраните его в слой.",
    "reopen": "Открыть полевой сбор данных",
    "targetLayer": "Слой сбора",
    "newLayer": "Новый слой сбора…",
    "layerName": "Имя слоя",
    "layerNamePlaceholder": "Полевые наблюдения",
    "geometry": "Геометрия",
    "geom": {
      "point": "Точка",
      "line": "Линия",
      "polygon": "Полигон"
    },
    "fields": "Поля формы",
    "addField": "Добавить поле",
    "fieldLabel": "Подпись",
    "fieldType": "Тип",
    "options": "Варианты (через запятую)",
    "required": "Обязательно",
    "noFields": "Пока нет полей. Добавьте поля для фиксации атрибутов или создайте слой, чтобы фиксировать только местоположения точек.",
    "type": {
      "text": "Текст",
      "number": "Число",
      "date": "Дата",
      "choice": "Выбор"
    },
    "createLayer": "Создать слой",
    "captureHint": "Используйте GPS или выберите точку на карте, чтобы начать фиксацию.",
    "drawHint": "Нарисуйте фигуру на карте, чтобы начать фиксацию.",
    "useGps": "Использовать GPS",
    "pickOnMap": "Выбрать на карте",
    "reposition": "Переместить точку",
    "drawOnMap": "Рисовать на карте",
    "pickBannerTitle": "Активен режим размещения",
    "pickBannerHint": "Нажмите в любом месте карты, чтобы выбрать точку, или нажмите Esc для отмены.",
    "addGpsVertex": "Добавить вершину по GPS",
    "undo": "Отменить",
    "finish": "Завершить",
    "vertices_one": "{{count}} вершина",
    "vertices_few": "{{count}} вершины",
    "vertices_many": "{{count}} вершин",
    "vertices_other": "{{count}} вершины",
    "needMore": "Добавьте не менее {{min}} вершин",
    "dblClickHint": "Нажмите для добавления вершин; двойной щелчок — для завершения.",
    "locating": "Определение местоположения…",
    "photo": "Фотография",
    "photoOptional": "Фотография (необязательно)",
    "choosePhoto": "Выбрать фотографию…",
    "removePhoto": "Удалить",
    "save": {
      "point": "Сохранить точку",
      "line": "Сохранить линию",
      "polygon": "Сохранить полигон"
    },
    "saved": {
      "point_one": "Сохранена {{count}} точка в слой {{layer}}.",
      "point_few": "Сохранено {{count}} точки в слой {{layer}}.",
      "point_many": "Сохранено {{count}} точек в слой {{layer}}.",
      "point_other": "Сохранено {{count}} точки в слой {{layer}}.",
      "line_one": "Сохранена {{count}} линия в слой {{layer}}.",
      "line_few": "Сохранено {{count}} линии в слой {{layer}}.",
      "line_many": "Сохранено {{count}} линий в слой {{layer}}.",
      "line_other": "Сохранено {{count}} линии в слой {{layer}}.",
      "polygon_one": "Сохранён {{count}} полигон в слой {{layer}}.",
      "polygon_few": "Сохранено {{count}} полигона в слой {{layer}}.",
      "polygon_many": "Сохранено {{count}} полигонов в слой {{layer}}.",
      "polygon_other": "Сохранено {{count}} полигона в слой {{layer}}."
    },
    "layerGone": "Слой сбора данных больше недоступен.",
    "noGeolocation": "Геолокация недоступна на этом устройстве.",
    "geolocationDenied": "Не удалось определить ваше местоположение. Проверьте разрешения геолокации и повторите попытку.",
    "photoTooLarge": "Эта фотография слишком большая (максимум {{max}}). Выберите изображение меньшего размера.",
    "photoReadError": "Не удалось прочитать это изображение. Попробуйте другой файл.",
    "errorRequired": "Это поле обязательно.",
    "errorNumber": "Введите корректное число.",
    "errorChoice": "Выберите один из предложенных вариантов."
  },
  "gps": {
    "title": "GPS-трекинг",
    "description": "Транслируйте положение устройства на карту, записывайте журнал трека и фиксируйте точки в текущем местоположении.",
    "start": "Запустить GPS",
    "stop": "Остановить GPS",
    "follow": "Центрировать карту на моём положении",
    "waitingForFix": "Ожидание сигнала GPS…",
    "noGeolocation": "Геолокация недоступна на этом устройстве.",
    "permissionDenied": "Доступ к местоположению запрещён. Разрешите его в настройках браузера или системы и повторите попытку.",
    "trackLog": "Журнал трека",
    "record": "Записывать трек",
    "pause": "Пауза",
    "resume": "Продолжить",
    "discard": "Отбросить",
    "saveTrack": "Сохранить как слой",
    "exportGpx": "Экспорт GPX",
    "exportGeojson": "Экспорт GeoJSON",
    "points_one": "{{count}} точка",
    "points_few": "{{count}} точки",
    "points_many": "{{count}} точек",
    "points_other": "{{count}} точки",
    "trackLayerName": "Трек GPS",
    "trackSaved": "{{name}} сохранён как слой.",
    "trackExported": "Трек экспортирован.",
    "exportCancelled": "Экспорт отменён.",
    "exportFailed": "Не удалось экспортировать трек. Повторите попытку.",
    "capture": "Оцифровка",
    "capturePoint": "Захватить точку",
    "captureLayerName": "Точки GPS",
    "captured_one": "За этот сеанс захвачена {{count}} точка.",
    "captured_few": "За этот сеанс захвачено {{count}} точки.",
    "captured_many": "За этот сеанс захвачено {{count}} точек.",
    "captured_other": "За этот сеанс захвачено {{count}} точки.",
    "pointCaptured": "Точка сохранена в {{layer}}.",
    "captureBlocked": "Точность определения ±{{accuracy}}, хуже порога {{max}} м. Точка не сохранена.",
    "satellites": "Спутники",
    "satellitesShort": "Спут",
    "satellitesValue": "Спутники: {{value}}",
    "satellitesShortValue": "Спут: {{value}}",
    "notAvailable": "—",
    "settings": "Фильтры записи",
    "minDistance": "Мин. расстояние (м)",
    "minTime": "Мин. время (с)",
    "maxAccuracy": "Макс. погрешность (м)",
    "settingsHint": "Определения ближе минимального расстояния или времени пропускаются. Определения менее точные, чем порог погрешности, не записываются, а захват точек блокируется. 0 отключает фильтр.",
    "openDialog": "Открыть отслеживание GPS",
    "altitudeValue": "Выс: {{value}} м",
    "speedValue": "{{value}} км/ч",
    "headingValue": "{{value}}°",
    "source": "Источник координат",
    "sourceDevice": "Это устройство",
    "sourceNmea": "Приёмник NMEA (последовательный порт или Bluetooth)",
    "nmeaBaudRate": "Скорость передачи (бод)",
    "nmeaConnectSerial": "Подключить по последовательному порту",
    "nmeaConnectBluetooth": "Подключить по Bluetooth",
    "nmeaConnecting": "Подключение…",
    "nmeaConnected": "Подключено к {{device}}.",
    "nmeaDisconnect": "Отключить",
    "nmeaNotConnected": "Подключите приёмник NMEA выше, чтобы начать передачу координат.",
    "nmeaWaiting": "Ожидание сообщений…",
    "nmeaStats": "Сообщений: {{parsed}} · координат: {{fixes}}",
    "nmeaConnectFailed": "Не удалось подключиться к приёмнику.",
    "nmeaDisconnected": "Приёмник отключился.",
    "nmeaUnsupportedDevice": "На этом устройстве не найдена служба NMEA. Возможно, это классический Bluetooth-приёмник: его нужно сопрячь в системных настройках, а затем подключить здесь как последовательный порт.",
    "nmeaUnsupported": "Для чтения приёмника NMEA нужны API Web Serial или Web Bluetooth, которых нет в этом браузере. Откройте GeoLibre в браузере на базе Chromium, например Chrome или Edge.",
    "nmeaSerialUnsupported": "Web Serial здесь недоступен, поэтому приёмники на последовательном порту открыть нельзя.",
    "nmeaBluetoothUnsupported": "Web Bluetooth здесь недоступен, поэтому приёмники Bluetooth Low Energy открыть нельзя.",
    "nmeaBluetoothHint": "Большинство Bluetooth-приёмников GPS используют классический Bluetooth: сопрягите такой приёмник в системных настройках, и он появится здесь как последовательный порт. Кнопку «Подключить по Bluetooth» используйте только для приёмников Bluetooth Low Energy.",
    "fixQuality": {
      "invalid": "Нет решения",
      "gps": "Решение GPS",
      "dgps": "Дифференциальный GPS",
      "pps": "Решение PPS",
      "rtk-fixed": "Фиксированное решение RTK",
      "rtk-float": "Плавающее решение RTK",
      "estimated": "Счисление пути",
      "manual": "Ручной ввод",
      "simulation": "Симуляция"
    }
  },
  "georeferencer": {
    "title": "Геопривязка изображения",
    "description": "Привяжите изображение к карте: загрузите его, свяжите точки изображения с местами на карте, затем добавьте его как геопривязанное наложение.",
    "loadImage": "Нажмите, чтобы загрузить изображение (PNG, JPG, TIFF)",
    "imageTooLarge": "Это изображение слишком большое (максимум {{max}}). Выберите изображение меньшего размера.",
    "imageReadError": "Не удалось прочитать это изображение. Попробуйте другой файл.",
    "imageNoDimensions": "Не удалось определить размер изображения. Используйте растровое изображение (PNG, JPG, TIFF).",
    "sourceImage": "Исходное изображение ({{w}} × {{h}} px)",
    "clickImageHint": "Нажмите на точку изображения, затем свяжите её на карте.",
    "pixelPicked": "Точка изображения: {{x}}, {{y}}",
    "linkOnMap": "Связать на карте",
    "zoomIn": "Приблизить",
    "zoomOut": "Отдалить",
    "zoomReset": "Сбросить масштаб",
    "importGcps": "Импорт",
    "exportGcps": "Экспорт",
    "gcpsImported": "Импортировано опорных точек: {{count}}.",
    "gcpsReadError": "Не удалось прочитать опорные точки из этого файла.",
    "gcpsOutsideImage": "Некоторые опорные точки находятся за пределами загруженного изображения — возможно, они относятся к другому изображению.",
    "transformNeedsMore": "Для этого преобразования требуется как минимум {{min}} опорных точек.",
    "gcps": "Опорные точки ({{count}})",
    "needGcps": "Добавьте не менее {{min}} опорных точек для геопривязки.",
    "collinear": "Опорные точки лежат на одной линии или совпадают — сместите одну из них.",
    "cornersOutOfRange": "При этой подгонке изображение выходит за допустимые границы карты. Скорректируйте опорные точки.",
    "residual": "Остаток",
    "rms": "СКО {{rms}} м",
    "opacity": "Непрозрачность наложения",
    "addToMap": "Добавить на карту",
    "clear": "Очистить",
    "defaultName": "Геопривязанное изображение",
    "exportTiff": "Экспорт GeoTIFF",
    "exportTiffButton": "Экспорт",
    "exportTiffHint": "Трансформирует изображение в Cloud-Optimized GeoTIFF прямо в браузере (GDAL/WASM). Движок загружается при первом использовании.",
    "transform": {
      "affine": "Аффинное (линейное)",
      "polynomial": "Полиномиальное (2-й порядок)",
      "tps": "Тонкая пластина (TPS)"
    },
    "exporting": "Экспорт GeoTIFF… (загрузка GDAL при первом использовании)",
    "exported": "GeoTIFF экспортирован.",
    "exportFailed": "Экспорт GeoTIFF не удался. Подробности см. в консоли."
  },
  "collaborate": {
    "title": "Совместная работа в реальном времени",
    "description": "Поделитесь сеансом в реальном времени, чтобы другие могли видеть эту карту и редактировать её вместе с вами.",
    "displayName": "Ваше имя",
    "displayNamePlaceholder": "например, Алекс",
    "color": "Ваш цвет",
    "startHeading": "Начать сеанс",
    "joinHeading": "Присоединиться к сеансу",
    "mode": "Кто может редактировать",
    "modeCoEdit": "Может редактировать любой",
    "modeViewOnly": "Только вы можете редактировать (остальные наблюдают)",
    "start": "Начать сеанс",
    "join": "Присоединиться",
    "joinSession": "Присоединиться к сеансу",
    "invitedHeading": "Вас пригласили",
    "invitedDescription": "Выберите имя и цвет, затем присоединитесь к сеансу хоста в реальном времени.",
    "startInstead": "Начать новый сеанс вместо этого",
    "sessionCode": "Код сеанса",
    "sessionCodePlaceholder": "Введите код",
    "shareLink": "Ссылка для общего доступа",
    "scanToJoin": "Отсканируйте, чтобы присоединиться",
    "copyLink": "Копировать ссылку",
    "copyCode": "Копировать код",
    "copied": "Скопировано",
    "participants": "Участники ({{count}})",
    "host": "Хост",
    "you": "вы",
    "guest": "Гость",
    "connectFailed": "Не удалось подключиться к серверу совместной работы.",
    "copyFailed": "Не удалось скопировать в буфер обмена.",
    "connecting": "Подключение…",
    "reconnecting": "Переподключение…",
    "connected": "Сеанс в реальном времени активен",
    "followHost": "Следовать за видом хоста",
    "goToMap": "Перейти к карте и сотрудничать",
    "goToMapViewOnly": "Перейти к карте и наблюдать",
    "collapseRoster": "Свернуть список участников",
    "manageSession": "Управление сеансом",
    "sessionStatusTooltip": "Сеанс совместной работы в реальном времени. Нажмите, чтобы увидеть подключённых участников.",
    "announcements": "Объявления сеанса",
    "participantJoined": "{{name}} присоединился к сеансу",
    "participantLeft": "{{name}} покинул сеанс",
    "leave": "Покинуть сеанс",
    "switchToCoEdit": "Разрешить редактирование всем",
    "switchToViewOnly": "Сделать только для просмотра",
    "nameRequired": "Введите своё имя, чтобы продолжить.",
    "codeRequired": "Введите код сеанса для присоединения.",
    "canEdit": "Может редактировать",
    "viewOnly": "Только просмотр",
    "allowEdit": "Разрешить этому участнику редактировать",
    "setViewOnly": "Ограничить этого участника только просмотром",
    "chatLog": "Чат сеанса",
    "chatCompose": "Введите сообщение",
    "chatEmpty": "Пока нет сообщений.",
    "chatPlaceholder": "Отправить сообщение…",
    "chatSend": "Отправить сообщение",
    "chatAttachLocation": "Прикрепить текущее местоположение карты",
    "chatLocationAttached": "Местоположение прикреплено (нажмите, чтобы удалить)",
    "chatGoToLocation": "Перейти к этому местоположению",
    "sessionStatusUnread_one": "Сеанс совместной работы, {{count}} непрочитанное сообщение. Нажмите, чтобы увидеть участников и чат.",
    "sessionStatusUnread_few": "Сеанс совместной работы, {{count}} непрочитанных сообщения. Нажмите, чтобы увидеть участников и чат.",
    "sessionStatusUnread_many": "Сеанс совместной работы, {{count}} непрочитанных сообщений. Нажмите, чтобы увидеть участников и чат.",
    "sessionStatusUnread_other": "Сеанс совместной работы, {{count}} непрочитанного сообщения. Нажмите, чтобы увидеть участников и чат."
  },
  "share": {
    "title": "Поделиться проектом",
    "description": "Загрузите текущий проект на {{shareHost}} и получите ссылку для общего доступа.",
    "setupIntro": "Подключите свою учётную запись {{shareHost}} перед загрузкой.",
    "step1Title": "1. Получите API-токен",
    "step1Description": "Войдите на {{shareHost}}, затем создайте токен в разделе Настройки → API-токены.",
    "getToken": "Получить API-токен",
    "step2Title": "2. Добавьте токен в GeoLibre",
    "step2Description": "Вставьте токен в Настройки → Переменные среды на этом устройстве.",
    "configureToken": "Настроить локальный токен",
    "liveAt": "Ваш проект опубликован по адресу:",
    "copyLink": "Копировать ссылку",
    "open": "Открыть",
    "done": "Готово",
    "projectTitle": "Название проекта",
    "titlePlaceholder": "Назовите свой проект",
    "titleRequired": "Введите название проекта перед публикацией.",
    "visibility": "Видимость",
    "visibilityUnlisted": "Не в списке (доступно по ссылке)",
    "visibilityPublic": "Публичный (виден в галерее)",
    "visibilityPrivate": "Приватный (только вы)",
    "shareButton": "Поделиться",
    "sharing": "Публикация…",
    "errorFallback": "Не удалось поделиться проектом.",
    "usernameRequired": "Задайте имя пользователя в учётной записи {{shareHost}} перед публикацией. Откройте настройки учётной записи, чтобы выбрать имя, затем повторите попытку.",
    "openAccountSettings": "Открыть настройки учётной записи",
    "credentialsRemoved": "{{count}} полей с учётными данными не включены. Получатели должны предоставить собственные учётные данные или использовать брокерскую ссылку."
  },
  "gallery": {
    "title": "Галерея проектов",
    "description": "Просматривайте публичные проекты, опубликованные на {{shareHost}}, и открывайте их в GeoLibre.",
    "searchPlaceholder": "Отфильтровать загруженные проекты по названию, автору или тегу",
    "loading": "Загрузка проектов…",
    "loadingMore": "Загрузка ещё…",
    "loadMore": "Загрузить ещё",
    "empty": "Пока нет публичных проектов для отображения.",
    "noMatches": "Загруженные проекты не соответствуют фильтру.",
    "errorFallback": "Не удалось загрузить галерею проектов.",
    "errorTimeout": "Истекло время ожидания галереи проектов. Повторите попытку.",
    "errorNetwork": "Не удалось подключиться к {{shareHost}}. Проверьте подключение к интернету.",
    "errorHttp": "Не удалось загрузить галерею (HTTP {{status}}).",
    "errorInvalidResponse": "Не удалось загрузить галерею (некорректный ответ сервера).",
    "errorUnauthorized": "Ваш API-токен {{shareHost}} недействителен или просрочен. Обновите его в Настройках.",
    "errorUsernameRequired": "Задайте имя пользователя в учётной записи {{shareHost}} перед загрузкой ваших проектов.",
    "errorNotConfigured": "В этом развёртывании не настроен сервер для публикации проектов.",
    "retry": "Повторить",
    "open": "Открыть",
    "openCopy": "Открыть копию",
    "opening": "Открытие…",
    "openingCopy": "Открытие копии…",
    "openOnWeb": "Просмотреть в вебе",
    "openError": "Не удалось открыть этот проект.",
    "byAuthor": "автор: {{author}}",
    "views_one": "{{count}} просмотр",
    "views_few": "{{count}} просмотра",
    "views_many": "{{count}} просмотров",
    "views_other": "{{count}} просмотра",
    "untitled": "Проект без названия",
    "noThumbnail": "Нет предпросмотра",
    "resizeDialog": "Изменить размер галереи",
    "scopeFeatured": "Рекомендуемые",
    "scopeAll": "Все проекты",
    "scopeMine": "Мои проекты",
    "signedOutHint": "Добавьте API-токен {{shareHost}} в Настройках, чтобы увидеть свои непубличные и приватные проекты.",
    "emptyFeatured": "Пока нет рекомендуемых проектов.",
    "emptyMine": "Вы ещё не опубликовали ни одного проекта.",
    "visibilityUnlisted": "Не в списке",
    "visibilityPrivate": "Приватный"
  },
  "template": {
    "saveTitle": "Сохранить как шаблон",
    "saveDescription": "Сохраните этот преднастроенный проект как многоразовый шаблон в личной библиотеке.",
    "defaultName": "Шаблон без названия",
    "nameLabel": "Название шаблона",
    "namePlaceholder": "например, Стандартная карта организации",
    "descriptionLabel": "Описание (необязательно)",
    "descriptionPlaceholder": "например, Преднастроенная подложка, стили и раскладка панели для карт команды",
    "stripDataLayersLabel": "Удалить слои данных",
    "stripDataLayersDesc": "Сохранить подложку, группы слоёв, стили, легенду, виджеты и раскладку, но удалить содержимое слоёв данных.",
    "saveAction": "Сохранить в библиотеку шаблонов"
  },
  "language": {
    "label": "Язык",
    "description": "Выберите язык интерфейса."
  },
  "printLayout": {
    "title": "Макет печати",
    "description": "Составьте карту для печати с заголовком, легендой, масштабной линейкой и указателем севера, затем экспортируйте её в PNG или PDF.",
    "preview": "Предпросмотр",
    "resizeControls": "Изменить размер панели управления",
    "resizeDialog": "Изменить размер диалога",
    "recapture": "Захватить карту заново",
    "copyToClipboard": "Копировать в буфер обмена",
    "copied": "Скопировано",
    "exportPng": "Экспорт PNG",
    "exportPdf": "Экспорт PDF",
    "titleLabel": "Заголовок",
    "titlePlaceholder": "Заголовок карты",
    "subtitleLabel": "Подзаголовок",
    "subtitlePlaceholder": "Необязательный подзаголовок",
    "size": "Размер",
    "sizeGroup": {
      "paper": "Бумага",
      "screen": "Экран / цифровой"
    },
    "sizeCustom": "Пользовательский…",
    "orientation": "Ориентация",
    "portrait": "Книжная",
    "landscape": "Альбомная",
    "width": "Ширина",
    "height": "Высота",
    "unit": "Единица измерения",
    "titlePlacement": "Расположение заголовка",
    "placement": {
      "outside": "Вне рамки",
      "inside": "Внутри рамки"
    },
    "alignment": "Выравнивание",
    "align": {
      "left": "По левому краю",
      "center": "По центру",
      "right": "По правому краю"
    },
    "mapElements": "Элементы карты",
    "element": {
      "title": "Заголовок",
      "subtitle": "Подзаголовок",
      "legend": "Легенда",
      "scaleBar": "Масштабная линейка",
      "northArrow": "Указатель севера",
      "groupNavigation": "Группировать указатель севера и масштабную линейку",
      "footer": "Текст подвала",
      "date": "Дата",
      "attribution": "Включить атрибуцию GeoLibre",
      "pageBorder": "Рамка страницы",
      "infoBlock": "Информационный блок (штамп)",
      "colorbar": "Шкала цветов",
      "customLegend": "Пользовательская легенда",
      "dataTable": "Таблица атрибутов",
      "dataChart": "Диаграмма"
    },
    "dataBlocks": {
      "layer": "Слой",
      "titleLabel": "Заголовок",
      "position": "Положение",
      "filterToPage": "Только объекты в границах страницы",
      "filterToPageHint": "Применяется к страницам атласа и заданной области печати; иначе используется весь слой."
    },
    "dataTable": {
      "columns": "Столбцы",
      "columnsHint": "По умолчанию выбраны первые {{count}} полей. Отметьте столбцы для настройки.",
      "maxRows": "Макс. строк",
      "moreRows_one": "+ ещё {{count}}",
      "moreRows_few": "+ ещё {{count}}",
      "moreRows_many": "+ ещё {{count}}",
      "moreRows_other": "+ ещё {{count}}",
      "noRows": "Нет строк для отображения с текущими настройками."
    },
    "dataChart": {
      "type": "Тип диаграммы",
      "typeBar": "Столбчатая",
      "typePie": "Круговая",
      "typeLine": "Линейная",
      "categoryField": "Поле категории",
      "aggregation": "Агрегирование",
      "aggCount": "Количество",
      "aggSum": "Сумма",
      "aggMean": "Среднее",
      "valueField": "Поле значения",
      "noNumericFields": "В этом слое нет числового поля для агрегирования.",
      "noData": "Нет данных для диаграммы с текущими настройками."
    },
    "customLegend": {
      "title": "Заголовок легенды",
      "color": "Цвет",
      "itemLabel": "Подпись",
      "position": "Положение",
      "addItem": "Добавить элемент",
      "removeItem": "Удалить элемент",
      "importFromDict": "Импортировать из словаря",
      "import": "Импорт",
      "importError": "Введите корректный словарь {\"label\": \"color\"}."
    },
    "colorbar": {
      "colormap": "Цветовая карта",
      "min": "Мин. значение",
      "max": "Макс. значение",
      "label": "Подпись",
      "labelPlaceholder": "например, Высота (м)",
      "orientation": "Ориентация",
      "vertical": "Вертикальная",
      "horizontal": "Горизонтальная",
      "position": "Положение",
      "length": "Длина"
    },
    "position": {
      "topLeft": "Вверху слева",
      "topRight": "Вверху справа",
      "bottomLeft": "Внизу слева",
      "bottomRight": "Внизу справа"
    },
    "footerTextLabel": "Текст подвала",
    "footerPlaceholder": "Пользовательский текст подвала",
    "margin": "Поля",
    "marginOption": {
      "normal": "Обычные",
      "narrow": "Узкие",
      "none": "Нет (без рамки)"
    },
    "mapBackground": "Фон карты",
    "scaleLabel": "Масштаб (1:N)",
    "scalePlaceholder": "например, 25000",
    "scalePresets": "Предустановки…",
    "scalePresetsAria": "Предустановка масштаба",
    "extent": {
      "label": "Область печати",
      "draw": "Нарисовать область на карте",
      "redraw": "Перерисовать область на карте",
      "useViewport": "Использовать активную область просмотра",
      "useCustom": "Обрезать по пользовательской области",
      "clear": "Очистить область",
      "hint": "Перетащите рамку на карте, чтобы задать точную область печати. Удерживайте Shift, чтобы сохранить пропорции страницы."
    },
    "info": {
      "author": "Автор",
      "authorPlaceholder": "Автор или организация",
      "project": "№ проекта",
      "projectPlaceholder": "Номер ссылки",
      "crs": "СК",
      "crsPlaceholder": "например, EPSG:4326",
      "scale": "Масштаб",
      "revision": "Редакция",
      "revisionPlaceholder": "например, Ред. 01"
    },
    "borderColor": "Цвет рамки",
    "borderWidth": "Толщина рамки",
    "mapBorderColor": "Цвет рамки карты",
    "mapBorderWidth": "Толщина рамки карты",
    "errors": {
      "mapNotReady": "Карта ещё не готова. Повторите попытку через мгновение.",
      "captureFailed": "Не удалось захватить изображение карты.",
      "captureFirst": "Захватите карту перед экспортом.",
      "exportFailed": "Не удалось экспортировать {{format}}.",
      "clipboardFailed": "Не удалось скопировать макет в буфер обмена.",
      "scaleOutOfRange": "Этот масштаб выходит за пределы диапазона текущего вида; показан ближайший доступный масштаб."
    },
    "legend": {
      "section": "Легенда",
      "titleLabel": "Заголовок легенды",
      "defaultTitle": "Легенда",
      "groupByLayer": "Группировать классы по слоям",
      "empty": "Нет видимых слоёв для включения в легенду.",
      "labelPlaceholder": "Подпись",
      "moveUp": "Переместить запись вверх",
      "moveDown": "Переместить запись вниз",
      "showEntry": "Показать запись",
      "hideEntry": "Скрыть запись",
      "moreItems_one": "+ ещё {{count}}",
      "moreItems_few": "+ ещё {{count}}",
      "moreItems_many": "+ ещё {{count}}",
      "moreItems_other": "+ ещё {{count}}"
    },
    "atlas": {
      "section": "Атлас (серия карт)",
      "enable": "Создать многостраничную серию карт",
      "coverageLayer": "Слой покрытия",
      "coverage": "Покрытие",
      "coveragePerFeature": "Одна страница на объект",
      "coverageAlongLine": "Страницы вдоль линии",
      "segmentLength": "Длина сегмента (км)",
      "segmentRequired": "Введите длину сегмента не менее 0,1 км.",
      "segmentTruncated": "Серия ограничена {{count}} страницами. Увеличьте длину сегмента.",
      "noLineFeatures": "В слое покрытия нет линейных объектов.",
      "noLayers": "Нет векторных слоёв с загруженными объектами. Сначала добавьте GeoJSON или другой локальный векторный слой.",
      "nameField": "Поле имени страницы",
      "nameFieldNone": "Номер объекта",
      "extentMode": "Охват страницы",
      "extentMargin": "Отступ вокруг объекта",
      "extentScale": "Фиксированный масштаб",
      "marginLabel": "Отступ (%)",
      "scaleLabel": "Масштаб",
      "scaleRequired": "Введите масштаб больше нуля.",
      "sortField": "Сортировать по",
      "sortNone": "Порядок слоя",
      "sortOrder": "Порядок",
      "sortAsc": "По возрастанию",
      "sortDesc": "По убыванию",
      "filterLabel": "Фильтр",
      "filterPlaceholder": "напр. POP2000 > 100000 and ST = \"CA\"",
      "filterError": "Не удалось разобрать фильтр. Используйте сравнения поле-оператор-значение (=, !=, >, >=, <, <=, contains), соединённые через \"and\".",
      "filenamePattern": "Имя файла страницы (экспорт ZIP)",
      "pages_one": "{{count}} страница",
      "pages_few": "{{count}} страницы",
      "pages_many": "{{count}} страниц",
      "pages_other": "{{count}} страницы",
      "noPages": "Ни один объект не соответствует текущему фильтру.",
      "pageOf": "Страница {{current}} из {{total}}",
      "prevPage": "Предыдущая страница атласа",
      "nextPage": "Следующая страница атласа",
      "exportZip": "Экспорт PNG ZIP",
      "exportPdfPages_one": "Экспорт PDF ({{count}} страница)",
      "exportPdfPages_few": "Экспорт PDF ({{count}} страницы)",
      "exportPdfPages_many": "Экспорт PDF ({{count}} страниц)",
      "exportPdfPages_other": "Экспорт PDF ({{count}} страницы)",
      "exporting": "Экспорт страницы {{current}} из {{total}}...",
      "tokensHint": "Токены {atlas.name}, {atlas.pagenumber}, {atlas.total} и {atlas.attr:FIELD} заменяются для каждой страницы в заголовке, подзаголовке, нижнем колонтитуле и имени файла страницы.",
      "alongLineHint": "Страницы следуют по каждой линии по порядку; km_start, km_end, segment и segments доступны как токены {atlas.attr:FIELD}."
    }
  },
  "kml": {
    "importFailed": "Не удалось импортировать KML/KMZ.",
    "timeOverlayGroup": "Анимация наложения по времени"
  },
  "map": {
    "boundsRestricted": "Границы зафиксированы",
    "boundsRestrictedTooltip": "Границы карты ограничены. Вы можете изменить это в Настройках.",
    "directionsMode": {
      "title": "Активен режим маршрутов",
      "hint": "Нажмите на карту, чтобы добавить путевые точки. Перетащите точку, чтобы переместить её, или нажмите на неё, чтобы удалить. Маршруты обновляются автоматически.",
      "removeLast": "Удалить последнюю",
      "clear": "Очистить",
      "exit": "Выход",
      "calculating": "Расчёт маршрута...",
      "totalDistance": "Расстояние",
      "estimatedTime": "Расчётное время",
      "segment": "Сегмент {{index}}",
      "metricsUnavailable": "Показатели маршрута недоступны",
      "distanceKilometers": "{{value}} км",
      "distanceMeters": "{{value}} м",
      "durationLessThanMinute": "< 1 мин",
      "durationMinutes": "{{value}} мин",
      "durationHours": "{{value}} ч",
      "durationHoursMinutes": "{{hours}} ч {{minutes}} мин",
      "waypointCount_zero": "Путевые точки ещё не размещены",
      "waypointCount_one": "Размещена {{count}} путевая точка",
      "waypointCount_few": "Размещено {{count}} путевые точки",
      "waypointCount_many": "Размещено {{count}} путевых точек",
      "waypointCount_other": "Размещено {{count}} путевой точки"
    },
    "reverseGeocodeMode": {
      "title": "Активен режим обратного геокодирования",
      "hint": "Нажмите в любом месте карты, чтобы найти адрес в этой точке.",
      "exit": "Выход"
    },
    "pixelTimeSeriesMode": {
      "start": "Временной ряд пикселя"
    }
  },
  "terrainSettings": {
    "title": "Преувеличение рельефа",
    "description": "Настройте вертикальное преувеличение 3D-рельефа. Более высокие значения делают холмы и горы визуально круче.",
    "label": "Вертикальное преувеличение",
    "controlLabel": "Переключить рельеф (двойной щелчок для преувеличения)",
    "reset": "Сбросить",
    "done": "Готово"
  },
  "pixelTimeSeries": {
    "title": "Временной ряд пикселя",
    "empty": "Нажмите на пиксель карты, чтобы построить график его значения во времени. Добавьте больше пикселей для сравнения.",
    "band": "Канал",
    "bandOption": "Канал {{index}}",
    "pointLabel": "Точка {{number}}",
    "pickPoints": "Выбрать точки",
    "stopPicking": "Остановить выбор",
    "clearAll": "Очистить всё",
    "removePoint": "Удалить {{label}}",
    "close": "Закрыть",
    "erroredExcluded": "Экспорт исключает {{n}} неудачных чтений.",
    "querying": "Чтение значений пикселей по временной шкале...",
    "progress": "Чтение {{done}} из {{total}}...",
    "noValues": "Нет значений для выбранного канала в этих местах (вне растра или все временные шаги — nodata).",
    "truncated": "Показано {{kept}} из {{total}} шагов временной шкалы (прорежено для ограничения чтений).",
    "chartAria": "Линейный график значения пикселя во времени",
    "yAxis": "Ось Y",
    "yMin": "Мин",
    "yMax": "Макс",
    "axisAuto": "авто",
    "gapNote": "Пунктирные отрезки соединяют даты без значения (nodata или вне покрытия).",
    "exportCsv": "Экспорт CSV",
    "exportGeoParquet": "Экспорт GeoParquet"
  },
  "basemapExtract": {
    "title": "Извлечь офлайн-базовую карту",
    "url": "URL базовой карты",
    "urlPlaceholder": "https://data.source.coop/…/planet.pmtiles",
    "useView": "Использовать вид карты",
    "drawBbox": "Нарисовать на карте",
    "drawing": "Рисование…",
    "drawHint": "Растяните рамку на карте, чтобы задать область извлечения.",
    "clearBbox": "Очистить нарисованную область",
    "north": "Север",
    "south": "Юг",
    "west": "Запад",
    "east": "Восток",
    "bboxHint": "Введите корректный ограничивающий прямоугольник: запад < восток и юг < север, в пределах [-180, 180] и [-90, 90].",
    "minZoom": "Минимальный масштаб",
    "maxZoom": "Максимальный масштаб",
    "zoomHint": "Уровни масштаба должны быть целыми числами, минимум ≤ максимум (0–30). Уровни выше максимального в архиве игнорируются.",
    "errorNoSourceLayers": "В этом векторном архиве нет метаданных слоёв, поэтому его нельзя отобразить. Попробуйте другой архив.",
    "savedTitle": "Сохранённые базовые карты",
    "openFile": "Открыть файл…",
    "savedEmpty": "Пока нет сохранённых базовых карт. Извлеките её выше или откройте файл .pmtiles.",
    "errorNotBasemap": "Этот файл не является векторной базовой картой Protomaps, поэтому его нельзя стилизовать.",
    "apply": "Использовать как базовую карту",
    "rename": "Переименовать",
    "delete": "Удалить",
    "confirmDelete": "Удалить?",
    "style": "Стиль базовой карты",
    "flavor": {
      "light": "Светлый",
      "dark": "Тёмный",
      "white": "Белый",
      "grayscale": "Оттенки серого",
      "black": "Чёрный"
    },
    "flavorOverlay": "Нет (слой наложения)",
    "styleHintBasemap": "Отображает извлечённые данные как стилизованную базовую карту Protomaps (дороги, вода, подписи) офлайн.",
    "styleHintOverlay": "Добавляет извлечённые данные как обычный слой наложения вместо стилизованной базовой карты.",
    "phaseDirectories": "Чтение каталогов архива…",
    "phaseData": "Загрузка тайлов…",
    "resize": "Изменить размер панели",
    "estimatedSize": "≈ {{size}} · {{tiles}} тайлов",
    "estimatedSizeLarge": "Большая загрузка: ≈ {{size}} · {{tiles}} тайлов",
    "planWarning": "Это извлечение занимает около {{size}} в {{tiles}} тайлах и собирается в памяти. Продолжить?",
    "planContinue": "Продолжить",
    "extract": "Извлечь",
    "extracting": "Извлечение…",
    "successSaved": "Сохранено в {{path}} и добавлено на карту.",
    "successAdded": "Добавлено на карту (файл не сохранён).",
    "successAddedSaveFailed": "Добавлено на карту, но сохранить на диск не удалось: {{error}}",
    "successBasemapSaved": "Сохранено в {{path}} и установлено как базовая карта.",
    "successBasemapApplied": "Установлено как базовая карта (файл не сохранён).",
    "successBasemapSaveFailed": "Установлено как базовая карта, но сохранить на диск не удалось: {{error}}"
  },
  "rasterSubset": {
    "title": "Извлечь подмножество",
    "drawBbox": "Нарисовать ограничивающую рамку",
    "drawing": "Рисование…",
    "drawHint": "Нажмите и перетащите на карте, чтобы нарисовать область извлечения. Нажмите Esc для отмены.",
    "useView": "Использовать вид",
    "north": "Север",
    "south": "Юг",
    "west": "Запад",
    "east": "Восток",
    "bboxHint": "Введите допустимую рамку: запад/восток в пределах от -180 до 180, юг/север в пределах от -90 до 90, при этом запад < восток и юг < север.",
    "bboxAntimeridianHint": "Запад должен быть меньше востока. Рамки, пересекающие меридиан 180°, не поддерживаются; разделите их на два извлечения.",
    "zoom": "Уровень масштабирования",
    "zoomHint": "Введите целый уровень масштабирования от 0 до 30.",
    "resolution": "Разрешение",
    "resolutionPlaceholder": "Исходное",
    "resolutionHint": "Размер пикселя вывода в единицах выходной CRS. Оставьте пустым, чтобы сохранить исходное разрешение.",
    "advanced": "Дополнительные параметры",
    "outputCrs": "Выходная CRS (EPSG)",
    "outputCrsPlaceholder": "Как у исходной",
    "nodata": "Значение Nodata",
    "nodataPlaceholder": "Нет",
    "additionalArgs": "Дополнительные параметры",
    "additionalArgsPlaceholder": "level=2\nwidth=512",
    "additionalArgsHint": "По одному key=value в строке, напр. level, width, height.",
    "errorResolution": "Разрешение должно быть положительным числом.",
    "errorOutputCrs": "Выходная CRS должна быть положительным кодом EPSG.",
    "errorNodata": "Nodata должно быть числом.",
    "errorAdditionalArgs": "Дополнительные параметры должны быть по одному key=value в строке.",
    "extract": "Извлечь и сохранить",
    "extracting": "Извлечение…",
    "success": "Подмножество сохранено."
  },
  "mapGrid": {
    "layers": "Слои",
    "layersLabel": "Видимость слоёв для карты {{number}}",
    "noLayers": "Пока нет слоёв",
    "labelPlaceholder": "Подпись",
    "labelLabel": "Подпись для карты {{number}}",
    "removePane": "Удалить карту {{number}}",
    "show3d": "Показать карту {{number}} как 3D-глобус",
    "show2d": "Показать карту {{number}} как 2D-карту",
    "only2d": "Только 2D"
  },
  "mapContextMenu": {
    "copyCoordinatesHint": "Копировать координаты в буфер обмена",
    "quickActions": "Быстрые действия",
    "whatsHere": "Что здесь?",
    "copyGeoJson": "Копировать как GeoJSON",
    "centerHere": "Центрировать карту здесь",
    "zoomInHere": "Приблизить здесь",
    "viewInGoogleMaps": "Открыть в Google Maps",
    "viewInGoogleEarth": "Открыть в Google Earth"
  },
  "quickAnalysis": {
    "menu": "Быстрый анализ",
    "bufferHere": "Буфер {{distance}} здесь",
    "bufferFeatures": "Буфер {{distance}} для всех объектов",
    "driveTimeHere": "Время в пути на авто отсюда ({{contours}} мин)",
    "walkTimeHere": "Время пешком отсюда ({{contours}} мин)",
    "centroids": "Центроиды",
    "convexHull": "Выпуклая оболочка",
    "boundingBox": "Ограничивающий прямоугольник",
    "openInProcessing": "Открыть в Обработке…",
    "bufferLayerName": "Буфер {{distance}}",
    "bufferOfLayerName": "{{name}} буфер {{distance}}",
    "driveTimeLayerName": "Время в пути на авто",
    "walkTimeLayerName": "Время пешком",
    "centroidsLayerName": "{{name}} центроиды",
    "convexHullLayerName": "{{name}} выпуклая оболочка",
    "boundingBoxLayerName": "{{name}} ограничивающий прямоугольник",
    "running": "Выполняется {{tool}}…",
    "failed": "Не удалось выполнить {{tool}}",
    "viewDetails": "Подробнее",
    "unit": {
      "meters": "м",
      "kilometers": "км",
      "miles": "ми"
    }
  },
  "knowledgeCard": {
    "title": "О месте",
    "loading": "Поиск сведений о месте…",
    "empty": "Рядом с этим местом не найдено статей Wikipedia.",
    "error": "Не удалось загрузить сведения о месте. Повторите попытку.",
    "readMore": "Подробнее в Wikipedia",
    "nearby": "Места поблизости",
    "attribution": "Материалы из Wikipedia, лицензия CC BY-SA.",
    "noticeTitle": "Карточки знаний используют Wikipedia",
    "noticeDesc": "При открытии карточки знаний координаты выбранного места (и заголовок открываемой рядом статьи) отправляются в публичный API Wikipedia для получения сводки и фото — для этих запросов координаты покидают ваше устройство."
  },
  "onboarding": {
    "title": "Добро пожаловать в GeoLibre",
    "description": "Выберите уровень своего опыта, чтобы адаптировать интерфейс. Вы можете изменить это в любое время в Настройки → Интерфейс.",
    "level": {
      "beginner": {
        "title": "Начинающий",
        "description": "Показывать только основные источники данных и инструменты."
      },
      "intermediate": {
        "title": "Средний",
        "description": "Показывать распространённые источники данных, сервисы и плагины."
      },
      "advanced": {
        "title": "Продвинутый",
        "description": "Показывать всё, что предлагает GeoLibre."
      }
    },
    "showEverything": "Пропустить — показать всё"
  },
  "settings": {
    "title": "Настройки",
    "description": "Настройте параметры проекта и среды выполнения.",
    "saveButton": "Сохранить настройки",
    "section": {
      "map": "Карта",
      "layout": "Макет",
      "appearance": "Внешний вид",
      "interface": "Интерфейс",
      "geocoding": "Геокодирование",
      "ai": "Провайдеры ИИ",
      "environment": "Среда",
      "updates": "Обновления"
    },
    "menu": {
      "mapPreferences": "Параметры карты",
      "layoutSettings": "Параметры макета",
      "appearanceSettings": "Параметры внешнего вида",
      "interfaceSettings": "Параметры интерфейса",
      "geocoding": "Геокодирование",
      "ai": "Провайдеры ИИ",
      "environmentVariables": "Переменные среды",
      "updates": "Параметры обновлений",
      "managePlugins": "Управление плагинами",
      "styleManager": "Менеджер стилей",
      "urlOverrideNote": "Параметры макета URL переопределяют сохранённые настройки."
    },
    "updates": {
      "title": "Обновления ПО",
      "description": "Настройте, как GeoLibre проверяет наличие новых версий при запуске настольного приложения.",
      "checkOnStartup": "Проверять обновления при запуске",
      "checkOnStartupHint": "Если включено, GeoLibre проверяет наличие новой версии при каждом запуске приложения. Отключите для полностью офлайн-работы.",
      "notificationLevel": "Уведомлять о",
      "notificationLevelHint": "Выберите, какие виды выпусков вызывают уведомление при запуске.",
      "level": {
        "all": "Все выпуски (крупные, минорные и патчи)",
        "minor": "Только крупные и минорные выпуски",
        "major": "Только крупные выпуски"
      }
    },
    "map": {
      "constraintsTitle": "Ограничения карты",
      "restrictBounds": "Ограничить область карты",
      "west": "Запад",
      "south": "Юг",
      "east": "Восток",
      "north": "Север",
      "useCurrentView": "Использовать текущий вид",
      "useCurrentViewHint": "Захватывает текущую область карты и включает «Ограничить область карты».",
      "useCurrentViewGlobeHint": "Перед использованием переключитесь на проекцию Меркатора. В проекции «Глобус» карта всё ещё может немного смещаться за пределы зафиксированных границ.",
      "minZoom": "Минимальный масштаб",
      "maxZoom": "Максимальный масштаб",
      "maxPitch": "Максимальный наклон",
      "renderWorldCopies": "Отображать копии мира",
      "ellipsoid": "Небесное тело",
      "ellipsoidHint": "Задаёт радиус, используемый для измерений расстояния, площади и масштаба. Выберите соответствующую планетарную базовую карту в разделе «Добавить данные».",
      "scaleUnit": "Единицы масштабной линейки",
      "scaleUnitMetric": "Метрические (м / км)",
      "scaleUnitImperial": "Имперские (фут / миля)",
      "scaleUnitNautical": "Морские (мор. мили)",
      "scaleUnitHint": "Выберите единицы, отображаемые на масштабной линейке внизу карты.",
      "errorBoundsUnavailable": "Границы карты пока недоступны."
    },
    "layout": {
      "title": "Макет",
      "description": "Видимость рабочего пространства и отображение панели инструментов.",
      "toolbar": "Панель инструментов",
      "panels": "Панели",
      "showToolbarLabels": "Показывать подписи панели инструментов",
      "showProjectInfo": "Показывать информацию о проекте",
      "showProjectInfoToolbar": "Показывать информацию о проекте на панели инструментов",
      "showLayersPanel": "Показывать панель слоёв",
      "showStylePanel": "Показывать панель стилей",
      "showBrowserPanel": "Показывать панель обозревателя",
      "showCommentsPanel": "Показывать панель комментариев",
      "showAttributePanel": "Показывать панель атрибутов",
      "urlParamsNote": "Параметры макета URL по-прежнему применяются, если они присутствуют в ссылках общего просмотра."
    },
    "appearance": {
      "title": "Внешний вид",
      "description": "Выберите светлый или тёмный режим и акцентный цвет, который применяется поверх него.",
      "themeMode": "Режим",
      "mode": {
        "light": "Светлый",
        "dark": "Тёмный"
      },
      "accentColor": "Акцентный цвет",
      "custom": "Пользовательский",
      "customColor": "Пользовательский цвет",
      "customColorHex": "Шестнадцатеричный код пользовательского цвета",
      "scheme": {
        "blue": "Синий",
        "violet": "Фиолетовый",
        "emerald": "Изумрудный",
        "rose": "Розовый",
        "amber": "Янтарный"
      }
    },
    "interface": {
      "title": "Профиль интерфейса",
      "description": "Выберите уровень опыта, чтобы упростить интерфейс. Ничего не удаляется, поэтому вы можете переключать уровни или снова включать элементы здесь в любое время.",
      "presets": "Уровень опыта",
      "presetsHint": "«Начинающий», «Средний» и «Продвинутый» мгновенно применяют подобранный макет. Изменение любого элемента ниже переключает на «Пользовательский», либо нажмите «Пользовательский», чтобы сохранить текущую настройку в пользовательском режиме.",
      "level": {
        "beginner": "Начинающий",
        "intermediate": "Средний",
        "advanced": "Продвинутый",
        "custom": "Пользовательский"
      },
      "dataSources": "Источники данных",
      "plugins": "Плагины",
      "menus": "Меню",
      "lockedNote": "Этот профиль интерфейса управляется вашим администратором и не может быть изменён."
    },
    "env": {
      "tokenTitle": "API-токен Share.GeoLibre",
      "tokenDescription": "Раздел Проект > Поделиться использует этот токен для загрузки ваших карт на {{shareHost}}. Откройте <tokenLink>{{shareHost}}/settings</tokenLink>, создайте токен в разделе Настройки > API-токены, затем вставьте его в поле ниже.",
      "tokenStorageNote": "Хранится локально на этом устройстве и передаётся только на {{shareHost}} для аутентификации загрузок. В веб-сборке используется то же хранилище браузера, что и для других данных сайта; отзовите токен на {{shareHost}}, если ваше устройство скомпрометировано.",
      "tokenUnavailable": "В этом развёртывании не настроен сервер для публикации проектов, поэтому API-токен не нужен.",
      "tokenHostInvalid": "Адрес сервера публикации проектов в этом развёртывании некорректен, поэтому этот токен использовать нельзя.",
      "tokenPlaceholder": "glb_…",
      "cesiumTokenTitle": "Токен Cesium Ion",
      "cesiumTokenDescription": "3D-глобус (панель раздельного вида) использует мировые снимки и рельеф Cesium Ion, для которых требуется токен доступа. Создайте бесплатную учётную запись на <tokenLink>ion.cesium.com/tokens</tokenLink>, скопируйте свой токен доступа по умолчанию и вставьте его ниже. Без токена переключатель 3D-глобуса скрыт.",
      "cesiumTokenStorageNote": "Хранится локально на этом устройстве (не в файле проекта, поэтому никогда не передаётся) и отправляется только в Cesium Ion. В веб-сборке используется то же хранилище браузера, что и для других данных сайта.",
      "cesiumTokenPlaceholder": "eyJhbGciOi…",
      "variablesTitle": "Переменные среды",
      "variablesCount_one": "Включена {{count}} переменная времени выполнения.",
      "variablesCount_few": "Включено {{count}} переменные времени выполнения.",
      "variablesCount_many": "Включено {{count}} переменных времени выполнения.",
      "variablesCount_other": "Включено {{count}} переменной времени выполнения.",
      "secretsWarning": "Значения хранятся в открытом тексте в файле проекта и могут быть раскрыты при его совместном использовании. Не помещайте секретные данные сюда, если файл проекта не остаётся приватным.",
      "empty": "Переменные среды не настроены.",
      "variableFallback": "переменная",
      "enableAria": "Включить {{name}}",
      "nameAria": "Имя переменной",
      "namePlaceholder": "VITE_EXAMPLE_KEY",
      "valueAria": "Значение переменной",
      "valuePlaceholder": "Значение",
      "showValueAria": "Показать значение для {{name}}",
      "hideValueAria": "Скрыть значение для {{name}}",
      "removeAria": "Удалить {{name}}",
      "errorNamePattern": "Имена переменных среды должны начинаться с буквы или символа подчёркивания и содержать только буквы, цифры и символы подчёркивания.",
      "errorDuplicate": "Переменная среды «{{name}}» продублирована.",
      "stripPromptTitle": "Удалить учётные данные?",
      "stripPromptDesc": "Проект содержит {{count}} полей с учётными данными, например ключи API, заголовки запросов или настройки плагинов. Удалить их из сохраняемого файла? В текущем рабочем пространстве они сохранятся в любом случае.",
      "stripButton": "Удалить учётные данные",
      "keepButton": "Оставить в файле"
    },
    "geocoding": {
      "title": "Геокодирование",
      "description": "Выберите бэкенд геокодирования, используемый в «Геокодировании адресов» и «Обратном геокодировании». По умолчанию используется Nominatim, для которого не нужен ключ.",
      "provider": "Провайдер",
      "requiresKey": "Этому провайдеру нужен API-ключ или токен доступа.",
      "optionalKey": "Размещённому сервису нужен API-ключ; для локально размещённого экземпляра он не требуется.",
      "noKey": "Этот провайдер работает без API-ключа.",
      "apiKey": "API-ключ",
      "apiKeyPlaceholder": "Вставьте API-ключ или токен провайдера",
      "toggleApiKey": "Переключить видимость API-ключа",
      "forwardEndpoint": "Конечная точка прямого геокодирования (необязательно)",
      "reverseEndpoint": "Конечная точка обратного геокодирования (необязательно)",
      "email": "Контактный email (необязательно)",
      "emailPlaceholder": "you@example.org",
      "emailHint": "Используется только Nominatim, который рекомендует указывать его для идентификации вашего приложения — отправляется, только если указан.",
      "secretsWarning": "Ключи хранятся в открытом тексте в файле проекта и могут быть раскрыты при его передаче. Они также отправляются как параметры запроса, поэтому появляются в URL запросов геокодирования, видимых в DevTools браузера и логах прокси.",
      "corsNote": "Google официально не разрешает браузерные запросы к своему Geocoding API, поэтому запросы могут блокироваться, если они не проходят через прокси того же источника."
    },
    "ai": {
      "title": "Провайдеры ИИ-ассистента",
      "description": "Настройте учётные данные для ИИ-ассистента. Выберите провайдера, заполните нужные поля, затем сохраните. Для начала общения достаточно настроить одного провайдера.",
      "providerLabel": "Провайдер",
      "providerHint": "Выберите провайдера, чтобы увидеть нужные поля.",
      "configuredMark": "(настроено)",
      "optionalMark": "(необязательно)",
      "statusReady": "{{provider}} настроен и готов к использованию.",
      "statusIncomplete": "Заполните обязательные поля ниже, чтобы включить {{provider}}.",
      "secretsNote": "Учётные данные сохраняются локально на этом устройстве, а не в файле проекта, которым вы делитесь, поэтому они сохраняются между перезапусками. Любой, у кого есть доступ к этому устройству, может их прочитать.",
      "getCredentials": "Где получить учётные данные {{provider}}",
      "showValue": "Показать {{name}}",
      "hideValue": "Скрыть {{name}}",
      "osEnvNote": "Настольное приложение также считывает совпадающие ключи API из системных переменных окружения. Они используются автоматически и никогда не сохраняются в файл проекта — оставьте поле пустым, чтобы продолжить использовать значение из окружения.",
      "osEnvField": "Считывается из системной переменной окружения {{name}}.",
      "osEnvPlaceholder": "Задано в системном окружении",
      "newProfile": "Новый профиль",
      "cancel": "Отмена",
      "addProfile": "Добавить профиль",
      "profileName": "Название профиля",
      "profileNamePlaceholder": "например, Рабочий Gemini, Локальный Ollama",
      "profileCount_one": "{{count}} профиль",
      "profileCount_few": "{{count}} профиля",
      "profileCount_many": "{{count}} профилей",
      "profileCount_other": "{{count}} профиля",
      "noProfiles": "Профилей пока нет. Добавьте профиль ниже, чтобы настроить ИИ-ассистента.",
      "setDefault": "Использовать по умолчанию",
      "defaultProfile": "По умолчанию",
      "edit": "Редактировать",
      "deleteProfile": "Удалить профиль",
      "backToProfiles": "← Назад к профилям",
      "saveProfile": "Сохранить профиль",
      "profileEditSaveHint": "Сохраните или отмените изменения профиля выше, затем нажмите «Сохранить настройки», чтобы применить все изменения.",
      "field": {
        "apiKey": "API-ключ",
        "baseUrl": "Базовый URL",
        "model": "Модель",
        "region": "Регион",
        "accessKeyId": "ID ключа доступа",
        "secretAccessKey": "Секретный ключ доступа",
        "sessionToken": "Токен сеанса"
      },
      "placeholder": {
        "geminiKey": "AIza…",
        "anthropicKey": "sk-ant-…",
        "openaiKey": "sk-…",
        "ollamaBaseUrl": "http://localhost:11434",
        "ollamaModel": "llama3.2",
        "awsAccessKey": "AKIA…",
        "awsSecretKey": "wJalrXUtnFEMI…",
        "awsRegion": "us-east-1",
        "awsSessionToken": "FwoGZXIvYXdz… (если используются временные учётные данные)",
        "customBaseUrl": "https://api.example.com/v1",
        "customModel": "model-id",
        "customApiKey": "sk-… (если требуется)"
      }
    }
  },
  "toolbar": {
    "menu": {
      "project": "Проект",
      "import": "Импорт",
      "edit": "Правка",
      "view": "Вид",
      "addData": "Добавить данные",
      "processing": "Обработка",
      "controls": "Элементы управления",
      "plugins": "Плагины",
      "help": "Справка",
      "settings": "Настройки"
    },
    "atmosphere": {
      "haloColor": "Цвет ореола",
      "haloExtent": "Радиус ореола",
      "haloExtentHint": "Насколько далеко атмосферное свечение простирается за пределы глобуса. Меньшее значение прижимает данные к поверхности; большее — создаёт широкий воздушный ореол.",
      "haloOpacity": "Сила ореола",
      "spaceColor": "Цвет космоса",
      "reset": "Сбросить к значениям по умолчанию",
      "globeOnly": "Атмосферные эффекты доступны только при включённом виде «Глобус»."
    },
    "sun": {
      "title": "Солнце",
      "date": "Дата",
      "time": "Время",
      "timeOfDay": "Время суток",
      "play": "Воспроизвести",
      "pause": "Пауза",
      "stepBack": "Назад на один час",
      "stepForward": "Вперёд на один час",
      "speed": "Скорость анимации",
      "loop": "Зациклить анимацию",
      "now": "Сейчас",
      "shade": "Затенение ночи",
      "close": "Закрыть",
      "localTimeNote": "Время показано в часовом поясе вашего компьютера."
    },
    "routeAnimation": {
      "title": "Анимация маршрута",
      "layer": "Слой маршрута",
      "selectLayer": "Выберите линейный слой…",
      "noLineLayers": "В проекте нет линейных слоёв",
      "play": "Воспроизвести",
      "pause": "Пауза",
      "loop": "Зациклить анимацию",
      "progress": "Прогресс",
      "speed": "Скорость",
      "followCamera": "Следовать",
      "followPitch": "Наклон камеры",
      "followZoom": "Масштаб камеры",
      "followRotate": "Поворот по курсу",
      "color": "Цвет маршрута",
      "marker": "Маркер",
      "markerStyle": {
        "arrow": "Стрелка (направление)",
        "point": "Точка",
        "none": "Нет"
      },
      "trail": "След",
      "saveVideoMp4": "Сохранить как MP4",
      "saveVideoWebm": "Сохранить как WebM",
      "estimatedLength": "≈ {{seconds}} с",
      "recordingStatus": "Запись… {{percent}}%",
      "savingVideo": "Сохранение видео…",
      "stop": "Стоп",
      "videoSaved": "Сохранено {{name}}",
      "videoError": "Не удалось записать анимацию. Повторите попытку.",
      "videoUnsupported": "Запись видео не поддерживается в этом браузере.",
      "videoFileTypeMp4": "Видео MP4",
      "videoFileTypeWebm": "Видео WebM",
      "collapse": "Свернуть",
      "expand": "Развернуть",
      "close": "Закрыть"
    },
    "flightSim": {
      "title": "Авиасимулятор",
      "start": "Начать полёт",
      "stop": "Остановить полёт",
      "collapse": "Свернуть",
      "expand": "Развернуть",
      "close": "Закрыть",
      "speed": "Скорость",
      "altitude": "Высота",
      "heading": "Курс",
      "agl": "Над землёй",
      "throttle": "Тяга",
      "maxSpeed": "Максимальная скорость",
      "minAgl": "Запас над рельефом",
      "units": "Единицы",
      "imperial": "Узлы / футы",
      "metric": "км/ч / метры",
      "bankCamera": "Наклонять горизонт в виражах",
      "invertPitch": "Инвертировать ось тангажа",
      "knots": "уз",
      "kph": "км/ч",
      "feet": "фт",
      "meters": "м",
      "terrainWarning": "Рельеф — набор высоты",
      "help": "Стрелки или A/D — управление · W/S либо Page Up/Down — тяга · Пробел выравнивает крылья · Esc выходит."
    },
    "setView": {
      "title": "Задать вид",
      "description": "Переместить карту к точной камере.",
      "sectionCoordinates": "Координаты",
      "smartPaste": "Вставить координаты",
      "smartPasteInputLabel": "Строка координат",
      "smartPastePlaceholder": "например, 51.5074, -0.1278 или 51°30'26\"N, 0°07'39\"W",
      "smartPasteInfo": "Введите или вставьте полную строку координат в формате DD, DMS или DDM, затем нажмите «Обработать ввод». GeoLibre определит формат и заполнит поля долготы и широты ниже. Настройте масштаб, наклон и азимут отдельно перед переходом.",
      "smartPasteInfoLabel": "О вставке координат",
      "smartPasteInvalid": "Не удалось прочитать эти координаты. Введите полную долготу и широту в формате DD, DMS или DDM, например 51.5074, -0.1278. Частичная или неполная строка не может быть распознана.",
      "processInput": "Обработать ввод",
      "processed": "Поля долготы и широты ниже заполнены.",
      "sectionZoom": "Масштаб камеры",
      "sectionOrientation": "Ориентация камеры",
      "orientationHint": "Наклон и азимут по умолчанию равны 0, если оставить пустыми.",
      "format": "Формат ручного ввода",
      "formatInfo": "Эти кнопки задают только способ ручного ввода центра. Поле вставки выше уже принимает любой формат.\nDD: 51.5074, -0.1278\nDMS: 51°30'26\"N, 0°07'39\"W\nDDM: 51°30.44'N, 0°07.65'W",
      "formatInfoLabel": "О форматах координат",
      "formatDd": "Десятичные градусы (DD)",
      "formatDms": "Градусы, минуты, секунды (DMS)",
      "formatDdm": "Градусы и десятичные минуты (DDM)",
      "formatDdShort": "DD",
      "formatDmsShort": "DMS",
      "formatDdmShort": "DDM",
      "longitude": "Долгота",
      "latitude": "Широта",
      "degrees": "Градусы",
      "minutes": "Минуты",
      "seconds": "Секунды",
      "hemisphere": "Полушарие",
      "zoom": "Масштаб",
      "pitch": "Наклон",
      "bearing": "Азимут",
      "go": "Перейти",
      "invalid": "Введите корректную долготу (от −180 до 180), широту (от −90 до 90) и масштаб.",
      "invalidDms": "Введите корректные градусы, минуты (от 0 до 59), секунды (от 0 до 59) и масштаб.",
      "invalidDdm": "Введите корректные градусы, десятичные минуты (от 0 до < 60) и масштаб."
    },
    "commandGroup": {
      "project": "Проект",
      "addData": "Добавить данные",
      "processing": "Обработка",
      "controls": "Элементы управления",
      "view": "Вид",
      "help": "Справка",
      "plugins": "Плагины",
      "settings": "Настройки"
    },
    "command": {
      "projectNew": "Новый проект",
      "projectOpenFile": "Открыть проект из файла",
      "projectOpenUrl": "Открыть проект по URL",
      "projectSave": "Сохранить проект",
      "projectSaveAs": "Сохранить проект как…",
      "projectShare": "Поделиться проектом…",
      "projectCollaborate": "Совместная работа…",
      "projectPrint": "Печать…",
      "addVectorLayer": "Добавить векторный слой",
      "addRasterLayer": "Добавить растровый слой",
      "addOsmPbfLayer": "Добавить слой OSM PBF",
      "addLayer": "Добавить {{name}}",
      "addStacLayer": "Добавить слой STAC",
      "addGeoparquetLayer": "Добавить слой GeoParquet",
      "addFlatgeobufLayer": "Добавить слой FlatGeobuf",
      "addPmtilesLayer": "Добавить слой PMTiles",
      "addZarrLayer": "Добавить слой Zarr",
      "addNetcdfLayer": "Добавить слой NetCDF / HDF",
      "addLidarLayer": "Добавить слой LiDAR",
      "addSplattingLayer": "Добавить Gaussian Splatting",
      "add3dTilesLayer": "Добавить слой 3D Tiles",
      "addDuckdbLayer": "Добавить слой DuckDB",
      "whiteboxTools": "Whitebox Tools",
      "sqlWorkspace": "SQL-рабочее пространство",
      "pythonConsole": "Консоль Python",
      "notebook": "Блокнот Jupyter",
      "dashboard": "Панель мониторинга",
      "assistant": "ИИ-ассистент",
      "geocode": "Геокодировать адреса",
      "modelBuilder": "Пакеты и модели",
      "planetaryComputer": "Planetary Computer",
      "earthEngine": "Earth Engine",
      "segmentation": "ИИ-сегментация",
      "objectDetection": "Обнаружение объектов",
      "segmentEverything": "Сегментировать всё",
      "toggleControl": "Переключить элемент {{name}}",
      "toggleAtmosphereEffects": "Переключить эффекты атмосферы",
      "toggleDirections": "Переключить маршруты",
      "toggleSearch": "Переключить поиск",
      "toggleColorbar": "Переключить шкалу цветов",
      "toggleLegend": "Переключить легенду",
      "toggleHtmlPanel": "Переключить HTML-панель",
      "toggleMeasure": "Переключить измерение",
      "toggleBookmark": "Переключить закладку",
      "toggleMinimap": "Переключить миникарту",
      "toggleViewState": "Переключить состояние вида",
      "previousView": "Предыдущий вид",
      "nextView": "Следующий вид",
      "resetNorth": "Сбросить азимут",
      "resetPitch": "Сбросить наклон",
      "resetPitchBearing": "Сбросить наклон и азимут",
      "setView": "Задать вид",
      "viewComments": "Показать комментарии",
      "zoomIn": "Приблизить",
      "zoomOut": "Отдалить",
      "switchToLight": "Переключиться на светлую тему",
      "switchToDark": "Переключиться на тёмную тему",
      "keyboardShortcuts": "Горячие клавиши",
      "website": "Веб-сайт",
      "githubRepository": "Репозиторий GitHub",
      "diagnostics": "Диагностика",
      "giveFeedback": "Оставить отзыв",
      "checkForUpdates": "Проверить обновления",
      "about": "О программе",
      "togglePlugin": "Переключить {{name}}",
      "managePlugins": "Управление плагинами",
      "styleManager": "Менеджер стилей…"
    },
    "layerType": {
      "delimitedText": "Слой с разделителями",
      "photos": "Геопривязанные фотографии",
      "gpx": "Слой GPX",
      "mbtiles": "Слой MBTiles",
      "xyz": "Слой XYZ",
      "wms": "Слой WMS",
      "wfs": "Слой WFS",
      "wmts": "Слой WMTS",
      "ogcFeatures": "OGC API - Features",
      "ogcVectorTiles": "OGC Vector Tiles",
      "arcgis": "Слой ArcGIS",
      "georss": "Слой GeoRSS",
      "video": "Видеослой",
      "deckglViz": "Слой Deck.gl",
      "gltfModel": "3D-модель (glTF)",
      "postgres": "Слой PostgreSQL"
    },
    "conversion": {
      "vectorToVector": "Вектор в вектор",
      "zipInputBrowserError": "Заархивированные шейп-файлы можно конвертировать только в настольном приложении GeoLibre. В браузере выберите распакованный .shp вместе с файлами .dbf, .shx и .prj.",
      "browserOutputUnsupported": "В браузере результатом может быть GeoJSON, CSV, GeoParquet, GeoPackage или шейп-файл (.zip). Для вывода «.{{extension}}» требуется настольное приложение GeoLibre.",
      "outputExtensionRequired": "Добавьте расширение файла к имени вывода, чтобы выбрать формат.",
      "readingWithDuckDb": "Чтение {{name}} с помощью DuckDB-WASM",
      "readFeatures": "Прочитано объектов: {{features}} из {{name}}",
      "savedFile": "{{name}} сохранён",
      "saveCanceled": "Конвертация завершена; сохранение отменено.",
      "vectorToGeoparquet": "Вектор в GeoParquet",
      "vectorToFlatgeobuf": "Вектор в FlatGeobuf",
      "vectorToShapefile": "Вектор в шейп-файл",
      "vectorToGeopackage": "Вектор в GeoPackage",
      "csvToGeoparquet": "CSV в GeoParquet",
      "vectorToPmtiles": "Вектор в PMTiles",
      "rasterToCog": "Растр в COG",
      "rasterToPmtiles": "Растр в PMTiles",
      "needsDesktop": "Для этого преобразования требуется настольное приложение GeoLibre или запущенный сайдкар.",
      "runsInBrowserDuckDb": "Преобразование выполняется в браузере с помощью DuckDB-WASM.",
      "runsInBrowserWriters": "Преобразование выполняется в браузере с помощью DuckDB-WASM и встроенных записывающих модулей.",
      "runsInBrowserWasm": "Преобразование выполняется в браузере с помощью geolibre-wasm. Сайдкар не нужен.",
      "convertingWithWasm": "Преобразование {{name}} с помощью geolibre-wasm",
      "rasterShape": "Прочитан растр {{width}}×{{height}} с {{bands}} каналами",
      "wroteCog": "Записан тайловый COG с обзорами ({{compression}})",
      "notAGeoTiff": "Этот файл не является читаемым GeoTIFF. В браузере Растр в COG читает только GeoTIFF; другие форматы требуют настольного приложения.",
      "zoomRangeError": "Уровни масштабирования должны удовлетворять 0 ≤ min ≤ max ≤ {{max}}.",
      "colormap": "Цветовая карта",
      "resampling": "Передискретизация",
      "colormapDefault": "По умолчанию (viridis)",
      "zoomNative": "исходный",
      "rasterToPmtilesDesc": "Отрисовывает растр в единый архив PMTiles из PNG-тайлов Web Mercator, готовый к облачной раздаче. Один канал отрисовывается через цветовую карту, поэтому многоканальные снимки не отображаются в естественных цветах. Работает полностью в WebAssembly, поэтому не требует сайдкара ни в веб-, ни в настольном приложении.",
      "cogBrowserNote": "В браузере 8-битные растры сохраняют свой тип, а всё остальное (Int16 ЦМР, Float64, …) записывается как Float32. Настольное приложение сохраняет исходный тип.",
      "noSidecarConversion": "Для {{kind}} нет преобразования через сайдкар.",
      "minZoom": "Мин. масштаб",
      "maxZoom": "Макс. масштаб",
      "convertFailed": "Не удалось преобразовать этот файл.",
      "notAGeoTiffRasterOnly": "Этот файл не является читаемым GeoTIFF. Растр в PMTiles читает только GeoTIFF как в веб-, так и в настольном приложении.",
      "band": "Канал",
      "bandError": "Канал должен быть положительным целым числом.",
      "bandOutOfRange": "Канал {{band}} не существует; в этом растре {{bands}} каналов.",
      "runsInBrowserVectorEngines": "Преобразование выполняется в браузере с помощью DuckDB-WASM или geolibre-wasm для вывода FlatGeobuf.",
      "vectorToVectorDesc": "Преобразует между любыми векторными форматами, которые поддерживает расширение spatial в DuckDB. Форматы ввода и вывода определяются по расширениям файлов. Настольное приложение записывает любой формат (FlatGeobuf, GeoPackage, Shapefile, KML, GML, …); браузер записывает GeoJSON, CSV, GeoParquet, GeoPackage, FlatGeobuf и Shapefile.",
      "vectorToVectorInputLabel": "Входной векторный файл",
      "vectorToVectorOutputLabel": "Выходной векторный файл",
      "vectorToGeoparquetDesc": "Преобразует векторный набор данных в отсортированный по кривой Гильберта сжатый файл GeoParquet, оптимизированный для облачных запросов по диапазону.",
      "vectorToGeoparquetInputLabel": "Входной векторный файл",
      "vectorToGeoparquetOutputLabel": "Выходной файл GeoParquet",
      "vectorToFlatgeobufDesc": "Преобразует векторный набор данных в отсортированный по кривой Гильберта FlatGeobuf с упакованным пространственным индексом для быстрого облачного доступа.",
      "vectorToFlatgeobufInputLabel": "Входной векторный файл",
      "vectorToFlatgeobufOutputLabel": "Выходной файл FlatGeobuf",
      "vectorToShapefileDesc": "Преобразует векторный набор данных в ZIP-архив шейп-файла ESRI (.shp/.shx/.dbf/.prj). Имена полей усекаются до 10 символов.",
      "vectorToShapefileInputLabel": "Входной векторный файл",
      "vectorToShapefileOutputLabel": "Выходной шейп-файл в ZIP",
      "vectorToGeopackageDesc": "Преобразует векторный набор данных в GeoPackage (.gpkg) для обмена с QGIS, ArcGIS и другими ГИС-программами.",
      "vectorToGeopackageInputLabel": "Входной векторный файл",
      "vectorToGeopackageOutputLabel": "Выходной файл GeoPackage",
      "csvToGeoparquetDesc": "Строит точечные геометрии из столбцов долготы/широты и записывает отсортированный по кривой Гильберта сжатый GeoParquet.",
      "csvToGeoparquetInputLabel": "Входной файл CSV",
      "csvToGeoparquetOutputLabel": "Выходной файл GeoParquet",
      "vectorToPmtilesDesc": "Разрезает векторный набор данных на тайлы в едином архиве PMTiles с векторными тайлами, готовом к облачной раздаче.",
      "vectorToPmtilesInputLabel": "Входной векторный файл",
      "vectorToPmtilesOutputLabel": "Выходной файл PMTiles",
      "rasterToPmtilesInputLabel": "Входной растровый файл",
      "rasterToPmtilesOutputLabel": "Выходной файл PMTiles",
      "rasterToCogDesc": "Преобразует растровый набор данных в корректный сжатый Cloud Optimized GeoTIFF с внутренним тайлингом и обзорными слоями.",
      "rasterToCogInputLabel": "Входной растровый файл",
      "rasterToCogOutputLabel": "Выходной файл COG",
      "outputFileName": "Имя выходного файла",
      "shapefileSidecarHint": "Для шейп-файлов выберите .shp вместе с сопутствующими файлами .dbf, .shx и .prj.",
      "longitudeColumn": "Столбец долготы",
      "latitudeColumn": "Столбец широты",
      "compression": "Сжатие",
      "rowGroupSize": "Размер группы строк",
      "layerName": "Название слоя",
      "noOutput": "Вывода пока нет.",
      "fallbackTitle": "Преобразование"
    },
    "vectorTool": {
      "buffer": "Буфер",
      "centroids": "Центроиды",
      "convexHull": "Выпуклая оболочка",
      "dissolve": "Растворить",
      "boundingBox": "Ограничивающий прямоугольник",
      "simplify": "Упростить",
      "clip": "Обрезать",
      "intersection": "Пересечение",
      "difference": "Разность",
      "union": "Объединение",
      "spatialJoin": "Пространственное соединение",
      "attributeJoin": "Соединение по атрибутам",
      "selectByValue": "Выбрать по значению",
      "selectByLocation": "Выбрать по местоположению",
      "randomExtract": "Случайная выборка",
      "reproject": "Перепроецировать",
      "explode": "Разбить на части",
      "aggregate": "Агрегировать по атрибуту",
      "smooth": "Сгладить",
      "grid": "Регулярная сетка",
      "voronoi": "Вороного / Делоне",
      "cellSectors": "Зоны покрытия базовых станций",
      "dggsGenerator": "Генератор DGGS",
      "dggsBinning": "Агрегация по DGGS",
      "dggsCompact": "Уплотнение DGGS",
      "trajectorySpeed": "Скорость траектории",
      "detectStops": "Определить остановки",
      "spaceTimeProximity": "Пространственно-временная близость",
      "checkValidity": "Проверить корректность",
      "fixGeometries": "Исправить геометрию",
      "checkTopologyRules": "Проверить правила топологии",
      "fixTopology": "Исправить топологию"
    },
    "networkTool": {
      "isochrone": "Изохрона / зона обслуживания",
      "odMatrix": "Матрица затрат «начало-конец»",
      "sequentialRoute": "Последовательный маршрут (маршруты)"
    },
    "statisticsTool": {
      "globalMoransI": "Глобальный индекс Морана I",
      "localMoransI": "Локальный индекс Морана I (LISA)",
      "getisOrd": "Горячие точки Гетиса-Орда Gi*",
      "averageNearestNeighbor": "Средний ближайший сосед",
      "kernelDensity": "Плотность ядра (тепловая карта)",
      "emergingHotSpot": "Формирующиеся горячие точки (пространственно-временной куб)"
    },
    "rasterTool": {
      "hillshade": "Отмывка рельефа",
      "slope": "Уклон",
      "aspect": "Экспозиция",
      "reproject": "Перепроецировать",
      "resample": "Передискретизировать",
      "clipExtent": "Обрезать по охвату",
      "clipMask": "Обрезать по маскирующему слою",
      "polygonize": "Полигонизировать",
      "contour": "Изолинии",
      "interpolate": "Интерполяция (IDW / кригинг)",
      "zonal": "Зональная статистика",
      "rasterCalc": "Растровый калькулятор",
      "spectralIndex": "Спектральный индекс",
      "invalidSpectralIndex": "Недопустимый спектральный индекс.",
      "reclassify": "Реклассифицировать",
      "mosaic": "Мозаика / объединение",
      "focal": "Фокальная статистика",
      "inputRaster": "Входной растр",
      "inputRasterA": "Входной растр A",
      "inputRaster1": "Первый растр",
      "inputPoints": "Входные точки (GeoJSON)",
      "engine": "Движок",
      "engineClient": "Клиент (браузер)",
      "engineSidecar": "Сайдкар (rasterio/GDAL)",
      "clientHint": "Вычисляет в вашем браузере и добавляет результат на карту. Для больших растров или рельефа в географической СК предпочтителен сайдкар.",
      "switchToClientHint": "Либо переключите движок на «Клиент», чтобы запустить этот инструмент в браузере.",
      "chooseGeoTiff": "Выбрать GeoTIFF",
      "downloadGeoTiff": "Скачать GeoTIFF",
      "chooseInputRaster": "Выберите входной растр.",
      "useAddedLayer": "Использовать слой на карте",
      "useAddedLayerPlaceholder": "Выбрать слой…",
      "loadingLayer": "Загрузка слоя…",
      "layerLoadError": "Не удалось загрузить выбранный слой.",
      "runningInBrowser": "Выполнение «{{tool}}» в браузере...",
      "loadedRaster": "Загружен растр: {{width}}×{{height}}, каналов: {{bands}}.",
      "computedInBrowser": "«{{tool}}» вычислен в браузере.",
      "addedToMap": "«{{name}}» добавлен на карту.",
      "largeRasterWarning": "Большой растр ({{mp}} млн пикселей); во время вычисления браузер может не отвечать.",
      "mapAddFailed": "Не удалось добавить на карту (результат по-прежнему доступен для скачивания): {{message}}",
      "mapAddError": "Не удалось добавить результат на карту.",
      "runError": "Не удалось выполнить растровый инструмент.",
      "saveError": "Не удалось сохранить результат.",
      "dialogTitle": "Растровые инструменты",
      "dialogDescription": "Выполняйте распространённые растровые операции на Python-sidecar (rasterio/GDAL) или в браузере, когда sidecar недоступен.",
      "outputFile": "Выходной файл",
      "noOutput": "Вывода пока нет.",
      "errorConnect": "Не удалось подключиться к sidecar.",
      "needsDesktopSidecar": "Для растровых инструментов нужно приложение GeoLibre Desktop с запущенным sidecar.",
      "errorPoll": "Не удалось опросить задание.",
      "errorStartSidecar": "Не удалось запустить sidecar GeoLibre.",
      "errorStartTool": "Не удалось запустить растровый инструмент."
    },
    "mapControl": {
      "navigation": "Навигация",
      "fullscreen": "Полноэкранный режим",
      "compass": "Компас",
      "geolocate": "Геолокация",
      "globe": "Глобус",
      "terrain": "Рельеф",
      "scale": "Масштабная линейка",
      "attribution": "Авторство",
      "logos": "Логотипы",
      "logo": "Логотип MapLibre",
      "maptoolkitLogo": "Логотип Maptoolkit",
      "maptoolkitLogoHint": "Добавьте базовую карту Maptoolkit, чтобы показать её логотип."
    },
    "position": {
      "topLeft": "Вверху слева",
      "topRight": "Вверху справа",
      "bottomLeft": "Внизу слева",
      "bottomRight": "Внизу справа"
    },
    "item": {
      "newEllipsis": "Новый...",
      "openFrom": "Открыть из",
      "fileEllipsis": "Файл...",
      "urlEllipsis": "URL...",
      "galleryEllipsis": "Галерея...",
      "openRecent": "Открыть недавние",
      "projectHistoryEllipsis": "История...",
      "noRecentProjects": "Нет недавних проектов",
      "removeFromRecent": "Удалить {{name}} из недавних проектов",
      "clearRecentProjects": "Очистить недавние проекты",
      "duplicate": "Дублировать проект",
      "saveAsEllipsis": "Сохранить как...",
      "saveAsTemplateEllipsis": "Сохранить как шаблон...",
      "shareEllipsis": "Поделиться...",
      "shareHostUnavailable": "Недоступно: адрес сервера публикации в этом развёртывании некорректен.",
      "exportHtmlEllipsis": "Экспортировать как HTML...",
      "htmlFile": "HTML",
      "collaborateEllipsis": "Совместная работа...",
      "printEllipsis": "Печать...",
      "printLayoutEllipsis": "Макет печати...",
      "offlineBasemapEllipsis": "Офлайн-базовая карта...",
      "undo": "Отменить",
      "redo": "Повторить",
      "selectByExpressionEllipsis": "Выбрать по выражению...",
      "selectByLocationEllipsis": "Выбрать по расположению...",
      "zoomToSelection": "Приблизить к выбранному",
      "invertSelection": "Инвертировать выбор",
      "clearSelection": "Очистить выбор",
      "exportSelection": "Экспортировать выбранные объекты как слой",
      "previousView": "Предыдущий вид",
      "nextView": "Следующий вид",
      "resetOrientation": "Сбросить ориентацию",
      "resetPitch": "Сбросить наклон",
      "resetBearing": "Сбросить азимут",
      "resetPitchBearing": "Сбросить наклон и азимут",
      "setView": "Задать вид…",
      "splitView": "Разделённый вид",
      "splitViewSingle": "Одна карта",
      "splitViewTwoColumns": "Два столбца",
      "splitViewTwoRows": "Две строки",
      "splitViewGrid2x2": "Сетка 2 × 2",
      "splitViewGrid2x3": "Сетка 2 × 3",
      "splitViewGrid3x3": "Сетка 3 × 3",
      "splitViewSync": "Синхронизировать виды",
      "viewInGoogleMaps": "Открыть в Google Maps",
      "viewInGoogleEarth": "Открыть в Google Earth",
      "zoomIn": "Приблизить",
      "zoomOut": "Отдалить",
      "sectionFiles": "Файлы",
      "sectionWebServices": "Веб-сервисы",
      "sectionCloudFormats": "Облачные форматы",
      "section3dLayers": "3D-слои",
      "sectionDatabases": "Базы данных",
      "georeferencing": "Геопривязка",
      "vectorLayer": "Векторный слой",
      "cadLayer": "Слой CAD (DXF/DWG)",
      "gdbLayer": "Файловая база геоданных (GDB)",
      "rasterLayer": "Растровый слой",
      "osmPbfLayer": "Слой OSM PBF",
      "stacLayer": "Слой STAC",
      "geoparquetLayer": "Слой GeoParquet",
      "flatgeobufLayer": "Слой FlatGeobuf",
      "pmtilesLayer": "Слой PMTiles",
      "basemapExtract": "Извлечение офлайн-базовой карты",
      "zarrLayer": "Слой Zarr",
      "netcdfHdf": "NetCDF / HDF",
      "lidarLayer": "Слой LiDAR",
      "splattingLayer": "Gaussian Splatting",
      "threeDTilesLayer": "Слой 3D Tiles",
      "duckdbLayer": "Слой DuckDB",
      "whitebox": "Whitebox",
      "geocode": "Геокодировать адреса",
      "modelBuilder": "Пакеты и модели",
      "processingHistory": "История",
      "conversion": "Конвертация",
      "vector": "Вектор",
      "network": "Сеть",
      "statistics": "Пространственная статистика",
      "raster": "Растр",
      "hydrology": "Гидрология",
      "lidar": "LiDAR",
      "terrain": "Рельеф",
      "remoteSensing": "Дистанционное зондирование",
      "projection": "Проекция",
      "geolibre": "GeoLibre",
      "subGroupGeometry": "Геометрия",
      "subGroupOverlay": "Наложение",
      "subGroupJoin": "Соединение",
      "subGroupSelect": "Выбор",
      "subGroupDggs": "DGGS",
      "subGroupH3": "H3",
      "subGroupMovement": "Движение и время",
      "subGroupDataQuality": "Качество данных",
      "subGroupTerrain": "Рельеф",
      "subGroupReproject": "Перепроецирование",
      "subGroupClip": "Обрезка",
      "subGroupRasterToVector": "Растр в вектор",
      "subGroupVectorToRaster": "Вектор в растр",
      "subGroupAnalysis": "Анализ",
      "mapControls": "Элементы управления картой",
      "fieldCollection": "Полевой сбор данных...",
      "gpsTracking": "Отслеживание GPS...",
      "recordTour": "Записать тур по карте...",
      "recordVideo": "Записать видео...",
      "atmosphereEffects": "Эффекты атмосферы",
      "atmosphereEnabled": "Включено",
      "spinGlobe": "Вращающийся глобус",
      "graticule": "Сетка координат",
      "weather": "Погода",
      "weatherTooltip": "Наложите слои погоды почти в реальном времени с возможностью анимации.",
      "weatherPlay": "Воспроизвести анимацию",
      "weatherPause": "Приостановить анимацию",
      "clouds": "Облака",
      "cloudsShow": "Показывать облака",
      "cloudsTooltip": "Наложение спутниковых снимков облаков NASA почти в реальном времени, как в Google Earth. Добавляет слой, который можно анимировать по дням.",
      "cloudsDate": "Дата",
      "precipitation": "Осадки",
      "precipitationShow": "Показать осадки",
      "precipitationTooltip": "Метеорадар RainViewer почти в реальном времени. Анимация последних ~2 часов.",
      "precipitationTime": "Время",
      "sun": "Солнце",
      "sunTooltip": "Смоделировать положение солнца и терминатор день/ночь для любой даты и времени.",
      "routeAnimation": "Анимация маршрута",
      "routeAnimationTooltip": "Анимирует маркер вдоль линейного слоя с воспроизведением/паузой, скоростью, следом и слежением камеры.",
      "flightSimulator": "Авиасимулятор",
      "flightSimulatorTooltip": "Летайте над рельефом с помощью клавиатуры, как в авиасимуляторе.",
      "spinGlobeBoundsTitle": "Границы зафиксированы",
      "spinGlobeBoundsDesc": "Глобус не может вращаться, пока границы карты зафиксированы.",
      "spinGlobeBoundsHint": "Разблокировка границ позволяет глобусу свободно вращаться. Вы можете снова зафиксировать их в любой момент в Настройках.",
      "spinGlobeBoundsUnlock": "Разблокировать границы и вращать",
      "directions": "Маршруты",
      "directionsTooltip": "Маршрутизация отправляет ваши путевые точки на публичный демо-сервер OSRM (router.project-osrm.org).",
      "search": "Поиск",
      "colorbar": "Шкала цветов",
      "legend": "Легенда",
      "html": "HTML",
      "measure": "Измерение",
      "bookmark": "Закладка",
      "minimap": "Миникарта",
      "viewState": "Состояние вида",
      "activatePlugin": "Активировать плагин",
      "deactivate": "Деактивировать",
      "activate": "Активировать",
      "position": "Положение",
      "webServices": "Веб-сервисы",
      "dggs": "DGGS",
      "commandPalette": "Палитра команд",
      "openProjectFromUrl": "Открыть проект по URL",
      "importQgisProjectEllipsis": "Импортировать проект QGIS…",
      "importArcgisProjectEllipsis": "Импортировать проект ArcGIS Pro…",
      "arcgisImportComplete": "Проект ArcGIS Pro импортирован",
      "arcgisImportWarnings_one": "Проект импортирован, но {{count}} слой не удалось загрузить.",
      "arcgisImportWarnings_many": "Проект импортирован, но {{count}} слоёв не удалось загрузить.",
      "arcgisImportWarnings_few": "Проект импортирован, но {{count}} слоя не удалось загрузить.",
      "arcgisImportWarnings_other": "Проект импортирован, но {{count}} слоя не удалось загрузить.",
      "arcgisUnknownLayerType": "неизвестный",
      "qgisImportComplete": "Проект QGIS импортирован",
      "qgisImportWarnings_one": "Проект импортирован, но {{count}} слой не удалось загрузить.",
      "qgisImportWarnings_other": "Проект импортирован, но {{count}} слоя не удалось загрузить.",
      "qgisImportWarnings_many": "Проект импортирован, но {{count}} слоёв не удалось загрузить.",
      "qgisImportWarnings_few": "Проект импортирован, но {{count}} слоя не удалось загрузить.",
      "qgisUnknownProvider": "неизвестный",
      "qgisImportReason": {
        "non-vector": "В этой первой версии поддерживаются только файловые векторные слои.",
        "provider": "Поставщик данных «{{provider}}» не поддерживается.",
        "missing-source": "У слоя нет читаемого источника данных.",
        "format": "Формат файла слоя не поддерживается.",
        "remote-file": "Удалённые файловые источники QGIS пока не поддерживаются.",
        "network-path": "Пути к сетевым ресурсам не загружаются из соображений безопасности.",
        "browser-local-file": "Ссылка на локальный файл есть, но браузеры не могут повторно открывать пути к данным QGIS. Используйте GeoLibre Desktop, чтобы его загрузить.",
        "browser-local-raster": "Растр указан по локальному пути. Используйте GeoLibre Desktop, чтобы его загрузить."
      },
      "openProjectFromUrlDesc": "Загрузить проект `.geolibre.json` и добавить его в недавние проекты.",
      "projectUrl": "URL проекта",
      "opening": "Открытие...",
      "open": "Открыть",
      "somethingWentWrong": "Что-то пошло не так",
      "dismiss": "Закрыть",
      "saveProjectAsTitle": "Сохранить проект как",
      "saveProjectAsDesc": "Введите имя файла. Проект будет загружен в папку загрузок вашего браузера при нажатии «Сохранить».",
      "embedVectorTitle": "Встроить локальные векторные данные?",
      "embedVectorDesc": "В этом проекте загружено локальных векторных слоёв с вашего компьютера: {{count}}. Браузер не может повторно прочитать их при повторном открытии проекта, поэтому их данные должны быть встроены в файл проекта для восстановления. Встраивание добавляет к файлу около {{size}}.",
      "embedVectorDescDesktop": "В этом проекте загружено локальных векторных слоёв с вашего компьютера: {{count}}. Встройте их данные, чтобы сделать проект автономным (добавляет около {{size}}), либо сохраните ссылки на файлы, которые будут перезагружаться с диска при повторном открытии проекта. Ссылки сохраняют файл небольшим, но перестают работать, если исходный файл позже перемещён или удалён.",
      "embedVectorEmbedButton": "Встроить данные",
      "embedVectorReferenceButton": "Сохранить ссылки на файлы",
      "embedVectorSkipButton": "Сохранить без данных",
      "saveProjectFileName": "Имя файла",
      "saveProjectFileNamePlaceholder": "my-project.geolibre.json",
      "exportHtmlAsTitle": "Экспортировать как интерактивный HTML",
      "exportHtmlAsDesc": "Введите имя файла. Страница HTML будет загружена в папку загрузок вашего браузера при нажатии «Сохранить».",
      "exportHtmlFileName": "Имя файла",
      "exportHtmlFileNamePlaceholder": "my-map.html",
      "vectorDataFilter": "Векторные данные",
      "directionsNoticeTitle": "Маршруты используют публичный сервер маршрутизации",
      "directionsNoticeDesc": "Включение маршрутов отправляет размещённые вами путевые точки на публичный демо-сервер OSRM (router.project-osrm.org) для расчёта маршрутов — ваши координаты покидают устройство при этих запросах. Демо-сервер имеет ограничение на количество запросов и поддерживает только автомобильный маршрут.",
      "reverseGeocode": "Обратное геокодирование",
      "reverseGeocodeTooltip": "Нажмите на карту, чтобы найти адрес. Координаты клика отправляются настроенному провайдеру геокодирования (по умолчанию — публичный Nominatim; измените в Настройки → Геокодирование).",
      "reverseGeocodeNoticeTitle": "Обратное геокодирование использует внешний сервис",
      "reverseGeocodeNoticeDesc": "Включение обратного геокодирования отправляет координаты каждой точки, на которую вы нажимаете, настроенному провайдеру геокодирования (по умолчанию — публичный сервис Nominatim) для определения адреса — ваши координаты покидают устройство при этих запросах. Вы можете выбрать другого провайдера в Настройки → Геокодирование.",
      "networkNoticeTitle": "Сетевой анализ использует внешний сервер маршрутизации",
      "networkNoticeDesc": "Запуск инструмента сетевого анализа отправляет координаты ваших входных точек на сервер маршрутизации для расчёта изохрон, матриц затрат и маршрутов.",
      "networkNoticePrivacyHeading": "Конфиденциальность данных",
      "networkNoticePrivacy": "Ваши входные координаты покидают это устройство и отправляются на публичный сервер Valhalla по адресу valhalla1.openstreetmap.de. Нажмите «Отмена», если ваш проект подчиняется правилам конфиденциальности или суверенитета данных.",
      "networkNoticePrivacyCustom": "Ваши входные координаты покидают это устройство и отправляются на настроенный сервер маршрутизации ({{endpoint}}). Нажмите «Отмена», если ваш проект подчиняется правилам конфиденциальности или суверенитета данных.",
      "networkNoticePerformanceHeading": "Производительность и ограничения",
      "networkNoticePerformance": "Публичный сервер бесплатен, но имеет ограничение на количество запросов, поэтому большие пакеты точек могут ограничиваться или завершаться ошибкой. Для интенсивного использования запустите собственный сервер Valhalla и введите его URL в поле инструмента «Сервер маршрутизации (Valhalla)» выше (либо задайте VITE_ROUTING_ENDPOINT в Настройки → Переменные среды, чтобы сделать его значением по умолчанию).",
      "continue": "Продолжить",
      "largeOsmPbfTitle": "Большой файл OSM PBF",
      "largeOsmPbfDesc": "Размер этого файла составляет около {{sizeMb}} МБ. При его разборе все объекты преобразуются в GeoJSON в памяти, что может быть медленным и потреблять много памяти в браузере. Продолжить?",
      "largeVectorDesc": "{{name}} содержит около {{count}} объектов. Загрузка преобразует каждый объект в GeoJSON в памяти и может замедлить или заморозить приложение. Продолжить?",
      "addOsmPbfLayerTitle": "Добавить слой OSM PBF",
      "addOsmPbfLayerDesc": "Загрузить файл OpenStreetMap .osm.pbf. Он разбирается в браузере и разделяется на отдельные слои точек, линий и полигонов.",
      "urlLabel": "URL",
      "osmPbfUrlPlaceholder": "https://example.com/region.osm.pbf",
      "osmPbfSampleLabel": "Лас-Вегас",
      "osmPbfUrlHint": "Удалённые URL загружаются в настольном приложении; в браузере сервер должен разрешать межсайтовые запросы (CORS).",
      "chooseLocalFile": "Выбрать локальный файл…",
      "loadFromUrl": "Загрузить по URL",
      "loadingOsmPbf": "Загрузка OSM PBF…",
      "loadingOsmPbfDesc": "Разбор файла и преобразование объектов в GeoJSON. Это выполняется в фоновом режиме и может занять некоторое время для больших извлечений.",
      "loadingOsmPbfProgress": "Преобразование объектов в GeoJSON… обработано {{processed}} из {{total}} объектов OSM.",
      "projectName": "Имя проекта",
      "storymapEllipsis": "История на карте...",
      "arcgisImportReason": {
        "layer-type": "Тип слоя {{layerType}} не поддерживается.",
        "missing-source": "У слоя нет читаемого локального источника данных.",
        "format": "Формат данных слоя не поддерживается.",
        "network-path": "Пути к сетевым ресурсам не загружаются из соображений безопасности.",
        "service": "Сервисные слои ArcGIS в проектах пока не поддерживаются.",
        "browser-local-file": "Ссылка на локальный файл есть, но браузеры не могут повторно открывать пути к данным ArcGIS Pro. Используйте GeoLibre Desktop, чтобы его загрузить.",
        "map-extent": "В сохранённом охвате карты используется система координат, которую GeoLibre не может преобразовать, поэтому карта открылась в виде по умолчанию.",
        "nesting": "Группа вложена слишком глубоко, либо проект ссылается на группу, которая уже её содержит."
      }
    },
    "plugin": {
      "maplibre-gl-annotations": "Аннотации",
      "maplibre-gl-streetview": "Панорама улиц",
      "maplibre-gl-time-slider": "Ползунок времени",
      "geolibre-timelapse": "Таймлапс",
      "maplibre-gl-esri-wayback": "Исторические снимки",
      "maplibre-gl-openaerialmap": "OpenAerialMap",
      "maplibre-gl-arcgis-hub": "ArcGIS Hub",
      "geolibre-stac-catalogs": "Каталоги STAC",
      "maplibre-gl-source-coop": "Source Cooperative",
      "maplibre-gl-natural-earth": "Natural Earth",
      "maplibre-gl-swipe": "Сравнение слоёв",
      "geolibre-elevation-profile": "Профиль высот",
      "maplibre-gl-basemap-control": "Базовые карты",
      "maplibre-layer-control": "Управление слоями",
      "maplibre-gl-huggingface": "Hugging Face",
      "carto-light": "Базовая карта Carto Light",
      "geolibre-flight-simulator": "Авиасимулятор",
      "geolibre-route-animation": "Анимация маршрута",
      "geolibre-sun": "Симуляция Солнца",
      "maplibre-atmosphere-effects": "Эффекты атмосферы",
      "maplibre-deckgl-viz": "Слой Deck.gl",
      "maplibre-gl-clouds": "Облака",
      "maplibre-gl-components": "Компоненты",
      "maplibre-gl-directions": "Маршруты",
      "maplibre-gl-earthdata-gis": "Earthdata GIS",
      "maplibre-gl-enviroatlas": "US EPA EnviroAtlas",
      "maplibre-gl-fema-wms": "FEMA NFHL",
      "maplibre-gl-geo-editor": "GeoEditor",
      "maplibre-gl-geoagent": "GeoAgent",
      "maplibre-gl-geolens": "GeoLens",
      "maplibre-gl-graticule": "Сетка координат",
      "maplibre-gl-mapillary": "Mapillary",
      "maplibre-gl-nasa-earthdata": "NASA Earthdata",
      "maplibre-gl-national-map": "USGS National Map",
      "maplibre-gl-overture-maps": "Overture Maps",
      "maplibre-gl-precipitation": "Осадки",
      "maplibre-gl-usgs-lidar": "USGS LiDAR",
      "maplibre-h3-grid": "Сетка H3",
      "maplibre-s2-grid": "S2",
      "maplibre-a5-grid": "A5",
      "maplibre-dggrid": "DGGRID",
      "maplibre-dggal": "DGGAL",
      "maplibre-olc": "OLC",
      "maplibre-geohash": "Geohash",
      "maplibre-tilecode": "Tilecode",
      "maplibre-reverse-geocode": "Обратное геокодирование",
      "osm-basemap": "Базовая карта OpenStreetMap"
    },
    "fileDrop": {
      "overlayTitle": "Перетащите сюда векторные или растровые файлы, чтобы добавить слои",
      "overlaySubtext": "Ваши данные мгновенно добавляются на панель слоёв.",
      "addedLayer": "«{{name}}» добавлен на панель слоёв.",
      "addedVectorLayers_one": "На панель слоёв добавлен {{count}} векторный слой.",
      "addedVectorLayers_few": "На панель слоёв добавлено {{count}} векторных слоя.",
      "addedVectorLayers_many": "На панель слоёв добавлено {{count}} векторных слоёв.",
      "addedVectorLayers_other": "На панель слоёв добавлено {{count}} векторного слоя.",
      "addedRasterLayers_one": "На панель слоёв добавлен {{count}} растровый слой.",
      "addedRasterLayers_few": "На панель слоёв добавлено {{count}} растровых слоя.",
      "addedRasterLayers_many": "На панель слоёв добавлено {{count}} растровых слоёв.",
      "addedRasterLayers_other": "На панель слоёв добавлено {{count}} растрового слоя.",
      "addedBoth": "На панель слоёв добавлено: {{vector}} и {{raster}}.",
      "bothVectorLayers_one": "{{count}} векторный слой",
      "bothVectorLayers_few": "{{count}} векторных слоя",
      "bothVectorLayers_many": "{{count}} векторных слоёв",
      "bothVectorLayers_other": "{{count}} векторного слоя",
      "bothRasterLayers_one": "{{count}} растровый слой",
      "bothRasterLayers_few": "{{count}} растровых слоя",
      "bothRasterLayers_many": "{{count}} растровых слоёв",
      "bothRasterLayers_other": "{{count}} растрового слоя"
    },
    "error": {
      "couldNotOpenProject": "Не удалось открыть проект.",
      "couldNotImportQgisProject": "Не удалось импортировать проект QGIS.",
      "couldNotImportArcgisProject": "Не удалось импортировать проект ArcGIS Pro.",
      "invalidProjectUrl": "Введите корректный URL проекта (HTTP или HTTPS).",
      "couldNotOpenProjectUrl": "Не удалось открыть URL проекта.",
      "couldNotOpenRecentProject": "Не удалось открыть недавний проект.",
      "couldNotLoadRecentProject": "Не удалось загрузить недавний проект.",
      "couldNotSaveProject": "Не удалось сохранить проект.",
      "couldNotExportHtml": "Не удалось экспортировать проект в HTML.",
      "osmPbfNoFeatures": "В этом файле OSM PBF не найдено ни точечных, ни линейных, ни полигональных объектов.",
      "couldNotLoadOsmPbf": "Не удалось загрузить файл OSM PBF.",
      "osmPbfLoadFailedWithHint": "{{message}} Если это тайл Mapbox Vector Tile (.pbf), его нельзя загрузить как извлечение OSM.",
      "osmPbfTooLarge": "Это извлечение OSM слишком велико для загрузки и превысило лимит памяти или времени. Попробуйте меньшую область или предварительно отфильтруйте файл (например, с помощью osmium-tool или QGIS) перед загрузкой.",
      "couldNotOpenOsmPbf": "Не удалось открыть файл OSM PBF.",
      "invalidOsmPbfUrl": "Введите корректный URL http(s) для файла .osm.pbf.",
      "couldNotDownloadOsmPbf": "Не удалось скачать файл OSM PBF.",
      "scenegraphModelUrlRequired": "Введите URL модели glTF/GLB.",
      "scenegraphInvalidLngLat": "Введите корректные долготу и широту.",
      "scenegraphOutOfRange": "Долгота должна быть от -180 до 180, а широта — от -90 до 90.",
      "scenegraphNoPointFeatures": "В GeoJSON нет точечных объектов для размещения моделей."
    },
    "scenegraph": {
      "modelUrl": "URL модели glTF / GLB",
      "placement": "Размещение",
      "placementSingle": "Одно местоположение",
      "placementData": "Из точечных данных",
      "longitude": "Долгота",
      "latitude": "Широта",
      "scale": "Масштаб",
      "bearing": "Азимут°",
      "altitude": "Высота, м"
    },
    "sqlWorkspace": {
      "description": {
        "postgis": "Выполняйте SQL PostGIS для загруженных слоёв. Расширение PostGIS загружено, поэтому доступны функции ST_*. При первом запуске загружается движок базы данных размером около 19 МБ.",
        "duckdb": "Выполняйте SQL DuckDB для загруженных слоёв, файлов и URL. Расширение spatial загружено, поэтому доступны функции ST_*. Облачные URL (s3://, gs://, az://) поддерживаются для публичных данных.",
        "sedona": "Выполняйте пространственный SQL Apache Sedona для загруженных слоёв. В браузере работает через CereusDB (сборку SedonaDB в WebAssembly); на настольной версии использует сайдкар SedonaDB, если установлено необязательное дополнение sedona. Доступны функции ST_*."
      },
      "title": "SQL-рабочее пространство",
      "engine": "SQL-движок",
      "resize": "Изменить размер SQL-рабочего пространства",
      "resizeEditor": "Изменить размер областей редактора и результатов",
      "collapse": "Свернуть SQL-рабочее пространство",
      "expand": "Развернуть SQL-рабочее пространство",
      "close": "Закрыть SQL-рабочее пространство",
      "run": "Выполнить",
      "runHint": "Выполнить (Ctrl/Cmd+Enter)",
      "clear": "Очистить",
      "completions": "Автодополнения",
      "placeholder": "Введите SQL здесь · Ctrl/Cmd+Enter для запуска · Tab или Ctrl+Space для автодополнения",
      "resultsPlaceholder": "Выполните запрос, чтобы увидеть результаты здесь.",
      "queryableHint": "Слои, доступные для запросов: {{names}}",
      "queryableLayers": "Слои, доступные для запросов:",
      "queryLabel": "SQL-запрос",
      "engineOption": "Движок: {{name}}",
      "sampleQueries": "Примеры запросов…",
      "sampleQueriesLabel": "Вставить пример запроса",
      "history": "История…",
      "historyLabel": "Повторно использовать запрос из истории",
      "sampleForLayer": "Пример запроса для слоя…",
      "sampleForLayerLabel": "Вставить пример запроса для слоя",
      "noLayersEngine": "Пока не загружено ни одного векторного слоя как таблицы. Загрузите векторный слой, чтобы запрашивать его через {{engine}}.",
      "noLayersReaders": "Пока не загружено ни одного векторного слоя как таблицы. Вы всё же можете читать файлы и URL с помощью read_parquet(), read_csv_auto() или ST_Read().",
      "layerName": "Имя слоя",
      "layerNamePlaceholder": "Имя слоя (необязательно)",
      "addAsLayer": "Добавить как слой",
      "exportCsv": "Экспорт CSV",
      "exportGeoParquet": "Экспорт GeoParquet",
      "addedAsLayer_one": "{{count}} объект добавлен на карту как «{{name}}».",
      "addedAsLayer_few": "{{count}} объекта добавлено на карту как «{{name}}».",
      "addedAsLayer_many": "{{count}} объектов добавлено на карту как «{{name}}».",
      "addedAsLayer_other": "{{count}} объекта добавлено на карту как «{{name}}».",
      "addAsQueryLayer": "Добавить как слой запроса",
      "addAsQueryLayerHint": "Добавить результат как активный слой, который повторно выполняет этот SQL при обновлении",
      "addedAsQueryLayer_one": "На карту добавлен {{count}} объект как слой запроса «{{name}}». Обновите его на панели «Слои», чтобы повторно выполнить SQL.",
      "addedAsQueryLayer_few": "На карту добавлено {{count}} объекта как слой запроса «{{name}}». Обновите его на панели «Слои», чтобы повторно выполнить SQL.",
      "addedAsQueryLayer_many": "На карту добавлено {{count}} объектов как слой запроса «{{name}}». Обновите его на панели «Слои», чтобы повторно выполнить SQL.",
      "addedAsQueryLayer_other": "На карту добавлено {{count}} объекта как слой запроса «{{name}}». Обновите его на панели «Слои», чтобы повторно выполнить SQL.",
      "savedAs": "{{label}} сохранён как {{name}}.",
      "noRows": "Инструкция выполнена. Строки не возвращены.",
      "showingRows": "Показаны первые {{shown}} из {{total}} строк. Экспортируйте, чтобы увидеть их все.",
      "rowsCount_one": "{{count}} строка",
      "rowsCount_few": "{{count}} строки",
      "rowsCount_many": "{{count}} строк",
      "rowsCount_other": "{{count}} строки",
      "columnsCount_one": "{{count}} столбец",
      "columnsCount_few": "{{count}} столбца",
      "columnsCount_many": "{{count}} столбцов",
      "columnsCount_other": "{{count}} столбца",
      "samples": {
        "countriesGeom": "Страны с геометрией",
        "attributesOnly": "Только атрибуты (без геометрии)",
        "populationByContinent": "Население по континентам (агрегация)",
        "mostPopulous": "Самые населённые страны (геометрия)",
        "countryCentroids": "Центроиды стран (пространственный)",
        "largestByArea": "Крупнейшие страны по площади (пространственный)",
        "postgisVersion": "Версия PostGIS",
        "makePoint": "Создать точку (геометрия)",
        "firstRows": "Первые строки слоя",
        "featureCount": "Количество объектов",
        "layerCentroids": "Центроиды слоя (пространственный)",
        "bufferFeatures": "Буфер объектов на 0.01 град. (пространственный)",
        "boundingBox": "Ограничивающий прямоугольник слоя (пространственный)",
        "bufferPoint": "Буфер точки (пространственный)",
        "areaPerFeature": "Площадь каждого объекта (пространственный)"
      }
    }
  },
  "selection": {
    "byExpressionTitle": "Выбор по выражению",
    "byExpressionDescription": "Выберите объекты, атрибуты которых соответствуют логическому выражению. Совпадения становятся активным выбором, подсвеченным на карте и в таблице атрибутов.",
    "byLocationTitle": "Выбор по расположению",
    "byLocationDescription": "Выбор объектов по их пространственному отношению к объектам другого слоя.",
    "targetLayer": "Выбрать объекты из",
    "referenceLayer": "Сравнивая с объектами",
    "predicate": "Где объект",
    "predicateIntersects": "Пересекает",
    "predicateWithin": "Находится внутри",
    "predicateContains": "Содержит",
    "predicateDisjoint": "Не пересекается (нет пересечения)",
    "mode": "Изменить текущий выбор",
    "modeNew": "Создав новый выбор",
    "modeAdd": "Добавив к текущему выбору",
    "modeRemove": "Убрав из текущего выбора",
    "modeIntersect": "Выбрав в пределах текущего выбора",
    "expression": "Выражение",
    "expressionPlaceholder": "[\">=\", [\"get\", \"population\"], 100000]",
    "expressionTarget": "Фильтр выбора",
    "openBuilder": "Конструктор выражений...",
    "invalidExpression": "Введите корректное логическое выражение.",
    "select": "Выбрать объекты",
    "noLayers": "Добавьте векторный слой с объектами, чтобы сделать выбор.",
    "needTwoLayers": "Для выбора по расположению нужны два векторных слоя с объектами.",
    "summary": "Выбрано объектов: {{selected}} из {{total}} (совпадений: {{matched}}).",
    "evaluationErrors": "Не удалось вычислить {{count}} объектов; они не были сопоставлены.",
    "unevaluableDisjoint": "{{count}} объектов исключено, так как их геометрию не удалось вычислить.",
    "tooManyPairs": "Для этого сравнения требуется {{pairs}} проверок пар объектов (предел {{limit}}). Вместо этого используйте Обработка → GeoLibre → Вектор → Выбрать по расположению с движком «Сайдкар».",
    "exportedLayerName": "{{name}} (выбор)"
  },
  "loadEditorFeatures": {
    "menuItem": "Загрузить объекты в редактор…",
    "title": "Загрузить объекты в редактор",
    "collapse": "Свернуть панель",
    "expand": "Развернуть панель",
    "description": "Загрузите векторные объекты, видимые в текущем виде карты, в GeoEditor для редактирования, затем сохраните все объекты или только изменения как GeoJSON.",
    "vectorLayer": "Векторный слой",
    "selectPlaceholder": "Выберите слой…",
    "refresh": "Обновить список слоёв",
    "noLayers": "В текущем виде нет векторных слоёв. Добавьте векторный слой или переместитесь к области базовой карты с векторными объектами, затем обновите.",
    "editSessionActive": "Завершите редактирование геометрии на месте (панель «Слои» → «Завершить редактирование геометрии»), прежде чем загружать или сохранять объекты здесь.",
    "editorName": "Имя редактора",
    "editorNamePlaceholder": "Ваше имя (необязательно)",
    "loadFeatures": "Загрузить объекты",
    "loading": "Загрузка объектов…",
    "selectLayer": "Сначала выберите слой.",
    "noneInView": "В текущем виде для этого слоя не найдено объектов.",
    "editorUnavailable": "Не удалось активировать GeoEditor. Повторите попытку после полной загрузки карты.",
    "noEditable": "В текущем виде для этого слоя не найдено редактируемых объектов.",
    "loaded": "Загружено объектов: {{count}} из «{{layer}}».",
    "appended": "Добавлено объектов: {{count}} из «{{layer}}».",
    "loadedWithDropped": "{{message}} (пропущено недопустимых: {{dropped}})",
    "loadFailed": "Не удалось загрузить объекты в редактор.",
    "confirmExisting": "В редакторе уже есть объектов: {{count}}. Добавить к ним или удалить и заменить?",
    "tooMany": "Загрузка {{count}} объектов может замедлить отклик редактора. Всё равно загрузить?",
    "loadAnyway": "Всё равно загрузить",
    "append": "Добавить",
    "appendHint": "Добавить новые объекты к существующим.",
    "discard": "Удалить и заменить",
    "discardHint": "Удалить существующие объекты и загрузить новые.",
    "noChanges": "Пока нет изменений для сохранения.",
    "nothingToSave": "Нет объектов для сохранения.",
    "saved": "Сохранено объектов: {{count}}.",
    "savedChanges": "Изменения сохранены: добавлено {{added}}, изменено {{modified}}, удалено {{deleted}}.",
    "saveFailed": "Не удалось сохранить объекты.",
    "saveChanges": "Сохранить изменения",
    "saveChangesHint": "Сохранить только добавленные, изменённые или удалённые объекты.",
    "saveAll": "Сохранить всё"
  },
  "geocode": {
    "title": "Геокодировать адреса",
    "description": "Геокодируйте CSV-файл адресов в точечный слой. Каждая совпавшая строка становится точкой с исходными столбцами плюс полученными координатами и оценкой совпадения.",
    "chooseFile": "Выбрать файл CSV",
    "noFile": "Файл CSV не выбран.",
    "fileLoaded": "{{name}} ({{count}} строк)",
    "provider": "Провайдер геокодирования",
    "providerHint": "API-ключи и конечные точки настраиваются в Настройках.",
    "apiKeyRequired": "{{provider}} требует API-ключ. Добавьте его в Настройках, чтобы получить результаты.",
    "corsNote": "Google официально не разрешает браузерные запросы к своему Geocoding API; запросы могут блокироваться, если они не проходят через прокси того же источника.",
    "addressColumn": "Столбец адреса",
    "run": "Начать геокодирование",
    "cancel": "Отмена",
    "outputPlaceholder": "Здесь появится ход выполнения.",
    "usingEndpoint": "Используется {{endpoint}}",
    "usingProvider": "Используется {{provider}} ({{endpoint}})",
    "rowCapWarning": "Будут геокодированы только первые {{cap}} строк в соответствии с политикой использования публичного Nominatim. Настройте собственную конечную точку для больших пакетов.",
    "skippedEmpty": "Пропущено строк с пустым адресом: {{count}}.",
    "progress": "Геокодирование строки {{current}} из {{total}}: {{address}}",
    "summary": "Геокодировано {{matched}} из {{total}} строк; без совпадения: {{failed}}.",
    "failedRows": "Строки без совпадения: {{rows}}",
    "noMatches": "Не удалось геокодировать ни одной строки.",
    "cancelledNoRows": "Отменено до того, как была геокодирована хотя бы одна строка.",
    "cancelled": "Отменено. Добавлено совпавших строк: {{matched}}.",
    "error": "Ошибка: {{message}}",
    "reverseLookingUp": "Поиск адреса...",
    "reverseNoAddress": "Адрес не найден.",
    "reverseCopyAddress": "Копировать адрес",
    "reverseFailed": "Обратное геокодирование не удалось."
  },
  "graticule": {
    "title": "Сетка координат",
    "controlTitle": "Настройки сетки координат",
    "gridType": "Тип сетки",
    "typeGeographic": "Географическая (шир/долг)",
    "typeUtm": "UTM (восток/север)",
    "spacing": "Интервал",
    "spacingAuto": "Автоматически (по масштабу)",
    "spacingFixed": "Фиксированный интервал",
    "interval": "Интервал (°)",
    "intervalMeters": "Интервал (м)",
    "lineColor": "Цвет линии",
    "lineWidth": "Толщина линии",
    "lineOpacity": "Непрозрачность линии",
    "dashedLines": "Пунктирные линии",
    "showLabels": "Показывать подписи",
    "labelFormat": "Формат подписи",
    "formatDecimal": "Десятичные градусы",
    "formatDms": "Град/мин/сек",
    "labelEdges": "Края с подписями",
    "edgesLeftBottom": "Слева и снизу",
    "edgesAll": "Со всех сторон",
    "labelColor": "Цвет подписи",
    "labelSize": "Размер подписи"
  },
  "h3Plugin": {
    "title": "Сетка H3",
    "controlTitle": "Настройки сетки H3",
    "autoResolution": "Автоматическое разрешение",
    "resolution": "Разрешение",
    "cellCount": "Ячеек в области просмотра: {{count}}",
    "tooManyCells": "Эта область превышает предел в {{limit}} ячеек. Приблизьте карту или уменьшите разрешение.",
    "fillColor": "Цвет заливки",
    "fillOpacity": "Непрозрачность заливки",
    "lineColor": "Цвет контура",
    "lineWidth": "Толщина контура",
    "showLabels": "Показывать идентификаторы ячеек",
    "identifyHint": "Щёлкните по карте, чтобы определить ячейку H3.",
    "selectedCell": "Выбранная ячейка",
    "noSelection": "Ячейка не выбрана",
    "copyId": "Копировать идентификатор",
    "copied": "Скопировано",
    "parent": "Родительская ячейка",
    "children": "Дочерние ячейки",
    "neighbors": "Соседние ячейки",
    "baseCell": "Базовая ячейка",
    "center": "Центр",
    "pentagon": "Пятиугольник",
    "yes": "Да",
    "no": "Нет",
    "zoomToCell": "Приблизить к ячейке",
    "addAsLayer": "Добавить сетку как слой",
    "exportGeoJson": "Экспорт GeoJSON",
    "exportCsv": "Экспорт CSV",
    "includeNeighbors": "Включить соседние ячейки выбранной ячейки",
    "includeParents": "Включить родительские ячейки выбранной ячейки",
    "showIcosahedron": "Показывать икосаэдр"
  },
  "timelapse": {
    "title": "Таймлапс",
    "provider": "Источник снимков",
    "legend": "Легенда",
    "yearSlider": "Год таймлапса",
    "play": "Воспроизвести",
    "pause": "Пауза",
    "speed": "Скорость",
    "secondsPerYear": "Секунд на год",
    "secondsPerYearSuffix": "с/год",
    "loop": "Цикл",
    "record": "Записать видео",
    "stopRecording": "Остановить запись",
    "recording": "Запись",
    "recordingFailed": "Не удалось записать видео.",
    "recordingUnsupported": "Запись холста не поддерживается в этом браузере.",
    "loadingTiles": "Загрузка тайлов…"
  },
  "mapillary": {
    "title": "Mapillary",
    "hint": "Нажмите на точку покрытия на карте, чтобы просмотреть панорамные снимки.",
    "noToken": "Для загрузки покрытия и снимков требуется токен доступа Mapillary. Вставьте его ниже, чтобы начать.",
    "tokenPlaceholder": "MLY|…",
    "tokenSave": "Сохранить токен",
    "tokenHelp": "Получить токен",
    "tokenLabel": "Токен доступа Mapillary",
    "loading": "Загрузка снимков…",
    "loadError": "Не удалось загрузить это изображение.",
    "coverageLines": "Последовательности Mapillary",
    "coveragePoints": "Изображения Mapillary"
  },
  "openAerialMap": {
    "hint": "Поиск снимков OpenAerialMap по виду карты, нарисованной рамке или координатам.",
    "search": "Искать в этом виде",
    "loadMore": "Загрузить ещё",
    "searching": "Поиск…",
    "loadingMore": "Загрузка…",
    "noResults": "В этой области снимки не найдены.",
    "showing": "Показано {{shown}} из {{total}} изображений.",
    "searchError": "Не удалось связаться с OpenAerialMap: {{message}}. Повторите попытку.",
    "add": "Добавить",
    "remove": "Удалить",
    "zoom": "Приблизить",
    "download": "Скачать",
    "metadata": "Метаданные",
    "addTitle": "Добавить это изображение на карту",
    "removeTitle": "Убрать это изображение с карты",
    "addUnavailableTitle": "Для этого изображения нет тайлового сервиса",
    "zoomTitle": "Приблизить к этому изображению",
    "downloadTitle": "Скачать исходный GeoTIFF",
    "metadataTitle": "Просмотреть метаданные этого изображения",
    "modeView": "Вид карты",
    "modeDraw": "Нарисовать рамку",
    "modeBbox": "Координаты",
    "drawHint": "Нажмите и перетащите на карте, чтобы нарисовать рамку поиска.",
    "drawStart": "Нарисовать рамку на карте",
    "drawCancel": "Отменить рисование",
    "drawnBox": "Рамка поиска: {{box}}",
    "coordWest": "Запад",
    "coordSouth": "Юг",
    "coordEast": "Восток",
    "coordNorth": "Север",
    "coordSearch": "Искать в этой рамке",
    "bboxInvalid": "Введите четыре корректные координаты, где запад < восток и юг < север.",
    "footprintsLayer": "Контуры OpenAerialMap",
    "footprintUnavailable": "Для этого изображения нет тайлового сервиса.",
    "metadataHeading": "Метаданные изображения",
    "close": "Закрыть",
    "metaTitle": "Название",
    "metaProvider": "Поставщик",
    "metaPlatform": "Платформа",
    "metaResolution": "Разрешение",
    "metaAcquired": "Дата съёмки",
    "metaBounds": "Границы (З, Ю, В, С)",
    "metaSource": "Исходный GeoTIFF",
    "metaRaw": "Исходные метаданные"
  },
  "arcgisHub": {
    "hint": "Поиск общедоступных наборов данных в ArcGIS Hub. Добавляйте поддерживаемые слои на карту или скачивайте данные.",
    "searchPlaceholder": "Поиск наборов данных ArcGIS Hub",
    "search": "Искать",
    "searchCurrentView": "Искать в текущей области карты",
    "enterKeyword": "Введите ключевое слово, чтобы начать.",
    "loadMore": "Загрузить ещё",
    "searching": "Поиск…",
    "loadingMore": "Загрузка дополнительных наборов данных…",
    "noResults": "Общедоступные наборы данных не найдены.",
    "searchError": "Не удалось выполнить поиск в ArcGIS Hub.",
    "showing": "Показано наборов данных: {{shown}} из {{total}}.",
    "noDescription": "Описание не указано.",
    "add": "Добавить на карту",
    "adding": "Добавление {{title}}…",
    "added": "{{title}} добавлен.",
    "addError": "Не удалось добавить этот набор данных.",
    "zoom": "Приблизить",
    "download": "Скачать",
    "preparing": "Подготовка {{title}}…",
    "downloading": "Скачивание «{{title}}»: объектов {{completed}} из {{total}}…",
    "downloadStarted": "Скачивание {{title}} начато.",
    "downloadFirstLayer": "Слоёв в наборе данных «{{title}}»: {{layerCount}}. Скачан только первый.",
    "downloadError": "Не удалось скачать этот набор данных.",
    "details": "Подробности"
  },
  "openDataCatalogs": {
    "socrataHint": "Поиск в общедоступных каталогах открытых данных Socrata и добавление наборов данных GeoJSON.",
    "ckanHint": "Поиск в каталоге CKAN Humanitarian Data Exchange и добавление доступных ресурсов GeoJSON.",
    "searchPlaceholder": "Поиск в {{name}}",
    "search": "Искать",
    "enterKeyword": "Введите ключевое слово, чтобы начать.",
    "loadMore": "Загрузить ещё",
    "searching": "Поиск…",
    "noResults": "Наборы данных не найдены.",
    "showing": "Показано наборов данных: {{shown}} из {{total}}.",
    "noDescription": "Описание не указано.",
    "add": "Добавить на карту",
    "details": "Подробности",
    "adding": "Добавление {{title}}…",
    "added": "{{title}} добавлен.",
    "addError": "Не удалось добавить набор данных.",
    "searchError": "Не удалось выполнить поиск."
  },
  "earthdataGis": {
    "hint": "Ищите в NASA Earthdata GIS сервисы изображений, карт и объектов.",
    "searchPlaceholder": "Поиск в Earthdata GIS…",
    "search": "Поиск",
    "searching": "Поиск…",
    "loadingMore": "Загрузка ещё…",
    "loadMore": "Загрузить ещё",
    "noResults": "Ни один сервис не соответствует этому запросу.",
    "showing": "Сервисов показано: {{shown}} из {{total}}.",
    "searchError": "Не удалось связаться с Earthdata GIS: {{message}}. Повторите попытку.",
    "limitToView": "Ограничить областью просмотра",
    "limitToViewTitle": "Возвращать только сервисы, пересекающие текущую область просмотра карты",
    "filterAll": "Все",
    "filterImage": "Изображения",
    "filterMap": "Карты",
    "filterFeature": "Объекты",
    "kindImage": "Сервис изображений",
    "kindMap": "Сервис карт",
    "kindFeature": "Сервис объектов",
    "kindWebMap": "Веб-карта",
    "filterWebMap": "Веб-карты",
    "webMapAdded_one": "Добавлен {{count}} слой из этой веб-карты.",
    "webMapAdded_few": "Добавлено {{count}} слоя из этой веб-карты.",
    "webMapAdded_many": "Добавлено {{count}} слоёв из этой веб-карты.",
    "webMapAdded_other": "Добавлено {{count}} слоя из этой веб-карты.",
    "webMapAddedPartial": "Добавлено слоёв: {{added}} из {{total}} этой веб-карты; до остальных не удалось достучаться.",
    "webMapEmpty": "в этой веб-карте нет слоёв, которые GeoLibre может отобразить.",
    "add": "Добавить",
    "adding": "Добавление…",
    "remove": "Удалить",
    "zoom": "Приблизить",
    "details": "Подробности",
    "portal": "Портал",
    "portalTitle": "Открыть этот элемент на портале Earthdata GIS",
    "cog": "COG",
    "cogTitle": "Скачать этот сервис как Cloud Optimized GeoTIFF",
    "cogHeading": "Скачать как COG",
    "cogAreaView": "Текущая область просмотра",
    "cogAreaExtent": "Полный охват",
    "cogSize": "Размер экспорта: {{width}} x {{height}} пикс.",
    "cogResolution": "Разрешение на местности: {{metres}} м/пикс.",
    "cogNote": "Сервис заново экспортируется в этом размере и перекодируется в COG, поэтому это передискретизированное представление области, а не исходный растр в собственном разрешении.",
    "cogDownload": "Скачать",
    "cogDownloading": "Экспорт и преобразование…",
    "cogRetrying": "Сервис отклонил такой размер; повторная попытка с {{width}} x {{height}} пикс.…",
    "cogConverting": "Преобразование в COG…",
    "cogDone": "COG сохранён с размером {{width}} x {{height}} пикс.",
    "cogFailed": "Не удалось скачать COG: {{message}}",
    "cogUnavailable": "Для скачивания нужно настольное приложение или диалог сохранения в браузере.",
    "cancel": "Отмена",
    "addTitle": "Добавить этот сервис на карту",
    "removeTitle": "Убрать этот сервис с карты",
    "zoomTitle": "Приблизить к этому сервису",
    "zoomUnavailableTitle": "Этот сервис не публикует охват",
    "detailsTitle": "Посмотреть метаданные этого сервиса",
    "addError": "Не удалось добавить сервис: {{message}}",
    "addTimeout": "он не ответил в течение минуты. Слой всё равно появится, если операция завершится.",
    "zoomedToData": "Масштаб выходит за пределы полного охвата этого слоя: сервис отображается только на более крупных уровнях масштаба.",
    "detailsHeading": "Сведения о сервисе",
    "close": "Закрыть",
    "metaTitle": "Заголовок",
    "metaType": "Тип",
    "metaSummary": "Краткое описание",
    "metaDescription": "Описание",
    "metaOwner": "Опубликовано",
    "metaModified": "Последнее изменение",
    "metaTags": "Теги",
    "metaExtent": "Охват (З, Ю, В, С)",
    "metaCredits": "Благодарности",
    "metaLicense": "Условия использования",
    "metaService": "URL сервиса",
    "metaPortalItem": "Элемент портала",
    "metaRaw": "Исходные метаданные"
  },
  "sourceCoop": {
    "hint": "Ищите открытые геоданные в Source Cooperative или введите идентификатор аккаунта/продукта.",
    "searchPlaceholder": "Поиск данных или аккаунт/продукт",
    "search": "Поиск",
    "searching": "Поиск…",
    "loading": "Загрузка каталога…",
    "loadError": "Не удалось связаться с Source Cooperative: {{message}}. Повторите попытку.",
    "noResults": "Нет подходящих продуктов.",
    "retry": "Повторить",
    "featured": "Избранное",
    "showing": "Показано {{shown}} из {{total}} продуктов.",
    "browseAccount": "Просмотреть все продукты {{account}}",
    "back": "Назад",
    "files": "Файлы",
    "noFiles": "В этой папке нет файлов.",
    "loadingFiles": "Загрузка файлов…",
    "loadMore": "Загрузить ещё",
    "parent": "На уровень вверх",
    "add": "Добавить",
    "adding": "Добавление…",
    "added": "Добавлено",
    "stream": "Потоково",
    "streaming": "Потоковая передача",
    "remove": "Удалить",
    "download": "Скачать",
    "copyUrl": "Копировать URL",
    "copied": "Скопировано",
    "openProduct": "Открыть на source.coop",
    "addTitle": "Добавить этот файл на карту",
    "streamTitle": "Запрашивайте этот файл на месте, читая только видимые части. Весь файл никогда не копируется в DuckDB — лучше всего для больших файлов.",
    "removeTitle": "Убрать этот файл с карты",
    "downloadTitle": "Скачать этот файл",
    "copyUrlTitle": "Копировать URL этого файла",
    "openProductTitle": "Открыть страницу этого продукта на source.coop",
    "unsupportedTitle": "GeoLibre не может отобразить этот формат — вместо этого скачайте его",
    "addError": "Не удалось добавить этот файл: {{message}}",
    "largeFileWarning": "Размер этого файла — {{size}}. Он передаётся потоком из источника, поэтому читаются только видимые части.",
    "streamHint": "Размер этого файла — {{size}}. «Добавить» копирует его в память; «Потоково» читает только видимые части.",
    "tooLargeToOpen": "Размер этого файла — {{size}}, что слишком много для открытия в браузере (предел {{limit}}). Скачайте его или используйте секционированную версию этого набора данных."
  },
  "huggingFace": {
    "browseTab": "Обзор",
    "uploadTab": "Загрузка",
    "settingsTab": "Настройки",
    "hint": "Ищите репозитории наборов данных на Hugging Face или введите имя аккаунта либо идентификатор owner/dataset.",
    "searchPlaceholder": "Поиск наборов данных, аккаунта или owner/dataset",
    "search": "Поиск",
    "searching": "Поиск…",
    "loadError": "Не удалось связаться с Hugging Face: {{message}}. Повторите попытку.",
    "noResults": "Нет подходящих наборов данных.",
    "retry": "Повторить",
    "suggestions": "Рекомендуемые наборы данных",
    "showing_one": "{{count}} набор данных.",
    "showing_few": "{{count}} набора данных.",
    "showing_many": "{{count}} наборов данных.",
    "showing_other": "{{count}} набора данных.",
    "browseOwner": "Просмотреть все наборы данных {{owner}}",
    "back": "Назад",
    "private": "Приватный",
    "gated": "Ограниченный доступ",
    "privateHint": "Этот набор данных приватный или с ограниченным доступом. Его файлы требуют аутентифицированного запроса, который источник карты выполнить не может, поэтому здесь их нельзя ни добавить, ни скачать.",
    "stats": "{{likes}} отметок «нравится» · {{downloads}} скачиваний",
    "noFiles": "В этой папке нет файлов.",
    "loadingFiles": "Загрузка файлов…",
    "loadMore": "Загрузить ещё",
    "parent": "На уровень вверх",
    "add": "Добавить",
    "adding": "Добавление…",
    "stream": "Потоково",
    "streaming": "Потоковая передача",
    "remove": "Удалить",
    "download": "Скачать",
    "copyUrl": "Копировать URL",
    "copied": "Скопировано",
    "openDataset": "Открыть на Hugging Face",
    "addTitle": "Добавить этот файл на карту",
    "streamTitle": "Запрашивайте этот файл на месте, читая только видимые части. Весь файл никогда не копируется в DuckDB — лучше всего для больших файлов.",
    "removeTitle": "Убрать этот файл с карты",
    "downloadTitle": "Скачать этот файл",
    "copyUrlTitle": "Копировать URL этого файла",
    "openDatasetTitle": "Открыть страницу этого набора данных на huggingface.co",
    "unsupportedTitle": "GeoLibre не может отобразить этот формат — вместо этого скачайте его",
    "addError": "Не удалось добавить этот файл: {{message}}",
    "notRasterIndex": "Этот файл JSON не индексирует растры, поэтому размещать на карте нечего. Поддерживаются MosaicJSON и коллекции STAC.",
    "largeFileWarning": "Размер этого файла — {{size}}. Он передаётся потоком из источника, поэтому читаются только видимые части.",
    "streamHint": "Размер этого файла — {{size}}. «Добавить» копирует его в память; «Потоково» читает только видимые части.",
    "tooLargeToOpen": "Размер этого файла — {{size}}, что слишком много для открытия в браузере (предел {{limit}}). Скачайте его или используйте секционированную версию этого набора данных.",
    "tokenLabel": "Токен доступа",
    "tokenHint": "Для создания репозитория набора данных и загрузки файлов нужен токен доступа Hugging Face с правом записи. Он хранится только в этом браузере и отправляется исключительно на huggingface.co.",
    "tokenPlaceholder": "hf_…",
    "tokenSave": "Сохранить токен",
    "tokenClear": "Очистить",
    "tokenHelp": "Получить токен",
    "tokenChecking": "Проверка токена…",
    "tokenError": "Не удалось проверить этот токен: {{message}}",
    "signedInAs": "Выполнен вход как {{name}}",
    "readOnlyToken": "Этот токен только для чтения. Для загрузки создайте токен с правом записи.",
    "createHeading": "Создать репозиторий набора данных",
    "ownerLabel": "Владелец",
    "datasetNameLabel": "Имя набора данных",
    "datasetNamePlaceholder": "my-geodata",
    "privateLabel": "Приватный",
    "create": "Создать",
    "creating": "Создание…",
    "createdRepo": "{{repoId}} создан.",
    "createError": "Не удалось создать этот набор данных: {{message}}",
    "uploadHeading": "Загрузка файлов",
    "targetLabel": "Набор данных",
    "targetPlaceholder": "owner/dataset",
    "folderLabel": "Папка (необязательно)",
    "folderPlaceholder": "data/",
    "chooseFiles": "Выбрать файлы",
    "chooseLayer": "Выбрать слой",
    "chooseLayerTitle": "Загрузить объекты слоя карты в виде файла GeoJSON",
    "layerPickerHeading": "Загрузить слой как GeoJSON",
    "layerFeatures_one": "{{count}} объект",
    "layerFeatures_few": "{{count}} объекта",
    "layerFeatures_many": "{{count}} объектов",
    "layerFeatures_other": "{{count}} объекта",
    "layerOriginalFile": "Исходный файл",
    "layerUnavailable": "{{name}} больше недоступен для загрузки.",
    "remoteRasterNote": "Растры, загруженные по URL, не перечислены: их данных нет в браузере, и у них уже есть ссылка, которой можно поделиться. Загружать можно только файлы, открытые локально.",
    "noUploadableLayers": "Ни один слой на карте не содержит объектов, которые можно загрузить. Сначала добавьте векторный слой.",
    "clearSelection": "Очистить",
    "selectedFiles_one": "Выбран {{count}} файл ({{size}}).",
    "selectedFiles_few": "Выбрано {{count}} файла ({{size}}).",
    "selectedFiles_many": "Выбрано {{count}} файлов ({{size}}).",
    "selectedFiles_other": "Выбрано {{count}} файла ({{size}}).",
    "commitMessageLabel": "Сообщение коммита (необязательно)",
    "commitMessagePlaceholder": "Загружено с помощью GeoLibre",
    "upload": "Загрузить",
    "uploadPreparing": "Подготовка загрузки…",
    "uploadHashing": "Вычисление хеша {{name}} ({{index}}/{{total}})…",
    "uploadSending": "Загрузка {{name}} ({{index}}/{{total}})…",
    "uploadCommitting": "Фиксация коммита…",
    "uploadDone_one": "Загружен {{count}} файл.",
    "uploadDone_few": "Загружено {{count}} файла.",
    "uploadDone_many": "Загружено {{count}} файлов.",
    "uploadDone_other": "Загружено {{count}} файла.",
    "uploadError": "Не удалось выполнить загрузку: {{message}}",
    "fileTooLarge": "{{name}} превышает предел загрузки в {{limit}}.",
    "selectionTooLarge": "Выбранные файлы в сумме занимают {{size}}, что превышает предел в {{limit}} для одной загрузки. Загружайте их меньшими партиями.",
    "openUploaded": "Открыть набор данных",
    "rgbHeading": "Многоканальные изображения",
    "rgbHint": "Какие каналы становятся красным, зелёным и синим, когда у изображения три канала или больше. Нумерация с 1; панель стилей потом всё равно может изменить любой слой.",
    "bandR": "Красный",
    "bandG": "Зелёный",
    "bandB": "Синий",
    "colormapHeading": "Одноканальные изображения",
    "colormapHint": "Цветовая карта, применяемая, когда у изображения один канал.",
    "colormapLabel": "Цветовая карта",
    "engineHeading": "Движок отрисовки",
    "engineHint": "Какой обработчик декодирует изображения. В отличие от настроек выше, эта настройка задаётся не для каждого слоя: она применяется ко всем растрам на карте, включая уже добавленные.",
    "engineLabel": "Движок",
    "engineAuto": "Оставить без изменений",
    "engineGpu": "GPU (deck.gl)",
    "engineWasm": "Тайлер на WebAssembly",
    "engineTitiler": "Сервер TiTiler",
    "resetDefaults": "Сбросить к значениям по умолчанию"
  },
  "basemaps": {
    "confirmStyleReplace_one": "Переключение на «{{name}}» заменит весь стиль карты и удалит наложенную базовую карту, которую вы добавили. Продолжить?",
    "confirmStyleReplace_few": "Переключение на «{{name}}» заменит весь стиль карты и удалит {{count}} наложенные базовые карты, которые вы добавили. Продолжить?",
    "confirmStyleReplace_many": "Переключение на «{{name}}» заменит весь стиль карты и удалит {{count}} наложенных базовых карт, которые вы добавили. Продолжить?",
    "confirmStyleReplace_other": "Переключение на «{{name}}» заменит весь стиль карты и удалит {{count}} наложенной базовой карты, которую вы добавили. Продолжить?"
  },
  "annotations": {
    "toolbar": "Инструменты аннотаций",
    "layerName": "Аннотации",
    "elementsPanelTitle": "Элементы",
    "tools": {
      "text": "Текст",
      "arrow": "Стрелка",
      "rectangle": "Выделение прямоугольником",
      "ellipse": "Выделение эллипсом",
      "freehand": "Произвольное выделение",
      "pin": "Маркер-булавка",
      "sticky_note": "Стикер",
      "placed_image": "Размещённое изображение"
    },
    "color": "Цвет аннотации",
    "width": "Толщина линии",
    "widthOptions": {
      "thin": "Тонкая",
      "medium": "Средняя",
      "thick": "Толстая"
    },
    "deleteLast": "Удалить последнюю аннотацию",
    "clearAll": "Очистить все аннотации",
    "textPlaceholder": "Введите текст, Enter для размещения",
    "pinTitlePrompt": "Заголовок",
    "pinDescPrompt": "Описание",
    "stickyNotePrompt": "Содержимое заметки",
    "imageUrlPrompt": "URL изображения",
    "cancel": "Отмена",
    "saveElement": "Сохранить элемент",
    "atPoint": "В точке",
    "pinnedToExtent": "Привязано к охвату"
  },
  "pythonConsole": {
    "title": "Консоль Python",
    "resize": "Изменить размер консоли Python",
    "clear": "Очистить вывод",
    "collapse": "Свернуть консоль Python",
    "expand": "Развернуть консоль Python",
    "close": "Закрыть консоль Python",
    "run": "Выполнить",
    "runHint": "Выполнить (Ctrl/Cmd+Enter)",
    "completions": "Автодополнения",
    "placeholder": "Введите Python здесь · Ctrl/Cmd+Enter для запуска · Tab для автодополнения · ↑/↓ для истории",
    "intro": "Консоль Python готова. Используйте объект `geolibre` для управления картой скриптом, например geolibre.get_center(). Tab автодополняет, ↑/↓ вызывают предыдущие команды, а `await geolibre.load_package(\"numpy\")` добавляет пакеты.",
    "loadFailed": "Не удалось загрузить среду выполнения Python.",
    "showEditor": "Показать редактор",
    "hideEditor": "Скрыть редактор",
    "resizeEditor": "Изменить размер редактора",
    "fileNew": "Новый скрипт",
    "fileOpen": "Открыть скрипт…",
    "fileSave": "Сохранить скрипт (Ctrl/Cmd+S)",
    "fileSaveAs": "Сохранить скрипт как…",
    "clearEditor": "Очистить редактор",
    "runScript": "Выполнить скрипт или выделенное (Ctrl/Cmd+Enter)",
    "untitled": "untitled.py",
    "discardChanges": "Отменить несохранённые изменения текущего скрипта?",
    "editorPlaceholder": "Напишите здесь многострочный скрипт Python. Ctrl/Cmd+Enter выполняет его (или выделенное) в консоли; Tab делает отступ; Ctrl+Space автодополняет."
  },
  "notebook": {
    "title": "Блокнот",
    "resize": "Изменить размер панели блокнота",
    "collapse": "Свернуть блокнот",
    "expand": "Развернуть блокнот",
    "close": "Закрыть блокнот",
    "copyServerUrl": "Копировать URL сервера для внешних клиентов (VS Code…)",
    "serverUrlCopied": "URL сервера скопирован",
    "loading": "Загрузка блокнота…",
    "loadFailed": "Не удалось загрузить блокнот."
  },
  "dashboard": {
    "title": "Панель мониторинга",
    "resize": "Изменить размер панели мониторинга",
    "collapse": "Свернуть панель мониторинга",
    "expand": "Развернуть панель мониторинга",
    "close": "Закрыть панель мониторинга",
    "columns": "Столбцы",
    "addWidget": "Добавить виджет",
    "widgetCount_one": "{{count}} виджет",
    "widgetCount_few": "{{count}} виджета",
    "widgetCount_many": "{{count}} виджетов",
    "widgetCount_other": "{{count}} виджета",
    "empty": "Пока нет виджетов. Добавьте диаграмму для сводки по слою.",
    "emptyNoLayers": "Совместимых слоёв не найдено. Добавьте векторный слой или слой запроса DuckDB в свой проект с помощью меню «Добавить данные» выше, затем вернитесь сюда, чтобы начать создавать диаграммы.",
    "noLayersHint": "Сначала добавьте векторный слой или слой запроса DuckDB.",
    "layerMissing": "Слой недоступен",
    "noData": "У этого слоя нет атрибутов, пригодных для построения диаграмм.",
    "selectorMatches_one": "Совпадений: {{count}} из {{total}}",
    "selectorMatches_other": "Совпадений: {{count}} из {{total}}",
    "selectorMatches_many": "Совпадений: {{count}} из {{total}}",
    "selectorMatches_few": "Совпадений: {{count}} из {{total}}",
    "selectorClear": "Очистить",
    "moveBack": "Переместить назад",
    "moveForward": "Переместить вперёд",
    "editWidget": "Изменить виджет",
    "removeWidget": "Удалить виджет",
    "chartType": {
      "histogram": "Гистограмма",
      "scatter": "Точечная диаграмма",
      "bar": "Столбчатая диаграмма",
      "line": "Линейная диаграмма",
      "box": "Ящичковая диаграмма",
      "pie": "Круговая диаграмма",
      "indicator": "Индикатор",
      "selector": "Селектор",
      "list": "Список"
    },
    "aggregate": {
      "count": "Количество",
      "sum": "Сумма",
      "mean": "Среднее"
    },
    "chart": {
      "emptyNumeric": "Нет числовых значений для построения.",
      "emptyScatter": "Ни в одной строке оба поля не заданы числами.",
      "emptyBar": "Нет строк для группировки.",
      "emptyPie": "Нет положительных значений для диаграммы.",
      "pieCaptionCount_one": "количество строк · {{count}} категория",
      "pieCaptionCount_few": "количество строк · {{count}} категории",
      "pieCaptionCount_many": "количество строк · {{count}} категорий",
      "pieCaptionCount_other": "количество строк · {{count}} категории",
      "pieCaptionSum_one": "сумма · {{count}} категория",
      "pieCaptionSum_few": "сумма · {{count}} категории",
      "pieCaptionSum_many": "сумма · {{count}} категорий",
      "pieCaptionSum_other": "сумма · {{count}} категории"
    },
    "editor": {
      "addTitle": "Добавить виджет",
      "editTitle": "Изменить виджет",
      "description": "Выберите слой, тип диаграммы и поля для построения.",
      "noLayers": "Нет слоёв, пригодных для построения диаграмм. Сначала добавьте векторный слой или слой запроса DuckDB.",
      "noFields": "У этого слоя нет числовых или категориальных полей для диаграммы.",
      "layer": "Слой",
      "chartType": "Тип диаграммы",
      "field": "Поле",
      "bins": "Интервалы",
      "xAxis": "Ось X",
      "yAxis": "Ось Y",
      "category": "Категория",
      "aggregate": "Агрегация",
      "value": "Значение",
      "prefix": "Префикс",
      "suffix": "Суффикс",
      "multiSelect": "Разрешить множественный выбор",
      "listColumns": "Столбцы",
      "sortBy": "Сортировать по",
      "sortDir": "Направление",
      "ascending": "По возрастанию",
      "descending": "По убыванию",
      "limit": "Лимит строк",
      "titleLabel": "Заголовок",
      "titlePlaceholder": "Необязательный заголовок",
      "color": "Цвет",
      "colorReset": "Сбросить",
      "colorDefault": "Цвета диаграммы по умолчанию",
      "cancel": "Отмена",
      "save": "Сохранить"
    },
    "indicatorAggregation": {
      "count": "Количество",
      "sum": "Сумма",
      "mean": "Среднее",
      "min": "Минимум",
      "max": "Максимум",
      "median": "Медиана"
    }
  },
  "assistant": {
    "title": "ИИ-ассистент",
    "resize": "Изменить размер панели ассистента",
    "clear": "Очистить беседу",
    "close": "Закрыть ассистента",
    "send": "Отправить",
    "sendHint": "Отправить (Ctrl/Cmd+Enter)",
    "stop": "Стоп",
    "placeholder": "Спросите о своих данных, например «покажи страны с населением более 50 миллионов» · Ctrl/Cmd+Enter для отправки",
    "intro": "Общайтесь со своими данными. Я могу выполнять пространственный SQL, добавлять или удалять слои, изменять их стиль и перемещать карту — каждое изменение можно отменить. Попробуйте «раскрась страны по населению градиентом красного».",
    "setupTitle": "Настройте ИИ-ассистента",
    "setupStatus": "Ассистенту нужен провайдер ИИ для работы. Добавьте учётные данные для любого провайдера ниже, и панель переключится в режим чата сразу после сохранения.",
    "setupProviders": "Добавьте учётные данные для любого провайдера",
    "setupOpenSettings": "Открыть Настройки → Провайдеры ИИ",
    "thinking": "Работаю…",
    "toolError": "не удалось",
    "provider": "Провайдер LLM",
    "profile": "Профиль ИИ",
    "deploymentProxy": "Прокси развёртывания",
    "model": "Модель",
    "codeApprovalTitle": "Запустить код ассистента?",
    "codeApprovalBody": "Ассистент хочет выполнить код {{language}} в приложении. Сначала проверьте его — он может изменить карту и получить доступ к данным приложения.",
    "codeApprovalAlways": "Разрешить код ассистента до конца этого сеанса",
    "codeApprovalRun": "Запустить",
    "codeApprovalDecline": "Отмена"
  },
  "storymap": {
    "title": "История на карте",
    "description": "Создайте историю с прокруткой из глав карты. Каждая глава фиксирует вид камеры и текст.",
    "chapters": "Главы ({{count}})",
    "addChapter": "Добавить главу",
    "empty": "Пока нет глав. Переместитесь по карте, затем добавьте главу, чтобы зафиксировать текущий вид.",
    "defaultChapterTitle": "Глава {{index}}",
    "untitledChapter": "Глава без названия",
    "present": "Представить",
    "exportHtml": "Экспорт HTML",
    "exitPresentation": "Выход",
    "preview": "Перелететь к этой главе",
    "captureView": "Задать по текущему виду",
    "composeOnMap": "Составить на карте",
    "resizeDialog": "Изменить размер диалога",
    "composeMode": {
      "title": "Составление главы",
      "hint": "Перемещайте, масштабируйте и наклоняйте карту, затем сохраните вид для этой главы.",
      "save": "Сохранить вид и вернуться к истории на карте",
      "cancel": "Отмена",
      "waiting": "Дождитесь завершения перемещения карты"
    },
    "moveUp": "Переместить вверх",
    "moveDown": "Переместить вниз",
    "onEnter": "При входе",
    "onExit": "При выходе",
    "addEffect": "Добавить эффект слоя",
    "field": {
      "title": "Заголовок",
      "subtitle": "Подзаголовок",
      "byline": "Автор",
      "footer": "Подвал",
      "theme": "Тема панели",
      "showMarkers": "Показывать маркеры",
      "markerColor": "Цвет маркера",
      "inset": "Врезка миникарты",
      "hideChapterNav": "Скрыть список глав",
      "startView": "Включить начальный вид",
      "closingSlide": "Включить заключительный слайд",
      "chapterTitle": "Заголовок главы",
      "description": "Описание (разрешён HTML)",
      "image": "URL изображения",
      "alignment": "Выравнивание панели",
      "animation": "Анимация карты",
      "hidden": "Скрыть панель",
      "rotate": "Вращать камеру",
      "imagePlaceholder": "https://example.com/image.jpg"
    },
    "theme": {
      "dark": "Тёмная",
      "light": "Светлая"
    },
    "align": {
      "left": "Слева",
      "center": "По центру",
      "right": "Справа",
      "full": "На всю ширину"
    },
    "inset": {
      "topLeft": "Вверху слева",
      "topRight": "Вверху справа",
      "bottomLeft": "Внизу слева",
      "bottomRight": "Внизу справа"
    },
    "slide": {
      "blank": "Пустой экран",
      "black": "Чёрный экран",
      "global": "Общий вид",
      "startAdjacent": "Предпросмотр первой главы",
      "endAdjacent": "Задержка на последней главе"
    },
    "loadSample": "Загрузить пример истории",
    "htmlFile": "HTML",
    "handout": {
      "button": "Раздаточный материал (PDF)",
      "title": "Генератор PDF-раздаточного материала",
      "description": "Экспортировать выбранные виды глав в многостраничный PDF-раздаточный материал.",
      "screens": "Экраны ({{count}}/{{total}})",
      "selectAll": "Выбрать все",
      "selectNone": "Снять выбор",
      "paperSize": "Размер бумаги",
      "orientation": "Ориентация",
      "portrait": "Книжная",
      "landscape": "Альбомная",
      "documentTitle": "Заголовок документа",
      "documentTitlePlaceholder": "Заголовок, показанный вверху каждой страницы",
      "subtitle": "Подзаголовок",
      "subtitlePlaceholder": "Подзаголовок, показанный под заголовком на каждой странице",
      "byline": "Автор",
      "bylinePlaceholder": "Автор или указание авторства",
      "footerText": "Текст подвала",
      "footerPlaceholder": "Подвал, показанный внизу каждой страницы",
      "startSlide": "Начальный слайд",
      "endSlide": "Заключительный слайд",
      "generate": "Создать PDF",
      "stop": "Стоп",
      "cancelled": "Экспорт отменён.",
      "progress": "Захват вида {{current}} из {{total}}…",
      "pdfFile": "PDF-документ",
      "noMap": "Карта ещё не готова. Повторите попытку через мгновение.",
      "noneSelected": "Выберите хотя бы один экран для экспорта."
    },
    "opacityLabel": "Непрозрачность",
    "toggleNav": "Переключить список глав",
    "chapterNav": "Главы истории",
    "durationLabel": "Переход (мс)",
    "dragHint": "Перетащите для перемещения (двойной щелчок для сброса)",
    "resizeHint": "Перетащите для изменения размера",
    "import": "Импорт",
    "importJson": "Импортировать JSON…",
    "importCsv": "Импортировать CSV…",
    "exportData": "Экспорт",
    "exportJson": "Экспорт JSON",
    "exportCsv": "Экспорт CSV",
    "reset": "Сбросить",
    "resetTitle": "Очистить историю и начать заново",
    "resetConfirm": "Очистить эту историю на карте? Все главы и настройки будут удалены, чтобы вы могли начать собственную."
  },
  "network": {
    "title": "Сетевой анализ",
    "description": "Изохроны, зоны обслуживания и матрицы затрат «начало-конец» из ваших точечных слоёв.",
    "heading": "Сеть",
    "run": "Выполнить",
    "outputPlaceholder": "Здесь появится результат.",
    "endpointNotice": "Координаты точек отправляются на сервер маршрутизации ({{endpoint}}). По умолчанию используется общий публичный сервер Valhalla (FOSSGIS), имеющий ограничение на количество запросов. Для интенсивного использования введите URL собственного сервера в поле «Сервер маршрутизации (Valhalla)» выше."
  },
  "statistics": {
    "title": "Пространственная статистика",
    "description": "Пространственная автокорреляция, анализ горячих точек и меры плотности. Каждый инструмент выполняется на стороне клиента для ваших слоёв GeoJSON.",
    "heading": "Пространственная статистика",
    "run": "Выполнить",
    "requiredFieldLegend": "Отмечает обязательное поле",
    "outputPlaceholder": "Здесь появится результат."
  },
  "processing": {
    "filePicker": {
      "filePath": "Путь к файлу",
      "chooseFile": "Выбрать файл",
      "chooseFilePlaceholder": "Выбрать файл",
      "chooseInputFile": "Выбрать входной файл",
      "chooseOutputFile": "Выбрать выходной файл"
    },
    "searchTools": "Поиск инструментов",
    "refreshCatalog": "Обновить каталог",
    "increaseValue": "Увеличить значение",
    "decreaseValue": "Уменьшить значение",
    "distance": {
      "unitLabel": "Единица расстояния",
      "units": {
        "degrees": "Градусы",
        "meters": "Метры",
        "kilometers": "Километры",
        "feet": "Футы",
        "miles": "Мили"
      },
      "north": "{{latitude}}°с. ш.",
      "south": "{{latitude}}°ю. ш.",
      "equator": "экваторе",
      "geographicNote": "Выбранные слои используют географическую CRS (WGS84), поэтому расстояния указаны в градусах. Выберите единицу рядом с полем расстояния, чтобы вводить метры, или перепроецируйте данные в проекционную CRS для точных результатов.",
      "converted": "Передаётся инструменту как {{degrees}}°, пересчитано на {{latitude}}. Величина градуса зависит от широты и направления, поэтому это приблизительное значение.",
      "convertedEmpty": "Значения будут пересчитаны в градусы на {{latitude}}. Величина градуса зависит от широты и направления, поэтому это приблизительное значение.",
      "notANumber": "Это не число, поэтому значение передаётся инструменту как есть, без пересчёта. Используйте простое десятичное число, например 12000 или 1.5."
    },
    "history": {
      "title": "История обработки",
      "description": "Все запуски обработки в этом проекте, новые сверху. Повторно запустите инструмент, откройте его с теми же параметрами или скопируйте запуск в формате JSON или Python.",
      "empty": "Пока не записано ни одного запуска обработки. Запустите инструмент из меню «Обработка», и он появится здесь.",
      "rerun": "Повторить",
      "editRerun": "Изменить и повторить",
      "copyJson": "Копировать JSON",
      "copyPython": "Копировать Python",
      "copied": "Скопировано",
      "clear": "Очистить историю",
      "count_one": "Записан {{count}} запуск",
      "count_few": "Записано {{count}} запуска",
      "count_many": "Записано {{count}} запусков",
      "count_other": "Записано {{count}} запуска",
      "toolUnavailable": "Инструмент «{{toolId}}» больше недоступен"
    },
    "modelBuilder": {
      "moveStepUp": "Переместить шаг вверх",
      "moveStepDown": "Переместить шаг вниз",
      "removeStep": "Удалить шаг",
      "title": "Пакетная обработка и модели",
      "description": "Запустите векторный инструмент для множества слоёв или объедините инструменты в переиспользуемую модель, сохраняемую вместе с проектом.",
      "tabBatch": "Пакет",
      "tabModels": "Модели",
      "outputPlaceholder": "Здесь появится вывод.",
      "tool": "Инструмент",
      "sharedParameters": "Общие параметры",
      "noExtraParameters": "У этого инструмента нет дополнительных параметров.",
      "inputLayers": "Входные слои",
      "selectAll": "Выбрать все",
      "clearSelection": "Очистить",
      "noCompatibleLayers": "Нет совместимых слоёв GeoJSON.",
      "newModel": "Новая модель",
      "noSavedModels": "Сохранённых моделей пока нет.",
      "untitledModel": "Модель без названия",
      "modelName": "Название модели",
      "emptyPipelineHint": "Добавьте шаг, чтобы начать построение конвейера. Первый шаг читает входной слой; каждый следующий шаг получает вывод предыдущего.",
      "addStep": "Добавить шаг",
      "runModel": "Запустить модель",
      "deleteModel": "Удалить",
      "inputPreviousStep": "Вход: ← вывод предыдущего шага",
      "unknownTool": "Неизвестный инструмент «{{id}}»",
      "noParameters": "Нет параметров."
    },
    "parameterField": {
      "selectLayer": "Выберите слой...",
      "selectField": "Выберите поле...",
      "selectLayerFirst": "Сначала выберите слой"
    },
    "whitebox": {
      "run": "Выполнить",
      "running": "Выполнение…",
      "runLocal": "Выполнить локально (WASM)",
      "runLocalHint": "Выполнить локально в WebAssembly (без сайдкара Python)",
      "runningLocally": "Выполнение локально с WebAssembly. Сайдкар не требуется.",
      "copyLink": "Копировать ссылку",
      "copyLinkCopied": "Скопировано!",
      "copyLinkHint": "Скопировать ссылку, которая открывает этот инструмент с текущими настройками",
      "copyLinkFailed": "Не удалось скопировать ссылку в буфер обмена.",
      "catalogSnapshotError": "Не удалось загрузить снимок каталога Whitebox.",
      "localRunnerError": "Не удалось загрузить локальный (WASM) исполнитель инструментов. Обновите страницу и повторите попытку, либо используйте сайдкар, если он доступен.",
      "output": {
        "geojson": "GeoJSON (добавить на карту)",
        "geoparquet": "GeoParquet (скачать, сохраняет СК)",
        "flatgeobuf": "FlatGeobuf (скачать, сохраняет СК)",
        "shapefile": "Шейп-файл (скачать, сохраняет СК)",
        "projectedHint": "Сохранено в папку загрузок в целевой СК. Карта отображает только EPSG:4326, поэтому спроецированный результат не добавляется как слой."
      },
      "filterBySource": "Фильтр по источнику",
      "allSources": "Все источники",
      "geolibreTools": "Инструменты GeoLibre",
      "whiteboxTools": "Инструменты Whitebox",
      "toolbox": "Набор инструментов Whitebox",
      "checkingRuntime": "Проверка среды выполнения.",
      "toolsAvailable_one": "Доступен {{count}} инструмент.",
      "toolsAvailable_few": "Доступно {{count}} инструмента.",
      "toolsAvailable_many": "Доступно {{count}} инструментов.",
      "toolsAvailable_other": "Доступно {{count}} инструмента.",
      "runtimeUnavailable": "Среда выполнения Whitebox недоступна.",
      "useMapExtent": "Использовать охват карты",
      "fromLayer": "Из слоя",
      "drawBbox": "Нарисовать на карте",
      "drawingBbox": "Рисование…",
      "drawBboxHint": "Нарисуйте рамку на карте, чтобы задать ограничивающую рамку. Нажмите Esc для отмены.",
      "mapExtentPlaceholder": "minX,minY,maxX,maxY",
      "mapExtentUnavailable": "Вид карты пока недоступен. Дождитесь загрузки карты и повторите попытку.",
      "mapExtentInvalid": "Текущий вид карты нельзя использовать как ограничивающую рамку: он пересекает меридиан 180° или выходит за допустимые границы долготы/широты. Измените вид и повторите попытку.",
      "extentLabel": "Область интереса",
      "extentNorth": "Север",
      "extentSouth": "Юг",
      "extentWest": "Запад",
      "extentEast": "Восток",
      "extentHint": "Возьмите рамку из текущего вида карты или начертите её на карте, вместо того чтобы вводить каждую границу вручную. Координаты подставляются в WGS84 (EPSG:4326).",
      "noToolSelected": "Инструмент не выбран",
      "optionDefault": "По умолчанию",
      "optionPath": "Путь",
      "selectedLayer": "Выбранный слой",
      "filePath": "Путь к файлу",
      "auto": "Автоматически",
      "chooseOutputPath": "Выберите путь для вывода",
      "chooseInputPath": "Выберите путь ко входным данным",
      "categoryGeneral": "Общие",
      "categoryAll": "Все ({{total}})",
      "errorLoadSnapshot": "Не удалось загрузить снимок каталога Whitebox.",
      "errorLoadLive": "Не удалось загрузить актуальный каталог.",
      "errorConnect": "Не удалось подключиться к sidecar.",
      "errorPoll": "Не удалось опросить задание.",
      "errorStartTool": "Не удалось запустить инструмент Whitebox.",
      "errorStartSidecar": "Не удалось запустить sidecar GeoLibre.",
      "errorStopSidecar": "Не удалось остановить sidecar GeoLibre.",
      "noToolsFound": "Инструменты не найдены.",
      "noParameters": "У этого инструмента нет параметров.",
      "noOutput": "Вывода пока нет.",
      "enabled": "Включено",
      "requiredSuffix": " | обязательно",
      "selectField": "Выберите поле",
      "fieldName": "Имя поля",
      "crs": {
        "browse": "Обзор",
        "codePlaceholder": "Код EPSG",
        "searchLabel": "Поиск систем координат",
        "searchPlaceholder": "Поиск по названию или коду EPSG",
        "geographic": "Географическая",
        "projected": "Проекционная",
        "noResults": "Подходящей системы координат нет. Любой код EPSG всё равно можно ввести вручную."
      },
      "vectorUnitsNote": "Векторные слои читаются в WGS84, поэтому значения расстояния, шага и допуска задаются в градусах, а не в метрах. 1° — примерно 111 км, а 0,001° — примерно 111 м."
    },
    "sidecar": {
      "unavailableTitle": "Сервер обработки недоступен.",
      "showHelp": "Показать, что это значит и как это исправить",
      "hideHelp": "Скрыть подробности",
      "intro": "Сервер обработки — это необязательный локальный помощник ({{sidecarUrl}}), который выполняет более тяжёлые инструменты на Python в фоновом режиме, отдельно от приложения. Большинству инструментов Whitebox он не нужен: они могут полностью работать в вашем браузере с помощью WebAssembly.",
      "wasmTipTitle": "Работа без сервера",
      "wasmTip": "Включите «Выполнить локально (WASM)», чтобы запускать инструменты Whitebox в браузере. Сервер, установка или настройка не требуются.",
      "runLocallyButton": "Выполнить локально (WASM)",
      "troubleshootingTitle": "Всё же хотите использовать сервер?",
      "stepStartServerDesktop": "Нажмите «Запустить сервер» на панели списка инструментов, чтобы запустить его, затем подождите несколько секунд, пока он не станет доступен.",
      "stepStartServerBrowser": "Сервер можно запустить только из настольного приложения GeoLibre. В браузере вместо этого оставьте включённым «Выполнить локально (WASM)».",
      "stepCheckPort": "Убедитесь, что брандмауэр, антивирус или сетевая политика не блокируют локальный порт {{port}}.",
      "stepRestart": "Если сервер неожиданно остановился, перезапустите настольное приложение GeoLibre и снова откройте этот диалог."
    },
    "vectorTools": {
      "title": "Векторные инструменты",
      "description": "Выполняйте распространённые операции над векторной геометрией ваших слоёв GeoJSON.",
      "engine": "Движок",
      "engineClient": "Клиент (Turf.js)",
      "engineSidecar": "Sidecar (GeoPandas)",
      "enginePyodide": "Python (Pyodide)",
      "checkingSidecar": "Проверка доступности sidecar...",
      "sidecarUnavailableClient": "Sidecar с GeoPandas недоступен. Запустите sidecar с дополнением vector или переключитесь на клиентский движок.",
      "sidecarUnavailablePyodide": "Sidecar с GeoPandas недоступен. Запустите sidecar с дополнением vector или переключитесь на Python (Pyodide).",
      "pyodideNote": "Запускает GeoPandas в вашем браузере. При первом запуске загружается среда выполнения Python (однократно, требуется подключение к интернету).",
      "run": "Выполнить",
      "outputPlaceholder": "Здесь появится вывод.",
      "resolutionRange": "Разрешение (0-{{max}})"
    }
  },
  "segmentation": {
    "title": "ИИ-сегментация",
    "description": "Превратите снимки в векторные объекты с помощью SAM3 (segment-geospatial). Выберите GeoTIFF, опишите, что сегментировать, и получите полигоны в виде нового слоя.",
    "startServer": "Запустить сервер",
    "downloadDesktop": "Скачать настольное приложение",
    "imageLabel": "Изображение (GeoTIFF)",
    "imagePlaceholder": "Выбрать GeoTIFF…",
    "chooseImage": "Выбрать изображение",
    "modeLabel": "Режим",
    "modeText": "Текстовый запрос",
    "modeAutomatic": "Автоматически (всё)",
    "promptLabel": "Запрос",
    "promptPlaceholder": "например, деревья, здания, вода",
    "confidenceLabel": "Порог уверенности",
    "segment": "Сегментировать",
    "status": {
      "checking": "Проверка сервиса ИИ-сегментации…",
      "unavailableDesktop": "Сервис ИИ-сегментации ещё не запущен. Запустите сервер GeoLibre с включённым segment-geospatial, чтобы использовать его.",
      "unavailableWeb": "ИИ-сегментация недоступна в браузере. Используйте настольное приложение GeoLibre для запуска."
    },
    "error": {
      "chooseImage": "Выберите изображение (GeoTIFF) для сегментации.",
      "enterPrompt": "Введите текстовый запрос, например «деревья» или «здания».",
      "startServer": "Не удалось запустить сайдкар GeoLibre.",
      "failed": "Сегментация не удалась."
    },
    "noObjects": "Объекты не найдены.",
    "added": "Добавлено объектов: {{count}} как «{{name}}».",
    "layerName": "Сегментация: {{prompt}}",
    "layerNameDefault": "Сегментация",
    "sidecar": {
      "title": "Не удалось запустить сервер ИИ-сегментации.",
      "intro": "ИИ-сегментация работает на локальном сервере-помощнике ({{sidecarUrl}}), который размещает модель SAM3 из segment-geospatial. Он выполняет Python в фоновом режиме, отдельно от приложения, и не входит в веб-сборку.",
      "troubleshootingTitle": "Как запустить сервер",
      "stepInstall": "Убедитесь, что сервер GeoLibre установлен с включённым бэкендом segment-geospatial, чтобы модель сегментации была доступна.",
      "stepStartServerDesktop": "Нажмите «Запустить сервер» выше, чтобы запустить его, затем подождите несколько секунд, пока модель не станет доступна."
    }
  },
  "objectDetection": {
    "title": "Обнаружение объектов",
    "description": "Запустите модель YOLO, экспортированную в ONNX, для GeoTIFF полностью в браузере. Обнаруженные рамки привязываются к координатам, а каждый класс добавляется как отдельный слой.",
    "hint": "Используйте встроенную модель COCO (скачивается и кэшируется один раз) или свою собственную ONNX YOLOv5/v8/v11. Обнаружение выполняется локально в браузере. Встроенные модели обнаруживают повседневные объекты; для аэрофотоснимков используйте собственную модель, обученную на снимках сверху.",
    "imageLabel": "Изображение (GeoTIFF)",
    "imagePlaceholder": "Выберите GeoTIFF…",
    "chooseImage": "Выбрать изображение",
    "modelLabel": "Модель",
    "modelSourceBuiltin": "Встроенная (скачать)",
    "modelSourceLocal": "Локальный файл",
    "builtinModelLabel": "Встроенная модель",
    "modelFileLabel": "Файл модели (ONNX)",
    "modelPlaceholder": "Выберите модель .onnx…",
    "chooseModel": "Выбрать модель",
    "downloadingModel": "Скачивание модели…",
    "classNamesLabel": "Имена классов (через запятую, необязательно)",
    "classNamesPlaceholder": "напр. машина, дерево, здание",
    "confidenceLabel": "Уверенность",
    "iouLabel": "IoU (NMS)",
    "inputSizeLabel": "Размер входа",
    "detect": "Обнаружить",
    "noObjects": "Объекты не обнаружены. Попробуйте снизить порог уверенности.",
    "added": "Добавлено обнаружений: {{count}} по {{classes}} классам.",
    "layerName": "Обнаружение: {{class}}",
    "error": {
      "chooseImage": "Выберите изображение (GeoTIFF) для запуска обнаружения.",
      "photoLocation": "На этой фотографии нет пригодных координат GPS. Выберите фотографию с геометкой.",
      "chooseModel": "Выберите модель YOLO, экспортированную в ONNX (.onnx).",
      "downloadModel": "Не удалось скачать модель. Проверьте соединение и повторите попытку.",
      "failed": "Не удалось выполнить обнаружение."
    }
  },
  "segmentEverything": {
    "title": "Сегментировать всё",
    "description": "Автоматически запустите SlimSAM для GeoTIFF полностью в браузере. Каждый обнаруженный объект становится координатно-привязанным полигоном, добавляемым как один слой.",
    "hint": "По изображению распределяется сетка точек, которые сегментируются с помощью SlimSAM (скачивается и кэшируется один раз). Без кликов и меток — более плотные сетки находят больше объектов, но работают дольше.",
    "imageLabel": "Изображение (GeoTIFF)",
    "imagePlaceholder": "Выберите GeoTIFF…",
    "chooseImage": "Выбрать изображение",
    "gridLabel": "Сетка",
    "qualityLabel": "Качество",
    "minSizeLabel": "Мин. размер %",
    "run": "Сегментировать",
    "downloadingModel": "Скачивание модели…",
    "progress": "Сегментирование… {{done}}/{{total}}",
    "noObjects": "Объекты не сегментированы. Попробуйте более плотную сетку или более низкий порог качества.",
    "added": "Добавлено сегментов: {{count}}.",
    "layerName": "Сегменты",
    "error": {
      "chooseImage": "Выберите изображение (GeoTIFF) для сегментирования.",
      "downloadModel": "Не удалось скачать модель. Проверьте соединение и повторите попытку.",
      "failed": "Не удалось выполнить сегментирование."
    }
  },
  "pluginPanel": {
    "expand": "Развернуть панель",
    "collapse": "Свернуть панель",
    "close": "Закрыть панель",
    "resize": "Изменить размер панели",
    "moveLeft": "Переместить панель влево",
    "moveRight": "Переместить панель вправо",
    "mergeIntoStyleRail": "Объединить с панелью стилей",
    "mergeIntoLayersRail": "Объединить с панелью слоёв",
    "detach": "Отсоединить как перемещаемую панель",
    "collapsedLabel": "{{title}} (свёрнуто)"
  },
  "sharedRail": {
    "label": "Боковая панель",
    "layers": "Слои",
    "style": "Стиль",
    "expand": "Развернуть {{title}}",
    "collapse": "Свернуть {{title}}"
  },
  "attributeTable": {
    "title": "Таблица атрибутов",
    "resize": "Изменить размер таблицы атрибутов",
    "editValues": "Редактировать значения атрибутов",
    "editTitleFinishGeometry": "Завершите редактирование геометрии, чтобы редактировать атрибуты",
    "editTitleReadOnly": "Редактирование недоступно для слоёв «Добавить векторный слой»",
    "editTitleUseSaveCancel": "Используйте «Сохранить» или «Отмена», чтобы завершить редактирование",
    "exitEditMode": "Выйти из режима редактирования",
    "editTitleDuckdb": "Редактировать отображаемые атрибуты запроса DuckDB в памяти",
    "saveEdits": "Сохранить изменения атрибутов",
    "saveTitleInvalid": "Исправьте недопустимый JSON перед сохранением",
    "saveTitleDuckdb": "Сохранить изменения атрибутов DuckDB в памяти",
    "addFieldTitle": "Добавить новое поле",
    "addField": "Добавить поле",
    "fieldCalculatorTitle": "Вычислить значения поля по выражению",
    "fieldCalculator": "Калькулятор полей",
    "manageFieldsTitle": "Показать или скрыть поля",
    "manageFields": "Управление полями",
    "columnExplorerTitle": "Изучить все поля сразу",
    "columnExplorerTitleDisabled": "Обозреватель столбцов требует векторного слоя или слоя запроса DuckDB",
    "columnExplorer": "Обозреватель столбцов",
    "statisticsTitle": "Сводная статистика по полям",
    "statisticsTitleDisabled": "Статистика требует векторного слоя или слоя запроса DuckDB",
    "statistics": "Статистика полей",
    "chartsTitle": "Построить диаграммы по числовым полям",
    "chartsTitleDisabled": "Диаграммы требуют векторного слоя или слоя запроса DuckDB",
    "charts": "Диаграммы",
    "dashboardTitle": "Открыть панель мониторинга для создания виджетов диаграмм",
    "dashboard": "Панель мониторинга",
    "exportSelectedLayer": "Экспортировать выбранный слой",
    "exportTitleDisabled": "Экспорт требует слоя на основе GeoJSON",
    "cancelEdits": "Отменить изменения атрибутов",
    "searchPlaceholder": "Поиск по атрибутам...",
    "searchAria": "Поиск по атрибутам",
    "clearSelectedFeature": "Снять выбор объекта",
    "statusFeatures_one": "{{count}} объект",
    "statusFeatures_few": "{{count}} объекта",
    "statusFeatures_many": "{{count}} объектов",
    "statusFeatures_other": "{{count}} объекта",
    "statusShown_one": "{{count}} показан",
    "statusShown_few": "{{count}} показано",
    "statusShown_many": "{{count}} показано",
    "statusShown_other": "{{count}} показано",
    "statusSelected_one": "{{count}} выбран",
    "statusSelected_few": "{{count}} выбрано",
    "statusSelected_many": "{{count}} выбрано",
    "statusSelected_other": "{{count}} выбрано",
    "featureViewAria": "Просмотр объекта",
    "showAllFeatures": "Показать все объекты",
    "showSelectedFeatures": "Показать выбранные ({{count}})",
    "expand": "Развернуть таблицу атрибутов",
    "collapse": "Свернуть таблицу атрибутов",
    "close": "Закрыть таблицу атрибутов",
    "newFieldPlaceholder": "например, категория",
    "defaultValuePlaceholder": "Оставьте пустым для пустого значения",
    "newFieldNamePlaceholder": "Имя нового поля",
    "showFields": "Показать поля",
    "noFields": "Нет полей",
    "showAllFields": "Показать все поля",
    "buttons": {
      "edit": "Редактировать",
      "calculate": "Вычислить",
      "fields": "Поля",
      "explore": "Изучить",
      "statistics": "Статистика",
      "export": "Экспорт"
    },
    "chart": {
      "field": "Поле",
      "xAxis": "Ось X",
      "yAxis": "Ось Y",
      "category": "Категория",
      "value": "Значение",
      "title": "Диаграммы",
      "description": "Визуализация полей в «{{layer}}».",
      "noChartableFields": "В этом слое нет числовых или категориальных полей для построения диаграммы.",
      "chartType": "Тип диаграммы",
      "typeHistogram": "Гистограмма",
      "typeScatter": "Точечная",
      "typeBar": "Столбчатая",
      "typeLine": "Линейная",
      "typeBox": "Ящик с усами",
      "typePie": "Круговая",
      "bins": "Интервалы",
      "aggregate": "Агрегация",
      "aggCount": "Количество",
      "aggSum": "Сумма",
      "aggAverage": "Среднее",
      "download": "Скачать",
      "downloadPng": "Изображение PNG",
      "downloadSvg": "Вектор SVG",
      "exportError": "Не удалось экспортировать диаграмму."
    },
    "selectedLayerName": "- {{name}}",
    "noLayerSelected": "- выберите слой с атрибутами",
    "zoomToSelection": "Приблизить к выбранному",
    "loadingAttributes": "Загрузка атрибутов слоя…",
    "requiresVectorLayer": "Для таблицы атрибутов требуется векторный слой или слой запроса DuckDB.",
    "invalidJson": "Недопустимый JSON",
    "editCellAria": "Изменить {{col}} для объекта {{featureId}}",
    "resizeColumn": "Изменить ширину столбца {{name}}",
    "renameFieldAria": "Переименовать поле {{name}}",
    "manageFieldTitle": "Управление полем «{{name}}»",
    "manageFieldAria": "Управление полем {{name}}",
    "renameField": "Переименовать поле",
    "hideField": "Скрыть поле",
    "excludeField": "Исключить поле при экспорте",
    "includeField": "Включить поле при экспорте",
    "moveLeft": "Переместить влево",
    "moveRight": "Переместить вправо",
    "deleteField": "Удалить поле",
    "joinedColumnTitle": "Объединённый столбец, производный от таблицы объединения. Вместо этого измените таблицу или определение объединения.",
    "virtualColumnTitle": "Виртуальное поле, вычисляемое по выражению. Вместо этого измените его определение на панели стиля слоя.",
    "deleteFieldConfirm": "Это действие безвозвратно удаляет поле «{{field}}» из каждого объекта в слое «{{layer}}». Стиль или подписи, ссылающиеся на него, будут очищены. Отменить это нельзя.",
    "addFieldDescription": "Добавить новое поле к каждому объекту в слое «{{layer}}».",
    "fieldName": "Имя поля",
    "fieldExists": "Поле с именем «{{name}}» уже существует.",
    "fieldType": "Тип",
    "typeText": "Текст",
    "typeNumber": "Число",
    "typeBoolean": "Логический",
    "defaultValue": "Значение по умолчанию",
    "noDefault": "(нет значения по умолчанию)",
    "noFeaturesForField": "В этом слое нет объектов, к которым можно добавить поле.",
    "calcDescription": "Вычислите значения из выражения JavaScript и запишите их в поле в слое «{{layer}}».",
    "targetField": "Целевое поле",
    "updateField": "Обновить поле",
    "createField": "Создать поле",
    "outputType": "Тип вывода",
    "outputAuto": "Авто (сохранить вычисленный тип)",
    "expression": "Выражение",
    "calcExpressionPlaceholder": "например, pop / area, или upper(name), или pop > 100 ? \"big\" : \"small\"",
    "fieldsLabel": "Поля:",
    "insertField": "Вставить {{name}}",
    "functionsLabel": "Функции:",
    "insertFunction": "Вставить {{name}}()",
    "geomMeasureLabel": "Геометрия:",
    "geomMetric": {
      "length": "Длина",
      "perimeter": "Периметр",
      "area": "Площадь"
    },
    "geomInsert": "Вставить",
    "sampleRowErrored": "Ошибка в примерной строке (другие строки могут вычисляться): {{message}}",
    "preview": "Предпросмотр:",
    "onlySelectedFeature": "Обновить только выбранный объект",
    "evaluationFailed": "Не удалось вычислить.",
    "invalidExpression": "Недопустимое выражение.",
    "calcCouldNotApply": "Не удалось применить вычисление к этому слою.",
    "calcAppliedWithErrors": "Применено, но {{errors}} из {{evaluated}} объект(ов) вызвали ошибку и были записаны как null.",
    "exportFailed": "Не удалось экспортировать выбранный слой.",
    "saveTitleFormErrors": "Исправьте нарушения формы атрибутов перед сохранением"
  },
  "styleManager": {
    "title": "Менеджер стилей",
    "description": "Сохраняйте, просматривайте и применяйте многократно используемые стили, символы, шаблоны подписей и цветовые градиенты для слоёв и проектов.",
    "searchPlaceholder": "Поиск стилей и тегов…",
    "presetsSection": "Встроенные шаблоны",
    "librarySection": "Моя библиотека",
    "projectSection": "Этот проект",
    "empty": "Нет подходящих сохранённых стилей. Сохраните стиль слоя или импортируйте библиотеку, чтобы начать.",
    "apply": "Применить",
    "delete": "Удалить",
    "saveCurrent": "Сохранить текущий стиль…",
    "nameLabel": "Имя",
    "kindLabel": "Что сохранить",
    "kindStyle": "Полный стиль",
    "kindSymbol": "Только символ",
    "kindLabels": "Только подписи",
    "kindRamp": "Только цветовой градиент",
    "tagsLabel": "Теги",
    "tagsPlaceholder": "граница, базовая карта (через запятую)",
    "scopeLabel": "Хранить в",
    "scopeApp": "Моя библиотека (все проекты)",
    "scopeProject": "Только этот проект",
    "saveButton": "Сохранить стиль",
    "cancel": "Отмена",
    "import": "Импорт…",
    "export": "Экспорт…",
    "importFilterName": "Библиотека стилей / QML / SLD",
    "exportFilterName": "Библиотека стилей GeoLibre",
    "applied": "Стиль «{{name}}» применён к {{layer}}.",
    "appliedRampHint": "Стиль «{{name}}» применён. Переключите слой на градуированное или категоризованное отображение, чтобы увидеть градиент.",
    "saved": "«{{name}}» сохранён в библиотеку.",
    "deleted": "«{{name}}» удалён.",
    "importedCount_one": "Импортирован {{count}} стиль.",
    "importedCount_few": "Импортировано {{count}} стиля.",
    "importedCount_many": "Импортировано {{count}} стилей.",
    "importedCount_other": "Импортировано {{count}} стиля.",
    "importedEntryName": "Импортированный стиль",
    "importInvalid": "Этот файл не является библиотекой стилей, QML или SLD.",
    "importNoMatch": "Из этого стиля не удалось прочитать оформление.",
    "exportEmpty": "Нет сохранённых стилей для экспорта.",
    "exportFailed": "Не удалось экспортировать библиотеку стилей.",
    "exportSuccess": "Библиотека стилей экспортирована.",
    "noLayer": "Выберите векторный слой, чтобы сохранить или применить стили."
  },
  "style": {
    "panelLabel": "Стиль слоя",
    "panelLabelCollapsed": "Стиль слоя (свёрнуто)",
    "heading": "Стиль",
    "headingWithLayer": "Стиль - {{name}}",
    "resizePanel": "Изменить размер панели стилей",
    "expand": "Развернуть стиль",
    "collapse": "Свернуть стиль",
    "openStyleManager": "Сохранённые стили…",
    "addClass": "Добавить класс",
    "removeClass": "Удалить класс",
    "beforeIdSavedUnavailable": "Сохранено (недоступно)",
    "raster": {
      "greyscale": "Оттенки серого",
      "greyscaleHint": "Переключить базовую карту в оттенки серого (снижает насыщенность до минимума)",
      "reset": "Сбросить",
      "resetHint": "Сбросить настройки к значениям по умолчанию",
      "exactValueHint": "Двойной щелчок для ввода точного значения",
      "opacity": "Непрозрачность",
      "brightnessMin": "Мин. яркость",
      "brightnessMax": "Макс. яркость",
      "saturation": "Насыщенность",
      "contrast": "Контраст",
      "hueRotate": "Поворот оттенка",
      "footerDeck": "Изменения применяются в реальном времени к непрозрачности растрового слоя.",
      "footerMaplibre": "Изменения применяются в реальном времени к свойствам paint растра MapLibre.",
      "valueAria": "Значение {{label}}",
      "editValueAria": "Изменить значение {{label}}"
    },
    "visibility": {
      "minZoom": "Минимальный масштаб",
      "maxZoom": "Максимальный масштаб",
      "minZoomTooltip": "Уровень масштаба, при котором появляется этот слой. Большие числа — более крупный масштаб.",
      "maxZoomTooltip": "Уровень масштаба, при котором этот слой исчезает. Большие числа — более крупный масштаб."
    },
    "joins": {
      "heading": "Объединения",
      "empty": "Добавляйте столбцы из другого слоя или таблицы по совпадению ключевых полей. Объединённые столбцы обновляются при изменении таблицы и сохраняются вместе с проектом.",
      "addJoin": "Добавить объединение",
      "joinLayer": "Слой для объединения",
      "selectLayer": "Выберите слой…",
      "joinField": "Поле объединения",
      "targetField": "Целевое поле",
      "selectField": "Выберите поле…",
      "fields": "Объединяемые поля",
      "fieldCount_one": "{{count}} поле",
      "fieldCount_few": "{{count}} поля",
      "fieldCount_many": "{{count}} полей",
      "fieldCount_other": "{{count}} поля",
      "prefix": "Префикс имён полей",
      "prefixPlaceholder": "напр. census_",
      "add": "Добавить",
      "cancel": "Отмена",
      "remove": "Удалить объединение",
      "enabledTitle": "Применить это объединение",
      "missingLayer": "Слой для объединения не найден",
      "noCandidates": "Ни у одного другого слоя нет таблицы атрибутов для объединения",
      "statsMatched": "Совпало объектов: {{matched}} из {{total}}",
      "statsUnmatchedJoin_one": "{{count}} строка таблицы без совпадений",
      "statsUnmatchedJoin_few": "{{count}} строки таблицы без совпадений",
      "statsUnmatchedJoin_many": "{{count}} строк таблицы без совпадений",
      "statsUnmatchedJoin_other": "{{count}} строки таблицы без совпадений"
    },
    "virtualFields": {
      "heading": "Виртуальные поля",
      "empty": "Добавляйте столбцы на основе выражений, которые пересчитываются при каждом изменении данных. Виртуальные поля сохраняются вместе с проектом и появляются везде, где есть поля: в таблице атрибутов, стилях, подписях и выделении.",
      "addField": "Добавить виртуальное поле",
      "name": "Имя поля",
      "namePlaceholder": "напр. density",
      "nameTaken": "Столбец с таким именем уже существует",
      "nameConflict": "Не применено: имя совпадает с существующим столбцом",
      "expression": "Выражение",
      "expressionPlaceholder": "[\"/\", [\"get\", \"pop\"], [\"get\", \"area_km2\"]]",
      "expressionTarget": "Выражение виртуального поля",
      "openBuilder": "Открыть конструктор",
      "invalidExpression": "Недопустимое выражение",
      "add": "Добавить",
      "save": "Сохранить",
      "cancel": "Отмена",
      "edit": "Изменить виртуальное поле",
      "remove": "Удалить виртуальное поле",
      "enabledTitle": "Применить это виртуальное поле",
      "evaluationErrors_one": "{{count}} объект не удалось вычислить (пустая ячейка)",
      "evaluationErrors_few": "{{count}} объекта не удалось вычислить (пустые ячейки)",
      "evaluationErrors_many": "{{count}} объектов не удалось вычислить (пустые ячейки)",
      "evaluationErrors_other": "{{count}} объекта не удалось вычислить (пустые ячейки)"
    },
    "labels": {
      "heading": "Подписи",
      "show": "Показывать подписи",
      "field": "Поле подписи",
      "noAttributes": "Атрибуты не найдены",
      "selectField": "Выберите поле…",
      "placement": "Размещение",
      "placementPoint": "Центроид / точка",
      "placementLine": "Вдоль линии / края полигона",
      "textSize": "Размер текста",
      "haloWidth": "Толщина ореола",
      "textColor": "Цвет текста",
      "haloColor": "Цвет ореола",
      "minZoom": "Минимальный масштаб",
      "maxZoom": "Максимальный масштаб",
      "allowOverlap": "Разрешить перекрытие подписей",
      "anchor": "Привязка",
      "anchorCenter": "По центру",
      "anchorLeft": "Слева",
      "anchorRight": "Справа",
      "anchorTop": "Сверху",
      "anchorBottom": "Снизу",
      "anchorTopLeft": "Сверху слева",
      "anchorTopRight": "Сверху справа",
      "anchorBottomLeft": "Снизу слева",
      "anchorBottomRight": "Снизу справа",
      "offsetX": "Смещение X (em)",
      "offsetY": "Смещение Y (em)",
      "rotation": "Поворот (°)",
      "maxWidth": "Ширина переноса (em)",
      "transform": "Регистр букв",
      "transformNone": "Как введено",
      "transformUppercase": "ВЕРХНИЙ РЕГИСТР",
      "transformLowercase": "нижний регистр",
      "dedupe": "Дублирующиеся подписи",
      "dedupeOff": "Подписывать каждый объект",
      "dedupeUnique": "Одна подпись на местоположение",
      "dedupeConcatenate": "Объединять значения в одном месте",
      "dedupeHint": "Схлопывает точки, наложенные в одной координате. Использует поле подписи для локальных точечных слоёв.",
      "expression": "Выражение (необязательно)",
      "expressionHint": "Выражение MapLibre (JSON). Переопределяет поле, если задано.",
      "expressionInvalid": "Недопустимое выражение MapLibre (должно быть массивом JSON). Это значение игнорируется.",
      "dataDefined": {
        "heading": "Переопределения на основе данных",
        "size": "Размер",
        "color": "Цвет",
        "opacity": "Непрозрачность",
        "visibility": "Видимость",
        "priority": "Приоритет",
        "sizeTarget": "Выражение размера подписи",
        "colorTarget": "Выражение цвета подписи",
        "opacityTarget": "Выражение непрозрачности подписи",
        "visibilityTarget": "Выражение видимости подписи",
        "priorityTarget": "Выражение приоритета подписи",
        "notSet": "Не задано",
        "clear": "Очистить выражение",
        "hint": "Выражения MapLibre для каждого объекта. Размер, непрозрачность и приоритет возвращают числа (подписи с меньшими значениями приоритета размещаются первыми), цвет — цвет, видимость — истина/ложь. Игнорируются, пока активно объединение повторяющихся подписей. Выражение непрозрачности заменяет непрозрачность слоя для подписей."
      }
    },
    "elevation3d": {
      "mode": "3D (значения Z)",
      "fillColor": "Цвет заливки",
      "outlineColor": "Цвет контура",
      "strokeWidth": "Толщина обводки",
      "strokeWidthMeters": "Толщина обводки (метры)",
      "fillOpacity": "Непрозрачность заливки",
      "circleRadius": "Радиус круга",
      "verticalScale": "Вертикальное преувеличение",
      "verticalScaleTooltip": "Умножает значение Z каждой координаты. 1 отображает истинные высоты; большие значения подчёркивают рельеф.",
      "offset": "Смещение по высоте (м)",
      "offsetTooltip": "Постоянная высота в метрах, добавляемая к каждому объекту, например, чтобы поднять трек над 3D-зданиями или рельефом.",
      "footer": "Отображается в 3D по значениям Z координат через deck.gl. Изменения применяются мгновенно. Идентификация и выделение объектов недоступны в этом режиме."
    },
    "diagrams": {
      "heading": "Диаграммы",
      "chartType": "Тип диаграммы",
      "typeNone": "Нет",
      "typePie": "Круговая диаграмма",
      "typeDonut": "Кольцевая диаграмма",
      "typeBar": "Столбчатая диаграмма",
      "typeStackedBar": "Столбчатая с накоплением",
      "fields": "Атрибуты",
      "addField": "Добавить атрибут",
      "removeField": "Удалить атрибут",
      "noFields": "Добавьте числовые атрибуты для отображения на каждом объекте.",
      "fieldAttribute": "Атрибут диаграммы {{index}}",
      "sizeMode": "Размер",
      "sizeFixed": "Фиксированный размер",
      "sizeSum": "Масштаб по сумме атрибутов",
      "sizeAttribute": "Масштаб по атрибуту",
      "sizeField": "Атрибут размера",
      "size": "Размер (px)",
      "minZoom": "Минимальный зум",
      "declutter": "Скрывать перекрывающиеся диаграммы",
      "truncated": "Диаграммы отображаются только для {{count}} объектов; остальные не показываются.",
      "atlasFull": "{{count}} диаграмм не помещаются при этом размере и скрыты. Уменьшите размер диаграмм."
    },
    "symbology": {
      "colormap": "Цветовая карта",
      "modeSingle": "Единая символика",
      "modeGraduated": "Градуированная",
      "modeCategorized": "Категоризированная",
      "modeRuleBased": "На основе правил",
      "modeExpression": "Расширенное выражение",
      "rules": "Правила",
      "addRule": "Добавить правило",
      "removeRule": "Удалить правило",
      "noRulesPrefix": "Пока нет правил. Добавьте правило и задайте выражение фильтра MapLibre (например, ",
      "noRulesSuffix": "). Побеждает первое совпавшее правило; правило Else раскрашивает всё остальное.",
      "ruleColor": "Цвет правила {{index}}",
      "ruleColorPick": "Выбрать цвет правила {{index}} с экрана",
      "ruleLabel": "Подпись правила {{index}}",
      "ruleFilter": "Фильтр правила {{index}}",
      "ruleEnabled": "Включить правило {{index}}",
      "ruleAddChild": "Добавить подправило",
      "ruleOptions": "Символ и видимость",
      "ruleMinZoom": "Минимальный масштаб",
      "ruleMaxZoom": "Максимальный масштаб",
      "ruleZoomInvalid": "Минимальный масштаб должен быть меньше максимального - это правило не применяется, пока диапазон пуст.",
      "ruleStrokeWidth": "Толщина обводки",
      "ruleFillOpacity": "Непрозрачность заливки",
      "ruleCircleSize": "Радиус круга",
      "ruleOutlineColor": "Переопределить цвет контура",
      "ruleOutlineColorPick": "Выбрать цвет контура правила {{index}} с экрана",
      "ruleInherit": "Наследуется",
      "ruleGroupNote": "У этого правила есть подправила: оно сужает то, чему соответствуют его подправила, и само ничего не рисует.",
      "labelPlaceholder": "Подпись (необязательно)",
      "filterInvalid": "Недопустимый фильтр — должен быть выражением-массивом JSON. Это правило пропускается до исправления.",
      "elseRuleColor": "Цвет правила Else",
      "elseRuleColorPick": "Выбрать цвет правила Else с экрана",
      "elseRuleEnabled": "Включить правило «иначе» (если выключено, объекты, не подходящие ни под одно правило, скрываются)",
      "elseAllOtherFeatures": "Else (все остальные объекты)",
      "applyHint": "Нажмите «Применить», чтобы активировать отрисовку на основе правил.",
      "rulesApplyLive": "Изменения правил применяются к карте немедленно — отдельный шаг применения не нужен.",
      "proportionalSize": "Пропорциональный размер",
      "sizeByValue": "Размер по значению",
      "sizeField": "Поле размера",
      "chooseField": "Выбрать поле…",
      "minValue": "Мин. значение",
      "maxValue": "Макс. значение",
      "minSize": "Мин. размер (px)",
      "maxSize": "Макс. размер (px)",
      "sizeLegend": "Легенда размера",
      "fillPattern": "Узор заливки",
      "patternColor": "Цвет узора",
      "patternSvg": "Узор SVG",
      "svgPlaceholder": "<svg xmlns='http://www.w3.org/2000/svg' ...>…</svg> или URL data/https",
      "marker": "Маркер",
      "useMarkerIcon": "Использовать значок маркера",
      "markerShape": "Форма маркера",
      "markerColor": "Цвет маркера",
      "markerSize": "Размер маркера (px)",
      "markerSvg": "Маркер SVG",
      "markerShapes": {
        "circle": "Круг",
        "square": "Квадрат",
        "triangle": "Треугольник",
        "diamond": "Ромб",
        "star": "Звезда",
        "cross": "Крест",
        "pin": "Булавка",
        "custom": "Пользовательский SVG"
      },
      "fillPatterns": {
        "none": "Нет (сплошная заливка)",
        "hatch": "Штриховка",
        "crossHatch": "Перекрёстная штриховка",
        "horizontal": "Горизонтальные линии",
        "vertical": "Вертикальные линии",
        "dots": "Точки",
        "svg": "Пользовательский SVG"
      },
      "transparent": "Прозрачный",
      "transparentSwatch": "Без цвета (прозрачный). Нажмите, чтобы выбрать цвет.",
      "styleType": "Тип стиля",
      "attribute": "Атрибут",
      "classes": "Классы",
      "allClasses": "Все ({{total}})",
      "scheme": "Схема",
      "stops": "Границы",
      "categories": "Категории",
      "classColor": "Цвет класса {{index}}",
      "classColorPick": "Выбрать цвет класса {{index}} с экрана",
      "classValue": "Значение класса {{index}}",
      "colorExpression": "Выражение цвета",
      "applyStyleType": "Применить тип стиля",
      "pointRenderer": "Отрисовка точек",
      "pointRendererSingle": "Одиночный символ",
      "pointRendererHeatmap": "Тепловая карта",
      "pointRendererClustered": "Кластеризация",
      "heatmapRadius": "Радиус тепловой карты",
      "heatmapIntensity": "Интенсивность тепловой карты",
      "clusterRadius": "Радиус кластера (px)",
      "clusterMaxZoom": "Макс. масштаб кластеризации",
      "strokeWidthUnit": "Единица толщины обводки",
      "strokeWidthUnitPixels": "Пиксели (постоянные на экране)",
      "strokeWidthUnitMeters": "Метры (масштабируются с картой)",
      "textHaloColor": "Цвет ореола текста",
      "textHaloWidth": "Толщина ореола текста",
      "schemeEqualInterval": "Равные интервалы",
      "schemeQuantile": "Квантиль",
      "schemeNaturalBreaks": "Естественные границы",
      "schemeTopValues": "Наиболее частые",
      "schemeAlphabetical": "По алфавиту",
      "schemeFirstValues": "Первые значения",
      "errorChooseAttribute": "Выберите атрибут для этого режима стиля.",
      "errorAttributesUnavailable": "Не удалось загрузить значения атрибутов этого слоя.",
      "errorProportionalSizeField": "Поле размера должно быть числовым и содержать более одного различного значения.",
      "errorGraduatedStops": "Градуированный стиль требует не менее двух числовых границ.",
      "errorCategorizedStops": "Категоризированный стиль требует не менее одной категории.",
      "invertedFill": "Инвертированная заливка",
      "invertedFillHint": "Заливка вне объектов"
    },
    "suggestions": {
      "title": "Предложения по стилю",
      "dismiss": "Скрыть предложения",
      "categorize": "Категоризовать по «{{field}}»",
      "graduate": "Градуировать по «{{field}}»",
      "heatmap": "Тепловая карта"
    },
    "selectLayerHint": "Выберите слой, чтобы изменить его стиль.",
    "layerOrderDefault": "Порядок слоёв (по умолчанию)",
    "increaseValue": "Увеличить {{label}}",
    "decreaseValue": "Уменьшить {{label}}",
    "visualization": "Визуализация",
    "mode2d": "2D",
    "mode3dExtrusion": "3D-выдавливание",
    "noControls": "Элементы управления стилем пока недоступны для этого типа слоя.",
    "selectedLayerType": "Выбранный тип слоя: {{type}}",
    "footerDeck": "Изменения применяются в реальном времени к стилю слоя deck.gl DuckDB.",
    "footerMaplibre": "Изменения применяются в реальном времени к свойствам paint MapLibre.",
    "pluginPaintedFooter": "Этот слой рисует его плагин, который предоставляет собственные элементы управления стилем.",
    "extrusion": {
      "color": "Цвет выдавливания",
      "opacity": "Непрозрачность выдавливания",
      "advanced": "Расширенное выражение высоты",
      "heightExpression": "Выражение высоты",
      "heightProperty": "Свойство высоты",
      "heightScale": "Масштаб высоты",
      "base": "Высота основания",
      "apply": "Применить 3D-выдавливание",
      "footer": "Настройки 3D-выдавливания применяются при сохранении."
    },
    "expressionLabels": {
      "style": "Выражение стиля",
      "color": "Выражение цвета",
      "height": "Выражение высоты"
    },
    "expressionErrors": {
      "notArray": "{{label}} должно быть выражением-массивом JSON.",
      "notOperator": "{{label}} должно начинаться с оператора, например [\"==\", [\"get\", \"field\"], value].",
      "notJson": "{{label}} не является допустимым JSON: {{message}}"
    },
    "expressionBuilder": {
      "title": "Конструктор выражений",
      "openBuilder": "Открыть конструктор выражений",
      "openBuilderForRule": "Открыть конструктор выражений для правила {{index}}",
      "expressionLabel": "Выражение",
      "clear": "Очистить выражение",
      "valid": "Корректное выражение.",
      "apply": "Применить",
      "preview": "Предпросмотр",
      "previewEmpty": "Введите выражение, чтобы увидеть предпросмотр в реальном времени.",
      "previewNoFeatures": "Нет объектов для предпросмотра.",
      "sampleFeature": "Объект {{index}} из {{count}}",
      "previousFeature": "Предыдущий объект",
      "nextFeature": "Следующий объект",
      "filterMatches": "Соответствует этому объекту",
      "filterNoMatch": "Не соответствует этому объекту",
      "fields": "Поля",
      "noFields": "В этом слое нет полей атрибутов.",
      "insertField": "Вставить поле {{name}}",
      "functionsHeading": "Функции",
      "functionSearch": "Поиск функций",
      "noFunctionMatches": "Нет функций, соответствующих поиску.",
      "variables": "Переменные",
      "variablesHint": "Переменные заменяются их текущими значениями при применении выражения.",
      "categories": {
        "data": "Данные и поиск",
        "decision": "Условия и сравнение",
        "math": "Математика",
        "string": "Строки",
        "conversion": "Преобразование типов",
        "camera": "Масштаб и цвет"
      },
      "functions": {
        "get": "Возвращает значение указанного атрибута объекта.",
        "has": "Истина, если объект имеет указанный атрибут.",
        "id": "Возвращает идентификатор объекта.",
        "properties": "Возвращает полный объект атрибутов объекта.",
        "geometryType": "Возвращает тип геометрии объекта (Point, LineString, Polygon, ...).",
        "at": "Возвращает элемент массива по заданному индексу.",
        "in": "Истина, если первое значение содержится во втором (строка или массив).",
        "indexOf": "Возвращает позицию первого значения во втором или -1.",
        "length": "Возвращает длину строки или массива.",
        "literal": "Встраивает литеральный массив или объект в выражение.",
        "typeofOp": "Возвращает имя типа значения.",
        "caseOp": "Возвращает первый вывод, условие которого истинно, иначе — запасное значение.",
        "match": "Сравнивает вход с перечисленными значениями и возвращает соответствующий вывод.",
        "coalesce": "Возвращает первое значение, отличное от null.",
        "eq": "Истина, если оба значения равны.",
        "neq": "Истина, если значения различаются.",
        "gt": "Истина, если первое значение больше второго.",
        "gte": "Истина, если первое значение больше или равно второму.",
        "lt": "Истина, если первое значение меньше второго.",
        "lte": "Истина, если первое значение меньше или равно второму.",
        "all": "Истина, если истинны все условия.",
        "any": "Истина, если истинно хотя бы одно условие.",
        "not": "Отрицает логическое значение.",
        "add": "Складывает числа.",
        "subtract": "Вычитает второе число из первого.",
        "multiply": "Умножает числа.",
        "divide": "Делит первое число на второе.",
        "modulo": "Возвращает остаток от деления.",
        "power": "Возводит первое число в степень второго.",
        "abs": "Возвращает абсолютное значение.",
        "ceil": "Округляет вверх до ближайшего целого.",
        "floor": "Округляет вниз до ближайшего целого.",
        "round": "Округляет до ближайшего целого.",
        "sqrt": "Возвращает квадратный корень.",
        "ln": "Возвращает натуральный логарифм.",
        "log10": "Возвращает десятичный логарифм.",
        "min": "Возвращает наименьшее из значений.",
        "max": "Возвращает наибольшее из значений.",
        "concat": "Объединяет значения в одну строку.",
        "upcase": "Преобразует строку в верхний регистр.",
        "downcase": "Преобразует строку в нижний регистр.",
        "slice": "Возвращает часть строки или массива.",
        "toNumber": "Преобразует значение в число.",
        "toString": "Преобразует значение в строку.",
        "toBoolean": "Преобразует значение в true или false.",
        "toColor": "Преобразует значение в цвет.",
        "zoom": "Текущий уровень масштабирования карты (вычисляется картой в реальном времени).",
        "interpolate": "Плавно смешивает выводы по мере изменения входа.",
        "step": "Возвращает ступенчатые выводы на заданных пороговых значениях входа.",
        "rgb": "Создаёт цвет из красного, зелёного и синего (0-255).",
        "rgba": "Создаёт цвет из красного, зелёного, синего и альфа-канала."
      }
    },
    "decorations": {
      "heading": "Декор линии",
      "typeNone": "Нет",
      "typeArrow": "Стрелки",
      "typeTriangle": "Треугольники",
      "typeCircle": "Круги",
      "typeSquare": "Квадраты",
      "color": "Цвет декора",
      "size": "Размер символа (px)",
      "spacing": "Интервал (px)"
    },
    "generator": {
      "heading": "Генератор геометрии",
      "type": "Производная геометрия",
      "typeNone": "Нет",
      "typeCentroid": "Центроиды",
      "typeBoundingBox": "Ограничивающие рамки",
      "typeConvexHull": "Выпуклые оболочки",
      "typeBuffer": "Буферы",
      "bufferDistance": "Расстояние буфера (м)",
      "fillColor": "Цвет заливки",
      "strokeColor": "Цвет контура",
      "strokeWidth": "Ширина контура (px)",
      "opacity": "Непрозрачность заливки",
      "circleRadius": "Радиус точки (px)"
    },
    "attributeForm": {
      "heading": "Форма атрибутов",
      "empty": "Поля не настроены. Назначьте полю виджет редактирования, ограничение или правило видимости.",
      "configureField": "Настроить поле",
      "field": "Поле",
      "selectField": "Выберите поле…",
      "widgetLabel": "Виджет редактирования",
      "widget": {
        "text": "Текст",
        "number": "Число",
        "range": "Диапазон",
        "checkbox": "Флажок",
        "date": "Дата",
        "valueMap": "Карта значений"
      },
      "alias": "Псевдоним",
      "required": "Обязательное",
      "requiredTag": "обязательное",
      "constraintTag": "ограничение",
      "visibilityTag": "видимость",
      "valueMap": "Записи карты значений",
      "valueMapPlaceholder": "residential=Residential\ncommercial=Commercial",
      "valueMapHint": "Одна запись на строку: значение или значение=Метка.",
      "min": "Мин",
      "max": "Макс",
      "step": "Шаг",
      "constraintExpression": "Выражение ограничения",
      "constraintPlaceholder": "[\">\", [\"get\", \"population\"], 0]",
      "constraintDescription": "Описание ограничения",
      "constraintDescriptionPlaceholder": "Показывается при нарушении ограничения",
      "visibilityExpression": "Выражение видимости",
      "visibilityPlaceholder": "[\"==\", [\"get\", \"type\"], \"school\"]",
      "invalidExpression": "Недопустимое выражение",
      "openBuilder": "Открыть конструктор выражений",
      "edit": "Изменить настройку поля",
      "remove": "Удалить настройку поля",
      "cancel": "Отмена",
      "save": "Сохранить",
      "noFields": "У слоя нет атрибутивных полей для настройки.",
      "minMaxInvalid": "Минимум должен быть меньше или равен максимуму."
    }
  },
  "layers": {
    "panelCollapsedLabel": "Слои (свёрнуто)",
    "expand": "Развернуть слои",
    "collapse": "Свернуть слои",
    "resizePanel": "Изменить размер панели слоёв",
    "dragToReorder": "Перетащите для изменения порядка",
    "saveGeometryEdits": "Сохранить изменения геометрии",
    "discardGeometryEdits": "Отменить изменения геометрии",
    "moveUp": "Переместить вверх",
    "moveDown": "Переместить вниз",
    "zoomToLayer": "Приблизить к слою",
    "layerActions": "Действия со слоем",
    "metadata": "Метаданные",
    "removeLayer": "Удалить слой",
    "identifyFeatures": "Идентифицировать объекты",
    "identifyDeactivate": "Деактивировать идентификацию",
    "identifyInspectPixels": "Проверить значения пикселей",
    "identifyStopInspectPixels": "Остановить проверку значений пикселей",
    "identifyUnavailable": "Идентификация доступна только для векторных слоёв, WMS и COG",
    "exportGeoTiff": "GeoTIFF (COG)",
    "extractSubset": "Извлечь подмножество…",
    "stylesMenu": "Стили",
    "exportMapboxStyle": "Экспортировать как стиль Mapbox GL",
    "exportSldStyle": "Экспортировать как OGC SLD",
    "exportQmlStyle": "Экспортировать как QGIS QML",
    "exportStyleSuccess": "Стиль экспортирован.",
    "exportStyleDataNotReady": "Данные слоя ещё не готовы. Повторите попытку через мгновение.",
    "exportStyleNeedsFeatures": "Для экспорта стиля требуется векторный слой с объектами.",
    "exportStyleError": "Не удалось экспортировать стиль этого слоя.",
    "importStyle": "Импортировать стиль (Mapbox GL / SLD / QML)…",
    "openStyleManager": "Сохранённые стили (Менеджер стилей)…",
    "importStyleSuccess": "Стиль импортирован.",
    "importStyleInvalid": "Этот файл не является допустимым JSON, SLD или QML.",
    "importStyleNoMatch": "Из этого стиля не удалось считать символику.",
    "importStyleError": "Не удалось импортировать этот стиль.",
    "copyStyle": "Копировать стиль",
    "pasteStyle": "Вставить стиль",
    "pasteStyleFrom": "Вставить стиль из «{{name}}»",
    "pasteStyleEmpty": "Сначала скопируйте стиль слоя",
    "pasteStyleMismatch": "Скопированный стиль относится к другому типу слоя",
    "styleCopied": "Стиль скопирован из «{{name}}».",
    "stylePasted": "Стиль вставлен из «{{name}}».",
    "saveToLibrary": "Сохранить в Мои данные",
    "savedToLibrary": "«{{name}}» сохранён в Мои данные.",
    "saveToLibraryNoSource": "У этого слоя нет источника, который можно добавить заново, поэтому его нельзя сохранить в Мои данные.",
    "saveToLibraryTooLarge": "Данные этого слоя хранятся только в памяти и слишком велики для сохранения в Мои данные.",
    "saveToLibraryConfigTooLarge": "Сохранённая конфигурация этого слоя слишком велика для Моих данных.",
    "bindToTimeSlider": "Привязать к временной шкале…",
    "bindTimeDimensionToTimeSlider": "Связать временное измерение с временной шкалой",
    "bindNoTimeDimension": "У этого слоя нет читаемого временного измерения.",
    "unbindFromTimeSlider": "Отвязать от временной шкалы",
    "bindDialogDescription": "Фильтровать объекты этого слоя по свойству даты или отметки времени при прокрутке временной шкалы. Слой сохраняет стиль и непрозрачность.",
    "bindScanning": "Сканирование объектов на свойства даты и отметки времени…",
    "bindNoProperty": "В этом слое не найдено свойство даты или отметки времени.",
    "bindNoTimestamps": "У выбранного свойства нет читаемых отметок времени. Выберите другое свойство.",
    "bindTileNoFeatures": "Для этого слоя ещё не загружены тайлы. Приблизьтесь к слою и повторите попытку.",
    "bindRange": "Временной диапазон",
    "bindRangeEnd": "Конец временного диапазона",
    "bindRangeHint": "Определён по загруженным на данный момент тайлам, поэтому может быть более узким, чем весь набор данных. Введите год (1958) или дату (1958-03-01).",
    "bindRangeInvalid": "Введите обе границы в виде года (1958) или даты (1958-03-01).",
    "bindProperty": "Свойство времени",
    "bindWindow": "Показывать объекты",
    "bindWindowStep": "На текущем шаге",
    "bindWindowWide": "В пределах одного шага до и после",
    "bindWindowWider": "В пределах трёх шагов до и после",
    "bindWindowCumulative": "Всё до текущего шага (накопительно)",
    "bindCancel": "Отмена",
    "bindConfirm": "Привязать",
    "openRasterStylePanel": "Изменить растровый стиль…",
    "exportRasterSuccess": "Растр экспортирован.",
    "exportRasterError": "Не удалось экспортировать этот растр.",
    "saveEditsToSource": "Сохранить изменения в исходный файл",
    "saveEditsSuccess": "Сохранено объектов в исходный файл: {{count}}.",
    "saveEditsNoFeatures": "В этом слое нет объектов для сохранения.",
    "saveEditsError": "Не удалось сохранить изменения в исходный файл.",
    "saveEditsToPostgis": "Сохранить изменения в таблицу PostGIS",
    "saveEditsPostgisSuccess": "Сохранено в {{table}}: добавлено {{inserted}}, обновлено {{updated}}, удалено {{deleted}}.",
    "saveEditsPostgisSkippedFields": "Поля без соответствующего столбца таблицы не сохранены: {{fields}}.",
    "saveEditsPostgisRefreshWarning": "Изменения сохранены в таблицу, но обновление слоя не удалось. Перезагрузите слой перед повторным сохранением, иначе объекты могут быть добавлены дважды.",
    "saveEditsPostgisNoConnection": "Для этого слоя недоступно подключение к PostgreSQL. Переподключитесь в «Добавить данные» > PostgreSQL, затем повторите попытку.",
    "typeBasemap": "базовая карта",
    "searchPlaces": "Поиск мест",
    "searchPlacesPlaceholder": "Поиск мест, координат или ячейки H3...",
    "searchPlacesSearching": "Поиск...",
    "searchPlacesNoResults": "Места не найдены",
    "searchPlacesError": "Поиск не удался. Повторите попытку.",
    "searchPlacesClear": "Очистить поиск",
    "searchPlacesGoToCoordinate": "Перейти к {{coordinate}}",
    "searchPlacesGoToH3Cell": "Перейти к ячейке H3 {{cell}} (разрешение {{resolution}})",
    "background": "Фон",
    "backgroundCannotReorder": "Фон нельзя переупорядочить",
    "hideBackground": "Скрыть фон",
    "showBackground": "Показать фон",
    "opacity": "Непрозрачность",
    "opacityExactHint": "Двойной щелчок для ввода точного значения",
    "opacityFor": "Непрозрачность для {{name}}",
    "opacityValueInputAria": "Значение {{label}}",
    "opacityValueEditAria": "Изменить значение {{label}}",
    "basemapOpacity": "Непрозрачность базовой карты",
    "newGroup": "Новая группа",
    "basemaps": "Базовые карты",
    "geoEditor": "GeoEditor",
    "collapseGroup": "Свернуть группу",
    "expandGroup": "Развернуть группу",
    "hideGroup": "Скрыть группу",
    "showGroup": "Показать группу",
    "renameGroup": "Переименовать группу",
    "moveGroupUp": "Переместить группу вверх",
    "moveGroupDown": "Переместить группу вниз",
    "ungroupKeepLayers": "Разгруппировать (сохранить слои)",
    "deleteGroupAndLayers": "Удалить группу и слои",
    "groupActions": "Действия с группой",
    "addDataToGroup": "Добавить данные в группу",
    "groupOpacity": "Непрозрачность",
    "groupOpacityAria": "Непрозрачность группы {{name}}",
    "doubleClickToRename": "Двойной щелчок для переименования",
    "doubleClickToChangeBasemap": "Двойной щелчок для изменения базовой карты",
    "renameNamed": "Переименовать {{name}}",
    "newGroupFromLayer": "Новая группа из слоя",
    "newGroupFromSelectedLayers": "Новая группа из выбранных слоёв",
    "moveToGroup": "Переместить в группу",
    "moveSelectedToGroup": "Переместить выбранные слои в группу",
    "removeFromGroup": "Удалить из группы",
    "hiddenByGroup": "Скрыто, так как группа не видна",
    "empty": "Нет слоёв данных. Добавьте данные с панели инструментов.",
    "emptyBeginner": "Пока нет слоёв. Добавьте базовые карты через Плагины → Базовые карты или свои данные через меню «Добавить данные».",
    "hideAllLayers": "Скрыть все слои",
    "showAllLayers": "Показать все слои",
    "dragNamedToReorder": "Перетащите {{name}} для изменения порядка",
    "hideLayer": "Скрыть слой",
    "showLayer": "Показать слой",
    "editingGeometry": "Редактирование геометрии",
    "rename": "Переименовать",
    "materializeToEditable": "Материализовать в редактируемый слой",
    "finishEditingGeometry": "Завершить редактирование геометрии",
    "editGeometry": "Редактировать геометрию",
    "openAttributeTable": "Открыть таблицу атрибутов",
    "openRasterAttributeTable": "Открыть таблицу атрибутов растра",
    "export": "Экспорт",
    "refresh": "Обновить",
    "autoRefreshOn": "Автообновление включено",
    "lastSynced": "Последняя синхронизация {{time}}",
    "syncErrorStatus": "Сбой синхронизации: {{message}}",
    "autoRefresh": "Автообновление",
    "refreshWfsGeojsonOnly": "Только URL WFS и GeoJSON",
    "editSqlQuery": "Изменить запрос в SQL Workspace",
    "reloadFromDisk": "Перезагрузить с диска",
    "watchFile": "Отслеживать изменения файла",
    "watchError": "Не удалось отслеживать изменения этого файла.",
    "autoRefreshDialogTitle": "Автообновление {{name}}",
    "layerFallback": "Слой",
    "autoRefreshDialogDescription": "Перезагружать этот слой из его источника через фиксированный интервал.",
    "interval": "Интервал",
    "custom": "Пользовательский",
    "customIntervalSeconds": "Пользовательский интервал (секунды)",
    "refreshFailurePolicy": "Если обновление не удалось",
    "refreshFailureKeepLast": "Сохранить последние успешно полученные данные",
    "refreshFailureClear": "Очистить слой",
    "apply": "Применить",
    "enterPositiveSeconds": "Введите положительное число секунд.",
    "metadataDialogTitle": "Метаданные {{name}}",
    "metadataDialogDescription": "Метаданные слоя и сведения об источнике",
    "metadataRasterLoading": "Чтение метаданных растра…",
    "metadataRasterError": "Не удалось прочитать метаданные этого растра.",
    "resizeMetadataDialog": "Изменить размер окна метаданных",
    "removeLayerConfirmTitle": "Удалить слой?",
    "removeLayerConfirmBody": "Это действие удаляет {{name}} из проекта и с карты.",
    "thisLayerFallback": "этот слой",
    "refreshingAuto": "Автообновление...",
    "refreshing": "Обновление...",
    "refreshVectorControlError": "Не удалось обновить этот слой. Попробуйте снова открыть панель «Добавить векторный слой».",
    "refreshed": "Обновлено.",
    "refreshedCount": "Обновлено объектов: {{count}}.",
    "refreshError": "Не удалось обновить этот слой.",
    "exportNeedsFeatures": "Для экспорта требуется векторный слой с объектами.",
    "exportedWithWarnings": "Слой экспортирован. {{warnings}}",
    "exported": "Слой экспортирован.",
    "exportLayerError": "Не удалось экспортировать этот слой.",
    "refreshIntervals": {
      "off": "Выключено",
      "s15": "15 секунд",
      "s30": "30 секунд",
      "m1": "1 минута",
      "m5": "5 минут",
      "m15": "15 минут"
    }
  },
  "timeSliderSymbology": {
    "bands": "Каналы",
    "bandsPlaceholder": "авто",
    "bandsHint": "Номера каналов начиная с 1, через запятую (например, 4,3,2). Оставьте пустым для значения по умолчанию.",
    "bandsInvalid": "Введите целые номера каналов от 1, разделённые запятыми.",
    "colormapNone": "Нет (RGB / многоканальный)"
  },
  "rasterSymbology": {
    "gamma": "Гамма",
    "min": "Мин",
    "max": "Макс",
    "value": "Значение",
    "autoPlaceholder": "авто",
    "colorRampLabel": "Цветовая шкала",
    "reverseRamp": "Обратить шкалу",
    "customRamp": "Пользовательская…",
    "customColors": "Пользовательские цвета",
    "customColorsValid": "Цветов: {{count}}, от низкого к высокому. Используйте «Обратить», чтобы поменять местами.",
    "customColorsHint": "Введите не менее двух шестнадцатеричных кодов, разделённых запятыми или пробелами.",
    "imagePalette": "Палитра изображения",
    "createLegend": "Создать легенду из палитры",
    "createLegendHint": "Добавляет легенду с одним элементом на каждое значение пикселя, используя цвета палитры растра. После этого переименуйте элементы в названия классов.",
    "createLegendPending": "Чтение палитры…",
    "createLegendEmpty": "Для этого растра не найдено цветов палитры.",
    "createLegendError": "Не удалось прочитать палитру растра.",
    "heading": "Растровая символика",
    "renderMode": "Режим отображения",
    "modeSingle": "Один канал (псевдоцвет)",
    "modeIndex": "Индекс (нормализованная разность)",
    "modeRgb": "RGB-композит",
    "band": "Канал",
    "stretch": "Растяжение",
    "stretchLinear": "Линейное",
    "stretchLog": "Логарифмическое",
    "stretchSqrt": "Квадратный корень",
    "index": "Индекс",
    "classifyToggle": "Разбить на дискретные классы",
    "method": "Метод",
    "methodEqualInterval": "Равные интервалы",
    "methodQuantile": "Квантили",
    "methodManual": "Ручные границы",
    "classes": "Классы",
    "classEdges": "Границы классов",
    "noData": "Нет данных",
    "nodataAuto": "Автоматически (из файла)",
    "nodataOff": "Отображать все пиксели",
    "nodataCustom": "Своё значение"
  },
  "rasterAttributeTable": {
    "title": "Таблица атрибутов растра",
    "resize": "Изменить размер таблицы атрибутов растра",
    "noRasterSelected": "Выберите растровый слой, чтобы просмотреть его таблицу атрибутов.",
    "computing": "Чтение классов растра…",
    "empty": "Классов пока нет. Используйте «Пересчитать», чтобы построить таблицу.",
    "band": "Канал",
    "bandOption": "Канал {{band}}",
    "close": "Закрыть таблицу атрибутов растра",
    "noSource": "У этого растра нет читаемого исходного файла.",
    "readError": "Не удалось прочитать данные растра.",
    "bandMissing": "Канал {{band}} не найден в этом растре.",
    "notCategorical": "В этом канале слишком много различных значений, чтобы он был категориальным.",
    "tooManyClasses": "Применение символики поддерживает до {{max}} классов.",
    "symbologyApplied": "Символика применена из таблицы.",
    "noPalette": "У этого растра нет встроенной палитры.",
    "legendError": "Не удалось открыть легенду.",
    "csvError": "Не удалось экспортировать файл CSV.",
    "recomputeTitle": "Сканировать растр и заново построить таблицу классов",
    "applyTitle": "Раскрасить растр по классам таблицы",
    "paletteTitle": "Сбросить цвета из встроенной палитры растра",
    "legendTitle": "Заполнить легенду карты классами таблицы",
    "csvTitle": "Экспортировать таблицу в CSV",
    "buttons": {
      "recompute": "Пересчитать",
      "apply": "Применить символику",
      "palette": "Из палитры",
      "legend": "В легенду",
      "csv": "CSV"
    },
    "columns": {
      "value": "Значение",
      "count": "Количество",
      "percent": "%",
      "area_m2": "Площадь (м²)",
      "area_ha": "Площадь (га)",
      "area_km2": "Площадь (км²)",
      "color": "Цвет",
      "label": "Подпись"
    },
    "rowColor": "Цвет для значения {{value}}",
    "rowLabel": "Подпись для значения {{value}}"
  },
  "raster": {
    "filePickerLabel": "Растры",
    "cogConvertConfirm": "«{{name}}» — это обычный (полосовой) GeoTIFF, который нельзя отобразить напрямую. Преобразовать его сейчас в Cloud-Optimized GeoTIFF и загрузить?",
    "cogConvertRemoteConfirm": "«{{name}}» — это обычный (полосовой) GeoTIFF, который нельзя отобразить напрямую. Для отображения потребуется скачать весь файл и преобразовать его в Cloud-Optimized GeoTIFF в браузере, что может быть медленным и требовательным к памяти для больших файлов. Продолжить?",
    "cogConvertLargeConfirm": "«{{name}}» — это большой GeoTIFF {{width}}×{{height}}, не являющийся Cloud-Optimized GeoTIFF. Преобразование в браузере может быть медленным и требовательным к памяти. Всё равно преобразовать и загрузить?",
    "cogConvertFailed": "Не удалось преобразовать «{{name}}» в Cloud-Optimized GeoTIFF. Попробуйте преобразовать его с помощью gdal_translate или rio cogeo, затем загрузите результат.",
    "rasterDownloadFailed": "Не удалось скачать «{{name}}». Сервер может быть медленным, недоступным или блокировать межсайтовые запросы, либо файл может быть слишком большим для памяти. Проверьте URL и повторите попытку.",
    "rasterNotGeotiff": "«{{name}}» не вернул GeoTIFF. Возможно, сервер отправил страницу с ошибкой или входом вместо файла. Проверьте URL и повторите попытку."
  },
  "attributeForm": {
    "error": {
      "required": "Требуется значение",
      "number": "Должно быть числом",
      "range": "Должно быть между {{min}} и {{max}}",
      "rangeMin": "Должно быть не менее {{min}}",
      "rangeMax": "Должно быть не более {{max}}",
      "valueMap": "Значение отсутствует в списке допустимых",
      "constraint": "Ограничение не выполнено"
    }
  },
  "legendPanel": {
    "edit": "Изменить легенду",
    "done": "Завершить изменение",
    "close": "Закрыть легенду",
    "empty": "Нет видимых слоёв для отображения.",
    "renameTitle": "Заголовок легенды",
    "renameEntry": "Переименовать {{name}}",
    "renameItem": "Переименовать {{name}}",
    "moveUp": "Переместить вверх",
    "moveDown": "Переместить вниз",
    "hideEntry": "Скрыть из легенды",
    "showEntry": "Показать в легенде",
    "hideItem": "Скрыть элемент",
    "showItem": "Показать элемент",
    "customizeEntry": "Настроить элементы",
    "resetEntry": "Сбросить на автоматический режим",
    "removeSection": "Удалить раздел",
    "addSection": "Добавить свой раздел",
    "newSectionTitle": "Новый раздел",
    "newItemLabel": "Новый элемент",
    "addItem": "Добавить элемент",
    "removeItem": "Удалить элемент",
    "itemColor": "Цвет элемента",
    "position": "Положение",
    "positions": {
      "top-left": "Сверху слева",
      "top-right": "Сверху справа",
      "bottom-left": "Снизу слева",
      "bottom-right": "Снизу справа"
    },
    "low": "Низкое",
    "high": "Высокое",
    "addFromDictionary": "Добавить из словаря",
    "dictionaryHint": "JSON-объект пар {\"подпись\": \"цвет\"} или по одной строке \"подпись: цвет\".",
    "dictionaryAdd": "Добавить раздел",
    "cancel": "Отмена",
    "resize": "Изменить размер легенды",
    "collapseEntry": "Свернуть раздел",
    "expandEntry": "Развернуть раздел",
    "collapsePanel": "Свернуть легенду",
    "expandPanel": "Развернуть легенду",
    "exportJson": "Экспортировать в JSON"
  },
  "errorBoundary": {
    "title": "Что-то пошло не так",
    "description": "В GeoLibre произошла непредвиденная ошибка, и работа не может быть продолжена. Ваша работа может быть не сохранена — попробуйте восстановить её перед перезагрузкой.",
    "tryAgain": "Повторить",
    "reload": "Перезагрузить приложение",
    "sectionFailed": "Не удалось отобразить «{{label}}». Остальная часть GeoLibre по-прежнему доступна."
  },
  "commandPalette": {
    "title": "Палитра команд",
    "searchAria": "Поиск команд",
    "searchPlaceholder": "Поиск команд…",
    "listAria": "Команды",
    "noMatches": "Подходящих команд нет"
  },
  "shortcuts": {
    "title": "Сочетания клавиш",
    "description": "Нажмите {{shortcut}}, чтобы найти любое действие в палитре команд.",
    "groupGeneral": "Общие",
    "groupMapNavigation": "Навигация по карте",
    "openCommandPalette": "Открыть палитру команд",
    "showKeyboardShortcuts": "Показать сочетания клавиш",
    "nav": {
      "zoomIn": "Приблизить",
      "zoomOut": "Отдалить",
      "pan": "Сдвинуть",
      "rotate": "Повернуть",
      "tilt": "Наклонить"
    }
  },
  "diagnostics": {
    "title": "Диагностика",
    "description": "Недавние сетевые запросы, ошибки MapLibre, предупреждения консоли и исключения времени выполнения.",
    "countTotal_one": "{{count}} всего",
    "countTotal_few": "{{count}} всего",
    "countTotal_many": "{{count}} всего",
    "countTotal_other": "{{count}} всего",
    "countErrors_one": "{{count}} ошибка",
    "countErrors_few": "{{count}} ошибки",
    "countErrors_many": "{{count}} ошибок",
    "countErrors_other": "{{count}} ошибки",
    "countWarnings_one": "{{count}} предупреждение",
    "countWarnings_few": "{{count}} предупреждения",
    "countWarnings_many": "{{count}} предупреждений",
    "countWarnings_other": "{{count}} предупреждения",
    "countNetwork_one": "{{count}} сетевой",
    "countNetwork_few": "{{count}} сетевых",
    "countNetwork_many": "{{count}} сетевых",
    "countNetwork_other": "{{count}} сетевых",
    "countNetworkErrors_one": "{{count}} сетевая ошибка",
    "countNetworkErrors_few": "{{count}} сетевые ошибки",
    "countNetworkErrors_many": "{{count}} сетевых ошибок",
    "countNetworkErrors_other": "{{count}} сетевой ошибки",
    "logAllRequests": "Записывать все сетевые запросы",
    "logAllRequestsHint": "Записывать успешные и прерванные сетевые запросы начиная с этого момента; запросы, выполненные при выключенной записи, задним числом не добавляются. По умолчанию выключено, так как запись каждого запроса замедляет приложение.",
    "copyJson": "Копировать JSON",
    "copied": "Скопировано",
    "clear": "Очистить",
    "emptyAll": "Диагностические данные не собраны.",
    "emptyError": "Диагностические данные об ошибках не собраны.",
    "emptyWarning": "Диагностические данные о предупреждениях не собраны.",
    "emptyInfo": "Информационные диагностические данные не собраны.",
    "emptyNetwork": "Сетевые диагностические данные не собраны.",
    "emptyNetworkError": "Диагностические данные о сетевых ошибках не собраны."
  },
  "shell": {
    "workspaceTitle": "Картографическое рабочее пространство GeoLibre",
    "section": {
      "toolbar": "Панель инструментов",
      "sharedLeftSidebar": "Общая левая боковая панель",
      "pluginPanelLeftOfLayers": "Панель плагина (слева от «Слоёв»)",
      "layerPanel": "Панель слоёв",
      "pluginPanelRightOfLayers": "Панель плагина (справа от «Слоёв»)",
      "map": "Карта",
      "pluginFloatingPanels": "Плавающие панели плагинов",
      "selectionPanels": "Панели выбора",
      "sunSimulationPanel": "Панель имитации солнца",
      "routeAnimationPanel": "Панель анимации маршрута",
      "flightSimulatorPanel": "Панель авиасимулятора",
      "sharedRightSidebar": "Общая правая боковая панель",
      "pluginPanelLeftOfStyle": "Панель плагина (слева от «Стиля»)",
      "stylePanel": "Панель стиля",
      "pluginPanelRightOfStyle": "Панель плагина (справа от «Стиля»)",
      "notebook": "Блокнот",
      "attributeTable": "Таблица атрибутов",
      "rasterAttributeTable": "Таблица атрибутов растра",
      "dashboard": "Панель мониторинга",
      "pythonConsole": "Консоль Python",
      "sqlWorkspace": "Рабочее пространство SQL",
      "assistant": "Ассистент",
      "statusBar": "Строка состояния"
    }
  },
  "attributeStats": {
    "title": "Статистика поля",
    "description": "Сводная статистика по полю в «{{layer}}».",
    "noFields": "В этом слое нет полей для сводки.",
    "field": "Поле",
    "scope": "Охват",
    "scopeAll": "Все объекты ({{total}})",
    "scopeFiltered": "Отфильтрованные ({{total}})",
    "copiedToClipboard": "Скопировано в буфер обмена.",
    "copy": "Копировать",
    "copyHeader": "Статистика поля — {{field}}",
    "copyHeaderFiltered": "Статистика поля — {{field}} (отфильтровано)",
    "noValues": "Нет значений для сводки.",
    "mostFrequent": "Самые частые значения",
    "noPopulated": "Нет заполненных значений.",
    "stat": {
      "count": "Количество",
      "nulls": "Пустые",
      "nonNumeric": "Нечисловые",
      "unique": "Уникальные",
      "min": "Мин",
      "max": "Макс",
      "mean": "Среднее",
      "median": "Медиана",
      "std": "Ст. откл.",
      "sum": "Сумма"
    }
  },
  "columnExplorer": {
    "title": "Обозреватель столбцов",
    "description": "Тип, заполненность и распределение каждого поля в «{{layer}}».",
    "noFields": "В этом слое нет полей для изучения.",
    "findField": "Найти поле",
    "findFieldPlaceholder": "Фильтровать поля по имени...",
    "scope": "Охват",
    "scopeAll": "Все объекты ({{total}})",
    "scopeFiltered": "Отфильтрованные ({{total}})",
    "fieldsShown": "{{shown}} из {{total}} полей",
    "noMatches": "Нет полей, соответствующих «{{search}}».",
    "typeNumeric": "Числовое",
    "typeText": "Текстовое",
    "completenessTitle": "заполнено: {{populated}}, пусто: {{nulls}}",
    "populated": "заполнено: {{total}}",
    "null": "пусто: {{total}}",
    "unique": "уникальных: {{total}}",
    "min": "Мин",
    "mean": "Среднее",
    "max": "Макс",
    "noNumericValues": "Нет числовых значений для построения графика.",
    "distributionAria": "Распределение {{field}}: {{total}} значений от {{min}} до {{max}}",
    "noPopulated": "Нет заполненных значений.",
    "moreValues": "+{{total}} других значений"
  },
  "stacPlugin": {
    "title": "Каталоги STAC",
    "footprintLayerName": "Контуры поиска STAC",
    "catalogSearch": "Найти публичный каталог в STAC Index",
    "catalogSearchPlaceholder": "Поиск по названиям каталогов…",
    "indexLoading": "Загрузка STAC Index…",
    "indexUnavailable": "STAC Index недоступен: введите URL",
    "indexLoadFailed": "Не удалось загрузить STAC Index",
    "urlLabel": "URL каталога или API STAC",
    "connect": "Подключиться",
    "connecting": "Подключение к STAC…",
    "connected": "Подключено. Выберите фильтры и выполните поиск.",
    "connectFailed": "Не удалось подключиться к STAC",
    "selectCatalog": "Выберите каталог…",
    "noMatchingCatalogs": "Подходящих каталогов нет",
    "catalogApiSuffix": " (API)",
    "catalogStaticSuffix": " (статический)",
    "kindApi": "API STAC",
    "kindStatic": "статический каталог",
    "collectionsHint": "Удерживайте Ctrl/Cmd, чтобы выбрать несколько коллекций; потяните нижний край, чтобы изменить размер",
    "limitToExtent": "Ограничить поиск текущим охватом карты",
    "bboxLabel": "Ограничивающий прямоугольник (запад, юг, восток, север)",
    "bboxPlaceholder": "Необязательно; переопределяет охват карты",
    "bboxInvalid": "Введите корректный прямоугольник: запад, юг, восток, север.",
    "drawBbox": "Нарисовать прямоугольник на карте",
    "cancelDrawing": "Отменить рисование",
    "clearDrawnBbox": "Очистить нарисованный прямоугольник",
    "drawHint": "Нажмите и потяните по карте, чтобы нарисовать прямоугольник поиска.",
    "drawnBbox": "Нарисованный прямоугольник: {{bbox}}",
    "drawnBboxCleared": "Нарисованный прямоугольник очищен.",
    "mapNotReady": "Карта не готова к рисованию.",
    "startDate": "Дата начала",
    "endDate": "Дата окончания",
    "additionalParams": "Дополнительные параметры поиска (JSON, только API STAC)",
    "additionalInvalid": "Дополнительные параметры поиска должны быть объектом JSON.",
    "searchItems": "Искать объекты",
    "clearResults": "Очистить результаты",
    "resultsCleared": "Результаты поиска очищены.",
    "searching": "Поиск объектов STAC…",
    "loadingMore": "Загрузка других объектов…",
    "noResults": "Объекты STAC по этим фильтрам не найдены.",
    "searchFailed": "Не удалось выполнить поиск STAC",
    "showing": "Показано объектов: {{count}}.",
    "showingOfMatched": "Показано объектов: {{count}} из {{matched}}.",
    "loadMore": "Загрузить ещё",
    "renderOptions": "Параметры отображения растра",
    "bands": "Каналы",
    "bandsPlaceholder": "например, 1 или 1,2,3 (по умолчанию: автоматически)",
    "colormap": "Цветовая карта (только одноканальные)",
    "colormapDefault": "По умолчанию для отрисовки",
    "minValue": "Минимальное значение",
    "maxValue": "Максимальное значение",
    "nodata": "Значение NoData",
    "nodataPlaceholder": "Переопределяет тег NoData в файле",
    "renderHint": "Оставьте поле пустым, чтобы значение было получено из GeoTIFF. Параметры применяются к ресурсам, добавленным после изменения.",
    "initialStatus": "Выберите каталог в STAC Index или введите URL.",
    "catalogInfo": "{{title}} · {{kind}}",
    "zoom": "Приблизить",
    "add": "Добавить",
    "download": "Скачать",
    "adding": "Добавление {{asset}}…",
    "added": "{{asset}} добавлен на карту.",
    "addUnsupported": "На карту можно добавить только ресурсы GeoTIFF/COG и GeoJSON",
    "addFailed": "Не удалось добавить ресурс",
    "cogUnsupported": "Этот хост GeoLibre не может отображать удалённые ресурсы GeoTIFF"
  },
  "vectorExport": {
    "invalidKmlCoordinatesByPosition": "Экспорт в KML не смог записать объект {{position}}, так как у него некорректные координаты.",
    "invalidKmlCoordinatesById": "Экспорт в KML не смог записать объект с ID {{id}}, так как у него некорректные координаты."
  },
  "comments": {
    "title": "Комментарии",
    "addDialogTitle": "Добавить комментарий к рецензии",
    "addDialogDescription": "Опубликуйте привязанную заметку к этому проекту для командной рецензии или как офлайн-справку.",
    "authorNameLabel": "Ваше имя (спрашивается один раз и сохраняется автоматически)",
    "authorNamePlaceholder": "например, Алекс или Сара",
    "commentLabel": "Комментарий / отзыв",
    "commentPlaceholder": "Введите здесь свою заметку или отзыв...",
    "confirmDelete": "Вы уверены, что хотите удалить эту ветку комментариев?",
    "sessionDisconnected": "Сеанс отключён.",
    "defaultAuthorName": "Автор"
  },
  "s2Plugin": {
    "title": "Сетка S2",
    "controlTitle": "Настройки сетки S2",
    "autoResolution": "Автоматическое разрешение",
    "resolution": "Разрешение",
    "cellCount": "Ячеек в области просмотра: {{count}}",
    "tooManyCells": "Эта область превышает предел в {{limit}} ячеек. Приблизьте карту или уменьшите разрешение.",
    "fillColor": "Цвет заливки",
    "fillOpacity": "Непрозрачность заливки",
    "lineColor": "Цвет контура",
    "lineWidth": "Толщина контура",
    "showLabels": "Показывать идентификаторы ячеек",
    "identifyHint": "Щёлкните по карте, чтобы определить ячейку S2.",
    "selectedCell": "Выбранная ячейка",
    "noSelection": "Ячейка не выбрана",
    "copyId": "Копировать идентификатор",
    "parent": "Родительская ячейка",
    "children": "Дочерние ячейки",
    "neighbors": "Соседние ячейки",
    "center": "Центр",
    "zoomToCell": "Приблизить к ячейке",
    "addAsLayer": "Добавить сетку как слой",
    "exportGeoJson": "Экспорт GeoJSON",
    "exportCsv": "Экспорт CSV",
    "includeNeighbors": "Включить соседние ячейки выбранной ячейки",
    "includeParents": "Включить родительские ячейки выбранной ячейки"
  },
  "a5Plugin": {
    "title": "Сетка A5",
    "controlTitle": "Настройки сетки A5",
    "autoResolution": "Автоматическое разрешение",
    "resolution": "Разрешение",
    "cellCount": "Ячеек в области просмотра: {{count}}",
    "tooManyCells": "Эта область превышает предел в {{limit}} ячеек. Приблизьте карту или уменьшите разрешение.",
    "fillColor": "Цвет заливки",
    "fillOpacity": "Непрозрачность заливки",
    "lineColor": "Цвет контура",
    "lineWidth": "Толщина контура",
    "showLabels": "Показывать идентификаторы ячеек",
    "identifyHint": "Щёлкните по карте, чтобы определить ячейку A5.",
    "selectedCell": "Выбранная ячейка",
    "noSelection": "Ячейка не выбрана",
    "copyId": "Копировать идентификатор",
    "parent": "Родительская ячейка",
    "children": "Дочерние ячейки",
    "neighbors": "Соседние ячейки",
    "center": "Центр",
    "zoomToCell": "Приблизить к ячейке",
    "addAsLayer": "Добавить сетку как слой",
    "exportGeoJson": "Экспорт GeoJSON",
    "exportCsv": "Экспорт CSV",
    "includeNeighbors": "Включить соседние ячейки выбранной ячейки",
    "includeParents": "Включить родительские ячейки выбранной ячейки"
  },
  "dggridPlugin": {
    "title": "DGGRID",
    "controlTitle": "Настройки DGGRID",
    "cellType": "Тип ячейки",
    "topologyHexagon": "Шестиугольник",
    "topologyDiamond": "Ромб",
    "topologyTriangle": "Треугольник",
    "projection": "Проекция",
    "aperture": "Апертура",
    "autoResolution": "Автоматическое разрешение",
    "resolution": "Разрешение",
    "cellCount": "Ячеек в области просмотра: {{count}}",
    "tooManyCells": "Эта область превышает предел в {{limit}} ячеек. Приблизьте карту или уменьшите разрешение.",
    "fillColor": "Цвет заливки",
    "fillOpacity": "Непрозрачность заливки",
    "lineColor": "Цвет контура",
    "lineWidth": "Толщина контура",
    "showLabels": "Показывать идентификаторы ячеек",
    "identifyHint": "Щёлкните по карте, чтобы определить ячейку DGGRID.",
    "selectedCell": "Выбранная ячейка",
    "noSelection": "Ячейка не выбрана",
    "copyId": "Копировать идентификатор",
    "parent": "Родительская ячейка",
    "children": "Дочерние ячейки",
    "neighbors": "Соседние ячейки",
    "center": "Центр",
    "zoomToCell": "Приблизить к ячейке",
    "addAsLayer": "Добавить сетку как слой",
    "exportGeoJson": "Экспорт GeoJSON",
    "exportCsv": "Экспорт CSV",
    "includeNeighbors": "Включить соседние ячейки выбранной ячейки",
    "includeParents": "Включить родительские ячейки выбранной ячейки"
  },
  "dggalPlugin": {
    "title": "DGGAL",
    "controlTitle": "Настройки DGGAL",
    "gridType": "Тип DGGS",
    "autoResolution": "Автоматическое разрешение",
    "resolution": "Разрешение",
    "cellCount": "Ячеек в области просмотра: {{count}}",
    "tooManyCells": "Эта область превышает предел в {{limit}} ячеек. Приблизьте карту или уменьшите разрешение.",
    "fillColor": "Цвет заливки",
    "fillOpacity": "Непрозрачность заливки",
    "lineColor": "Цвет контура",
    "lineWidth": "Толщина контура",
    "showLabels": "Показывать идентификаторы ячеек",
    "identifyHint": "Щёлкните по карте, чтобы определить ячейку DGGAL.",
    "selectedCell": "Выбранная ячейка",
    "noSelection": "Ячейка не выбрана",
    "copyId": "Копировать идентификатор",
    "parent": "Родительская ячейка",
    "children": "Дочерние ячейки",
    "neighbors": "Соседние ячейки",
    "center": "Центр",
    "zoomToCell": "Приблизить к ячейке",
    "addAsLayer": "Добавить сетку как слой",
    "exportGeoJson": "Экспорт GeoJSON",
    "exportCsv": "Экспорт CSV",
    "includeNeighbors": "Включить соседние ячейки выбранной ячейки",
    "includeParents": "Включить родительские ячейки выбранной ячейки"
  },
  "olcPlugin": {
    "title": "OLC",
    "controlTitle": "Настройки OLC",
    "autoResolution": "Автоматическое разрешение",
    "resolution": "Разрешение",
    "cellCount": "Ячеек в области просмотра: {{count}}",
    "tooManyCells": "Эта область превышает предел в {{limit}} ячеек. Приблизьте карту или уменьшите разрешение.",
    "fillColor": "Цвет заливки",
    "fillOpacity": "Непрозрачность заливки",
    "lineColor": "Цвет контура",
    "lineWidth": "Толщина контура",
    "showLabels": "Показывать идентификаторы ячеек",
    "identifyHint": "Щёлкните по карте, чтобы определить ячейку OLC.",
    "selectedCell": "Выбранная ячейка",
    "noSelection": "Ячейка не выбрана",
    "copyId": "Копировать идентификатор",
    "parent": "Родительская ячейка",
    "children": "Дочерние ячейки",
    "neighbors": "Соседние ячейки",
    "center": "Центр",
    "zoomToCell": "Приблизить к ячейке",
    "addAsLayer": "Добавить сетку как слой",
    "exportGeoJson": "Экспорт GeoJSON",
    "exportCsv": "Экспорт CSV",
    "includeNeighbors": "Включить соседние ячейки выбранной ячейки",
    "includeParent": "Включить родительскую ячейку выбранной ячейки"
  },
  "geohashPlugin": {
    "title": "Geohash",
    "controlTitle": "Настройки Geohash",
    "autoResolution": "Автоматическое разрешение",
    "resolution": "Разрешение",
    "cellCount": "Ячеек в области просмотра: {{count}}",
    "tooManyCells": "Эта область превышает предел в {{limit}} ячеек. Приблизьте карту или уменьшите разрешение.",
    "fillColor": "Цвет заливки",
    "fillOpacity": "Непрозрачность заливки",
    "lineColor": "Цвет контура",
    "lineWidth": "Толщина контура",
    "showLabels": "Показывать идентификаторы ячеек",
    "identifyHint": "Щёлкните по карте, чтобы определить ячейку Geohash.",
    "selectedCell": "Выбранная ячейка",
    "noSelection": "Ячейка не выбрана",
    "copyId": "Копировать идентификатор",
    "parent": "Родительская ячейка",
    "children": "Дочерние ячейки",
    "neighbors": "Соседние ячейки",
    "center": "Центр",
    "zoomToCell": "Приблизить к ячейке",
    "addAsLayer": "Добавить сетку как слой",
    "exportGeoJson": "Экспорт GeoJSON",
    "exportCsv": "Экспорт CSV",
    "includeNeighbors": "Включить соседние ячейки выбранной ячейки",
    "includeParent": "Включить родительскую ячейку выбранной ячейки"
  },
  "tilecodePlugin": {
    "title": "Tilecode",
    "controlTitle": "Настройки Tilecode",
    "autoResolution": "Автоматическое разрешение",
    "resolution": "Разрешение",
    "cellCount": "{{count}} тайлов в области",
    "tooManyCells": "Эта область превышает предел в {{limit}} тайлов. Приблизьте карту или уменьшите разрешение.",
    "fillColor": "Цвет заливки",
    "fillOpacity": "Непрозрачность заливки",
    "lineColor": "Цвет контура",
    "lineWidth": "Толщина контура",
    "showLabels": "Показывать идентификаторы тайлов",
    "identifyHint": "Щёлкните по карте, чтобы определить тайл.",
    "selectedCell": "Выбранный тайл",
    "noSelection": "Тайл не выбран",
    "copyId": "Копировать идентификатор",
    "quadkey": "Quadkey",
    "parent": "Родительский тайл",
    "children": "Дочерние тайлы",
    "neighbors": "Соседние тайлы",
    "center": "Центр",
    "zoomToCell": "Приблизить к тайлу",
    "addAsLayer": "Добавить сетку как слой",
    "exportGeoJson": "Экспорт GeoJSON",
    "exportCsv": "Экспорт CSV",
    "includeNeighbors": "Включить соседние тайлы выбранного тайла",
    "includeParent": "Включить родительский тайл выбранного тайла"
  },
  "netcdfSymbology": {
    "heading": "Символика NetCDF",
    "colorRampLabel": "Цветовая карта",
    "reverse": "Обратить цветовую карту",
    "colorMin": "Цвет мин",
    "colorMax": "Цвет макс",
    "resetRange": "Сбросить к диапазону данных",
    "openCube": "3D-куб"
  },
  "netcdfCube": {
    "heading": "3D-куб изображений",
    "close": "Закрыть",
    "settings": "Настройки",
    "setupTitle": "3D-куб изображений",
    "setupDescription": "Выберите, что читать, прежде чем строить куб. Каждый канал читается отдельно, поэтому охват и число каналов определяют, сколько это займёт.",
    "extent": "Охват",
    "extentView": "Текущий вид карты",
    "extentDraw": "Нарисовать на карте",
    "extentFull": "Полный охват слоя",
    "viewHint": "Читает то, что карта показывает в момент построения куба.",
    "fullHint": "Читает всю сетку. Медленно для куба размером со сцену.",
    "drawBbox": "Нарисовать на карте",
    "drawing": "Нарисуйте рамку на карте, чтобы задать охват куба",
    "drawHint": "Нарисуйте рамку на карте, чтобы задать охват.",
    "drawnExtent": "З {{west}}, Ю {{south}}, В {{east}}, С {{north}}",
    "detail": "Детализация",
    "detailOption": "{{size}} ячеек по стороне",
    "bands": "Каналы",
    "allBands": "Все ({{count}})",
    "rgbOverlay": "RGB-изображение сверху",
    "rgbHint": "Собирает три канала в цветное изображение, наложенное на верхнюю грань, чтобы куб узнавался как место.",
    "red": "Красный",
    "green": "Зелёный",
    "blue": "Синий",
    "planeEstimate": "{{count}} чтений каналов",
    "create": "Создать куб",
    "colorRampLabel": "Цветовая карта",
    "reverse": "Обратить",
    "showRgb": "RGB сверху",
    "rgbBands": "Каналы RGB",
    "recomposing": "чтение...",
    "zScale": "Высота",
    "slice": "Срез",
    "sliceAt": "срез на {{band}} {{units}}",
    "reading": "Чтение канала {{done}} из {{total}}...",
    "summary": "{{nx}} x {{ny}} ячеек, {{nz}} каналов вдоль {{axis}}",
    "errorNoCube": "Исходный файл этого слоя больше не открыт, поэтому куб прочитать нельзя.",
    "error": {
      "shapeMismatch": "Плоскости каналов переменной имеют разную форму, поэтому их нельзя сложить в куб.",
      "rgbShapeMismatch": "Выбранные каналы RGB не совпадают с формой куба.",
      "noBands": "У этой переменной нет каналов для чтения.",
      "noReadWindow": "Этот куб нельзя обновить на месте. Постройте его заново в настройках."
    }
  },
  "netcdfProfile": {
    "heading": "Спектральный профиль",
    "clear": "Очистить",
    "chartAria": "Выборочные значения пикселей вдоль оси каналов",
    "popOut": "Открепить",
    "dock": "Закрепить",
    "poppedOutHint": "График открыт в окне поверх карты.",
    "noValues": "Для этих пикселей нет значений для графика.",
    "exportPng": "PNG",
    "exportCsv": "CSV",
    "exportError": "Не удалось экспортировать график."
  },
  "netcdfIdentify": {
    "noData": "нет данных",
    "coordinates": "долгота, широта",
    "cell": "строка, столбец"
  }
}
