iobroker.alias-workbench 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +58 -98
- package/admin/css/werkbank.css +88 -0
- package/admin/i18n/de.json +766 -1
- package/admin/i18n/en.json +766 -1
- package/admin/i18n/es.json +766 -1
- package/admin/i18n/fr.json +766 -1
- package/admin/i18n/it.json +766 -1
- package/admin/i18n/nl.json +766 -1
- package/admin/i18n/pl.json +766 -1
- package/admin/i18n/pt.json +766 -1
- package/admin/i18n/ru.json +766 -1
- package/admin/i18n/uk.json +766 -1
- package/admin/i18n/zh-cn.json +766 -1
- package/admin/js/ablage.js +118 -0
- package/admin/js/attrappe.js +749 -0
- package/admin/js/baum.js +52 -5
- package/admin/js/detail.js +64 -3
- package/admin/js/entwurf.js +246 -31
- package/admin/js/ergebnis.js +77 -2
- package/admin/js/katalog.js +235 -40
- package/admin/js/mqtt.js +297 -27
- package/admin/js/musternamen.js +70 -26
- package/admin/js/objekte.js +2 -0
- package/admin/js/quellentausch.js +823 -16
- package/admin/js/schreiben.js +3 -2
- package/admin/js/sprache.js +11 -8
- package/admin/js/vorlagen.js +8 -3
- package/admin/js/vorlagenblatt.js +228 -64
- package/admin/js/werte.js +294 -5
- package/admin/js/zielleiste.js +19 -10
- package/admin/js/zuordnung.js +8 -7
- package/admin/js/zustand.js +32 -0
- package/admin/js/zustandsliste.js +9 -2
- package/admin/tab.html +24 -0
- package/admin/vorlagen/hm-dimmer.json +32 -8
- package/admin/vorlagen/hm-fensterkontakt-hm.json +20 -5
- package/admin/vorlagen/hm-fensterkontakt-hmip.json +28 -7
- package/admin/vorlagen/hm-heizgruppe.json +38 -11
- package/admin/vorlagen/hm-heizkoerper.json +42 -12
- package/admin/vorlagen/hm-rollladen.json +28 -7
- package/admin/vorlagen/hm-schaltaktor-lampe.json +24 -6
- package/admin/vorlagen/hm-schaltaktor-mehrfach.json +32 -8
- package/admin/vorlagen/hm-schaltaktor-steckdose.json +24 -6
- package/admin/vorlagen/hm-temperatur-feuchte.json +8 -2
- package/admin/vorlagen/hm-wandthermostat.json +36 -9
- package/admin/vorlagen/messpunkt.json +40 -10
- package/admin/vorlagen/tasmota-lampe.json +48 -12
- package/admin/vorlagen/tasmota-mehrfach.json +40 -10
- package/admin/vorlagen/tasmota-rgb.json +36 -9
- package/admin/vorlagen/tasmota-steckdose.json +56 -14
- package/io-package.json +41 -28
- package/package.json +3 -3
- package/admin/sprachen/de.json +0 -685
- package/admin/sprachen/en.json +0 -685
package/admin/i18n/ru.json
CHANGED
|
@@ -10,5 +10,770 @@
|
|
|
10
10
|
"The Admin setup wizard leaves a bare name such as \"Playroom\" in the icon field, which no longer resolves to a picture and shows as a broken box. With this on, the workbench replaces it. It overwrites a field that is not empty — the dry run names it explicitly.": "Мастер настройки Admin оставляет в поле значка голое имя вроде «Playroom», которое больше не ведёт к изображению и отображается как сломанный прямоугольник. Если это включено, верстак заменяет его. При этом перезаписывается непустое поле — пробный прогон называет это отдельно.",
|
|
11
11
|
"The Alias Workbench has no running process — everything happens in the Admin tab. These settings control how it writes.": "У «Верстака алиасов» нет запущенного процесса — всё происходит во вкладке администратора. Эти настройки определяют, как он записывает.",
|
|
12
12
|
"The workbench reads them at runtime from the Admin's own bundle instead of keeping a copy that would age with every update. If that fails, the selection lists simply show what already exists — no error, just fewer entries.": "Верстак читает их во время выполнения из собственного бандла Admin, вместо того чтобы держать копию, устаревающую с каждым обновлением. Если это не удаётся, списки выбора показывают только то, что уже есть, — не ошибка, просто меньше вариантов.",
|
|
13
|
-
"Where the templates come from": "Откуда берутся шаблоны"
|
|
13
|
+
"Where the templates come from": "Откуда берутся шаблоны",
|
|
14
|
+
"app.connected": "подключенный",
|
|
15
|
+
"app.detector": "детектор типа",
|
|
16
|
+
"app.disconnected": "отключенный",
|
|
17
|
+
"app.objectsCount": "{0} объектов",
|
|
18
|
+
"app.patternsCount": "{0} шаблонов",
|
|
19
|
+
"app.subsCount": "{0} подписок",
|
|
20
|
+
"app.subsCount1": "одна подписка",
|
|
21
|
+
"app.subsHint": "Подписка распространяется на весь ветвь, а не на отдельное значение — один шаблон со звездочкой охватывает все элементы, расположенные ниже него. При смене узла отменяется подписка на все предыдущие; если их число продолжает расти, один из них остается без внимания. В настоящее время просматриваются:",
|
|
22
|
+
"app.templatesCount": "{0} шаблонов",
|
|
23
|
+
"app.title": "Alias Workbench",
|
|
24
|
+
"catalog.loadingText": "Однажды после обновления админ-панели — размер пакета составляет несколько мегабайт. После этого каталог сохраняется и больше не загружается.",
|
|
25
|
+
"catalog.loadingTitle": "Загрузка шаблонов админ-панели",
|
|
26
|
+
"catalog.missing": "Каталог администратора недоступен — доступны только существующие записи",
|
|
27
|
+
"check.allDeliver": "все доставляют",
|
|
28
|
+
"check.allFine": "всё в порядке",
|
|
29
|
+
"check.allOk": "{0} ✓",
|
|
30
|
+
"check.button": "Чеки",
|
|
31
|
+
"check.canSend": "{0}: запись в пути проходит нормально",
|
|
32
|
+
"check.cannotSend": "не удается отправить: {0}",
|
|
33
|
+
"check.checked": "Проверено {0}",
|
|
34
|
+
"check.duplicate": "Нет повторяющихся точек",
|
|
35
|
+
"check.duplicateNone": "каждый указывает в другую сторону",
|
|
36
|
+
"check.duplicateSome": "указывают на одно и то же: {0}",
|
|
37
|
+
"check.feedback": "отзыв поступает сразу же",
|
|
38
|
+
"check.feedbackFast": "Сразу же включается SetOption59",
|
|
39
|
+
"check.feedbackNone": "строк не затронуто — всё прочитано из stat/…",
|
|
40
|
+
"check.feedbackSlow": "задержка: {0}",
|
|
41
|
+
"check.feedbackUnknown": "непроверено: {0}",
|
|
42
|
+
"check.formulaYields": "при вводе формулы получается результат",
|
|
43
|
+
"check.hintCount": "примечания: {0}",
|
|
44
|
+
"check.noPatternFits": "ни один шаблон не подходит",
|
|
45
|
+
"check.noWritePath": "no point пишет",
|
|
46
|
+
"check.notMqtt": "отсутствует путь записи MQTT",
|
|
47
|
+
"check.openCount": "{0} вакансий",
|
|
48
|
+
"check.publish": "опубликовать на cmnd point",
|
|
49
|
+
"check.rolesMakeDevice": "роли составляют устройство",
|
|
50
|
+
"check.sendPointMissing": "Отправить точку данных, которая ещё не создана: {0}",
|
|
51
|
+
"check.sendUnknown": "В объекте не указано, может ли «{0}» публиковать данные — эта тема находится только в `native`. Это нормально для ioBroker.mqtt и sonoff.",
|
|
52
|
+
"check.sourceExists": "источник существует",
|
|
53
|
+
"check.sourceHasValue": "источник имеет значение",
|
|
54
|
+
"check.targetCan": "цель способна выполнить поставленную задачу",
|
|
55
|
+
"check.targetCanFine": "всё в порядке",
|
|
56
|
+
"check.targetNoWrite": "{0}: на целевой объект нельзя записывать",
|
|
57
|
+
"check.targetVoidFormula": "{0}: при выполнении формулы не происходит ничего, целевое значение — {1}",
|
|
58
|
+
"check.title": "Проверки — постоянно выполняются, ничего не затрагивая",
|
|
59
|
+
"del.allOutputs": "Удалить все выходы с значением {0} для этого устройства",
|
|
60
|
+
"del.allOutputsHint": "В противном случае остальные остаются позади, как сироты: {0}",
|
|
61
|
+
"del.alsoFunction": "Функция «{0}», созданная вместе с этим псевдонимом, также удаляется — в противном случае она осталась бы пустой.",
|
|
62
|
+
"del.alsoRoom": "Комната «{0}», созданная вместе с этим псевдонимом, также удаляется — в противном случае она осталась бы пустой.",
|
|
63
|
+
"del.button": "Удалить псевдоним …",
|
|
64
|
+
"del.channelsBelow": "Внимание: ниже этого уровня находятся {0} собственных каналов, которые также будут удалены.",
|
|
65
|
+
"del.count": "будет удалено объектов: {0}",
|
|
66
|
+
"del.done": "Удалено: {0} объектов.",
|
|
67
|
+
"del.hint": "Псевдоним и все данные, расположенные ниже него, будут удалены. Источники останутся неизменными — удаляется только оболочка, а не само устройство. Это действие нельзя отменить.",
|
|
68
|
+
"del.now": "Удалить навсегда",
|
|
69
|
+
"del.objects": "Что исчезает",
|
|
70
|
+
"del.scriptsHead": "В {0}-ти скриптах упоминается этот идентификатор:",
|
|
71
|
+
"del.scriptsHead1": "В одном скрипте упоминается этот идентификатор:",
|
|
72
|
+
"del.scriptsHint": "Поиск проводился только по скриптам адаптера JavaScript в виде простого текста. Просмотры, сцены и настройки других адаптеров в поиск не включались.",
|
|
73
|
+
"del.title": "Удалить псевдоним",
|
|
74
|
+
"detail.aliasEmpty": "При использовании псевдонима это поле остается пустым.",
|
|
75
|
+
"detail.aliasHas": "Псевдоним содержит: ",
|
|
76
|
+
"detail.asDelivered": "в том виде, в каком поставляется",
|
|
77
|
+
"detail.attention": "Внимание",
|
|
78
|
+
"detail.buttonNoRead": "Кнопка без источника чтения — не сопровождает чтение",
|
|
79
|
+
"detail.caption": "Подпись",
|
|
80
|
+
"detail.captionHint": "становится отображаемым именем состояния — отображается в админке, в VIS и везде, где вместо идентификаторов используются имена",
|
|
81
|
+
"detail.converted": "преобразовано с помощью псевдонима",
|
|
82
|
+
"detail.datapoint": "Данные",
|
|
83
|
+
"detail.decimals": "Десятичные дроби",
|
|
84
|
+
"detail.display": "Отображение",
|
|
85
|
+
"detail.elsewhere": "(в других местах)",
|
|
86
|
+
"detail.expects": "ожидается {0}",
|
|
87
|
+
"detail.formula": "Прочитать формулу",
|
|
88
|
+
"detail.formulaBroken": "формула содержит ошибку",
|
|
89
|
+
"detail.formulaHint": "«ON»/«OFF» → булево значение определяется самим псевдонимом, формула не требуется.",
|
|
90
|
+
"detail.formulaPlaceholder": "empty = принять значение без изменений",
|
|
91
|
+
"detail.formulaThrows": "число ошибок в формуле: {0}",
|
|
92
|
+
"detail.formulaTooSlow": "Выполнение этой формулы заняло {0} мс, и теперь она больше не выполняется. При перезагрузке вкладки формула запускается ещё раз.",
|
|
93
|
+
"detail.jsonField": "Поле в JSON",
|
|
94
|
+
"detail.matchesState": "✓ соответствует состоянию",
|
|
95
|
+
"detail.name": "Имя",
|
|
96
|
+
"detail.namePlaceholder": "например, UNREACH",
|
|
97
|
+
"detail.nameTaken": "В другой строке уже есть значение «{0}».",
|
|
98
|
+
"detail.noSource": "— источник неизвестен —",
|
|
99
|
+
"detail.noValue": "значение отсутствует",
|
|
100
|
+
"detail.noWrite": "— не пишите —",
|
|
101
|
+
"detail.notWritable": "не доступен для записи",
|
|
102
|
+
"detail.objectId": "Идентификатор объекта",
|
|
103
|
+
"detail.otherObject": "… введите другой объект",
|
|
104
|
+
"detail.ownFormula": "собственная формула",
|
|
105
|
+
"detail.pickOne": "— пожалуйста, выберите —",
|
|
106
|
+
"detail.rawNothing": "— источник ничего не предоставляет —",
|
|
107
|
+
"detail.rawValue": "Исходное значение",
|
|
108
|
+
"detail.readIsButton": "кнопка",
|
|
109
|
+
"detail.readIsButtonHint": "Кнопка «Роль» с целевым объектом для записи: для псевдонима считывается значение «datapoint: false», и vis, Alexa и Matter отображают её как кнопку. Источник считывания не причиняет вреда — благодаря ему псевдоним фиксирует каждое нажатие, в том числе и на физической кнопке. После нажатия сохраняется последнее значение, как и в источнике.",
|
|
110
|
+
"detail.readOnlySlotWrites": "{0} в шаблоне обозначает «только для чтения» — фраза «записывает в» должна быть заменена на «— не записывать —», иначе записанное значение поступит на устройство.",
|
|
111
|
+
"detail.readsFrom": "считывает из",
|
|
112
|
+
"detail.removePoint": "Удалить этот пункт",
|
|
113
|
+
"detail.role": "Роль",
|
|
114
|
+
"detail.sameAsRead": "— как и в оригинале —",
|
|
115
|
+
"detail.separateHint": "Чтение происходит из другого места, чем запись: отображается то, что возвращает устройство, а не последняя отправленная команда.",
|
|
116
|
+
"detail.slot": "Разместить по схеме",
|
|
117
|
+
"detail.slotHint": "Устанавливает роль, тип, единицу измерения и список значений в соответствии с шаблоном для данного места. Точка данных и название остаются без изменений.",
|
|
118
|
+
"detail.slotNone": "— нигде —",
|
|
119
|
+
"detail.slotNotGiven": "Выбирается значение {0}, но не присваивается — см. раздел «Роль», чтобы узнать, что не соответствует (обычно это тип).",
|
|
120
|
+
"detail.slotRequired": "обязательно",
|
|
121
|
+
"detail.sourceGone": "источник не найден",
|
|
122
|
+
"detail.stateSays": "состояние: {0}",
|
|
123
|
+
"detail.states": "Список значений",
|
|
124
|
+
"detail.statesFromSource": "Извлечь {0} записей из источника",
|
|
125
|
+
"detail.statesHint": "преобразует числа в текст — в этом случае в админке вместо поля для ввода числа отображается выпадающий список, а для некоторых шаблонов это является обязательным условием. Оставьте поле пустым, если список значений не требуется.",
|
|
126
|
+
"detail.statesPlaceholder": "по одному в строке: 0 = закрыто",
|
|
127
|
+
"detail.takeFromAlias": "Извлечь это значение из сохраненного псевдонима",
|
|
128
|
+
"detail.takeOne": "Возьмите это значение из шаблона",
|
|
129
|
+
"detail.targetNoWrite": "Целевая точка имеет значение write: false — её адаптер ничего не передаёт на устройство. ioBroker всё равно сохраняет это значение, но ничего не произойдёт.",
|
|
130
|
+
"detail.targetTypeHint": "Целевая точка имеет тип {0}. Она определяет, что сохраняется из формулы записи: типы «mixed» и «string» принимают текст, а типы «boolean» и «number» преобразуют его обратно.",
|
|
131
|
+
"detail.targetTypeVoid": "Целевое значение равно {0}, и текст не принимается. Формула записи действительно генерирует текст — js-контроллер преобразует его обратно в {0} при записи, поэтому формула не оказывает никакого эффекта. Переключение по-прежнему работает.",
|
|
132
|
+
"detail.tplWants": "В шаблоне требуется: ",
|
|
133
|
+
"detail.tplWantsEmpty": "В шаблоне это поле оставлено пустым.",
|
|
134
|
+
"detail.type": "Тип",
|
|
135
|
+
"detail.typeNumber": "число",
|
|
136
|
+
"detail.unit": "Единица",
|
|
137
|
+
"detail.writeFormula": "Ввести формулу",
|
|
138
|
+
"detail.writeFormulaHint": "преобразует в обратном направлении: то, что устройство должно получить при переключении.",
|
|
139
|
+
"detail.writeFormulaPlaceholder": "например, val ? «ON» : «OFF»",
|
|
140
|
+
"detail.writesTo": "пишет",
|
|
141
|
+
"detail.yields": "доходность",
|
|
142
|
+
"detail.yieldsNothing": "ничего не даёт",
|
|
143
|
+
"diff.addedNoPlace": "дополнительно отмечено — не входит в число «{0}»",
|
|
144
|
+
"diff.addedWithPlace": "дополнительно отмечено — часть «{0}»",
|
|
145
|
+
"diff.againstStored": "по сравнению с тем, что хранится",
|
|
146
|
+
"diff.changes": "Изменения",
|
|
147
|
+
"diff.deselectedNoPlace": "не отмечено — в любом случае не вошло бы в набор «{0}»",
|
|
148
|
+
"diff.deselectedWithPlace": "не отмечено — часть числа {0}",
|
|
149
|
+
"diff.deviations": "Отклонения от предложения",
|
|
150
|
+
"diff.formulaChange": "формула считывания: {0} → {1}",
|
|
151
|
+
"diff.newByHand": "новое, добавлено вручную",
|
|
152
|
+
"diff.noName": "(без названия)",
|
|
153
|
+
"diff.nothingExists": "пока ничего из этого не существует",
|
|
154
|
+
"diff.open": "{0} вакансий",
|
|
155
|
+
"diff.points": "{0} баллов",
|
|
156
|
+
"diff.roleChange": "роль: {0} → {1}",
|
|
157
|
+
"diff.sourceChange": "источник: {0} → {1}",
|
|
158
|
+
"diff.unitChange": "единица: {0} → {1}",
|
|
159
|
+
"diff.wouldBeAdded": "отмечено — будет добавлено при обновлении",
|
|
160
|
+
"diff.wouldBeRemoved": "отмечено — присутствует в псевдониме и будет удалено",
|
|
161
|
+
"enums.addTo": "входит в",
|
|
162
|
+
"enums.alsoFolder": "Сохранить псевдоним также под номером «{0}»?",
|
|
163
|
+
"enums.clear": "удалить задание",
|
|
164
|
+
"enums.function": "Функция",
|
|
165
|
+
"enums.functionHint": "Присваивает псевдоним функции, например «освещение» или «отопление». Также хранится в перечислении, а не в самом объекте.",
|
|
166
|
+
"enums.iconAdded": "будет добавлен значок",
|
|
167
|
+
"enums.iconNew": "Фотографии пока нет — рабочий стол добавит её при написании",
|
|
168
|
+
"enums.iconNewMark": "новый",
|
|
169
|
+
"enums.iconThere": "Изображение сохранено",
|
|
170
|
+
"enums.members": "в нём {0}",
|
|
171
|
+
"enums.newSuffix": "новый",
|
|
172
|
+
"enums.noMatch": "Ничего не найдено по запросу «{0}»",
|
|
173
|
+
"enums.notLoadedField": "Не удалось загрузить комнаты и функции — поэтому информация о комнатах и функциях не будет записана; сам псевдоним всё же создаётся. Рабочая среда самостоятельно повторяет попытку три раза; в противном случае перезагрузите вкладку.",
|
|
174
|
+
"enums.nowEmpty": "после этого будет пустым и будет удален",
|
|
175
|
+
"enums.placeholder": "пусто = отсутствие присваивания",
|
|
176
|
+
"enums.removeFrom": "вынимается",
|
|
177
|
+
"enums.room": "Комната",
|
|
178
|
+
"enums.roomHint": "Присваивает псевдоним комнате. Эта информация хранится не в самом объекте, а в перечислении «enum.rooms» — Alexa, Google и информационные панели группируют данные именно по нему.",
|
|
179
|
+
"enums.suggested": "предложено",
|
|
180
|
+
"enums.unknown": "Перечисления не загружены — room и function остаются без изменений.",
|
|
181
|
+
"enums.unused": "пустой",
|
|
182
|
+
"enums.willCreate": "создать новый",
|
|
183
|
+
"folder.aliasMissing": "отсутствует",
|
|
184
|
+
"folder.aliasThere": "существует",
|
|
185
|
+
"folder.clickHint": "Щелкните по устройству, чтобы приступить к работе с ним. ",
|
|
186
|
+
"folder.clickHintText": "Узел считается устройством, как только для него найден соответствующий шаблон — при отсутствии совпадения поиск не продолжается. Если ни один шаблон не подходит, узел всё равно появляется в списке, как только у него появляются собственные данные.",
|
|
187
|
+
"folder.colAlias": "Псевдоним",
|
|
188
|
+
"folder.colDetected": "обнаружено как",
|
|
189
|
+
"folder.colSource": "Источник",
|
|
190
|
+
"folder.devices": "Устройства",
|
|
191
|
+
"folder.devicesBelow": "{0} устройств ниже · {1} точка данных",
|
|
192
|
+
"folder.found": "Найдено {0}",
|
|
193
|
+
"folder.nothingHere": "Здесь нет ничего, что могло бы стать устройством.",
|
|
194
|
+
"folder.withAlias": "{0} с псевдонимом",
|
|
195
|
+
"folder.withoutTemplate": "{0}, без шаблона",
|
|
196
|
+
"guess.alsoRow": "с рекомендациями: подходит",
|
|
197
|
+
"guess.bar": "Угадано {0}-слот — пожалуйста, проверьте",
|
|
198
|
+
"guess.better": "{0}, возможно, подойдет лучше",
|
|
199
|
+
"guess.betterGoHint": "Переключается на {0} и сразу нажимает «{1}». После этого все назначения отображаются как «угаданные» и их нужно проверять по одному; при этом сохраняется возможность отклонения. На устройстве ничего не меняется — устанавливаются только роли в черновике.",
|
|
200
|
+
"guess.betterHint": "{0} — это {1} заполненных ячейки, {2} — только {3} — оба числа после предложения. Перейдите к этому варианту, затем нажмите «Предложить свободные ячейки»; каждое назначение необходимо проверить.",
|
|
201
|
+
"guess.betterHintNone": "{0} — после предложения будет {1} занятых ячеек; {2} даже в этом случае не помещается. Переключитесь на него, затем нажмите «Предложить свободные ячейки»; каждое назначение необходимо проверить.",
|
|
202
|
+
"guess.button": "Предложить бесплатные слоты",
|
|
203
|
+
"guess.drop": "отклонить",
|
|
204
|
+
"guess.hint": "Заполняет свободные ячейки шаблона оставшимися данными — это лишь предположение, а не достоверная информация. Угадывается по названию, списку значений, единице измерения и типу; каждое значение помечается как «предполагаемое» и может быть удалено по одному.",
|
|
205
|
+
"guess.keep": "сохранить",
|
|
206
|
+
"guess.keepAll": "сохранить всё",
|
|
207
|
+
"guess.locked": "{0}× угаданных, пока не определился — сначала нужно выбрать: оставить (✓) или удалить (✕), а затем создать и сохранить разблокировку.",
|
|
208
|
+
"guess.mark": "догадался",
|
|
209
|
+
"guess.noneFit": "{0} — остается свободным. Ни одна из оставшихся точек данных не подходит — сопоставление осуществляется по имени, списку значений, единице измерения и типу, и ни одна из них не превысила пороговое значение.",
|
|
210
|
+
"guess.noneFull": "Все ячейки шаблона заняты — больше нечего предложить.",
|
|
211
|
+
"guess.noneHand": "{0} строк были определены вручную и остались без изменений: {1}.",
|
|
212
|
+
"guess.noneHandOne": "Значение {0} было определено вручную и оставлено без изменений.",
|
|
213
|
+
"guess.noneUsed": "Значение {0} остается свободным. Каждая оставшаяся точка данных уже используется в качестве источника чтения или записи в заполненной строке.",
|
|
214
|
+
"guess.slotsMore": "ещё {0} и {1}",
|
|
215
|
+
"guess.tplAsk": "Это устройство идентифицируется как «{0}», поэтому его сопоставление уже определено. Предложение заполняет дополнительные поля на основе оставшихся данных — это лишь предположение, а не достоверная информация, и каждое совпадение необходимо проверять. Предназначено для особых случаев, например, когда возможности устройства выходят за рамки шаблона.",
|
|
216
|
+
"guess.tplGo": "Все равно предложите",
|
|
217
|
+
"guess.tplHint": "В шаблоне это устройство уже учтено — предложение, приведенное здесь, предназначено исключительно для особых случаев.",
|
|
218
|
+
"guess.tplTitle": "Предложить бесплатные слоты, несмотря на наличие шаблона?",
|
|
219
|
+
"guess.undo": "Отклонить предложения",
|
|
220
|
+
"help.aliases": "Выберите существующий псевдоним в левой части экрана. Удалите точки, измените роли, источники и формулы — либо переместите, переименуйте или удалите его.",
|
|
221
|
+
"help.aliasesAdd": "Чтобы добавить точки к псевдониму, проще воспользоваться путём «к источнику →» (в правом верхнем углу, рядом с названием псевдонима): там применяется шаблон, и для каждой точки данных устройства предлагается готовая роль — в противном случае пришлось бы вводить каждую вручную.",
|
|
222
|
+
"help.sources": "Выберите устройство или канал слева. Рабочая среда распознает его и предложит готовый псевдоним. Если он уже существует, то будет обновлен.",
|
|
223
|
+
"help.templates": "Выберите шаблон слева. Встроенные шаблоны можно просматривать и копировать, а собственные — редактировать. При предварительном просмотре отображаются устройства, с которыми он совместим.",
|
|
224
|
+
"info.dlgTitle": "Не входит в шаблон «{0}»",
|
|
225
|
+
"info.explain": "работают совершенно нормально и остаются там, где вы их создали. Ничего лишнего не записывается — псевдоним остаётся прежним. Просто они не входят в то, что ioBroker считает значением «{0}»; их роль не соответствует ни одному из его слотов. Это становится важным только тогда, когда вы передаёте псевдоним Alexa, Google Home или пользовательскому интерфейсу устройства: они будут видеть значение «{0}» без этих точек. В VIS, в скриптах и в истории вы используете их как любые другие данные.",
|
|
226
|
+
"info.more": "Что это означает",
|
|
227
|
+
"leave.body": "Есть изменения в версии {0}, которые ещё не были записаны. При переключении они теперь отбрасываются.",
|
|
228
|
+
"leave.discard": "Отменить и переключиться",
|
|
229
|
+
"leave.stay": "Остановитесь здесь",
|
|
230
|
+
"leave.title": "Несохраненные изменения",
|
|
231
|
+
"list.addByHand": "Добавить точку данных вручную",
|
|
232
|
+
"list.aliasDiffers": "отличается от сохраненного псевдонима",
|
|
233
|
+
"list.all": "все",
|
|
234
|
+
"list.buttonOnly": "только для записи",
|
|
235
|
+
"list.byHand": "вручную",
|
|
236
|
+
"list.changed": "изменился",
|
|
237
|
+
"list.colOn": "на",
|
|
238
|
+
"list.colRole": "Роль",
|
|
239
|
+
"list.colState": "Штат",
|
|
240
|
+
"list.colValue": "Значение",
|
|
241
|
+
"list.countOf": "{0} из {1}",
|
|
242
|
+
"list.createAria": "создать {0}",
|
|
243
|
+
"list.nameMissing": "имя отсутствует",
|
|
244
|
+
"list.newPoint": "новый пункт",
|
|
245
|
+
"list.noRole": "— без роли —",
|
|
246
|
+
"list.ofDatapoints": "точки данных",
|
|
247
|
+
"list.onlyPattern": "только то, что соответствует шаблону",
|
|
248
|
+
"list.onlyPatternHint": "Проверяет именно те точки, которые занимают место в выбранном шаблоне — все остальное не отмечается и не создается.",
|
|
249
|
+
"list.onlyWithValue": "только с значением",
|
|
250
|
+
"list.otherSource": "от {0}",
|
|
251
|
+
"list.otherSourceHint": "Этот пункт начинается не с {0}, а с {1}.",
|
|
252
|
+
"list.reset": "сброс",
|
|
253
|
+
"list.resetHint": "Сбрасывает все внесенные здесь изменения — флажки, роли, формулы, источники — и снова отображает состояние, в котором оно было сохранено.",
|
|
254
|
+
"list.sendPointMissing": "отправить точку данных, которая ещё не создана",
|
|
255
|
+
"list.sourceGone": "источник не найден",
|
|
256
|
+
"list.sourceHint": "Этот пункт начинается с {0}.",
|
|
257
|
+
"list.sourceMissing": "источник отсутствует",
|
|
258
|
+
"list.tpl": "шаблон",
|
|
259
|
+
"list.tplDiffers": "отличается от шаблона",
|
|
260
|
+
"list.tplHint": "Проверяет именно те моменты, которые предлагаются в шаблоне — независимо от того, что сегодня содержится в псевдониме.",
|
|
261
|
+
"list.willBeCreated": "будет создано:",
|
|
262
|
+
"mock.colName": "Имя",
|
|
263
|
+
"mock.colPath": "Путь",
|
|
264
|
+
"mock.colRole": "Роль",
|
|
265
|
+
"mock.colType": "Тип",
|
|
266
|
+
"mock.colValue": "Значение",
|
|
267
|
+
"mock.counts": "{0} записей, {1} со значением · записал alias-workbench {2} · источник {3}",
|
|
268
|
+
"mock.inNames": "Внимание: {0} идентификаторов есть и в пути или в именах — отказ от `native` их не убирает",
|
|
269
|
+
"mock.more": "… и ещё {0} записей (не показаны, но попадут в файл)",
|
|
270
|
+
"mock.noNative": "`native` не включён. Значения, которые не должны уйти, просто снимите.",
|
|
271
|
+
"mock.save": "Сохранить файл",
|
|
272
|
+
"mock.suspicious": "Похоже на: {0}",
|
|
273
|
+
"mock.tooBig": "Это много: {0} записей (у устройства обычно меньше {1})",
|
|
274
|
+
"mock.tooBigHint": "Имелось в виду одно устройство? Выгрузить всё равно можно.",
|
|
275
|
+
"mockin.bad": "Этот файл не подходит",
|
|
276
|
+
"mockin.badEntry": "У {0} записей нет пути.",
|
|
277
|
+
"mockin.badFormat": "Формат {0}, но эта версия читает {1}.",
|
|
278
|
+
"mockin.badJson": "Не читается как JSON.",
|
|
279
|
+
"mockin.badObjects": "В файле нет объектов.",
|
|
280
|
+
"mockin.counts": "{0} объектов, {1} со значением, {2} уже есть",
|
|
281
|
+
"mockin.create": "Создать",
|
|
282
|
+
"mockin.exists": "(уже есть)",
|
|
283
|
+
"mockin.from": "Из {0} · записал alias-workbench {1} · источник {2}",
|
|
284
|
+
"mockin.name": "Имя",
|
|
285
|
+
"mockin.nameTaken": "Имя «{0}» уже занято — там находится {1} объектов",
|
|
286
|
+
"mockin.nameTakenHint": "Выберите другое имя. Запись в существующий макет смешала бы оба: заменяется только совпадающий путь, остальное от старого остаётся — и получится устройство, которого никогда не было.",
|
|
287
|
+
"mockin.noRoot": "Отсутствует запись корня.",
|
|
288
|
+
"move.button": "Перейти …",
|
|
289
|
+
"move.done": "Перемещено. Псевдоним теперь находится по адресу {0}.",
|
|
290
|
+
"move.exists": "{0} уже существует. Сначала удалите его или выберите другое имя.",
|
|
291
|
+
"move.from": "из",
|
|
292
|
+
"move.needName": "Необходимо указать имя.",
|
|
293
|
+
"move.nested": "Цель находится ниже самого псевдонима (или наоборот). При перемещении будет удален её собственный родительский узел — пожалуйста, выберите место рядом с ней.",
|
|
294
|
+
"move.newFolder": "новая папка",
|
|
295
|
+
"move.noFolder": "(папка отсутствует — находится непосредственно в папке alias.0)",
|
|
296
|
+
"move.noScripts": "Идентификатор не фигурирует ни в одном скрипте.",
|
|
297
|
+
"move.now": "Действуйте прямо сейчас",
|
|
298
|
+
"move.scriptLines": "строка {0}",
|
|
299
|
+
"move.scriptLinesN": "строки {0}",
|
|
300
|
+
"move.scriptOff": "отключено",
|
|
301
|
+
"move.scriptsHead": "В {0}-х скриптах упоминается старый идентификатор:",
|
|
302
|
+
"move.scriptsHead1": "В одном скрипте упоминается старый идентификатор:",
|
|
303
|
+
"move.title": "Переместить псевдоним",
|
|
304
|
+
"move.to": "в",
|
|
305
|
+
"move.unchanged": "Папка и имя остались прежними — ничего делать не нужно.",
|
|
306
|
+
"move.warnHistory": "Сохраняется только настройка, включающая запись. С этого момента под новым идентификатором начинается новая, пустая серия. Всё, что было записано до этого момента, остаётся в базе данных под старым идентификатором — данные не теряются, но больше не будут пополняться. Диаграммы и запросы Grafana, указывающие на старый идентификатор, не получают новых данных; если они указывают на новый идентификатор, в них отсутствует история.",
|
|
307
|
+
"move.warnHistoryHead": "Записанные значения не переносятся.",
|
|
308
|
+
"move.warnRefs": "Что касается просмотров, имен Alexa и Google, а также других адаптеров, их невозможно проверить. Все, что ссылается на старый идентификатор, необходимо исправить вручную.",
|
|
309
|
+
"move.warnRefsHead": "Что ещё связано со старым идентификатором?",
|
|
310
|
+
"move.willMove": "будет перемещено",
|
|
311
|
+
"move.with": "с",
|
|
312
|
+
"mq.andMore": "… и ещё {0}",
|
|
313
|
+
"mq.ask": "Спросить устройство",
|
|
314
|
+
"mq.askError": "Запрос завершился с ошибкой: {0}",
|
|
315
|
+
"mq.askGotAnswer": "Устройство ответило — найдено команд: {0}",
|
|
316
|
+
"mq.askHint": "Это простой запрос — он ничего не переключает и не изменяет никаких настроек.",
|
|
317
|
+
"mq.askNoAnswer": "Ответа нет. Либо устройство находится в автономном режиме, либо оно прослушивает другую тему.",
|
|
318
|
+
"mq.askOffline": "В данный момент устройство не передает данные — в таком случае запрос останется без ответа.",
|
|
319
|
+
"mq.askedDays": "вопрос задан {0} дней назад",
|
|
320
|
+
"mq.askedHours": "вопрос задан {0} час назад",
|
|
321
|
+
"mq.askedMinutes": "вопрос задан {0} минут назад",
|
|
322
|
+
"mq.asking": "запрос устройства",
|
|
323
|
+
"mq.commandsFrom": "Команды, чтение с {0}",
|
|
324
|
+
"mq.createdBy": "создано с помощью Alias Workbench",
|
|
325
|
+
"mq.dialogTitle": "Создать точки отправки",
|
|
326
|
+
"mq.done": "Записано {0} объектов.",
|
|
327
|
+
"mq.doneHint": "Через минуту проверка начнется заново — шаблон, который ранее не соответствовал, теперь может соответствовать.",
|
|
328
|
+
"mq.duplicate": "то же самое, что и {0}",
|
|
329
|
+
"mq.fix": "Создать точки отправки …",
|
|
330
|
+
"mq.instant": "Мгновенная обратная связь",
|
|
331
|
+
"mq.instantCheck": "спросить",
|
|
332
|
+
"mq.instantChecking": "спросив",
|
|
333
|
+
"mq.instantEnable": "Включить",
|
|
334
|
+
"mq.instantEnabling": "включение",
|
|
335
|
+
"mq.instantHintOff": "Без параметра SetOption59 устройство передаёт данные только в соответствии со своим циклом телеметрии. При значении {0} устройство считывает данные из телеметрического канала tele/… и до этого момента продолжает отображать прежнее значение даже после переключения. Включение этого параметра является постоянной настройкой устройства — оно ничего не переключает, а лишь изменяет частоту передачи данных.",
|
|
336
|
+
"mq.instantHintOffTakt": "Без параметра SetOption59 устройство передаёт данные только каждые {1} секунды. При значении {0} считывается значение из теле/… и до этого момента после переключения продолжает отображаться старое значение. Включение этого параметра является постоянной настройкой устройства — оно ничего не переключает, а лишь изменяет частоту передачи данных устройством.",
|
|
337
|
+
"mq.instantHintOn": "Установлен параметр SetOption59: устройство сообщает о каждом изменении сразу, а не только в следующем пакете телеметрических данных. Время измерения — три секунды.",
|
|
338
|
+
"mq.instantHintUnknown": "Запрос на устройство пока не отправлялся. Команда «Ask» отправляет пустой запрос в SetOption59 — это ничего не меняет.",
|
|
339
|
+
"mq.instantOff": "выключить",
|
|
340
|
+
"mq.instantOffShort": "задержка обратной связи",
|
|
341
|
+
"mq.instantOn": "включено",
|
|
342
|
+
"mq.instantUnknown": "неизвестно",
|
|
343
|
+
"mq.intro": "Не все устройства Tasmota настроены одинаково. Отсутствие точки или её отключение само по себе не является неисправностью — это имеет значение только в том случае, если через неё должен проходить псевдоним или она необходима шаблону для обнаружения.",
|
|
344
|
+
"mq.justAsked": "спросили только что",
|
|
345
|
+
"mq.missing": "Отсутствуют {0} точек отправки",
|
|
346
|
+
"mq.missingIp": "IP-адрес устройства неизвестен — он отображается только в теле/INFO2 (отправляется один раз при загрузке) или в stat/STATUS5 (только по запросу).",
|
|
347
|
+
"mq.missingPeriod": "Период телеметрии неизвестен — устройство никогда не сообщает его самостоятельно, а только по запросу.",
|
|
348
|
+
"mq.mute": "{0}: отправка невозможна",
|
|
349
|
+
"mq.neverReported": "С момента запуска устройство не передавало полную отчетность, поэтому список команд для него неизвестен.",
|
|
350
|
+
"mq.newPoints": "Будет создано",
|
|
351
|
+
"mq.nothingYet": "Устройство пока не отправило ничего, из чего можно было бы извлечь команды.",
|
|
352
|
+
"mq.nowValue": "в настоящее время:",
|
|
353
|
+
"mq.offline": "в автономном режиме",
|
|
354
|
+
"mq.onlyResult": "Пока что поступил ответ только на одну команду, а не полная информация о состоянии — список может быть неполным.",
|
|
355
|
+
"mq.repair": "Присутствует, но молчит",
|
|
356
|
+
"mq.repairHint": "Эти точки существуют, но отправка через них запрещена. Переключение псевдонимов через них не приводит к каким-либо действиям, и никаких признаков этого не наблюдается.",
|
|
357
|
+
"mq.rowAllow": "разрешить отправку",
|
|
358
|
+
"mq.rowCreate": "создать",
|
|
359
|
+
"mq.rowWorking": "…",
|
|
360
|
+
"mq.selectedOf": "Выбрано {0} из {1}",
|
|
361
|
+
"mq.silent": "не сообщать",
|
|
362
|
+
"mq.split": "из {0} ветвей",
|
|
363
|
+
"mq.splitHint": "Это устройство не находится под одним узлом, а распределено по {0} ветвям — именно так адаптер MQTT хранит его, когда FullTopic устройства имеет вид «%prefix%/%topic%/» (заводская настройка Tasmota). Workbench рассматривает эти ветви как одно устройство; точки создаются ниже этого устройства, а не рядом с ним.",
|
|
364
|
+
"mq.stFine": "в настоящее время, отправляет",
|
|
365
|
+
"mq.stMissing": "отсутствует точка",
|
|
366
|
+
"mq.stMute": "не удается отправить",
|
|
367
|
+
"mq.stOff": "включен, но выключен",
|
|
368
|
+
"mq.stUnknown": "в настоящее время, отправка неизвестна",
|
|
369
|
+
"mq.title": "Устройство MQTT",
|
|
370
|
+
"mq.unknownCommand": "неизвестная команда",
|
|
371
|
+
"mq.write": "Создать ({0})",
|
|
372
|
+
"pattern.allPatterns": "все {0} шаблонов",
|
|
373
|
+
"pattern.doesNotFit": "✕ не подходит",
|
|
374
|
+
"pattern.expectsType": ", ожидается {0}",
|
|
375
|
+
"pattern.fitsNotType": "✕ {0}: введите {1} вместо {2}",
|
|
376
|
+
"pattern.fitsOn": "соответствия ",
|
|
377
|
+
"pattern.freeSlots": "Бесплатные слоты по схеме «{0}»",
|
|
378
|
+
"pattern.label": "Шаблон",
|
|
379
|
+
"pattern.manualInstead": "вручную вместо {0}",
|
|
380
|
+
"pattern.missing": "Отсутствует {0}",
|
|
381
|
+
"pattern.noMatch": "ни один шаблон не соответствует «{0}»",
|
|
382
|
+
"pattern.noPlaceBecauseType": "Шаблон «{0}» в данный момент не применяется: {1} требует {2}, но установлено значение {3}. Именно поэтому ни одна строка не имеет слота.",
|
|
383
|
+
"pattern.noPlaceLegend": "Строки, заштрихованные таким образом, не имеют слота в шаблоне «{0}»",
|
|
384
|
+
"pattern.noPlaceLong": "отсутствие слота в шаблоне «{0}» — точка всё равно создаётся и полностью готова к использованию, просто Alexa и другие системы учитывают её отдельно",
|
|
385
|
+
"pattern.notDetected": "не обнаружено",
|
|
386
|
+
"pattern.offCandidate": "{0} соответствует {1}, но не отмечено галочкой.",
|
|
387
|
+
"pattern.offCandidateType": "{0} соответствует {1} по своей роли, но не отмечен галочкой и имеет тип {2} вместо {3}.",
|
|
388
|
+
"pattern.offGuess": "В случае значения «{0}» это правило будет действовать.",
|
|
389
|
+
"pattern.offMissing": "Шаблон «{0}» в данный момент не применяется: отсутствует элемент «{1}». Именно поэтому ни в одном ряду нет слота.",
|
|
390
|
+
"pattern.orRole": "или {0}",
|
|
391
|
+
"pattern.pointsTaken": "✓ {0} баллов",
|
|
392
|
+
"pattern.required": "ОБЯЗАТЕЛЬНО — отсутствует",
|
|
393
|
+
"pattern.search": "введите текст для поиска …",
|
|
394
|
+
"pattern.slotHeldBy": "В поле {1} уже стоит {0} — в таком случае для этой строки не останется места. Выберите свободное место в разделе «Разместить по шаблону» выше.",
|
|
395
|
+
"pattern.slotName": "Эта точка находится в слоте «{0}» шаблона {1}. Названия слотов взяты из детектора типов и везде одинаковы — они не переводятся, поскольку псевдоним datapoint называется именно так.",
|
|
396
|
+
"pattern.slotsTaken": "✓ {0} из {1} заполнено",
|
|
397
|
+
"pattern.tickIt": "поставьте галочку",
|
|
398
|
+
"pattern.tickItType": "поставьте галочку, {0}",
|
|
399
|
+
"pattern.toSlot": " → слот {0} в шаблоне {1}",
|
|
400
|
+
"pattern.typeMismatch": "Слот {0} требует значения {1}, но установлено значение {2} — состояние выпадает из шаблона, хотя роль указана верно.",
|
|
401
|
+
"pattern.typeOr": " или ",
|
|
402
|
+
"pattern.usualOnly": "только обычные",
|
|
403
|
+
"pattern.viaRole": "роль {0}",
|
|
404
|
+
"result.addNeighbours": "Добавить соседние ветки ({0})",
|
|
405
|
+
"result.addNeighboursHint": "Некоторые адаптеры делят устройство на соседние ветки. Здесь берутся все; отдельные выбираются Ctrl-кликом в дереве.",
|
|
406
|
+
"result.addNeighboursSame": "По данным адаптера эти ветки принадлежат одному устройству — тот же идентификатор узла и тот же признак связи. Здесь берутся все; отдельные выбираются Ctrl-кликом.",
|
|
407
|
+
"result.allAnyway": "В любом случае, все ",
|
|
408
|
+
"result.channelsHint": "Это устройство имеет {0} каналов. Выберите ниже: либо разместить всё в одной папке, либо отразить структуру источника — папка для устройства, а под ней по одному каналу.",
|
|
409
|
+
"result.extraSwitches": "Включено: {0} балл с других каналов, для которых в шаблоне {1} нет места. Они создаются, но не учитываются как переключатель или обратная связь устройства. Для отдельного управления воспользуйтесь пунктом «одно устройство на канал» ниже.",
|
|
410
|
+
"result.header": "Как это интерпретирует детектор типов",
|
|
411
|
+
"result.newlyCreated": "будет создан",
|
|
412
|
+
"result.noObjectShort": "без объекта",
|
|
413
|
+
"result.pickSource": "Куда прыгнуть?",
|
|
414
|
+
"result.pointsFromBranches": "{0} точек данных из {1} ветвей. ",
|
|
415
|
+
"result.sourceCount": "{0} источников",
|
|
416
|
+
"result.sourceCountHint": "Ссылки этого псевдонима ведут на несколько узлов. Ссылка «к источнику» ведет к тому узлу, откуда происходит большинство из них; при нажатии отображаются все они.",
|
|
417
|
+
"result.sourceGone": "Источник {0} больше не существует.",
|
|
418
|
+
"result.sourceGone1": "1 балл никуда не ведет",
|
|
419
|
+
"result.sourceGoneN": "{0} балл — это ни о чём не говорит",
|
|
420
|
+
"result.states": "{0} штатов",
|
|
421
|
+
"result.statesDirect": "{0} штатов ({1} — напрямую)",
|
|
422
|
+
"result.toAlias": "к псевдониму",
|
|
423
|
+
"result.toAliasHint": "Переходит к псевдониму, созданному на основе этого устройства.",
|
|
424
|
+
"result.toSource": "к источнику",
|
|
425
|
+
"result.toSourceHint": "Переходит к устройству, на основе которого был создан этот псевдоним. Шаблоны применяются только там — в режиме псевдонимов псевдоним можно поддерживать, но не создавать заново на основе шаблона.",
|
|
426
|
+
"result.tooManyStates": "Это будет устройство с {0} состояниями — обычно это означает, что выбран не тот узел. В дереве слева узлы, которые выглядят как отдельное устройство, отмечены точкой. Вы всё равно можете построить схему именно так.",
|
|
427
|
+
"roles.leadsTo": "→ слот {0}",
|
|
428
|
+
"roles.noMatch": "не найдено совпадений с «{0}»",
|
|
429
|
+
"roles.patternOnly": "показать только роли шаблона",
|
|
430
|
+
"roles.search": "поиск должности …",
|
|
431
|
+
"roles.showAll": "показать все {0} ролей",
|
|
432
|
+
"roles.slot": "слот {0} в шаблоне {1}",
|
|
433
|
+
"roles.slotFree": "бесплатно",
|
|
434
|
+
"roles.slotTaken": "сделано {0}",
|
|
435
|
+
"swap.blocked": "Сначала примите решение — эти точки не могут существовать одновременно: {0}. Либо удалите их во время замены, либо оставьте замену без изменений; точка, предназначенная для записи, нуждается в объекте записи.",
|
|
436
|
+
"swap.button": "Заменить источник …",
|
|
437
|
+
"swap.byHandCheck": "Формула, единица и диапазон остаются как в алиасе — проверьте их потом.",
|
|
438
|
+
"swap.byHandHint": "Эту точку вы указали сами — верстак не смог вывести её из нового устройства.",
|
|
439
|
+
"swap.byHandMark": "вручную",
|
|
440
|
+
"swap.diffRange": "диапазон от {0} до {1}",
|
|
441
|
+
"swap.diffType": "тип {0} → {1}",
|
|
442
|
+
"swap.diffUnit": "единица {0} → {1}",
|
|
443
|
+
"swap.done": "Порядок изменен. Теперь псевдоним начинается с {0}.",
|
|
444
|
+
"swap.factorField": "Множитель",
|
|
445
|
+
"swap.formula": "Формула",
|
|
446
|
+
"swap.formulaNone": "нет",
|
|
447
|
+
"swap.from": "В данный момент чтение ведётся из:",
|
|
448
|
+
"swap.fromAlias": "Сопоставлено по самой точке алиаса: под новым источником есть ровно одна точка с именем «{0}» и ролью «{1}».",
|
|
449
|
+
"swap.fromAliasMark": "из алиаса",
|
|
450
|
+
"swap.fromDetect": "Сопоставлено так же, как при щелчке по устройству в дереве: новый источник сам подписывает свои точки, и детектор распознаёт там «{0}».",
|
|
451
|
+
"swap.fromDetectMark": "распознано",
|
|
452
|
+
"swap.fromTpl": "Сопоставлено так же, как при щелчке по устройству в дереве: к новому источнику подходит шаблон «{0}», и он знает, какая точка относится к этому месту — вместе с формулой.",
|
|
453
|
+
"swap.fromTplMark": "из шаблона",
|
|
454
|
+
"swap.goHigher": "используйте уровень выше",
|
|
455
|
+
"swap.gone": "Этого устройства больше нет — и именно для этого оно и предназначено.",
|
|
456
|
+
"swap.guessHint": "Строки с пометкой «предположительно» были сопоставлены по имени или должности — пожалуйста, проверьте их по отдельности.",
|
|
457
|
+
"swap.guessedByAliasRole": "Предположение по роли точки алиаса: под новым источником ровно одна точка имеет роль «{0}». Проверьте.",
|
|
458
|
+
"swap.guessedByName": "Судя по названию точки: что-то под новым источником тоже называется «{0}». Это может быть далеко — пожалуйста, проверьте.",
|
|
459
|
+
"swap.guessedByRole": "Судя по роли: точка под новым источником имеет ту же роль «{0}». Проверьте, пожалуйста.",
|
|
460
|
+
"swap.higherLevel": "На уровень выше ({0}) цель набирает {1} из {2} очков, а здесь — только {3}.",
|
|
461
|
+
"swap.keeps": "Псевдоним сохраняет свой идентификатор, имена, роли и формулы, историю в базе данных, а также комнату и функцию. Меняется лишь то, откуда и куда происходит чтение и запись данных.",
|
|
462
|
+
"swap.loadingValues": "Чтение нового устройства …",
|
|
463
|
+
"swap.mapping": "Составление карт",
|
|
464
|
+
"swap.mind": "Будьте осторожны:",
|
|
465
|
+
"swap.mindHint": "Формулы псевдонимов остаются без изменений — если новый источник масштабируется иначе, значения впоследствии будут неверными. Формула находится в строке с подробными сведениями о точке.",
|
|
466
|
+
"swap.noDevice": "Устройство не найдено.",
|
|
467
|
+
"swap.noMatch": "соответствующая точка не найдена",
|
|
468
|
+
"swap.noWriteMatch": "не найден объект для записи — данная точка никуда не запишется",
|
|
469
|
+
"swap.now": "Обменять сейчас",
|
|
470
|
+
"swap.pickByHand": "… или выберите точку сами",
|
|
471
|
+
"swap.pickFirst": "Сначала выберите новый источник.",
|
|
472
|
+
"swap.removeIt": "удалить этот пункт при замене",
|
|
473
|
+
"swap.same": "Это тот же источник, что и раньше.",
|
|
474
|
+
"swap.search": "Поиск (по идентификатору или имени) …",
|
|
475
|
+
"swap.suggestionHint": "Подсказка из подписи — щелчок подставит её в поле. Сверьте с двумя значениями выше: подпись может быть неверной.",
|
|
476
|
+
"swap.title": "Обмен источниками",
|
|
477
|
+
"swap.to": "Новый источник",
|
|
478
|
+
"swap.tplDrop": "Также удалить запомненный шаблон ({0} объектов)",
|
|
479
|
+
"swap.tplFormulas": "Формулы {0} точек в любом случае заменяются формулами нового устройства — они принадлежат источнику, а не алиасу. В каждой строке видно, что будет стоять потом.",
|
|
480
|
+
"swap.tplGone": "Этого шаблона больше нет.",
|
|
481
|
+
"swap.tplOther": "К новому источнику подходит другой шаблон: «{0}». Его можно применить после замены через выбор шаблона — он принесёт свои формулы и имена.",
|
|
482
|
+
"swap.tplStale": "Запомненный шаблон «{0}» не подходит новому источнику",
|
|
483
|
+
"swap.unchanged": "без изменений",
|
|
484
|
+
"swap.unitChanged": "Единица: в алиасе {0} · новый источник: {1}",
|
|
485
|
+
"swap.unitField": "Единица в алиасе",
|
|
486
|
+
"swap.unitHistWarn": "К этой точке привязана запись. История — в старой единице; ряд, который на середине меняет множитель, починить нельзя.",
|
|
487
|
+
"swap.unitNoFactor": "Пересчёт не предлагается: эти две единицы — не известная пара.",
|
|
488
|
+
"swap.unitNone": "нет",
|
|
489
|
+
"swap.unitResult": "Результат: {0} {1}",
|
|
490
|
+
"swap.unitValOld": "Ваш алиас показывает сейчас: {0} {1}",
|
|
491
|
+
"swap.unknown": "(не может быть определено)",
|
|
492
|
+
"target.alsoRoom": "Значение для комнаты тоже установить на «{0}»?",
|
|
493
|
+
"target.alsoRoomNew": "Нет комнаты «{0}» — создать и присвоить ей номер?",
|
|
494
|
+
"target.clearField": "очистить поле",
|
|
495
|
+
"target.exists": "уже существует",
|
|
496
|
+
"target.folder": "Поместить под",
|
|
497
|
+
"target.folderHint": "разделяйте подпапки точкой, например: House.GF.Kitchen",
|
|
498
|
+
"target.folderPlaceholder": "empty = непосредственно под alias.0",
|
|
499
|
+
"target.moveInstead": "лучше переместите его…",
|
|
500
|
+
"target.moveInsteadHint": "Перенесите существующий псевдоним на новый идентификатор, вместо того чтобы создавать второй рядом с ним.",
|
|
501
|
+
"target.name": "Имя",
|
|
502
|
+
"target.openFolder": "открыть «{0}»",
|
|
503
|
+
"target.twinExists": "В этом источнике уже стоит «{0}» — он останется на месте.",
|
|
504
|
+
"target.yes": "да",
|
|
505
|
+
"tpl.applyTemplate": "принять значения шаблона ({0})",
|
|
506
|
+
"tpl.applyTemplateHint": "Устанавливает роли, типы, единицы измерения, формулы и источники в соответствии с шаблоном. Подпись остаётся без изменений — её вы придумали сами. До пробного запуска ничего не записывается.",
|
|
507
|
+
"tpl.choose": "— выбрать шаблон —",
|
|
508
|
+
"tpl.contains": "{0} содержит {1}",
|
|
509
|
+
"tpl.fits": "подходит",
|
|
510
|
+
"tpl.fitsNot": "✕ {0}",
|
|
511
|
+
"tpl.forbiddenThere": "{0} существует, но не должно",
|
|
512
|
+
"tpl.forced": "принудительный",
|
|
513
|
+
"tpl.forcedHint": "Для этого шаблона обнаружение не срабатывает — он выбран вручную.",
|
|
514
|
+
"tpl.identifiedAs": "Идентификатор: {0}",
|
|
515
|
+
"tpl.label": "Шаблон",
|
|
516
|
+
"tpl.manuallyChosen": "отобранные вручную",
|
|
517
|
+
"tpl.missingPoint": "Отсутствует {0}",
|
|
518
|
+
"tpl.nameHint": "имя совпадает с «{0}» — не обнаруживается по MQTT",
|
|
519
|
+
"tpl.noJson": "Значение {0} не содержит JSON-данных",
|
|
520
|
+
"tpl.noNameHint": "название не даёт никаких подсказок — «{0}» является значением по умолчанию, в MQTT их невозможно отличить друг от друга",
|
|
521
|
+
"tpl.noOutputs": "результаты не найдены",
|
|
522
|
+
"tpl.none": "— без шаблона —",
|
|
523
|
+
"tpl.noneDetected": "Шаблон не обнаружен",
|
|
524
|
+
"tpl.nor": " ни в ",
|
|
525
|
+
"tpl.output": "Вывод",
|
|
526
|
+
"tpl.outputsFound": "найденных результатов: {0}",
|
|
527
|
+
"tpl.own": "собственный",
|
|
528
|
+
"tpl.possibleIn": "{0} — это команда, которую устройство распознает (точка данных ещё не создана)",
|
|
529
|
+
"tpl.presentIn": "{0} подарок",
|
|
530
|
+
"tpl.remembered": "вспомнил",
|
|
531
|
+
"tpl.rememberedHint": "Этот псевдоним был создан на основе данного шаблона — он останется в силе до тех пор, пока вы его сознательно не измените.",
|
|
532
|
+
"tpl.showAllPoints": "Загрузить все точки данных устройства",
|
|
533
|
+
"tpl.showAllPointsHelp": "Выводит предложение шаблона и перечисляет все данные, имеющиеся у устройства, включая те, которые не упоминаются в шаблоне. Отсюда вы можете добавить отдельный элемент в псевдоним.",
|
|
534
|
+
"tpl.showProposal": "Загрузить проект шаблона",
|
|
535
|
+
"tpl.showProposalHelp": "Вернёмся к тому, что предлагает шаблон для этого устройства.",
|
|
536
|
+
"tpl.skippedChip": "{0}, без указания источника",
|
|
537
|
+
"tpl.skippedEmpty": "«{0}» набрал бы больше баллов, но на этом устройстве не формирует ни одной строки — пропущено",
|
|
538
|
+
"tpl.skippedHead": "{0} не указано из-за отсутствия источника",
|
|
539
|
+
"tpl.skippedNowhere": "{0}: ни в том, ни в {1}",
|
|
540
|
+
"tpl.skippedSource": "{0}: {1} отсутствует",
|
|
541
|
+
"tpl.skippedWhy": "{0}: {1}",
|
|
542
|
+
"tpl.whyNoField": "У {0} нет поля {1}",
|
|
543
|
+
"tpl.whyNoJson": "Значение {0} не содержит JSON-данных",
|
|
544
|
+
"tpl.whyNoPoint": "{0} не существует",
|
|
545
|
+
"tpl.whyNone": "Почему не применяется ни один шаблон",
|
|
546
|
+
"tpl.whyThis": "Почему именно этот шаблон?",
|
|
547
|
+
"tpl.withoutField": "{0} без {1}",
|
|
548
|
+
"tpl.wouldNeed": "фактически отсутствует: {0}",
|
|
549
|
+
"tpls.absolute": "неподвижный объект",
|
|
550
|
+
"tpls.absoluteText": "Он не зависит от конкретного устройства и поэтому будет одинаковым для всех устройств. Иногда это вполне уместно — например, в случае общего заданного значения. Он не учитывается при обнаружении.",
|
|
551
|
+
"tpls.absoluteTitle": "Один пункт касается неподвижного объекта. ",
|
|
552
|
+
"tpls.andMore": "… и ещё {0}, не указанных здесь",
|
|
553
|
+
"tpls.beats": "прослушано {0} раз",
|
|
554
|
+
"tpls.buildsNone": "не подходит — ни одна строка не имеет источника",
|
|
555
|
+
"tpls.button": "Сохранить как шаблон …",
|
|
556
|
+
"tpls.channelName": "Канал на каждый выход",
|
|
557
|
+
"tpls.colDefault": "По умолчанию",
|
|
558
|
+
"tpls.colInTemplate": "в шаблоне",
|
|
559
|
+
"tpls.colName": "Имя",
|
|
560
|
+
"tpls.colPath": "Путь, относительно устройства",
|
|
561
|
+
"tpls.colRequired": "должно существовать",
|
|
562
|
+
"tpls.content": "Проверка контента",
|
|
563
|
+
"tpls.contentHelp": "Позволяет повысить точность обнаружения — и исключить устройства, которые не отправляют этот блок. Именно это и отличает «сокет» от «сокета с учетом трафика».",
|
|
564
|
+
"tpls.contentRow": "{0} должно содержать {1}",
|
|
565
|
+
"tpls.contradiction": "Этот шаблон ни для чего не подойдет.",
|
|
566
|
+
"tpls.contradictionText": "Эти пункты одновременно указаны как обязательные и как запрещенные: {0}. Удалите их из одного из двух списков.",
|
|
567
|
+
"tpls.deviceType": "Тип устройства",
|
|
568
|
+
"tpls.dropOff": "Полностью исключить",
|
|
569
|
+
"tpls.dropOthers": "Оставьте остальные выходы без изменений",
|
|
570
|
+
"tpls.droppedCount": "Не учтено {0} баллов.",
|
|
571
|
+
"tpls.evidence": "{0} подтвержденных",
|
|
572
|
+
"tpls.failed": "Ошибка при сохранении:",
|
|
573
|
+
"tpls.fallbacks": "+ {0} резервный вариант",
|
|
574
|
+
"tpls.fitsNot": "{0}× не подходит",
|
|
575
|
+
"tpls.function": "Функция",
|
|
576
|
+
"tpls.head": "Заголовок",
|
|
577
|
+
"tpls.hits": "Найдены {0} устройств, {1} из них выиграло",
|
|
578
|
+
"tpls.id": "Идентификатор",
|
|
579
|
+
"tpls.idTaken": "Этот идентификатор уже принадлежит «{0}» (версия {1}). Сохранение приведёт к его замене.",
|
|
580
|
+
"tpls.json": "Вот что сохраняется",
|
|
581
|
+
"tpls.loadFailed": "собственные шаблоны не загружены",
|
|
582
|
+
"tpls.loadFailedHint": "Конфигурация экземпляра не ответила или выдала ошибку. Ваши шаблоны никуда не пропали — они просто отсутствуют в этом окне. Пока отображается это уведомление, при сохранении может произойти перезапись существующего шаблона: сначала перезагрузите страницу.",
|
|
583
|
+
"tpls.lockBadHint": "Подсказка «имя» не является допустимым выражением",
|
|
584
|
+
"tpls.lockIdTaken": "Идентификатор уже принадлежит «{0}»",
|
|
585
|
+
"tpls.lockNoId": "Отсутствует идентификатор",
|
|
586
|
+
"tpls.lockNoRequired": "Ни один из пунктов не отмечен как обязательный — шаблон не найдет ни одного совпадения",
|
|
587
|
+
"tpls.lockNoRows": "Строк не осталось",
|
|
588
|
+
"tpls.lockedWhy": "Сохранение заблокировано:",
|
|
589
|
+
"tpls.losesTo": "проигрывает с результатом {0}",
|
|
590
|
+
"tpls.multiple": "Это устройство имеет несколько выходов",
|
|
591
|
+
"tpls.multipleHelp": "Цифра «{0}» в путях заменяется на %N% — но только в конце сегмента, поэтому ENERGY.Power остаётся без изменений.",
|
|
592
|
+
"tpls.multipleNoNumber": "Укажите, какой из чисел в путях является выходным. Без этого указания шаблон останется единственным.",
|
|
593
|
+
"tpls.multipleOff": "Устройство с POWER1, POWER2 … превращается в папку, в которой на каждый выход приходится по одному каналу.",
|
|
594
|
+
"tpls.nameDe": "Название (на немецком языке)",
|
|
595
|
+
"tpls.nameEn": "Имя (на английском языке)",
|
|
596
|
+
"tpls.nameHint": "Подсказка по имени",
|
|
597
|
+
"tpls.nameHintBad": "Недопустимое выражение — считается «не найдено соответствия».",
|
|
598
|
+
"tpls.nameHintHelp": "Используется только для разрешения равенства между шаблонами, которые подходят одинаково хорошо — например, «light» и «socket». Слова следует разделять символом |. Этот прием называется «{0}».",
|
|
599
|
+
"tpls.needsRow": "не подходит — {0} ничего не найдено",
|
|
600
|
+
"tpls.needsRowHint": "Обязательная строка шаблона не находит своего источника на данном устройстве — как правило, это поле, которого нет в JSON-сообщении на данном устройстве. В этом случае шаблон даже не участвует в сопоставлении; его место занимает следующий по приоритету вариант.",
|
|
601
|
+
"tpls.noFunction": "— нет —",
|
|
602
|
+
"tpls.noHits": "В данный момент не найдено ни одного устройства. Проверьте, все ли пункты выполнены.",
|
|
603
|
+
"tpls.noInstance": "Экземпляр № {0} не найден.",
|
|
604
|
+
"tpls.noRequired": "Ни один пункт не отмечен как обязательный — в таком случае шаблон не найдет ни одного совпадения.",
|
|
605
|
+
"tpls.noType": "— нет —",
|
|
606
|
+
"tpls.onlyOne": "единственный подходящий вариант",
|
|
607
|
+
"tpls.otherOutputs": "{0} балл означает «другие результаты» ({1}).",
|
|
608
|
+
"tpls.otherOutputsText": "Шаблон для нескольких выходов всегда описывает только один из них — остальные выводятся на его основе. Снимите выделение с посторонних точек на устройстве, иначе шаблон будет подходить только для этого одного устройства.",
|
|
609
|
+
"tpls.pickDeviceFirst": "Сначала выберите устройство",
|
|
610
|
+
"tpls.rank": "Ранг",
|
|
611
|
+
"tpls.rowBuilt": "1 строка",
|
|
612
|
+
"tpls.rowsBuilt": "{0} строк",
|
|
613
|
+
"tpls.saveAsNew": "Сохранить как новый шаблон",
|
|
614
|
+
"tpls.saveAsNewHint": "существующий останется без изменений",
|
|
615
|
+
"tpls.saveNew": "Сохранить шаблон",
|
|
616
|
+
"tpls.saveUpdate": "Обновить шаблон",
|
|
617
|
+
"tpls.saved": "Шаблон «{0}» сохранен, версия {1}.",
|
|
618
|
+
"tpls.savedWhere": "Он находится в конфигурации экземпляра ({0}) и, следовательно, входит в резервную копию.",
|
|
619
|
+
"tpls.saving": "сохранение …",
|
|
620
|
+
"tpls.shadowsPackage": "будет дублировать поставляемую версию",
|
|
621
|
+
"tpls.someOff": "Отмечены как «не выбранные» на устройстве: {0}. Эти пункты по умолчанию отключены — на следующем устройстве они будут отображаться в списке, но галочки у них не будут поставлены.",
|
|
622
|
+
"tpls.states": "Данные",
|
|
623
|
+
"tpls.statesCount": "{0} из них",
|
|
624
|
+
"tpls.statesHelp": "Галочка слева указывает, включается ли данная точка в шаблон вообще. «По умолчанию» — это состояние, в котором она будет предложена на следующем устройстве; оно зависит от вашего выбора на данном устройстве. Галочка справа указывает, должна ли эта точка обязательно присутствовать, чтобы шаблон вообще совпал.",
|
|
625
|
+
"tpls.takesOver": "{0} изменить шаблон",
|
|
626
|
+
"tpls.title": "Сохранить как шаблон — {0}",
|
|
627
|
+
"tpls.tryout": "Пробная версия",
|
|
628
|
+
"tpls.undrop": "отменить",
|
|
629
|
+
"tpls.updateIt": "Обновить шаблон «{0}» — он станет версией {1}",
|
|
630
|
+
"tpls.whatToDo": "Что должно произойти",
|
|
631
|
+
"tpls.whichNumber": "Номер данного вывода",
|
|
632
|
+
"tpls.wissen": "+ ещё {0} штатов в качестве знаний о ролях — используется в представлении «Все точки данных устройства»",
|
|
633
|
+
"tree.aliases": "Изменить псевдоним",
|
|
634
|
+
"tree.branchAdd": "Добавить эту ветку к выбору",
|
|
635
|
+
"tree.branchForeign": "Эти ветки не в одном экземпляре. Устройство живёт в одном экземпляре — берите ветки с общим родителем.",
|
|
636
|
+
"tree.branchHint": "Некоторые адаптеры делят устройство на соседние ветки — Matter кладёт выключатель в одну, измерения в другую. Несколько веток вместе дают одно устройство. То же, что Ctrl-клик.",
|
|
637
|
+
"tree.branchRemove": "Убрать эту ветку из выбора",
|
|
638
|
+
"tree.collapseAll": "свернуть всё",
|
|
639
|
+
"tree.emptyNode": "нет данных — узел существует в базе данных, но не содержит данных",
|
|
640
|
+
"tree.expandAll": "развернуть всё",
|
|
641
|
+
"tree.exportMock": "Выгрузить как макет устройства",
|
|
642
|
+
"tree.exportMockHint": "Записывает всё ниже {0} в файл: объекты и текущие значения, без native",
|
|
643
|
+
"tree.filter": "фильтр …",
|
|
644
|
+
"tree.filterAria": "Фильтр объектов",
|
|
645
|
+
"tree.importMock": "Загрузить макет устройства …",
|
|
646
|
+
"tree.importMockHint": "Всегда попадает в {0} — никогда по исходному пути",
|
|
647
|
+
"tree.loading": "загрузка объектов…",
|
|
648
|
+
"tree.looksLikeDevice": "выглядит как одно устройство",
|
|
649
|
+
"tree.noObjectHint": "не настоящая папка",
|
|
650
|
+
"tree.nothingFound": "ничего не найдено",
|
|
651
|
+
"tree.sourceGone": "{0} точка(и) этого псевдонима ссылаются на несуществующий источник. js-контроллер запоминает это навсегда — помочь может только удаление и повторное создание.",
|
|
652
|
+
"tree.sources": "Создать псевдоним",
|
|
653
|
+
"tree.templates": "Шаблоны",
|
|
654
|
+
"tv.addFallback": "Добавить резервный источник",
|
|
655
|
+
"tv.addState": "Добавить точку данных",
|
|
656
|
+
"tv.badContent": "«erkennung.inhalt» должен быть объектом.",
|
|
657
|
+
"tv.badList": "«{0}» должен представлять собой список точек.",
|
|
658
|
+
"tv.badName": "Имя должно быть строкой или языковым объектом.",
|
|
659
|
+
"tv.badNameHint": "Подсказка «имя» не является допустимым выражением.",
|
|
660
|
+
"tv.badNoId": "Отсутствует идентификатор.",
|
|
661
|
+
"tv.badNoStates": "Отсутствуют данные (zustaende).",
|
|
662
|
+
"tv.badNotObject": "Ожидается, что шаблон будет представлен в виде одного объекта JSON.",
|
|
663
|
+
"tv.badRecog": "«erkennung» должно быть объектом.",
|
|
664
|
+
"tv.badState": "{0} точек данных без имени или без пути чтения или записи.",
|
|
665
|
+
"tv.badType": "Данный детектор не распознает тип устройства «{0}».",
|
|
666
|
+
"tv.clickRow": "Щелкните по строке, чтобы отредактировать значение",
|
|
667
|
+
"tv.clickRowRead": "Щелкните по строке, чтобы просмотреть её — отправленные шаблоны нельзя изменить.",
|
|
668
|
+
"tv.delete": "Удалить",
|
|
669
|
+
"tv.deleteHint": "Если он дублирует поставляемый шаблон, то этот шаблон впоследствии снова появляется.",
|
|
670
|
+
"tv.deleteSure": "Действительно удалить",
|
|
671
|
+
"tv.detection": "Обнаружение",
|
|
672
|
+
"tv.discard": "Отменить изменения",
|
|
673
|
+
"tv.duplicate": "Дубликат",
|
|
674
|
+
"tv.export": "Экспорт в файл",
|
|
675
|
+
"tv.fallback": "Резервные источники",
|
|
676
|
+
"tv.fallbackHint": "Если рабочая среда не может найти указанную выше точку данных — или поле внутри неё — она пробует следующие варианты по порядку. Используется первый вариант, в котором и то, и другое действительно существует.",
|
|
677
|
+
"tv.flagsHelp": "«По умолчанию» = на следующем устройстве этот пункт отмечен по умолчанию. «Должно присутствовать» = без этого пункта шаблон вообще не совпадает — он перемещается в список обязательных параметров выше. «Фиксированный объект» = путь чтения не является относительным по отношению к устройству, а представляет собой полный идентификатор объекта, одинаковый для всех устройств.",
|
|
678
|
+
"tv.forbidden": "Не должно существовать",
|
|
679
|
+
"tv.forbiddenHelp": "Эти точки НЕ ДОЛЖНЫ присутствовать на устройстве, иначе шаблон не совпадает. Именно это отличает одногнездовой разъем от многогнездового. Разделите несколько точек запятыми. Отсутствующие точки не считаются доказательством.",
|
|
680
|
+
"tv.hide": "скрыть",
|
|
681
|
+
"tv.importAndSave": "Импортировать и сохранить",
|
|
682
|
+
"tv.importBad": "Этот файл не является шаблоном.",
|
|
683
|
+
"tv.importFile": "Импорт …",
|
|
684
|
+
"tv.importNew": "При сохранении создаётся значение «{0}».",
|
|
685
|
+
"tv.importReplaces": "При сохранении ваш шаблон «{0}» будет заменен — версия {1} станет версией {2}.",
|
|
686
|
+
"tv.importShadows": "Сохранение теней в поставляемом шаблоне «{0}».",
|
|
687
|
+
"tv.importTitle": "Пока ничего не сохранено.",
|
|
688
|
+
"tv.imported": "импортированный",
|
|
689
|
+
"tv.inTemplate": "в шаблоне",
|
|
690
|
+
"tv.json": "Шаблон в формате JSON",
|
|
691
|
+
"tv.makeOwn": "Создать редактируемую копию",
|
|
692
|
+
"tv.multi": "несколько выходов, по одному каналу {0} на каждый выход",
|
|
693
|
+
"tv.nameHintShort": "Разрешает равные варианты только между шаблонами, которые подходят одинаково хорошо. Слова следует разделять символом |.",
|
|
694
|
+
"tv.package": "отправлено",
|
|
695
|
+
"tv.packageText": "Его нельзя редактировать, поэтому он всегда остается в том состоянии, в котором был предоставлен. Функция «Дублировать» создает копию вашего файла, и эта копия полностью повторяет исходный файл.",
|
|
696
|
+
"tv.packageTitle": "Шаблон отправлен.",
|
|
697
|
+
"tv.paneHead": "Шаблон и то, что он выявляет",
|
|
698
|
+
"tv.rank": "рейтинг {0}",
|
|
699
|
+
"tv.rankOwn": "Рейтинг определяет только выбор между вашими собственными шаблонами. В сравнении с готовым шаблоном ваш всегда выигрывает в любом случае — для этого не требуется высокий рейтинг.",
|
|
700
|
+
"tv.rankPackage": "Рейтинг учитывается только при сравнении отправленных шаблонов, и даже в этом случае — только если доказательства и подсказка по имени совпадают.",
|
|
701
|
+
"tv.readOnlyRow": "Готовый шаблон — чтобы изменить его, воспользуйтесь функцией «Собственная копия для редактирования».",
|
|
702
|
+
"tv.removeFallback": "удалить",
|
|
703
|
+
"tv.removeState": "Удалить этот пункт",
|
|
704
|
+
"tv.required2": "Должно существовать",
|
|
705
|
+
"tv.requiredCount": "{0} необходимых баллов",
|
|
706
|
+
"tv.requiredHelp": "Эти данные должны присутствовать на устройстве, иначе шаблон не будет совпадать. Несколько значений следует разделять запятыми. Каждое обязательное значение делает шаблон более точным и в то же время более уязвимым.",
|
|
707
|
+
"tv.save": "Сохранить",
|
|
708
|
+
"tv.show": "показать",
|
|
709
|
+
"tv.unsaved": "не сохранено",
|
|
710
|
+
"use.again": "прочитать ещё раз",
|
|
711
|
+
"use.aliasHead": "Псевдоним",
|
|
712
|
+
"use.custom": "Ведение журнала, «умные» имена",
|
|
713
|
+
"use.enums": "Перечисления",
|
|
714
|
+
"use.files": "Файлы",
|
|
715
|
+
"use.head": "Упомянуто в",
|
|
716
|
+
"use.limits": "Поиск осуществляется по простому тексту. Просматриваются только файлы в папках экземпляров (vis.0, vis-2.0, web.0 …) — собственные веб-интерфейсы адаптеров не учитываются, иначе рабочая среда обнаружила бы их примеры и собственные исходные файлы. Значения состояний не просматриваются, а при текстовом поиске не обнаруживаются идентификаторы, сгенерированные во время выполнения.",
|
|
717
|
+
"use.look": "поищи информацию",
|
|
718
|
+
"use.lookHint": "Выполняется поиск идентификатора псевдонима и его источника — в скриптах, перечнях, записях о самой точке, в каждом загруженном объекте и в файлах папок экземпляра. Выполняется только при нажатии кнопки, так как для этого всё считывается один раз.",
|
|
719
|
+
"use.none": "—",
|
|
720
|
+
"use.objects": "Объекты",
|
|
721
|
+
"use.otherAliases": "дополнительные псевдонимы в нём",
|
|
722
|
+
"use.scripts": "Сценарии",
|
|
723
|
+
"use.searching": "поиск…",
|
|
724
|
+
"use.sourceHead": "Источник",
|
|
725
|
+
"use.sourceHint": "То, что источник по-прежнему упоминается, не является ошибкой: скрипт, который его вызывает, должен находиться именно там. Решение о том, следует ли переместить этот источник в псевдоним, принимается только после его просмотра.",
|
|
726
|
+
"write.aliasNowAt": "Псевдоним теперь равен {0}.",
|
|
727
|
+
"write.cannotWrite": "Так писать нельзя:",
|
|
728
|
+
"write.changes": "изменения",
|
|
729
|
+
"write.close": "Закрыть",
|
|
730
|
+
"write.createAlias": "Создать псевдоним …",
|
|
731
|
+
"write.createAll": "Создать все {0} …",
|
|
732
|
+
"write.createAsOne": "создать как одно устройство …",
|
|
733
|
+
"write.createNamed": "Создать {0} …",
|
|
734
|
+
"write.createPerChannel": "по одной подпапке на каждый канал, их количество — {0} …",
|
|
735
|
+
"write.createSendPoints": "Создать {0} отсутствующих точек данных отправки",
|
|
736
|
+
"write.deselected": "отмечено",
|
|
737
|
+
"write.diffNew": "после",
|
|
738
|
+
"write.diffOld": "до",
|
|
739
|
+
"write.diffRaw": "показать исходный порядок",
|
|
740
|
+
"write.diffSorted": "поля сортировки",
|
|
741
|
+
"write.diffSortedHint": "Порядок полей внутри объекта не имеет значения — один и тот же администратор записывает объекты-псевдонимы в четырёх разных порядках. После сортировки остаются только реальные различия; исходный порядок показывает, как данные фактически хранятся.",
|
|
742
|
+
"write.done": "Записано {0} объектов.",
|
|
743
|
+
"write.doneWithRemoved": "Записано {0} объектов, удалено {1}.",
|
|
744
|
+
"write.dryOutputs": " — {0} выходов",
|
|
745
|
+
"write.dryTitleCreate": "Создать псевдоним — вот что будет отображаться",
|
|
746
|
+
"write.dryTitleDoneCreate": "Псевдоним создан",
|
|
747
|
+
"write.dryTitleDoneUpdate": "Псевдоним обновлен",
|
|
748
|
+
"write.dryTitleFailed": "Не всё прошло гладко",
|
|
749
|
+
"write.dryTitleUpdate": "Обновить псевдоним — вот что будет отображаться",
|
|
750
|
+
"write.duplicateName": "{0}: имя встречается дважды.",
|
|
751
|
+
"write.enumsUnknown": "Room и function не будут записаны: не удалось загрузить перечисления. Сам псевдоним создается, как показано. Без надёжного состояния существующее перечисление было бы заменено новым, содержащим только этот единственный элемент.",
|
|
752
|
+
"write.failed": "{0} операций завершились с ошибкой:",
|
|
753
|
+
"write.new": "новый",
|
|
754
|
+
"write.noName": "У одной точки нет названия.",
|
|
755
|
+
"write.noSourceChosen": "{0}: источник не выбран.",
|
|
756
|
+
"write.noneSelected": "Не выбрано ни одной точки данных.",
|
|
757
|
+
"write.notInProposal": "не указано в предложении",
|
|
758
|
+
"write.notUnderAlias": "{0} не находится ниже псевдонима. — здесь ничего не будет написано",
|
|
759
|
+
"write.now": "Создать сейчас",
|
|
760
|
+
"write.nowUpdate": "Обновить сейчас",
|
|
761
|
+
"write.pickDeviceFirst": "Сначала выберите устройство",
|
|
762
|
+
"write.remove": "Удалить",
|
|
763
|
+
"write.removeCount": "количество данных: {0}",
|
|
764
|
+
"write.removeHint": "существуют в списке псевдонимов, но больше не отображаются в черновике",
|
|
765
|
+
"write.retry": "Попробуйте ещё раз",
|
|
766
|
+
"write.rowSource": "источник",
|
|
767
|
+
"write.rowTarget": "цель",
|
|
768
|
+
"write.sourceMissing": "{0}: источник {1} не существует.",
|
|
769
|
+
"write.summaryTail": "{0} новых, {1} будет перезаписан",
|
|
770
|
+
"write.summaryTail3": "{0} новых, {1} изменение, {2} без изменений",
|
|
771
|
+
"write.unchanged": "без изменений",
|
|
772
|
+
"write.updateAlias": "Обновить псевдоним …",
|
|
773
|
+
"write.updateAsOne": "обновить как одно устройство …",
|
|
774
|
+
"write.updateNamed": "Обновление № {0}…",
|
|
775
|
+
"write.willKeep": "сохранено: {0}",
|
|
776
|
+
"write.willRemove": "удалено: {0}",
|
|
777
|
+
"write.writeSourceMissing": "{0}: точка данных отправки {1} пока не существует",
|
|
778
|
+
"write.writing": "пишу…"
|
|
14
779
|
}
|