diff --git a/composer.json b/composer.json index 637a73af3..d90cf65a4 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ ], "require": { "php": "^8.2", - "simai/docara": "^3.7" + "simai/docara": "^3.13" }, "scripts": { "docs:viewer:check": "@php scripts/audit-example-viewer.php", @@ -37,6 +37,7 @@ "@docs:smart-attributes:check", "@docs:smart-reference:check", "@docs:example-classes:check", + "@docs:example-helpers:check", "@docs:reference-sections:check", "@docs:reference-pages:check", "@docs:layout-classes:check", @@ -65,6 +66,8 @@ "docs:tokens:check": "node scripts/build-token-reference.mjs --check", "docs:recipe:check": "@php scripts/audit-docara-recipe-primary.php", "docs:smart-attributes:check": "node scripts/audit-smart-attribute-tables.mjs", + "docs:example-helpers:sync": "node scripts/sync-example-helpers.mjs", + "docs:example-helpers:check": "node scripts/sync-example-helpers.mjs --check", "docs:smart-reference:build": "node scripts/build-smart-reference.mjs", "docs:smart-reference:check": "node scripts/build-smart-reference.mjs --check", "docs:example-classes:check": "node scripts/audit-example-classes.mjs", diff --git a/composer.lock b/composer.lock index 48dba11c1..bce89464d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b1358e78f54cf9f0eda937061d891d22", + "content-hash": "4fe057b4f11a712af8ae4e082fba768f", "packages": [ { "name": "carbonphp/carbon-doctrine-types", @@ -1570,16 +1570,16 @@ }, { "name": "simai/docara", - "version": "v3.10.0", + "version": "v3.13.0", "source": { "type": "git", "url": "https://github.com/simai/docara.git", - "reference": "cdb21dc0de9b1cf7ab54fb5a0bd7bbd7d639e94c" + "reference": "c3b066cd1bdc3a86ae07e3032750c4c3961a5353" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simai/docara/zipball/cdb21dc0de9b1cf7ab54fb5a0bd7bbd7d639e94c", - "reference": "cdb21dc0de9b1cf7ab54fb5a0bd7bbd7d639e94c", + "url": "https://api.github.com/repos/simai/docara/zipball/c3b066cd1bdc3a86ae07e3032750c4c3961a5353", + "reference": "c3b066cd1bdc3a86ae07e3032750c4c3961a5353", "shasum": "" }, "require": { @@ -1637,7 +1637,7 @@ "security": "https://github.com/simai/docara/security/policy", "source": "https://github.com/simai/docara" }, - "time": "2026-11-01T17:44:51+00:00" + "time": "2026-11-07T19:04:07+00:00" }, { "name": "symfony/clock", diff --git a/config/catalog-groups.json b/config/catalog-groups.json index f0db037ce..623950d44 100644 --- a/config/catalog-groups.json +++ b/config/catalog-groups.json @@ -112,7 +112,6 @@ "items": [ "buttons", "icon-buttons", - "button-group", "segmented", "close", "download-file", @@ -130,6 +129,7 @@ "lookup", "checkbox", "radio", + "input-choice", "switch", "slider", "range-slider", @@ -155,18 +155,23 @@ "tree", "tree-item", "dropdown", - "context-menu" + "context-menu", + "settings", + "language" ] }, "feedback": { "title": "Уведомления и состояния", "items": [ "alert", + "alert-bar", + "list-attention", "toast", "badges", "progress-bar", "progress-ring", "progress-scale", + "progress-run", "skeleton", "spinner", "tooltip", @@ -182,7 +187,12 @@ "icons", "tags", "list-item", + "list", + "list-feed", "accordion", + "tile-metric", + "list-description", + "list-timeline", "gallery", "file-preview", "reference-link", diff --git a/config/guide-release-values.json b/config/guide-release-values.json index 115b76205..53798c50a 100644 --- a/config/guide-release-values.json +++ b/config/guide-release-values.json @@ -2,19 +2,23 @@ "schema": "ui-doc.guide-release-values.v1", "why": "The release values the guide's pages name in its examples and tables, as last written. scripts/sync-framework-documentation-versions.php replaces each with the pinned value from scripts/materialize-framework-runtime.php and records the new set here; --check fails while a page still names an old one. `keep` lists the exact spans that name a past release on purpose; the sync leaves them as written.", "values": { - "ui_runtime": "e22fefb3c1f8bed4c7ad8d8745a408ecedc5029f", - "ui_record": "6534a3ebd97ded90b3f1e6f97ce79483714b7f37", - "source": "297a56c0914a42ff2c24bcba1f45ae0234e3a483", - "builder": "9c9c1b1510393b24adb98ea2ca523b26474cf0cf", - "pro": "0516a01732c81983bc88a0db311c876c21666679", - "pro_builder": "9c9c1b1510393b24adb98ea2ca523b26474cf0cf", - "release": "ui-e22fefb3c1f8", - "npm_version": "5.20261105.829" + "ui_runtime": "cb287da78ab1130641d5a628654dabc3d29e1f7a", + "ui_record": "fd651a12bcd3315cc7b71e251628b1d0d557e52d", + "source": "44a5efda6649def849c960c11ac56b2db90693b8", + "builder": "993e4be571687c7f02c78fc3c779382d861f56b6", + "pro": "b671241d4d341b2fbfd3b1f6e37703e0b330aabb", + "pro_builder": "993e4be571687c7f02c78fc3c779382d861f56b6", + "release": "ui-cb287da78ab1", + "npm_version": "5.20261109.559" }, "keep": [ { "page": "content/ru/guide/introduction/structure.md", "text": "для выпусков, начиная с `ui-82fc0ba882ba`" + }, + { + "page": "content/ru/guide/layouts/introduction/levels.md", + "text": "появились в выпуске `ui-c3015f76bcc2`" } ] } diff --git a/config/guide-structure.json b/config/guide-structure.json index 17c4b7440..991ace462 100644 --- a/config/guide-structure.json +++ b/config/guide-structure.json @@ -154,6 +154,11 @@ "title": "Одна лестница размеров", "order": 30 }, + { + "slug": "density", + "title": "Плотность", + "order": 35 + }, { "slug": "spacing", "title": "Пространство", diff --git a/config/public-variables.ru.json b/config/public-variables.ru.json index 4ddc7df8a..545d7e556 100644 --- a/config/public-variables.ru.json +++ b/config/public-variables.ru.json @@ -141,6 +141,8 @@ "The card's fill at rest; hover, press and disabled keep their own.": "Заливка карточки в покое; у наведения, нажатия и выключенного состояния свои.", "The card's border at rest; hover and disabled keep their own.": "Рамка карточки в покое; у наведения и выключенного состояния свои.", "The card's corner radius.": "Скругление углов карточки.", + "The size of a heading inside the card, its title.": "Размер заголовка внутри карточки — её названия.", + "The weight of a heading inside the card, its title.": "Насыщенность заголовка внутри карточки — её названия.", "Space around the card's content.": "Отступ вокруг содержимого карточки.", "Space between the file's name and its size.": "Расстояние между именем файла и его размером.", "The download icon's size.": "Размер значка скачивания.", @@ -265,6 +267,38 @@ "The line from one marker to the next.": "Цвет линии от маркера к следующему.", "The width of the line between the markers.": "Толщина линии между маркерами.", "The space between the steps.": "Промежуток между шагами.", - "The space between a marker and its step's content.": "Промежуток между маркером и содержимым шага." + "The space between a marker and its step's content.": "Промежуток между маркером и содержимым шага.", + "The border width on every side, a length. It is drawn inside the badge's size: the padding gives up its width, so a badge of one size is as high with a border as without.": "Толщина рамки со всех сторон, длина. Рамка рисуется внутри размера бейджа: отступ уступает ей свою ширину, поэтому бейдж одного размера одной высоты с рамкой и без неё.", + "Space before and after the text: --sf-space-1/2 by default at every size; sf-badge--tight (sf-badge tight) and a single figure take the size's own text inset, so a figure stays round; a compact badge takes the block padding and stays square.": "Отступ до и после текста: по умолчанию `--sf-space-1/2` при любом размере; `sf-badge--tight` (``) и одна цифра берут собственный отступ текста размера, поэтому цифра остаётся круглой; компактный бейдж берёт блочный отступ и остаётся квадратным.", + "The fill of a toggle that is on (pressed, aria-pressed=\"true\"); hover, press over it and disabled keep their own.": "Заливка включённой кнопки-переключателя (`pressed`, `aria-pressed=\"true\"`); наведение, нажатие и отключённое состояние рисуются поверх своими цветами.", + "The label and icon colour of a toggle that is on.": "Цвет подписи и иконки включённой кнопки-переключателя.", + "Space around the card's content, inside its border: the size's block step and the button's side padding, less the border, so the card stands as tall as a button of its size.": "Отступ вокруг содержимого карточки внутри рамки: шаг размера сверху и снизу и боковой отступ кнопки, без толщины рамки, поэтому карточка одной высоты с кнопкой того же размера.", + "Space between the icon and the file's name, and between the name and its size: the button's label inset of the size.": "Промежуток между иконкой и именем файла и между именем и размером: отступ подписи кнопки того же размера.", + "The download icon's size: the button's icon of the size (its text height).": "Размер иконки скачивания: иконка кнопки того же размера (высота её текста).", + "The icon colour of a toggle that is on.": "Цвет иконки включённой кнопки-переключателя.", + "The inset: space between the menu's edge and a row's highlight, before and after; a search header's text and a scrollbar's gaps on either side of its thumb follow it.": "Отступ от края меню до подсветки строки слева и справа; по нему же стоят текст шапки поиска и зазоры полосы прокрутки по сторонам ползунка.", + "Space above the first row's highlight and below the last; a search header is a row's height and this space above and below.": "Отступ над подсветкой первой строки и под последней; шапка поиска — высота строки и этот отступ сверху и снизу.", + "The corner radius of a row's highlight -- hover, chosen, current -- a control's by default.": "Скругление подсветки строки — при наведении, у выбранной и текущей; по умолчанию как у элементов управления.", + "How far from the top of the view a sticky menu stops (sticky): the height of a fixed header above it.": "На каком расстоянии от верха окна останавливается закреплённое меню (`sticky`): высота закреплённой шапки над ним.", + "The card's fill. The former name --sf-card-background is still read, under this one, until 2027-01-01 (C16 naming, src/core/contracts/token-aliases.v1.json).": "Заливка карточки.", + "The media box's fill, seen around contained media. The former name --sf-figure-background is still read, under this one, until 2027-01-01 (C16 naming, src/core/contracts/token-aliases.v1.json).": "Заливка блока медиа; видна вокруг вписанного изображения или видео.", + "The fill of a step's marker; a complete or current step draws its own. The former name --sf-procedure-marker-background is still read, under this one, until 2027-01-01 (C16 naming, src/core/contracts/token-aliases.v1.json).": "Заливка отметки шага; у выполненного и текущего шага своя.", + "A cap's and a key's height and least width, relative to its own letters.": "Высота и наименьшая ширина плашки и клавиши относительно их букв.", + "The room on each side of a cap's or a key's letters.": "Отступ по бокам от букв плашки или клавиши.", + "The space between the keys of a combination drawn as caps or keys.": "Промежуток между клавишами сочетания, нарисованного плашками или клавишами.", + "A cap's and a key's letters against the text around them.": "Размер букв плашки и клавиши относительно текста вокруг.", + "A cap's and a key's typeface.": "Шрифт плашки и клавиши.", + "A cap's and a key's corners.": "Скругление плашки и клавиши.", + "A cap's fill (in a button or a field): the ink it sits in, mixed. The former name --sf-kbd-background is still read, under this one, until 2027-01-01 (C16 naming, src/core/contracts/token-aliases.v1.json).": "Заливка плашки (в кнопке или поле): смесь с цветом текста вокруг.", + "A cap's letters (in a button or a field): the ink it sits in, mixed.": "Цвет букв плашки (в кнопке или поле): смесь с цветом текста вокруг.", + "A key's edge and its inset bottom edge (in running text).": "Рамка клавиши и её нижний край (в тексте).", + "The ink of plain glyphs (in a menu or a list box).": "Цвет знаков без плашек (в меню или списке выбора).", + "The code block's corners. A host that nests the block -- a code block in a chat bubble -- sets it to follow its own corner.": "Скругление блока кода. Хозяин, внутри которого стоит блок, — например, блок кода в сообщении чата — задаёт его по своему скруглению.", + "The code block's fill, under the head and the code.": "Заливка блока кода под шапкой и кодом.", + "The code block's text, where a token has no colour of its own.": "Цвет текста блока кода там, где у части кода нет своего цвета.", + "The block's edge and the line under its head.": "Цвет рамки блока и линии под его шапкой.", + "The width of the block's edge and of the line under its head.": "Толщина рамки блока и линии под его шапкой.", + "The border colour; every appearance reads it (the dark one draws no border until a width is set).": "Цвет рамки; его читает каждый вид (тёмный рисует рамку, только когда задана толщина).", + "The border width on every side: one hairline on the light appearance, none on the dark one unless set.": "Толщина рамки со всех сторон: тонкая линия у светлого вида, у тёмного рамки нет, пока её не задали." } } diff --git a/config/reference-pages.json b/config/reference-pages.json index 7e2e8c12b..cd0031ef1 100644 --- a/config/reference-pages.json +++ b/config/reference-pages.json @@ -450,25 +450,25 @@ "component": "theme", "css": false }, - "smart/actions/button-group.md": { + "smart/actions/segmented.md": { "kind": "smart", - "standard": 3 + "standard": 4 }, "smart/actions/buttons.md": { "kind": "smart", - "standard": 3 + "standard": 4 }, "smart/actions/close.md": { "kind": "smart", - "standard": 3 + "standard": 4 }, "smart/actions/download-file.md": { "kind": "smart", - "standard": 3 + "standard": 4 }, "smart/actions/icon-buttons.md": { "kind": "smart", - "standard": 3 + "standard": 4 }, "pro/admin/admin-menu.md": { "kind": "smart" @@ -535,6 +535,42 @@ "kind": "smart", "standard": 3 }, + "smart/feedback/alert-bar.md": { + "kind": "smart", + "standard": 3 + }, + "smart/content/list.md": { + "kind": "smart", + "standard": 3 + }, + "smart/content/list-feed.md": { + "kind": "smart", + "standard": 3 + }, + "smart/content/tile-metric.md": { + "kind": "smart", + "standard": 3 + }, + "smart/feedback/progress-run.md": { + "kind": "smart", + "standard": 3 + }, + "smart/content/list-timeline.md": { + "kind": "smart", + "standard": 3 + }, + "smart/content/list-description.md": { + "kind": "smart", + "standard": 3 + }, + "smart/feedback/list-attention.md": { + "kind": "smart", + "standard": 3 + }, + "smart/forms/input-choice.md": { + "kind": "smart", + "standard": 3 + }, "smart/feedback/badges.md": { "kind": "smart", "standard": 3 @@ -1933,11 +1969,11 @@ }, "smart/actions/copy-button.md": { "kind": "smart", - "standard": 3 + "standard": 4 }, "smart/actions/confirm.md": { "kind": "smart", - "standard": 3 + "standard": 4 }, "pro/admin/change-confirm.md": { "kind": "smart", @@ -1945,7 +1981,8 @@ }, "pro/chat/message-log.md": { "kind": "smart", - "standard": 2 + "standard": 2, + "alias_of": "sf-list-feed" }, "pro/chat/chat-composer.md": { "kind": "smart", @@ -2034,6 +2071,14 @@ "smart/forms/theme-generator.md": { "kind": "smart", "standard": 3 + }, + "smart/navigation/language.md": { + "kind": "smart", + "standard": 3 + }, + "smart/navigation/settings.md": { + "kind": "smart", + "standard": 3 } } } diff --git a/config/smart-reference.json b/config/smart-reference.json index f247e82c8..e2d382aa7 100644 --- a/config/smart-reference.json +++ b/config/smart-reference.json @@ -3,6 +3,7 @@ "schema_version": 2, "pages": { "avatar-group": "smart/content/avatars.md", + "button-group": "smart/actions/segmented.md", "button-close": "smart/actions/close.md", "button-copy": "smart/actions/copy-button.md", "button-icon": "smart/actions/icon-buttons.md", @@ -29,9 +30,15 @@ "view": "pro/admin/table.md", "view-properties": "pro/admin/property-view.md", "view-table": "pro/admin/table.md", - "editor": "pro/editor/editor.md" + "editor": "pro/editor/editor.md", + "alert-bar": "smart/feedback/alert-bar.md", + "list": "smart/content/list.md", + "list-feed": "smart/content/list-feed.md" + }, + "skip": { + "wizard": "New in ui-b58b5dec35e4 (sf-wizard); the site has no page for it yet. The page is a separate docs task; remove this entry when it lands.", + "wizard-step": "New in ui-b58b5dec35e4 (sf-wizard-step); the site has no page for it yet. The page is a separate docs task; remove this entry when it lands." }, - "skip": {}, "suppress": { "popover": { "sections": [ @@ -40,5 +47,60 @@ "reason": "The ui-9fb0297bb5c2 and ui-ec56cef08625 manifests carry sf-switch's accessibility (role switch); reported to ui-source 2026-10-12." } }, - "why": "Folders renamed by the R2 tag renames (ui-c3015f76bcc2; the old tags stay aliases until 2027-01-01) keep the pages written under the old names." + "why": "Folders renamed by the R2 tag renames (ui-c3015f76bcc2; the old tags stay aliases until 2027-01-01) keep the pages written under the old names.", + "event_summaries": { + "button": { + "sf-button-press": "Нажатие человеком: щелчок, Enter, пробел или сочетание `shortcut-listen`; вызов `click()` у тега его не присылает, недоступная кнопка и кнопка в загрузке — тоже" + }, + "button-copy": { + "sf-button-copy-copied": "Текст попал в буфер обмена: `text` — что скопировано, `method` — как: `native` — через буфер обмена браузера, `legacy` — запасным способом браузера", + "sf-button-copy-copy-failed": "Скопировать не удалось: `empty_source` — копировать нечего, `missing_target` — элемента из `target` нет, `ambiguous_source` — заданы и `value`, и `target`, `denied` — браузер не дал доступ к буферу, и кнопка выделила текст для Ctrl+C" + }, + "file-download": { + "sf-file-download-download": "Человек нажал на файл. Событие отменяемое: `preventDefault()` останавливает скачивание или переход, и страница может скачать файл сама" + } + }, + "attribute_summaries": { + "button-copy": { + "size": "Размер кнопки по общей линейке высот: `1/2` — по умолчанию, `1` — рядом с полем размера `1`", + "appearance": "Вид кнопки: `link` и `ghost` — без фона, пока не наведут, `outline` — с рамкой, `tonal` — с мягкой заливкой", + "success-icon": "Значок после копирования, на время `duration`", + "success-text": "Свои слова сообщения об удачном копировании; пусто — «Скопировано»", + "error-text": "Свои слова сообщения, когда скопировать не удалось" + }, + "file-download": { + "target": "Где открыть ссылку без `download`, как у атрибута `target` ссылки HTML: `_blank` — в новой вкладке, `_self` — на месте", + "aria-label": "Имя ссылки или кнопки для экранного диктора вместо имени и размера файла; назовите в нём файл" + } + }, + "slots": { + "confirm": { + "description": "Пояснение под вопросом, когда одного вопроса мало: что останется, что пропадёт" + } + }, + "css_variables": { + "confirm": { + "--sf-confirm-gap": "Расстояние между вопросом, пояснением и ответами", + "--sf-confirm-inset": "Внутренний отступ карточки (`appearance=\"card\"`)", + "--sf-confirm-radius": "Скругление карточки", + "--sf-confirm-background-color": "Заливка карточки", + "--sf-confirm-border-color": "Цвет края карточки" + }, + "file-download": { + "--sf-download-file-background-color": "Заливка в покое; у наведения, нажатия и недоступного состояния свои", + "--sf-download-file-border-color": "Цвет рамки в покое", + "--sf-download-file-radius": "Скругление", + "--sf-download-file-padding": "Внутренний отступ", + "--sf-download-file-gap": "Промежуток между иконкой, именем и размером", + "--sf-download-file-icon-size": "Размер иконки", + "--sf-download-file-icon-color": "Цвет иконки" + }, + "button-copy": { + "--sf-copy-button-display": "Как кнопка стоит в строке: значение `display`", + "--sf-copy-button-vertical-align": "Выравнивание кнопки по строке текста: значение `vertical-align`", + "--sf-copy-button-pending-opacity": "Прозрачность кнопки, пока идёт копирование", + "--sf-copy-button-success-color": "Цвет значка и подписи после удачного копирования", + "--sf-copy-button-error-color": "Цвет значка и подписи, когда скопировать не удалось" + } + } } diff --git a/config/smart-reference.ru.json b/config/smart-reference.ru.json index 7976c20e7..6b8984cab 100644 --- a/config/smart-reference.ru.json +++ b/config/smart-reference.ru.json @@ -4,59 +4,59 @@ "language": "ru", "strings": { "Indeterminate waiting indicator in one of four looks on the size ladder (arc, breathing, comet, dots), following the page's data-sf-spinner, with optional polite status announcement and Framework-owned motion.": "Индикатор неопределённого ожидания в одном из четырёх видов на лестнице размеров (arc, breathing, comet, dots), который берёт вид страницы из data-sf-spinner, с необязательным вежливым (polite) объявлением статуса и анимацией Framework.", - "Loading state: the spinner at the icon's size in place of the start icon (else the end icon); without an icon it lies over the label, which keeps its place, so the width does not change. The spinner takes the page's look (data-sf-spinner). Sets aria-busy and disables the native button.": "Состояние загрузки: spinner размером с иконку на месте начальной иконки (если её нет — конечной); без иконки он лежит поверх подписи, которая остаётся на месте, поэтому ширина не меняется. Spinner берёт вид страницы (data-sf-spinner). Ставит aria-busy и отключает нативную кнопку.", - "Loading state: the spinner in place of the icon, at the icon's size, in the page's look (data-sf-spinner). Sets aria-busy and disables the native button.": "Состояние загрузки: spinner на месте иконки, размером с неё, в виде страницы (data-sf-spinner). Ставит aria-busy и отключает нативную кнопку.", - "The spinner's look: arc, breathing (the arc grows and shrinks as it turns), comet (an arc with a fading tail) or dots. Empty: the page's look, data-sf-spinner on the nearest ancestor (html, body or a block), else arc.": "Вид спиннера: arc, breathing (дуга растёт и сжимается, пока вращается), comet (дуга с гаснущим хвостом) или dots. Пусто — вид страницы: data-sf-spinner ближайшего предка (html, body или блока), иначе arc.", - "#id of an input (its value) or an element (its text; a numbered code block without its numbers). value and target together are an error.": "`#id` поля (копируется его значение) или элемента (его текст; пронумерованный блок кода — без номеров строк). value и target вместе — ошибка.", + "Loading state: the spinner at the icon's size in place of the start icon (else the end icon); without an icon it lies over the label, which keeps its place, so the width does not change. The spinner takes the page's look (data-sf-spinner). Sets aria-busy and disables the native button.": "Идёт загрузка: на месте иконки крутится индикатор, а без иконки — поверх подписи; ширина кнопки не меняется, нажать её нельзя.", + "Loading state: the spinner in place of the icon, at the icon's size, in the page's look (data-sf-spinner). Sets aria-busy and disables the native button.": "Идёт загрузка: вместо иконки крутится индикатор, кнопку нельзя нажать.", + "The spinner's look: arc, breathing (the arc grows and shrinks as it turns), comet (an arc with a fading tail) or dots. Empty: the page's look, data-sf-spinner on the nearest ancestor (html, body or a block), else arc.": "Как выглядит индикатор: `arc` — дуга, `breathing` — дуга растёт и сжимается, `comet` — дуга с гаснущим хвостом, `dots` — точки. Пусто — как задано для страницы, иначе `arc`.", + "#id of an input (its value) or an element (its text; a numbered code block without its numbers). value and target together are an error.": "Откуда брать текст: `#id` поля (копируется его значение) или элемента (копируется его текст; у блока кода — без номеров строк). Нельзя задавать вместе с `value`.", "1/2 inside a table or panel, 2 for a whole page: the icon, title role, text and gaps follow.": "1/2 — внутри таблицы или панели, 2 — для целой страницы; от размера зависят значок, роль заголовка, текст и промежутки.", "1/3 is always the inline form; 1/2 inside a table or panel, 2 for a whole page: the icon, title role, text and gaps follow.": "1/3 — всегда компактная форма; 1/2 — внутри таблицы или панели, 2 — для целой страницы; от размера зависят значок, роль заголовка, текст и промежутки.", "A CSS custom property the width is written to on the target; empty writes inline-size.": "CSS-переменная панели, в которую записывается ширина; без неё ширина записывается в inline-size.", - "A boolean cell the record names in `editable` is a checkbox; pressing it emits sf-table-cell-set {id, key, value, revision} and the cell waits for the host. A data view sets it when the host offers inline-edit.": "Логическая ячейка, поле которой запись называет в `editable`, становится флажком; нажатие отправляет sf-table-cell-set {id, key, value, revision}, и ячейка ждёт ответа хоста. Представление данных ставит атрибут, когда хост предлагает возможность inline-edit.", + "A boolean cell the record names in `editable` is a checkbox; pressing it emits sf-table-cell-set {id, key, value, revision} and the cell waits for the host. A data view sets it when the host offers inline-edit.": "Логическая ячейка, поле которой запись называет в `editable`, становится флажком; нажатие отправляет sf-table-cell-set {id, key, value, revision}, и ячейка ждёт ответа приложения. Представление данных ставит атрибут, когда приложение предлагает возможность inline-edit.", "A button with aria-expanded and aria-controls; a press opens the explanation and it is announced in a polite status. Escape, a second press or a click outside close it and focus stays on the button. An explanation holding a link or control follows the button in the focus order and closes when focus leaves both.": "Кнопка с aria-expanded и aria-controls; нажатие открывает пояснение, и оно вежливо объявляется. Escape, повторное нажатие или щелчок мимо закрывают его, фокус остаётся на кнопке. Пояснение со ссылкой или элементом управления идёт в порядке фокуса сразу за кнопкой и закрывается, когда фокус уходит с обоих.", "A canvas node was moved to a place.": "Узел холста перемещён в место.", "A checkable cell was pressed: the record, the field, the new value and the record's revision.": "Нажат флажок в ячейке: запись, поле, новое значение и ревизия записи.", "A close button at the end of the panel's head.": "Кнопка закрытия в конце шапки панели.", "A colour control: a swatch that opens the platform picker, the colours a product already has as presets, and a way back to an inherited colour. Built as a general part because a colour is set in a theme, in a site look, on a label and on a chart series, not only on a record.": "Элемент выбора цвета: образец, который открывает системную палитру, цвета продукта в качестве пресетов и возврат к унаследованному цвету.", "A colour was committed, once per change a person makes. Carries the value and the form name; an empty value means the inherited colour applies again.": "Цвет зафиксирован — один раз на каждое изменение, которое вносит человек. Передаёт значение и имя поля формы; пустое значение означает, что снова действует унаследованный цвет.", - "A colour was committed: once when the platform picker closes or a swatch or clear is pressed, not on every step of a drag. Carries the value and the form name; an empty value means the inherited colour applies again. The picker's own change does not leave the host.": "Цвет зафиксирован: один раз, когда закрывается палитра платформы или нажат образец либо очистка, а не на каждом шаге перетаскивания. Передаёт значение и имя в форме; пустое значение означает, что снова действует унаследованный цвет. Собственное событие change палитры не выходит за пределы хост-элемента.", + "A colour was committed: once when the platform picker closes or a swatch or clear is pressed, not on every step of a drag. Carries the value and the form name; an empty value means the inherited colour applies again. The picker's own change does not leave the host.": "Цвет зафиксирован: один раз, когда закрывается палитра платформы или нажат образец либо очистка, а не на каждом шаге перетаскивания. Передаёт значение и имя в форме; пустое значение означает, что снова действует унаследованный цвет. Собственное событие change палитры не выходит за пределы тега.", "A controlled single-selection group built from SF5 buttons.": "Управляемая группа одиночного выбора из кнопок Framework.", "A count is on its way; the view shows a short wait in place of the number.": "Счётчик загружается; вместо числа отображается короткое ожидание.", - "A create surface made its object; the host may go on to its own place for it. The component shows the new object in auto mode.": "Форма создания создала объект; хост может перейти к его собственному месту. Компонент показывает новый объект в режиме auto.", + "A create surface made its object; the host may go on to its own place for it. The component shows the new object in auto mode.": "Форма создания создала объект; приложение может перейти к его собственному месту. Компонент показывает новый объект в режиме auto.", "A date or range endpoint was selected; dispatched on the host. The name to bind.": "Выбрана дата или граница диапазона; событие отправляется на элементе. Имя для привязки.", "A dialog window over the page in the shared modal stack: centered or at a side, top or bottom edge, with header, content and footer slots, focus trap, scroll lock and focus return. It can also be minimized, load its content by Ajax or into an iframe, or render inline in the page flow.": "Диалоговое окно поверх страницы в общем стеке модальных окон: по центру или у боковой, верхней или нижней границы, со слотами заголовка, содержимого и подвала, ловушкой фокуса, блокировкой прокрутки и возвратом фокуса. Окно также можно свернуть, загрузить его содержимое через Ajax или в iframe либо отрисовать встроенным в поток страницы.", "A download action was requested.": "Запрошено действие скачивания.", "A download action was requested. Bubbles, is composed and is cancelable: preventDefault() stops the built-in navigation to href.": "Запрошено действие скачивания. Всплывает, с composed: true и отменяемое: preventDefault() останавливает встроенный переход по href.", "A drag session started (picked) or ended (dropped, cancelled).": "Сеанс перетаскивания начался (элемент взят) или закончился (отпущен, отменён).", - "A drop area that opens the platform file dialog or takes dropped files, filtered by accept, and lists each file with its upload progress, an error with a retry, and removal. The host uploads; the component shows the state the host sets.": "Область перетаскивания, которая открывает файловый диалог платформы или принимает перетащенные файлы с фильтром по accept и показывает каждый файл с прогрессом загрузки, ошибкой с повтором и удалением. Загрузку выполняет хост; компонент показывает состояние, которое задаёт хост.", + "A drop area that opens the platform file dialog or takes dropped files, filtered by accept, and lists each file with its upload progress, an error with a retry, and removal. The host uploads; the component shows the state the host sets.": "Область перетаскивания, которая открывает файловый диалог платформы или принимает перетащенные файлы с фильтром по accept и показывает каждый файл с прогрессом загрузки, ошибкой с повтором и удалением. Загрузку выполняет приложение; компонент показывает состояние, которое задаёт приложение.", "A failed file was retried.": "Повторена загрузка файла с ошибкой.", "A file entered the list.": "Файл добавлен в список.", "A file failed.": "Ошибка загрузки файла.", "A file finished uploading.": "Файл загружен.", "A file was removed from the list.": "Файл удалён из списка.", - "A gear at the end of the tabs («Настроить вкладки») opens the standard menu with the tabs as a sortable list, a visibility checkbox per tab (pinned tabs fixed) and «Сбросить» in its footer. The choice is the host's: sf-tabs-settings-change {order, hidden}, sf-tabs-settings-reset, setSettings({order, hidden}).": "Шестерёнка в конце вкладок («Настроить вкладки») открывает стандартное меню: вкладки списком с перетаскиванием, флажок видимости у каждой (закреплённые неподвижны) и «Сбросить» в подвале. Выбор хранит хост: sf-tabs-settings-change {order, hidden}, sf-tabs-settings-reset, setSettings({order, hidden}).", + "A gear at the end of the tabs («Настроить вкладки») opens the standard menu with the tabs as a sortable list, a visibility checkbox per tab (pinned tabs fixed) and «Сбросить» in its footer. The choice is the host's: sf-tabs-settings-change {order, hidden}, sf-tabs-settings-reset, setSettings({order, hidden}).": "Шестерёнка в конце вкладок («Настроить вкладки») открывает стандартное меню: вкладки списком с перетаскиванием, флажок видимости у каждой (закреплённые неподвижны) и «Сбросить» в подвале. Выбор хранит приложение: sf-tabs-settings-change {order, hidden}, sf-tabs-settings-reset, setSettings({order, hidden}).", "A handle on a panel's edge that changes the panel's width by a drag, the keyboard or a double click back to the default, within limits; optionally remembered in the browser.": "Ручка на краю панели, которая меняет её ширину перетаскиванием, клавиатурой или возвращает её двойным щелчком, в заданных пределах; ширину можно запоминать в браузере.", "A menu opened through openFor() was closed. Bubbles and is composed; carries no detail.": "Меню, открытое через openFor(), закрыто. Всплывает и с composed: true; detail не передаётся.", "A native button with Framework presentation: size, appearance, colour role or status, optional start and end icons, spacing and radius. loading sets aria-busy and disables it against repeated activation.": "Нативная кнопка с оформлением Framework: размер, вид, цветовая роль или статус, необязательные иконки в начале и в конце, отступы и скругление. loading устанавливает aria-busy и отключает кнопку от повторной активации.", - "A native checkbox with a label, Framework presentation and checked, indeterminate and disabled states kept in step between the host attributes and the inner input.": "Нативный флажок с подписью, оформлением Framework и состояниями checked, indeterminate и disabled, которые согласованы между атрибутами хост-элемента и внутренним input.", + "A native checkbox with a label, Framework presentation and checked, indeterminate and disabled states kept in step between the host attributes and the inner input.": "Нативный флажок с подписью, оформлением Framework и состояниями checked, indeterminate и disabled, которые согласованы между атрибутами тега и внутренним input.", "A native multiline form control with Framework presentation, validation messaging and safe vertical resizing.": "Нативное многострочное поле формы с оформлением Framework, сообщениями валидации и безопасным изменением размера по вертикали.", "A native single-line form control with Framework presentation, validation messaging and optional mask integration.": "Нативное однострочное поле формы с оформлением Framework, сообщениями валидации и необязательной поддержкой маски.", "A node takes files dropped from the computer and says so with sf-tree-files-drop.": "Узел принимает файлы, перетащенные с компьютера, и сообщает об этом событием sf-tree-files-drop.", "A node takes the records dragged from a list (application/x-sf-records+json) and says so with sf-tree-records-drop.": "Узел принимает записи, перетащенные из списка (application/x-sf-records+json), и сообщает об этом событием sf-tree-records-drop.", "A node was selected.": "Выбран узел.", - "A panel with tabs: labels separated by |, or [{id, label}] as a property. The head (tabs and the close button) and the footer never scroll, the body does, and the panel keeps a fixed width (a ladder step, or width) whatever a tab holds.": "Панель с вкладками: подписи через | или свойство [{id, label}]. Шапка (вкладки и кнопка закрытия) и подвал не прокручиваются, прокручивается тело; ширина панели постоянна (ступень лестницы размеров или width) и не зависит от содержимого вкладки.", - "A reference value was activated; the host decides what to open and where.": "Активировано значение-ссылка; что открыть и где, решает хост.", + "A panel with tabs: labels separated by |, or [{id, label}] as a property. The head (tabs and the close button) and the footer never scroll, the body does, and the panel keeps a fixed width (a ladder step, or width) whatever a tab holds.": "Панель с вкладками: подписи через «|» или свойством `[{id, label}]`. Шапка с вкладками и кнопкой закрытия и подвал не прокручиваются, прокручивается середина; ширина панели не зависит от вкладки.", + "A reference value was activated; the host decides what to open and where.": "Активировано значение-ссылка; что открыть и где, решает приложение.", "A remove action was requested.": "Запрошено действие удаления.", "A remove action was requested. Bubbles, is composed and is cancelable; the component removes nothing itself.": "Запрошено действие удаления. Всплывает, с composed: true и отменяемое; компонент сам ничего не удаляет.", "A row of labelled step buttons, separated by an icon, for a multi-step process: marks the current, completed and error steps and moves to an enabled step when it is pressed.": "Ряд подписанных кнопок шагов, разделённых иконкой, для многошагового процесса: отмечает текущий, завершённые и ошибочные шаги и переходит к доступному шагу при нажатии.", "A row of slides moved by arrows, dots, swipe or keys, built on the shared Swiper adapter; with linked thumbnails a second slider picks the slide.": "Ряд слайдов, которые переключаются стрелками, точками, свайпом или клавишами, на основе общего адаптера Swiper; со связанными миниатюрами слайд выбирается во втором слайдере.", "A selector of the closest ancestor that is the panel; empty is the parent.": "Селектор ближайшего предка, который является панелью; без него — родитель.", - "A short line shown under an empty query, when the host has one.": "Короткая строка под пустым запросом, если она есть у хоста.", + "A short line shown under an empty query, when the host has one.": "Короткая строка под пустым запросом, если она есть у приложения.", "A short non-interactive label for a status, category, version or count beside an object, drawn in a size, appearance and colour role or status. It adds no keyboard or pointer behaviour.": "Короткая неинтерактивная метка статуса, категории, версии или количества рядом с объектом, отрисованная в заданном размере, виде и цветовой роли или статусе. Не добавляет поведения клавиатуры или указателя.", "A slider for one number or a range of two on a track: drag, click or keys move a handle by step, the fill shows the chosen part, and the value can be shown as text or a tooltip on each handle.": "Слайдер для одного числа или диапазона из двух на дорожке: перетаскивание, щелчок или клавиши сдвигают ручку на step, заливка показывает выбранную часть, а значение можно показать текстом или подсказкой у каждой ручки.", "A surface anchored to a control the consumer supplies, with its own open state, dismissal and returned focus. Built as a general part because the Framework had the surface and not the behaviour: two composites wrote it by hand within a week, the second copying the first.": "Поверхность, привязанная к элементу управления, который передаёт потребитель, со своим состоянием открытия, закрытием и возвратом фокуса.", - "A surface open all at once (edit, create) was cancelled; what the person typed is dropped and the host decides where that leads. A panel closes.": "Поверхность, открытая целиком (edit, create), отменена: введённое отбрасывается, а куда перейти, решает хост. Панель закрывается.", + "A surface open all at once (edit, create) was cancelled; what the person typed is dropped and the host decides where that leads. A panel closes.": "Поверхность, открытая целиком (edit, create), отменена: введённое отбрасывается, а куда перейти, решает приложение. Панель закрывается.", "A tab list that shows one local panel at a time, with text or icon tabs given as attributes, slots or data, roving keyboard focus and linked tab panels.": "Список вкладок, который показывает одну локальную панель за раз: текстовые вкладки или вкладки с иконкой задаются атрибутами, слотами или данными, с перемещаемым фокусом клавиатуры и связанными панелями вкладок.", - "A tab of the panel was chosen; the host shows its rows.": "Выбрана вкладка панели; хост показывает её строки.", + "A tab of the panel was chosen; the host shows its rows.": "Выбрана вкладка панели; приложение показывает её строки.", "A table event the view listens to: a checkable cell was pressed. The view raises record.set of simai.dataview-port 1.11.0 (capability inline-edit) with record_id, key, value and revision, and resets the box when the answer is not applied.": "Событие таблицы, которое слушает представление: нажат флажок в ячейке. Представление отправляет record.set порта simai.dataview-port 1.11.0 (возможность inline-edit) с record_id, key, value и revision и возвращает флажок, если ответ не applied.", "A table event the view listens to: a different saved template was applied on the Templates tab. The view raises view.open with the key and restores the filter fields the view was saved with.": "Событие таблицы, которое слушает представление: на вкладке «Шаблоны» применён другой сохранённый шаблон. Представление отправляет view.open с ключом и восстанавливает поля фильтра, с которыми представление было сохранено.", "A table event the view listens to: a filter template was saved. The view turns it into saveView (view.save) with key, label, revision, level, roles, layout and settings; an array detail is saved template by template, each one its own view.save, entries without a key skipped.": "Событие таблицы, которое слушает представление: сохранён шаблон фильтра. Представление превращает его в saveView (view.save) с key, label, revision, level, roles, layout и settings; массив в detail сохраняется по одному шаблону, каждый своим view.save, записи без key пропускаются.", @@ -65,31 +65,31 @@ "A table event the view listens to: its table's context input port changed. The view ignores the table's sequence and re-reads the list with its own query.change.": "Событие таблицы, которое слушает представление: изменился входной порт контекста его таблицы. Представление не берёт номер последовательности таблицы и перечитывает список своим query.change.", "A table event the view listens to: rows were dragged into another order. The view shows the new order at once and raises record.reorder of simai.dataview-port 1.11.0 (capability row-reorder); a refusal or conflict puts the old order back.": "Событие таблицы, которое слушает представление: строки перетащили в другой порядок. Представление сразу показывает новый порядок и отправляет record.reorder порта simai.dataview-port 1.11.0 (возможность row-reorder); отказ или конфликт возвращает прежний порядок.", "A table event the view listens to: the create button or one of its menu items was pressed. The view raises view.create_record with the detail as it came.": "Событие таблицы, которое слушает представление: нажата кнопка создания или пункт её меню. Представление отправляет view.create_record с detail в том виде, в каком он пришёл.", - "A table event the view listens to: the person asked for the default columns back. The view calls resetColumnSettings, an empty personal layer written against its revision; the host supplies the defaults.": "Событие таблицы, которое слушает представление: человек попросил вернуть колонки по умолчанию. Представление вызывает resetColumnSettings — пустой личный слой, записанный против его ревизии; значения по умолчанию даёт хост.", + "A table event the view listens to: the person asked for the default columns back. The view calls resetColumnSettings, an empty personal layer written against its revision; the host supplies the defaults.": "Событие таблицы, которое слушает представление: человек попросил вернуть колонки по умолчанию. Представление вызывает resetColumnSettings — пустой личный слой, записанный против его ревизии; значения по умолчанию даёт приложение.", "A table event the view listens to: the person resized, moved, pinned or hid a column. The view writes it to the person's layer (settings.save_personal): the table offers no choice of layer, and the table it draws sends no target. The shared layer is written from page code with saveColumnSettings(settings, {shared: true}).": "Событие таблицы, которое слушает представление: человек изменил ширину колонки, переставил, закрепил или скрыл её. Представление записывает это в личный слой человека (settings.save_personal): выбора слоя таблица не предлагает, и таблица, которую оно рисует, не передаёт target. Общий слой записывает код страницы через saveColumnSettings(settings, {shared: true}).", "A table event the view listens to: the person resized, moved, pinned or hid a column. The view writes it with saveColumnSettings as settings.save_personal, or settings.save_shared when the detail says target: shared.": "Событие таблицы, которое слушает представление: человек изменил ширину колонки, переставил, закрепил или скрыл её. Представление записывает это через saveColumnSettings как settings.save_personal или settings.save_shared, если detail говорит target: shared.", "A telephone field with a country picker: a button opens a searchable listbox of countries, and the chosen country sets the dial code, flag and, optionally, the input mask of the native tel input.": "Поле телефона с выбором страны: кнопка открывает список стран с поиском, а выбранная страна задаёт телефонный код, флаг и, при необходимости, маску ввода нативного поля tel.", "A toolbar action was chosen.": "Выбрано действие панели инструментов.", - "A tree intent of simai.dataview-port 1.8.0 -- tree.expand, node.targets or node.move -- announced as the view raises it. The host answers through the port.": "Намерение дерева порта simai.dataview-port 1.8.0 — tree.expand, node.targets или node.move, — которое представление объявляет, когда его поднимает. Хост отвечает через порт.", - "A value was committed by the user (drag end, click, key); bubbles from the slider root with values, value, handleCount and handle. A value set from code is not a change. The name to bind.": "Пользователь зафиксировал значение (конец перетаскивания, щелчок, клавиша); всплывает от корня слайдера с `values`, `value`, `handleCount` и `handle`. Значение, установленное из кода, не является изменением. Имя для привязки.", - "A visible label; empty draws an icon-only button.": "Видимая подпись; без неё кнопка — только значок.", - "A width in pixels the host keeps (a person's settings); it wins over the browser's memory.": "Ширина в пикселях, которую хранит хост (личные настройки человека); она важнее памяти браузера.", + "A tree intent of simai.dataview-port 1.8.0 -- tree.expand, node.targets or node.move -- announced as the view raises it. The host answers through the port.": "Намерение дерева порта simai.dataview-port 1.8.0 — tree.expand, node.targets или node.move, — которое представление объявляет, когда его поднимает. Приложение отвечает через порт.", + "A value was committed by the user (drag end, click, key); bubbles from the slider root with values, value, handleCount and handle. A value set from code is not a change. The name to bind.": "Человек выбрал значение: отпустил ползунок, щёлкнул или нажал клавишу; в `detail` — `values`, `value`, `handleCount` и `handle`. Значение, заданное из кода, событие не присылает. На это событие и подписывайтесь.", + "A visible label; empty draws an icon-only button.": "Подпись кнопки; без неё видна только иконка.", + "A width in pixels the host keeps (a person's settings); it wins over the browser's memory.": "Ширина в пикселях, которую хранит приложение (личные настройки человека); она важнее памяти браузера.", "A width of its own. Left to its content a surface takes the width of its longest line, which a list of names makes wide and ragged.": "Собственная ширина. Без неё поверхность принимает ширину самой длинной строки, и список имён получается широким и неровным.", "A «?» beside a label that opens a short explanation on a press -- a toggletip -- announced politely, closed by Escape, a second press or a click outside.": "Знак «?» рядом с подписью, который по нажатию открывает короткое пояснение; пояснение объявляется вежливо и закрывается по Escape, повторному нажатию или щелчку мимо.", "Accessible Smart projection of the ordinary File Preview row.": "Доступная смарт-проекция обычной строки File Preview.", "Accessible date and date-range picker with popup and inline presentation, calendar navigation and host-owned values.": "Доступный выбор даты и диапазона дат во всплывающем и встроенном режимах, с навигацией по календарю и значениями, которыми управляет элемент.", "Accessible hierarchical composite with roving focus, branch expansion and host-owned selection.": "Доступный иерархический составной компонент с перемещаемым фокусом (roving focus), раскрытием ветвей и выбором, которым управляет элемент.", - "Accessible label for icon-only or custom buttons.": "Доступная подпись для кнопок только с иконкой или пользовательских кнопок.", - "Accessible label.": "Доступная подпись.", + "Accessible label for icon-only or custom buttons.": "Название кнопки для экранного диктора; нужно кнопке без подписи.", + "Accessible label.": "Название для экранного диктора.", "Accessible name and tooltip of the control that drops the selection.": "Доступное имя и подсказка элемента управления, сбрасывающего выделение.", "Accessible name and tooltip of the control that drops the selection. Empty: the text of the page's language (\"Clear the selection\" in English).": "Доступное имя и подсказка элемента, который снимает выбор. Пусто — текст на языке страницы (по-английски «Clear the selection»).", "Accessible name and tooltip of the control that goes to the first page.": "Доступное имя и подсказка элемента управления, переходящего на первую страницу.", "Accessible name and tooltip of the control that goes to the first page. Empty: the text of the page's language (\"First\" in English).": "Доступное имя и подсказка элемента, который переходит на первую страницу. Пусто — текст на языке страницы (по-английски «First»).", - "Accessible name and tooltip of the control that pins a column.": "Доступное имя и подсказка элемента управления, закрепляющего столбец.", - "Accessible name and tooltip of the control that unpins a column.": "Доступное имя и подсказка элемента управления, открепляющего столбец.", + "Accessible name and tooltip of the control that pins a column.": "Название и подсказка кнопки, которая закрепляет столбец.", + "Accessible name and tooltip of the control that unpins a column.": "Название и подсказка кнопки, которая открепляет столбец.", "Accessible name and tooltip of the magnifier that opens the search panel.": "Доступное имя и подсказка лупы, открывающей панель поиска.", "Accessible name for a checkbox rendered without a visible label.": "Доступное имя чекбокса без видимой подписи.", - "Accessible name for the group.": "Доступное имя группы.", + "Accessible name for the group.": "Название группы для экранного диктора.", "Accessible name of the batch-action selector.": "Доступное имя селектора пакетного действия.", "Accessible name of the batch-action selector. Empty: the text of the page's language (\"Action for the selected records\" in English).": "Доступное имя списка действий над выбранным. Пусто — текст на языке страницы (по-английски «Action for the selected records»).", "Accessible name of the handle that moves a column in the settings list; the column label is appended to it.": "Доступное имя маркера, перемещающего столбец в списке настроек; к нему добавляется подпись столбца.", @@ -110,34 +110,34 @@ "Actions use native focus-visible behavior; after dismissal the application restores focus only when it was inside the removed notice.": "Действия используют нативное поведение `focus-visible`; после закрытия приложение возвращает фокус, только если он был внутри удалённого уведомления.", "Activates the item link or emits the item click event.": "Активирует ссылку элемента или генерирует событие щелчка по элементу.", "Activates the tab at index (an index out of range means 0); does nothing for a disabled or the active tab. Sets active-index and emits sf-tab-change.": "Активирует вкладку с индексом index (индекс вне диапазона означает 0); ничего не делает для отключённой или активной вкладки. Устанавливает active-index и отправляет sf-tab-change.", - "Adds a click listener on the host.": "Добавляет обработчик click на хост-элементе.", - "Adds a focusin listener on the host.": "Добавляет обработчик focusin на хост-элементе.", - "Adds a focusout listener on the host.": "Добавляет обработчик focusout на хост-элементе.", - "Adds a listener for change on the host. Returns the element.": "Добавляет обработчик change на хост-элементе. Возвращает элемент.", - "Adds a listener for click on the host. Returns the element.": "Добавляет обработчик click на хост-элементе. Возвращает элемент.", - "Adds a listener for drawer:after-close on the host that runs only for this Drawer's own events. Returns the element.": "Добавляет на хост-элементе обработчик drawer:after-close, который срабатывает только на собственные события этого Drawer. Возвращает элемент.", - "Adds a listener for drawer:after-open on the host that runs only for this Drawer's own events. Returns the element.": "Добавляет на хост-элементе обработчик drawer:after-open, который срабатывает только на собственные события этого Drawer. Возвращает элемент.", - "Adds a listener for drawer:before-close on the host that runs only for this Drawer's own events. Returns the element.": "Добавляет на хост-элементе обработчик drawer:before-close, который срабатывает только на собственные события этого Drawer. Возвращает элемент.", - "Adds a listener for drawer:before-open on the host that runs only for this Drawer's own events. Returns the element.": "Добавляет на хост-элементе обработчик drawer:before-open, который срабатывает только на собственные события этого Drawer. Возвращает элемент.", - "Adds a listener for focusin on the host. Returns the element.": "Добавляет обработчик focusin на хост-элементе. Возвращает элемент.", - "Adds a listener for focusout on the host. Returns the element.": "Добавляет обработчик focusout на хост-элементе. Возвращает элемент.", - "Adds a listener for input on the host. Returns the element.": "Добавляет обработчик input на хост-элементе. Возвращает элемент.", - "Adds a listener for keydown on the host. Returns the element.": "Добавляет обработчик keydown на хост-элементе. Возвращает элемент.", - "Adds a listener for keyup on the host. Returns the element.": "Добавляет обработчик keyup на хост-элементе. Возвращает элемент.", - "Adds a listener for modal:after-close on the host that runs only for this modal's own events. Returns the element.": "Добавляет на хост-элементе обработчик modal:after-close, который срабатывает только на собственные события этого модального окна. Возвращает элемент.", - "Adds a listener for modal:after-hide on the host that runs only for this modal's own events. Returns the element.": "Добавляет на хост-элементе обработчик modal:after-hide, который срабатывает только на собственные события этого модального окна. Возвращает элемент.", - "Adds a listener for modal:after-open on the host that runs only for this modal's own events. Returns the element.": "Добавляет на хост-элементе обработчик modal:after-open, который срабатывает только на собственные события этого модального окна. Возвращает элемент.", - "Adds a listener for modal:after-show on the host that runs only for this modal's own events. Returns the element.": "Добавляет на хост-элементе обработчик modal:after-show, который срабатывает только на собственные события этого модального окна. Возвращает элемент.", - "Adds a listener for modal:before-close on the host that runs only for this modal's own events. Returns the element.": "Добавляет на хост-элементе обработчик modal:before-close, который срабатывает только на собственные события этого модального окна. Возвращает элемент.", - "Adds a listener for modal:before-hide on the host that runs only for this modal's own events. Returns the element.": "Добавляет на хост-элементе обработчик modal:before-hide, который срабатывает только на собственные события этого модального окна. Возвращает элемент.", - "Adds a listener for modal:before-open on the host that runs only for this modal's own events. Returns the element.": "Добавляет на хост-элементе обработчик modal:before-open, который срабатывает только на собственные события этого модального окна. Возвращает элемент.", - "Adds a listener for modal:before-show on the host that runs only for this modal's own events. Returns the element.": "Добавляет на хост-элементе обработчик modal:before-show, который срабатывает только на собственные события этого модального окна. Возвращает элемент.", - "Adds a listener for modal:update on the host that runs only for this modal's own events. Returns the element.": "Добавляет на хост-элементе обработчик modal:update, который срабатывает только на собственные события этого модального окна. Возвращает элемент.", - "Adds a listener for mouseenter on the host. Returns the element.": "Добавляет обработчик mouseenter на хост-элементе. Возвращает элемент.", - "Adds a listener for mouseleave on the host. Returns the element.": "Добавляет обработчик mouseleave на хост-элементе. Возвращает элемент.", - "Adds a listener for sf-alert-action; the handler receives (action, detail, event). Returns the element.": "Добавляет обработчик sf-alert-action; обработчик получает (action, detail, event). Возвращает элемент.", - "Adds a listener for sf-alert-close; the handler receives (detail, event). Returns the element.": "Добавляет обработчик sf-alert-close; обработчик получает (detail, event). Возвращает элемент.", - "Adds a listener for sf-breadcrumb-click; the handler receives (item, detail, event). Returns the element.": "Добавляет обработчик sf-breadcrumb-click; обработчик получает (item, detail, event). Возвращает элемент.", + "Adds a click listener on the host.": "Подписывает на `click` у тега.", + "Adds a focusin listener on the host.": "Подписывает на `focusin` у тега.", + "Adds a focusout listener on the host.": "Подписывает на `focusout` у тега.", + "Adds a listener for change on the host. Returns the element.": "Подписывает на `change` у тега. Возвращает тег.", + "Adds a listener for click on the host. Returns the element.": "Подписывает на `click` у тега. Возвращает тег.", + "Adds a listener for drawer:after-close on the host that runs only for this Drawer's own events. Returns the element.": "Подписывает на `drawer:after-close` у тега, только на события этого Drawer. Возвращает тег.", + "Adds a listener for drawer:after-open on the host that runs only for this Drawer's own events. Returns the element.": "Подписывает на `drawer:after-open` у тега, только на события этого Drawer. Возвращает тег.", + "Adds a listener for drawer:before-close on the host that runs only for this Drawer's own events. Returns the element.": "Подписывает на `drawer:before-close` у тега, только на события этого Drawer. Возвращает тег.", + "Adds a listener for drawer:before-open on the host that runs only for this Drawer's own events. Returns the element.": "Подписывает на `drawer:before-open` у тега, только на события этого Drawer. Возвращает тег.", + "Adds a listener for focusin on the host. Returns the element.": "Подписывает на `focusin` у тега. Возвращает тег.", + "Adds a listener for focusout on the host. Returns the element.": "Подписывает на `focusout` у тега. Возвращает тег.", + "Adds a listener for input on the host. Returns the element.": "Подписывает на `input` у тега. Возвращает тег.", + "Adds a listener for keydown on the host. Returns the element.": "Подписывает на `keydown` у тега. Возвращает тег.", + "Adds a listener for keyup on the host. Returns the element.": "Подписывает на `keyup` у тега. Возвращает тег.", + "Adds a listener for modal:after-close on the host that runs only for this modal's own events. Returns the element.": "Подписывает на `modal:after-close` у тега, только на события этого модального окна. Возвращает тег.", + "Adds a listener for modal:after-hide on the host that runs only for this modal's own events. Returns the element.": "Подписывает на `modal:after-hide` у тега, только на события этого модального окна. Возвращает тег.", + "Adds a listener for modal:after-open on the host that runs only for this modal's own events. Returns the element.": "Подписывает на `modal:after-open` у тега, только на события этого модального окна. Возвращает тег.", + "Adds a listener for modal:after-show on the host that runs only for this modal's own events. Returns the element.": "Подписывает на `modal:after-show` у тега, только на события этого модального окна. Возвращает тег.", + "Adds a listener for modal:before-close on the host that runs only for this modal's own events. Returns the element.": "Подписывает на `modal:before-close` у тега, только на события этого модального окна. Возвращает тег.", + "Adds a listener for modal:before-hide on the host that runs only for this modal's own events. Returns the element.": "Подписывает на `modal:before-hide` у тега, только на события этого модального окна. Возвращает тег.", + "Adds a listener for modal:before-open on the host that runs only for this modal's own events. Returns the element.": "Подписывает на `modal:before-open` у тега, только на события этого модального окна. Возвращает тег.", + "Adds a listener for modal:before-show on the host that runs only for this modal's own events. Returns the element.": "Подписывает на `modal:before-show` у тега, только на события этого модального окна. Возвращает тег.", + "Adds a listener for modal:update on the host that runs only for this modal's own events. Returns the element.": "Подписывает на `modal:update` у тега, только на события этого модального окна. Возвращает тег.", + "Adds a listener for mouseenter on the host. Returns the element.": "Подписывает на `mouseenter` у тега. Возвращает тег.", + "Adds a listener for mouseleave on the host. Returns the element.": "Подписывает на `mouseleave` у тега. Возвращает тег.", + "Adds a listener for sf-alert-action; the handler receives (action, detail, event). Returns the element.": "Добавляет обработчик sf-alert-action; обработчик получает (action, detail, event). Возвращает тег.", + "Adds a listener for sf-alert-close; the handler receives (detail, event). Returns the element.": "Добавляет обработчик sf-alert-close; обработчик получает (detail, event). Возвращает тег.", + "Adds a listener for sf-breadcrumb-click; the handler receives (item, detail, event). Returns the element.": "Добавляет обработчик sf-breadcrumb-click; обработчик получает (item, detail, event). Возвращает тег.", "Adds a listener for sf-page-change; the handler is called with (current, detail, event). Ignores a non-function handler.": "Добавляет обработчик sf-page-change; обработчик вызывается с (current, detail, event). Обработчик, не являющийся функцией, игнорируется.", "Adds a listener for sf-range-slider-end; the handler is called with (value, detail, event). Ignores a non-function handler.": "Добавляет обработчик sf-range-slider-end; обработчик вызывается с (value, detail, event). Обработчик, не являющийся функцией, игнорируется.", "Adds a listener for sf-range-slider-set; the handler is called with (value, detail, event). Ignores a non-function handler.": "Добавляет обработчик sf-range-slider-set; обработчик вызывается с (value, detail, event). Обработчик, не являющийся функцией, игнорируется.", @@ -150,11 +150,11 @@ "Adds a listener for sf-toast-close; the handler is called with (detail, event). Ignores a non-function handler.": "Добавляет обработчик sf-toast-close; обработчик вызывается с (detail, event). Обработчик, не являющийся функцией, игнорируется.", "Adds a listener for sf-tree-item-toggle from any item in the tree; the handler is called with (item, detail, event).": "Добавляет обработчик sf-tree-item-toggle от любого пункта дерева; обработчик вызывается с (item, detail, event).", "Adds a listener for sf-tree-item-toggle; the handler is called with (open, detail, event). Ignores a non-function handler.": "Добавляет обработчик sf-tree-item-toggle; обработчик вызывается с (open, detail, event). Обработчик, не являющийся функцией, игнорируется.", - "Adds a listener for the native change event that bubbles from the inner input.": "Добавляет обработчик нативного события change, которое всплывает от внутреннего input.", - "Adds the named host attribute as an empty attribute when value is truthy, removes it otherwise.": "Добавляет указанный атрибут хост-элемента как пустой атрибут, когда value истинно, и удаляет его в противном случае.", - "Alias of dismiss(): dispatches sf-alert-close and removes the alert after its exit transition. Returns the element.": "Псевдоним dismiss(): отправляет sf-alert-close и удаляет уведомление после анимации исчезновения. Возвращает элемент.", + "Adds a listener for the native change event that bubbles from the inner input.": "Подписывает на `change` радиокнопки.", + "Adds the named host attribute as an empty attribute when value is truthy, removes it otherwise.": "Добавляет указанный атрибут тега как пустой атрибут, когда value истинно, и удаляет его в противном случае.", + "Alias of dismiss(): dispatches sf-alert-close and removes the alert after its exit transition. Returns the element.": "То же, что `dismiss()`: отправляет `sf-alert-close` и убирает уведомление после анимации исчезновения. Возвращает тег.", "Allow several values while preserving their serialized selection order. Tag mode is multiple by default.": "Разрешает несколько значений с сохранением порядка выбора при сериализации. В режиме тегов множественный выбор включён по умолчанию.", - "Allow the compatible batch-action section.": "Разрешает совместимый раздел пакетных действий.", + "Allow the compatible batch-action section.": "Разрешает блок пакетных действий.", "An Ajax content request (mode=ajax) is starting. Bubbles and is composed.": "Начинается Ajax-запрос содержимого (mode=ajax). Всплывает и с composed: true.", "An action button ([data-action] or [data-alert-action]) inside the alert was activated. Bubbles and is composed; not cancelable. The alert stays.": "Активирована кнопка действия ([data-action] или [data-alert-action]) внутри уведомления. Всплывает и с composed: true; не отменяемое. Уведомление остаётся.", "An entry was chosen, at any depth. Cancel it to keep the menu open.": "Выбран пункт на любом уровне. Отмените событие, чтобы меню осталось открытым.", @@ -163,71 +163,71 @@ "An item (set with setItems) may carry key (a stable id for the settings; the index otherwise), icon, count (a small counter after the label), href (the tab is a link: activating it goes to the address; aria-current=page on the active one) and pinned (never hidden, fixed in the settings).": "Пункт (задаётся через setItems) может нести key (постоянный идентификатор для настроек; иначе индекс), icon, count (небольшой счётчик после подписи), href (вкладка — ссылка: активация переходит по адресу; у активной aria-current=page) и pinned (никогда не скрывается и неподвижна в настройках).", "An item was clicked. Bubbles, is composed and is cancelable: preventDefault() on an ellipsis item keeps it collapsed. Disabled and current items have the native navigation prevented before dispatch.": "Нажат пункт. Всплывает, с composed: true и отменяемое: preventDefault() на пункте-многоточии оставляет его свёрнутым. У отключённых и текущих пунктов нативный переход отменяется до отправки события.", "An on/off control for a setting that applies at once: a native checkbox with role=\"switch\", a track and a moving thumb, with a label, description and help text.": "Переключатель вкл./выкл. для настройки, которая применяется сразу: нативный флажок с role=\"switch\", дорожка и движущийся бегунок, с подписью, описанием и текстом подсказки.", - "An open key calls open() or close(); the remaining keys go to the base setState as host attributes. Returns the element.": "Ключ open вызывает open() или close(); остальные ключи передаются в базовый setState как атрибуты хост-элемента. Возвращает элемент.", + "An open key calls open() or close(); the remaining keys go to the base setState as host attributes. Returns the element.": "Ключ `open` открывает или закрывает панель; другие ключи становятся атрибутами тега. Возвращает тег.", "An ordered media collection shown in an inline Slider, with an optional Modal lightbox holding a second Slider. The gallery owns the one-based current slide and keeps both views on it.": "Упорядоченная коллекция медиа во встроенном Slider с необязательным лайтбоксом Modal, в котором находится второй Slider. Галерея хранит текущий слайд (нумерация с единицы) и держит на нём оба представления.", "An ordinary button named by label (what is copied); the result is announced in a polite status; a refused clipboard selects the text and says to press Ctrl+C (⌘C on macOS).": "Обычная кнопка с именем из label (что копируется); результат объявляется вежливо; если буфер обмена недоступен, текст выделяется и звучит подсказка нажать Ctrl+C (⌘C на macOS).", - "Anchor the popup with the shared Framework positioning (SF.Position): native top layer, flip, shift and viewport-limited height. On by default; portal=\"false\" keeps the in-flow list.": "Привязывает всплывающее окно с помощью общего позиционирования Framework (`SF.Position`): нативный верхний слой, переворот, сдвиг и высота, ограниченная окном просмотра. Включено по умолчанию; `portal=\"false\"` оставляет список в потоке.", - "Announce that the panel should close. Closing is the host's decision.": "Сообщает, что панель следует закрыть. Решение о закрытии принимает хост.", + "Anchor the popup with the shared Framework positioning (SF.Position): native top layer, flip, shift and viewport-limited height. On by default; portal=\"false\" keeps the in-flow list.": "Список открывается поверх страницы и не выходит за экран; если не помещается — переворачивается. `portal=\"false\"` оставляет список в потоке страницы.", + "Announce that the panel should close. Closing is the host's decision.": "Сообщает, что панель следует закрыть. Решение о закрытии принимает приложение.", "Announce that this object should open on a full page.": "Сообщает, что этот объект следует открыть на отдельной странице.", "Append another backend page for show-more mode.": "Добавляет ещё одну страницу с бэкенда в режиме «показать ещё».", - "Applies checked and disabled (checking also refreshes the rest of the named group) to the inner input and reflects them to host attributes; before render it falls back to the base setState.": "Применяет checked и disabled к внутреннему input (установка checked также обновляет остальную именованную группу) и отражает их в атрибутах хост-элемента; до отрисовки использует базовый setState.", - "Applies checked and disabled to the inner input and reflects them to host attributes; before render it falls back to the base setState.": "Применяет checked и disabled к внутреннему input и отражает их в атрибутах хост-элемента; до отрисовки использует базовый setState.", - "Applies checked and disabled, plus type, size, icon and label as host attributes, to the inner input and reflects them to host attributes; before render it falls back to the base setState.": "Применяет checked и disabled, а также type, size, icon и label как атрибуты хост-элемента, к внутреннему input и отражает их в атрибутах хост-элемента; до отрисовки использует базовый setState.", - "Applies checked, indeterminate and disabled to both the host attribute and the inner input; any other keys go to the base setState as host attributes. Returns the element.": "Применяет checked, indeterminate и disabled и к атрибуту хост-элемента, и к внутреннему input; остальные ключи передаются в базовый setState как атрибуты хост-элемента. Возвращает элемент.", + "Applies checked and disabled (checking also refreshes the rest of the named group) to the inner input and reflects them to host attributes; before render it falls back to the base setState.": "Задаёт `checked` и `disabled`; отметка снимает выбор с остальных радиокнопок группы.", + "Applies checked and disabled to the inner input and reflects them to host attributes; before render it falls back to the base setState.": "Задаёт `checked` и `disabled`.", + "Applies checked and disabled, plus type, size, icon and label as host attributes, to the inner input and reflects them to host attributes; before render it falls back to the base setState.": "Применяет checked и disabled, а также type, size, icon и label как атрибуты тега, к внутреннему input и отражает их в атрибутах тега; до отрисовки использует базовый setState.", + "Applies checked, indeterminate and disabled to both the host attribute and the inner input; any other keys go to the base setState as host attributes. Returns the element.": "Задаёт сразу `checked`, `indeterminate` и `disabled`; другие ключи становятся атрибутами тега. Возвращает тег.", "Applies disabled, error or invalid, errorMessage and value to the inner textarea and resyncs its field semantics; setting value dispatches input. Returns false when the textarea is not rendered.": "Применяет disabled, error или invalid, errorMessage и value к внутреннему textarea и заново синхронизирует семантику поля; установка value отправляет input. Возвращает false, если textarea не отрисован.", - "Applies disabled, open (or active), value, iso2 and dialCode to the rendered field; setting value dispatches native input and change from the inner input. Returns true when applied, false before render.": "Применяет disabled, open (или active), value, iso2 и dialCode к отрисованному полю; установка value отправляет нативные input и change от внутреннего input. Возвращает true, если применено, и false до отрисовки.", + "Applies disabled, open (or active), value, iso2 and dialCode to the rendered field; setting value dispatches native input and change from the inner input. Returns true when applied, false before render.": "Задаёт `disabled`, `open` (или `active`), `value`, `iso2` и `dialCode`; новое `value` присылает `input` и `change`. Возвращает `true`, или `false`, пока поле не нарисовано.", "Applies keys: value goes through setValue, multiple fixes the handle count explicitly, disabled through setDisabled; any other key is written as its kebab-case attribute (false, null, undefined or empty removes it, true sets it empty).": "Применяет ключи: value — через setValue, multiple явно задаёт число ручек, disabled — через setDisabled; любой другой ключ записывается как атрибут в kebab-case (false, null, undefined или пустое значение удаляет его, true устанавливает пустым).", "Applies the person's stored arrangement: {order: [keys], hidden: [keys]}. A key the items no longer have is ignored; an item the order does not name follows in its declared place, visible; a pinned tab is never hidden; the active tab is shown in place even when hidden.": "Применяет сохранённую раскладку человека: {order: [keys], hidden: [keys]}. Ключ, которого больше нет среди пунктов, пропускается; пункт, не названный в порядке, встаёт на своё объявленное место видимым; закреплённая вкладка никогда не скрывается; активная вкладка видна на месте, даже если скрыта.", "Apply a column-preference delta without emitting a save request.": "Применяет изменение настроек столбцов без запроса на сохранение.", "Apply backend-resolved state and tree.": "Применяет состояние и дерево, вычисленные бэкендом.", - "Apply native download semantics to an anchor destination.": "Применяет к ссылке нативную семантику скачивания.", + "Apply native download semantics to an anchor destination.": "Ссылка скачивает файл, а не открывает его.", "Apply rows answering the newest pending context query. Returns false and changes nothing for a stale, repeated or unknown sequence.": "Применяет строки, отвечающие на последний ожидающий запрос контекста. Для устаревшей, повторной или неизвестной последовательности возвращает `false` и ничего не меняет.", "Apply saved filter/view templates.": "Применяет сохранённые шаблоны фильтров и представлений.", - "Apply several inputs at once (size, icon, linkText, text, formats, supportingText, accept, multiple, disabled, items). Returns the element.": "Применяет несколько входных параметров сразу (size, icon, linkText, text, formats, supportingText, accept, multiple, disabled, items). Возвращает элемент.", + "Apply several inputs at once (size, icon, linkText, text, formats, supportingText, accept, multiple, disabled, items). Returns the element.": "Применяет несколько входных параметров сразу (size, icon, linkText, text, formats, supportingText, accept, multiple, disabled, items). Возвращает тег.", "ArrowDown opens the popup and moves focus to the active day. Only one day is in the tab order. Escape closes the popup and restores focus to the field. RTL reverses physical horizontal arrows while preserving chronological movement.": "ArrowDown открывает всплывающее окно и переносит фокус на активный день. В порядке табуляции находится только один день. Escape закрывает всплывающее окно и возвращает фокус в поле. В RTL физические горизонтальные стрелки меняются местами, а хронологическое перемещение сохраняется.", "Ask for the next page of a tree level (sf-table-tree-more).": "Запрашивает следующую страницу уровня дерева (sf-table-tree-more).", - "Ask the host for a page of candidates for one field.": "Запрашивает у хоста страницу вариантов для одного поля.", - "Ask the host to open a reference the person activated.": "Просит хост открыть ссылку, которую активировал человек.", - "Ask the host where a record may go (node.targets), let the person choose among exactly those places, and move it there (node.move).": "Спрашивает хост, куда можно перенести запись (node.targets), даёт выбрать ровно из этих мест и переносит её туда (node.move).", - "Ask the page for a host port when connecting. A page that answers with simai.admin-navigation-port gets the navigation shell; a page that answers nothing gets the items menu, unchanged.": "Запрашивает у страницы порт хоста при подключении. Страница, ответившая `simai.admin-navigation-port`, получает навигационную оболочку; если страница не отвечает, отображается меню элементов без изменений.", - "Asks the page for a host port, once per connection and only while this element has none. The shared convention for every component that takes `setHostPort`, so a consumer composing one inside something else does not have to find the element and call a method on it. Answered by calling `setHostPort` on the event target, at once or later.": "Запрашивает у страницы порт хоста — один раз за подключение и только пока у элемента его нет. Общее соглашение для всех компонентов, принимающих `setHostPort`: потребителю, встраивающему такой компонент в другой, не нужно искать элемент и вызывать у него метод. Ответ — вызов `setHostPort` на цели события, сразу или позже.", - "Asks the page for a host port, once per connection and only while this element has none. The shared convention for every component that takes `setHostPort`. Answered by calling `setHostPort` on the event target, at once or later.": "Запрашивает у страницы порт хоста — один раз за подключение и только пока у элемента его нет. Общее соглашение для всех компонентов, принимающих `setHostPort`. Ответ — вызов `setHostPort` на цели события, сразу или позже.", + "Ask the host for a page of candidates for one field.": "Запрашивает у приложения страницу вариантов для одного поля.", + "Ask the host to open a reference the person activated.": "Просит приложение открыть ссылку, которую активировал человек.", + "Ask the host where a record may go (node.targets), let the person choose among exactly those places, and move it there (node.move).": "Спрашивает приложение, куда можно перенести запись (node.targets), даёт выбрать ровно из этих мест и переносит её туда (node.move).", + "Ask the page for a host port when connecting. A page that answers with simai.admin-navigation-port gets the navigation shell; a page that answers nothing gets the items menu, unchanged.": "Запрашивает у страницы порт приложения при подключении. Страница, ответившая `simai.admin-navigation-port`, получает навигационную оболочку; если страница не отвечает, отображается меню элементов без изменений.", + "Asks the page for a host port, once per connection and only while this element has none. The shared convention for every component that takes `setHostPort`, so a consumer composing one inside something else does not have to find the element and call a method on it. Answered by calling `setHostPort` on the event target, at once or later.": "Запрашивает у страницы порт приложения — один раз за подключение и только пока у элемента его нет. Общее соглашение для всех компонентов, принимающих `setHostPort`: потребителю, встраивающему такой компонент в другой, не нужно искать элемент и вызывать у него метод. Ответ — вызов `setHostPort` на цели события, сразу или позже.", + "Asks the page for a host port, once per connection and only while this element has none. The shared convention for every component that takes `setHostPort`. Answered by calling `setHostPort` on the event target, at once or later.": "Запрашивает у страницы порт приложения — один раз за подключение и только пока у элемента его нет. Общее соглашение для всех компонентов, принимающих `setHostPort`. Ответ — вызов `setHostPort` на цели события, сразу или позже.", "Avatar Smart Component from SIMAI Framework.": "Смарт-компонент Avatar из SIMAI Framework.", "Avatar image URL; the visible text remains the accessible label.": "URL изображения аватара; доступной подписью остаётся видимый текст.", "Avatar initials fallback.": "Инициалы аватара на случай отсутствия изображения.", "Avatars Smart Component from SIMAI Framework.": "Смарт-компонент Avatars из SIMAI Framework.", "Badge is static metadata and does not enter the tab order.": "Значок — статические метаданные, в порядок табуляции не входит.", "Badges Smart Component from SIMAI Framework.": "Смарт-компонент Badges из SIMAI Framework.", - "Bind an exact host adapter.": "Привязывает конкретный адаптер хоста.", - "Bind change, the committed value: handler(value, detail, event). Returns the element.": "Подписывается на change — зафиксированное значение: handler(value, detail, event). Возвращает элемент.", - "Bind the host of simai.admin-navigation-port; the menu then draws the navigation shell instead of the items menu.": "Подключает хост порта simai.admin-navigation-port; меню рисует оболочку навигации вместо меню из пунктов.", + "Bind an exact host adapter.": "Привязывает конкретный адаптер приложения.", + "Bind change, the committed value: handler(value, detail, event). Returns the element.": "Подписывается на change — зафиксированное значение: handler(value, detail, event). Возвращает тег.", + "Bind the host of simai.admin-navigation-port; the menu then draws the navigation shell instead of the items menu.": "Подключает приложение, которое отвечает по порту `simai.admin-navigation-port`; меню рисует оболочку навигации вместо меню из пунктов.", "Binds the overlay to a canvas element.": "Привязывает оверлей к элементу холста.", "Block padding of a free-standing tag, with the names the buttons use.": "Вертикальные отступы отдельного тега с теми же названиями, что у кнопок.", - "Border radius modifier.": "Модификатор скругления углов.", + "Border radius modifier.": "Скругление углов: `square` — прямые, `rounded` — полностью круглые.", "Breadcrumbs Smart Component from SIMAI Framework.": "Смарт-компонент Breadcrumbs из SIMAI Framework.", - "Built-in button appearance: default, outline or link. Historical name retained; this is not a semantic color selector. Custom templates may interpret it separately.": "Встроенный вид кнопки: `default`, `outline` или `link`. Это не выбор семантического цвета. Пользовательские шаблоны могут трактовать его по-своему.", + "Built-in button appearance: default, outline or link. Historical name retained; this is not a semantic color selector. Custom templates may interpret it separately.": "Встроенный вид кнопки: `default`, `outline` или `link`. Цвет он не выбирает. Собственные шаблоны могут трактовать его по-своему.", "Built-in text/icon tabs use one enabled native tab stop and linked panels. Navigation arrows follow orientation and RTL, skip disabled tabs, wrap, focus and activate. Perpendicular arrows and nested widget keys remain local. A custom tab component descriptor is presentation-only: its named wrapper remains the single tab stop and the rendered Smart visual is inert.": "Встроенные текстовые вкладки и вкладки с иконкой используют одну доступную нативную точку табуляции и связанные панели. Стрелки навигации учитывают ориентацию и RTL, пропускают отключённые вкладки, переходят по кругу, переносят фокус и активируют вкладку. Перпендикулярные стрелки и клавиши вложенных виджетов обрабатываются локально. Дескриптор пользовательского компонента вкладки отвечает только за отображение: его именованная обёртка остаётся единственной точкой табуляции, а отрисованный смарт-компонент инертен.", - "Button size token.": "Токен размера кнопки.", + "Button size token.": "Размер кнопки: от `1/3` (самая мелкая) до `3` (самая крупная).", "Buttons Smart Component from SIMAI Framework.": "Смарт-компонент Buttons из SIMAI Framework.", - "Calls close() when open, open() otherwise. Returns the element.": "Вызывает close(), если открыто, иначе open(). Возвращает элемент.", - "Calls close() when open, open(index) otherwise. Returns the element.": "Вызывает close(), если открыто, иначе open(index). Возвращает элемент.", - "Calls the handler at once with a modal:ready event when the modal has already rendered, otherwise adds a listener for its own modal:ready. Returns the element.": "Сразу вызывает обработчик с событием modal:ready, если модальное окно уже отрисовано, иначе добавляет обработчик его собственного modal:ready. Возвращает элемент.", + "Calls close() when open, open() otherwise. Returns the element.": "Вызывает close(), если открыто, иначе open(). Возвращает тег.", + "Calls close() when open, open(index) otherwise. Returns the element.": "Вызывает close(), если открыто, иначе open(index). Возвращает тег.", + "Calls the handler at once with a modal:ready event when the modal has already rendered, otherwise adds a listener for its own modal:ready. Returns the element.": "Сразу вызывает обработчик с событием modal:ready, если модальное окно уже отрисовано, иначе добавляет обработчик его собственного modal:ready. Возвращает тег.", "Cancelable intent before closing. Bubbles and is composed; detail.drawer is the emitting drawer.": "Отменяемое намерение перед закрытием. Всплывает и является `composed`; `detail.drawer` — панель, отправившая событие.", "Cancelable intent before opening. Bubbles and is composed; detail.drawer is the emitting drawer.": "Отменяемое намерение перед открытием. Всплывает и является `composed`; `detail.drawer` — панель, отправившая событие.", "Change search, filters, sort or window.": "Изменяет поиск, фильтры, сортировку или окно.", "Checkbox Smart Component from SIMAI Framework.": "Смарт-компонент Checkbox из SIMAI Framework.", - "Checkbox size token.": "Токен размера чекбокса.", + "Checkbox size token.": "Размер флажка: чем больше число, тем крупнее.", "Choose a quick range: set its dates, show the month it ends in and emit change once.": "Выбирает быстрый диапазон: ставит его даты, показывает месяц, которым он заканчивается, и один раз отправляет change.", "Choose a tab by index and emit sf-context-menu-tab.": "Выбирает вкладку по номеру и отправляет sf-context-menu-tab.", - "Chooses the template variant, among the variants the host offers for that field.": "Выбирает вариант шаблона из предлагаемых хостом для этого поля.", - "Classes added to the component's root.": "Классы, добавляемые корневому элементу компонента.", - "Classes added to the field's root.": "Классы, добавляемые корневому элементу поля.", + "Chooses the template variant, among the variants the host offers for that field.": "Выбирает вариант шаблона из предлагаемых приложением для этого поля.", + "Classes added to the component's root.": "Свои CSS-классы для компонента.", + "Classes added to the field's root.": "Свои CSS-классы для поля.", "Clear the explicit selection of this instance; emits the selection port once when it changes.": "Сбрасывает явное выделение этого экземпляра; при изменении один раз отправляет порт выделения.", - "Clears the current selection.": "Сбрасывает текущий выбор.", + "Clears the current selection.": "Снимает выбор.", "Clears the loaded remote HTML, error and loading state and aborts a running request.": "Очищает загруженный удалённый HTML, ошибку и состояние загрузки и прерывает выполняющийся запрос.", "Close Smart Component from SIMAI Framework.": "Смарт-компонент Close из SIMAI Framework.", - "Close an open node. The view's own business; the host is not asked.": "Закрывает открытый узел. Это дело самого представления, хост не спрашивается.", - "Close an owned menu; for a menu its host placed, emit sf-context-menu-close for the host to close it.": "Закрывает меню, открытое самим компонентом; для меню, которое поставил хост, отправляет sf-context-menu-close, чтобы его закрыл хост.", + "Close an open node. The view's own business; the host is not asked.": "Закрывает открытый узел. Это дело самого представления, приложение не спрашивается.", + "Close an owned menu; for a menu its host placed, emit sf-context-menu-close for the host to close it.": "Закрывает меню, открытое самим компонентом; для меню, которое поставило приложение, отправляет `sf-context-menu-close`, чтобы его закрыло приложение.", "Close is decorative and never enters the tab order. The containing native button owns focus.": "Кнопка закрытия декоративна и не входит в порядок табуляции. Фокусом владеет содержащая её нативная кнопка.", "Close it.": "Закрыть.", "Close the open group, dropping what was typed. Writes nothing.": "Закрывает открытую группу, отбрасывая введённое. Ничего не записывает.", @@ -237,69 +237,69 @@ "Close when already open for this anchor, otherwise openFor().": "Закрывает меню, если оно уже открыто у этого элемента, иначе вызывает openFor().", "Closed.": "Закрыто.", "Closes it.": "Закрывает пояснение.", - "Closes the Drawer and restores focus to the opener. Dispatches drawer:before-close (cancelable) and drawer:after-close unless options.emit is false. Returns the element.": "Закрывает Drawer и возвращает фокус элементу, который его открыл. Отправляет drawer:before-close (отменяемое) и drawer:after-close, если options.emit не равно false. Возвращает элемент.", - "Closes the list when open, opens it otherwise. Returns the element.": "Закрывает список, если он открыт, иначе открывает. Возвращает элемент.", - "Closes the option list and clears the search text. Returns the element.": "Закрывает список вариантов и очищает текст поиска. Возвращает элемент.", - "Closes the window after modal:before-close (cancelable), runs the close transition, restores focus and dispatches modal:after-close. Returns the element.": "Закрывает окно после modal:before-close (отменяемое), выполняет анимацию закрытия, возвращает фокус и отправляет modal:after-close. Возвращает элемент.", + "Closes the Drawer and restores focus to the opener. Dispatches drawer:before-close (cancelable) and drawer:after-close unless options.emit is false. Returns the element.": "Закрывает Drawer и возвращает фокус элементу, который его открыл. Отправляет drawer:before-close (отменяемое) и drawer:after-close, если options.emit не равно false. Возвращает тег.", + "Closes the list when open, opens it otherwise. Returns the element.": "Закрывает список, если он открыт, иначе открывает. Возвращает тег.", + "Closes the option list and clears the search text. Returns the element.": "Закрывает список вариантов и очищает текст поиска. Возвращает тег.", + "Closes the window after modal:before-close (cancelable), runs the close transition, restores focus and dispatches modal:after-close. Returns the element.": "Закрывает окно после modal:before-close (отменяемое), выполняет анимацию закрытия, возвращает фокус и отправляет modal:after-close. Возвращает тег.", "Color scheme for the selected button.": "Цветовая схема выбранной кнопки.", "Comma-separated positive page-size choices.": "Варианты размера страницы — положительные числа через запятую.", "Commit a successful external save response.": "Фиксирует успешный ответ внешнего сохранения.", "Compact route, source or reference shown beside the label.": "Компактный маршрут, источник или ссылка рядом с подписью.", "Compact static, selectable and removable labels with one explicit interaction owner.": "Компактные статические, выбираемые и удаляемые метки с одним явным владельцем взаимодействия.", "Complete server-backed collection view with search, filters, table preferences, row and bulk actions, and pagination.": "Полное представление коллекции с серверными данными: поиск, фильтры, настройки таблицы, действия над строками и массовые действия, пагинация.", - "Composition input port entry used by sf-composition-scope. Accepts only the declared context port with record-ids.v1; invalid ports or values throw TypeError before any state change.": "Входной порт композиции, используемый `sf-composition-scope`. Принимает только объявленный порт контекста с `record-ids.v1`; при недопустимых портах или значениях до изменения состояния выбрасывается `TypeError`.", + "Composition input port entry used by sf-composition-scope. Accepts only the declared context port with record-ids.v1; invalid ports or values throw TypeError before any state change.": "Принимает от `sf-composition-scope` выбранные записи (`record-ids.v1`). Неверный порт или значение — ошибка `TypeError`, и ничего не меняется.", "Composition port output. The table emits port selection (record-ids.v1) once per change of its explicit selection, including clearing; a common sf-composition-scope routes it.": "Выход порта композиции. Таблица отправляет порт `selection` (`record-ids.v1`) один раз при каждом изменении явного выделения, включая сброс; маршрутизирует его общий `sf-composition-scope`.", "Concise supporting text at the normal body size.": "Краткий вспомогательный текст обычного размера основного текста.", - "Connect a host adapter exposing raise(intent, payload, {signal}), version and capabilities.": "Подключает адаптер хоста, предоставляющий `raise(intent, payload, {signal})`, `version` и `capabilities`.", - "Context menus focus their first available native item after rendering. Escape returns to the native opener; Tab/Shift+Tab close and continue from the opener. Outside focus is preserved. If save/cancel removes the opener, abandoned body focus returns to the settings control or another available control in this Admin Menu. Shared portal ownership and stale callbacks are guarded. Popup geometry follows the native opener, including display-contents Smart hosts, LTR/RTL, responsive movement, content, font and viewport changes; --sf-context-menu-viewport-space derives from the spacing scale. Internal scrolling preserves the menu; outside document scrolling dismisses it. Search and nested drill-down layers make inactive panels inert. Opening a nested layer focuses its localized Back control; Back restores the corresponding tree trigger. Compact search focuses the revealed input. Search placement and directional chevrons follow LTR or RTL.": "Контекстные меню после отрисовки переносят фокус на первый доступный нативный пункт. Escape возвращает фокус на нативный элемент, открывший меню; Tab/Shift+Tab закрывают меню и продолжают от него. Фокус снаружи сохраняется. Если сохранение или отмена удаляет открывший элемент, потерянный фокус `body` возвращается на элемент управления настройками или другой доступный элемент управления в этом Admin Menu. Общее владение порталом и устаревшие колбэки защищены. Геометрия всплывающего окна следует за нативным открывающим элементом, включая смарт-элементы с `display: contents`, LTR/RTL, адаптивное перемещение, изменения содержимого, шрифта и окна просмотра; `--sf-context-menu-viewport-space` выводится из шкалы отступов. Внутренняя прокрутка сохраняет меню; прокрутка документа снаружи закрывает его. Слои поиска и вложенного перехода делают неактивные панели инертными. Открытие вложенного слоя переносит фокус на его локализованную кнопку «Назад»; «Назад» возвращает фокус на соответствующий триггер дерева. Компактный поиск переносит фокус на открывшееся поле ввода. Размещение поиска и направленные шевроны учитывают LTR или RTL.", + "Connect a host adapter exposing raise(intent, payload, {signal}), version and capabilities.": "Подключает адаптер приложения, предоставляющий `raise(intent, payload, {signal})`, `version` и `capabilities`.", + "Context menus focus their first available native item after rendering. Escape returns to the native opener; Tab/Shift+Tab close and continue from the opener. Outside focus is preserved. If save/cancel removes the opener, abandoned body focus returns to the settings control or another available control in this Admin Menu. Shared portal ownership and stale callbacks are guarded. Popup geometry follows the native opener, including display-contents Smart hosts, LTR/RTL, responsive movement, content, font and viewport changes; --sf-context-menu-viewport-space derives from the spacing scale. Internal scrolling preserves the menu; outside document scrolling dismisses it. Search and nested drill-down layers make inactive panels inert. Opening a nested layer focuses its localized Back control; Back restores the corresponding tree trigger. Compact search focuses the revealed input. Search placement and directional chevrons follow LTR or RTL.": "Открытое меню ставит фокус на первый доступный пункт. Escape возвращает фокус на кнопку, открывшую меню; Tab и Shift+Tab закрывают меню и идут дальше от неё. Если кнопка исчезла после сохранения или отмены, фокус переходит на кнопку настроек или другую кнопку меню. Меню держится рядом со своей кнопкой при прокрутке внутри, смене размера окна, шрифта и направления письма; прокрутка страницы закрывает его. Во вложенном уровне фокус встаёт на кнопку «Назад», а «Назад» возвращает к пункту, который этот уровень открыл. Компактный поиск ставит фокус в поле поиска.", "Continuous determinate progress with normalized value, accessible range semantics and explicit semantic tone.": "Непрерывный определённый прогресс с нормализованным значением, доступной семантикой диапазона и явным семантическим тоном.", "Copies a value or a target's text, confirms with a check and a polite announcement, and selects the text for Ctrl+C when the browser refuses the clipboard.": "Копирует значение или текст элемента, подтверждает галочкой и вежливым объявлением, а если браузер не даёт доступ к буферу обмена, выделяет текст для Ctrl+C.", - "Copies as a press would; a press while a copy is in flight is ignored.": "Копирует так же, как нажатие; нажатие во время копирования игнорируется.", - "Copy the address the host gave, and say whether the browser allowed it.": "Копирует адрес, переданный хостом, и сообщает, разрешил ли это браузер.", + "Copies as a press would; a press while a copy is in flight is ignored.": "Копирует, как при нажатии; пока идёт копирование, повторное нажатие ничего не делает.", + "Copy the address the host gave, and say whether the browser allowed it.": "Копирует адрес, переданный приложением, и сообщает, разрешил ли это браузер.", "Country Code Smart Component from SIMAI Framework.": "Смарт-компонент Country Code из SIMAI Framework.", "Country-code button opens a single-select listbox. Arrows, Home, End and typeahead move focus without changing the phone; Enter/Space commit and Escape cancels. Closing by confirmation or Escape returns focus to the button; Tab leaves without trapping focus. Disabled fields do not open.": "Кнопка кода страны открывает список с одиночным выбором (`listbox`). Стрелки, Home, End и поиск по первым буквам перемещают фокус, не меняя телефон; Enter/Space подтверждают выбор, Escape отменяет. При закрытии подтверждением или по Escape фокус возвращается на кнопку; Tab уводит фокус без ловушки. Отключённые поля не открываются.", "Current all-items toggle value.": "Текущее значение переключателя «все элементы».", "Current one-based page number.": "Текущий номер страницы, начиная с единицы.", - "Currently selected item value.": "Значение выбранного элемента.", + "Currently selected item value.": "Значение выбранной кнопки.", "Declarations set on the panel itself, for the custom properties it reads -- its background, radius, shadow. A consumer painting its content a different colour than the panel leaves the head and the gutters in the other one.": "Объявления, задаваемые на самой панели, для читаемых ею пользовательских свойств — фона, радиуса, тени. Если потребитель окрашивает содержимое в цвет, отличный от панели, заголовок и поля остаются другого цвета.", "Declarative option descriptor and visual row primitive owned by Dropdown.": "Декларативное описание варианта и визуальная строка, которыми владеет Dropdown.", - "Declare the view's own actions for the toolbar menu: {id, label, icon?, href?}. An href must name this same site. Without actions the control is not rendered.": "Объявляет собственные действия представления для меню панели инструментов: `{id, label, icon?, href?}`. `href` должен указывать на этот же сайт. Без действий элемент управления не отрисовывается.", + "Declare the view's own actions for the toolbar menu: {id, label, icon?, href?}. An href must name this same site. Without actions the control is not rendered.": "Свои действия в меню панели инструментов: `{id, label, icon?, href?}`; `href` — только на этот же сайт. Без действий кнопки меню нет.", "Declared but not raised: no code path in this version dispatches it. Saved-view writes go through the port as view.open, view.save, view.save_shared and view.delete, and their outcome is reported by sf-data-view-answer.": "Объявлено, но не отправляется: в этой версии его не вызывает ни один путь кода. Запись сохранённых представлений идёт через порт как view.open, view.save, view.save_shared и view.delete, а её результат сообщает sf-data-view-answer.", "Decorative Framework icon name.": "Имя декоративной иконки Framework.", - "Decorative close-glyph size token.": "Токен размера декоративного символа закрытия.", - "Decorative icon name.": "Имя декоративной иконки.", + "Decorative close-glyph size token.": "Размер крестика: чем больше число, тем крупнее.", + "Decorative icon name.": "Иконка рядом с текстом, например `info`.", "Decorative icon name. An absent attribute is the arrow; an empty one draws no icon, for a reference that stands beside its own label.": "Имя декоративной иконки. Без атрибута отображается стрелка; пустое значение не рисует иконку — для ссылки, стоящей рядом со своей подписью.", "Decorative loading placeholder that reserves source-backed content geometry with semantic tokens and reduced-motion support.": "Декоративная заглушка загрузки, которая резервирует геометрию будущего содержимого, использует семантические токены и учитывает режим уменьшенного движения.", - "Default menu: direct native buttons/links and native controls of direct sf-button children receive menuitem roles and one roving tab stop. Native disabled and hidden/inert items are skipped. The host owns opening focus, Escape/Tab dismissal and focus return. Arbitrary widgets and non-menu/custom templates are not managed.": "Меню по умолчанию: прямые нативные кнопки и ссылки, а также нативные элементы управления прямых дочерних `sf-button` получают роль `menuitem` и одну перемещаемую точку табуляции. Нативно отключённые и скрытые/инертные пункты пропускаются. Фокусом при открытии, закрытием по Escape/Tab и возвратом фокуса управляет хост. Произвольные виджеты и шаблоны, не являющиеся меню или пользовательские, не обрабатываются.", + "Default menu: direct native buttons/links and native controls of direct sf-button children receive menuitem roles and one roving tab stop. Native disabled and hidden/inert items are skipped. The host owns opening focus, Escape/Tab dismissal and focus return. Arbitrary widgets and non-menu/custom templates are not managed.": "Меню по умолчанию: прямые нативные кнопки и ссылки, а также нативные элементы управления прямых дочерних `sf-button` получают роль `menuitem` и одну перемещаемую точку табуляции. Нативно отключённые и скрытые/инертные пункты пропускаются. Фокусом при открытии, закрытием по Escape/Tab и возвратом фокуса управляет приложение. Произвольные виджеты и шаблоны, не являющиеся меню или пользовательские, не обрабатываются.", "Delete a saved view.": "Удаляет сохранённое представление.", - "Deprecated: a menu has no tail since 1.3.0 (owner, 2026-10-12); the value is kept for its class and draws nothing.": "Устаревший: у меню нет хвоста; значение сохранено ради его класса и ничего не рисует.", + "Deprecated: a menu has no tail since 1.3.0 (owner, 2026-10-12); the value is kept for its class and draws nothing.": "Ничего не рисует: у меню нет хвоста. Значение оставлено только ради класса.", "Deprecated: superseded by sf-switch, which draws the same control and carries both of Toggle's looks. A compact on/off control (a native checkbox with role=\"switch\") kept only for markup already written; it is removed after 2026-11-01 (journal record component-toggle-to-switch).": "Устарело: заменено на sf-switch, который рисует тот же элемент управления и поддерживает оба вида Toggle. Компактный переключатель вкл./выкл. (нативный флажок с role=\"switch\"), сохранённый только для уже написанной разметки; удаляется после 2026-11-01 (запись журнала component-toggle-to-switch).", "Destination-oriented visible link label.": "Видимая подпись ссылки, описывающая место назначения.", "Disable interactive toggle and close actions.": "Отключает интерактивные действия переключения и закрытия.", "Disable the field and the panel.": "Отключает поле и панель.", - "Disabled state flag.": "Флаг отключённого состояния.", - "Disables the whole group.": "Отключает всю группу.", + "Disabled state flag.": "Кнопка недоступна.", + "Disables the whole group.": "Вся группа недоступна.", "Discard the local draft.": "Отбрасывает локальный черновик.", - "Dispatches sf-alert-close, then removes the alert from the DOM after its exit transition (at once under reduced motion). Returns the element.": "Отправляет sf-alert-close, затем удаляет уведомление из DOM после анимации исчезновения (сразу при уменьшенном движении). Возвращает элемент.", + "Dispatches sf-alert-close, then removes the alert from the DOM after its exit transition (at once under reduced motion). Returns the element.": "Отправляет sf-alert-close, затем удаляет уведомление из DOM после анимации исчезновения (сразу при уменьшенном движении). Возвращает тег.", "Drag-and-drop list primitive for reordering, moving between lists and copying from a library by mouse, pen, touch and keyboard; reports intent only.": "Список с перетаскиванием для изменения порядка, переноса между списками и копирования из библиотеки мышью, пером, касанием и с клавиатуры; только сообщает о намерении.", "Draw the panel at the end of the document so no clipping ancestor cuts it.": "Рисует панель в конце документа, чтобы её не обрезал ни один обрезающий предок.", "Draw the text field; without it only the panel is drawn.": "Рисует текстовое поле; без него рисуется только панель.", "Dropped files the accept list does not name were left out, as the platform dialog would not have offered them.": "Перетащенные файлы, не указанные в списке accept, пропущены, как их не предложил бы и диалог платформы.", "Each enabled native step button remains keyboard reachable and uses the shared focus-visible indicator. The current step exposes aria-current=step; completed and error status are included in accessible names.": "Каждая доступная нативная кнопка шага остаётся доступной с клавиатуры и использует общий индикатор `focus-visible`. Текущий шаг передаёт `aria-current=step`; статусы завершения и ошибки включены в доступные имена.", - "Editing finished with Enter or focus leaving; the host saves. Dispatched on the edited element; bubbles to document.": "Редактирование завершено нажатием Enter или уходом фокуса; сохраняет хост. Отправляется на редактируемом элементе; всплывает до `document`.", + "Editing finished with Enter or focus leaving; the host saves. Dispatched on the edited element; bubbles to document.": "Редактирование завершено нажатием Enter или уходом фокуса; сохраняет приложение. Отправляется на редактируемом элементе; всплывает до `document`.", "Editing was cancelled with Escape; the original HTML is restored. Dispatched on the edited element; bubbles to document.": "Редактирование отменено нажатием Escape; исходный HTML восстановлен. Отправляется на редактируемом элементе; всплывает до `document`.", "Editor chrome over a rendered Composition Document: frames, labels, badges, action toolbar, insertion places, drag and keyboard moves and a keyboard tree, without changing the canvas HTML.": "Интерфейс редактора поверх отрисованного Composition Document: рамки, подписи, значки, панель действий, места вставки, перемещение перетаскиванием и с клавиатуры и дерево для клавиатуры — без изменения HTML холста.", "Emit a retry intent after a failed data request.": "Отправляет намерение повтора после неудачного запроса данных.", - "Emit a typed row or bulk action request; the host owns execution and authorization. Invalid arguments throw TypeError before emission.": "Отправляет типизированный запрос действия над строкой или пакетного действия; выполнение и авторизация на стороне хоста. При недопустимых аргументах до отправки выбрасывается `TypeError`.", + "Emit a typed row or bulk action request; the host owns execution and authorization. Invalid arguments throw TypeError before emission.": "Отправляет типизированный запрос действия над строкой или пакетного действия; выполнение и авторизация на стороне приложения. При недопустимых аргументах до отправки выбрасывается `TypeError`.", "Emit removal intent for an enabled closable tag.": "Отправляет намерение удаления для доступного закрываемого тега.", "Emit sf-table-create-intent for the main button (null) or a declared create item id.": "Отправляет `sf-table-create-intent` для основной кнопки (`null`) или объявленного id пункта создания.", "Emits sf-show-more with the current paging and the given item; performs no request and changes no state.": "Отправляет sf-show-more с текущими параметрами пагинации и переданным пунктом; не выполняет запрос и не меняет состояние.", - "Emitted once before token-based dismissal removes the toast owner.": "Отправляется один раз, перед тем как закрытие по токену удалит владельца уведомления.", - "Emitted once for an enabled native destination or application-owned action, from the rendered .sf-download-file root; bubbles to the host, is not composed and not cancelable.": "Отправляется один раз для доступного нативного назначения или действия, которым управляет приложение, от отрисованного корня .sf-download-file; всплывает до хост-элемента, не с composed: true и не отменяемое.", + "Emitted once before token-based dismissal removes the toast owner.": "Приходит один раз перед тем, как уведомление закроется по команде из кода.", + "Emitted once for an enabled native destination or application-owned action, from the rendered .sf-download-file root; bubbles to the host, is not composed and not cancelable.": "Отправляется один раз для доступного нативного назначения или действия, которым управляет приложение, от отрисованного корня.sf-download-file; всплывает до тега, не с composed: true и не отменяемое.", "Emitted once for an enabled native destination or application-owned action.": "Отправляется один раз для доступного нативного места назначения или действия, которым владеет приложение.", "Emitted once when the optional enabled action is activated.": "Отправляется один раз при активации необязательного доступного действия.", "Empty draws no star; off and on draw it in that state.": "Пустое значение не рисует звезду; off и on рисуют её в соответствующем состоянии.", - "Empty the list. Returns the element.": "Очищает список. Возвращает элемент.", + "Empty the list. Returns the element.": "Очищает список. Возвращает тег.", "Empty: the text of the page's language (\"Avatar\" in English).": "Пусто — текст на языке страницы (по-английски «Avatar»).", "Empty: the text of the page's language (\"Breadcrumb\" in English).": "Пусто — текст на языке страницы (по-английски «Breadcrumb»).", "Empty: the text of the page's language (\"Click to upload\" in English).": "Пусто — текст на языке страницы (по-английски «Click to upload»).", @@ -319,18 +319,18 @@ "Enter or leave the settings editor.": "Входит в редактор настроек или выходит из него.", "Esc and a press outside close it. A consumer that owns those keys turns this off and calls close() when it decides.": "Esc и нажатие снаружи закрывают её. Потребитель, который сам обрабатывает эти действия, отключает это и вызывает close(), когда решит.", "Every file finished.": "Все файлы обработаны.", - "Every icon-only action and contextual surface has an accessible name. Per-instance overlays stay inside the visual viewport, close on Escape and restore focus to their trigger. Column resize keeps focus on its native button.": "У каждого действия только с иконкой и каждой контекстной поверхности есть доступное имя. Оверлеи экземпляра остаются в пределах визуального окна просмотра, закрываются по Escape и возвращают фокус на свой триггер. При изменении ширины столбца фокус остаётся на его нативной кнопке.", - "Existing compact-to-prominent component size scale.": "Существующая шкала размеров компонентов от компактного до крупного.", + "Every icon-only action and contextual surface has an accessible name. Per-instance overlays stay inside the visual viewport, close on Escape and restore focus to their trigger. Column resize keeps focus on its native button.": "У каждой кнопки-иконки и всплывающей панели есть название для экранного диктора. Панели не выходят за экран, закрываются по Escape и возвращают фокус на свою кнопку. При изменении ширины столбца фокус остаётся на его кнопке.", + "Existing compact-to-prominent component size scale.": "Размер: чем больше число, тем крупнее.", "Explicit lifetime in milliseconds. Zero keeps the message until dismissed.": "Явное время жизни в миллисекундах. Ноль оставляет сообщение до закрытия.", - "Extra classes applied to the group root.": "Дополнительные классы корневого элемента группы.", - "Extra classes applied to the inner button element.": "Дополнительные классы внутреннего элемента кнопки.", - "Extra classes applied to the inner icon button element.": "Дополнительные классы внутреннего элемента кнопки-иконки.", + "Extra classes applied to the group root.": "Свои CSS-классы для группы.", + "Extra classes applied to the inner button element.": "Свои CSS-классы для кнопки.", + "Extra classes applied to the inner icon button element.": "Свои CSS-классы для кнопки.", "File Upload Smart Component from SIMAI Framework.": "Смарт-компонент File Upload из SIMAI Framework.", - "Files dropped from the computer on the view are the host's to upload: a drop zone shows while they are over it, and sf-data-view-files-drop {files} says they were dropped.": "Файлы, перетащенные с компьютера на представление, загружает хост: пока файлы над ним, видна зона сброса, а sf-data-view-files-drop {files} сообщает, что их отпустили.", + "Files dropped from the computer on the view are the host's to upload: a drop zone shows while they are over it, and sf-data-view-files-drop {files} says they were dropped.": "Файлы, перетащенные с компьютера на представление, загружает приложение: пока файлы над ним, видна зона сброса, а sf-data-view-files-drop {files} сообщает, что их отпустили.", "Files from the computer were dropped on a node: {value, files}. The tree uploads nothing.": "На узел отпустили файлы с компьютера: {value, files}. Дерево ничего не загружает.", - "Files from the computer were dropped on a view that has accept-files. The view uploads nothing and the files do not go through the port; the host uploads them.": "На представление с accept-files отпустили файлы с компьютера. Представление ничего не загружает, и файлы не идут через порт; их загружает хост.", - "Files from the computer were dropped on the view: {files}. The view uploads nothing; the host does.": "На представление отпустили файлы с компьютера: {files}. Представление ничего не загружает — это делает хост.", - "Files were chosen: the native event from the inner file input for a pick, and a CustomEvent from the area for a drop (detail files and source 'drop'), so a form hears of both.": "Выбраны файлы: при выборе — нативное событие от внутреннего поля выбора файла, при перетаскивании — CustomEvent от области (detail files и source 'drop'), поэтому форма узнаёт об обоих случаях.", + "Files from the computer were dropped on a view that has accept-files. The view uploads nothing and the files do not go through the port; the host uploads them.": "На представление с accept-files отпустили файлы с компьютера. Представление ничего не загружает, и файлы не идут через порт; их загружает приложение.", + "Files from the computer were dropped on the view: {files}. The view uploads nothing; the host does.": "На представление отпустили файлы с компьютера: {files}. Представление ничего не загружает — это делает приложение.", + "Files were chosen: the native event from the inner file input for a pick, and a CustomEvent from the area for a drop (detail files and source 'drop'), so a form hears of both.": "Выбраны файлы — через окно выбора или перетаскиванием (тогда в `detail` есть `files` и `source: 'drop'`); форма узнаёт об обоих случаях.", "Files were chosen; the native event bubbles from the inner file input.": "Файлы выбраны; нативное событие всплывает от внутреннего поля ввода файла.", "Files were selected for upload.": "Выбраны файлы для загрузки.", "Fired after the window closes. Bubbles and is composed.": "После закрытия окна. Всплывает.", @@ -344,51 +344,51 @@ "Fires after every port answer the view acts on, including the ones it makes itself (port not connected, capability not provided, action not allowed), so a page can watch outcomes without wrapping the port.": "Приходит после каждого ответа порта, по которому действует представление, включая ответы, которые оно даёт себе само (порт не подключён, возможность не объявлена, действие не разрешено), — чтобы страница видела результаты, не оборачивая порт.", "Fires whenever the view's data state changes (loading, populated, empty, error), with the line it announces in its live region; for a page that mirrors the state elsewhere.": "Приходит при каждой смене состояния данных представления (loading, populated, empty, error) вместе со строкой, которую оно объявляет в своей живой области; для страницы, которая показывает состояние где-то ещё.", "Flips the open state through setOpen.": "Переключает состояние открытия через setOpen.", - "Focus the current available item. A host that renders the menu itself waits for rendering and owns opening and dismissal.": "Переводит фокус на текущий доступный пункт. Хост, который рисует меню сам, ждёт отрисовки и сам отвечает за открытие и закрытие.", + "Focus the current available item. A host that renders the menu itself waits for rendering and owns opening and dismissal.": "Переводит фокус на текущий доступный пункт. Приложение, которое рисует меню само, ждёт отрисовки и само отвечает за открытие и закрытие.", "Focus the current available native item in the rendered default menu. The caller must wait for rendering and owns opening and dismissal.": "Переносит фокус на текущий доступный нативный пункт в отрисованном меню по умолчанию. Вызывающий код должен дождаться отрисовки и сам управляет открытием и закрытием.", "Form size of the field.": "Размер поля формы.", - "Form size: the reference becomes a control of that size, for a row of fields or a table cell. Empty keeps the card spacing.": "Размер формы: ссылка становится элементом управления этого размера — для ряда полей или ячейки таблицы. Пустое значение сохраняет отступы карточки.", + "Form size: the reference becomes a control of that size, for a row of fields or a table cell. Empty keeps the card spacing.": "Размер ссылки рядом с полями или в ячейке таблицы, например `1`. Пусто — отступы карточки.", "Formats line shown under the action. When not set it is derived from accept, and is empty when neither is given: the component names no formats it cannot know.": "Строка форматов под действием. Если не задана, выводится из `accept`; пуста, если не задано ни то ни другое: компонент не называет форматы, которые не может знать.", - "Framework semantic background utility for the color marker.": "Семантическая утилита фона Framework для цветового маркера.", - "Framework size token: sets the label text and the default spacing.": "Токен размера Framework: задаёт текст подписи и отступы по умолчанию.", + "Framework semantic background utility for the color marker.": "Цвет маркера классом фона, например `bg-primary`.", + "Framework size token: sets the label text and the default spacing.": "Размер: от него зависят размер текста и отступы.", "Framework typography and spacing scale.": "Шкала типографики и отступов Framework.", - "Framework utility classes for the batch-action section.": "Утилитарные классы Framework для раздела пакетных действий.", - "Framework utility classes for the navigation section.": "Утилитарные классы Framework для раздела навигации.", - "Framework utility classes for the show-more section.": "Утилитарные классы Framework для раздела «показать ещё».", - "Framework utility classes for the visible root.": "Утилитарные классы Framework для видимого корневого элемента.", - "Framework utility classes for the visible surface root.": "Утилитарные классы Framework для видимого корня поверхности.", + "Framework utility classes for the batch-action section.": "Свои CSS-классы для блока пакетных действий.", + "Framework utility classes for the navigation section.": "Свои CSS-классы для блока навигации.", + "Framework utility classes for the show-more section.": "Свои CSS-классы для блока «показать ещё».", + "Framework utility classes for the visible root.": "Свои CSS-классы для элемента.", + "Framework utility classes for the visible surface root.": "Свои CSS-классы для панели.", "Further mask options as JSON, passed to the field's mask.": "Дополнительные параметры маски в JSON, передаются маске поля.", "Gallery Smart Component from SIMAI Framework.": "Смарт-компонент Gallery из SIMAI Framework.", - "Hand the host the files the person chose, one intent each.": "Передаёт хосту выбранные человеком файлы, по одному намерению на файл.", + "Hand the host the files the person chose, one intent each.": "Передаёт приложению выбранные человеком файлы, по одному намерению на файл.", "Heading shown above the search field in the navigation panel.": "Заголовок над полем поиска в панели навигации.", - "Hides an entry in this layer. Disabled when a layer above hid it, which the host states per entry.": "Скрывает запись в этом слое. Отключено, если её скрыл слой выше; хост указывает это для каждой записи.", - "Hides drop places the host would refuse: (place, item) => boolean.": "Скрывает места вставки, которые хост отклонил бы: `(place, item) => boolean`.", + "Hides an entry in this layer. Disabled when a layer above hid it, which the host states per entry.": "Скрывает запись в этом слое. Отключено, если её скрыл слой выше; приложение указывает это для каждой записи.", + "Hides drop places the host would refuse: (place, item) => boolean.": "Скрывает места вставки, которые приложение отклонило бы: `(place, item) => boolean`.", "Host-driven data view that composes toolbar, content and pagination around a separate data port.": "Представление данных под управлением элемента: панель инструментов, содержимое и пагинация вокруг отдельного порта данных.", "How a pointer drag shows where the item lands: silhouette lifts the item out of the list and opens an outline of its size at the place it would take, the list making room; line draws a thin line there and leaves the list as it is. Keyboard moves and external targets always use the line; a list that wraps into a grid opens the outline as one of its cells, in reading order.": "Как перетаскивание указателем показывает, куда встанет пункт: silhouette поднимает пункт из списка и открывает на его будущем месте контур его размера, а список расступается; line рисует там тонкую линию и не трогает список. Перемещение с клавиатуры и внешние цели всегда показывают линию; в списке, который переносится в сетку, контур занимает одну ячейку в порядке чтения.", "How a pointer drag shows where the item lands: silhouette lifts the item out of the list and opens an outline of its size at the place it would take, the list making room; line draws a thin line there and leaves the list as it is. Keyboard moves, external targets and lists that wrap into a grid always use the line.": "Как перетаскивание указателем показывает, куда встанет пункт: silhouette поднимает пункт из списка и открывает на его будущем месте контур его размера, а список расступается; line рисует там тонкую линию и не трогает список. Перемещение с клавиатуры, внешние цели и списки, которые переносятся в сетку, всегда показывают линию.", "How each handle shows its value: not at all, as text beside it, or as a tooltip.": "Как каждая ручка показывает своё значение: никак, текстом рядом с ней или подсказкой.", - "How many columns the settings menu splits its items into. One until a host asks for more: the read was bare for the whole life of this input, so neither its declared default nor a value a host passed ever reached the menu.": "На сколько столбцов меню настроек делит свои пункты. Один, пока хост не запросит больше: на протяжении всего существования этого входа значение читалось напрямую, поэтому ни объявленное значение по умолчанию, ни значение, переданное хостом, до меню не доходили.", + "How many columns the settings menu splits its items into. One until a host asks for more: the read was bare for the whole life of this input, so neither its declared default nor a value a host passed ever reached the menu.": "На сколько столбцов меню настроек делит свои пункты. Один, пока приложение не запросит больше: на протяжении всего существования этого входа значение читалось напрямую, поэтому ни объявленное значение по умолчанию, ни значение, переданное приложением, до меню не доходили.", "How many fields a record shows under its title in the compact list, chosen by the columns' priority.": "Сколько полей запись показывает под заголовком в компактном списке; поля выбираются по приоритету колонок.", "How many options a row holds in the grid layout. Ignored in a list.": "Сколько вариантов помещается в строку в раскладке-сетке. В списке игнорируется.", "How many records the page holds; empty draws no count. The admin menu carries no totals, so this is where they are.": "Сколько записей на странице; пустое значение не выводит счётчик. В меню администратора итогов нет, поэтому они выводятся здесь.", - "How many rows an embedded list draws at most, with a show-all action under it when it is hiding some. Zero is no cap, which is what a page list is. Named apart from `page-size`, which is the host paging, because a cap is what this element shows of a page it already has.": "Максимальное число строк во встроенном списке; если часть скрыта, под ним отображается действие «показать все». Ноль — без ограничения, как в списке на странице. Отделено от `page-size` — постраничного вывода хоста, — потому что ограничение определяет, сколько элемент показывает из уже имеющейся страницы.", + "How many rows an embedded list draws at most, with a show-all action under it when it is hiding some. Zero is no cap, which is what a page list is. Named apart from `page-size`, which is the host paging, because a cap is what this element shows of a page it already has.": "Максимальное число строк во встроенном списке; если часть скрыта, под ним отображается действие «показать все». Ноль — без ограничения, как в списке на странице. Отделено от `page-size` — постраничного вывода приложения, — потому что ограничение определяет, сколько элемент показывает из уже имеющейся страницы.", "How much of each drawer below shows past the one above it at the same edge, as a length (for example var(--sf-space-4)). A drawer stands depth × offset in from its edge, where depth counts the open, undocked drawers below it at that edge. Empty: drawers lie flush.": "Насколько каждая нижняя панель выступает из-под верхней у того же края, в виде длины (например, `var(--sf-space-4)`). Панель отстоит от своего края на глубину × смещение, где глубина — число открытых незакреплённых панелей под ней у этого края. Пустое значение: панели лежат вровень.", "How the alert looks: a filled surface, an outline, or flat.": "Вид уведомления: заливка, контур или плоский.", "How the badge looks: the most visible fill, a calmer tonal one, or an outline.": "Вид значка: наиболее заметная заливка, более спокойная тональная или контур.", "How the button looks. Surface and ghost read the neutral alpha ramp: surface keeps a faint fill and a border, ghost keeps nothing until it is hovered or focused.": "Вид кнопки. `surface` и `ghost` используют нейтральную шкалу прозрачности: `surface` сохраняет лёгкую заливку и рамку, `ghost` не имеет ничего, пока на него не наведут курсор или фокус.", - "How the button looks. Surface reads the neutral alpha ramp: a faint fill and a border. ghost is the link appearance under its old name (compat until 2026-12-01).": "Вид кнопки. `surface` использует нейтральную шкалу прозрачности: лёгкая заливка и рамка. `ghost` — прежнее имя вида `link`, работает до 2026-12-01.", + "How the button looks. Surface reads the neutral alpha ramp: a faint fill and a border. ghost is the link appearance under its old name (compat until 2026-12-01).": "Вид кнопки: `default` — залитая, `tonal` — светлая заливка, `outline` — рамка, `link` — как ссылка, `surface` — лёгкая серая заливка с рамкой.", "How the date is shown in the field, e.g. DD.MM.YYYY. The value stays ISO.": "Как дата показывается в поле, например DD.MM.YYYY. Значение остаётся в ISO.", "How the dropdown looks: a filled field or an outlined one.": "Вид выпадающего списка: поле с заливкой или с контуром.", "How the field looks: a bordered box or a filled one.": "Вид поля: блок с рамкой или с заливкой.", "How the field looks: a bordered box, a filled one, or hidden.": "Вид поля: блок с рамкой, с заливкой или скрытый.", - "How the icon button looks. Surface and ghost read the neutral alpha ramp: surface keeps a faint fill and a border, ghost keeps nothing until it is hovered or focused.": "Вид кнопки-иконки. `surface` и `ghost` используют нейтральную шкалу прозрачности: `surface` сохраняет лёгкую заливку и рамку, `ghost` не имеет ничего, пока на него не наведут курсор или фокус.", + "How the icon button looks. Surface and ghost read the neutral alpha ramp: surface keeps a faint fill and a border, ghost keeps nothing until it is hovered or focused.": "Вид кнопки: `default` — залитая, `tonal` — светлая заливка, `outline` — рамка, `link` — как ссылка, `surface` — лёгкая серая заливка с рамкой, `ghost` — без фона и рамки, пока на неё не наведут или не перейдут клавишей.", "How the options are laid out. A list is one option a row; a grid puts several in a row, which is the only way a hundred glyphs can be looked at -- a column of them is a column nobody scrolls to the end of. In a grid an option shows its picture and keeps its text as the name a search reads and a pointer sees.": "Раскладка вариантов. В списке — один вариант в строке; в сетке — несколько в строке, и только так можно просмотреть сотню символов: их столбец никто не прокручивает до конца. В сетке вариант показывает изображение, а текст сохраняется как имя для поиска и подсказки при наведении.", "How the records are drawn: a table, a compact list of records, or auto -- a table while the table's container is at least list-below pixels wide, the list below that. sf-data-view asks for auto on a page's list.": "Как рисуются записи: таблицей, компактным списком или auto — таблицей, пока контейнер таблицы не уже list-below пикселей, и списком, когда уже. sf-data-view выбирает auto для списка на странице.", "How the swatch is bounded.": "Как ограничен образец цвета.", "How the tooltip looks: light on a dark surface or the reverse.": "Вид подсказки: светлый текст на тёмной поверхности или наоборот.", "How wide openFor() opens the menu: content (its longest line, between --sf-context-menu--min-inline-size and --sf-context-menu--max-inline-size), trigger (exactly the control that opened it; a long line ends in an ellipsis) or a CSS length. openFor(anchor, {width}) overrides it.": "Какой ширины openFor() открывает меню: content — по самой длинной строке, в пределах --sf-context-menu--min-inline-size и --sf-context-menu--max-inline-size; trigger — точно по элементу, который его открыл (длинная строка обрезается многоточием); или длина CSS. openFor(anchor, {width}) переопределяет значение.", "How wide the panel is, on the drawer's own ladder.": "Ширина панели по собственной шкале панели.", - "Icon button size token.": "Токен размера кнопки-иконки.", + "Icon button size token.": "Размер кнопки: от `1/3` (самая мелкая) до `3` (самая крупная).", "Identity of this instance: the author's id when there is one, an own counter otherwise. Ids, the settings key fallback and the portal derive from it.": "Идентификатор экземпляра: `id` автора, если он есть, иначе собственный счётчик. От него выводятся id, запасной ключ настроек и портал.", "In-place editor for content.heading and content.paragraph text: strong, em, code and safe links, own history, safe paste; reports normalized content, never HTML.": "Редактор текста content.heading и content.paragraph на месте: strong, em, code и безопасные ссылки, собственная история, безопасная вставка; возвращает нормализованное содержимое, а не HTML.", "Indeterminate waiting indicator with arc or dots presentation, optional polite status announcement and Framework-owned motion.": "Индикатор неопределённого ожидания в виде дуги или точек с необязательным вежливым (polite) объявлением статуса и анимацией Framework.", @@ -398,7 +398,7 @@ "Invalid state; the native input publishes aria-invalid.": "Недопустимое состояние; нативное поле ввода публикует `aria-invalid`.", "Items become focusable and describe the instructions. Space or Enter picks up, arrows move within a list and to other accepting lists or external targets, Space or Enter drops, Escape or Tab cancels. Every step is announced in a polite live region in the page language.": "Элементы становятся фокусируемыми и описывают инструкции. Space или Enter берёт элемент, стрелки перемещают его внутри списка и в другие принимающие списки или внешние цели, Space или Enter отпускает, Escape или Tab отменяет. Каждый шаг объявляется в вежливой живой области на языке страницы.", "Items given as data instead of as sf-tree-item children (set as a property, not an attribute): [{label, href?, target?, rel?, kind?, value?, open?, selected?, active?, disabled?, icon?, openIcon?, closedIcon?, chevronOpenIcon?, chevronClosedIcon?, openLabel?, closeLabel?, children?}]. text or title stand in for label. Setting it replaces the items and re-renders; sf-tree-item children are read once and removed, so a parent that re-renders changed items passes them this way.": "Пункты, заданные данными вместо дочерних sf-tree-item (задаётся как свойство, а не атрибут): [{label, href?, target?, rel?, kind?, value?, open?, selected?, active?, disabled?, icon?, openIcon?, closedIcon?, chevronOpenIcon?, chevronClosedIcon?, openLabel?, closeLabel?, children?}]. text или title заменяют label. Установка заменяет пункты и перерисовывает дерево; дочерние sf-tree-item читаются один раз и удаляются, поэтому родитель, который перерисовывает изменённые пункты, передаёт их этим способом.", - "Joined-control position owned by Button Group composition.": "Позиция в объединённой группе элементов управления, которой управляет композиция Button Group.", + "Joined-control position owned by Button Group composition.": "Место кнопки в группе кнопок; группа ставит его сама.", "Keep the draft and expose error or conflict state.": "Сохраняет черновик и показывает состояние ошибки или конфликта.", "Keep visible focus on the active control.": "Сохраняет видимый фокус на активном элементе управления.", "Known human-readable size. Pass it when available to avoid discovery.": "Известный размер в удобочитаемом виде. Передавайте, если он доступен, чтобы не определять его.", @@ -406,65 +406,65 @@ "Label of the all-items toggle. Empty: the text of the page's language (\"For all\" in English).": "Подпись переключателя «для всех». Пусто — текст на языке страницы (по-английски «For all»).", "Label of the batch-action apply button.": "Подпись кнопки применения пакетного действия.", "Label of the batch-action apply button. Empty: the text of the page's language (\"Apply\" in English).": "Подпись кнопки, которая применяет действие к выбранному. Пусто — текст на языке страницы (по-английски «Apply»).", - "Label of the compatible show-more action.": "Подпись совместимого действия «показать ещё».", - "Label of the compatible show-more action. Empty: the text of the page's language (\"Show more\" in English).": "Подпись действия «показать ещё» для совместимости. Пусто — текст на языке страницы (по-английски «Show more»).", + "Label of the compatible show-more action.": "Подпись действия «показать ещё».", + "Label of the compatible show-more action. Empty: the text of the page's language (\"Show more\" in English).": "Подпись действия «показать ещё». Пусто — текст на языке страницы (по-английски «Show more»).", "Label of the field that takes a page number.": "Подпись поля для номера страницы.", "Label of the field that takes a page number. Empty: the text of the page's language (\"Page:\" in English).": "Подпись поля, в которое вводят номер страницы. Пусто — текст на языке страницы (по-английски «Page:»).", "Label of the filter window’s commit button; the number of conditions a press would change is appended to it while a draft is pending.": "Подпись кнопки подтверждения в окне фильтра; пока есть черновик, к ней добавляется число условий, которые изменит нажатие.", "Language of the country names and the field's own words: ru or en. When not set it follows the page: Russian on a Russian page, English otherwise.": "Язык названий стран и собственных текстов поля: `ru` или `en`. Если не задан, следует языку страницы: русский на русской странице, иначе английский.", - "Layout and keyboard navigation orientation.": "Ориентация раскладки и навигации с клавиатуры.", + "Layout and keyboard navigation orientation.": "Направление: `horizontal` — кнопки в ряд, `vertical` — столбиком; стрелки на клавиатуре идут так же.", "Leaves configuring. Changes are already stored, so this closes a mode rather than confirming anything.": "Выходит из режима настройки. Изменения уже сохранены, поэтому действие закрывает режим, а не подтверждает что-либо.", - "Legacy compatibility setter; actions remain visible.": "Сеттер для совместимости; действия остаются видимыми.", - "Legacy compatibility toggle; actions remain visible.": "Переключатель для совместимости; действия остаются видимыми.", - "Legacy name for icon-start, still honoured; icon-start wins when both are set.": "Устаревшее имя icon-start, поддерживается; если заданы оба, приоритет у icon-start.", + "Legacy compatibility setter; actions remain visible.": "Действия остаются видимыми при любом значении.", + "Legacy compatibility toggle; actions remain visible.": "Действия остаются видимыми при любом значении.", + "Legacy name for icon-start, still honoured; icon-start wins when both are set.": "То же, что `icon-start`; если заданы оба, действует `icon-start`.", "Let go of the quick range and move focus to the grid.": "Покидает список быстрых диапазонов и переводит фокус в сетку дней.", - "Listen for sf-file-upload:complete; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:complete; обработчик получает событие. Возвращает элемент.", - "Listen for sf-file-upload:file-add; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:file-add; обработчик получает событие. Возвращает элемент.", - "Listen for sf-file-upload:file-complete; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:file-complete; обработчик получает событие. Возвращает элемент.", - "Listen for sf-file-upload:file-error; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:file-error; обработчик получает событие. Возвращает элемент.", - "Listen for sf-file-upload:remove; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:remove; обработчик получает событие. Возвращает элемент.", - "Listen for sf-file-upload:retry; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:retry; обработчик получает событие. Возвращает элемент.", + "Listen for sf-file-upload:complete; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:complete; обработчик получает событие. Возвращает тег.", + "Listen for sf-file-upload:file-add; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:file-add; обработчик получает событие. Возвращает тег.", + "Listen for sf-file-upload:file-complete; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:file-complete; обработчик получает событие. Возвращает тег.", + "Listen for sf-file-upload:file-error; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:file-error; обработчик получает событие. Возвращает тег.", + "Listen for sf-file-upload:remove; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:remove; обработчик получает событие. Возвращает тег.", + "Listen for sf-file-upload:retry; handler receives the event. Returns the element.": "Подписывается на sf-file-upload:retry; обработчик получает событие. Возвращает тег.", "Live normalized content after a change. Dispatched on the edited element; bubbles to document.": "Актуальное нормализованное содержимое после изменения. Отправляется на редактируемом элементе; всплывает до `document`.", "Live-region role for dynamically inserted feedback only.": "Роль живой области только для динамически вставляемой обратной связи.", "Loading state flag.": "Флаг состояния загрузки.", "Localized accessible name of the close action.": "Локализованное доступное имя действия закрытия.", "Localized accessible name of the close action. Empty: the text of the page's language (\"Close alert\" in English).": "Доступное имя действия закрытия на языке страницы. Пусто — текст на языке страницы (по-английски «Close alert»).", "Localized accessible name of the close action. Empty: the text of the page's language (\"Close message\" in English).": "Доступное имя действия закрытия на языке страницы. Пусто — текст на языке страницы (по-английски «Close message»).", - "Logical end icon name.": "Имя иконки в логическом конце.", + "Logical end icon name.": "Иконка после подписи, например `arrow_forward`.", "Logical placement of the indicator relative to its text.": "Логическое расположение индикатора относительно текста.", - "Logical start icon name.": "Имя иконки в логическом начале.", + "Logical start icon name.": "Иконка перед подписью, например `add`.", "Logical tail placement.": "Логическое расположение хвоста.", - "Mark the Show more control as working while the host fetches the next portion; it is disabled and shows a loader.": "Отмечает кнопку «Показать ещё» как занятую, пока хост загружает следующую порцию; она отключена и показывает индикатор загрузки.", + "Mark the Show more control as working while the host fetches the next portion; it is disabled and shows a loader.": "Отмечает кнопку «Показать ещё» как занятую, пока приложение загружает следующую порцию; она отключена и показывает индикатор загрузки.", "Mark the field required in its form.": "Отмечает поле как обязательное в форме.", "Marks an entry the collection declares rare, beside its name.": "Отмечает рядом с именем запись, которую коллекция объявляет редкой.", "Marks an insertion place or clears it with null.": "Отмечает место вставки или сбрасывает его значением `null`.", "Mask what can be typed in the field to the format.": "Ограничивает ввод в поле маской формата.", - "Material icon name.": "Имя иконки Material.", + "Material icon name.": "Иконка кнопки по имени, например `edit`.", "Merges data into the current data (a function receives the current data and returns the next) and re-renders. tabs or items become tab items; panels or content become panels. A non-object is ignored.": "Объединяет data с текущими данными (функция получает текущие данные и возвращает новые) и перерисовывает. tabs или items становятся вкладками; panels или content — панелями. Значение, не являющееся объектом, игнорируется.", "Milliseconds the result stays.": "Сколько миллисекунд держится результат.", - "Minimizes an open overlay window after modal:before-hide (cancelable) and dispatches modal:after-hide. Does nothing inline. Returns the element.": "Сворачивает открытое накладываемое окно после modal:before-hide (отменяемое) и отправляет modal:after-hide. Во встроенном режиме ничего не делает. Возвращает элемент.", + "Minimizes an open overlay window after modal:before-hide (cancelable) and dispatches modal:after-hide. Does nothing inline. Returns the element.": "Сворачивает открытое накладываемое окно после modal:before-hide (отменяемое) и отправляет modal:after-hide. Во встроенном режиме ничего не делает. Возвращает тег.", "Mixed visual state for a checkbox that summarizes related options.": "Смешанное визуальное состояние чекбокса, обобщающего связанные варианты.", "Modal Drawer moves focus inside, traps Tab on the top instance and restores an available opener. Modeless Drawer does not trap focus or lock the page. Docked Drawer is a named role=region column: no focus trap, no scroll lock; Escape closes the top instance.": "Модальная панель Drawer переносит фокус внутрь, удерживает Tab в верхнем экземпляре и возвращает фокус на доступный открывший элемент. Немодальная панель Drawer не удерживает фокус и не блокирует страницу. Закреплённая панель Drawer — именованный столбец с `role=region`: без ловушки фокуса и блокировки прокрутки; Escape закрывает верхний экземпляр.", "Modal Smart Component from SIMAI Framework.": "Смарт-компонент Modal из SIMAI Framework.", - "Move to the next slide, as the next arrow does. Returns the element.": "Переходит к следующему слайду, как стрелка «вперёд». Возвращает элемент.", - "Move to the previous slide, as the previous arrow does. Returns the element.": "Переходит к предыдущему слайду, как стрелка «назад». Возвращает элемент.", + "Move to the next slide, as the next arrow does. Returns the element.": "Переходит к следующему слайду, как стрелка «вперёд». Возвращает тег.", + "Move to the previous slide, as the previous arrow does. Returns the element.": "Переходит к предыдущему слайду, как стрелка «назад». Возвращает тег.", "Moves DOM focus to this tree item.": "Переносит фокус DOM на этот элемент дерева.", "Moves a group one step down.": "Перемещает группу на одну позицию вниз.", "Moves a group one step up among the groups of its section, for a person who would rather press than drag.": "Перемещает группу на одну позицию вверх среди групп своего раздела — для тех, кто предпочитает нажимать, а не перетаскивать.", "Moves current to the step at index, clamped to the list; does nothing for a disabled or the current step. Emits sf-step-change.": "Переводит current на шаг с индексом index, ограничивая его границами списка; ничего не делает для отключённого или текущего шага. Отправляет sf-step-change.", - "Moves focus to the selected or first enabled item.": "Переводит фокус на выбранный или первый доступный элемент.", - "Moves to a one-based slide, clamped to the slide count, reflects it to the current attribute, syncs both sliders and dispatches sf-change when it moved. Returns the element.": "Переходит к слайду по номеру с единицы, ограничивая его числом слайдов, отражает его в атрибуте current, синхронизирует оба слайдера и отправляет sf-change, если слайд сменился. Возвращает элемент.", + "Moves focus to the selected or first enabled item.": "Переводит фокус на выбранную кнопку, а если выбора нет — на первую доступную.", + "Moves to a one-based slide, clamped to the slide count, reflects it to the current attribute, syncs both sliders and dispatches sf-change when it moved. Returns the element.": "Переходит к слайду по номеру с единицы, ограничивая его числом слайдов, отражает его в атрибуте current, синхронизирует оба слайдера и отправляет sf-change, если слайд сменился. Возвращает тег.", "Moves to a page: the number is parsed as an integer and clamped to 1..pageCount when the count is known (only to at least 1 when it is not). Emits sf-page-change when the page actually changes; does nothing when the total is a known zero.": "Переходит на страницу: номер разбирается как целое число и ограничивается диапазоном 1..pageCount, если количество известно (иначе только снизу значением 1). Отправляет sf-page-change, когда страница действительно меняется; ничего не делает, если известно, что всего страниц ноль.", - "Moves to the given one-based slide when an index is passed, sets open and opens the lightbox modal. Returns the element.": "Переходит к указанному слайду (нумерация с единицы), если передан индекс, устанавливает open и открывает модальное окно лайтбокса. Возвращает элемент.", + "Moves to the given one-based slide when an index is passed, sets open and opens the lightbox modal. Returns the element.": "Переходит к указанному слайду (нумерация с единицы), если передан индекс, устанавливает open и открывает модальное окно лайтбокса. Возвращает тег.", "Names the area holding fields this view places in no group. Drawn only while the view is being arranged.": "Называет область с полями, которые это представление не помещает ни в одну группу. Отображается только во время компоновки представления.", "Names the button that makes a new area at the end of the arrangement.": "Называет кнопку, создающую новую область в конце компоновки.", "Names the button that makes a new section.": "Называет кнопку, создающую новый раздел.", "Names the chooser of a section's glyph while the view is being arranged.": "Называет выбор символа раздела во время компоновки представления.", - "Names the control that leaves the arranging mode with the arrangement it was entered with. Not a reset: a reset takes the layer away, this puts back what was there.": "Называет элемент управления, выходящий из режима компоновки с той компоновкой, с которой в него вошли. Это не сброс: сброс убирает слой, а этот элемент возвращает то, что было.", - "Names the control that shows or hides an entry in this layer.": "Называет элемент управления, показывающий или скрывающий запись в этом слое.", - "Names the control that takes a field out of its area. The field joins the unplaced, where the area’s own list offers it back, and nothing about it is lost.": "Называет элемент управления, убирающий поле из его области. Поле переходит в неразмещённые, откуда список области может вернуть его, и ничего не теряется.", - "Names the control that takes a section out of the view. Its areas move to the section that remains.": "Называет элемент управления, убирающий раздел из представления. Его области переходят в оставшийся раздел.", - "Names the control that takes an area out of the view. Its fields join the unplaced rather than going with it.": "Называет элемент управления, убирающий область из представления. Её поля переходят в неразмещённые, а не удаляются вместе с ней.", + "Names the control that leaves the arranging mode with the arrangement it was entered with. Not a reset: a reset takes the layer away, this puts back what was there.": "Подпись кнопки, которая выходит из режима расстановки и возвращает расстановку, бывшую при входе. Это не сброс: сброс убирает слой, а эта кнопка возвращает прежнее.", + "Names the control that shows or hides an entry in this layer.": "Подпись кнопки, которая показывает или скрывает запись в этом слое.", + "Names the control that takes a field out of its area. The field joins the unplaced, where the area’s own list offers it back, and nothing about it is lost.": "Подпись кнопки, которая убирает поле из области. Поле попадает в неразмещённые, откуда его можно вернуть; ничего не теряется.", + "Names the control that takes a section out of the view. Its areas move to the section that remains.": "Подпись кнопки, которая убирает раздел. Его области переходят в оставшийся раздел.", + "Names the control that takes an area out of the view. Its fields join the unplaced rather than going with it.": "Подпись кнопки, которая убирает область. Её поля попадают в неразмещённые, а не удаляются.", "Names the cross that leaves a name as it was.": "Называет крестик, оставляющий имя без изменений.", "Names the field in the field's own settings, where this view's name for it is typed. The collection keeps its own name; resetting the layer gives it back.": "Называет поле в собственных настройках поля, где вводится имя поля в этом представлении. Коллекция хранит своё имя; сброс слоя возвращает его.", "Names the pencil beside an area's or a section's name while the view is being arranged, and the field it opens.": "Называет карандаш рядом с именем области или раздела во время компоновки представления, а также открываемое им поле.", @@ -473,36 +473,36 @@ "Names the switch that makes a field take the whole row rather than half of it.": "Называет переключатель, при котором поле занимает всю строку, а не половину.", "Names the tick that writes a name being typed into the layer.": "Называет галочку, записывающую вводимое имя в слой.", "Native actions use focus-visible; a timed toast pauses while focus is inside it.": "Нативные действия используют `focus-visible`; уведомление с таймером приостанавливается, пока фокус внутри него.", - "Native browsing-context target. Disclose new-context navigation in the name.": "Нативная цель контекста просмотра. Укажите в имени, что навигация открывает новый контекст.", - "Native button type attribute.": "Нативный атрибут `type` кнопки.", - "Native controls and child Smart components": "Нативные элементы управления и дочерние смарт-компоненты", + "Native browsing-context target. Disclose new-context navigation in the name.": "Где открыть ссылку, например `_blank` — в новой вкладке. Тогда скажите об этом в подписи.", + "Native button type attribute.": "Что делает кнопка в форме: `button` — ничего, `submit` — отправляет, `reset` — сбрасывает.", + "Native controls and child Smart components": "Обычные элементы формы и вложенные компоненты", "Native file actions own focus-visible presentation.": "Нативные действия с файлами сами отвечают за отображение `focus-visible`.", "Native file download or application-owned file preparation action.": "Нативная загрузка файла или подготовка файла силами приложения.", - "Native form field name for the selected machine value.": "Имя нативного поля формы для выбранного машинного значения.", + "Native form field name for the selected machine value.": "Имя поля в форме; с ним уходит выбранное значение.", "Native icon-only action with token geometry, accessible naming and shared loading semantics.": "Нативная кнопка-иконка с геометрией из токенов, доступным именем и общей семантикой загрузки.", - "Native input name used by FormData and form submission.": "Нативное имя поля ввода, используемое `FormData` и отправкой формы.", + "Native input name used by FormData and form submission.": "Имя поля в форме; с ним уходит номер.", "Native links and the ellipsis button use keyboard-only focus-visible; the current page does not enter the tab order.": "Нативные ссылки и кнопка с многоточием используют `focus-visible` только для клавиатуры; текущая страница не входит в порядок табуляции.", - "Native required phone input; the country prefix alone does not satisfy the requirement.": "Нативное обязательное поле телефона; одного префикса страны недостаточно для выполнения требования.", + "Native required phone input; the country prefix alone does not satisfy the requirement.": "Обязательное поле: одного кода страны мало.", "Navigation surface that pairs a real destination with a compact reference.": "Навигационная поверхность, которая связывает реальную цель перехода с компактной ссылкой.", "No focus movement on data refresh": "Фокус не перемещается при обновлении данных", "No focus movement on re-read": "Фокус не перемещается при повторном чтении", "Non-negative total item count.": "Неотрицательное общее число элементов.", "Not drawn until opened through openFor(). A menu without it is drawn in place, as before.": "Не рисуется, пока его не откроет openFor(). Меню без этого атрибута рисуется на месте.", - "Nothing here takes focus: every avatar is a decorative picture (alt \"\"), and the visible text names the person -- name in user, label-text in label. An avatar that opens a profile is an sf-avatar with aria-label inside the host's own link or button.": "Здесь ничто не получает фокус: каждый аватар — декоративное изображение (alt \"\"), а человека называет видимый текст — имя в user, label-text в label. Аватар, открывающий профиль, — это sf-avatar с aria-label внутри собственной ссылки или кнопки хоста.", - "Notify the host shell about width mode.": "Уведомляет оболочку хоста о режиме ширины.", + "Nothing here takes focus: every avatar is a decorative picture (alt \"\"), and the visible text names the person -- name in user, label-text in label. An avatar that opens a profile is an sf-avatar with aria-label inside the host's own link or button.": "Здесь ничто не получает фокус: каждый аватар — декоративное изображение (alt \"\"), а человека называет видимый текст — имя в user, label-text в label. Аватар, открывающий профиль, — это sf-avatar с aria-label внутри собственной ссылки или кнопки приложения.", + "Notify the host shell about width mode.": "Уведомляет оболочку приложения о режиме ширины.", "Offers to show the entries the collection declares rare. Offered only when the record holds one.": "Предлагает показать записи, которые коллекция объявляет редкими. Предлагается, только если запись содержит такую.", "Offers to stop showing the rare entries again.": "Предлагает снова перестать показывать редкие записи.", "Offers «Сбросить к стандартному» at the foot.": "Показывает внизу «Сбросить к стандартному».", "One accessible node in a Smart Tree hierarchy.": "Один доступный узел иерархии Smart Tree.", - "One object's fields shown as sections, groups and fields, each drawn by the per-type field renderer set, behind a separate host port. A group is edited and saved as one revision by the button, and a reference field is picked from the host's own candidates a page at a time. The pair to the data view: that one is a set of records, this one is a single object.": "Поля одного объекта по разделам, группам и полям; каждое поле рисует набор рендереров своего типа, данные идут через отдельный порт хоста. Группа редактируется и сохраняется одной ревизией по кнопке, а значение ссылочного поля выбирается из кандидатов элемента постранично. Парный компонент к представлению данных: то показывает набор записей, этот — один объект.", + "One object's fields shown as sections, groups and fields, each drawn by the per-type field renderer set, behind a separate host port. A group is edited and saved as one revision by the button, and a reference field is picked from the host's own candidates a page at a time. The pair to the data view: that one is a set of records, this one is a single object.": "Поля одного объекта по разделам, группам и полям; каждое поле рисует набор рендереров своего типа, данные идут через отдельный порт приложения. Группа редактируется и сохраняется одной ревизией по кнопке, а значение ссылочного поля выбирается из кандидатов элемента постранично. Парный компонент к представлению данных: то показывает набор записей, этот — один объект.", "One radio option: a native radio input with a label, description and help text. Radios with the same name form a group in which checking one unchecks the others.": "Один вариант выбора: нативная радиокнопка с подписью, описанием и текстом подсказки. Радиокнопки с одинаковым name образуют группу, в которой выбор одной снимает выбор с остальных.", "One visible tree item is in the page tab order; arrows move roving focus independently of selection.": "В порядке табуляции страницы находится один видимый элемент дерева; стрелки перемещают перемещаемый фокус независимо от выделения.", - "One way to choose, make, rename, remove and reset a profile: a field-like button naming the profile in use, and a panel where every act happens inline. The profiles and the rights are the host's; the component says what was asked.": "Один способ выбрать, создать, переименовать, удалить и сбросить профиль: кнопка, похожая на поле, с названием текущего профиля, и панель, где всё делается на месте. Профили и права принадлежат хосту; компонент сообщает, что попросил человек.", + "One way to choose, make, rename, remove and reset a profile: a field-like button naming the profile in use, and a panel where every act happens inline. The profiles and the rights are the host's; the component says what was asked.": "Один способ выбрать, создать, переименовать, удалить и сбросить профиль: кнопка, похожая на поле, с названием текущего профиля, и панель, где всё делается на месте. Профили и права принадлежат приложению; компонент сообщает, что попросил человек.", "Only native toggle and close actions enter Tab order. Focus is keyboard-visible, geometry-stable and forced-colors-safe.": "В порядок табуляции входят только нативные действия переключения и закрытия. Фокус видим при работе с клавиатуры, не меняет геометрию и безопасен для режима forced colors.", "Only the leading visual, as tall as a list row's line: the image, or the file's extension in a tile. For a file in a table cell.": "Только ведущий значок высотой со строку списка: изображение или расширение файла в плитке. Для файла в ячейке таблицы.", - "Open a node the host said has children: from what the view holds, or by asking the host with tree.expand.": "Открывает узел, у которого по словам хоста есть потомки: из того, что уже есть у представления, или запросом к хосту через tree.expand.", + "Open a node the host said has children: from what the view holds, or by asking the host with tree.expand.": "Открывает узел, у которого по словам приложения есть потомки: из того, что уже есть у представления, или запросом к приложению через tree.expand.", "Open a saved view.": "Открывает сохранённое представление.", - "Open beside an element: top layer, anchored by SF.Position with flip and shift, focus on the first item (or 'last', or 'none'). The menu then owns its lifecycle: Escape, Tab, a press outside and a choice close it and return the focus -- to where it was, or to the anchor's own control when it was nowhere.": "Открыть рядом с элементом: в верхнем слое, с привязкой через SF.Position с переворотом и сдвигом, фокус на первом пункте (или 'last', или 'none'). Дальше меню управляет собой само: Escape, Tab, нажатие снаружи и выбор пункта закрывают его и возвращают фокус — туда, где он был, или на элемент управления якоря, если фокуса нигде не было.", + "Open beside an element: top layer, anchored by SF.Position with flip and shift, focus on the first item (or 'last', or 'none'). The menu then owns its lifecycle: Escape, Tab, a press outside and a choice close it and return the focus -- to where it was, or to the anchor's own control when it was nowhere.": "Открывает меню рядом с элементом, поверх страницы; если не помещается, меню переворачивается или сдвигается. Фокус на первом пункте (или `'last'`, или `'none'`). Escape, Tab, щелчок снаружи и выбор пункта закрывают меню и возвращают фокус туда, где он был.", "Open beside an element: top layer, anchored by SF.Position with flip and shift, focus on the first item (or 'last', or 'none'). The menu then owns its lifecycle: Escape, Tab, a press outside and a choice close it and return the focus.": "Открывает меню рядом с элементом: в верхнем слое, привязанным через SF.Position с переворотом и сдвигом, фокус на первом пункте (или 'last', или 'none'). Дальше меню само управляет своим жизненным циклом: Escape, Tab, нажатие снаружи и выбор пункта закрывают его и возвращают фокус.", "Open it.": "Открыть.", "Open one group for editing.": "Открывает одну группу для редактирования.", @@ -514,15 +514,15 @@ "Opened through openFor(). Bubbles and is composed; carries no detail.": "Открыто через openFor(). Всплывает и с composed: true; detail не передаётся.", "Opening focuses the panel of the top window; Tab and Shift+Tab are trapped inside it and Escape closes it when close-on-esc allows. Closing returns focus to the opener. The default title names the dialog through aria-labelledby; supply aria-label for a custom or headerless header. display=inline keeps normal document navigation. With display=inline the window is a region in the page rather than a dialog.": "При открытии фокус переходит на панель верхнего окна; Tab и Shift+Tab удерживаются внутри неё, а Escape закрывает её, если это разрешает close-on-esc. При закрытии фокус возвращается элементу, который открыл окно. Заголовок по умолчанию задаёт доступное имя диалога через aria-labelledby; для пользовательского заголовка или окна без заголовка укажите aria-label. display=inline сохраняет обычную навигацию по документу. С display=inline окно является областью (region) на странице, а не диалогом.", "Opens or closes a branch and emits sf-tree-item-toggle; does nothing for a file, a leaf, a disabled item or an unchanged state.": "Открывает или закрывает ветку и отправляет sf-tree-item-toggle; ничего не делает для файла, листа, отключённого пункта или неизменного состояния.", - "Opens the Drawer, or brings it to the front when already open. Dispatches drawer:before-open (cancelable) and later drawer:after-open unless options.emit is false. Returns the element.": "Открывает Drawer или выводит его на передний план, если он уже открыт. Отправляет drawer:before-open (отменяемое) и затем drawer:after-open, если options.emit не равно false. Возвращает элемент.", + "Opens the Drawer, or brings it to the front when already open. Dispatches drawer:before-open (cancelable) and later drawer:after-open unless options.emit is false. Returns the element.": "Открывает Drawer или выводит его на передний план, если он уже открыт. Отправляет drawer:before-open (отменяемое) и затем drawer:after-open, если options.emit не равно false. Возвращает тег.", "Opens the explanation.": "Открывает пояснение.", "Opens the list of fields this group can take: the ones this view places nowhere, and the ones another group holds.": "Открывает список полей, которые может принять эта группа: тех, что представление никуда не помещает, и тех, что находятся в другой группе.", - "Opens the option list unless the control is disabled or already open. Returns the element.": "Открывает список вариантов, если элемент управления не отключён и ещё не открыт. Возвращает элемент.", - "Opens the window, or brings it to the front when already open. Dispatches modal:before-open (cancelable), then modal:after-open once projected; loads remote content when src is set. options.animate (or a boolean) controls the opening transition. Returns the element.": "Открывает окно или выводит его на передний план, если оно уже открыто. Отправляет modal:before-open (отменяемое), затем modal:after-open после проецирования; загружает удалённое содержимое, если задан src. options.animate (или логическое значение) управляет анимацией открытия. Возвращает элемент.", + "Opens the option list unless the control is disabled or already open. Returns the element.": "Открывает список вариантов, если поле доступно и список ещё закрыт. Возвращает тег.", + "Opens the window, or brings it to the front when already open. Dispatches modal:before-open (cancelable), then modal:after-open once projected; loads remote content when src is set. options.animate (or a boolean) controls the opening transition. Returns the element.": "Открывает окно или выводит его на передний план, если оно уже открыто. Отправляет modal:before-open (отменяемое), затем modal:after-open после проецирования; загружает удалённое содержимое, если задан src. options.animate (или логическое значение) управляет анимацией открытия. Возвращает тег.", "Optional accessible name override for a selectable tag.": "Необязательное переопределение доступного имени для выбираемого тега.", "Optional count shown with the default tag.": "Необязательный счётчик, отображаемый в теге по умолчанию.", "Optional decorative icon name.": "Необязательное имя декоративной иконки.", - "Optional icon override. Use none to hide the semantic icon.": "Необязательное переопределение иконки. Используйте `none`, чтобы скрыть семантическую иконку.", + "Optional icon override. Use none to hide the semantic icon.": "Своя иконка вместо иконки по статусу; `none` скрывает иконку.", "Optional id of the native owning form when the field is outside it.": "Необязательный id нативной формы-владельца, если поле находится вне её.", "Optional secondary description.": "Необязательное дополнительное описание.", "Options given as data instead of as sf-list-item children: [{text, value, type?, size?, icon?, selected?, disabled?, colorClass?, avatarImageUrl?, avatarTitle?, ariaLabel?, group?}]. A string or a number is taken as both the label and the value. A parent that renders this dropdown from a template passes its options this way, because capturing child elements means removing them, and the parent can then no longer put a changed list back. Options carrying the same `group`, one after another, are drawn under one heading, so a long list says where each stretch of it comes from instead of repeating that in every row.": "Варианты, переданные данными вместо дочерних `sf-list-item`: `[{text, value, type?, size?, icon?, selected?, disabled?, colorClass?, avatarImageUrl?, avatarTitle?, ariaLabel?, group?}]`. Строка или число используется и как подпись, и как значение. Родитель, отрисовывающий этот выпадающий список из шаблона, передаёт варианты так, потому что захват дочерних элементов означает их удаление, и родитель уже не сможет вернуть изменённый список. Идущие подряд варианты с одинаковым `group` выводятся под одним заголовком, чтобы длинный список показывал, откуда взят каждый его фрагмент, а не повторял это в каждой строке.", @@ -548,90 +548,90 @@ "Passed on as selected-label to the pagination the view draws; absent, the pagination's own word for the page language applies.": "Передаётся как selected-label в пагинацию, которую рисует представление; без него действует собственная подпись пагинации на языке страницы.", "Passed on as show-more-text to the pagination the view draws; absent, the pagination's own word for the page language applies.": "Передаётся как show-more-text в пагинацию, которую рисует представление; без него действует собственная подпись пагинации на языке страницы.", "Passed on as total-label to the pagination the view draws; absent, the pagination's own word for the page language applies.": "Передаётся как total-label в пагинацию, которую рисует представление; без него действует собственная подпись пагинации на языке страницы.", - "Passes the object to setState() as buttonAttributes; the built-in template does not read it, so it only reaches an external project template. Returns the element.": "Передаёт объект в setState() как buttonAttributes; встроенный шаблон его не читает, поэтому он доходит только до внешнего шаблона проекта. Возвращает элемент.", - "Patch columns, rows or related table state supplied by the host.": "Обновляет столбцы, строки или связанное состояние таблицы, переданные хостом.", + "Passes the object to setState() as buttonAttributes; the built-in template does not read it, so it only reaches an external project template. Returns the element.": "Задаёт атрибуты для кнопки в собственном шаблоне проекта; встроенный вид их не использует. Возвращает тег.", + "Patch columns, rows or related table state supplied by the host.": "Обновляет столбцы, строки или связанное состояние таблицы, переданные приложением.", "Persistent inline notice with semantic roles, optional actions and dismiss behavior.": "Постоянное встроенное уведомление с семантическими ролями, необязательными действиями и закрытием.", "Pick a start and an end instead of one date.": "Выбирать начало и конец вместо одной даты.", - "Pipe-separated compatible batch-action definitions.": "Определения совместимых пакетных действий, разделённые вертикальной чертой.", + "Pipe-separated compatible batch-action definitions.": "Пакетные действия через вертикальную черту.", "Pixels an arrow key moves; Shift moves four steps.": "На сколько пикселей сдвигает стрелка; с Shift — на четыре шага.", "Placeholder and accessible name of the search field above the column settings list.": "Placeholder и доступное имя поля поиска над списком настроек столбцов.", "Placeholder of the batch-action selector, shown until an action is chosen.": "Placeholder селектора пакетного действия, отображаемый, пока действие не выбрано.", "Placeholder of the batch-action selector, shown until an action is chosen. Empty: the text of the page's language (\"Choose an action\" in English).": "Подсказка в списке действий над выбранным, пока действие не выбрано. Пусто — текст на языке страницы (по-английски «Choose an action»).", - "Placement for the single icon shortcut.": "Расположение единственной иконки-ярлыка.", - "Port intent or response observed by the host.": "Намерение или ответ порта, наблюдаемые хостом.", + "Placement for the single icon shortcut.": "Где стоит иконка из `icon`: `start` — перед подписью, `end` — после.", + "Port intent or response observed by the host.": "Намерение или ответ порта, наблюдаемые приложением.", "Positive number of items per page.": "Положительное число элементов на странице.", "Presentational action-menu surface with logical tail positions and native keyboard item management.": "Презентационная поверхность меню действий с логическими позициями в конце и нативной работой с пунктами с клавиатуры.", "Progress Bar is not interactive and never enters the focus order.": "Progress Bar не интерактивен и не входит в порядок фокуса.", "Progress Scale is not interactive and never enters the focus order.": "Progress Scale не интерактивен и не входит в порядок фокуса.", "Put the focus back on the trigger.": "Вернуть фокус на триггер.", "Radio Smart Component from SIMAI Framework.": "Смарт-компонент Radio из SIMAI Framework.", - "Radio size token.": "Токен размера переключателя (radio).", + "Radio size token.": "Размер радиокнопки: чем больше число, тем крупнее.", "Raise a confirmed filter-wide action (bulk.apply_under_filter) over the current filters. Throws TypeError when confirmedTotal is not the current total.": "Выполняет подтверждённое действие над всем фильтром (bulk.apply_under_filter) по текущим фильтрам. Бросает TypeError, если confirmedTotal не равен текущему общему числу.", "Raise a confirmed filter-wide action.": "Вызывает подтверждённое действие для всего фильтра.", - "Raised by the view's pagination when the person asks for the total, the last page or an action under the filter while the count is unknown. The view answers it with the query.count intent; a host does not need to listen.": "Отправляет пагинация представления, когда человек просит общее число, последнюю страницу или действие над фильтром, пока число неизвестно. Представление отвечает на него намерением query.count; хосту слушать его не нужно.", + "Raised by the view's pagination when the person asks for the total, the last page or an action under the filter while the count is unknown. The view answers it with the query.count intent; a host does not need to listen.": "Отправляет пагинация представления, когда человек просит общее число, последнюю страницу или действие над фильтром, пока число неизвестно. Представление отвечает на него намерением query.count; приложению слушать его не нужно.", "Range Slider Smart Component from SIMAI Framework.": "Смарт-компонент Range Slider из SIMAI Framework.", "Range only: quick ranges beside the grid. Built-in ids, comma separated (today, yesterday, last-7-days, last-30-days, this-week, this-month, last-month), or as a property [{id, label, relative} | {id, label, range: [from, to]}]. Clamped to min-date and max-date; a range with nothing left is disabled.": "Только для режима диапазона: быстрые диапазоны рядом с сеткой. Встроенные id через запятую (today, yesterday, last-7-days, last-30-days, this-week, this-month, last-month) или свойство [{id, label, relative} | {id, label, range: [from, to]}]. Диапазоны обрезаются по min-date и max-date; диапазон, от которого ничего не осталось, недоступен.", "Range only: the ISO end date.": "Только для диапазона: конечная дата в ISO.", "Range only: the ISO start date.": "Только для диапазона: начальная дата в ISO.", "Re-renders the bound spinner root from its current configuration; does nothing before it is bound.": "Перерисовывает привязанный корень индикатора загрузки по его текущей конфигурации; до привязки ничего не делает.", "Read the current column-preference delta.": "Читает текущее изменение настроек столбцов.", - "Read the current filter draft for host-side query validation.": "Читает текущий черновик фильтра для проверки запроса на стороне хоста.", + "Read the current filter draft for host-side query validation.": "Читает текущий черновик фильтра для проверки запроса на стороне приложения.", "Read the immutable context last received through the context input port, or null.": "Читает неизменяемый контекст, последним полученный через входной порт контекста, или `null`.", - "Read the navigation menu again from its host, after something outside the menu changed what it shows (a star in the page header). No effect on the items menu.": "Повторно читает меню навигации у хоста после того, как что-то вне меню изменило его содержимое (звёздочка в заголовке страницы). На меню элементов не влияет.", + "Read the navigation menu again from its host, after something outside the menu changed what it shows (a star in the page header). No effect on the items menu.": "Повторно читает меню навигации у приложения после того, как что-то вне меню изменило его содержимое (звёздочка в заголовке страницы). На меню элементов не влияет.", "Read the object again through the port.": "Повторно читает объект через порт.", "Read the sort shown on the headers.": "Читает сортировку, отображаемую в заголовках.", "Read the typed record identities selected in this table result, without DOM parsing.": "Читает типизированные идентификаторы записей, выбранных в этом результате таблицы, без разбора DOM.", "Reads the captured sf-breadcrumbs-item children into plain item objects (label, href, icon, current, active, disabled, ellipsis, target, rel, itemClass, containerClass, ariaLabel, value, hiddenItems).": "Читает захваченные дочерние sf-breadcrumbs-item в простые объекты пунктов (label, href, icon, current, active, disabled, ellipsis, target, rel, itemClass, containerClass, ariaLabel, value, hiddenItems).", "Ready combinations of avatars: a person with a source, a stacked group with a remainder, an avatar with two lines of label, and a profile avatar with a verified badge. Drawn from sf-avatar's parts; for a single avatar with a name or a card use sf-avatar.": "Готовые сочетания аватаров: человек с источником, группа внахлёст с остатком, аватар с двумя строками подписи и аватар профиля со значком подтверждения. Собраны из частей sf-avatar; для одного аватара с именем или карточкой используйте sf-avatar.", "Real navigation destination. Required for an enabled reference.": "Реальное место навигации. Обязательно для доступной ссылки.", - "Real resource destination; renders a native anchor when enabled.": "Реальное место ресурса; в доступном состоянии отрисовывает нативную ссылку (`a`).", - "Rebind the slider after its slides changed: forwards the data attributes and rebuilds Swiper, keeping the events bound. Returns the element.": "Заново привязывает слайдер после изменения его слайдов: передаёт data-атрибуты и пересоздаёт Swiper, сохраняя привязанные события. Возвращает элемент.", - "Record that a field was changed. Called by the edit template; a host does not need it.": "Фиксирует изменение поля. Вызывается шаблоном редактирования; хосту он не нужен.", - "Record what the person typed, without asking the host.": "Записывает введённый текст, не обращаясь к хосту.", + "Real resource destination; renders a native anchor when enabled.": "Адрес файла.", + "Rebind the slider after its slides changed: forwards the data attributes and rebuilds Swiper, keeping the events bound. Returns the element.": "Заново привязывает слайдер после изменения его слайдов: передаёт data-атрибуты и пересоздаёт Swiper, сохраняя привязанные события. Возвращает тег.", + "Record that a field was changed. Called by the edit template; a host does not need it.": "Фиксирует изменение поля. Вызывается шаблоном редактирования; приложению он не нужен.", + "Record what the person typed, without asking the host.": "Записывает введённый текст, не обращаясь к приложению.", "Records dragged from a list were dropped on a node: {value, ids, source}. The tree moves nothing.": "На узел отпустили записи, перетащенные из списка: {value, ids, source}. Дерево ничего не перемещает.", "Register a download-event listener.": "Регистрирует обработчик события скачивания.", "Register a remove-event listener.": "Регистрирует обработчик события удаления.", - "Register backend-allowlisted filter fields and controls.": "Регистрирует поля и элементы управления фильтра из разрешённого бэкендом списка.", - "Register labeled opaque actions for the current selection. Empty selection disables their controls.": "Регистрирует подписанные непрозрачные действия для текущего выделения. При пустом выделении их элементы управления отключены.", - "Remember the column widths as a view preference (SF.Preferences, under preferences-key or table-settings-key) for a table no host keeps settings for; a double click on a column's edge forgets that column's width.": "Запоминать ширины колонок как персональный вид (SF.Preferences, под ключом preferences-key или table-settings-key) для таблицы, настройки которой хост не хранит; двойной щелчок по краю колонки забывает её ширину.", - "Remember the column widths in this browser (localStorage, under table-settings-key) for a table no host keeps settings for; a double click on a column's edge forgets that column's width.": "Запоминать ширины колонок в этом браузере (localStorage, под table-settings-key) для таблицы, настройки которой хост не хранит; двойной щелчок по краю колонки забывает её ширину.", + "Register backend-allowlisted filter fields and controls.": "Поля и кнопки фильтра из списка, разрешённого сервером.", + "Register labeled opaque actions for the current selection. Empty selection disables their controls.": "Действия для выбранных строк: подпись и код каждого. Пока ничего не выбрано, их кнопки недоступны.", + "Remember the column widths as a view preference (SF.Preferences, under preferences-key or table-settings-key) for a table no host keeps settings for; a double click on a column's edge forgets that column's width.": "Запоминать ширины колонок как персональный вид (SF.Preferences, под ключом preferences-key или table-settings-key) для таблицы, настройки которой приложение не хранит; двойной щелчок по краю колонки забывает её ширину.", + "Remember the column widths in this browser (localStorage, under table-settings-key) for a table no host keeps settings for; a double click on a column's edge forgets that column's width.": "Запоминать ширины колонок в этом браузере (localStorage, под table-settings-key) для таблицы, настройки которой приложение не хранит; двойной щелчок по краю колонки забывает её ширину.", "Remembers the width in this browser as the view preference sf-resizer/ (SF.Preferences); a double click forgets it.": "Запоминает ширину в этом браузере как персональный вид под ключом `sf-resizer/` (`SF.Preferences`); двойной щелчок её забывает.", "Remembers the width in this browser under sf-resizer:; a double click forgets it.": "Запоминает ширину в этом браузере под ключом `sf-resizer:`; двойной щелчок её забывает.", "Remote content finished loading, with success or error in detail.remote; an aborted request does not emit it. Also fired when an iframe loads. Bubbles and is composed.": "Удалённое содержимое загружено, с success или error в detail.remote; прерванный запрос его не отправляет. Также отправляется при загрузке iframe. Всплывает и с composed: true.", "Removal was requested from the separately named close action.": "Удаление запрошено через отдельно названное действие закрытия.", - "Remove the item at this index from the list; an index outside the list does nothing. Returns the element.": "Удаляет из списка пункт с этим индексом; индекс вне списка ничего не делает. Возвращает элемент.", - "Removes open and closes the lightbox modal. Returns the element.": "Снимает open и закрывает модальное окно лайтбокса. Возвращает элемент.", - "Render a disabled button with no live destination.": "Отображает отключённую кнопку без действующего адреса перехода.", - "Render a host answer in all three slots.": "Отображает ответ хоста во всех трёх слотах.", + "Remove the item at this index from the list; an index outside the list does nothing. Returns the element.": "Удаляет из списка пункт с этим индексом; индекс вне списка ничего не делает. Возвращает тег.", + "Removes open and closes the lightbox modal. Returns the element.": "Снимает open и закрывает модальное окно лайтбокса. Возвращает тег.", + "Render a disabled button with no live destination.": "Кнопка недоступна, ссылка не работает.", + "Render a host answer in all three slots.": "Отображает ответ приложения во всех трёх слотах.", "Render an explicitly named close action.": "Отображает явно названное действие закрытия.", "Render an unavailable, non-focusable reference without navigation.": "Отображает недоступную ссылку без фокуса и без перехода.", "Render in a modeless panel beside the list the object was opened from, rather than in the work area. Modeless on purpose: the list stays visible and usable.": "Отображается в немодальной панели рядом со списком, из которого открыт объект, а не в рабочей области. Панель немодальная намеренно: список остаётся видимым и доступным.", "Render the label as a button next to the remove action, for tags that open something (for example a filter chip menu); ignored for checkbox tags.": "Отображает подпись как кнопку рядом с действием удаления — для тегов, которые что-то открывают (например, меню фильтра-чипа); для тегов-флажков игнорируется.", "Replace canonical backend-provided columns.": "Заменяет канонические столбцы, полученные от бэкенда.", "Replace the current backend result rows.": "Заменяет текущие строки результата бэкенда.", - "Replace the list with these items (name, fileSize, state, progress, errorMessage). Returns the element.": "Заменяет список этими пунктами (name, fileSize, state, progress, errorMessage). Возвращает элемент.", + "Replace the list with these items (name, fileSize, state, progress, errorMessage). Returns the element.": "Заменяет список этими пунктами (name, fileSize, state, progress, errorMessage). Возвращает тег.", "Replaces the panels in the data (a function receives the current panels) and re-renders.": "Заменяет панели в данных (функция получает текущие панели) и перерисовывает.", "Replaces the tabs in the data (a function receives the current tabs) and re-renders.": "Заменяет вкладки в данных (функция получает текущие вкладки) и перерисовывает.", - "Request a host-side query after the active filter changes: Apply in the filter window, a chip removed, or the filter cleared. A data view turns it into query.change with filters from values.": "Запрашивает у хоста выборку после изменения активного фильтра: «Применить» в окне фильтра, удалённая метка или очищенный фильтр. Представление данных превращает его в query.change с filters из values.", - "Request a host-side query after the active filter draft changes.": "Запрашивает у хоста выборку после изменения активного черновика фильтра.", - "Request a host-side query after the context input port changed. The host resolves the relation and access, then answers with applyQueryResult(sequence, rows); older sequences are ignored.": "Запрашивает у хоста выборку после изменения входного порта контекста. Хост разрешает связь и права доступа и отвечает вызовом applyQueryResult(sequence, rows); более старые номера последовательности игнорируются.", - "Request a host-side query after the debounced search value changes.": "Запрашивает у хоста выборку после изменения значения поиска (с задержкой debounce).", - "Request another host-side load after the error state.": "Запрашивает у хоста повторную загрузку после состояния ошибки.", + "Request a host-side query after the active filter changes: Apply in the filter window, a chip removed, or the filter cleared. A data view turns it into query.change with filters from values.": "Запрашивает у приложения выборку после изменения активного фильтра: «Применить» в окне фильтра, удалённая метка или очищенный фильтр. Представление данных превращает его в query.change с filters из values.", + "Request a host-side query after the active filter draft changes.": "Запрашивает у приложения выборку после изменения активного черновика фильтра.", + "Request a host-side query after the context input port changed. The host resolves the relation and access, then answers with applyQueryResult(sequence, rows); older sequences are ignored.": "Запрашивает у приложения выборку после изменения входного порта контекста. Приложение разрешает связь и права доступа и отвечает вызовом applyQueryResult(sequence, rows); более старые номера последовательности игнорируются.", + "Request a host-side query after the debounced search value changes.": "Запрашивает у приложения выборку после изменения значения поиска (с задержкой debounce).", + "Request another host-side load after the error state.": "Запрашивает у приложения повторную загрузку после состояния ошибки.", "Request current query with a new sequence.": "Запрашивает текущую выборку с новым номером последовательности.", "Request fresh backend state after a conflict.": "Запрашивает актуальное состояние бэкенда после конфликта.", - "Request one host-resolved row or bulk operation. Event source is the owning table instance; emission is not operation success.": "Запрашивает одну операцию над строкой или групповую операцию, которую выполняет хост. Источник события — экземпляр таблицы-владельца; отправка события не означает успех операции.", + "Request one host-resolved row or bulk operation. Event source is the owning table instance; emission is not operation success.": "Запрашивает одну операцию над строкой или групповую операцию, которую выполняет приложение. Источник события — экземпляр таблицы-владельца; отправка события не означает успех операции.", "Request persistence of a column preference delta after resize, reorder or visibility changes.": "Запрашивает сохранение изменений настроек столбцов после изменения ширины, порядка или видимости.", "Request persistence of one or more filter templates (order, pin, delete, default, selected flags or data). Loading a saved view is reported by sf-table-template-select.": "Запрашивает сохранение одного или нескольких шаблонов фильтра (порядок, закрепление, удаление, флаги по умолчанию и выбора или данные). О загрузке сохранённого представления сообщает событие sf-table-template-select.", "Request persistence of the current delta.": "Запрашивает сохранение текущих изменений.", "Request reset of the selected preference level.": "Запрашивает сброс выбранного уровня настроек.", "Request state for another settings level.": "Запрашивает состояние для другого уровня настроек.", - "Reserved avatar status value for compatible templates.": "Зарезервированное значение статуса аватара для совместимых шаблонов.", - "Reset the person's column layout: an empty personal layer written against its revision, which is the port's reset (a write, never a deletion). The host supplies the defaults.": "Сбрасывает раскладку колонок человека: пустой личный слой, записанный против его ревизии, — это сброс по порту (запись, а не удаление). Значения по умолчанию даёт хост.", - "Resets the remote content and loads src again, even when the window is closed and preload is off. Returns the element.": "Сбрасывает удалённое содержимое и снова загружает src, даже если окно закрыто и preload выключен. Возвращает элемент.", - "Restores a minimized window after modal:before-show (cancelable) and dispatches modal:after-show. Returns the element.": "Восстанавливает свёрнутое окно после modal:before-show (отменяемое) и отправляет modal:after-show. Возвращает элемент.", - "Retired on 2026-10-09 and kept only until the sweep: the not-placed bin is the Framework's accordion now and draws no hint line, so this is parsed and ignored. Recorded in contracts/changes/journal.json as property-view-unplaced-hint-text.": "Устаревший атрибут: значение разбирается и игнорируется. Неразмещённые поля показывает аккордеон Framework, строки подсказки в нём нет.", + "Reserved avatar status value for compatible templates.": "Статус аватара для собственных шаблонов; встроенный шаблон его не рисует.", + "Reset the person's column layout: an empty personal layer written against its revision, which is the port's reset (a write, never a deletion). The host supplies the defaults.": "Сбрасывает раскладку колонок человека: пустой личный слой, записанный против его ревизии, — это сброс по порту (запись, а не удаление). Значения по умолчанию даёт приложение.", + "Resets the remote content and loads src again, even when the window is closed and preload is off. Returns the element.": "Сбрасывает удалённое содержимое и снова загружает src, даже если окно закрыто и preload выключен. Возвращает тег.", + "Restores a minimized window after modal:before-show (cancelable) and dispatches modal:after-show. Returns the element.": "Восстанавливает свёрнутое окно после modal:before-show (отменяемое) и отправляет modal:after-show. Возвращает тег.", + "Retired on 2026-10-09 and kept only until the sweep: the not-placed bin is the Framework's accordion now and draws no hint line, so this is parsed and ignored. Recorded in contracts/changes/journal.json as property-view-unplaced-hint-text.": "Ничего не делает: значение разбирается и игнорируется. Неразмещённые поля показывает аккордеон Framework, строки подсказки в нём нет.", "Return the current file identity and presentation value.": "Возвращает текущий идентификатор файла и значение для отображения.", - "Return the current native checked state.": "Возвращает текущее нативное состояние checked.", + "Return the current native checked state.": "Возвращает, отмечен ли флажок.", "Return to the inherited colour; the same as setValue(\"\"). Returns whether it changed.": "Возвращает унаследованный цвет; то же, что setValue(\"\"). Возвращает, изменилось ли значение.", "Returns the HTML of the captured content for a named slot, with runtime data and event ids carried over.": "Возвращает HTML захваченного содержимого для именованного слота с перенесёнными данными времени выполнения и идентификаторами событий.", "Returns the bottom section element (.sf-pagination-bottom), or null when it is not rendered.": "Возвращает элемент нижней секции (.sf-pagination-bottom) или null, если она не отрисована.", @@ -639,31 +639,31 @@ "Returns the current template context plus the open state.": "Возвращает текущий контекст шаблона вместе с состоянием открытия.", "Returns the data set with setData: {tabs, panels, ...}; {tabs: [], panels: []} when none was set.": "Возвращает данные, заданные через setData: {tabs, panels, ...}; {tabs: [], panels: []}, если ничего не задано.", "Returns the inline sf-slider, or null before render.": "Возвращает встроенный sf-slider или null до отрисовки.", - "Returns the inner native checkbox input, or null before render.": "Возвращает внутренний нативный input флажка или null до отрисовки.", - "Returns the inner native input (.sf-radio-button input[type=\"radio\"]), or null before render.": "Возвращает внутренний нативный input (.sf-radio-button input[type=\"radio\"]) или null до отрисовки.", - "Returns the inner native input (.sf-switch input[type=\"checkbox\"]), or null before render.": "Возвращает внутренний нативный input (.sf-switch input[type=\"checkbox\"]) или null до отрисовки.", + "Returns the inner native checkbox input, or null before render.": "Возвращает флажок внутри тега или `null`, пока он не нарисован.", + "Returns the inner native input (.sf-radio-button input[type=\"radio\"]), or null before render.": "Возвращает радиокнопку внутри тега или `null`, пока она не нарисована.", + "Returns the inner native input (.sf-switch input[type=\"checkbox\"]), or null before render.": "Возвращает переключатель внутри тега или `null`, пока он не нарисован.", "Returns the inner native input (.sf-toggle input[type=\"checkbox\"]), or null before render.": "Возвращает внутренний нативный input (.sf-toggle input[type=\"checkbox\"]) или null до отрисовки.", - "Returns the inner native input, or null before render.": "Возвращает внутренний нативный input или null до отрисовки.", + "Returns the inner native input, or null before render.": "Возвращает поле ввода внутри тега или `null`, пока оно не нарисовано.", "Returns the inner slider root (.sf-range-slider), or null before render.": "Возвращает внутренний корень слайдера (.sf-range-slider) или null до отрисовки.", "Returns the inner spinner root (.sf-loader-container), or null before render.": "Возвращает внутренний корень индикатора загрузки (.sf-loader-container) или null до отрисовки.", "Returns the items as they are shown: when there are more than max-items (at least 3) and the ellipsis is not expanded, the middle is replaced by one ellipsis item holding the hidden ones; every item is reindexed and only the last may be current.": "Возвращает пункты в том виде, в каком они показаны: если их больше max-items (не меньше 3) и многоточие не раскрыто, середина заменяется одним пунктом-многоточием со скрытыми пунктами; все пункты переиндексируются, и текущим может быть только последний.", "Returns the lightbox sf-modal, or null when there is none.": "Возвращает sf-modal лайтбокса или null, если его нет.", "Returns the lightbox sf-slider, or null when there is none.": "Возвращает sf-slider лайтбокса или null, если его нет.", "Returns the main section element (.sf-pagination-main), or null when it is not rendered.": "Возвращает элемент основной секции (.sf-pagination-main) или null, если она не отрисована.", - "Returns the rendered .sf-modal element, or null before render.": "Возвращает отрисованный элемент .sf-modal или null до отрисовки.", + "Returns the rendered .sf-modal element, or null before render.": "Возвращает отрисованный элемент.sf-modal или null до отрисовки.", "Returns the slider's current value: a number with one handle, an array of two numbers with two; null before the slider is built.": "Возвращает текущее значение слайдера: число при одной ручке, массив из двух чисел при двух; null до создания слайдера.", "Returns the top section element (.sf-pagination-top), or null when it is not rendered.": "Возвращает элемент верхней секции (.sf-pagination-top) или null, если она не отрисована.", "Returns the value as a number clamped to 0..100; a non-numeric value reads as 0.": "Возвращает значение как число, ограниченное диапазоном 0..100; нечисловое значение читается как 0.", "Returns the value attribute as a number (0 when absent); it is not clamped.": "Возвращает атрибут value как число (0, если атрибута нет); значение не ограничивается.", "Rows began to be dragged out of a list with drag-rows, for a drop target such as a tree; the same {ids, source} rides in the drag data as application/x-sf-records+json.": "Строки с drag-rows начали перетаскивать из списка к цели вроде дерева; те же {ids, source} лежат в данных перетаскивания как application/x-sf-records+json.", "Rows began to be dragged out of the list: {ids, source}.": "Строки начали перетаскивать из списка: {ids, source}.", - "Rows can be put in another order by dragging them inside the list; a drop emits sf-table-rows-reorder {ids, before, order}. A data view sets it when the host offers row-reorder.": "Строки можно переставить, перетаскивая их внутри списка; отпускание отправляет sf-table-rows-reorder {ids, before, order}. Представление данных ставит атрибут, когда хост предлагает возможность row-reorder.", + "Rows can be put in another order by dragging them inside the list; a drop emits sf-table-rows-reorder {ids, before, order}. A data view sets it when the host offers row-reorder.": "Строки можно переставить, перетаскивая их внутри списка; отпускание отправляет sf-table-rows-reorder {ids, before, order}. Представление данных ставит атрибут, когда приложение предлагает возможность row-reorder.", "Rows may be dragged out of the list as records (application/x-sf-records+json): the row's record, or every selected record when it is one of them.": "Строки можно перетащить из списка как записи (application/x-sf-records+json): запись строки или все выбранные записи, если строка среди них.", - "Rows rendered from entries carry menuitem, menuitemcheckbox or menuitemradio with aria-checked, and aria-haspopup/aria-expanded for a submenu; one roving tab stop. Opened through openFor(): the anchor gets aria-haspopup=menu and aria-expanded; Escape closes one level and returns the focus to its row or the anchor; Tab closes the whole chain; a letter moves to the next item it starts. A host that renders the menu itself owns opening, Escape/Tab dismissal and focus return, as before. A header and a note are text. The options of a choice row are menuitemradio in a group, walked by the side arrows. A searchable menu opens on its field, which keeps the letters and the side arrows; ArrowDown goes on to the rows.": "Строки из entries получают роли menuitem, menuitemcheckbox или menuitemradio с aria-checked, а подменю — aria-haspopup и aria-expanded; одна перемещаемая остановка Tab. При открытии через openFor() элемент получает aria-haspopup=menu и aria-expanded; Escape закрывает один уровень и возвращает фокус на его строку или элемент; Tab закрывает всю цепочку; буква переводит к следующему пункту, который с неё начинается. Хост, который рисует меню сам, сам отвечает за открытие, закрытие по Escape и Tab и возврат фокуса. Заголовок и заметка — текст. Варианты строки выбора — menuitemradio в группе, их перебирают боковые стрелки. Меню с поиском открывается на поле поиска, которое оставляет себе буквы и боковые стрелки; ArrowDown переходит к строкам.", + "Rows rendered from entries carry menuitem, menuitemcheckbox or menuitemradio with aria-checked, and aria-haspopup/aria-expanded for a submenu; one roving tab stop. Opened through openFor(): the anchor gets aria-haspopup=menu and aria-expanded; Escape closes one level and returns the focus to its row or the anchor; Tab closes the whole chain; a letter moves to the next item it starts. A host that renders the menu itself owns opening, Escape/Tab dismissal and focus return, as before. A header and a note are text. The options of a choice row are menuitemradio in a group, walked by the side arrows. A searchable menu opens on its field, which keeps the letters and the side arrows; ArrowDown goes on to the rows.": "Строки из entries получают роли menuitem, menuitemcheckbox или menuitemradio с aria-checked, а подменю — aria-haspopup и aria-expanded; одна перемещаемая остановка Tab. При открытии через openFor() элемент получает aria-haspopup=menu и aria-expanded; Escape закрывает один уровень и возвращает фокус на его строку или элемент; Tab закрывает всю цепочку; буква переводит к следующему пункту, который с неё начинается. Приложение, которое рисует меню само, само отвечает за открытие, закрытие по Escape и Tab и возврат фокуса. Заголовок и заметка — текст. Варианты строки выбора — menuitemradio в группе, их перебирают боковые стрелки. Меню с поиском открывается на поле поиска, которое оставляет себе буквы и боковые стрелки; ArrowDown переходит к строкам.", "Rows were dragged into another order inside the list: the ids that moved, the row they now stand before (null: the end) and the whole order shown.": "Строки перетащили в другой порядок внутри списка: перемещённые идентификаторы, строка, перед которой они теперь стоят (null — в конце), и весь показанный порядок.", "Runtime event modal:ready. Bubbles and is composed; detail.modal is the emitting modal.": "Событие среды выполнения modal:ready. Всплывает и является composed; detail.modal — модальное окно, отправившее событие.", "Runtime event modal:update. Bubbles and is composed; detail.modal is the emitting modal.": "Событие среды выполнения modal:update. Всплывает и является composed; detail.modal — модальное окно, отправившее событие.", - "Said in place of the fields when the host answered with a record that holds nothing visible. Without a word for it the panel is an empty box that reads as something still loading.": "Выводится вместо полей, когда хост ответил записью без видимого содержимого. Без этой подписи панель выглядит пустой рамкой, которая читается как незавершённая загрузка.", + "Said in place of the fields when the host answered with a record that holds nothing visible. Without a word for it the panel is an empty box that reads as something still loading.": "Выводится вместо полей, когда приложение ответило записью без видимого содержимого. Без этой подписи панель выглядит пустой рамкой, которая читается как незавершённая загрузка.", "Said in place of the list when a search matches no field.": "Выводится вместо списка, когда поиск не нашёл ни одного поля.", "Said on the band while the view is arranged on a narrow panel, where the section list is a screen of its own and a field cannot be dropped on it.": "Выводится на полосе, пока представление настраивается в узкой панели, где список разделов — отдельный экран и поле нельзя перетащить на него.", "Said on the band while the view is arranged: what dragging does and that a change applies at once.": "Выводится на полосе, пока представление настраивается: что делает перетаскивание и что изменение применяется сразу.", @@ -691,31 +691,31 @@ "Selection requested or changed for a tree item.": "Запрошен или изменён выбор элемента дерева.", "Selects a batch action by value (an empty value clears the choice) and emits sf-action-change when it differs from the current one.": "Выбирает групповое действие по значению (пустое значение сбрасывает выбор) и отправляет sf-action-change, если оно отличается от текущего.", "Selects a node by id.": "Выбирает узел по id.", - "Selects an enabled item by value.": "Выбирает доступный элемент по значению.", + "Selects an enabled item by value.": "Выбирает кнопку по значению, если она доступна.", "Semantic Material Symbol wrapper with exact Loader tracking, accessible decorative or informative modes and token-owned geometry.": "Семантическая обёртка Material Symbol с точным отслеживанием в Loader, доступными декоративным и информативным режимами и геометрией из токенов.", - "Semantic internal spacing profile.": "Семантический профиль внутренних отступов.", + "Semantic internal spacing profile.": "Внутренние отступы: `compact` плотнее, `spacious` свободнее.", "Send one failed file again.": "Повторно отправляет один файл, загрузка которого не удалась.", "Set and commit the colour as a person would: normalised, reflected to value, input and then change dispatched when it differs from the committed one. Returns whether the value changed.": "Устанавливает и фиксирует цвет так же, как это делает пользователь: нормализует его, отражает в value и отправляет input, а затем change, если цвет отличается от зафиксированного. Возвращает, изменилось ли значение.", "Set compact navigation mode.": "Включает компактный режим навигации.", "Set the colour as a person would: normalised, reflected to value, and change dispatched when it differs. Returns whether it changed.": "Задаёт цвет так же, как это делает пользователь: значение нормализуется, отражается в value, а при отличии отправляется change. Возвращает, изменилось ли значение.", "Set the create split-button menu items ({id, name} only). Without items the create button has no arrow.": "Задаёт пункты меню кнопки создания с разделённым действием (только {id, name}). Без пунктов у кнопки создания нет стрелки.", "Sets a positive page size, keeps the current page within the new page count and emits sf-page-size-change. A non-positive, non-numeric or unchanged size is ignored.": "Устанавливает положительный размер страницы, удерживает текущую страницу в пределах нового числа страниц и отправляет sf-page-size-change. Неположительный, нечисловой или неизменный размер игнорируется.", - "Sets or clears disabled on the host and the inner input.": "Устанавливает или снимает disabled на хост-элементе и внутреннем input.", + "Sets or clears disabled on the host and the inner input.": "Устанавливает или снимает disabled на теге и внутреннем input.", "Sets or removes the disabled attribute and re-renders.": "Устанавливает или удаляет атрибут disabled и перерисовывает.", "Sets text-position; null or undefined removes it.": "Устанавливает text-position; null или undefined удаляет его.", "Sets the Document and describe(node) → {label, badges}.": "Задаёт Document и describe(node) → {label, badges}.", "Sets the checked property and state of the inner input; does not dispatch change.": "Устанавливает свойство и состояние checked внутреннего input; не отправляет change.", - "Sets the checked state on the host attribute and the inner input through setState(). Returns the element.": "Устанавливает состояние checked в атрибуте хост-элемента и во внутреннем input через setState(). Возвращает элемент.", - "Sets the disabled attribute when nextValue is truthy and removes it otherwise. Returns the element.": "Устанавливает атрибут disabled, если nextValue истинно, и удаляет его в противном случае. Возвращает элемент.", - "Sets the disabled state on the host attribute and the inner input through setState(). Returns the element.": "Устанавливает состояние disabled в атрибуте хост-элемента и во внутреннем input через setState(). Возвращает элемент.", - "Sets the indeterminate state on the host attribute and the inner input through setState(). Returns the element.": "Устанавливает состояние indeterminate в атрибуте хост-элемента и во внутреннем input через setState(). Возвращает элемент.", - "Sets the src attribute, aborts and resets the current remote content and loads the new source when it may load now. Returns the element.": "Устанавливает атрибут src, прерывает и сбрасывает текущее удалённое содержимое и загружает новый источник, если загрузка сейчас разрешена. Возвращает элемент.", + "Sets the checked state on the host attribute and the inner input through setState(). Returns the element.": "Отмечает флажок или снимает отметку. Возвращает тег.", + "Sets the disabled attribute when nextValue is truthy and removes it otherwise. Returns the element.": "Делает кнопку недоступной (`true`) или снова доступной (`false`). Возвращает тег.", + "Sets the disabled state on the host attribute and the inner input through setState(). Returns the element.": "Делает флажок недоступным или снова доступным. Возвращает тег.", + "Sets the indeterminate state on the host attribute and the inner input through setState(). Returns the element.": "Ставит или снимает промежуточное состояние «частично отмечен». Возвращает тег.", + "Sets the src attribute, aborts and resets the current remote content and loads the new source when it may load now. Returns the element.": "Устанавливает атрибут src, прерывает и сбрасывает текущее удалённое содержимое и загружает новый источник, если загрузка сейчас разрешена. Возвращает тег.", "Sets the value attribute; null or undefined removes it.": "Устанавливает атрибут value; null или undefined удаляет его.", "Sets the value from code (a number, a comma-separated string or an array). The handle count follows the value unless multiple is set explicitly; the value admitted by range, step and margin is reflected to the value attribute. Does not dispatch change.": "Устанавливает значение из кода (число, строка через запятую или массив). Число ручек следует за значением, если multiple не задан явно; значение, допустимое с учётом range, step и margin, отражается в атрибуте value. Не отправляет change.", "Sets toolbar actions {id, label}.": "Задаёт действия панели инструментов {id, label}.", "Sets whether the batch action applies to every record under the filter and emits sf-action-for-all-change. Turning it on also requests the count (sf-count-request with reason action-for-all) when the count is not yet known.": "Задаёт, применяется ли групповое действие ко всем записям под фильтром, и отправляет sf-action-for-all-change. При включении также запрашивает количество (sf-count-request с reason action-for-all), если оно ещё неизвестно.", - "Shared button size token.": "Общий токен размера кнопки.", - "Shared semantic internal spacing profile.": "Общий семантический профиль внутренних отступов.", + "Shared button size token.": "Размер всех кнопок группы: `1/3` — самые мелкие, `3` — самые крупные.", + "Shared semantic internal spacing profile.": "Внутренние отступы всех кнопок группы: `compact` плотнее, `spacious` свободнее.", "Short message heading.": "Короткий заголовок сообщения.", "Short primary description.": "Короткое основное описание.", "Short result heading.": "Короткий заголовок результата.", @@ -723,21 +723,21 @@ "Show a separate remove action; icon, color and avatar tags enable it by default.": "Показывает отдельное действие удаления; у тегов с иконкой, цветом и аватаром оно включено по умолчанию.", "Show batch actions when actions are supplied.": "Показывает групповые действия, если они переданы.", "Show exactly these filter fields in the selected filter template. Used when a saved view is opened: settings.filter_fields names the fields it was showing.": "Показывает в выбранном шаблоне фильтра ровно эти поля фильтра. Используется при открытии сохранённого представления: settings.filter_fields перечисляет поля, которые в нём были показаны.", - "Show one notice over the card, or clear it with an empty text. A refusal, a conflict and an unreachable host raise it by themselves.": "Показывает одно уведомление поверх карточки или убирает его при пустом тексте. Отказ, конфликт и недоступность хоста выводят его сами.", + "Show one notice over the card, or clear it with an empty text. A refusal, a conflict and an unreachable host raise it by themselves.": "Показывает одно уведомление поверх карточки или убирает его при пустом тексте. Отказ, конфликт и недоступность приложения выводят его сами.", "Show page navigation and collection summary.": "Показывает навигацию по страницам и сводку по коллекции.", "Show the built-in toolbar; a composite can provide its own toolbar slot.": "Показывает встроенную панель инструментов; составной компонент может передать свою панель через слот.", - "Show the compatible all-items toggle.": "Показывает совместимый переключатель «все элементы».", - "Show the compatible show-more section.": "Показывает совместимый блок «показать ещё».", - "Show the host's current sort on the headers without emitting an event; (null, null) clears it.": "Показывает в заголовках текущую сортировку хоста без отправки события; (null, null) сбрасывает её.", + "Show the compatible all-items toggle.": "Показывает переключатель «все элементы».", + "Show the compatible show-more section.": "Показывает блок «показать ещё».", + "Show the host's current sort on the headers without emitting an event; (null, null) clears it.": "Показывает в заголовках текущую сортировку приложения без отправки события; (null, null) сбрасывает её.", "Show the mask's placeholder characters only as they are typed.": "Показывать символы-заполнители маски только по мере ввода.", "Show the page-size selector for a non-empty collection.": "Показывает выбор размера страницы для непустой коллекции.", - "Show the sections, groups and fields the host marked rare. A view decision: it writes nothing and changes no value.": "Показывает разделы, группы и поля, которые хост пометил как редкие. Это решение представления: оно ничего не записывает и не меняет значений.", + "Show the sections, groups and fields the host marked rare. A view decision: it writes nothing and changes no value.": "Показывает разделы, группы и поля, которые приложение пометило как редкие. Это решение представления: оно ничего не записывает и не меняет значений.", "Shown in place of the column settings list when the search matches no field.": "Выводится вместо списка настроек столбцов, когда поиск не нашёл ни одного поля.", "Shows a person or organisation as a photo or initials, with an optional availability or verification mark. The default and label templates render a native button whose aria-label names its action; the card template is static and adds a title, description and meta line.": "Показывает человека или организацию фотографией или инициалами с необязательной отметкой доступности или подтверждения. Шаблоны по умолчанию и label отрисовывают нативную кнопку, aria-label которой называет её действие; шаблон card статичен и добавляет заголовок, описание и строку метаданных.", "Shows the current page's place in a hierarchy as a trail of native links built from items, the items attribute or sf-breadcrumbs-item children. A long trail collapses its middle into an ellipsis button (max-items, default 4) that expands in place.": "Показывает место текущей страницы в иерархии цепочкой нативных ссылок, построенной из items, атрибута items или дочерних sf-breadcrumbs-item. У длинной цепочки середина сворачивается в кнопку-многоточие (max-items, по умолчанию 4), которая раскрывается на месте.", - "Single icon name shortcut.": "Сокращение для имени одной иконки.", - "Sit on the text line of another control: no block padding, a flush label, and a remove button the height of the line. The host may publish --sf-tag--line.": "Размещается на строке текста другого элемента управления: без вертикальных отступов, с подписью вровень и кнопкой удаления высотой в строку. Хост может задать --sf-tag--line.", - "Skeleton is not interactive and never enters the tab order. The host content region owns aria-busy and any spoken loading status.": "Скелетон не интерактивен и никогда не попадает в порядок табуляции. Область содержимого хоста отвечает за aria-busy и любое озвучиваемое состояние загрузки.", + "Single icon name shortcut.": "Иконка кнопки по имени, например `edit`.", + "Sit on the text line of another control: no block padding, a flush label, and a remove button the height of the line. The host may publish --sf-tag--line.": "Тег на строке текста другого поля: без отступов сверху и снизу, кнопка удаления высотой в строку. Высоту строки можно задать через `--sf-tag--line`.", + "Skeleton is not interactive and never enters the tab order. The host content region owns aria-busy and any spoken loading status.": "Скелетон не интерактивен и никогда не попадает в порядок табуляции. Область содержимого приложения отвечает за aria-busy и любое озвучиваемое состояние загрузки.", "Slider Smart Component from SIMAI Framework.": "Смарт-компонент Slider из SIMAI Framework.", "Source-driven navigation for a collection split into numbered pages.": "Навигация по коллекции, разбитой на пронумерованные страницы, на основе источника данных.", "Spinner is not interactive and never enters the focus order.": "Спиннер не интерактивен и никогда не попадает в порядок фокуса.", @@ -750,74 +750,74 @@ "Supporting line; falls back to formats.": "Вспомогательная строка; по умолчанию берётся из formats.", "Switch Smart Component from SIMAI Framework.": "Смарт-компонент Switch из SIMAI Framework.", "Switch between automatic, loading, populated, empty and error presentation states.": "Переключает состояние отображения: автоматическое, загрузка, заполнено, пусто и ошибка.", - "Switch size token.": "Токен размера переключателя.", + "Switch size token.": "Размер переключателя: чем больше число, тем крупнее.", "Tab reaches only enabled native actions. Focus uses the shared keyboard-only focus-visible treatment and remains visible in forced colors; omitted pages are not focusable.": "Tab переходит только к включённым нативным действиям. Фокус использует общее оформление focus-visible только для клавиатуры и остаётся видимым в режиме forced colors; пропущенные страницы не получают фокус.", "Tabs Smart Component from SIMAI Framework.": "Смарт-компонент Tabs из SIMAI Framework.", - "Takes the text line of this form size as a link without the card, for a table cell, so the row keeps its control height.": "Занимает строку текста этого размера формы как ссылка без карточки — для ячейки таблицы, чтобы строка сохраняла высоту элемента управления.", - "Takes the text line of this form size as an inline tag one size down, for a table cell, so the row keeps its control height. Overrides size and inline.": "Занимает строку текста этого размера формы как встроенный тег на размер меньше — для ячейки таблицы, чтобы строка сохраняла высоту элемента управления. Переопределяет size и inline.", - "Takes the text line of this form size instead of a control height, for an avatar beside a label in a row or a table cell.": "Занимает строку текста этого размера формы вместо высоты элемента управления — для аватара рядом с подписью в строке или ячейке таблицы.", - "Takes the text line of this form size, for a table cell or a row of fields, so the row keeps its control height.": "Занимает строку текста этого размера формы — для ячейки таблицы или ряда полей, чтобы строка сохраняла высоту элемента управления.", + "Takes the text line of this form size as a link without the card, for a table cell, so the row keeps its control height.": "Ссылка высотой в строку текста этого размера, без карточки, — для ячейки таблицы, чтобы строка не стала выше.", + "Takes the text line of this form size as an inline tag one size down, for a table cell, so the row keeps its control height. Overrides size and inline.": "Тег высотой в строку текста этого размера и на размер меньше, для ячейки таблицы, чтобы строка не стала выше. Важнее `size` и `inline`.", + "Takes the text line of this form size instead of a control height, for an avatar beside a label in a row or a table cell.": "Аватар высотой в строку текста этого размера — для аватара рядом с подписью в строке или ячейке таблицы.", + "Takes the text line of this form size, for a table cell or a row of fields, so the row keeps its control height.": "Высота в строку текста этого размера — для ячейки таблицы или ряда полей, чтобы строка не стала выше.", "Template name.": "Имя шаблона.", - "Template variant name for SfBaseElement external templates.": "Имя варианта шаблона для внешних шаблонов SfBaseElement.", - "Template variant name.": "Имя варианта шаблона.", - "Text of the control that asks the host for the number.": "Текст элемента управления, который запрашивает у хоста количество.", - "Text of the control that asks the host for the number. Empty: the text of the page's language (\"Show the number\" in English).": "Текст элемента, который просит хост посчитать записи. Пусто — текст на языке страницы (по-английски «Show the number»).", + "Template variant name for SfBaseElement external templates.": "Имя шаблона отрисовки; `default` — встроенный.", + "Template variant name.": "Имя шаблона отрисовки; `default` — встроенный.", + "Text of the control that asks the host for the number.": "Текст элемента управления, который запрашивает у приложения количество.", + "Text of the control that asks the host for the number. Empty: the text of the page's language (\"Show the number\" in English).": "Текст элемента, который просит приложение посчитать записи. Пусто — текст на языке страницы (по-английски «Show the number»).", "The Drawer was closed. Bubbles and is composed; detail.drawer is the emitting drawer.": "Drawer закрыт. Всплывает и является composed; detail.drawer — drawer, отправивший событие.", "The Drawer was opened. Bubbles and is composed; detail.drawer is the emitting drawer.": "Drawer открыт. Всплывает и является composed; detail.drawer — drawer, отправивший событие.", - "The Framework's action menu: data entries with icon, caption, value, shortcut, check, submenu, separator and heading, opened by openFor() into the top layer, anchored, with keyboard, typeahead and focus return. A host may still render its own items and own the lifecycle.": "Меню действий Framework: пункты данными со значком, подписью, значением, сочетанием клавиш, отметкой, подменю, разделителем и заголовком; openFor() открывает его в верхнем слое с привязкой, клавиатурой, переходом по первой букве и возвратом фокуса. Хост может по-прежнему рисовать свои пункты и сам управлять жизненным циклом.", + "The Framework's action menu: data entries with icon, caption, value, shortcut, check, submenu, separator and heading, opened by openFor() into the top layer, anchored, with keyboard, typeahead and focus return. A host may still render its own items and own the lifecycle.": "Меню действий Framework: пункты данными со значком, подписью, значением, сочетанием клавиш, отметкой, подменю, разделителем и заголовком; openFor() открывает его в верхнем слое с привязкой, клавиатурой, переходом по первой букве и возвратом фокуса. Приложение может само рисовать свои пункты и управлять жизненным циклом.", "The ISO date (yyyy-mm-dd) chosen; value is read when date is absent.": "Выбранная дата в ISO (yyyy-mm-dd); при отсутствии date читается value.", "The ISO date (yyyy-mm-dd). As a property, [start, end] for a range; the attribute is the same as date.": "Дата в ISO (yyyy-mm-dd). Как свойство — [start, end] для диапазона; атрибут совпадает с date.", "The Swiper instance behind the slider, or null before it is bound.": "Экземпляр Swiper, на котором построен слайдер, или null до привязки.", "The accessible name of the chooser that picks which named view is shown. Unset, the component answers in the page language.": "Доступное имя элемента выбора, который определяет, какое именованное представление показано. Если не задано, компонент использует язык страницы.", - "The accessible name of the control that removes a named view.": "Доступное имя элемента управления, который удаляет именованное представление.", + "The accessible name of the control that removes a named view.": "Название кнопки удаления вида для экранного диктора.", "The accessible name of the control.": "Доступное имя элемента управления.", - "The accessible name of the copy control, which appears only when the host sent an address.": "Доступное имя элемента управления копированием; он появляется, только если хост передал адрес.", - "The accessible name of the open-full-page control, which appears only when the host sent an address.": "Доступное имя элемента управления открытием на полной странице; он появляется, только если хост передал адрес.", + "The accessible name of the copy control, which appears only when the host sent an address.": "Название кнопки «Копировать» для экранного диктора; кнопка видна, только если приложение передало адрес.", + "The accessible name of the open-full-page control, which appears only when the host sent an address.": "Название кнопки «Открыть на всю страницу» для экранного диктора; кнопка видна, только если приложение передало адрес.", "The accessible name of the panel's close control. Defaults to the word for the page's language; the attribute overrides it.": "Доступное имя элемента закрытия панели. По умолчанию — слово на языке страницы; атрибут его переопределяет.", - "The accessible name of the panel's close control. The host translates it.": "Доступное имя элемента закрытия панели. Перевод выполняет хост.", + "The accessible name of the panel's close control. The host translates it.": "Доступное имя элемента закрытия панели. Перевод выполняет приложение.", "The accessible name of the section list. Defaults to the word for the page's language; the attribute overrides it.": "Доступное имя списка разделов. По умолчанию — слово на языке страницы; атрибут его переопределяет.", - "The accessible name of the section list. The host translates it.": "Доступное имя списка разделов. Перевод выполняет хост.", + "The accessible name of the section list. The host translates it.": "Доступное имя списка разделов. Перевод выполняет приложение.", "The accessible name of the star beside the record name.": "Доступное имя звезды рядом с названием записи.", "The accessible name of the surface. A surface with a role and no name is announced as an unnamed one.": "Доступное имя поверхности. Поверхность с ролью, но без имени объявляется как безымянная.", "The accessible name of the «…» menu in the head.": "Доступное имя меню «…» в шапке.", - "The accessible name, saying what is copied («Скопировать команду»); «Копировать» / Copy by default.": "Доступное имя, говорящее, что копируется («Скопировать команду»); по умолчанию «Копировать».", + "The accessible name, saying what is copied («Скопировать команду»); «Копировать» / Copy by default.": "Название кнопки для экранного диктора: что копируется, например «Скопировать команду». По умолчанию «Копировать».", "The accessible name; defaults to the page language's «Resize».": "Доступное имя; по умолчанию «Изменить ширину» на языке страницы.", "The active state of a checkbox tag changed.": "Изменилось активное состояние тега-флажка.", "The alert is being dismissed by its close button or dismiss()/close(). Bubbles and is composed; not cancelable; the element is removed after it.": "Уведомление закрывается кнопкой закрытия или через dismiss()/close(). Всплывает и с composed: true; не отменяемое; после него элемент удаляется.", "The base lifecycle event after each render. Bubbles and is composed.": "Базовое событие жизненного цикла после каждой отрисовки. Всплывает и с composed: true.", "The base lifecycle event before each render. Bubbles and is composed.": "Базовое событие жизненного цикла перед каждой отрисовкой. Всплывает и с composed: true.", "The block title is a heading at heading-level; the inline form has no heading. With live=auto nothing-found and error are announced politely (role=status), the others are not; live=alert makes it an alert, live=off silent. The icon is decorative; the actions are ordinary buttons in the tab order. Inside a listbox or menu, place it outside the list element so it is never an item.": "Заголовок полной формы — настоящий заголовок уровня heading-level; у компактной заголовка нет. При live=auto nothing-found и error объявляются вежливо (role=status), остальные — нет; live=alert делает объявление срочным, live=off — беззвучным. Значок декоративный; действия — обычные кнопки в порядке Tab. Внутри listbox или меню ставьте его вне элемента списка, чтобы он не считался пунктом.", - "The button that saves the filter as a template. A data view turns it off when the host keeps no saved views.": "Кнопка, которая сохраняет фильтр как шаблон. Представление данных выключает её, если хост не хранит сохранённые представления.", + "The button that saves the filter as a template. A data view turns it off when the host keeps no saved views.": "Кнопка, которая сохраняет фильтр как шаблон. Представление данных выключает её, если приложение не хранит сохранённые представления.", "The button's accessible name; «Подробнее» / More information by default, best naming the subject («Подробнее: код решения»).": "Доступное имя кнопки; по умолчанию «Подробнее». Лучше назвать, о чём пояснение («Подробнее: код решения»).", "The caption that drops what was typed. Nothing was written, so there is nothing to undo.": "Подпись действия, которое отбрасывает введённое. Ничего не записано, поэтому отменять нечего.", "The caption that opens a group for editing. Defaults to the word for the page's language; the attribute overrides it.": "Подпись, открывающая группу для редактирования. По умолчанию — слово на языке страницы; атрибут его переопределяет.", - "The caption that opens a group for editing. The host translates it.": "Подпись действия, которое открывает группу для редактирования. Перевод выполняет хост.", + "The caption that opens a group for editing. The host translates it.": "Подпись действия, которое открывает группу для редактирования. Перевод выполняет приложение.", "The caption that saves the open group. One press is one revision.": "Подпись действия, которое сохраняет открытую группу. Одно нажатие — одна ревизия.", "The character that stands for a position not yet typed.": "Символ, обозначающий ещё не введённую позицию.", "The checked state changed; the native event bubbles from the inner checkbox, which is its target.": "Изменилось состояние checked; нативное событие всплывает от внутреннего флажка, который является его целью.", - "The checked state changed; the native event bubbles from the inner checkbox, which is its target. It carries no detail.": "Изменилось состояние checked; нативное событие всплывает от внутреннего флажка, который является его целью. detail не передаётся.", - "The chosen quick range's id. Set by a host it wins over start-value and end-value, and a relative one is resolved against today in the person's time zone when drawn; nothing is emitted for it.": "id выбранного быстрого диапазона. Если его задаёт хост, он важнее start-value и end-value; относительный диапазон при отрисовке считается от сегодняшнего дня в часовом поясе пользователя. Событие при этом не отправляется.", - "The chosen tab's id or index; the host renders that tab's rows into the content slot.": "id или номер выбранной вкладки; хост выводит строки этой вкладки в слот content.", + "The checked state changed; the native event bubbles from the inner checkbox, which is its target. It carries no detail.": "Флажок отмечен или отметка снята; `detail` нет.", + "The chosen quick range's id. Set by a host it wins over start-value and end-value, and a relative one is resolved against today in the person's time zone when drawn; nothing is emitted for it.": "id выбранного быстрого диапазона. Если его задаёт приложение, он важнее start-value и end-value; относительный диапазон при отрисовке считается от сегодняшнего дня в часовом поясе пользователя. Событие при этом не отправляется.", + "The chosen tab's id or index; the host renders that tab's rows into the content slot.": "id или номер выбранной вкладки; приложение выводит строки этой вкладки в слот content.", "The colour moved, on every step of a drag across the platform picker and before each change. Carries the value and the form name.": "Цвет изменился — на каждом шаге перетаскивания в палитре платформы и перед каждым change. Передаёт значение и имя в форме.", - "The colour that applies while nothing is chosen. Shown as inherited rather than drawn as the value: a control that drew it as the value would make «not set» and «set to the same colour» look identical, and only one of them follows the theme when the theme changes.": "Цвет, который действует, пока ничего не выбрано. Показывается как унаследованный, а не как значение: если бы элемент управления рисовал его как значение, «не задано» и «задан тот же цвет» выглядели бы одинаково, а при смене темы следует за ней только первый вариант.", + "The colour that applies while nothing is chosen. Shown as inherited rather than drawn as the value: a control that drew it as the value would make «not set» and «set to the same colour» look identical, and only one of them follows the theme when the theme changes.": "Цвет, который действует, пока ничего не выбрано. Показан как унаследованный, а не как выбранный: так «не задано» и «задан тот же цвет» не путаются, и при смене темы цвет меняется вместе с ней.", "The colour, as #rgb, #rrggbb or #rrggbbaa. Empty means nothing is chosen and the inherited colour applies.": "Цвет в формате #rgb, #rrggbb или #rrggbbaa. Пустое значение означает, что ничего не выбрано и действует унаследованный цвет.", "The colours a product already has, comma separated, each #hex or #hex|Name; a name may hold spaces. A piece without a name may list several colours by spaces. A person picks the brand colour rather than matching a hex by eye.": "Цвета, которые уже есть у продукта, через запятую, каждый в виде #hex или #hex|Name; имя может содержать пробелы. Фрагмент без имени может перечислять несколько цветов через пробел. Пользователь выбирает фирменный цвет, а не подбирает hex на глаз.", "The colours a product already has, space or comma separated, each #hex or #hex|Name. A person picks the brand colour rather than matching a hex by eye.": "Цвета, которые уже есть у продукта, через пробел или запятую, каждый в виде #hex или #hex|Name. Пользователь выбирает фирменный цвет, а не подбирает hex на глаз.", "The column a tree hangs from: the title column, or the first data column.": "Колонка, от которой растёт дерево: колонка заголовка или первая колонка данных.", "The container width, in pixels, below which layout auto draws the compact list.": "Ширина контейнера в пикселях, уже которой режим auto рисует компактный список.", - "The control that asks the host to delete the record. Offered only when the record names `record.delete` among its actions.": "Элемент управления, который просит хост удалить запись. Предлагается, только если среди действий записи есть `record.delete`.", - "The control that enters configuring. Shown only when the host declares view-settings and this person may write at least one layer.": "Элемент управления, который включает режим настройки. Показывается, только если хост объявляет view-settings и пользователь может записывать хотя бы один слой.", - "The control that returns from a section screen to the list of sections, which exists only below the drawer breakpoint. Above it the sections stand beside the groups and there is nothing to go back from.": "Элемент управления, который возвращает с экрана раздела к списку разделов; существует только ниже контрольной точки drawer. Выше неё разделы стоят рядом с группами, и возвращаться неоткуда.", - "The create button and its menu of kinds, inside actions. A data view turns it off for a host on port 1.10.0 that does not announce create-record.": "Кнопка создания и её меню видов записи среди действий. Представление данных выключает её для хоста на порте 1.10.0, который не объявил create-record.", + "The control that asks the host to delete the record. Offered only when the record names `record.delete` among its actions.": "Кнопка, которая просит приложение удалить запись. Видна, только если среди действий записи есть `record.delete`.", + "The control that enters configuring. Shown only when the host declares view-settings and this person may write at least one layer.": "Кнопка, которая включает режим настройки. Видна, только если приложение поддерживает настройку вида и человек может менять хотя бы один слой.", + "The control that returns from a section screen to the list of sections, which exists only below the drawer breakpoint. Above it the sections stand beside the groups and there is nothing to go back from.": "Кнопка «назад» с экрана раздела к списку разделов. Есть только на узком экране: на широком разделы видны рядом с группами.", + "The create button and its menu of kinds, inside actions. A data view turns it off for a host on port 1.10.0 that does not announce create-record.": "Кнопка создания и её меню видов записи среди действий. Представление данных выключает её для приложения на порте 1.10.0, которое не объявило `create-record`.", "The current slide changed through the API or either slider. Bubbles and is composed.": "Текущий слайд изменился через API или любой из слайдеров. Всплывает и с composed: true.", "The decorative cross glyph of a close action, sized on the control ladder. It is aria-hidden and never focusable; the containing native button owns the action and its name.": "Декоративный крестик действия закрытия, размер которого задаётся шкалой элементов управления. Он aria-hidden и никогда не получает фокус; действием и его именем владеет содержащая его нативная кнопка.", - "The document keydown handler the modal binds itself: Escape closes the top open window when close-on-esc allows it, Tab is trapped inside it. Not meant to be called by a host.": "Обработчик keydown документа, который модальное окно привязывает само: Escape закрывает верхнее открытое окно, если это разрешает close-on-esc, Tab удерживается внутри него. Не предназначен для вызова хостом.", + "The document keydown handler the modal binds itself: Escape closes the top open window when close-on-esc allows it, Tab is trapped inside it. Not meant to be called by a host.": "Обработчик keydown документа, который модальное окно привязывает само: Escape закрывает верхнее открытое окно, если это разрешает close-on-esc, Tab удерживается внутри него. Не предназначен для вызова приложением.", "The earliest ISO date that can be chosen; earlier days are disabled.": "Самая ранняя дата в ISO, которую можно выбрать; более ранние дни отключены.", "The enabled drop zone is the picker focus owner; nested file actions retain native activation. Use focus-visible and a real forced-colors outline. Disabled controls leave the tab order; re-enabling restores authored tabindex.": "Включённая зона перетаскивания владеет фокусом выбора файлов; вложенные действия над файлами сохраняют нативную активацию. Используйте focus-visible и настоящий контур в режиме forced colors. Отключённые элементы управления выходят из порядка табуляции; повторное включение восстанавливает заданный tabindex.", "The explanation closed.": "Пояснение закрыто.", "The explanation opened.": "Пояснение открыто.", "The explanation; slot `content` takes links or lists instead.": "Пояснение; вместо него слот `content` принимает ссылки или списки.", - "The fallback reason on a layer this person may not write, used when the host sends none of its own.": "Причина по умолчанию для слоя, который этот пользователь не может записывать; используется, когда хост не передаёт свою.", + "The fallback reason on a layer this person may not write, used when the host sends none of its own.": "Причина по умолчанию для слоя, который этот пользователь не может записывать; используется, когда приложение не передаёт свою.", "The field's appearance (bordered by default), as on sf-inputs.": "Вид поля (по умолчанию с рамкой), как у sf-inputs.", "The field's placeholder text.": "Текст-заполнитель поля.", "The field's visible label.": "Видимая подпись поля.", @@ -829,28 +829,28 @@ "The form field name of the value; wins over name.": "Имя поля формы для значения; сильнее name.", "The form name of the native input.": "Имя нативного поля ввода в форме.", "The form name. A hidden input carries the value under it, empty while the inherited colour applies.": "Имя в форме. Под ним скрытый input передаёт значение; оно пустое, пока действует унаследованный цвет.", - "The gear in the head of the settings column, which opens the column settings. Off, the column still carries each row's menu. A data view turns it off for a host on port 1.10.0 that does not announce personal-column-settings.": "Шестерёнка в заголовке колонки настроек, которая открывает настройки колонок. Без неё колонка по-прежнему несёт меню каждой строки. Представление данных выключает её для хоста на порте 1.10.0, который не объявил personal-column-settings.", + "The gear in the head of the settings column, which opens the column settings. Off, the column still carries each row's menu. A data view turns it off for a host on port 1.10.0 that does not announce personal-column-settings.": "Шестерёнка в заголовке колонки настроек, которая открывает настройки колонок. Без неё колонка по-прежнему несёт меню каждой строки. Представление данных выключает её для приложения на порте 1.10.0, которое не объявило `personal-column-settings`.", "The glyph beside the collection name, from the Framework icon font.": "Значок рядом с названием коллекции из иконочного шрифта Framework.", - "The glyphs a section may be marked with, as names from the Framework's icon set separated by spaces or commas. Empty means the component's own hundred and twenty, the ones products reach for; a host with its own vocabulary replaces them rather than adding to them.": "Значки, которыми можно пометить раздел, — имена из набора иконок Framework через пробел или запятую. Пустое значение означает собственные сто двадцать иконок компонента, наиболее востребованные в продуктах; хост со своим словарём заменяет их, а не дополняет.", - "The group inside that composite this list stands in, sent with the host-port request.": "Группа внутри составного компонента, которую представляет этот список; передаётся с запросом к порту хоста.", + "The glyphs a section may be marked with, as names from the Framework's icon set separated by spaces or commas. Empty means the component's own hundred and twenty, the ones products reach for; a host with its own vocabulary replaces them rather than adding to them.": "Иконки, которыми можно пометить раздел, — имена через пробел или запятую, например `star flag`. Пусто — сто двадцать самых нужных иконок; свой список заменяет их, а не дополняет.", + "The group inside that composite this list stands in, sent with the host-port request.": "Группа внутри составного компонента, которую представляет этот список; передаётся с запросом к порту приложения.", "The handle is in the tab order with role separator, aria-orientation vertical and aria-valuenow/min/max in pixels. Arrows change the width by a step (Shift: four), Home and End set a limit, Enter, Space and a double click restore the stylesheet's width.": "Ручка в порядке Tab, с role separator, aria-orientation vertical и aria-valuenow/min/max в пикселях. Стрелки меняют ширину на шаг (с Shift — на четыре), Home и End ставят предел, Enter, пробел и двойной щелчок возвращают ширину из стилей страницы.", "The head of an admin page: path, heading, count, favourite star, install mark and main action. Replaces the admin top bar together with sf-admin-menu.": "Шапка страницы администратора: путь, заголовок, счётчик, звезда избранного, отметка установки и главное действие. Используется вместе с sf-admin-menu.", "The hint stored for a field in this layer.": "Подсказка, сохранённая для поля в этом слое.", - "The host answered item.open applied: the page belongs to this row now. For a host that navigates in its own router rather than through the address it answered with.": "Хост подтвердил применение item.open: страница теперь принадлежит этой строке. Для хоста, который выполняет переход в собственном маршрутизаторе, а не по адресу из ответа.", - "The host answers one search request with its own groups of results. An answer to a query the person has moved on from is dropped.": "Хост отвечает на один поисковый запрос своими группами результатов. Ответ на запрос, который пользователь уже сменил, отбрасывается.", + "The host answered item.open applied: the page belongs to this row now. For a host that navigates in its own router rather than through the address it answered with.": "Приложение подтвердило применение item.open: страница теперь принадлежит этой строке. Для приложения, которое выполняет переход в собственном маршрутизаторе, а не по адресу из ответа.", + "The host answers one search request with its own groups of results. An answer to a query the person has moved on from is dropped.": "Приложение отвечает на один поисковый запрос своими группами результатов. Ответ на запрос, который пользователь уже сменил, отбрасывается.", "The icon at the start of the field; the canonical name for left-icon.": "Иконка в начале поля; каноническое имя для left-icon.", "The icon is not interactive and never enters the tab order. Name the containing control instead.": "Иконка не интерактивна и никогда не попадает в порядок табуляции. Задавайте имя содержащему её элементу управления.", "The id of the profile in use.": "Идентификатор текущего профиля.", - "The inline gutter the head and the body share, as a length (for example var(--sf-space-3)), so the title and the content start on one axis. Empty: the drawer's own, space-1. A theme may set --sf-drawer-gutter instead.": "Общий горизонтальный отступ шапки и тела в виде длины (например, var(--sf-space-3)), чтобы заголовок и содержимое начинались на одной оси. Пусто — собственный отступ drawer, space-1. Тема может задать --sf-drawer-gutter.", + "The inline gutter the head and the body share, as a length (for example var(--sf-space-3)), so the title and the content start on one axis. Empty: the drawer's own, space-1. A theme may set --sf-drawer-gutter instead.": "Отступ слева и справа у шапки и содержимого, например `var(--sf-space-3)`, чтобы заголовок и текст начинались ровно. Пусто — обычный отступ панели.", "The inner native button is the only focus owner. Pointer activation does not show the ring; keyboard focus uses focus-visible, with an inset ring inside joined controls.": "Внутренняя нативная кнопка — единственный владелец фокуса. При активации указателем кольцо не отображается; фокус с клавиатуры использует focus-visible, а в объединённых элементах управления кольцо рисуется внутри.", "The key that opens the search from anywhere on the page; empty turns it off.": "Клавиша, которая открывает поиск из любого места страницы; пустое значение отключает её.", "The key the person's view of this list is kept under (SF.Preferences, sf-table/): the table's arrangement, the sort and the page size, applied before the first paint and the first query. Usually the collection.": "Ключ, под которым хранится персональный вид этого списка (SF.Preferences, `sf-table/`): раскладка таблицы, сортировка и размер страницы; применяется до первой отрисовки и первого запроса. Обычно это коллекция.", "The key this table's arrangement -- order, visibility, pinning, widths -- is kept under as a view preference (SF.Preferences, sf-table/); a data view passes its own. Without it table-settings-key is used, and without either nothing is kept.": "Ключ, под которым раскладка таблицы — порядок, видимость, закрепление, ширины — хранится как персональный вид (SF.Preferences, `sf-table/`); представление данных передаёт свой. Без него используется table-settings-key, а без обоих ничего не хранится.", "The label before the count of changed fields in the action bar.": "Подпись перед количеством изменённых полей на панели действий.", - "The label before the count of field errors the host refused the save with.": "Подпись перед количеством ошибок полей, с которыми хост отклонил сохранение.", + "The label before the count of field errors the host refused the save with.": "Подпись перед количеством ошибок полей, с которыми приложение отклонило сохранение.", "The language of month and day names; defaults to the page language.": "Язык названий месяцев и дней; по умолчанию — язык страницы.", "The latest ISO date that can be chosen; later days are disabled.": "Самая поздняя дата в ISO, которую можно выбрать; более поздние дни отключены.", - "The layer everyone sees. Drawn disabled with the host reason when this person may not write it, rather than left out -- an absent control reads as a missing feature.": "Слой, который видят все. Если этот пользователь не может его записывать, слой отображается отключённым с причиной от хоста, а не скрывается — отсутствующий элемент управления воспринимается как отсутствующая функция.", + "The layer everyone sees. Drawn disabled with the host reason when this person may not write it, rather than left out -- an absent control reads as a missing feature.": "Слой, который видят все. Если человек не может его менять, слой показан недоступным с причиной от приложения, а не спрятан.", "The layer only this person sees. Renamed from «Mine» on 2026-10-09: it stands in a list of named views now, beside «Обычный» and «Экспертный», where the word has to answer the same question the others do.": "Слой, который видит только этот пользователь. Он стоит в списке именованных представлений рядом с «Обычный» и «Экспертный», поэтому его название отвечает на тот же вопрос, что и остальные.", "The lightbox modal finished closing. Bubbles and is composed.": "Модальное окно лайтбокса закрылось. Всплывает и с composed: true.", "The lightbox modal finished opening. Bubbles and is composed.": "Модальное окно лайтбокса открылось. Всплывает и с composed: true.", @@ -861,87 +861,87 @@ "The month shown when the panel opens, 0-11; defaults to the chosen date's month, else the current one.": "Месяц, показываемый при открытии панели, 0-11; по умолчанию — месяц выбранной даты, иначе текущий.", "The name a new area is made with, before the person types one.": "Имя, с которым создаётся новая область, пока пользователь не ввёл своё.", "The name a new section is made with, before the person types one.": "Имя, с которым создаётся новый раздел, пока пользователь не ввёл своё.", - "The narrowest width, a CSS length (tokens and percentages of the panel's parent too).": "Наименьшая ширина — длина CSS (подходят токены и проценты от родителя панели).", + "The narrowest width, a CSS length (tokens and percentages of the panel's parent too).": "Наименьшая ширина панели, например `12rem` или `50%`.", "The next page of one level: the roots through the query, a node's children through tree.expand with its cursor.": "Следующая страница одного уровня: корни — через запрос, потомки узла — через tree.expand с его курсором.", - "The on state changed; the native event bubbles from the inner checkbox, which is its target.": "Изменилось состояние «включено»; нативное событие всплывает от внутреннего флажка, который является его целью.", + "The on state changed; the native event bubbles from the inner checkbox, which is its target.": "Переключатель включён или выключен.", "The page heading.": "Заголовок страницы.", - "The page of candidates the host last answered with for one field.": "Страница кандидатов, которую хост последней вернул для одного поля.", + "The page of candidates the host last answered with for one field.": "Страница вариантов, которую приложение последней вернуло для одного поля.", "The panel asks to be closed, carrying how many fields were changed and not saved.": "Панель просит закрыть её и передаёт количество изменённых, но не сохранённых полей.", "The person asked for a new profile, a copy of the current one.": "Человек попросил новый профиль — копию текущего.", "The person asked for the current profile back as the standard one.": "Человек попросил вернуть текущему профилю стандартный вид.", - "The person asked for the declared order back; the component shows it until the host answers with setSettings.": "Человек попросил вернуть объявленный порядок; компонент показывает его, пока хост не ответит через setSettings.", - "The person asked for the default columns back. The table drops its own stored arrangement and names no defaults: the host (or a data view) resets the person's layer and answers with its defaults.": "Человек попросил вернуть колонки по умолчанию. Таблица убирает свою сохранённую раскладку и значений по умолчанию не называет: личный слой сбрасывает хост (или представление данных) и отвечает своими значениями.", + "The person asked for the declared order back; the component shows it until the host answers with setSettings.": "Человек попросил вернуть объявленный порядок; компонент показывает его, пока приложение не ответит через setSettings.", + "The person asked for the default columns back. The table drops its own stored arrangement and names no defaults: the host (or a data view) resets the person's layer and answers with its defaults.": "Человек попросил вернуть колонки по умолчанию. Таблица убирает свою сохранённую раскладку и значений по умолчанию не называет: личный слой сбрасывает приложение (или представление данных) и отвечает своими значениями.", "The person asked for the next page of one tree level.": "Пользователь запросил следующую страницу уровня дерева.", - "The person asked for the record to be deleted; the host decides whether to ask first and whether to delete at all.": "Пользователь запросил удаление записи; хост решает, спрашивать ли подтверждение и удалять ли вообще.", - "The person asked for this object on a full page, at the address the host gave.": "Пользователь запросил этот объект на полной странице по адресу, который передал хост.", - "The person asked to see the whole list a row cap is showing part of. Carries the query so the host opens the full view on the same records; the component builds no address of its own.": "Пользователь запросил весь список, часть которого показана из-за ограничения числа строк. Передаёт запрос, чтобы хост открыл полное представление с теми же записями; компонент не строит собственный адрес.", + "The person asked for the record to be deleted; the host decides whether to ask first and whether to delete at all.": "Пользователь запросил удаление записи; приложение решает, спрашивать ли подтверждение и удалять ли вообще.", + "The person asked for this object on a full page, at the address the host gave.": "Пользователь запросил этот объект на полной странице по адресу, который передал приложение.", + "The person asked to see the whole list a row cap is showing part of. Carries the query so the host opens the full view on the same records; the component builds no address of its own.": "Пользователь запросил весь список, часть которого показана из-за ограничения числа строк. Передаёт запрос, чтобы приложение открыло полное представление с теми же записями; компонент не строит собственный адрес.", "The person chose a profile.": "Человек выбрал профиль.", "The person confirmed removing a profile.": "Человек подтвердил удаление профиля.", - "The person dropped an item; the host applies or refuses the change.": "Пользователь отпустил перетаскиваемый элемент; хост применяет или отклоняет изменение.", + "The person dropped an item; the host applies or refuses the change.": "Пользователь отпустил перетаскиваемый элемент; приложение применяет или отклоняет изменение.", "The person opened or closed a tree row. The data view answers it; the table only says which row and whether it was open.": "Пользователь открыл или закрыл строку дерева. Отвечает представление данных; таблица сообщает только, какая строка и была ли она открыта.", - "The person ordered or showed/hid a tab in the settings; applied at once. The host keeps it and gives it back with setSettings.": "Человек переставил, показал или скрыл вкладку в настройках; применяется сразу. Хост сохраняет выбор и возвращает его через setSettings.", + "The person ordered or showed/hid a tab in the settings; applied at once. The host keeps it and gives it back with setSettings.": "Человек переставил, показал или скрыл вкладку в настройках; применяется сразу. Приложение сохраняет выбор и возвращает его через setSettings.", "The person pressed one of the actions (retry for an error without actions of its own).": "Человек нажал одно из действий (retry — у ошибки без собственных действий).", "The person pressed the star. Cancelable: a host that waits for its own answer cancels it and sets star itself.": "Пользователь нажал на звезду. Отменяемое: элемент, который ждёт собственного ответа, отменяет событие и сам задаёт star.", "The person renamed a profile.": "Человек переименовал профиль.", - "The phone value or country was committed; the native event bubbles from the inner input, which is its target. It carries no detail. The name to bind.": "Номер телефона или страна зафиксированы; нативное событие всплывает от внутреннего input, который является его целью. detail не передаётся. Имя для привязки.", + "The phone value or country was committed; the native event bubbles from the inner input, which is its target. It carries no detail. The name to bind.": "Номер или страна выбраны окончательно; `detail` нет. На это событие и подписывайтесь.", "The phone value or country was committed; the native event bubbles from the inner input, which is its target. The name to bind.": "Значение телефона или страна зафиксированы; нативное событие всплывает от внутреннего поля ввода, которое является его целью. Имя для привязки.", "The platform colour input, each swatch and the clear button take focus in order and keep a visible focus ring. Swatches say whether they are the chosen colour by aria-pressed.": "Поле выбора цвета платформы, каждый образец и кнопка очистки получают фокус по порядку и сохраняют видимое кольцо фокуса. Образцы сообщают через aria-pressed, выбраны ли они.", "The portal surface is ready. Bubbles and is composed; detail.drawer is the emitting drawer.": "Поверхность портала готова. Всплывает и является composed; detail.drawer — drawer, отправивший событие.", "The portal surface was updated. Bubbles and is composed; detail.drawer is the emitting drawer.": "Поверхность портала обновлена. Всплывает и является composed; detail.drawer — drawer, отправивший событие.", "The pressed state changed; the native event bubbles from the inner checkbox, which is its target. The name to bind.": "Изменилось нажатое состояние; нативное событие всплывает от внутреннего флажка, который является его целью. Имя для привязки.", - "The query of a search the host answers (search.remote).": "Запрос поиска, на который отвечает хост (search.remote).", + "The query of a search the host answers (search.remote).": "Запрос поиска, на который отвечает приложение (search.remote).", "The question the reset asks before it takes the layer away. A reset undoes everything a person arranged in this layer, which is more than one press of a button beside «done» should do.": "Вопрос, который задаёт сброс перед удалением слоя. Сброс отменяет всё, что пользователь настроил в этом слое, а это больше, чем должно происходить от одного нажатия кнопки рядом с «готово».", "The reason, which picks the default icon, title and text, and for error a «Повторить» action.": "Причина: от неё зависят значок, заголовок и текст по умолчанию, а у error — действие «Повторить».", - "The record the embedding composite is showing, sent with the host-port request.": "Запись, которую показывает встраивающий составной компонент; передаётся с запросом к порту хоста.", + "The record the embedding composite is showing, sent with the host-port request.": "Запись, которую показывает встраивающий составной компонент; передаётся с запросом к порту приложения.", "The record's title in the panel header, and the panel's accessible name. It was the accessible name alone, which is true and invisible: a panel with no visible title tells nobody which record is open, and in a stack that is what a person most needs to know. The full header, with the collection and the star, is its own step.": "Название записи в шапке панели и доступное имя панели. Одного доступного имени недостаточно: панель без видимого заголовка не сообщает, какая запись открыта, а в стеке панелей это пользователю нужнее всего. Полная шапка с коллекцией и звездой — отдельный шаг.", - "The resting glyph: link, key, ...": "Значок в покое: link, key и другие.", - "The selected value changed through select() or clear(); dispatched on the host, bubbles and is composed. The name to bind.": "Выбранное значение изменилось через select() или clear(); событие отправляется на хост-элементе, всплывает и с composed: true. Имя для привязки.", + "The resting glyph: link, key, ...": "Иконка до нажатия, например `link` или `key`.", + "The selected value changed through select() or clear(); dispatched on the host, bubbles and is composed. The name to bind.": "Выбор изменился, в том числе через `select()` или `clear()`. На это событие и подписывайтесь.", "The selected value changed; dispatched on the host with previous, value and item. The name to bind.": "Выбранное значение изменилось; событие отправляется на элементе с previous, value и item. Используйте это имя для подписки.", "The selection changed; dispatched on the host. The name to bind.": "Выбор изменился; событие отправляется на элементе. Имя для привязки.", - "The selection changed; the native event bubbles from the inner radio, which is its target. The name to bind.": "Выбор изменился; нативное событие всплывает от внутренней радиокнопки, которая является его целью. Имя для привязки.", + "The selection changed; the native event bubbles from the inner radio, which is its target. The name to bind.": "Выбор изменился. На это событие и подписывайтесь.", "The sf-inline-editor carrier is hidden and has no role. While editing, the edited element becomes a labelled role=textbox with a visible outline; the formatting toolbar has aria-pressed states and aria-keyshortcuts. Enter commits, Escape cancels, focus leaving commits; IME composition is never interrupted.": "Носитель sf-inline-editor скрыт и не имеет роли. Во время редактирования редактируемый элемент становится подписанным role=textbox с видимым контуром; панель форматирования имеет состояния aria-pressed и aria-keyshortcuts. Enter фиксирует, Escape отменяет, потеря фокуса фиксирует; ввод через IME никогда не прерывается.", "The size ladder step, so a colour beside a text field lines up with it.": "Ступень шкалы размеров, чтобы цвет рядом с текстовым полем выравнивался с ним.", "The star is a native button in sf-icon-button with aria-pressed and a label that says what pressing it does.": "Звезда — нативная кнопка в sf-icon-button с aria-pressed и подписью, которая говорит, что произойдёт при нажатии.", - "The star was pressed. Carries the record, the collection and the state being asked for; the component changes nothing until the host sets favourite back.": "Нажата звезда. Передаёт запись, коллекцию и запрошенное состояние; компонент ничего не меняет, пока хост не установит favourite обратно.", - "The step of the size ladder its fields, buttons, labels and page numbers take: 1, or the dense 1/2 of an admin.": "Ступень лестницы размеров для полей, кнопок, подписей и номеров страниц: 1 или плотная 1/2, как в админке.", - "The step of the size ladder the table's controls and rows take: 1, or the dense 1/2 -- 32px controls, 14/20 text, rows of the step's height. A size of 1 written on an element the table draws becomes the table's.": "Ступень лестницы размеров для элементов управления и строк таблицы: 1 или плотная 1/2 — элементы управления высотой 32 px, текст 14/20, строки высотой ступени. Размер 1, записанный на элементе, который рисует таблица, становится размером таблицы.", - "The step of the size ladder the view's controls take, handed to its table, its page row and its selection band: 1, or the dense 1/2 of an admin.": "Ступень лестницы размеров для элементов управления представления; её получают таблица, строка страниц и полоса выбора: 1 или плотная 1/2, как в админке.", + "The star was pressed. Carries the record, the collection and the state being asked for; the component changes nothing until the host sets favourite back.": "Нажата звезда. Передаёт запись, коллекцию и запрошенное состояние; компонент ничего не меняет, пока приложение не установит favourite обратно.", + "The step of the size ladder its fields, buttons, labels and page numbers take: 1, or the dense 1/2 of an admin.": "Размер полей, кнопок, подписей и номеров страниц: `1` или плотный `1/2`, как в админке.", + "The step of the size ladder the table's controls and rows take: 1, or the dense 1/2 -- 32px controls, 14/20 text, rows of the step's height. A size of 1 written on an element the table draws becomes the table's.": "Размер кнопок и строк таблицы: `1` или плотный `1/2` — кнопки высотой 32 px, текст 14/20. `size=\"1\"` на элементе внутри таблицы получает размер таблицы.", + "The step of the size ladder the view's controls take, handed to its table, its page row and its selection band: 1, or the dense 1/2 of an admin.": "Размер кнопок и полей; его же получают таблица, строка страниц и полоса выбора: `1` или плотный `1/2`, как в админке.", "The surface closed.": "Поверхность закрылась.", "The surface never receives focus. A linked native trigger owns focus and aria-describedby.": "Поверхность никогда не получает фокус. Фокусом и aria-describedby владеет связанный нативный триггер.", "The surface opened.": "Поверхность открылась.", "The table's accessible name. Read it from the props context and never from the element: `aria-label` is reflected by the platform, so element.ariaLabel returns null with no attribute set and shadows what the component resolves. Whether an English default belongs in a family whose other fourteen text inputs default to Russian is the owner's open question about the Framework's default language.": "Доступное имя таблицы. Читайте его из контекста props, а не из элемента: `aria-label` отражается платформой, поэтому element.ariaLabel возвращает null без заданного атрибута и перекрывает значение, которое вычисляет компонент.", - "The text to copy.": "Текст для копирования.", + "The text to copy.": "Текст, который копируется.", "The title is a heading at heading-level; nothing-found and error are announced politely (role=status), the others are not; the icon is decorative; the actions are ordinary buttons in the tab order.": "Заголовок — настоящий заголовок уровня heading-level; nothing-found и error объявляются вежливо (role=status), остальные — нет; значок декоративный; действия — обычные кнопки в порядке Tab.", "The title's outline level; its look follows the size.": "Уровень заголовка в структуре страницы; его вид зависит от размера.", "The toggle is the primary Tab stop. Arrow keys open and move through available options; Home and End move within the list; Enter or Space selects; Escape closes and restores the toggle; Tab closes and continues native traversal. The searchbox keeps native text-editing Home and End behavior.": "Переключатель — основная остановка Tab. Клавиши со стрелками открывают список и перемещают по доступным вариантам; Home и End перемещают в пределах списка; Enter или Space выбирают; Escape закрывает список и возвращает фокус на переключатель; Tab закрывает список и продолжает нативный обход. Поле поиска сохраняет нативное поведение Home и End при редактировании текста.", "The toolbar actions as declared, copied.": "Действия панели инструментов в объявленном виде, копия.", "The tree has one treeitem per node; arrows move in document order and between parent and child, Enter opens the toolbar, Escape returns or clears. Space starts a keyboard move, arrows choose a place, Enter drops, Escape cancels. Selection and moves are announced.": "У дерева по одному treeitem на узел; стрелки перемещают в порядке документа и между родителем и потомком, Enter открывает панель инструментов, Escape возвращает или сбрасывает. Space начинает перемещение с клавиатуры, стрелки выбирают место, Enter отпускает, Escape отменяет. Выбор и перемещения озвучиваются.", "The trigger is a button with aria-haspopup=menu; the panel's rows are menuitemradio, the current one checked. Arrows, Home and End move between rows, Enter chooses, F2 renames, Delete asks to remove, Escape closes the form and then the panel, returning focus to the trigger.": "Кнопка открытия — с aria-haspopup=menu; строки панели — menuitemradio, текущая отмечена. Стрелки, Home и End ходят по строкам, Enter выбирает, F2 переименовывает, Delete спрашивает об удалении, Escape закрывает форму, а затем панель и возвращает фокус на кнопку.", - "The user activated a sortable header. Direction cycles asc, desc, null (unsorted). Intent only: the table marks the header but does not reorder rows; the host reorders or reloads.": "Пользователь активировал сортируемый заголовок. Направление циклически меняется: asc, desc, null (без сортировки). Только намерение: таблица отмечает заголовок, но не переупорядочивает строки; переупорядочивает или перезагружает их хост.", - "The user applied a different saved template on the Templates tab. Intent only: the host loads that saved view.": "Пользователь применил другой сохранённый шаблон на вкладке «Шаблоны». Только намерение: хост загружает это сохранённое представление.", - "The user chose one of the view's own actions from the toolbar menu. Intent only, and cancelable: the component follows an item's same-site href unless the host takes the navigation over with preventDefault.": "Пользователь выбрал одно из собственных действий представления в меню панели инструментов. Только намерение, событие можно отменить: компонент переходит по href пункта на том же сайте, если хост не перехватит переход через preventDefault.", - "The user deleted saved templates on the Templates tab and pressed Apply. Intent only: the host removes the saved view. One event per deleted template.": "Пользователь удалил сохранённые шаблоны на вкладке «Шаблоны» и нажал «Применить». Только намерение: хост удаляет сохранённое представление. Одно событие на каждый удалённый шаблон.", - "The user pressed the create button (item null) or chose an item from its menu (item id). Intent only: the host opens its create form.": "Пользователь нажал кнопку создания (item равен null) или выбрал пункт из её меню (id пункта). Только намерение: хост открывает свою форму создания.", + "The user activated a sortable header. Direction cycles asc, desc, null (unsorted). Intent only: the table marks the header but does not reorder rows; the host reorders or reloads.": "Пользователь активировал сортируемый заголовок. Направление циклически меняется: asc, desc, null (без сортировки). Только намерение: таблица отмечает заголовок, но не переупорядочивает строки; переупорядочивает или перезагружает их приложение.", + "The user applied a different saved template on the Templates tab. Intent only: the host loads that saved view.": "Пользователь применил другой сохранённый шаблон на вкладке «Шаблоны». Только намерение: приложение загружает это сохранённое представление.", + "The user chose one of the view's own actions from the toolbar menu. Intent only, and cancelable: the component follows an item's same-site href unless the host takes the navigation over with preventDefault.": "Пользователь выбрал одно из собственных действий представления в меню панели инструментов. Только намерение, событие можно отменить: компонент переходит по href пункта на том же сайте, если приложение не перехватит переход через preventDefault.", + "The user deleted saved templates on the Templates tab and pressed Apply. Intent only: the host removes the saved view. One event per deleted template.": "Пользователь удалил сохранённые шаблоны на вкладке «Шаблоны» и нажал «Применить». Только намерение: приложение удаляет сохранённое представление. Одно событие на каждый удалённый шаблон.", + "The user pressed the create button (item null) or chose an item from its menu (item id). Intent only: the host opens its create form.": "Пользователь нажал кнопку создания (item равен null) или выбрал пункт из её меню (id пункта). Только намерение: приложение открывает свою форму создания.", "The value changed while typing; the native event bubbles from the inner input, which is its target.": "Значение изменилось при вводе; нативное событие всплывает от внутреннего поля ввода, которое является его целью.", - "The value changed while typing; the native event bubbles from the inner input, which is its target. It carries no detail.": "Значение изменилось во время ввода; нативное событие всплывает от внутреннего input, который является его целью. detail не передаётся.", - "The value changed while typing; the native event bubbles from the inner textarea, which is its target.": "Значение изменилось при вводе; нативное событие всплывает от внутреннего textarea, который является его целью.", + "The value changed while typing; the native event bubbles from the inner input, which is its target. It carries no detail.": "Значение меняется по мере ввода; `detail` нет.", + "The value changed while typing; the native event bubbles from the inner textarea, which is its target.": "Значение меняется по мере ввода.", "The value was committed; the native event bubbles from the inner input, which is its target.": "Значение зафиксировано; нативное событие всплывает от внутреннего поля ввода, которое является его целью.", - "The value was committed; the native event bubbles from the inner input, which is its target. It carries no detail.": "Значение зафиксировано; нативное событие всплывает от внутреннего input, который является его целью. detail не передаётся.", - "The value was committed; the native event bubbles from the inner textarea, which is its target.": "Значение зафиксировано; нативное событие всплывает от внутреннего textarea, который является его целью.", + "The value was committed; the native event bubbles from the inner input, which is its target. It carries no detail.": "Значение принято — человек ушёл из поля; `detail` нет.", + "The value was committed; the native event bubbles from the inner textarea, which is its target.": "Значение принято — человек ушёл из поля.", "The value was copied.": "Значение скопировано.", "The value was not copied; on denied the text was selected for Ctrl+C.": "Значение не скопировано; при denied текст выделен для Ctrl+C.", - "The view's size: its text, field labels, titles and controls. 1/2 matches a table at 1/2.": "Размер представления: текст, подписи полей, заголовки и элементы управления. 1/2 совпадает с таблицей размера 1/2.", + "The view's size: its text, field labels, titles and controls. 1/2 matches a table at 1/2.": "Размер: текст, подписи полей, заголовки и кнопки. `1/2` совпадает с таблицей размера `1/2`.", "The widest width, a CSS length.": "Наибольшая ширина — длина CSS.", "The width changed: while dragging (move), after a drag or a key (end), or back to the stylesheet's width (reset).": "Ширина изменилась: во время перетаскивания (move), после перетаскивания или нажатия клавиши (end) или вернулась к ширине из стилей (reset).", "The window rendered again after its first render. Bubbles and is composed; detail.modal is the emitting sf-modal.": "Окно отрисовано повторно после первой отрисовки. Всплывает и с composed: true; detail.modal — sf-modal, отправивший событие.", "The window rendered for the first time. Bubbles and is composed; detail.modal is the emitting sf-modal.": "Окно отрисовано впервые. Всплывает и с composed: true; detail.modal — sf-modal, отправивший событие.", "The window's address was copied, or the browser refused the clipboard.": "Адрес окна скопирован, или браузер отказал в доступе к буферу обмена.", - "The words on the control that makes a new named view from the arrangement on screen. Unset, the component answers in the page language.": "Текст элемента управления, который создаёт новое именованное представление из расположения на экране. Если не задан, компонент использует язык страницы.", + "The words on the control that makes a new named view from the arrangement on screen. Unset, the component answers in the page language.": "Подпись кнопки, которая сохраняет текущую расстановку как новый вид. Пусто — на языке страницы.", "The words on the control that returns to the inherited colour. Unset, it follows the page's language.": "Текст элемента управления, который возвращает унаследованный цвет. Если не задан, используется язык страницы.", "The words on the swatch. Unset, the component answers in the page's language (\"Choose a colour\" in English).": "Слова на образце цвета. Без атрибута компонент берёт текст на языке страницы (по-английски — «Choose a colour»).", "The words on the swatch. Unset, the component answers in the page's language; the default stated here is what it answers on an English page.": "Текст на образце цвета. Если не задан, компонент использует язык страницы; указанное здесь значение по умолчанию — то, что выводится на английской странице.", "The year shown when the panel opens; defaults to the chosen date's year, else the current one.": "Год, показываемый при открытии панели; по умолчанию — год выбранной даты, иначе текущий.", - "The «…» menu in the head was opened, with the items the component offers for the view. A host adds its own through the menu slot.": "Открыто меню «…» в шапке с пунктами, которые компонент предлагает для представления. Хост добавляет свои пункты через слот menu.", + "The «…» menu in the head was opened, with the items the component offers for the view. A host adds its own through the menu slot.": "Открыто меню «…» в шапке с пунктами, которые компонент предлагает для представления. Приложение добавляет свои пункты через слот menu.", "Toggle Smart Component from SIMAI Framework.": "Смарт-компонент Toggle из SIMAI Framework.", "Toggle an enabled checkbox tag and emit its new active state.": "Переключает включённый тег-флажок и отправляет его новое активное состояние.", "Toggle size token.": "Токен размера кнопки-переключателя.", @@ -951,54 +951,54 @@ "Tree owns roving focus; expansion, focus and selection are independent.": "Дерево управляет перемещаемым фокусом (roving focus); раскрытие, фокус и выбор независимы.", "Unrenders and removes the portal root the window was projected into, if any.": "Снимает отрисовку и удаляет корень портала, в который проецировалось окно, если он есть.", "Use roving tabindex and an inset focus-visible indicator that does not cover adjacent segments.": "Используйте перемещаемый tabindex (roving tabindex) и внутренний индикатор focus-visible, который не перекрывает соседние сегменты.", - "Use the filled glyph axis for the standard icon variant.": "Использует ось filled шрифта иконок для стандартного варианта иконки.", + "Use the filled glyph axis for the standard icon variant.": "Залитая иконка вместо контурной.", "Visible and accessible label of the page-size selector.": "Видимая и доступная подпись выбора размера страницы.", "Visible and accessible label of the page-size selector. Empty: the text of the page's language (\"Per page:\" in English).": "Видимая и доступная подпись выбора размера страницы. Пусто — текст на языке страницы (по-английски «Per page:»).", - "Visible button text when no text slot is provided.": "Видимый текст кнопки, если слот text не передан.", - "Visible filename and default native download name.": "Видимое имя файла и нативное имя для скачивания по умолчанию.", + "Visible button text when no text slot is provided.": "Текст кнопки, например `Сохранить`.", + "Visible filename and default native download name.": "Имя файла на кнопке и под этим же именем файл сохраняется.", "Visible label before page controls.": "Видимая подпись перед элементами управления страницами.", "Visible label before page controls. Empty: the text of the page's language (\"Pages:\" in English).": "Видимая подпись перед элементами страниц. Пусто — текст на языке страницы (по-английски «Pages:»).", "Visible label for the selected item count.": "Видимая подпись для количества выбранных элементов.", "Visible label for the selected item count. Empty: the text of the page's language (\"Selected:\" in English).": "Видимая подпись числа выбранных записей. Пусто — текст на языке страницы (по-английски «Selected:»).", "Visible label for the total item count.": "Видимая подпись для общего количества элементов.", "Visible label for the total item count. Empty: the text of the page's language (\"Total:\" in English).": "Видимая подпись общего числа записей. Пусто — текст на языке страницы (по-английски «Total:»).", - "Visible label of the compatible last-page action.": "Видимая подпись совместимого действия перехода на последнюю страницу.", - "Visible label of the compatible last-page action. Empty: the text of the page's language (\"Last\" in English).": "Видимая подпись действия «последняя страница» для совместимости. Пусто — текст на языке страницы (по-английски «Last»).", + "Visible label of the compatible last-page action.": "Подпись действия «последняя страница».", + "Visible label of the compatible last-page action. Empty: the text of the page's language (\"Last\" in English).": "Подпись действия «последняя страница». Пусто — текст на языке страницы (по-английски «Last»).", "Visible label of the one optional action.": "Видимая подпись единственного необязательного действия.", "Visible label of the primary optional action.": "Видимая подпись основного необязательного действия.", "Visible label of the secondary optional action.": "Видимая подпись вторичного необязательного действия.", "Visible tag label.": "Видимая подпись тега.", "Visual appearance, read from the neutral alpha ramp and separate from type: surface keeps a faint fill and a boundary, ghost keeps nothing until it is hovered. Only the neutral types take it, because a status tag carries its meaning in its colour.": "Внешний вид на основе нейтральной шкалы прозрачности, независимый от типа: surface сохраняет лёгкую заливку и границу, ghost не имеет ничего до наведения. Применяется только к нейтральным типам, потому что тег статуса передаёт смысл цветом.", - "What a conflict reads as when the host sends no message of its own.": "Текст конфликта, когда хост не передаёт своё сообщение.", + "What a conflict reads as when the host sends no message of its own.": "Текст конфликта, когда приложение не передаёт своё сообщение.", "What a list, a panel or a page says when it has nothing to show: no data, nothing found, no access or an error, with an icon, a real heading, a sentence and actions.": "Что говорит список, панель или страница, когда показать нечего: нет данных, ничего не найдено, нет доступа или ошибка — со значком, настоящим заголовком, пояснением и действиями.", - "What a person asked of the host, announced for every intent of simai.admin-navigation-port as the menu raises it. The host answers through the port, not through this event.": "Что пользователь запросил у хоста: событие приходит для каждого намерения порта simai.admin-navigation-port, когда меню его поднимает. Хост отвечает через порт, а не через это событие.", + "What a person asked of the host, announced for every intent of simai.admin-navigation-port as the menu raises it. The host answers through the port, not through this event.": "Что пользователь запросил у приложения: событие приходит для каждого намерения порта simai.admin-navigation-port, когда меню его поднимает. Приложение отвечает через порт, а не через это событие.", "What a profile is called here («Профиль», «Вид»); the page language's «Profile» when empty.": "Как здесь называется профиль («Профиль», «Вид»); без значения — «Профиль» на языке страницы.", "What a view is called the moment it is made, before the person types over it. A view called «New view» among four real ones is one nobody can tell from the others, which is why the name opens for typing straight away.": "Название представления в момент создания, пока пользователь его не заменил. Представление «Новое представление» среди четырёх настоящих невозможно отличить от остальных, поэтому имя сразу открывается для ввода.", "What an empty value reads as. Defaults to the word for the page's language; the attribute overrides it.": "Как читается пустое значение. По умолчанию — слово на языке страницы; атрибут его переопределяет.", - "What an empty value reads as. The host translates it, as every caption in the Framework is the host's.": "Текст для пустого значения. Перевод выполняет хост, как и для всех подписей во Framework.", + "What an empty value reads as. The host translates it, as every caption in the Framework is the host's.": "Текст для пустого значения. Перевод выполняет приложение, как и для всех подписей во Framework.", "What is read in place of a value while nothing is chosen. Unset, it follows the page's language.": "Текст, который выводится вместо значения, пока ничего не выбрано. Если не задан, используется язык страницы.", - "What kind of object this is, in the host's own vocabulary. Passed back to the host and never interpreted here.": "Тип объекта в словаре самого хоста. Передаётся обратно хосту и здесь не интерпретируется.", + "What kind of object this is, in the host's own vocabulary. Passed back to the host and never interpreted here.": "Тип объекта в терминах вашего приложения; компонент его не разбирает и только передаёт обратно.", "What marks a value the record has not decided, inherited from a package or a theme. A person seeing it knows that changing the source changes this.": "Отметка значения, которое запись не задала и которое унаследовано от пакета или темы. Увидев её, пользователь понимает, что изменение источника изменит и это значение.", "What shape the placeholder takes: a line of text, a circle, a square or a rounded block.": "Форма заглушки: строка текста, круг, квадрат или скруглённый блок.", - "What the alert reports, in the shared status vocabulary. The words this component used before — clear and danger — are still accepted and mean neutral and error.": "О чём сообщает уведомление, в общем словаре статусов. Также принимаются значения clear и danger; они означают neutral и error.", - "What the badge reports, in the shared status vocabulary. The word this component used before, danger, is still accepted and means error.": "О чём сообщает бейдж, в общем словаре статусов. Также принимается значение danger; оно означает error.", - "What the collection is called, shown on its own line above the record name. The port carries a collection key; the name a person reads belongs to the host and arrives here.": "Название коллекции, показанное отдельной строкой над названием записи. Порт передаёт ключ коллекции; читаемое название принадлежит хосту и приходит сюда.", - "What the control is about, in the shared status vocabulary. The only one a control paints today is `error`, the destructive one: a control that deletes, discards or cannot be undone.": "Назначение элемента управления в общем словаре статусов. Элемент управления окрашивает только `error` — деструктивный статус: элемент, который удаляет, отбрасывает или выполняет необратимое действие.", - "What the copy control is called while it shows its tick. Copying leaves no trace a person can see, so the control says it happened for as long as the Framework’s clipboard does, then goes back.": "Название элемента управления копированием, пока на нём отображается галочка. Копирование не оставляет видимого следа, поэтому элемент сообщает о нём столько, сколько это делает буфер обмена Framework, а затем возвращается в исходное состояние.", - "What the host offers an empty search field: a recent list, standing until it sets another.": "Что хост предлагает пустому полю поиска: список недавнего, который действует, пока хост не задаст другой.", - "What the icon button is: an ordinary icon action or a close control.": "Тип кнопки-иконки: обычное действие с иконкой или элемент закрытия.", + "What the alert reports, in the shared status vocabulary. The words this component used before — clear and danger — are still accepted and mean neutral and error.": "Цвет по смыслу: `neutral`, `info`, `success`, `warning` или `error`. `clear` и `danger` тоже принимаются и значат `neutral` и `error`.", + "What the badge reports, in the shared status vocabulary. The word this component used before, danger, is still accepted and means error.": "Цвет по смыслу, например `success` или `error`. `danger` тоже принимается и значит `error`.", + "What the collection is called, shown on its own line above the record name. The port carries a collection key; the name a person reads belongs to the host and arrives here.": "Название коллекции, показанное отдельной строкой над названием записи. Порт передаёт ключ коллекции; читаемое название принадлежит приложению и приходит сюда.", + "What the control is about, in the shared status vocabulary. The only one a control paints today is `error`, the destructive one: a control that deletes, discards or cannot be undone.": "`error` — кнопка в цвете ошибки: для удаления и других действий, которые нельзя отменить.", + "What the copy control is called while it shows its tick. Copying leaves no trace a person can see, so the control says it happened for as long as the Framework’s clipboard does, then goes back.": "Название кнопки копирования, пока на ней галочка, например «Скопировано». Потом кнопка возвращается к обычному виду.", + "What the host offers an empty search field: a recent list, standing until it sets another.": "Что приложение предлагает пустому полю поиска: список недавнего, который действует, пока приложение не задаст другой.", + "What the icon button is: an ordinary icon action or a close control.": "Назначение кнопки: `icon` — обычное действие, `close` — закрыть.", "What the list item carries: plain text, an icon, a checkbox, an avatar or a colour.": "Содержимое элемента списка: простой текст, иконка, флажок, аватар или цвет.", - "What the message reports, in the shared status vocabulary. The words this component used before — default and primary — are still accepted and mean neutral and info.": "О чём сообщает сообщение, в общем словаре статусов. Также принимаются значения default и primary; они означают neutral и info.", + "What the message reports, in the shared status vocabulary. The words this component used before — default and primary — are still accepted and mean neutral and info.": "Цвет по смыслу, например `success` или `error`. `default` и `primary` тоже принимаются и значат `neutral` и `info`.", "What the person has typed into one field's picker.": "Текст, введённый пользователем в элемент выбора одного поля.", "What the preview shows: an icon, the image itself, or whichever suits the file.": "Что показывает превью: иконку, само изображение или то, что подходит файлу.", - "What the progress reports, in the shared status vocabulary. The word this component used before, primary, is still accepted and means neutral.": "О чём сообщает индикатор прогресса, в общем словаре статусов. Также принимается значение primary; оно означает neutral.", + "What the progress reports, in the shared status vocabulary. The word this component used before, primary, is still accepted and means neutral.": "Цвет по смыслу, например `success` или `error`. `primary` тоже принимается и значит `neutral`.", "What the spinner is: an arc or a row of dots.": "Вид спиннера: дуга или ряд точек.", "What the surface is placed to do. view: show the object and offer no change, footer, delete or arranging whatever the person may do. auto: show it and offer what this person may do (record.edit, the lifecycle acts, the writable layers). edit: every group open at once, one record.save. create: an empty object of the collection read with record.load mode create, every field open, one record.create.": "Для чего поставлена поверхность. view: показать объект без правки, подвала, удаления и расстановки, что бы человеку ни было разрешено. auto: показать и предложить то, что этому человеку можно (record.edit, действия жизненного цикла, слои, доступные для записи). edit: все группы открыты сразу, одно record.save. create: пустой объект коллекции, прочитанный через record.load в режиме create, все поля открыты, одно record.create.", "What the surface is to a reader: dialog, menu, listbox or group. Written on sf-popover; the surface gets the role and the trigger aria-haspopup.": "Чем поверхность является для читателя: dialog, menu, listbox или group. Задаётся на sf-popover; поверхность получает role, а триггер — aria-haspopup.", "What the surface is. The role reaches the surface it draws into, so a menu of commands keeps that component's arrow keys and roving focus.": "Чем является поверхность. Роль передаётся поверхности, в которую она рисует, поэтому меню команд сохраняет стрелки и перемещаемый фокус этого компонента.", "What the tabs do when they do not fit: scroll (the row scrolls), wrap (rows wrap), or more (the tabs that do not fit go into a trailing «Ещё (n)» menu; the active one always stays).": "Что делают вкладки, когда не помещаются: scroll — ряд прокручивается, wrap — переносятся строки, more — не поместившиеся уходят в меню «Ещё (n)» в конце; активная всегда остаётся на месте.", - "What the tag carries: a checkbox, an icon, a colour, an avatar, or nothing but its label. The compatibility input quantity is still accepted and means default.": "Содержимое тега: флажок, иконка, цвет, аватар или только подпись. Значение совместимости quantity также принимается и означает default.", - "What the tag reports, in the shared status vocabulary. Leave it empty for a tag that reports nothing.": "О чём сообщает тег, в общем словаре статусов. Оставьте пустым для тега, который ни о чём не сообщает.", + "What the tag carries: a checkbox, an icon, a colour, an avatar, or nothing but its label. The compatibility input quantity is still accepted and means default.": "Содержимое тега: флажок, иконка, цвет, аватар или только подпись. Значение `quantity` тоже принимается и означает `default`.", + "What the tag reports, in the shared status vocabulary. Leave it empty for a tag that reports nothing.": "Цвет по смыслу, например `success` или `error`. Пусто — обычный тег.", "What the toggle carries: nothing, an icon, or a short label.": "Содержимое переключателя: ничего, иконка или короткая подпись.", "What the tree item is: a folder or a file.": "Тип элемента дерева: папка или файл.", "Where a row's action buttons are drawn: in the row under the pointer, with the focus or current (hover, the default), or in every row (always).": "Где видны кнопки действий строки: в строке под указателем, в фокусе или текущей (hover, по умолчанию) или во всех строках (always).", @@ -1006,46 +1006,46 @@ "Where the sections are read: as a list beside the groups, which suits a settings screen with many of them, or as a row of tabs above them, which suits a record with a few. The sections are the same either way.": "Как отображаются разделы: списком рядом с группами — для экрана настроек с большим числом разделов, или рядом вкладок над ними — для записи с несколькими разделами. Сами разделы одинаковы в обоих вариантах.", "Whether a chosen colour can be returned to the inherited one.": "Можно ли вернуть выбранный цвет к унаследованному.", "Whether a further page exists. It is what moves forward and Show more when no total was sent.": "Существует ли следующая страница. Определяет переход вперёд и «Показать ещё», когда общее количество не передано.", - "Whether the host can count on request. Without it the view offers nothing and asks for nothing.": "Может ли хост подсчитать количество по запросу. Без этого представление ничего не предлагает и ничего не запрашивает.", - "Whether the number of records is known. A host that does not count every answer sets it false, and the view offers the number instead of showing it.": "Известно ли количество записей. Хост, который не считает каждый ответ, задаёт false, и представление предлагает подсчитать количество вместо того, чтобы показывать его.", + "Whether the host can count on request. Without it the view offers nothing and asks for nothing.": "Может ли приложение подсчитать количество по запросу. Без этого представление ничего не предлагает и ничего не запрашивает.", + "Whether the number of records is known. A host that does not count every answer sets it false, and the view offers the number instead of showing it.": "Известно ли количество записей. Приложение, которое не считает каждый ответ, задаёт false, и представление предлагает подсчитать количество вместо того, чтобы показывать его.", "Whether the panel is open.": "Открыта ли панель.", - "Whether the rows are a tree: some row carries __tree, written by the data view from the host's levels.": "Являются ли строки деревом: у какой-то строки есть __tree, которое представление данных пишет по уровням хоста.", + "Whether the rows are a tree: some row carries __tree, written by the data view from the host's levels.": "Являются ли строки деревом: у какой-то строки есть __tree, которое представление данных пишет по уровням приложения.", "Whether the surface is shown. Reflected, so a consumer can read it and set it.": "Показана ли поверхность. Отражается в атрибуте, поэтому потребитель может читать и задавать его.", "Whether the table scrolls within itself or lets the page scroll. Declared as a string with two values; the manifest previously said boolean true, which was wrong in both the type and the default.": "Прокручивается ли таблица внутри себя или прокручивается страница. Объявлено как строка с двумя значениями.", - "Whether this record is one of the favourites of the person. The star reports a press and redraws when the host sets this back: whether a record is a favourite belongs to the host to store.": "Входит ли запись в избранное пользователя. Звезда сообщает о нажатии и перерисовывается, когда хост устанавливает это значение обратно: хранить признак избранного — задача хоста.", + "Whether this record is one of the favourites of the person. The star reports a press and redraws when the host sets this back: whether a record is a favourite belongs to the host to store.": "Входит ли запись в избранное пользователя. Звезда сообщает о нажатии и перерисовывается, когда приложение устанавливает это значение обратно: хранить признак избранного — задача приложения.", "Which chrome this list renders, as a space-separated list. `toolbar` and `pagination` are this element own parts; `select` and `settings` are the table two chrome columns, named here because they are furniture of the same kind -- a checkbox column exists to feed a bulk band and a gear column exists to reach column settings, and an embedded list has neither. Empty renders none of them, for a list inside something that already carries a heading. Named explicitly rather than inferred from the toolbar, so a consumer who wants a selection in an embedded list can ask for it alone. `status` is not in the list and cannot be switched off: a list that could not say a load failed would look empty when it is broken.": "Какие элементы оформления отображает список, через пробел. `toolbar` и `pagination` — собственные части этого элемента; `select` и `settings` — два служебных столбца таблицы, они указаны здесь, потому что относятся к той же категории: столбец флажков нужен для панели групповых действий, столбец с шестерёнкой — для доступа к настройкам столбцов, а во встроенном списке нет ни того, ни другого. Пустое значение не отображает ничего из этого — для списка внутри блока, у которого уже есть заголовок. Значения задаются явно, а не выводятся из панели инструментов, чтобы потребитель мог запросить во встроенном списке только выделение. `status` не входит в список и не отключается: список, который не может сообщить об ошибке загрузки, выглядел бы пустым при сбое.", "Which colour family the control takes. What the control is about is the status axis; a status set there wins over this.": "Цветовое семейство элемента управления. Назначение элемента задаёт ось статуса; заданный там статус имеет приоритет.", - "Which composite this list is embedded in, sent with the host-port request so a host knows which exchange it is answering. Names the composite rather than the element, so a list embedded somewhere else later needs no new value.": "Составной компонент, в который встроен этот список; передаётся с запросом к порту хоста, чтобы хост знал, на какой обмен отвечает. Указывает составной компонент, а не элемент, поэтому списку, встроенному в другое место, не нужно новое значение.", + "Which composite this list is embedded in, sent with the host-port request so a host knows which exchange it is answering. Names the composite rather than the element, so a list embedded somewhere else later needs no new value.": "Составной компонент, в который встроен этот список; передаётся с запросом к порту приложения, чтобы приложение знало, на какой обмен отвечает. Указывает составной компонент, а не элемент, поэтому списку, встроенному в другое место, не нужно новое значение.", "Which corner of the trigger the surface hangs from.": "От какого угла триггера отображается поверхность.", - "Which filter fields the filter is showing, in the host's field order.": "Какие поля фильтра отображаются, в порядке полей хоста.", + "Which filter fields the filter is showing, in the host's field order.": "Какие поля фильтра отображаются, в порядке полей приложения.", "Which grid the panel opens on: days (empty), month or year.": "На какой сетке открывается панель: дни (пусто), month или year.", "Which object to read. Changing it re-reads through the port; the component keeps nothing from the previous one.": "Какой объект читать. При изменении значения данные перечитываются через порт; от предыдущего объекта компонент ничего не сохраняет.", - "Which semantic colour the badge takes. A status word given here still works and reaches the status axis.": "Какой смысловой цвет берёт бейдж. Слово статуса здесь тоже работает и попадает на ось status.", + "Which semantic colour the badge takes. A status word given here still works and reaches the status axis.": "Цвет бейджа, например `primary`. Слово статуса, например `error`, здесь тоже работает.", "Which stored settings this table uses. Empty means the element's own id, and then its instance id, so each table on a page keeps its own. A real default here would make every table share one key and overwrite the others.": "Какие сохранённые настройки использует таблица. Пустое значение означает id элемента, а при его отсутствии — id экземпляра, поэтому каждая таблица на странице хранит свои настройки. Реальное значение по умолчанию заставило бы все таблицы использовать один ключ и перезаписывать друг друга.", "Which template draws it.": "Шаблон, которым рисуется элемент.", "Which template draws the view.": "Шаблон, которым рисуется представление.", - "Why removing is not offered for the last shared view: a scope with none has nothing for a person who has made none of their own. Shown on the control that is not offered rather than as a refusal after the press.": "Почему удаление не предлагается для последнего общего представления: область без представлений ничего не даёт пользователю, у которого нет своих. Показывается на недоступном элементе управления, а не как отказ после нажатия.", - "Why the host refused the last act, shown in the panel.": "Почему хост отказал в последнем действии; показывается в панели.", + "Why removing is not offered for the last shared view: a scope with none has nothing for a person who has made none of their own. Shown on the control that is not offered rather than as a refusal after the press.": "Почему нельзя удалить последний общий вид: без него человеку без своих видов не на что опереться. Показывается на недоступной кнопке.", + "Why the host refused the last act, shown in the panel.": "Почему приложение отказало в последнем действии; показывается в панели.", "Workspace side panel that keeps the page usable: docked column or modeless panel. Modal side panels belong to sf-modal; the modal Drawer mode is deprecated.": "Боковая панель рабочей области, при которой страница остаётся доступной: закреплённая колонка или немодальная панель. Модальные боковые панели относятся к sf-modal; модальный режим Drawer устарел.", "Write a column-settings layer with its revision.": "Записывает слой настроек столбцов с его ревизией.", - "Write one record in place: that row is rewritten and nothing is asked of the host. A write answered with records alone takes this path by itself.": "Записывает одну запись на месте: строка перезаписывается, и у хоста ничего не запрашивается. Запись, на которую получен ответ только с записями, проходит этот путь сама.", - "Writes each key as a host attribute (camelCase to kebab-case): arrays as JSON, true as an empty attribute, false/null/undefined remove it. Returns the element.": "Записывает каждый ключ как атрибут хост-элемента (camelCase в kebab-case): массивы — как JSON, true — как пустой атрибут, false/null/undefined удаляют его. Возвращает элемент.", + "Write one record in place: that row is rewritten and nothing is asked of the host. A write answered with records alone takes this path by itself.": "Записывает одну запись на месте: строка перезаписывается, и у приложения ничего не запрашивается. Запись, на которую получен ответ только с записями, проходит этот путь сама.", + "Writes each key as a host attribute (camelCase to kebab-case): arrays as JSON, true as an empty attribute, false/null/undefined remove it. Returns the element.": "Записывает каждый ключ как атрибут тега (camelCase в kebab-case): массивы — как JSON, true — как пустой атрибут, false/null/undefined удаляют его. Возвращает тег.", "Writes each key as its kebab-case attribute: false, null, undefined or an empty string removes it, true sets it empty, anything else is stringified.": "Записывает каждый ключ как атрибут в kebab-case: false, null, undefined или пустая строка удаляет его, true устанавливает пустым, всё остальное приводится к строке.", "Writes each key as its kebab-case attribute: false, null, undefined or an empty string removes the attribute, true sets it empty, anything else is stringified.": "Записывает каждый ключ как атрибут в kebab-case: false, null, undefined или пустая строка удаляет атрибут, true устанавливает его пустым, всё остальное приводится к строке.", "Writes each key as its kebab-case attribute: false, null, undefined or empty removes it, true sets it empty, anything else is stringified.": "Записывает каждый ключ как атрибут в kebab-case: false, null, undefined или пустое значение удаляет его, true устанавливает пустым, всё остальное приводится к строке.", - "Writes each key as its kebab-case attribute; an array (items) is serialised as label::disabled entries joined by |. false, null, undefined or empty removes the attribute, true sets it empty.": "Записывает каждый ключ как атрибут в kebab-case; массив (items) сериализуется как записи label::disabled, соединённые через |. false, null, undefined или пустое значение удаляет атрибут, true устанавливает его пустым.", - "Writes each key as its kebab-case attribute; an array (items) is serialised as label::flags entries joined by |. false, null, undefined or empty removes the attribute, true sets it empty.": "Записывает каждый ключ как атрибут в kebab-case; массив (items) сериализуется как записи label::flags, соединённые через |. false, null, undefined или пустое значение удаляет атрибут, true устанавливает его пустым.", + "Writes each key as its kebab-case attribute; an array (items) is serialised as label::disabled entries joined by |. false, null, undefined or empty removes the attribute, true sets it empty.": "Записывает каждый ключ как атрибут в kebab-case; массив (items) сериализуется как записи label:disabled, соединённые через |. false, null, undefined или пустое значение удаляет атрибут, true устанавливает его пустым.", + "Writes each key as its kebab-case attribute; an array (items) is serialised as label::flags entries joined by |. false, null, undefined or empty removes the attribute, true sets it empty.": "Записывает каждый ключ как атрибут в kebab-case; массив (items) сериализуется как записи label:flags, соединённые через |. false, null, undefined или пустое значение удаляет атрибут, true устанавливает его пустым.", "aria-label": "aria-label", - "aria-label or aria-labelledby on the host reaches each handle; with two handles lower-label and upper-label name each one. Each handle is a tab stop with a visible focus ring. Arrows move by step (mirrored in RTL), Home and End go to the handle's bounds; keyboard=false turns the keys off.": "aria-label или aria-labelledby на хост-элементе передаётся каждой ручке; при двух ручках lower-label и upper-label называют каждую. Каждая ручка — остановка Tab с видимым кольцом фокуса. Стрелки сдвигают на step (зеркально в RTL), Home и End переводят к границам ручки; keyboard=false отключает клавиши.", - "auto: nothing-found and error are a polite status, the others say nothing; alert: an error the person caused; off: the host announces it.": "auto — nothing-found и error объявляются вежливо, остальные молчат; alert — ошибка, вызванная действием человека; off — объявляет хост.", + "aria-label or aria-labelledby on the host reaches each handle; with two handles lower-label and upper-label name each one. Each handle is a tab stop with a visible focus ring. Arrows move by step (mirrored in RTL), Home and End go to the handle's bounds; keyboard=false turns the keys off.": "aria-label или aria-labelledby на теге передаётся каждой ручке; при двух ручках lower-label и upper-label называют каждую. Каждая ручка — остановка Tab с видимым кольцом фокуса. Стрелки сдвигают на step (зеркально в RTL), Home и End переводят к границам ручки; keyboard=false отключает клавиши.", + "auto: nothing-found and error are a polite status, the others say nothing; alert: an error the person caused; off: the host announces it.": "auto — nothing-found и error объявляются вежливо, остальные молчат; alert — ошибка, вызванная действием человека; off — объявляет приложение.", "banner content; the heading is an h1": "содержимое баннера (`banner`); заголовок — `h1`", "button": "кнопка (`button`)", "button with listbox popup": "кнопка (`button`) со всплывающим списком (`listbox`)", - "card is the reference as its own box: frame, fill and padding. plain is the link alone, taking the width of its text, for a reference inside something that is already a box -- a record’s field, a table cell -- where a second frame reads as a control the value is not.": "card — ссылка в собственном блоке: рамка, заливка и отступы. plain — только ссылка шириной по тексту, для ссылки внутри того, что уже является блоком, — поля записи, ячейки таблицы, — где вторая рамка выглядит как элемент управления, которым значение не является.", + "card is the reference as its own box: frame, fill and padding. plain is the link alone, taking the width of its text, for a reference inside something that is already a box -- a record’s field, a table cell -- where a second frame reads as a control the value is not.": "Вид ссылки: `card` — карточка с рамкой, заливкой и отступами; `plain` — просто ссылка по ширине текста, для ячейки таблицы или поля записи, где вторая рамка лишняя.", "dialog": "диалог (`dialog`)", "dialog in popup mode; group in inline mode": "`dialog` в режиме popup; `group` в режиме inline", - "goTo(current + 1); stops at the last slide. Returns the element.": "goTo(current + 1); останавливается на последнем слайде. Возвращает элемент.", - "goTo(current - 1); stops at the first slide. Returns the element.": "goTo(current - 1); останавливается на первом слайде. Возвращает элемент.", + "goTo(current + 1); stops at the last slide. Returns the element.": "goTo(current + 1); останавливается на последнем слайде. Возвращает тег.", + "goTo(current - 1); stops at the first slide. Returns the element.": "goTo(current - 1); останавливается на первом слайде. Возвращает тег.", "group": "группа (`group`)", "heading": "заголовок (`heading`)", "id of the canvas element that holds SF.Composition.render output": "id элемента canvas, в котором находится вывод SF.Composition.render", @@ -1076,15 +1076,15 @@ "tooltip when linked by the ordinary data-tooltip controller": "`tooltip`, если связан обычным контроллером data-tooltip", "tree": "дерево (`tree`)", "treeitem": "элемент дерева (`treeitem`)", - "{placeholder, empty, remote}: a search field above the rows (set as a property). Local by default; with remote: true the menu raises sf-context-menu-search {query} and shows the entries the host sets. A submenu entry passes it with `search`.": "{placeholder, empty, remote}: поле поиска над строками (задаётся свойством). По умолчанию поиск локальный; с remote: true меню поднимает sf-context-menu-search {query} и показывает пункты, которые задаёт хост. Пункт подменю передаёт его через `search`.", + "{placeholder, empty, remote}: a search field above the rows (set as a property). Local by default; with remote: true the menu raises sf-context-menu-search {query} and shows the entries the host sets. A submenu entry passes it with `search`.": "{placeholder, empty, remote}: поле поиска над строками (задаётся свойством). По умолчанию поиск локальный; с remote: true меню поднимает sf-context-menu-search {query} и показывает пункты, которые задаёт приложение. Пункт подменю передаёт его через `search`.", "{placeholder, empty}: a search field above the rows (set as a property). A submenu entry passes it with `search`.": "{placeholder, empty}: поле поиска над строками (задаётся свойством). Пункт с подменю передаёт его через `search`.", "Column widths the person dragged, per column key, as \"px\". Kept also without a preferences-key when the table has remember-widths (then under the table's own key).": "Ширины колонок, которые человек задал перетаскиванием, по ключу колонки, в виде `\"px\"`. Хранятся и без `preferences-key`, если у таблицы есть `remember-widths`, — тогда под собственным ключом таблицы.", "The page size the person chose. Written and read by the data view, so the first query asks for it.": "Размер страницы, который выбрал человек. Пишет и читает представление данных, поэтому первый запрос уже просит этот размер.", - "The person's column arrangement, per column key: visible (boolean), width (CSS length), order (number), pinned (start or end). Merged onto the host's column settings, so a column it does not name keeps the host's.": "Раскладка колонок человека по ключу колонки: `visible` (логическое), `width` (длина CSS), `order` (число), `pinned` (`start` или `end`). Накладывается на настройки колонок хоста, поэтому колонка, которой в ней нет, остаётся как у хоста.", + "The person's column arrangement, per column key: visible (boolean), width (CSS length), order (number), pinned (start or end). Merged onto the host's column settings, so a column it does not name keeps the host's.": "Раскладка колонок человека по ключу колонки: `visible` (логическое), `width` (длина CSS), `order` (число), `pinned` (`start` или `end`). Накладывается на настройки колонок приложения, поэтому колонка, которой в ней нет, остаётся как у приложения.", "The sort the person chose: [{key, direction}]. Written and read by the data view the table is in, so the first query comes in this order.": "Сортировка, которую выбрал человек: `[{key, direction}]`. Пишет и читает представление данных, в котором стоит таблица, поэтому первый запрос уже приходит в этом порядке.", "The table's look: density (compact, normal, spacious), stripes, lines, singleLine, stickyHead. Under sf-table/* it is the person's look for every table, read under this table's own.": "Вид таблицы: `density` (`compact`, `normal`, `spacious`), `stripes`, `lines`, `singleLine`, `stickyHead`. Под `sf-table/*` это вид всех таблиц человека; он читается под видом этой таблицы.", "The width the person dragged to, in CSS pixels, clamped to min and max when it is applied.": "Ширина, до которой человек дотянул панель, в пикселях CSS; при применении ограничивается `min` и `max`.", - "Write a column-settings layer, personal or shared, against its revision: settings.save_personal or settings.save_shared. The base revision is the one given, else the layer's, else the port target's. After a conflict the view takes the current_revision (and the layer's columns) the answer carries beside answer, as simai.dataview-port 1.12.0 states; it still reads data.current_revision and data.column_settings from a host that followed 1.10.0's words, and re-reads the list when the conflict names no revision.": "Записывает слой настроек колонок, личный или общий, против его ревизии: settings.save_personal или settings.save_shared. Базовая ревизия — переданная, иначе ревизия слоя, иначе ревизия цели порта. После конфликта представление берёт current_revision (и колонки слоя), которые ответ несёт рядом с answer, как требует simai.dataview-port 1.12.0; data.current_revision и data.column_settings оно тоже читает — для хоста, который следовал словам версии 1.10.0, — а если конфликт не называет ревизию, перечитывает список.", + "Write a column-settings layer, personal or shared, against its revision: settings.save_personal or settings.save_shared. The base revision is the one given, else the layer's, else the port target's. After a conflict the view takes the current_revision (and the layer's columns) the answer carries beside answer, as simai.dataview-port 1.12.0 states; it still reads data.current_revision and data.column_settings from a host that followed 1.10.0's words, and re-reads the list when the conflict names no revision.": "Записывает слой настроек колонок, личный или общий, против его ревизии: `settings.save_personal` или `settings.save_shared`. Базовая ревизия — переданная, иначе ревизия слоя, иначе ревизия цели порта. После конфликта представление берёт `current_revision` (и колонки слоя), которые ответ несёт рядом с `answer`, как требует `simai.dataview-port` 1.12.0; `data.current_revision` и `data.column_settings` оно тоже читает, а если конфликт не называет ревизию, перечитывает список.", "A CSS selector for the element the theme is applied to; empty is the document element. A target other than the root carries a theme class (theme-light or theme-dark): the semantic tokens are declared there, so without one only the 128 primitives change on it.": "Селектор CSS элемента, к которому применяется тема; пусто — корневой элемент документа. Цель, отличная от корня, несёт класс темы (`theme-light` или `theme-dark`): на нём объявлены семантические токены, и без него на цели сменятся только 128 примитивов.", "A theme from one colour: a person chooses the main colour (or the generator's hue and chroma) and it makes the Framework's eight tonal palettes, the 128 primitives every semantic token reads, with a preview, events carrying the CSS, and an optional live application to the page.": "Тема из одного цвета: человек выбирает основной цвет (или тон и насыщенность генератора), а компонент строит восемь тональных палитр Framework — 128 примитивов, из которых читаются все семантические токены, — с предпросмотром, событиями с CSS и применением к странице по желанию.", "Apply the theme to `target` as inline custom properties, live on every change, undoing the previous application first and on removal. Without it the page is not changed.": "Применять тему к `target` встроенными переменными, сразу при каждом изменении; предыдущее применение снимается перед следующим и при удалении элемента. Без атрибута страница не меняется.", @@ -1149,14 +1149,14 @@ "The Tree component's script API, loaded with the component (component/tree); its methods are the component's documentation.": "Скриптовый API компонента Tree; приходит вместе с компонентом (`component/tree`), его методы описаны на странице компонента.", "The Verification component's script API, loaded with the component (component/verification); its methods are the component's documentation.": "Скриптовый API компонента Verification; приходит вместе с компонентом (`component/verification`), его методы описаны на странице компонента.", "The base class of every Smart element; a product's own Smart components extend it.": "Базовый класс каждого смарт-элемента; собственные смарт-компоненты продукта наследуют его.", - "The composition helpers: fragment descriptors, the page host's outputs, registries of component types and ports, and field kinds.": "Помощники композиции: описатели фрагментов, выходы хоста страницы, реестры типов компонентов и портов, виды полей.", + "The composition helpers: fragment descriptors, the page host's outputs, registries of component types and ports, and field kinds.": "Помощники композиции: описатели фрагментов, выходы страницы, реестры типов компонентов и портов, виды полей.", "The field renderer set: a value in a cell, in a record's view, in its edit control and in a filter.": "Набор отрисовщиков полей: значение в ячейке, в просмотре записи, в элементе правки и в фильтре.", "The language that applies to a node: the nearest lang.": "Язык, который действует для узла: ближайший `lang`.", "The load rules by name: what a class, a tag or a component needs. A product package adds its own rules here (its rule.js).": "Правила загрузки по имени: что нужно классу, тегу или компоненту. Пакет продукта добавляет сюда свои правила (свой `rule.js`).", "The notification area: its settings, closing a message and the messages shown.": "Область уведомлений: её настройки, закрытие сообщения и показанные сообщения.", "The older name of SF.whenDefined, kept.": "Прежнее имя `SF.whenDefined`, сохранено.", "The page's language and the words registered for components.": "Язык страницы и слова, зарегистрированные для компонентов.", - "The person's view preferences: kept in this browser and, when the host keeps them, for the person (simai.interaction-rules).": "Персональный вид человека: хранится в этом браузере, а если хост его хранит, — и у человека (`simai.interaction-rules`).", + "The person's view preferences: kept in this browser and, when the host keeps them, for the person (simai.interaction-rules).": "Персональный вид человека: хранится в этом браузере, а если приложение его хранит, — и у человека (`simai.interaction-rules`).", "The runtime loader: loads what a page uses, components and utilities, on demand, and the theme. Once a theme is set (setTheme, changeTheme), SF.Loader.theme and SF.Loader.themePreference read it.": "Загрузчик: по требованию загружает то, что использует страница, — компоненты и утилиты — и тему. Когда тема задана (`setTheme`, `changeTheme`), её читают `SF.Loader.theme` и `SF.Loader.themePreference`.", "A CSS selector for the element the theme is applied to; empty is the document element. A target other than the root carries a theme class (theme-light or theme-dark): the semantic tokens are declared there, so without one only the primitives change on it.": "Селектор CSS элемента, к которому применяется тема; пусто — корневой элемент документа. Цель, отличная от корня, несёт класс темы (`theme-light` или `theme-dark`): на нём объявлены семантические токены, и без него на цели сменятся только примитивы.", "A theme from one colour: a person chooses the main colour (or the generator's hue and chroma) and it makes the Framework's eight tonal palettes, the 128 primitives every semantic token reads and the 98 translucent steps core derives from them, with a preview, events carrying the CSS, and an optional live application to the page.": "Тема из одного цвета: человек выбирает основной цвет (или тон и насыщенность генератора), а компонент строит восемь тональных палитр Framework — 128 примитивов, из которых читаются все семантические токены, и 98 полупрозрачных ступеней, которые ядро выводит из них, — с предпросмотром, событиями с CSS и применением к странице по желанию.", @@ -1172,9 +1172,9 @@ "Arrow keys": "стрелки", "ArrowLeft and ArrowRight resize a focused resizable column": "`ArrowLeft` и `ArrowRight` меняют ширину колонки в фокусе, если её можно менять", "Enter on links": "`Enter` на ссылках", - "Enter or Space on the ellipsis button": "`Enter` или `Space` на кнопке с многоточием", - "Enter or Space toggles the star": "`Enter` или `Space` ставит и снимает звезду", - "Escape dismisses a linked open tooltip without moving trigger focus": "`Escape` закрывает открытую связанную подсказку, не уводя фокус с элемента", + "Enter or Space on the ellipsis button": "`Enter` или `Пробел` на кнопке «…»", + "Enter or Space toggles the star": "`Enter` или `Пробел` ставят и снимают звезду", + "Escape dismisses a linked open tooltip without moving trigger focus": "`Esc` закрывает открытую подсказку, фокус остаётся на месте", "Tab reaches the star and the actions": "`Tab` доходит до звезды и действий", "native multiline text editing": "обычная правка многострочного текста", "native text editing": "обычная правка текста", @@ -1184,30 +1184,30 @@ "A whole theme from one colour: the eight tonal palettes as the 128 --sf-- primitives and the 98 translucent steps core defines on them (--sf----alfa-, listed in THEME_ALPHA), 226 variables in all.": "Тема из одного цвета: восемь тональных палитр — 128 примитивов `--sf-<палитра>-<тон>` и 98 полупрозрачных ступеней, которые ядро определяет на них (`--sf-<палитра>-<тон>--alfa-`, список — в `THEME_ALPHA`), всего 226 переменных.", "The sf-system modal's script API, loaded with component/sf-system; its methods are that component's documentation. It is not the Modal component's class: a page that loads only component/modal (sf-modal, the modal examples) has no SF.Modal, and finds the class at SF.Loader.ComponentRegistry.Modal (new Modal({id, param})), as the documentation's examples do.": "Скриптовый API модального окна `sf-system`; приходит с `component/sf-system`, его методы описаны на странице этого компонента. Это не класс компонента Modal: на странице, которая загружает только `component/modal` (`sf-modal`, примеры окна), `SF.Modal` нет, а класс лежит в `SF.Loader.ComponentRegistry.Modal` (`new Modal({id, param})`), как в примерах документации.", "": "", - "Color scheme for the selected button, and for the selected plate in the segmented appearance.": "Цветовая схема выбранной кнопки, а в сегментированном виде — плашки выбранного сегмента.", - "How the group looks. default joins outlined buttons into one perimeter; segmented draws a sunken track with borderless segments and a plate under the selected one. The selection model, keyboard and events are the same.": "Вид группы. `default` собирает контурные кнопки в общий контур; `segmented` рисует утопленную дорожку с сегментами без рамок и плашкой под выбранным. Выбор, клавиатура и события одинаковы в обоих видах.", - "In the segmented appearance, the track fills its container and the segments share the width equally.": "В сегментированном виде дорожка занимает ширину контейнера, а сегменты делят её поровну.", - "Record that a field was changed; undefined takes the change back, so a save carries nothing for that field. Called by the edit template; a host does not need it.": "Фиксирует изменение поля; `undefined` отменяет изменение, и сохранение ничего не передаёт для этого поля. Вызывается шаблоном редактирования; хосту он не нужен.", + "Color scheme for the selected button, and for the selected plate in the segmented appearance.": "Цвет выбранной кнопки, например `primary`; в виде `segmented` — цвет плашки выбранного сегмента.", + "How the group looks. default joins outlined buttons into one perimeter; segmented draws a sunken track with borderless segments and a plate under the selected one. The selection model, keyboard and events are the same.": "Вид группы: `default` — кнопки с рамкой, слитые в одну полосу; `segmented` — утопленная дорожка, выбранный сегмент выделен плашкой. Выбор, клавиши и события одинаковы.", + "In the segmented appearance, the track fills its container and the segments share the width equally.": "В виде `segmented` группа растягивается на всю ширину, и сегменты делят её поровну.", + "Record that a field was changed; undefined takes the change back, so a save carries nothing for that field. Called by the edit template; a host does not need it.": "Фиксирует изменение поля; `undefined` отменяет изменение, и сохранение ничего не передаёт для этого поля. Вызывается шаблоном редактирования; приложению он не нужен.", "Selectable items with stable value, label, icon, count, icon-only and disabled fields.": "Выбираемые элементы со стабильными полями value, label, icon, count, icon-only и disabled.", - "The selected segment's plate in the segmented appearance: the scheme's fill, or a raised neutral surface with its shadow.": "Плашка выбранного сегмента в сегментированном виде: заливка цвета схемы или приподнятая нейтральная поверхность с тенью.", - "A ready theme switch: the group draws its own three icon-only items (system, light, dark) named in the page language, selects SF.Loader's theme preference and follows sf-theme-change, and a choice calls SF.Loader.setTheme. items is ignored.": "Готовый переключатель темы: группа сама рисует три пункта только с иконками (`system`, `light`, `dark`) с подписями на языке страницы, выбирает предпочтение темы `SF.Loader` и следует за `sf-theme-change`; выбор вызывает `SF.Loader.setTheme`. `items` не используется.", - "Corner radius, as on sf-button: empty is the UI radius. In the segmented appearance the plate, a button-sized segment, takes the radius a button of that value has, and the track is it plus the padding (rounded: both pills).": "Скругление углов, как у `sf-button`: пустое значение — обычный радиус элементов. В сегментированном виде плашка — сегмент размером с кнопку — получает радиус кнопки с тем же значением, а дорожка — его же плюс отступ (при `rounded` обе — «таблетки»).", - "Native form field name: the group submits its value with its form, a form reset restores the initial value, and a disabled group is left out.": "Имя поля формы: группа отправляет своё значение вместе с формой, сброс формы возвращает начальное значение, а отключённая группа в отправку не входит.", + "The selected segment's plate in the segmented appearance: the scheme's fill, or a raised neutral surface with its shadow.": "Как выделен выбранный сегмент в виде `segmented`: заливкой цвета `scheme` или светлой приподнятой плашкой с тенью.", + "A ready theme switch: the group draws its own three icon-only items (system, light, dark) named in the page language, selects SF.Loader's theme preference and follows sf-theme-change, and a choice calls SF.Loader.setTheme. items is ignored.": "Готовый переключатель темы: три кнопки-иконки — системная, светлая и тёмная тема, с подписями на языке страницы. Показывает текущую тему и меняет её. `items` при этом не нужен.", + "Corner radius, as on sf-button: empty is the UI radius. In the segmented appearance the plate, a button-sized segment, takes the radius a button of that value has, and the track is it plus the padding (rounded: both pills).": "Скругление углов, как у кнопки: пусто — обычное, `square` — прямые, `rounded` — полностью круглые. В виде `segmented` сегмент и дорожка скругляются согласованно.", + "Native form field name: the group submits its value with its form, a form reset restores the initial value, and a disabled group is left out.": "Имя поля формы: выбранное значение уходит с формой, сброс формы возвращает начальное, недоступная группа не отправляется.", "Selectable items with stable value, label, icon, count, icon-only, disabled and loading fields.": "Выбираемые элементы со стабильными полями value, label, icon, count, icon-only, disabled и loading.", "Loading state: the spinner at the icon's size in place of the start icon (else the end icon); without an icon it lies over the label, which keeps its place, so the width does not change. Sets aria-busy and disables the native button.": "Состояние загрузки: spinner размером с иконку на месте начальной иконки (если её нет — конечной); без иконки он лежит поверх подписи, которая остаётся на месте, поэтому ширина не меняется. Ставит aria-busy и отключает нативную кнопку.", "Loading state: the spinner in place of the icon, at the icon's size. Sets aria-busy and disables the native button.": "Состояние загрузки: spinner на месте иконки, размером с неё. Ставит aria-busy и отключает нативную кнопку.", - "The size ladder: at each step the spinner is the icon of an sf-button of the same size (diameter and stroke), so it can stand in for that icon.": "Ступень лестницы размеров: на каждой ступени spinner равен иконке sf-button того же размера (диаметр и толщина линии), поэтому встаёт на место этой иконки.", + "The size ladder: at each step the spinner is the icon of an sf-button of the same size (diameter and stroke), so it can stand in for that icon.": "Размер: на каждой ступени индикатор совпадает с иконкой кнопки того же размера и может встать на её место.", "A count on the avatar (simai/ui-source#12): a whole number above 0 shows, 0 or empty hides the badge. Above badge-cap it reads «+»; the exact number joins the avatar's accessible name («Анна Белова, 3 непрочитанных») and the badge's tooltip. On an anchor of size 1/3 or 1/2 a count is drawn as a dot.": "Счётчик на аватаре: целое число больше 0 показывается, 0 или пусто прячет бейдж. Больше badge-cap он показывается как порог с плюсом, например «99+»; точное число входит в доступное имя аватара («Анна Белова, 3 непрочитанных») и во всплывающую подсказку бейджа. На якоре размера 1/3 или 1/2 счётчик рисуется точкой.", "A dot on the avatar, a count with no number: something new. Shown when badge-count is not set; with a count, the count is drawn as a dot. Its text equivalent («есть новое» / «new» by default, badge-label to change it) joins the accessible name.": "Точка на аватаре — отметка без числа: есть новое. Показывается, когда badge-count не задан; при заданном счётчике он рисуется точкой. Её текстовый эквивалент («есть новое» / «new» по умолчанию, другой задаёт badge-label) входит в доступное имя.", - "A dot on the icon button, a count with no number: something new. Shown when badge-count is not set; with a count, the count is drawn as a dot. Its text equivalent («есть новое» / «new» by default, badge-label to change it) joins the accessible name.": "Точка на кнопке-иконке — отметка без числа: есть новое. Показывается, когда badge-count не задан; при заданном счётчике он рисуется точкой. Её текстовый эквивалент («есть новое» / «new» по умолчанию, другой задаёт badge-label) входит в доступное имя.", + "A dot on the icon button, a count with no number: something new. Shown when badge-count is not set; with a count, the count is drawn as a dot. Its text equivalent («есть новое» / «new» by default, badge-label to change it) joins the accessible name.": "Точка на кнопке — «есть новое», без числа. Если задан `badge-count`, точкой рисуется он. Экранный диктор говорит «есть новое»; другие слова задаёт `badge-label`.", "A dot on the icon, a count with no number: something new. Shown when badge-count is not set; with a count, the count is drawn as a dot. Its text equivalent («есть новое» / «new» by default, badge-label to change it) joins the accessible name.": "Точка на иконке — отметка без числа: есть новое. Показывается, когда badge-count не задан; при заданном счётчике он рисуется точкой. Её текстовый эквивалент («есть новое» / «new» по умолчанию, другой задаёт badge-label) входит в доступное имя.", - "The counts and dots of component/badges kept from markup (simai/ui-source#12): a .sf-badge with data-count or data-dot is drawn, capped, hidden at 0 and named by the runtime as soon as it is in the page. init(scope) takes a subtree at once, update(badge) one badge, state({count, dot, cap, label}, node) answers what a badge shows and says without touching the page.": "Счётчики и точки компонента component/badges, которые ведутся по разметке: .sf-badge с data-count или data-dot рисуется, ограничивается порогом, прячется при 0 и получает имя, как только оказывается на странице. init(scope) обрабатывает поддерево сразу, update(badge) — один бейдж, state({count, dot, cap, label}, node) отвечает, что бейдж покажет и скажет, не трогая страницу.", - "The largest count drawn as a number; a larger one reads «+».": "Наибольший счёт, который рисуется числом; больший показывается как порог с плюсом, например «99+».", - "The words the badge adds to the accessible name and its tooltip, in place of the page language's default: for a dot the whole text equivalent; for a count the phrase in plural forms separated by «|» (one|few|many in Russian, one|other in English) with {count} where the number goes.": "Слова, которые бейдж добавляет к доступному имени и к всплывающей подсказке вместо слов по умолчанию для языка страницы: для точки — весь текстовый эквивалент; для счёта — фраза в формах множественного числа через «|» (one|few|many для русского, one|other для английского) с {count} на месте числа.", + "The counts and dots of component/badges kept from markup (simai/ui-source#12): a .sf-badge with data-count or data-dot is drawn, capped, hidden at 0 and named by the runtime as soon as it is in the page. init(scope) takes a subtree at once, update(badge) one badge, state({count, dot, cap, label}, node) answers what a badge shows and says without touching the page.": "Счётчики и точки компонента component/badges, которые ведутся по разметке:.sf-badge с data-count или data-dot рисуется, ограничивается порогом, прячется при 0 и получает имя, как только оказывается на странице. init(scope) обрабатывает поддерево сразу, update(badge) — один бейдж, state({count, dot, cap, label}, node) отвечает, что бейдж покажет и скажет, не трогая страницу.", + "The largest count drawn as a number; a larger one reads «+».": "Наибольшее число на значке; большее показывается с плюсом, например «99+».", + "The words the badge adds to the accessible name and its tooltip, in place of the page language's default: for a dot the whole text equivalent; for a count the phrase in plural forms separated by «|» (one|few|many in Russian, one|other in English) with {count} where the number goes.": "Слова значка для экранного диктора и подсказки. Для точки — фраза целиком, например «есть новое». Для числа — формы через «|» с `{count}` на месте числа, например `{count} новое|{count} новых|{count} новых`.", "A count on the icon (simai/ui-source#12): a whole number above 0 shows, 0 or empty hides the badge. Above badge-cap it reads «+»; the exact number joins the icon's accessible name («Почта, 3 непрочитанных») and the badge's tooltip. On an anchor of size 1/3 or 1/2 a count is drawn as a dot.": "Счётчик на иконке: целое число больше 0 показывается, 0 или пусто прячет бейдж. Больше badge-cap он показывается как порог с плюсом, например «99+»; точное число входит в доступное имя иконки («Почта, 3 непрочитанных») и во всплывающую подсказку бейджа. На якоре размера 1/3 или 1/2 счётчик рисуется точкой.", - "A count on the icon button (simai/ui-source#12): a whole number above 0 shows, 0 or empty hides the badge. Above badge-cap it reads «+»; the exact number joins the icon button's accessible name («Уведомления, 5 непрочитанных») and the badge's tooltip. On an anchor of size 1/3 or 1/2 a count is drawn as a dot.": "Счётчик на кнопке-иконке: целое число больше 0 показывается, 0 или пусто прячет бейдж. Больше badge-cap он показывается как порог с плюсом, например «99+»; точное число входит в доступное имя кнопки («Уведомления, 5 непрочитанных») и во всплывающую подсказку бейджа. На якоре размера 1/3 или 1/2 счётчик рисуется точкой.", + "A count on the icon button (simai/ui-source#12): a whole number above 0 shows, 0 or empty hides the badge. Above badge-cap it reads «+»; the exact number joins the icon button's accessible name («Уведомления, 5 непрочитанных») and the badge's tooltip. On an anchor of size 1/3 or 1/2 a count is drawn as a dot.": "Число на значке у кнопки, например `5`; `0` или пусто — значка нет. Больше `badge-cap` показывается с плюсом, например «99+». Точное число слышит экранный диктор и видно в подсказке. На кнопках размера `1/3` и `1/2` вместо числа точка.", "Accessible name for a date field rendered without a visible label.": "Доступное имя поля даты без видимой подписи.", - "Accessible name for a field rendered without a visible label; it lands on the native input.": "Доступное имя поля без видимой подписи; оно попадает на нативное поле ввода.", + "Accessible name for a field rendered without a visible label; it lands on the native input.": "Название поля для экранного диктора, если видимой подписи нет.", "Accessible name for a switch rendered without a visible label, as in a record panel that draws the label itself.": "Доступное имя переключателя без видимой подписи — например, в панели записи, которая сама выводит подпись.", "Accessible name for a telephone field rendered without a visible label.": "Доступное имя поля телефона без видимой подписи.", "Keeps the field read-only: the date is chosen on the grid only. A single date can be typed by default; a range is always chosen on the grid.": "Делает поле только для чтения: дату выбирают только в календаре. Одну дату по умолчанию можно ввести с клавиатуры; диапазон всегда выбирают в календаре.", @@ -1215,7 +1215,7 @@ "The field follows its text between min-rows and max-rows and scrolls inside past max-rows. CSS field-sizing where supported, a script fallback elsewhere; rows is then ignored.": "Поле растёт по тексту между min-rows и max-rows, а после max-rows прокручивается внутри. Где поддерживается, работает CSS field-sizing, в остальных браузерах — запасной скрипт; rows при этом не учитывается.", "With auto-grow: the fewest rows the field shows. One row is the height of an input of the same size.": "С auto-grow: наименьшее число строк в поле. Одна строка — высота поля ввода того же размера.", "With auto-grow: the most rows before the field scrolls inside. Unset means no cap; a value below min-rows is min-rows.": "С auto-grow: наибольшее число строк, после которого поле прокручивается внутри. Не задано — без предела; значение меньше min-rows считается равным min-rows.", - "Draw the field invalid: the error border and aria-invalid on the native input. Removing it restores the valid field.": "Показать поле недопустимым: рамка ошибки и `aria-invalid` у нативного поля ввода. Без атрибута поле снова выглядит допустимым.", + "Draw the field invalid: the error border and aria-invalid on the native input. Removing it restores the valid field.": "Поле с ошибкой: рамка цвета ошибки, экранный диктор сообщает об ошибке. Без атрибута поле обычное.", "How the date is shown in the field and read when typed, e.g. DD.MM.YYYY: the whole text one date, a four-digit year from 1000 to 9999. The value stays ISO.": "Как дата показывается в поле и читается при вводе, например DD.MM.YYYY: весь текст — одна дата, год из четырёх цифр от 1000 до 9999. Значение остаётся в ISO.", "How the field looks: a bordered box, a filled one, or flush -- no box of its own, inside a composite control that draws the box and the focus.": "Вид поля: блок с рамкой, с заливкой или `flush` — без своего блока, внутри составного элемента, который сам рисует блок и фокус.", "The ISO date (yyyy-mm-dd) chosen; value is read only when date is absent, so date=\"\" is a cleared value.": "Выбранная дата в ISO (yyyy-mm-dd); value читается, только когда date нет, поэтому `date=\"\"` — очищенное значение.", @@ -1231,15 +1231,15 @@ "An outside switch (an element naming the drawer in aria-controls) opens and closes the panel: no close button while that switch is on screen.": "Панель открывает и закрывает внешний переключатель (элемент, который называет панель в aria-controls): пока он на экране, своей кнопки закрытия у панели нет.", "Declarative option descriptor owned by Dropdown, and a general list row: supporting line, interactive rows with roving focus, sf-sortable items and pinned rows.": "Декларативное описание пункта, которым владеет Dropdown, и общая строка списка: вторая строка, интерактивные строки с перемещаемым фокусом, элементы sf-sortable и закреплённые строки.", "Owned by the parent Dropdown composite for options; a standalone preview is not focusable; an interactive or sortable row is a roving Tab stop of its list, with an inset focus ring.": "Для пунктов фокусом владеет родительский Dropdown; отдельный предпросмотр не получает фокус; интерактивная или перемещаемая строка — перемещаемая остановка Tab своего списка, с внутренней рамкой фокуса.", - "Sets a bottom sheet's resting height (auto, half or full) and dispatches drawer:snap when it changes. Returns the element.": "Задаёт высоту нижней панели в покое (auto, half или full) и при её смене отправляет drawer:snap. Возвращает элемент.", + "Sets a bottom sheet's resting height (auto, half or full) and dispatches drawer:snap when it changes. Returns the element.": "Задаёт высоту нижней панели в покое (auto, half или full) и при её смене отправляет drawer:snap. Возвращает тег.", "The row's item id in the surrounding sf-sortable list. The row carries data-sf-sortable-item and a drag handle; the list's keyboard reordering applies.": "Идентификатор строки в окружающем списке sf-sortable. Строка получает data-sf-sortable-item и ручку перетаскивания; действует перестановка с клавиатуры, которую даёт список.", "Where this panel starts from the top (an app bar's height); the --sf-drawer-block-start variable sets it for every panel.": "Отступ начала панели сверху (высота панели приложения); переменная --sf-drawer-block-start задаёт его для всех панелей.", "option when rendered by Dropdown; none in standalone preview and list rows (the list owns the role; aria-current marks a selected row)": "option, когда пункт рисует Dropdown; нет роли в отдельном предпросмотре и в строках списка (роль у списка; выбранную строку отмечает aria-current)", - "Classes on the footer. Its actions stand at the end with --sf-modal-footer-gap (space-1/2) between them; those defaults sit under the utilities, so a utility here still wins.": "Классы подвала. Его действия стоят в конце, между ними --sf-modal-footer-gap (space-1/2); эти значения лежат под утилитами, поэтому утилита здесь всё равно побеждает.", - "From what width of the dock host (or the window, without a host) a docked drawer is a column of the page; narrower, it floats over the page. A length in rem, em or px. Empty: the --sf-drawer-dock-breakpoint variable where the drawer stands, else 48rem.": "С какой ширины области закрепления (или окна, если области нет) закреплённая панель становится колонкой страницы; уже — всплывает над страницей. Длина в rem, em или px. Пусто — переменная --sf-drawer-dock-breakpoint там, где стоит панель, иначе 48rem.", - "Go back to editing from a confirmation the host asked for. Sends nothing and keeps every entry.": "Вернуться к правке из подтверждения, которое запросил хост. Ничего не отправляет и сохраняет все введённые значения.", - "Raise the save the host asked to confirm again, with the digest it issued (port 1.14.0).": "Повторить сохранение, которое хост попросил подтвердить, с выданным им отпечатком (порт 1.14.0).", - "+": "+", + "Classes on the footer. Its actions stand at the end with --sf-modal-footer-gap (space-1/2) between them; those defaults sit under the utilities, so a utility here still wins.": "Классы подвала. Кнопки в подвале стоят в конце с небольшим зазором; ваши классы важнее этих настроек.", + "From what width of the dock host (or the window, without a host) a docked drawer is a column of the page; narrower, it floats over the page. A length in rem, em or px. Empty: the --sf-drawer-dock-breakpoint variable where the drawer stands, else 48rem.": "С какой ширины контейнера закрепления (или окна, если контейнера нет) закреплённая панель становится колонкой страницы; уже — всплывает над страницей. Длина в rem, em или px. Пусто — переменная `--sf-drawer-dock-breakpoint` там, где стоит панель, иначе 48rem.", + "Go back to editing from a confirmation the host asked for. Sends nothing and keeps every entry.": "Вернуться к правке из подтверждения, которое запросило приложение. Ничего не отправляет и сохраняет все введённые значения.", + "Raise the save the host asked to confirm again, with the digest it issued (port 1.14.0).": "Повторить сохранение, которое приложение попросило подтвердить, с выданным им отпечатком (порт 1.14.0).", + "+": "`+`", "A plain-string inline edit was committed with a changed value (framed mode). Cancelable: preventDefault puts the previous text back.": "Правка обычной строки на месте сохранена с изменённым значением (режим фрейма). Событие можно отменить: preventDefault возвращает прежний текст.", "Binds the overlay to a same-origin iframe canvas (framed mode).": "Привязывает слой к холсту во фрейме того же источника (режим фрейма).", "Drag-and-drop list primitive for reordering, moving between lists and copying from a library by mouse, pen, touch and keyboard, with an optional insertion point that opens a searchable inserter; reports intent only.": "Основа списка с перетаскиванием: меняет порядок, переносит между списками и копирует из библиотеки мышью, пером, касанием и с клавиатуры; необязательная точка вставки открывает вставщик с поиском. Компонент только сообщает о намерении.", @@ -1253,7 +1253,7 @@ "Sets the framed canvas's flat node list and an optional describe(node) → {label, badges}.": "Задаёт плоский список узлов холста во фрейме и необязательную функцию describe(node) → {label, badges}.", "Starts plain-string inline editing of an editable node in the frame; returns whether it started.": "Начинает правку обычной строки на месте у редактируемого узла во фрейме; возвращает, началась ли правка.", "The accessible name of the button that returns the field to the inherited value. Unset, it follows the page's language («Reset to inherited», «Сбросить к наследуемому»).": "Доступное имя кнопки, которая возвращает поле к наследуемому значению. Если не задано — на языке страницы («Сбросить к наследуемому», «Reset to inherited»).", - "The accessible name of the button that returns to the inherited colour; `clear-label` still names it. Unset, it follows the page's language («Reset to inherited», «Сбросить к наследуемому»).": "Доступное имя кнопки, которая возвращает к наследуемому цвету; `clear-label` по-прежнему тоже его задаёт. Если не задано — на языке страницы («Сбросить к наследуемому», «Reset to inherited»).", + "The accessible name of the button that returns to the inherited colour; `clear-label` still names it. Unset, it follows the page's language («Reset to inherited», «Сбросить к наследуемому»).": "Доступное имя кнопки, которая возвращает к наследуемому цвету; `clear-label` тоже его задаёт. Если не задано — на языке страницы («Сбросить к наследуемому», «Reset to inherited»).", "The option value (values joined by commas when several may be chosen) the field falls back to while nothing is chosen. Its options' labels are shown as inherited, in the placeholder's ink with an «inherited» marker, never as a choice: the form value stays empty. Once something is chosen, a reset button returns it here. Select mode; a tag-mode field does not draw it.": "Значение варианта (при множественном выборе — значения через запятую), к которому поле возвращается, пока ничего не выбрано. Подписи этих вариантов показаны как наследуемые — цветом подсказки и с меткой «наследуется», никогда как выбор: значение формы остаётся пустым. Когда что-то выбрано, кнопка сброса возвращает сюда. Только в режиме выбора; в режиме тегов не рисуется.", "The person chose a kind in the inserter for a place in the list; the host creates the item at index. Bubbles, is composed and is cancelable: preventDefault() refuses and keeps the inserter open.": "Человек выбрал вид во вставщике для места в списке; приложение создаёт элемент по индексу index. Событие всплывает, проходит границы теневого DOM (composed) и отменяемо: preventDefault() отказывает и оставляет вставщик открытым.", "The person pressed the reset back to the inherited value. Fired before the field is emptied and cancellable: preventDefault keeps the value. When it is not prevented the field empties, says so with its ordinary change, shows the inherited value again and takes focus back.": "Человек нажал сброс к наследуемому значению. Отправляется до очистки поля и отменяемо: preventDefault сохраняет значение. Если не отменено, поле очищается, сообщает об этом обычным change, снова показывает наследуемое значение и забирает фокус.", @@ -1267,27 +1267,27 @@ "id of a same-origin iframe canvas (framed mode, fed by setNodes); used instead of for": "id холста во фрейме того же источника (режим фрейма, данные — через setNodes); используется вместо for", "A