Files
av-parser/src/AvParser.UI/Localization/Strings.ru.resx
T
Leonid PershinandClaude Opus 5 fe62bcf53f Add collector settings and per-source purge
Every limit the fetcher was using was a constant. They are settings now, and
CollectOptions became the single place policy lives: AppSettings.ToCollectOptions
clamps them, and the HTTP layer's FetchOptions is projected from that. One
clamping site rather than two sets of ceilings drifting apart.

Clamping rather than validating, for the reason the proxy options already do it:
a hand-edited file must not stop the app from starting. A MaxItemBytes edited to
zero would otherwise refuse everything, and a zeroed concurrency would deadlock
the run outright - so both are pulled into range instead. An empty format filter
is read as "everything", because switching every format off is far more likely
to be a slip than an instruction to collect nothing.

The media root has an ordering problem - it is a setting that decides the paths
the container is built from - so the file is read once before the container
exists rather than making every path lazy for one value.

Purge is scoped to a source and lives on the Collect page, where the source is
already chosen. Content another source also holds survives, which is what the
index's reference count was for.

The showcase hint says out loud what a hard link means: editing the browsable
copy edits the original, and deleting it frees nothing until the last name goes.
That is surprising enough to belong in the UI rather than only in the code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 21:52:43 +03:00

743 lines
32 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<root>
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Shell.ToggleNavigation" xml:space="preserve">
<value>Показать или скрыть навигацию</value>
</data>
<data name="Shell.Back" xml:space="preserve">
<value>Назад</value>
</data>
<data name="Shell.ToggleTheme" xml:space="preserve">
<value>Переключить светлую и тёмную тему</value>
</data>
<data name="Page.Dashboard" xml:space="preserve">
<value>Обзор</value>
</data>
<data name="Page.Parse" xml:space="preserve">
<value>Разбор</value>
</data>
<data name="Page.Proxies" xml:space="preserve">
<value>Прокси</value>
</data>
<data name="Page.Settings" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="Page.About" xml:space="preserve">
<value>О программе</value>
</data>
<data name="Dashboard.Tagline" xml:space="preserve">
<value>Оболочка парсера с адаптивной раскладкой. Сузьте окно — навигация свернётся сначала в рельс из иконок, а затем в выезжающую панель.</value>
</data>
<data name="Dashboard.RegisteredParsers" xml:space="preserve">
<value>Доступные парсеры</value>
</data>
<data name="Dashboard.GetStarted" xml:space="preserve">
<value>С чего начать</value>
</data>
<data name="Dashboard.OpenParser" xml:space="preserve">
<value>Открыть парсер</value>
</data>
<data name="Dashboard.DataDirectory" xml:space="preserve">
<value>КАТАЛОГ ДАННЫХ</value>
</data>
<data name="Parse.Parser" xml:space="preserve">
<value>ПАРСЕР</value>
</data>
<data name="Parse.Actions" xml:space="preserve">
<value>ДЕЙСТВИЯ</value>
</data>
<data name="Parse.Run" xml:space="preserve">
<value>Разобрать</value>
</data>
<data name="Parse.Cancel" xml:space="preserve">
<value>Отменить</value>
</data>
<data name="Parse.Sample" xml:space="preserve">
<value>Пример</value>
</data>
<data name="Parse.SampleTip" xml:space="preserve">
<value>Подставить небольшой пример</value>
</data>
<data name="Parse.LargeSample" xml:space="preserve">
<value>50k строк</value>
</data>
<data name="Parse.LargeSampleTip" xml:space="preserve">
<value>Сгенерировать 50 000 строк, чтобы были видны прогресс и отмена</value>
</data>
<data name="Parse.ClearTip" xml:space="preserve">
<value>Очистить ввод и результаты</value>
</data>
<data name="Parse.Input" xml:space="preserve">
<value>ВХОД</value>
</data>
<data name="Parse.InputPlaceholder" xml:space="preserve">
<value>Вставьте текст или нажмите «Пример»</value>
</data>
<data name="Parse.Records" xml:space="preserve">
<value>ЗАПИСИ</value>
</data>
<data name="Parse.Errors" xml:space="preserve">
<value>ОШИБКИ</value>
</data>
<data name="Parse.Count.Records.One" xml:space="preserve">
<value>{0} запись</value>
</data>
<data name="Parse.Count.Records.Few" xml:space="preserve">
<value>{0} записи</value>
</data>
<data name="Parse.Count.Records.Many" xml:space="preserve">
<value>{0} записей</value>
</data>
<data name="Parse.Count.Errors.One" xml:space="preserve">
<value>{0} ошибка</value>
</data>
<data name="Parse.Count.Errors.Few" xml:space="preserve">
<value>{0} ошибки</value>
</data>
<data name="Parse.Count.Errors.Many" xml:space="preserve">
<value>{0} ошибок</value>
</data>
<data name="Parse.Status.Done" xml:space="preserve">
<value>Разобрано: {0} за {1} мс.</value>
</data>
<data name="Parse.Status.Cancelled" xml:space="preserve">
<value>Отменено: {0} за {1} мс.</value>
</data>
<data name="Parse.Status.WithErrors" xml:space="preserve">
<value>{0}, {1}.</value>
</data>
<data name="Parse.Status.Truncated" xml:space="preserve">
<value>Показаны только первые {0}.</value>
</data>
<data name="Parse.Status.Failed" xml:space="preserve">
<value>Разбор не удался: {0}</value>
</data>
<data name="Proxies.Pool" xml:space="preserve">
<value>ПУЛ</value>
</data>
<data name="Proxies.Refresh" xml:space="preserve">
<value>Обновить</value>
</data>
<data name="Proxies.RefreshTip" xml:space="preserve">
<value>Перечитать все источники</value>
</data>
<data name="Proxies.CheckAll" xml:space="preserve">
<value>Проверить все</value>
</data>
<data name="Proxies.CheckAllTip" xml:space="preserve">
<value>Проверить каждую прокси в пуле</value>
</data>
<data name="Proxies.Search" xml:space="preserve">
<value>ПОИСК</value>
</data>
<data name="Proxies.SearchPlaceholder" xml:space="preserve">
<value>адрес или страна</value>
</data>
<data name="Proxies.Protocol" xml:space="preserve">
<value>ПРОТОКОЛ</value>
</data>
<data name="Proxies.StatusColumn" xml:space="preserve">
<value>СОСТОЯНИЕ</value>
</data>
<data name="Proxies.Alive" xml:space="preserve">
<value>живых</value>
</data>
<data name="Proxies.Total" xml:space="preserve">
<value>всего</value>
</data>
<data name="Proxies.Matched" xml:space="preserve">
<value>найдено</value>
</data>
<data name="Proxies.ListHeader" xml:space="preserve">
<value>ПРОКСИ</value>
</data>
<data name="Proxies.CustomHeader" xml:space="preserve">
<value>СВОИ ПРОКСИ</value>
</data>
<data name="Proxies.Add" xml:space="preserve">
<value>Добавить</value>
</data>
<data name="Proxies.Remove" xml:space="preserve">
<value>Удалить</value>
</data>
<data name="Proxies.RemoveTip" xml:space="preserve">
<value>Удалить выбранную свою прокси</value>
</data>
<data name="Proxies.ClearTip" xml:space="preserve">
<value>Очистить свой список</value>
</data>
<data name="Proxies.CustomHint" xml:space="preserve">
<value>По одной в строке. scheme://host:port или host:port для обычного HTTP. Поддерживается user:pass@.</value>
</data>
<data name="Proxies.Health.Alive" xml:space="preserve">
<value>живая</value>
</data>
<data name="Proxies.Health.Dead" xml:space="preserve">
<value>мёртвая</value>
</data>
<data name="Proxies.Health.Unchecked" xml:space="preserve">
<value>не проверена</value>
</data>
<data name="Proxies.Source.Feed" xml:space="preserve">
<value>фид</value>
</data>
<data name="Proxies.Source.Custom" xml:space="preserve">
<value>своя</value>
</data>
<data name="Proxies.Count.Proxies.One" xml:space="preserve">
<value>{0} прокси</value>
</data>
<data name="Proxies.Count.Proxies.Few" xml:space="preserve">
<value>{0} прокси</value>
</data>
<data name="Proxies.Count.Proxies.Many" xml:space="preserve">
<value>{0} прокси</value>
</data>
<data name="Proxies.Status.PoolHolds" xml:space="preserve">
<value>В пуле {0}.</value>
</data>
<data name="Proxies.Status.Nothing" xml:space="preserve">
<value>Нечего добавлять.</value>
</data>
<data name="Proxies.Status.Added" xml:space="preserve">
<value>Добавлено {0} из {1}.</value>
</data>
<data name="Proxies.Status.Rejected" xml:space="preserve">
<value>Не удалось разобрать: {0}</value>
</data>
<data name="Proxies.Status.RejectedMore" xml:space="preserve">
<value>и ещё {0}</value>
</data>
<data name="Proxies.Status.Answered" xml:space="preserve">
<value>Ответили {0} из {1}.</value>
</data>
<data name="Proxies.Status.CheckCancelled" xml:space="preserve">
<value>Проверка отменена.</value>
</data>
<data name="Proxies.Status.Removed" xml:space="preserve">
<value>Удалено: {0}.</value>
</data>
<data name="Proxies.Status.Cleared" xml:space="preserve">
<value>Свой список очищен.</value>
</data>
<data name="Proxies.Status.Failed" xml:space="preserve">
<value>Ошибка: {0}</value>
</data>
<data name="Settings.Appearance" xml:space="preserve">
<value>Внешний вид</value>
</data>
<data name="Settings.Theme" xml:space="preserve">
<value>ТЕМА</value>
</data>
<data name="Settings.ThemeHint" xml:space="preserve">
<value>«Системная» следует настройке светлой или тёмной темы в ОС.</value>
</data>
<data name="Settings.Language" xml:space="preserve">
<value>ЯЗЫК</value>
</data>
<data name="Settings.LanguageHint" xml:space="preserve">
<value>Применяется сразу, перезапуск не нужен.</value>
</data>
<data name="Settings.Diagnostics" xml:space="preserve">
<value>Диагностика</value>
</data>
<data name="Settings.LogLevel" xml:space="preserve">
<value>МИНИМАЛЬНЫЙ УРОВЕНЬ ЛОГА</value>
</data>
<data name="Settings.LogLevelHint" xml:space="preserve">
<value>Применяется сразу, перезапуск не нужен.</value>
</data>
<data name="Settings.SettingsFile" xml:space="preserve">
<value>ФАЙЛ НАСТРОЕК</value>
</data>
<data name="Settings.LogDirectory" xml:space="preserve">
<value>КАТАЛОГ ЛОГОВ</value>
</data>
<data name="Settings.Proxies" xml:space="preserve">
<value>Прокси</value>
</data>
<data name="Settings.Rotation" xml:space="preserve">
<value>РОТАЦИЯ</value>
</data>
<data name="Settings.LivenessCheck" xml:space="preserve">
<value>ПРОВЕРКА ЖИВОСТИ</value>
</data>
<data name="Settings.UseFeed" xml:space="preserve">
<value>Использовать публичный фид proxifly</value>
</data>
<data name="Settings.ProbeUrl" xml:space="preserve">
<value>URL ДЛЯ ПРОВЕРКИ</value>
</data>
<data name="Settings.ProbeUrlHint" xml:space="preserve">
<value>По умолчанию обычный HTTP: требование TLS отбраковало бы все прокси без CONNECT, а не только нерабочие.</value>
</data>
<data name="Settings.ProbeTimeout" xml:space="preserve">
<value>ТАЙМАУТ ПРОВЕРКИ (СЕК)</value>
</data>
<data name="Settings.ProbeConcurrency" xml:space="preserve">
<value>ПРОВЕРОК ПАРАЛЛЕЛЬНО</value>
</data>
<data name="Settings.Rotation.Sticky" xml:space="preserve">
<value>Одна прокси на сессию, смена только при отказе. Не рвёт сессии сайтов.</value>
</data>
<data name="Settings.Rotation.RoundRobin" xml:space="preserve">
<value>Новая прокси на каждый запрос. Размазывает рейт-лимиты, но ломает сессионные cookie.</value>
</data>
<data name="Settings.Rotation.WeightedRandom" xml:space="preserve">
<value>Случайно, с весом по оценке из фида и по доле реально удачных запросов.</value>
</data>
<data name="Settings.HealthCheck.Pool" xml:space="preserve">
<value>Проверить весь пул заранее и параллельно. Один прогон — и дальше без задержек.</value>
</data>
<data name="Settings.HealthCheck.Lazy" xml:space="preserve">
<value>Проверять прокси в момент выдачи. Без прогона, но каждая выдача стоит одного запроса.</value>
</data>
<data name="Settings.Breakpoints" xml:space="preserve">
<value>Точки перелома раскладки</value>
</data>
<data name="Settings.BreakpointsHint" xml:space="preserve">
<value>Ширины окна, на которых меняется форма навигации. Измените размер окна, чтобы увидеть.</value>
</data>
<data name="Settings.Breakpoint.Compact" xml:space="preserve">
<value>КОМПАКТНАЯ</value>
</data>
<data name="Settings.Breakpoint.Medium" xml:space="preserve">
<value>СРЕДНЯЯ</value>
</data>
<data name="Settings.Breakpoint.Expanded" xml:space="preserve">
<value>ШИРОКАЯ</value>
</data>
<data name="Settings.Breakpoint.CompactHint" xml:space="preserve">
<value>меньше {0} px — выезжающая панель</value>
</data>
<data name="Settings.Breakpoint.MediumHint" xml:space="preserve">
<value>{0} – {1} px — рельс из иконок</value>
</data>
<data name="Settings.Breakpoint.ExpandedHint" xml:space="preserve">
<value>от {0} px — полная боковая панель</value>
</data>
<data name="About.BuiltWith" xml:space="preserve">
<value>Собрано на</value>
</data>
<data name="About.OnDisk" xml:space="preserve">
<value>На диске</value>
</data>
<data name="About.Data" xml:space="preserve">
<value>ДАННЫЕ</value>
</data>
<data name="About.Logs" xml:space="preserve">
<value>ЛОГИ</value>
</data>
<data name="About.Component.Dotnet" xml:space="preserve">
<value>.NET</value>
</data>
<data name="About.Component.Os" xml:space="preserve">
<value>Операционная система</value>
</data>
<data name="About.Component.Avalonia" xml:space="preserve">
<value>Avalonia</value>
</data>
<data name="About.Component.ReactiveUI" xml:space="preserve">
<value>ReactiveUI</value>
</data>
<data name="About.Component.Semi" xml:space="preserve">
<value>Semi.Avalonia</value>
</data>
<data name="About.Component.NotLoaded" xml:space="preserve">
<value>не загружено</value>
</data>
<data name="Enum.AppTheme.System" xml:space="preserve">
<value>Системная</value>
</data>
<data name="Enum.AppTheme.Light" xml:space="preserve">
<value>Светлая</value>
</data>
<data name="Enum.AppTheme.Dark" xml:space="preserve">
<value>Тёмная</value>
</data>
<data name="Enum.AppLanguage.System" xml:space="preserve">
<value>Системный</value>
</data>
<data name="Enum.AppLanguage.English" xml:space="preserve">
<value>English</value>
</data>
<data name="Enum.AppLanguage.Russian" xml:space="preserve">
<value>Русский</value>
</data>
<data name="Enum.ProxyRotation.Sticky" xml:space="preserve">
<value>Липкая</value>
</data>
<data name="Enum.ProxyRotation.RoundRobin" xml:space="preserve">
<value>По кругу</value>
</data>
<data name="Enum.ProxyRotation.WeightedRandom" xml:space="preserve">
<value>Случайная с весами</value>
</data>
<data name="Enum.ProxyHealthCheck.Pool" xml:space="preserve">
<value>Весь пул</value>
</data>
<data name="Enum.ProxyHealthCheck.Lazy" xml:space="preserve">
<value>При выдаче</value>
</data>
<data name="Enum.ProxyProtocolFilter.All" xml:space="preserve">
<value>Все</value>
</data>
<data name="Enum.ProxyProtocolFilter.Http" xml:space="preserve">
<value>HTTP</value>
</data>
<data name="Enum.ProxyProtocolFilter.Https" xml:space="preserve">
<value>HTTPS</value>
</data>
<data name="Enum.ProxyProtocolFilter.Socks4" xml:space="preserve">
<value>SOCKS4</value>
</data>
<data name="Enum.ProxyProtocolFilter.Socks5" xml:space="preserve">
<value>SOCKS5</value>
</data>
<data name="Enum.ProxyHealthFilter.All" xml:space="preserve">
<value>Все</value>
</data>
<data name="Enum.ProxyHealthFilter.Alive" xml:space="preserve">
<value>Живые</value>
</data>
<data name="Enum.ProxyHealthFilter.Dead" xml:space="preserve">
<value>Мёртвые</value>
</data>
<data name="Enum.ProxyHealthFilter.Unchecked" xml:space="preserve">
<value>Не проверены</value>
</data>
<data name="Parser.delimited.Name" xml:space="preserve">
<value>Текст с разделителями</value>
</data>
<data name="Parser.delimited.Description" xml:space="preserve">
<value>Первая непустая строка — заголовок. Строки режутся по разделителю, преобладающему в нём (, ; таб |).</value>
</data>
<data name="Parser.key-value.Name" xml:space="preserve">
<value>Пары ключ / значение</value>
</data>
<data name="Parser.key-value.Description" xml:space="preserve">
<value>По паре в строке, разделитель «=» или «:». Строки с «#» — комментарии.</value>
</data>
<data name="Parse.Error.FieldCount" xml:space="preserve">
<value>Ожидалось полей: {0}, найдено: {1}.</value>
</data>
<data name="Parse.Error.NoHeader" xml:space="preserve">
<value>Во входных данных нет строки заголовка.</value>
</data>
<data name="Parse.Error.NoSeparator" xml:space="preserve">
<value>Не найден разделитель «=» или «:».</value>
</data>
<data name="Parse.Error.EmptyKey" xml:space="preserve">
<value>Пустой ключ.</value>
</data>
<data name="Proxies.Status.Ready" xml:space="preserve">
<value>В пуле {0}, живых {1}.</value>
</data>
<data name="Parse.ProxyRequired" xml:space="preserve">
<value>Этому парсеру нужна рабочая прокси, а живых нет. Проверьте список прокси или разрешите прямое подключение в настройках.</value>
</data>
<data name="Parse.GoToProxies" xml:space="preserve">
<value>Открыть прокси</value>
</data>
<data name="Settings.AllowDirect" xml:space="preserve">
<value>Разрешить сетевым парсерам работать без прокси</value>
</data>
<data name="Settings.AllowDirectHint" xml:space="preserve">
<value>Когда выключено, парсер, который куда-то ходит, не запустится, пока не ответит хотя бы одна прокси. Парсеры, читающие вставленный текст, не блокируются никогда.</value>
</data>
<data name="Settings.MinimumLive" xml:space="preserve">
<value>СКОЛЬКО ЖИВЫХ ИСКАТЬ ПРИ СТАРТЕ</value>
</data>
<data name="Settings.MinimumLiveHint" xml:space="preserve">
<value>При старте сначала проверяются те, что работали в прошлый раз, и проверка прекращается, как только набралось столько. Больше значение — дольше первый запуск.</value>
</data>
<data name="Page.Collect" xml:space="preserve">
<value>Сбор</value>
</data>
<data name="Collect.Source" xml:space="preserve">
<value>ИСТОЧНИК</value>
</data>
<data name="Collect.Actions" xml:space="preserve">
<value>ДЕЙСТВИЯ</value>
</data>
<data name="Collect.Run" xml:space="preserve">
<value>Собрать</value>
</data>
<data name="Collect.Cancel" xml:space="preserve">
<value>Остановить</value>
</data>
<data name="Collect.ClearTip" xml:space="preserve">
<value>Очистить результаты</value>
</data>
<data name="Collect.Input" xml:space="preserve">
<value>АДРЕСА</value>
</data>
<data name="Collect.InputPlaceholder" xml:space="preserve">
<value>По одному адресу в строке. Строки, начинающиеся с «#», игнорируются.</value>
</data>
<data name="Collect.Endpoint" xml:space="preserve">
<value>АДРЕС ЛИСТИНГА</value>
</data>
<data name="Collect.EndpointPlaceholder" xml:space="preserve">
<value>https://my-service.local/api/list</value>
</data>
<data name="Collect.ForceRefetch" xml:space="preserve">
<value>Скачать всё заново</value>
</data>
<data name="Collect.ForceRefetchHint" xml:space="preserve">
<value>Обычно уже обработанный адрес пропускается без запроса. Включите, чтобы игнорировать это.</value>
</data>
<data name="Collect.Items" xml:space="preserve">
<value>СОБРАНО</value>
</data>
<data name="Collect.Errors" xml:space="preserve">
<value>ОШИБКИ</value>
</data>
<data name="Collect.ProxyRequired" xml:space="preserve">
<value>Этому источнику нужна рабочая прокси, а живых нет. Проверьте список прокси или разрешите прямое подключение в настройках.</value>
</data>
<data name="Collect.GoToProxies" xml:space="preserve">
<value>Открыть прокси</value>
</data>
<data name="Collect.Item.Stored" xml:space="preserve">
<value>новое</value>
</data>
<data name="Collect.Item.Duplicate" xml:space="preserve">
<value>дубль</value>
</data>
<data name="Collect.Item.Skipped" xml:space="preserve">
<value>пропущено</value>
</data>
<data name="Collect.Status.Done" xml:space="preserve">
<value>Собрано {0} за {1} с.</value>
</data>
<data name="Collect.Status.Cancelled" xml:space="preserve">
<value>Остановлено после {0} за {1} с.</value>
</data>
<data name="Collect.Status.Duplicates" xml:space="preserve">
<value>{0} уже было.</value>
</data>
<data name="Collect.Status.Skipped" xml:space="preserve">
<value>{0} пропущено как уже обработанное.</value>
</data>
<data name="Collect.Status.Failed" xml:space="preserve">
<value>{0} не удалось.</value>
</data>
<data name="Collect.Status.Truncated" xml:space="preserve">
<value>Список обрывается на {0}; счётчики выше полные.</value>
</data>
<data name="Collect.Status.Crashed" xml:space="preserve">
<value>Сбор не удался: {0}</value>
</data>
<data name="Collect.Count.Images.One" xml:space="preserve">
<value>{0} изображение</value>
</data>
<data name="Collect.Count.Images.Few" xml:space="preserve">
<value>{0} изображения</value>
</data>
<data name="Collect.Count.Images.Many" xml:space="preserve">
<value>{0} изображений</value>
</data>
<data name="Collect.Count.Errors.One" xml:space="preserve">
<value>{0} ошибка</value>
</data>
<data name="Collect.Count.Errors.Few" xml:space="preserve">
<value>{0} ошибки</value>
</data>
<data name="Collect.Count.Errors.Many" xml:space="preserve">
<value>{0} ошибок</value>
</data>
<data name="Source.url-list.Name" xml:space="preserve">
<value>Список ссылок</value>
</data>
<data name="Source.url-list.Description" xml:space="preserve">
<value>Адреса, которые вы вставляете сами, по одному в строке.</value>
</data>
<data name="Source.own-service.Name" xml:space="preserve">
<value>Свой сервис</value>
</data>
<data name="Source.own-service.Description" xml:space="preserve">
<value>Читает листинг сервиса, который вы держите сами.</value>
</data>
<data name="Parse.Error.NotAnAddress" xml:space="preserve">
<value>«{0}» — не http- и не https-адрес.</value>
</data>
<data name="Parse.Error.NoEndpoint" xml:space="preserve">
<value>Не указан адрес листинга.</value>
</data>
<data name="Parse.Error.ListingFailed" xml:space="preserve">
<value>Не удалось прочитать листинг: {0}</value>
</data>
<data name="Parse.Error.ListingMalformed" xml:space="preserve">
<value>Листинг не удалось разобрать: {0}</value>
</data>
<data name="Parse.Error.SourceFailed" xml:space="preserve">
<value>Источник остановился: {0}</value>
</data>
<data name="Parse.Error.NoProxy" xml:space="preserve">
<value>Живых прокси нет, а прямое подключение выключено.</value>
</data>
<data name="Parse.Error.BadRedirect" xml:space="preserve">
<value>Перенаправление на адрес, который не является http.</value>
</data>
<data name="Parse.Error.RedirectLoop" xml:space="preserve">
<value>Перенаправления зациклены.</value>
</data>
<data name="Parse.Error.TooManyRedirects" xml:space="preserve">
<value>Слишком много перенаправлений.</value>
</data>
<data name="Parse.Error.NotMedia" xml:space="preserve">
<value>В ответе не изображение и не видео.</value>
</data>
<data name="Parse.Error.TooLarge" xml:space="preserve">
<value>Больше предельного размера.</value>
</data>
<data name="Parse.Error.TooSmall" xml:space="preserve">
<value>Меньше нижнего порога; вероятно, трекинг-пиксель.</value>
</data>
<data name="Parse.Error.Truncated" xml:space="preserve">
<value>Передача оборвалась.</value>
</data>
<data name="Parse.Error.Stalled" xml:space="preserve">
<value>Истекло время ожидания.</value>
</data>
<data name="Parse.Error.RateLimited" xml:space="preserve">
<value>Сайт попросил снизить темп.</value>
</data>
<data name="Parse.Error.Placeholder" xml:space="preserve">
<value>Известная заглушка мёртвой ссылки.</value>
</data>
<data name="Parse.Error.UnsupportedType" xml:space="preserve">
<value>Этот формат отключён.</value>
</data>
<data name="Parse.Error.HttpStatus" xml:space="preserve">
<value>Сайт ответил {0}.</value>
</data>
<data name="Parse.Error.RequestFailed" xml:space="preserve">
<value>Запрос не удался: {0}</value>
</data>
<data name="Parse.Error.Failed" xml:space="preserve">
<value>Не удалось собрать.</value>
</data>
<data name="Enum.ShowcaseMode.None" xml:space="preserve">
<value>Без витрины</value>
</data>
<data name="Enum.ShowcaseMode.HardLink" xml:space="preserve">
<value>Жёсткая ссылка (без лишнего места)</value>
</data>
<data name="Enum.ShowcaseMode.SymbolicLink" xml:space="preserve">
<value>Символическая ссылка</value>
</data>
<data name="Enum.ShowcaseMode.Copy" xml:space="preserve">
<value>Копия (удваивает расход диска)</value>
</data>
<data name="Settings.Collecting" xml:space="preserve">
<value>Сбор</value>
</data>
<data name="Settings.MaxConcurrentDownloads" xml:space="preserve">
<value>ЗАГРУЗОК ОДНОВРЕМЕННО</value>
</data>
<data name="Settings.MaxConcurrentPerHost" xml:space="preserve">
<value>НА ОДИН САЙТ</value>
</data>
<data name="Settings.HostDelay" xml:space="preserve">
<value>ПАУЗА МЕЖДУ ЗАПРОСАМИ (МС)</value>
</data>
<data name="Settings.HostDelayHint" xml:space="preserve">
<value>Насколько вежливо приложение обходится с одним сайтом. Обычно ограничивают именно эти два, а не общее число выше.</value>
</data>
<data name="Settings.MaxItemSize" xml:space="preserve">
<value>МАКСИМАЛЬНЫЙ РАЗМЕР (МБ)</value>
</data>
<data name="Settings.MaxItemSizeHint" xml:space="preserve">
<value>Всё, что больше, отклоняется — по возможности ещё до скачивания тела.</value>
</data>
<data name="Settings.ShowcaseMode" xml:space="preserve">
<value>ЧИТАЕМАЯ ВИТРИНА</value>
</data>
<data name="Settings.ShowcaseModeHint" xml:space="preserve">
<value>Файлы хранятся по хешу содержимого. Витрина даёт им читаемые пути по датам. Жёсткая ссылка — это второе имя того же файла: правка меняет оригинал, а удаление ничего не освобождает, пока не исчезнет последнее имя.</value>
</data>
<data name="Settings.MediaDirectory" xml:space="preserve">
<value>КАТАЛОГ МЕДИА</value>
</data>
<data name="Collect.Storage" xml:space="preserve">
<value>В хранилище {0}, {1}.</value>
</data>
<data name="Collect.Purge" xml:space="preserve">
<value>Удалить собранное этим источником</value>
</data>
<data name="Collect.PurgeHint" xml:space="preserve">
<value>Удаляет собранное этим источником. Файлы, на которые ссылается другой источник, остаются.</value>
</data>
<data name="Collect.PurgeDone" xml:space="preserve">
<value>Удалено {0}; освобождено {1}.</value>
</data>
<data name="Collect.Count.Files.One" xml:space="preserve">
<value>{0} файл</value>
</data>
<data name="Collect.Count.Files.Few" xml:space="preserve">
<value>{0} файла</value>
</data>
<data name="Collect.Count.Files.Many" xml:space="preserve">
<value>{0} файлов</value>
</data>
</root>