| 1 | { |
| 2 | "examples.actor.blurb": "Кто что сделал, словами: имя человека, либо агент и человек, от имени которого он действовал. Без значка и без иконки.", |
| 3 | "examples.actor.states.an-agent-acting-for-a-person": "Имя агента, затем человек, от имени которого он действовал. Когда что-то сделало само приложение, ничего не показывайте.", |
| 4 | "examples.api-tokens.blurb": "Страница API-токенов: однократный показ секрета, форма создания, список и кнопки отзыва.", |
| 5 | "examples.api-tokens.states.four-tokens-two-of-them-live": "Формы отзыва отправляются на /tokens/revoke, /tokens/revoke-agent и /tokens/revoke-all под путём самой страницы. Направьте их туда, где их обрабатывает ваше приложение.", |
| 6 | "examples.api-tokens.states.just-created-the-secret-shown-once": "Покажите это в ответе на саму форму создания и не перенаправляйте его: секрет есть только в этом ответе и больше нигде.", |
| 7 | "examples.back-nav.blurb": "Ссылка на уровень выше, над экраном просмотра или редактирования.", |
| 8 | "examples.badge.blurb": "Небольшая рамочная метка прописными буквами для статичных пометок. Это не status-pill: тот показывает статус записи.", |
| 9 | "examples.box.blurb": "Карточка раздела с отступами и заголовок, который стоит вне её.", |
| 10 | "examples.bulk-bar.blurb": "Верхняя полоса режима выбора, заменяющая панель списка: счётчик, ссылка расширить выбор и меню действий.", |
| 11 | "examples.bulk-bar.states.three-rows-selected": "Опасный пункт идёт последним: первый пункт — это то, что окружающая форма выполнит по неявному Enter.", |
| 12 | "examples.button.blurb": "Кнопки бывают четырёх видов и трёх размеров, а ссылка может выглядеть как кнопка. Индикатор, который форма показывает во время отправки, смотрите в form-foot.", |
| 13 | "examples.callout.blurb": "Единственный словарь предупреждений: цветная полоса, значок тона, необязательный жирный заголовок и один абзац текста.", |
| 14 | "examples.callout.states.negative-announced-as-an-alert": "role=\"alert\" заставляет экранный диктор объявить сообщение сразу, как оно появится. Оставьте его для сообщений, которые не могут ждать.", |
| 15 | "examples.choice-field.blurb": "Карточки вариантов: предпочтительная группа радиокнопок или флажков. Заголовок остаётся коротким, объясняет описание.", |
| 16 | "examples.confirm-form.blurb": "Строка действий на странице подтверждения. У необратимых действий свой маршрут, а не диалог, поэтому писать скрипт не для чего.", |
| 17 | "examples.confirm-form.states.ordinary-default-cancel-wording": "Ссылка отмены говорит «Отмена», это обычная формулировка. Измените её, когда собственные слова формы понятнее.", |
| 18 | "examples.detail-list.blurb": "Список определений о записи на экране подробностей. Моноширинная пометка — для машинных значений.", |
| 19 | "examples.dropdown.blurb": "Раскрывающийся блок вовсе без JavaScript: кнопка summary над панелью обычных ссылок. Ставьте его в ряд рядом с тем, на что он действует, и никогда не на отдельной строке.", |
| 20 | "examples.dropdown.states.menu-idiom": "Меню на details/summary, стоящее за меню переполнения в шапке и за фильтром панели списка, плюс применённый фильтр в виде снимаемой метки.", |
| 21 | "examples.empty-state.blurb": "Карточка пустого состояния. Пустое состояние с подсказками, с чего начать.", |
| 22 | "examples.error-page.blurb": "Всё тело ответа с ошибкой: статус, одна честная фраза, путь назад и ссылки для 500, которыми может воспользоваться администратор.", |
| 23 | "examples.error-page.states.500-server-error": "500 — единственный статус со ссылкой: администратор может найти её в логах через grep.", |
| 24 | "examples.error-page.states.anything-else-the-generic-pair": "Любой статус без собственной формулировки получает эту общую пару: заголовок, сообщающий, что что-то не так, и текст с просьбой попробовать ещё раз.", |
| 25 | "examples.field-check.blurb": "Единственный механизм переключения: настоящий флажок с видом тумблера, клавиатура и экранный диктор не страдают.", |
| 26 | "examples.field-date.blurb": "Обычное поле даты плюс комбобокс с разбором обычной речи, который добавляет datetime.js, когда у поля есть data-rst-date. Наберите в нём \"завтра\".", |
| 27 | "examples.field-date.states.enhanced-input-type-tomorrow-or-in-3-weeks": "Слова, которые оно разбирает, лежат в data-rst-date-words, здесь на языке страницы. В i18n/<lang>.json они есть на двенадцати языках, так что поле может разбирать любой язык, на котором написана страница.", |
| 28 | "examples.field-date.states.plain-the-bare-native-input": "Никаких атрибутов улучшения, поэтому datetime.js нечего найти. Родной выбор даты всё равно открывается.", |
| 29 | "examples.field-daterange.blurb": "Начало и конец как один подписанный fieldset. Дайте каждому полю свои name и id.", |
| 30 | "examples.field-daterange.states.date-and-time-seeded": "Задайте начало, оставив конец пустым, и datetime.js подставит конец на час позже. Разметка этого не делает, это делает скрипт.", |
| 31 | "examples.field-datetime.blurb": "Дата и время в одном поле, одно значение.", |
| 32 | "examples.field-datetime.states.enhanced-input-type-tomorrow-or-in-3-weeks": "Слова, которые оно разбирает, лежат в data-rst-date-words, здесь на языке страницы. В i18n/<lang>.json они есть на двенадцати языках, так что поле может разбирать любой язык, на котором написана страница.", |
| 33 | "examples.field-datetime.states.plain-the-bare-native-input": "Никаких атрибутов улучшения, поэтому datetime.js нечего найти. Родной выбор даты всё равно открывается.", |
| 34 | "examples.field-money.blurb": "Денежная сумма в одной валюте. Код валюты показан рядом с подписью и отправляется вместе с формой, так что валюта, сменившаяся, пока человек печатал, обнаружится при сохранении.", |
| 35 | "examples.field-select.blurb": "Обёртка поля вокруг обычного select. Добавьте data-rst-select, и select.js превратит его в комбобокс с фильтром; форма по-прежнему отправляет обычный select. Имеет смысл примерно с десяти вариантов.", |
| 36 | "examples.field-select.states.hand-written-with-optgroups": "Сгруппированные варианты — это optgroup, которые вы пишете сами. select.js сохраняет группы, а не выбрасывает их; select может и вовсе отказаться от улучшения с помощью data-rst-select=\"false\".", |
| 37 | "examples.field-select.states.twelve-options-the-filterable-combobox": "Добавляйте data-rst-select примерно с десяти вариантов. Если меньше, не добавляйте: поиск среди горстки пунктов — мебель, а не помощь.", |
| 38 | "examples.field-text.blurb": "Одно подписанное текстовое поле. Звёздочка обязательного поля скрыта через aria-hidden; программный сигнал — атрибут required у поля.", |
| 39 | "examples.field-text.states.the-headline-field": "Главному полю формы, заголовку или имени, задайте rst-input=\"primary\", чтобы поле было заметнее.", |
| 40 | "examples.field-textarea.blurb": "Обёртка field-text вокруг textarea.", |
| 41 | "examples.field-time.blurb": "Та же обёртка вокруг родного поля времени. Улучшение читает часы, а не календарь.", |
| 42 | "examples.field-url.blurb": "Поле веб-адреса, которое принимает example.com с https:// и без. Тот, кто читает форму, должен добавить схему и проверить адрес.", |
| 43 | "examples.field.blurb": "Подпись, поле, необязательная подсказка, пояснение и ошибка. Обычный текстовый элемент с явным ID.", |
| 44 | "examples.form-error.blurb": "Строка с итогом ошибок формы, role=\"alert\". Не выводите её, когда ошибки нет.", |
| 45 | "examples.form-foot.blurb": "Завершающая строка формы: одна главная кнопка отправки и необязательная ссылка отмены. Отмена — ссылка, потому что уйти с формы значит перейти на другую страницу.", |
| 46 | "examples.form-foot.states.idle-the-button-before-anything-happens": "Кнопка, которая что-то МЕНЯЕТ, получает состояние загрузки; кнопка, которая только что-то показывает (раскрывающийся блок, выпадающее меню, вкладка), не получает. busy.js применяет это правило к каждой кнопке отправки в каждой форме, включать ничего не нужно.", |
| 47 | "examples.form-foot.states.working-what-busy-js-writes-on-the-way-out": "Только нажатая кнопка: остальные кнопки отправки в форме сохраняют свои name и value, а сама форма защищена от повторной отправки. data-busy=\"false\" отключает это — на форме или на одной кнопке; data-busy-label заменяет текст. Без скриптов ничего этого не происходит и форма отправляется точно как всегда, так что ловить повторную отправку по-прежнему должно ваше приложение.", |
| 48 | "examples.form-layout.blurb": "Атрибуты, которые задают форме ритм и панель сохранения. Они оборачивают ряд полей, которые вы собираете сами.", |
| 49 | "examples.format-abbr.blurb": "Тег <abbr> показывает полную формулировку при наведении. На телефоне это не работает, а программы чтения с экрана часто его пропускают. В первый раз пишите слова полностью тоже.", |
| 50 | "examples.format-addresses.blurb": "Тег <address> — не для почтовых адресов. Он говорит, кто написал страницу. Адрес доставки — обычный текст. Список сотрудников — это список.", |
| 51 | "examples.format-dates.blurb": "Поместите дату в тег <time> вместе с вариантом, который может прочитать компьютер. Саму дату пишите так, как ваши читатели ожидают её увидеть. Fiesta не будет её форматировать за вас.", |
| 52 | "examples.format-durations.blurb": "Для длительности тоже используйте <time>. Машиночитаемая запись выглядит странно: PT2H30M — это 2 часа 30 минут.", |
| 53 | "examples.format-filesizes.blurb": "Показывайте округлённый размер вроде 4 МБ, а точное число байт кладите в тег <data>. Программы чтения с экрана читают то, что на экране, и тег игнорируют, поэтому округлённый размер должен быть полезен сам по себе.", |
| 54 | "examples.format-identifiers.blurb": "Их не разбивают. Заказ 4471, а не заказ 4,471. Годы, номера версий и портов — так же. Используйте rst-mono, чтобы они читались как коды, и никогда не кладите такой номер в тег <time>, даже если он похож на дату.", |
| 55 | "examples.format-money.blurb": "Храните каждую сумму целым числом в наименьших единицах валюты, например в центах, с кодом валюты рядом. Пишите её так, как принято в языке читателя. Валюта всегда берётся из ваших данных, а не от читателя.", |
| 56 | "examples.format-numbers.blurb": "Разбивайте длинные числа, чтобы их читали с одного взгляда: 54,173 по-английски, 54.173 по-немецки, ٥٤٬١٧٣ по-арабски. Никогда не показывайте длинное число сплошными цифрами. В таблице используйте цифры одинаковой ширины, чтобы колонки выстроились.", |
| 57 | "examples.format-output.blurb": "Когда страница что-то складывает, положите результат в тег <output>. Текущий итог, пересчитанная цена, обратный отсчёт.", |
| 58 | "examples.format-people.blurb": "Имя может быть на любом языке, в том числе на тех, что читаются справа налево. Когда имя стоит посреди строки, оберните его в <bdi>, иначе оно перепутает слова вокруг. Чтобы показать имя с картинкой рядом, используйте person.", |
| 59 | "examples.format-ratios.blurb": "Показать, насколько что-то заполнено, — это <meter>. Показать, докуда дошла задача, — <progress>. Число всегда печатайте рядом с полосой. Одна полоса ничего не говорит тому, кто её не видит.", |
| 60 | "examples.help.blurb": "Вопросительный знак в рамке, ведущий к статье справки. Его CSS-подсказка — украшение; ссылка несёт собственную подпись целым предложением.", |
| 61 | "examples.job-status.blurb": "Ход фоновой задачи: индикатор-вертушка, строка текста и полоса. Атрибуты data-poll говорят, откуда страница могла бы получать свежую копию и как часто. Скрипта, который это делает, в Fiesta нет, так что подключите его сами, а когда задача закончится, уберите атрибуты.", |
| 62 | "examples.job-status.states.running": "Атрибуты data-poll говорят, откуда скрипт получал бы свежую копию и как часто. В Fiesta этого ничто не делает, поэтому на этой странице задача так и остаётся выполняющейся.", |
| 63 | "examples.layout-column.blurb": "Простая центрированная страница, с которой начинается приложение: ссылка пропуска, заголовок, колонка содержимого и строка подвала для меню языка и цветовой схемы.", |
| 64 | "examples.layout-console-page.blurb": "Полоса сверху и навигационная рейка сбоку одновременно: такую форму имеет большинство административных консолей. На телефоне меню полосы открывается карточкой, а рейка становится страницей-оглавлением. JavaScript не нужен.", |
| 65 | "examples.layout-console.blurb": "Полоса сверху и навигационная рейка сбоку одновременно: такую форму имеет большинство административных консолей. На телефоне меню полосы открывается карточкой, а рейка становится страницей-оглавлением. JavaScript не нужен.", |
| 66 | "examples.layout-sidebar-page.blurb": "Навигационная рейка сбоку от страницы. На телефоне рейка становится страницей-оглавлением, а на каждой другой странице есть кнопка «назад». JavaScript не нужен.", |
| 67 | "examples.layout-sidebar.blurb": "Навигационная рейка сбоку от страницы. На телефоне рейка становится страницей-оглавлением, а на каждой другой странице есть кнопка «назад». JavaScript не нужен.", |
| 68 | "examples.layout-stage.blurb": "Одна карточка посреди фона во всю страницу — для экрана, который стоит особняком. Она нужна для экрана входа.", |
| 69 | "examples.layout-topbar.blurb": "Логотип, навигация и меню аккаунта по верхнему краю, а под страницей — подвал.", |
| 70 | "examples.list-bar-search.blurb": "Отдельная форма поиска для списков, которые только ищут. Обычная форма method=\"get\".", |
| 71 | "examples.list-bar-search.states.empty-accessible-name-from-the-catalog": "Без placeholder. Доступное имя поля — его aria-label, который приложение пишет на языке страницы.", |
| 72 | "examples.list-bar-search.states.with-a-query": "✕ — ссылка на тот же экран без запроса. Фильтр по статусу едет в скрытом поле и сохраняется.", |
| 73 | "examples.list-bar-search.states.with-a-query-on-page-4": "Номер страницы едет в скрытом поле, так что новый поиск унёс бы page=4 в выдачу, где уже нет четырёх страниц. Ссылка ✕ его убирает: направьте её на первую страницу списка.", |
| 74 | "examples.list-bar.blurb": "Панель инструментов вверху карточки списка, с поиском и фильтром.", |
| 75 | "examples.list-grid.blurb": "Настоящий словарь таблиц данных: карточка задаёт колонки один раз, строки только выбирают ячейки.", |
| 76 | "examples.list-row-action.blurb": "Одна строка списка: имя записи как основная ссылка, строка сведений и второстепенное действие.", |
| 77 | "examples.list-row-action.states.a-short-status-beside-the-name": "rst-status=\"inline\" оставляет короткий статус на строке имени на телефоне. Без него статус переходит под имя.", |
| 78 | "examples.list-search-submit.blurb": "Настоящая кнопка отправки формы поиска: визуально скрыта, но в порядке табуляции, и показывается при фокусе с клавиатуры.", |
| 79 | "examples.list-search-submit.states.default-label": "Здесь ничего не видно, пока вы не перейдёте сюда клавишей Tab.", |
| 80 | "examples.locale-menu.blurb": "Переключатель языка: меню details из POST-форм с одним полем, так что выбор отправляется вашему приложению, а читатель остаётся на том же пути.", |
| 81 | "examples.locale-menu.states.twelve-languages-current-highlighted": "Каждый язык — форма с одним полем, так что выбор языка — это POST, на который отвечает ваше приложение. Статический сайт может вместо этого использовать меню из обычных ссылок.", |
| 82 | "examples.media-grid.blurb": "Сетка плиток с изображениями. Каждая рамка 4:3, поэтому высокие снимки экрана и широкие баннеры помещаются в одну ровную сетку.", |
| 83 | "examples.media-grid.states.screenshots-a-logo-and-a-banner": "Логотипу или баннеру задайте rst-media-frame=\"contain\". Скриншот сохраняет значение по умолчанию и показывает свой верх. Плитка без описания говорит «Без описания».", |
| 84 | "examples.media-grid.states.select-mode-one-tile-selected": "Оберните сетку и bulk-bar в одну форму. Флажок каждой плитки отправляет своё значение под именем \"id\"; переименуйте его, если ваше приложение ждёт другое. Внутри формы пункты меню должны быть ссылками.", |
| 85 | "examples.meter.blurb": "Полоса заполнения вместе с числом.", |
| 86 | "examples.meter.states.over-budget": "При перерасходе полоса заполнена, а число говорит, на сколько: напишите value=\"100\", а настоящую цифру оставьте тексту.", |
| 87 | "examples.modal.blurb": "У модального окна есть собственный URL, а не состояние на клиенте: страница под ним помечена inert, панель над ней и обычная ссылка, чтобы закрыть.", |
| 88 | "examples.notice.blurb": "Подтверждение в одну строку после перенаправления: одно предложение в абзаце с role=\"status\". Не выводите его, когда сказать нечего.", |
| 89 | "examples.page-header.blurb": "Заголовочная полоса экрана: h1, необязательный подзаголовок и основное действие.", |
| 90 | "examples.pagination.blurb": "Полоса обычных пронумерованных ссылок, чтобы разбивка на страницы работала и с выключенным JavaScript.", |
| 91 | "examples.pagination.states.first-page-default-accessible-name": "aria-label у nav — просто «Навигация по страницам». Если на странице их больше одной, скажите, какой список она листает.", |
| 92 | "examples.person.blurb": "Аватар с инициалами, имя и почта. Помогает быстро узнать записи о людях.", |
| 93 | "examples.row-menu.blurb": "Прочие действия строки скрыты за кнопкой ⋮. Разрушительное действие ведёт на свою страницу подтверждения.", |
| 94 | "examples.row-menu.states.links-a-form-and-a-destructive-item": "Ставьте разрушительный пункт последним и заканчивайте его подпись на …. Он открывает страницу, которая спрашивает, прежде чем что-либо удалить.", |
| 95 | "examples.row-menu.states.links-only-for-a-list-inside-a-selection-form": "Внутри формы каждый пункт должен быть ссылкой. Действие, которое отправляет данные, проходит через собственную страницу.", |
| 96 | "examples.scheme-menu.blurb": "Переключатель цветовой схемы: меню details из POST-форм с одним полем для вариантов «Светлая», «Тёмная» и «Как в системе». При отправке выбор уходит вашему приложению; без него fiesta.js запоминает выбор в браузере.", |
| 97 | "examples.scheme-menu.states.standalone": "За ним нет приложения: у форм нет action, а с data-rst-scheme-store=\"local\" на элементе <html> fiesta.js запоминает выбор в браузере. Этот вариант использует шапка самой галереи.", |
| 98 | "examples.scheme-menu.states.three-choices-dark-current": "Каждая схема — форма с одним полем, так что выбор схемы — это POST, на который отвечает ваше приложение, и страница возвращается с выбранной схемой, отмеченной как текущая.", |
| 99 | "examples.seg-tabs.blurb": "Сегментированный переключатель из ссылок или кнопок. Текущая ссылка — это aria-current, нажатая кнопка — aria-pressed=\"true\".", |
| 100 | "examples.seg-tabs.states.buttons-that-switch-in-place": "Кнопки — для выбора, который меняет страницу на месте, например вид. Ваш скрипт переносит aria-pressed на нажатую кнопку.", |
| 101 | "examples.selbox.blurb": "Флажок выбора, который строка списка носит в режиме выбора. Его подпись повторяет, что это за строка.", |
| 102 | "examples.shell-sidebar.blurb": "Обрамление оболочки sidebar на странице с содержимым: на телефоне это кнопка возврата к оглавлению.", |
| 103 | "examples.shell-topbar.blurb": "Собственная обвязка оболочки с верхней панелью, в виде разметки. Целая страница, к которой она относится, — layout-topbar в разделе «Оболочки».", |
| 104 | "examples.side-nav.blurb": "Боковое меню внутри панели: столбец ссылок рядом с содержимым панели. В узкой панели ссылки выстраиваются в строку, которая прокручивается вбок.", |
| 105 | "examples.side-nav.states.four-sections-the-first-open": "rst-side берёт ширину у родителя. В flex-строке задайте ему flex: 1 1 0, иначе он может сжаться до нуля.", |
| 106 | "examples.signin.blurb": "Экран входа во всех состояниях, через которые он проходит: просьба ввести адрес, возвращение, после отправки ссылки, когда что-то пошло не так, и другие способы войти.", |
| 107 | "examples.signin.states.a-passkey": "Самый быстрый вход для того, у кого он есть, и ничего не нужно печатать. Предложите и второй способ: люди теряют устройства, а ключ, который не срабатывает, — это запертая дверь.", |
| 108 | "examples.signin.states.after-the-link-is-sent": "Повторите адрес как есть. Это единственный шанс заметить опечатку до того, как человек начнёт ждать письмо, которое никогда не придёт.", |
| 109 | "examples.signin.states.after-the-link-is-sent-in-another-browser": "Если адрес отправлял не этот браузер, страница его не угадывает.", |
| 110 | "examples.signin.states.an-address-that-does-not-look-right": "Сообщение относится к полю, и фокус начинается именно там.", |
| 111 | "examples.signin.states.asking-for-an-address": "Одно поле и одна кнопка. Нечего запоминать и нечего красть.", |
| 112 | "examples.signin.states.coming-back-with-an-email-link": "Адрес указан на кнопке, так что печатать ничего не нужно.", |
| 113 | "examples.signin.states.coming-back-with-keymail": "Для вернувшегося: адрес, которым он пользовался в прошлый раз, написан на кнопке, так что одно касание его отправляет. Помнить этот адрес и проверять его заново — работа вашего приложения.", |
| 114 | "examples.signin.states.email-and-password": "Если вы всё же используете пароли, оставьте ту же схему с одним главным входом и разместите сброс прямо под кнопкой, а не прячьте его.", |
| 115 | "examples.signin.states.google-apple-and-the-rest": "Мы даём кнопки, нарисованные так, как требует каждая компания. Сам вход мы не даём: его вы подключаете к своему провайдеру.", |
| 116 | "examples.signin.states.on-the-way-to-keymail": "Страница ожидания, пока человека отправляют дальше на вход. Ваше приложение само переводит страницу дальше; ссылка на случай, если этого не произойдёт.", |
| 117 | "examples.signin.states.when-keymail-could-not-confirm-it": "Кнопка меняется и вместо этого отправляет ссылку, чтобы никто не застрял.", |
| 118 | "examples.signin.states.when-keymail-was-offered-and-a-link-went-out": "Одна строка сообщает, что на этот раз отправлена ссылка. Причину она не угадывает.", |
| 119 | "examples.signin.warnings.email-and-password.body": "Люди используют их повторно, они утекают, а хранить их безопасно приходится вам. Используйте ссылку в письме вместе с ключом доступа или только ключи доступа. Разметка здесь потому, что некоторым продуктам она всё ещё нужна.", |
| 120 | "examples.signin.warnings.email-and-password.title": "Мы не рекомендуем пароли", |
| 121 | "examples.snippet.blurb": "Строка кода для копирования: код в рамке и кнопка «Копировать», которую copy.js показывает там, где у браузера есть буфер обмена.", |
| 122 | "examples.stat-band.blurb": "Ряд показателей вдоль верха панели.", |
| 123 | "examples.stat-band.states.two-to-a-line-on-a-phone": "rst-stats=\"pairs\" ставит на телефоне по два показателя в строку. Без него они идут по одному в строке.", |
| 124 | "examples.stat.blurb": "Одно число на панели, с подписью и тем, насколько оно изменилось.", |
| 125 | "examples.stat.states.a-shortened-number": "Показываете 4.1k вместо 4120? Поместите полное число в value тега <data>. Экранные дикторы читают только то, что на экране, поэтому всё, что нужно человеку, оставляйте в самом числе.", |
| 126 | "examples.stat.states.a-smaller-number": "Нужны только подпись и число. Всё остальное необязательно.", |
| 127 | "examples.stat.states.the-big-number": "Задайте одному показателю в ряду rst-stat=\"lead\", чтобы сделать его крупным. Это тот же компонент, просто больше.", |
| 128 | "examples.stat.states.when-going-down-is-good": "Цвет задаёте вы, а не компонент. Здесь число снизилось, и это хорошая новость, поэтому изменение зелёное.", |
| 129 | "examples.stat.states.when-going-up-is-bad": "Здесь число выросло, и это плохая новость, поэтому изменение красное.", |
| 130 | "examples.stat.states.when-you-cannot-say": "Не задавайте цвет, и изменение будет серым. Так и делайте, когда нельзя сказать, хорошо это или плохо.", |
| 131 | "examples.status-pill.blurb": "Статус записи в виде цветной плашки — цвет и подпись.", |
| 132 | "examples.status-pill.states.neutral": "neutral — тон по умолчанию, так что rst-tone=\"neutral\" можно было не писать.", |
| 133 | "examples.tblock.blurb": "Карточка с рамкой, тело которой раскрывается только при включённом переключателе, через :has(). Главное — переключатель; раскрытие лишь удобство отображения.", |
| 134 | "families.choices-and-actions.blurb": "Элементы, которыми выбирают из вариантов, и строки, которыми заканчивается форма. Каждый стоит внутри rst-box с отступами, потому что именно в такой карточке живёт форма.", |
| 135 | "families.choices-and-actions.title": "Выбор и действия", |
| 136 | "families.date-and-time.blurb": "Четыре поля, которые улучшает datetime.js: под каждым остаётся встроенный элемент ввода, так что читатель без скриптов получает простой элемент управления, а не сломанный.", |
| 137 | "families.date-and-time.title": "Дата и время", |
| 138 | "families.display.blurb": "Мелкие части словаря, из которых собирается экран: статус, личность, прогресс и единственная форма предупреждения.", |
| 139 | "families.display.title": "Отображение", |
| 140 | "families.form.blurb": "Поля, в которые человек что-то вводит, в тех состояниях, в которые их ставит настоящая форма. Каждое стоит внутри rst-box с отступами, потому что именно в такой карточке живёт форма.", |
| 141 | "families.form.title": "Форма", |
| 142 | "families.formats.blurb": "Как показывать даты, числа, деньги, имена и адреса — и какие из них путают друг с другом.", |
| 143 | "families.formats.title": "Даты, числа и имена", |
| 144 | "families.list-screen.blurb": "Обычный экран списка: заголовок, панель инструментов и строки, работающие и на десктопе, и на телефоне.", |
| 145 | "families.list-screen.title": "Экран списка", |
| 146 | "families.primitives.blurb": "Формы, которыми компонент быть не может, потому что они оборачивают тело, известное только вызывающему: карточки, сетки данных, меню и собственная обвязка каркасов.", |
| 147 | "families.primitives.title": "Примитивы интерфейса", |
| 148 | "families.route.blurb": "Части, которые сами по себе целый ответ, а не кусок ответа.", |
| 149 | "families.route.title": "Маршрут", |
| 150 | "families.screens.blurb": "Целые экраны, собранные из компонентов. Начните свой с одного из них.", |
| 151 | "families.screens.title": "Экраны", |
| 152 | "families.shells.blurb": "Каркасы страниц, в которых строится приложение: колонка, верхняя панель, боковая панель, консоль и сцена. Каждый открывается на всю ширину.", |
| 153 | "families.shells.title": "Оболочки", |
| 154 | "gallery.back": "Назад к дизайн-системе", |
| 155 | "gallery.brand": "Fiesta", |
| 156 | "gallery.copied": "Скопировано", |
| 157 | "gallery.copy": "Копировать", |
| 158 | "gallery.copy.failed": "Не удалось скопировать. Выделите код и скопируйте его сами.", |
| 159 | "gallery.demo.callout.body": "Каждый экран — отдельная страница, простой HTML в оболочке с боковой панелью, и работает так же с выключенным JavaScript. На телефоне разделы становятся списком, а у каждого экрана есть путь назад.", |
| 160 | "gallery.demo.heading": "Демоприложение", |
| 161 | "gallery.demo.lead": "Работающее приложение, собранное только из этой системы: сводка, список, одна открытая запись. У каждого свой адрес. Без JavaScript.", |
| 162 | "gallery.demo.open": "Открыть демоприложение", |
| 163 | "gallery.demos.app": "Демоприложение", |
| 164 | "gallery.demos.modal": "Маршрут модального окна", |
| 165 | "gallery.demos.shell": "Оболочка {shell}", |
| 166 | "gallery.example.html": "HTML показывает разметку для копирования.", |
| 167 | "gallery.example.live": "Каждый пример работает, но его ссылки никуда не ведут.", |
| 168 | "gallery.filter": "Фильтр", |
| 169 | "gallery.filter.empty": "Совпадений нет", |
| 170 | "gallery.frame.title": "{example}: {state}", |
| 171 | "gallery.html": "HTML", |
| 172 | "gallery.icons.kebab": "kebab и menu — та пара, которую стоит не путать: kebab — это три точки, означающие «ещё действия для этой строки», а menu — три линии, означающие навигацию. Оболочки при сворачивании используют menu.", |
| 173 | "gallery.icons.lead": "{total} иконок из Lucide, каждая — встроенный SVG, размер которого задаёт соседний текст через собственное правило .icon в tokens.css; здесь показан именно этот размер.", |
| 174 | "gallery.icons.lucide": "Полный набор — на {link}.", |
| 175 | "gallery.icons.names.body": "{renamed} из {total} отличаются от имени, которое публикует lucide.dev. Если последняя строка под иконкой не повторяет её имя, это одна из них. Имена останутся прежними, из какого бы набора иконки ни рисовались потом.", |
| 176 | "gallery.icons.names.heading": "Имена принадлежат Fiesta", |
| 177 | "gallery.icons.source": "Откуда взяты глифы", |
| 178 | "gallery.icons.source.body": "Lucide под лицензией ISC, скопированный в репозиторий, а не загружаемый. Выпуск содержит встроенные SVG и спрайт; галерея рисует каждую иконку так же, как это делает компонент.", |
| 179 | "gallery.kind.getting-started": "Начало работы", |
| 180 | "gallery.kind.icons": "Иконки", |
| 181 | "gallery.kind.overview": "Обзор", |
| 182 | "gallery.kind.tokens": "Токены", |
| 183 | "gallery.language": "Язык", |
| 184 | "gallery.language.current": ", сейчас {language}", |
| 185 | "gallery.locale.name": "Русский", |
| 186 | "gallery.modal.account": "Аккаунт", |
| 187 | "gallery.modal.billing": "Оплата", |
| 188 | "gallery.modal.body": "Измените имя и фото, которые показываются по всему аккаунту.", |
| 189 | "gallery.modal.close": "Закрыть настройки", |
| 190 | "gallery.modal.inapp": "В настоящем приложении ✕ вернул бы вас на экран, который виден позади.", |
| 191 | "gallery.modal.nojs": "Ссылка закрытия сделана так, чтобы работать без JS.", |
| 192 | "gallery.modal.notifications": "Уведомления", |
| 193 | "gallery.modal.own": "У модальных окон есть собственный URL.", |
| 194 | "gallery.modal.profile": "Профиль", |
| 195 | "gallery.modal.settings": "Настройки", |
| 196 | "gallery.modal.sub": "Страница, над которой открылось модальное окно. Она помечена inert, поэтому, пока панель наверху, ничто здесь не получает фокус и не доходит до экранного диктора.", |
| 197 | "gallery.nav.demos": "Демо", |
| 198 | "gallery.nav.overview": "Обзор", |
| 199 | "gallery.nav.overview.aria": "Обзор: {section}", |
| 200 | "gallery.nav.sections": "Разделы и демо", |
| 201 | "gallery.newtab": "откроется в новой вкладке", |
| 202 | "gallery.overview.intro": "Fiesta — это система дизайна Rastrillo как самостоятельный проект: согласованные, отточенные, доступные компоненты для любого сайта или приложения, с любым стеком или без него, без JavaScript или с самым малым его количеством, на двенадцати языках, на чистом современном HTML и CSS. Одна таблица стилей, и готово; разметку можно копировать и переделывать как угодно.", |
| 203 | "gallery.overview.next": "Куда дальше", |
| 204 | "gallery.prefs": "Настройки отображения", |
| 205 | "gallery.primitives.modal.live": "Посмотрите его вживую по тому URL, которому он принадлежит", |
| 206 | "gallery.primitives.sidebar.live": "Откройте демо каркаса с боковой панелью — отдельный просмотр.", |
| 207 | "gallery.primitives.topbar.live": "Откройте демо каркаса с верхней панелью — отдельный просмотр для него.", |
| 208 | "gallery.route.tokens": "Все пользовательские свойства, из которых собрана система: цвет и шрифт темы, а также шкалы размера, отступов и скругления.", |
| 209 | "gallery.routes": "В приложении это вело бы на {routes}. Здесь его ссылки и формы никуда не ведут.", |
| 210 | "gallery.routes.getting-started": "Что входит в поставку: таблица стилей по одной ссылке, каждая тема, необязательные скрипты и строки, и сколько весит каждый файл.", |
| 211 | "gallery.routes.icons": "Каждый slug иконки в том размере, в каком её рисуют компоненты, с файлом для копирования и её именем на lucide.dev.", |
| 212 | "gallery.shell.open": "Открыть оболочку {shell}", |
| 213 | "gallery.skip": "Перейти к содержимому", |
| 214 | "gallery.started.file.anchor-js": "Удерживает меню выпадающего списка на экране в браузерах без якорного позиционирования CSS. Там, где оно есть, ничего не делает: удалите файл, когда оно появится во всех браузерах, которые вы поддерживаете.", |
| 215 | "gallery.started.file.bundle": "Токены и тема {theme} в одном файле: каждый класс компонентов, каждая шкала и цвета, каждый объявлен один раз парой light-dark().", |
| 216 | "gallery.started.file.busy-js": "Правило занятости: пока форма отправляется, её кнопка показывает индикатор не меньше 650ms и не даёт отправить второй раз, а «Назад» возвращает её как было.", |
| 217 | "gallery.started.file.calendar-js": "Сетка месяца, которую открывает кнопка календаря этого поля. Бездействует, пока datetime.js не запросит панель; удаляется отдельно: без неё кнопка возвращается к собственному выбору браузера.", |
| 218 | "gallery.started.file.copy-js": "Кнопка «Копировать» у сниппета: копирует код, пишет «Скопировано» и остаётся скрытой там, где у браузера нет буфера обмена. Удаляется отдельно.", |
| 219 | "gallery.started.file.datetime-js": "Ввод дат на естественном языке. Бездействует, пока поле не подключится через data-rst-date или data-rst-time; удаляется отдельно.", |
| 220 | "gallery.started.file.fiesta-js": "Улучшения, которые нужны большинству страниц: меню, закрывающиеся по щелчку снаружи и по Escape, перетаскивание переключателя, нажатое состояние в iOS и меню цветовой схемы. Загружайте его первым.", |
| 221 | "gallery.started.file.light-js": "Свет, который читают стили глубины: тени, освещение которых зависит от времени суток, и блик на кнопке под указателем. Удалите его ради неподвижного дизайна.", |
| 222 | "gallery.started.file.select-js": "Комбобокс с поиском для field-select. Бездействует, пока select не подключится через data-rst-select; удаляется отдельно.", |
| 223 | "gallery.started.file.shell-css": "Сдвиг между страницами на телефоне, для оболочек sidebar и console. Удаляется вместе с shell.js.", |
| 224 | "gallery.started.file.shell-js": "Навигация на телефоне для оболочек sidebar и console: сдвиг между страницами, «Назад», который использует историю, и фокус, возвращённый на раздел, откуда вы ушли. Удаляется отдельно.", |
| 225 | "gallery.started.file.sprite": "Спрайт с одним symbol на каждую иконку — для сайта, который отдаёт свою копию Fiesta. С CDN вместо этого встраивайте SVG из icons/<slug>.svg.", |
| 226 | "gallery.started.file.strings": "Слова, которые select.js, datetime.js и copy.js выводят на экран, на языке {language}. Загружайте тот файл, что совпадает с lang вашей страницы.", |
| 227 | "gallery.started.file.theme": "Цвет, гарнитура и форма для темы {theme}: один блок :root, где каждый цвет объявлен один раз парой light-dark().", |
| 228 | "gallery.started.file.tokens": "Структура: все классы компонентов, все шкалы и ни одного цветового литерала. Один и тот же файл при любой теме.", |
| 229 | "gallery.started.file.transition-js": "Не даёт записать ошибку при пропуске перехода на страницах column, stage и topbar. Загружайте его до таблиц стилей, без defer. Страницам sidebar и console он не нужен.", |
| 230 | "gallery.started.lead": "Fiesta — это одна таблица стилей и горстка необязательных скриптов. Всё работает с выключенными скриптами; скрипты — улучшения, каждый в своём файле, так что вы загружаете те, что использует страница, и ничего больше.", |
| 231 | "gallery.started.link.body": "Подключите fiesta.css с CDN, и ваша разметка получит стили. /1/ — самая новая 1.x; изменение, которое сломало бы существующую разметку, — это новая мажорная версия. Закрепите точную версию, когда нужны байты, которые никогда не меняются.", |
| 232 | "gallery.started.link.heading": "Одна ссылка", |
| 233 | "gallery.started.own.body": "Возьмите из выпуска tokens.css и одну тему или объединённый файл и отдавайте их со своим сайтом; у файлов в releases/<version>/ в репозитории есть SHA256SUMS. Подключайте tokens.css первым.", |
| 234 | "gallery.started.own.heading": "Своя копия на своём сервере", |
| 235 | "gallery.started.scripts": "Скрипты", |
| 236 | "gallery.started.scripts.body": "fiesta.js закрывает меню, позволяет перетаскивать ручку переключателя, даёт iOS нажатое состояние и управляет меню цветовой схемы; загружайте его первым. busy.js, light.js, anchor.js, shell.js, transition.js, copy.js, select.js, datetime.js и calendar.js бездействуют, пока страница не использует то, что они улучшают, и каждый можно удалить отдельно. calendar.js загружайте последним.", |
| 237 | "gallery.started.stylesheets": "Таблицы стилей", |
| 238 | "gallery.started.stylesheets.body": "fiesta.css — это tokens.css и тема Day вместе, без комментариев, меньше 25 KiB после gzip. Токены задают раскладку и поведение каждого компонента; тема их раскрашивает. fiesta-plain.css и fiesta-signal.css — те же токены с темами Plain и Signal. Страница с оболочкой sidebar или console подключает ещё и shell.css; больше он никому не нужен.", |
| 239 | "gallery.started.total": "Страница, подключающая fiesta.css и все скрипты, получает {raw} CSS и JavaScript в исходном виде, {gzip} после gzip.", |
| 240 | "gallery.started.upgrading": "Обновление", |
| 241 | "gallery.started.upgrading.body": "Страница на /1/ получает каждый выпуск 1.x в день его выхода; что изменилось, сказано в журнале изменений. Страница, закреплённая на точной версии, меняется, когда вы меняете ссылку, и не раньше.", |
| 242 | "gallery.started.weight": "{raw} в исходном виде · {gzip} после gzip · {stripped} после gzip без комментариев", |
| 243 | "gallery.started.weights": "Сколько весит каждый файл", |
| 244 | "gallery.started.weights.note": "Размеры в KiB. Посетитель скачивает версию после gzip.", |
| 245 | "gallery.step.next": "Дальше: {page}", |
| 246 | "gallery.step.prev": "Назад: {page}", |
| 247 | "gallery.steps.label": "Назад и дальше", |
| 248 | "gallery.theme.label": "Тема", |
| 249 | "gallery.title": "{page} · Fiesta · {theme}", |
| 250 | "gallery.tokens.group.accent": "Акцент", |
| 251 | "gallery.tokens.group.controls": "Элементы управления", |
| 252 | "gallery.tokens.group.depth": "Глубина", |
| 253 | "gallery.tokens.group.radius": "Скругление", |
| 254 | "gallery.tokens.group.spacing": "Отступы", |
| 255 | "gallery.tokens.group.status-tones": "Тона статусов", |
| 256 | "gallery.tokens.group.surfaces-and-lines": "Поверхности и линии", |
| 257 | "gallery.tokens.group.text": "Текст", |
| 258 | "gallery.tokens.group.type-choices": "Типографические решения", |
| 259 | "gallery.tokens.group.type-family": "Семейство шрифтов", |
| 260 | "gallery.tokens.group.type-scale": "Шкала кегля", |
| 261 | "gallery.tokens.lead": "Пользовательские свойства, которые читает каждый компонент. Цвет, гарнитура и форма берутся из темы, css/themes/{theme}.css. Шкала шрифта и шаги отступов — это структура, одинаковая во всех темах, и берутся из css/tokens.css.", |
| 262 | "gallery.tokens.note": "Показаны светлые значения. Каждый цвет объявлен один раз парой light-dark(), а образцы следуют меню схемы выше. Минимумы WCAG 2.2 AA: 4.5:1 для текста, 3:1 для рамок элементов управления.", |
| 263 | "gallery.up": "Назад: {name}", |
| 264 | "gallery.up.label": "Разделы", |
| 265 | "gallery.view.desktop": "Компьютер", |
| 266 | "gallery.view.legend": "Предпросмотр", |
| 267 | "gallery.view.mobile": "Телефон", |
| 268 | "gallery.wrap": "Поместите это внутрь {wrapper}.", |
| 269 | "labels.actor.a-person": "Человек", |
| 270 | "labels.actor.an-agent-acting-for-a-person": "Агент, действующий от имени человека", |
| 271 | "labels.api-tokens.four-tokens-two-of-them-live": "Четыре токена, два из них действуют", |
| 272 | "labels.api-tokens.just-created-the-secret-shown-once": "Только что создан: секрет показан один раз", |
| 273 | "labels.api-tokens.no-tokens-yet": "Токенов пока нет", |
| 274 | "labels.back-nav.back-to-a-record": "Назад к записи", |
| 275 | "labels.badge.negative": "negative", |
| 276 | "labels.badge.neutral": "neutral", |
| 277 | "labels.badge.no-tone-quiet-default": "Без тона (тихое значение по умолчанию)", |
| 278 | "labels.badge.positive": "positive", |
| 279 | "labels.badge.warning": "warning", |
| 280 | "labels.bulk-bar.three-rows-selected": "Выбрано три строки", |
| 281 | "labels.callout.info": "info", |
| 282 | "labels.callout.negative": "negative", |
| 283 | "labels.callout.negative-announced-as-an-alert": "negative, объявляется как предупреждение", |
| 284 | "labels.callout.positive": "positive", |
| 285 | "labels.callout.warning": "warning", |
| 286 | "labels.choice-field.pick-any": "Выберите любые", |
| 287 | "labels.choice-field.pick-one": "Выберите одно", |
| 288 | "labels.confirm-form.destructive": "Необратимое действие", |
| 289 | "labels.confirm-form.ordinary-default-cancel-wording": "Обычный случай, текст отмены по умолчанию", |
| 290 | "labels.detail-list.four-facts-one-machine-ish": "Четыре факта, один машинный", |
| 291 | "labels.dropdown.a-filter-menu-with-one-choice-applied": "Меню фильтра с одним применённым выбором", |
| 292 | "labels.empty-state.sentence-only": "Только фраза", |
| 293 | "labels.empty-state.with-a-post-call-to-action": "С призывом к действию через POST", |
| 294 | "labels.error-page.403-forbidden": "403: нет доступа", |
| 295 | "labels.error-page.404-not-found": "404: не найдено", |
| 296 | "labels.error-page.422-unprocessable": "422: не удалось обработать", |
| 297 | "labels.error-page.500-server-error": "500: ошибка сервера", |
| 298 | "labels.error-page.503-unavailable": "503: недоступно", |
| 299 | "labels.error-page.anything-else-the-generic-pair": "Всё остальное: общая пара", |
| 300 | "labels.field-check.disabled": "Отключено", |
| 301 | "labels.field-check.off": "Выключено", |
| 302 | "labels.field-check.on": "Включено", |
| 303 | "labels.field-date.bounded": "С границами", |
| 304 | "labels.field-date.enhanced-input-type-tomorrow-or-in-3-weeks": "Улучшенное поле: введите «завтра» или «через 3 недели»", |
| 305 | "labels.field-date.plain-the-bare-native-input": "Plain: голое родное поле", |
| 306 | "labels.field-date.required-with-an-error": "Обязательное, с ошибкой", |
| 307 | "labels.field-daterange.date-and-time-seeded": "Дата и время, с начальными значениями", |
| 308 | "labels.field-daterange.dates-only-with-an-error-on-the-end": "Только даты, с ошибкой на конце", |
| 309 | "labels.field-datetime.bounded": "С границами", |
| 310 | "labels.field-datetime.enhanced-input-type-tomorrow-or-in-3-weeks": "Улучшенное поле: введите «завтра» или «через 3 недели»", |
| 311 | "labels.field-datetime.plain-the-bare-native-input": "Plain: голое родное поле", |
| 312 | "labels.field-datetime.required-with-an-error": "Обязательное, с ошибкой", |
| 313 | "labels.field-money.bare": "Без ничего", |
| 314 | "labels.field-money.with-a-hint": "С подсказкой", |
| 315 | "labels.field-money.with-an-error": "С ошибкой", |
| 316 | "labels.field-select.hand-written-with-optgroups": "Написан вручную, с optgroup", |
| 317 | "labels.field-select.required-with-an-error": "Обязательное, с ошибкой", |
| 318 | "labels.field-select.three-options-a-native-select": "Три варианта: обычный select", |
| 319 | "labels.field-select.twelve-options-plain-the-enhancement-opted-out": "Двенадцать вариантов, Plain: от улучшения отказались", |
| 320 | "labels.field-select.twelve-options-the-filterable-combobox": "Двенадцать вариантов: комбобокс с фильтром", |
| 321 | "labels.field-text.bare": "Без ничего", |
| 322 | "labels.field-text.required": "Обязательное", |
| 323 | "labels.field-text.the-headline-field": "Главное поле", |
| 324 | "labels.field-text.with-a-hint": "С подсказкой", |
| 325 | "labels.field-text.with-an-error": "С ошибкой", |
| 326 | "labels.field-textarea.bare": "Без ничего", |
| 327 | "labels.field-textarea.required": "Обязательное", |
| 328 | "labels.field-textarea.with-a-hint": "С подсказкой", |
| 329 | "labels.field-textarea.with-an-error": "С ошибкой", |
| 330 | "labels.field-time.bounded": "С границами", |
| 331 | "labels.field-time.enhanced-input-type-half-seven-or-noon": "Улучшенное поле: введите «полвосьмого» или «полдень»", |
| 332 | "labels.field-time.plain-the-bare-native-input": "Plain: голое родное поле", |
| 333 | "labels.field-time.required-with-an-error": "Обязательное, с ошибкой", |
| 334 | "labels.field-url.bare": "Без ничего", |
| 335 | "labels.field-url.with-a-hint": "С подсказкой", |
| 336 | "labels.field-url.with-an-error": "С ошибкой", |
| 337 | "labels.field.bare": "Без ничего", |
| 338 | "labels.field.required": "Обязательное", |
| 339 | "labels.field.short": "Короткое", |
| 340 | "labels.field.the-headline-field": "Главное поле", |
| 341 | "labels.field.with-a-hint": "С подсказкой", |
| 342 | "labels.field.with-an-error": "С ошибкой", |
| 343 | "labels.field.with-help-under-the-control": "Со справкой под элементом управления", |
| 344 | "labels.form-error.a-rejected-submission": "Отклонённая отправка", |
| 345 | "labels.form-foot.idle-the-button-before-anything-happens": "В покое: кнопка до того, как что-либо произошло", |
| 346 | "labels.form-foot.save-and-cancel": "Сохранить и отменить", |
| 347 | "labels.form-foot.submit-only": "Только отправка", |
| 348 | "labels.form-foot.working-what-busy-js-writes-on-the-way-out": "Работает: что пишет busy.js, когда форма уходит", |
| 349 | "labels.job-status.failed": "Не удалось", |
| 350 | "labels.job-status.finished": "Готово", |
| 351 | "labels.job-status.running": "Выполняется", |
| 352 | "labels.list-bar-search.empty-accessible-name-from-the-catalog": "Пусто, доступное имя берётся из каталога", |
| 353 | "labels.list-bar-search.with-a-query": "С запросом", |
| 354 | "labels.list-bar-search.with-a-query-on-page-4": "С запросом, на странице 4", |
| 355 | "labels.list-bar.search-with-a-filter-dropdown": "Поиск с выпадающим фильтром", |
| 356 | "labels.list-row-action.a-short-status-beside-the-name": "Короткий статус рядом с именем", |
| 357 | "labels.list-row-action.lead-marker-status-and-an-action": "Начальная метка, статус и одно действие", |
| 358 | "labels.list-row-action.name-and-meta-line-only": "Только имя и строка сведений", |
| 359 | "labels.list-search-submit.default-label": "Подпись по умолчанию", |
| 360 | "labels.locale-menu.twelve-languages-current-highlighted": "Двенадцать языков, текущий выделен.", |
| 361 | "labels.media-grid.screenshots-a-logo-and-a-banner": "Снимки экрана, логотип и баннер", |
| 362 | "labels.media-grid.select-mode-one-tile-selected": "Режим выбора, выбрана одна плитка", |
| 363 | "labels.meter.empty": "Пусто", |
| 364 | "labels.meter.full": "Заполнено", |
| 365 | "labels.meter.nearly-full": "Почти заполнено", |
| 366 | "labels.meter.over-budget": "Сверх лимита", |
| 367 | "labels.meter.part-way": "Наполовину", |
| 368 | "labels.notice.a-saved-message": "Сообщение о сохранении", |
| 369 | "labels.page-header.title-only": "Только заголовок", |
| 370 | "labels.page-header.title-subhead-and-a-primary-action": "Заголовок, подзаголовок и одно главное действие", |
| 371 | "labels.pagination.first-page-default-accessible-name": "Первая страница, доступное имя по умолчанию", |
| 372 | "labels.pagination.middle-of-a-long-list": "Середина длинного списка", |
| 373 | "labels.person.large-the-show-header-size": "Крупный: размер для шапки экрана просмотра", |
| 374 | "labels.person.name-and-email": "Имя и почта", |
| 375 | "labels.person.no-initial": "Без инициала", |
| 376 | "labels.row-menu.links-a-form-and-a-destructive-item": "Ссылки, форма и разрушительный пункт", |
| 377 | "labels.row-menu.links-only-for-a-list-inside-a-selection-form": "Только ссылки, для списка внутри формы выбора", |
| 378 | "labels.scheme-menu.standalone": "Сам по себе: страница запоминает выбор", |
| 379 | "labels.scheme-menu.three-choices-dark-current": "Три варианта, выбрана Тёмная.", |
| 380 | "labels.seg-tabs.buttons-that-switch-in-place": "Кнопки, которые переключают на месте", |
| 381 | "labels.seg-tabs.two-sections": "Два раздела", |
| 382 | "labels.side-nav.four-sections-the-first-open": "Четыре раздела, открыт первый", |
| 383 | "labels.signin.a-passkey": "Ключ доступа", |
| 384 | "labels.signin.after-the-link-is-sent": "После отправки ссылки", |
| 385 | "labels.signin.after-the-link-is-sent-in-another-browser": "После отправки ссылки, в другом браузере", |
| 386 | "labels.signin.an-address-that-does-not-look-right": "Адрес, который выглядит неправильно", |
| 387 | "labels.signin.asking-for-an-address": "Запрос адреса", |
| 388 | "labels.signin.coming-back-with-an-email-link": "Возвращение по ссылке из письма", |
| 389 | "labels.signin.coming-back-with-keymail": "Возвращение через Keymail", |
| 390 | "labels.signin.email-and-password": "Почта и пароль", |
| 391 | "labels.signin.google-apple-and-the-rest": "Google, Apple и остальные", |
| 392 | "labels.signin.on-the-way-to-keymail": "По пути в Keymail", |
| 393 | "labels.signin.when-keymail-could-not-confirm-it": "Когда Keymail не смог подтвердить", |
| 394 | "labels.signin.when-keymail-was-offered-and-a-link-went-out": "Когда предлагался Keymail, а ушла ссылка", |
| 395 | "labels.snippet.a-line-to-copy": "Строка для копирования", |
| 396 | "labels.stat-band.two-to-a-line-on-a-phone": "По два в строке на телефоне", |
| 397 | "labels.stat.a-shortened-number": "Сокращённое число", |
| 398 | "labels.stat.a-smaller-number": "Число поменьше", |
| 399 | "labels.stat.the-big-number": "Большое число", |
| 400 | "labels.stat.when-going-down-is-good": "Когда снижение: это хорошо", |
| 401 | "labels.stat.when-going-up-is-bad": "Когда рост: это плохо", |
| 402 | "labels.stat.when-you-cannot-say": "Когда сказать нельзя", |
| 403 | "labels.status-pill.negative": "negative", |
| 404 | "labels.status-pill.neutral": "neutral", |
| 405 | "labels.status-pill.positive": "positive", |
| 406 | "labels.status-pill.warning": "warning", |
| 407 | "pages.idioms.box.body": "У rst-list и rst-card намеренно нет отступов: они держат череду строк, а каждая строка отбивает себя сама. Положите внутрь форму, абзац, полосу ссылок или что угодно, что не строка, и это отрисуется вплотную к границе; текст, касающийся края, и есть примета. Карточка с отступами для произвольного содержимого: rst-box, а её заголовок стоит перед ней соседним rst-box-head.", |
| 408 | "pages.idioms.box.title": "Какая карточка какая", |
| 409 | "pages.idioms.list-grid.body": "Экран — это столбец: page-header, затем section-header и карточка, затем следующий section-header и карточка, в порядке чтения. Горизонтальная раскладка оставлена тем приёмам, которые её несут: rst-box-head, rst-field-row, rst-lbar, ячейки rst-lrow, rst-seg-tabs.", |
| 410 | "pages.idioms.list-grid.title": "Экраны складываются по вертикали" |
| 411 | } |
| 412 | |