iobroker.alias-workbench 0.9.8 → 0.9.10

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.
@@ -1,590 +1,14 @@
1
1
  {
2
- "app.connected": "connected",
3
- "app.detector": "type-detector",
4
- "app.disconnected": "disconnected",
5
- "app.objectsCount": "{0} objects",
6
- "app.patternsCount": "{0} patterns",
7
- "app.subsCount": "{0} subscriptions",
8
- "app.subsCount1": "one subscription",
9
- "app.subsHint": "A subscription covers a whole branch, not a single value — one pattern with a star catches every point below it. Switching nodes unsubscribes all previous ones; if the number keeps growing, one is being left behind. Currently watching:",
10
- "app.templatesCount": "{0} templates",
11
- "app.title": "Alias Workbench",
12
- "catalog.missing": "Admin catalogue unavailable — existing entries only",
13
- "check.allDeliver": "all deliver",
14
- "check.allFine": "all fine",
15
- "check.allOk": "{0} ✓",
16
- "check.button": "Checks",
17
- "check.canSend": "{0} write paths fine",
18
- "check.cannotSend": "cannot send: {0}",
19
- "check.checked": "{0} checked",
20
- "check.duplicate": "No duplicate point",
21
- "check.duplicateNone": "each points somewhere else",
22
- "check.duplicateSome": "point at the same thing: {0}",
23
- "check.feedback": "feedback arrives at once",
24
- "check.feedbackFast": "at once, SetOption59 is on",
25
- "check.feedbackFine": "all fine",
26
- "check.feedbackSlow": "delayed: {0}",
27
- "check.feedbackUnknown": "unchecked: {0}",
28
- "check.formulaYields": "read formula yields something",
29
- "check.hintCount": "notes: {0}",
30
- "check.noPatternFits": "no pattern fits",
31
- "check.noWritePath": "no point writes",
32
- "check.notMqtt": "no MQTT write path",
33
- "check.openCount": "{0} open",
34
- "check.publish": "publish on the cmnd point",
35
- "check.rolesMakeDevice": "roles make a device",
36
- "check.sendPointMissing": "send datapoint not created yet: {0}",
37
- "check.sourceExists": "source exists",
38
- "check.sourceHasValue": "source has a value",
39
- "check.title": "Checks — always running, never touching anything",
40
- "del.allOutputs": "Remove all {0} outputs of this device",
41
- "del.allOutputsHint": "Otherwise the rest stays behind, orphaned: {0}",
42
- "del.alsoFunction": "The function “{0}”, created along with this alias, is removed as well — it would be left empty otherwise.",
43
- "del.alsoRoom": "The room “{0}”, created along with this alias, is removed as well — it would be left empty otherwise.",
44
- "del.button": "Remove alias …",
45
- "del.count": "objects will be removed: {0}",
46
- "del.done": "Removed: {0} objects.",
47
- "del.hint": "The alias and every datapoint below it is deleted. The sources stay untouched — only the shell goes, not the device. This cannot be undone.",
48
- "del.now": "Remove for good",
49
- "del.objects": "What disappears",
50
- "del.title": "Remove alias",
51
- "detail.aliasEmpty": "The alias leaves this field empty.",
52
- "detail.aliasHas": "The alias has: ",
53
- "detail.asDelivered": "as delivered",
54
- "detail.attention": "Attention",
55
- "detail.caption": "Caption",
56
- "detail.captionHint": "becomes the display name of the state — shown in the admin, in VIS and wherever names are used instead of IDs",
57
- "detail.converted": "converted by the alias",
58
- "detail.datapoint": "Datapoint",
59
- "detail.decimals": "Decimals",
60
- "detail.display": "Display",
61
- "detail.elsewhere": "(elsewhere)",
62
- "detail.expects": "expects {0}",
63
- "detail.formula": "Formula",
64
- "detail.formulaBroken": "formula is faulty",
65
- "detail.formulaHint": "\"ON\"/\"OFF\" → boolean is done by the alias itself, no formula needed.",
66
- "detail.formulaPlaceholder": "empty = take the value unchanged",
67
- "detail.formulaThrows": "formula throws: {0}",
68
- "detail.jsonField": "Field in the JSON",
69
- "detail.matchesState": "✓ matches the state",
70
- "detail.name": "Name",
71
- "detail.namePlaceholder": "e.g. UNREACH",
72
- "detail.noSource": "— no source known —",
73
- "detail.noValue": "no value",
74
- "detail.noWrite": "— do not write —",
75
- "detail.objectId": "Object ID",
76
- "detail.otherObject": "… enter another object",
77
- "detail.ownFormula": "own formula",
78
- "detail.pickOne": "— please choose —",
79
- "detail.rawNothing": "— the source delivers nothing —",
80
- "detail.rawValue": "Raw value",
81
- "detail.readsFrom": "reads from",
82
- "detail.removePoint": "Remove this point",
83
- "detail.role": "Role",
84
- "detail.sameAsRead": "— same as read —",
85
- "detail.separateHint": "separate — the switch shows the state, not the command",
86
- "detail.sourceGone": "source does not exist",
87
- "detail.stateSays": "state says {0}",
88
- "detail.takeFromAlias": "Take this one value back from the stored alias",
89
- "detail.takeOne": "Take this one value from the template",
90
- "detail.tplWants": "The template wants: ",
91
- "detail.tplWantsEmpty": "The template leaves this field empty.",
92
- "detail.type": "Type",
93
- "detail.unit": "Unit",
94
- "detail.willBecome": "will become",
95
- "detail.writeFormula": "Write formula",
96
- "detail.writeFormulaHint": "converts the other way: what the device should receive when switched.",
97
- "detail.writeFormulaPlaceholder": "e.g. val ? \"ON\" : \"OFF\"",
98
- "detail.writesTo": "writes to",
99
- "detail.yields": "yields",
100
- "detail.yieldsNothing": "yields nothing",
101
- "diff.addedNoPlace": "additionally ticked — not part of the {0}",
102
- "diff.addedWithPlace": "additionally ticked — part of the {0}",
103
- "diff.againstStored": "compared to what is stored",
104
- "diff.changes": "Changes",
105
- "diff.deselectedNoPlace": "unticked — would not have been part of the {0} anyway",
106
- "diff.deselectedWithPlace": "unticked — part of the {0}",
107
- "diff.deviations": "Deviations from the proposal",
108
- "diff.formulaChange": "read formula: {0} → {1}",
109
- "diff.newByHand": "new, added by hand",
110
- "diff.nothingExists": "none of it exists yet",
111
- "diff.open": "{0} open",
112
- "diff.points": "{0} points",
113
- "diff.roleChange": "role: {0} → {1}",
114
- "diff.sourceChange": "source: {0} → {1}",
115
- "diff.unitChange": "unit: {0} → {1}",
116
- "diff.wouldBeAdded": "ticked on — will be added when updating",
117
- "diff.wouldBeRemoved": "deselected — exists in the alias and would be removed",
118
- "enums.addTo": "goes in",
119
- "enums.alsoFolder": "Store the alias under \"{0}\" as well?",
120
- "enums.clear": "remove assignment",
121
- "enums.function": "Function",
122
- "enums.functionHint": "Assigns the alias to a function such as light or heating. Also stored in an enumeration, not on the object.",
123
- "enums.iconAdded": "icon will be added",
124
- "enums.iconNew": "No picture yet — the workbench adds it when writing",
125
- "enums.iconNewMark": "new",
126
- "enums.iconThere": "Picture is stored",
127
- "enums.members": "{0} in it",
128
- "enums.newSuffix": "new",
129
- "enums.noMatch": "nothing found for \"{0}\"",
130
- "enums.placeholder": "empty = no assignment",
131
- "enums.removeFrom": "is taken out",
132
- "enums.room": "Room",
133
- "enums.roomHint": "Assigns the alias to a room. This is not stored on the object but in the \"enum.rooms\" enumeration — Alexa, Google and the dashboards group by it.",
134
- "enums.suggested": "suggested",
135
- "enums.unknown": "Enumerations not loaded — room and function stay untouched.",
136
- "enums.unused": "empty",
137
- "enums.willCreate": "create new",
138
- "folder.aliasMissing": "missing",
139
- "folder.aliasThere": "exists",
140
- "folder.clickHint": "Click a device to work on it. ",
141
- "folder.clickHintText": "A node counts as a device as soon as a template matches it — below that nothing is searched. Where none matches, the node still appears in the list as soon as it has datapoints of its own.",
142
- "folder.colAlias": "Alias",
143
- "folder.colDetected": "detected as",
144
- "folder.colSource": "Source",
145
- "folder.devices": "Devices",
146
- "folder.devicesBelow": "{0} devices below · {1} datapoints",
147
- "folder.found": "{0} found",
148
- "folder.nothingHere": "There is nothing here that could become a device.",
149
- "folder.withAlias": "{0} with alias",
150
- "folder.withoutTemplate": "{0} without template",
151
- "guess.bar": "{0} slots guessed — please check",
152
- "guess.button": "Suggest free slots",
153
- "guess.drop": "discard",
154
- "guess.hint": "Fills the pattern’s free slots from the remaining datapoints — an attempt, not knowledge. Guessed by name, value list, unit and type; every assignment is marked “guessed” and can be discarded one by one.",
155
- "guess.keep": "keep",
156
- "guess.keepAll": "keep all",
157
- "guess.locked": "{0}× guessed, still undecided — keep (✓) or discard (✕) first, then creating and saving unlock.",
158
- "guess.mark": "guessed",
159
- "guess.none": "Nothing to suggest: either every slot is taken, or no remaining datapoint fits a free slot.",
160
- "guess.tplAsk": "This device is identified as “{0}”, so the assignment is already settled. The suggestion guesses additional slots from the remaining data points — an attempt, not knowledge, and every match would need checking. Meant for special cases, e.g. when the device can do more than the template covers.",
161
- "guess.tplGo": "Suggest anyway",
162
- "guess.tplHint": "The template already covers this device — guessing here is for special cases only.",
163
- "guess.tplTitle": "Suggest free slots despite a template?",
164
- "guess.undo": "Discard suggestions",
165
- "help.aliases": "Pick an existing alias on the left. Remove points, change roles, sources and formulas — or move, rename and delete it.",
166
- "help.aliasesAdd": "To add points to an alias, the way via “to the source →” (top right, next to the alias name) is easier: the template applies there, and every data point of the device is offered with a ready role — here you would have to enter each one by hand.",
167
- "help.sources": "Pick a device or channel on the left. The workbench recognises what it is and proposes a finished alias. If one already exists, it is updated instead.",
168
- "help.templates": "Pick a template on the left. Bundled ones can be viewed and duplicated, your own edited. The trial run shows which devices it matches.",
169
- "info.dlgTitle": "Not part of the {0} pattern",
170
- "info.explain": "work perfectly normally and stay where you created them. Nothing extra is written — the alias stays as it is. They simply are not part of what ioBroker considers a {0}; their role does not fit any of its slots. It only starts to matter once you hand the alias to Alexa, Google Home or a device UI: those will see a {0} without these points. In VIS, in scripts and in history you use them like any other datapoint.",
171
- "info.more": "What this means",
172
- "leave.body": "There are changes on {0} that have not been written yet. Switching now discards them.",
173
- "leave.discard": "Discard and switch",
174
- "leave.stay": "Stay here",
175
- "leave.title": "Unsaved changes",
176
- "list.addByHand": "Add datapoint by hand",
177
- "list.aliasDiffers": "differs from the stored alias",
178
- "list.all": "all",
179
- "list.byHand": "by hand",
180
- "list.changed": "changed",
181
- "list.colOn": "on",
182
- "list.colRole": "Role",
183
- "list.colState": "State",
184
- "list.colValue": "Value",
185
- "list.countOf": "{0} of {1}",
186
- "list.nameMissing": "name missing",
187
- "list.newPoint": "new point",
188
- "list.noRole": "— no role —",
189
- "list.ofDatapoints": "datapoints",
190
- "list.onlyPattern": "only what fits the pattern",
191
- "list.onlyPatternHint": "Checks exactly the points that get a slot in the chosen pattern — everything else is unchecked and not created.",
192
- "list.onlyWithValue": "only with a value",
193
- "list.otherSource": "from {0}",
194
- "list.otherSourceHint": "This point does not read from {0} but from {1}.",
195
- "list.reset": "reset",
196
- "list.resetHint": "Discards every change made here — checkboxes, roles, formulas, sources — and shows the state as stored again.",
197
- "list.sendPointMissing": "send datapoint not created yet",
198
- "list.sourceHint": "This point reads from {0}.",
199
- "list.sourceMissing": "source missing",
200
- "list.tpl": "template",
201
- "list.tplDiffers": "differs from the template",
202
- "list.tplHint": "Checks exactly the points the template proposes — regardless of what the alias holds today.",
203
- "list.willBeCreated": "will be created:",
204
- "move.button": "Move …",
205
- "move.done": "Moved. The alias is now at {0}.",
206
- "move.exists": "{0} already exists. Remove it first or pick another name.",
207
- "move.from": "from",
208
- "move.needName": "A name is required.",
209
- "move.nested": "The target sits below the alias itself (or the other way round). Moving would delete its own parent node — please pick a place beside it.",
210
- "move.newFolder": "new folder",
211
- "move.noFolder": "(no folder — directly under alias.0)",
212
- "move.noScripts": "The ID does not appear in any script.",
213
- "move.now": "Move now",
214
- "move.scriptLines": "line {0}",
215
- "move.scriptLinesN": "lines {0}",
216
- "move.scriptOff": "disabled",
217
- "move.scriptsHead": "{0} scripts mention the old ID:",
218
- "move.scriptsHead1": "One script mentions the old ID:",
219
- "move.title": "Move alias",
220
- "move.to": "to",
221
- "move.unchanged": "Folder and name unchanged — nothing to do.",
222
- "move.warnHistory": "Only the setting that recording is enabled moves along. From now on a new, empty series starts under the new ID. Everything recorded so far stays in the database under the old ID — it is not lost, but it will no longer be extended. Charts and Grafana queries pointing at the old ID receive nothing new; pointed at the new one, they lack the history.",
223
- "move.warnHistoryHead": "Recorded values do not move along.",
224
- "move.warnRefs": "vis views, Alexa and Google names and other adapters cannot be inspected. Anything pointing at the old ID must be adjusted by hand.",
225
- "move.warnRefsHead": "What else refers to the old ID.",
226
- "move.willMove": "will be moved",
227
- "move.with": "with",
228
- "mq.andMore": "… and {0} more",
229
- "mq.ask": "Ask the device for its commands",
230
- "mq.askError": "The query failed: {0}",
231
- "mq.askGotAnswer": "The device answered — commands found: {0}",
232
- "mq.askHint": "This is a plain query — it switches nothing and changes no setting.",
233
- "mq.askNoAnswer": "No answer. Either the device is offline, or it listens on a different topic.",
234
- "mq.askedDays": "asked {0} days ago",
235
- "mq.askedHours": "asked {0} hours ago",
236
- "mq.askedMinutes": "asked {0} minutes ago",
237
- "mq.asking": "asking the device",
238
- "mq.commandsFrom": "Commands, read from {0}",
239
- "mq.createdBy": "created by the Alias Workbench",
240
- "mq.dialogTitle": "Create send points",
241
- "mq.done": "{0} objects written.",
242
- "mq.doneHint": "Detection runs again in a moment — a template that did not match before can match now.",
243
- "mq.duplicate": "same as {0}",
244
- "mq.fix": "Create send points …",
245
- "mq.instant": "Immediate feedback",
246
- "mq.instantCheck": "ask",
247
- "mq.instantChecking": "asking",
248
- "mq.instantEnable": "Enable",
249
- "mq.instantEnabling": "enabling",
250
- "mq.instantHintOff": "Without SetOption59 an alias reading from tele/STATE shows the old value for minutes after switching. Enabling is a persistent setting on the device — it switches nothing and only changes how often the device reports.",
251
- "mq.instantHintOn": "SetOption59 is set: the device reports every change at once, not only with the next telemetry. Measured at three seconds.",
252
- "mq.instantHintUnknown": "The device has not been asked yet. \"Ask\" sends an empty query to SetOption59 — it changes nothing.",
253
- "mq.instantOff": "off",
254
- "mq.instantOffShort": "feedback delayed",
255
- "mq.instantOn": "enabled",
256
- "mq.instantUnknown": "unknown",
257
- "mq.intro": "Not every Tasmota is set up the same way. A missing or mute point is not a fault in itself — it only matters once an alias is meant to switch through it, or a template needs it for detection.",
258
- "mq.justAsked": "asked just now",
259
- "mq.missing": "{0} send points missing",
260
- "mq.mute": "{0} cannot send",
261
- "mq.neverReported": "The device has not fully reported since it started, so its command list is unknown.",
262
- "mq.newPoints": "To be created",
263
- "mq.nothingYet": "The device has not sent anything yet that commands could be read from.",
264
- "mq.nowValue": "currently:",
265
- "mq.onlyResult": "So far only the reply to a single command arrived, not the whole state — the list may be incomplete.",
266
- "mq.repair": "Present but mute",
267
- "mq.repairHint": "These points exist but are not allowed to send. An alias switching through them does nothing, and nothing about it shows.",
268
- "mq.rowAllow": "allow sending",
269
- "mq.rowCreate": "create",
270
- "mq.rowWorking": "…",
271
- "mq.selectedOf": "{0} of {1} selected",
272
- "mq.stFine": "present, sends",
273
- "mq.stMissing": "point missing",
274
- "mq.stMute": "cannot send",
275
- "mq.title": "MQTT device",
276
- "mq.unknownCommand": "unknown command",
277
- "mq.write": "Create ({0})",
278
- "pattern.allPatterns": "all {0} patterns",
279
- "pattern.doesNotFit": "✕ does not fit",
280
- "pattern.fitsOn": "matches ",
281
- "pattern.freeSlots": "Free slots in the {0} pattern",
282
- "pattern.label": "Pattern",
283
- "pattern.manualInstead": "by hand instead of {0}",
284
- "pattern.missing": "{0} missing",
285
- "pattern.noMatch": "no pattern matches \"{0}\"",
286
- "pattern.noPlaceLegend": "Rows shaded like this have no slot in the {0} pattern",
287
- "pattern.noPlaceLong": "no slot in the {0} pattern — the point is still created and fully usable, only Alexa and friends count it separately",
288
- "pattern.notDetected": "not detected",
289
- "pattern.required": "REQUIRED — missing",
290
- "pattern.search": "type to search …",
291
- "pattern.slotName": "This point sits in slot \"{0}\" of the {1} pattern. Slot names come from the type-detector and are the same everywhere — they are not translated, because the alias datapoint is named exactly that.",
292
- "pattern.slotsTaken": "✓ {0}/{1} filled",
293
- "pattern.toSlot": " → slot {0} in the {1} pattern",
294
- "pattern.usualOnly": "the usual ones only",
295
- "pattern.viaRole": "role {0}",
296
- "result.allAnyway": "All anyway ",
297
- "result.channelsHint": "This device has {0} channels that make sense on their own. Choose below: one alias for all of it, or one per channel.",
298
- "result.extraSwitches": "Included: {0} points from other channels that the {1} pattern has no slot for. They are created, but do not count as the device’s switch or feedback. For separate control, use \"one device per channel\" below.",
299
- "result.header": "What the type-detector makes of it",
300
- "result.newlyCreated": "will be created",
301
- "result.noObjectShort": "no object",
302
- "result.pickSource": "Jump where?",
303
- "result.pointsFromBranches": "{0} datapoints from {1} branches. ",
304
- "result.sourceCount": "{0} sources",
305
- "result.sourceCountHint": "The points of this alias read from more than one node. \"to the source\" leads to the one most of them come from; a click shows all of them.",
306
- "result.sourceGone": "The source {0} no longer exists.",
307
- "result.states": "{0} states",
308
- "result.statesDirect": "{0} states ({1} directly)",
309
- "result.toAlias": "to the alias",
310
- "result.toAliasHint": "Jumps to the alias built from this device.",
311
- "result.toSource": "to the source",
312
- "result.toSourceHint": "Jumps to the device this alias was built from. Templates only apply there — in alias mode an alias can be maintained, but not rebuilt from a template.",
313
- "result.tooManyStates": "That would be a device with {0} states — usually this means the wrong node is selected. In the tree on the left, nodes that look like a single device carry a dot. You can still build it this way.",
314
- "roles.leadsTo": "→ slot {0}",
315
- "roles.noMatch": "no match for “{0}”",
316
- "roles.patternOnly": "show only the pattern’s roles",
317
- "roles.search": "search role …",
318
- "roles.showAll": "show all {0} roles",
319
- "roles.slot": "slot {0} in the {1} pattern",
320
- "roles.slotFree": "free",
321
- "roles.slotTaken": "taken by {0}",
322
- "swap.button": "Swap source …",
323
- "swap.diffRange": "range {0} → {1}",
324
- "swap.diffType": "type {0} → {1}",
325
- "swap.diffUnit": "unit {0} → {1}",
326
- "swap.done": "Swapped. The alias now reads from {0}.",
327
- "swap.from": "Currently reads from:",
328
- "swap.gone": "This device no longer exists — which is exactly what this is for.",
329
- "swap.guessHint": "Rows marked “guessed” were matched by name or role — please check those individually.",
330
- "swap.keeps": "The alias keeps its id, names, roles and formulas, its history in the database and its room and function. Only where each point reads from and writes to changes.",
331
- "swap.mapping": "Mapping",
332
- "swap.mind": "Watch out:",
333
- "swap.mindHint": "The alias formulas stay as they are — if the new source scales differently, the values will be wrong afterwards. The formula sits in the point's detail row.",
334
- "swap.noDevice": "No device found.",
335
- "swap.noMatch": "no matching point found",
336
- "swap.noWriteMatch": "no write target found — this point will not write anywhere",
337
- "swap.now": "Swap now",
338
- "swap.removeIt": "remove this point while swapping",
339
- "swap.same": "That is the same source as before.",
340
- "swap.search": "Search (id or name) …",
341
- "swap.title": "Swap source",
342
- "swap.to": "New source",
343
- "swap.unchanged": "unchanged",
344
- "swap.unknown": "(cannot be determined)",
345
- "target.alsoRoom": "Set room to \"{0}\" as well?",
346
- "target.alsoRoomNew": "There is no room \"{0}\" — create and assign it?",
347
- "target.clearField": "clear field",
348
- "target.exists": "already exists",
349
- "target.folder": "Place under",
350
- "target.folderHint": "separate subfolders with a dot, e.g. House.GF.Kitchen",
351
- "target.folderPlaceholder": "empty = directly under alias.0",
352
- "target.moveInstead": "move it instead …",
353
- "target.moveInsteadHint": "Move the existing alias to the new id instead of creating a second one next to it.",
354
- "target.name": "Name",
355
- "target.openFolder": "open “{0}”",
356
- "target.twinExists": "This source already has {0} — that one stays where it is.",
357
- "target.yes": "yes",
358
- "tpl.applyTemplate": "take template values ({0})",
359
- "tpl.applyTemplateHint": "Sets roles, types, units, formulas and sources to what the template says. The caption stays as it is — that one is yours. Nothing is written before the dry run.",
360
- "tpl.choose": "— choose template —",
361
- "tpl.contains": "{0} contains {1}",
362
- "tpl.fits": "fits",
363
- "tpl.fitsNot": "✕ {0}",
364
- "tpl.forbiddenThere": "{0} exists but must not",
365
- "tpl.forced": "forced",
366
- "tpl.forcedHint": "Detection does not trigger for this template — chosen by hand.",
367
- "tpl.identifiedAs": "Identified as: {0}",
368
- "tpl.label": "Template",
369
- "tpl.manuallyChosen": "chosen by hand",
370
- "tpl.missingPoint": "{0} missing",
371
- "tpl.nameHint": "name matches \"{0}\" — not detectable from MQTT",
372
- "tpl.noJson": "{0} delivers no JSON",
373
- "tpl.noNameHint": "the name gives no hint — \"{0}\" is the default, from MQTT they are indistinguishable",
374
- "tpl.noOutputs": "no outputs found",
375
- "tpl.none": "— no template —",
376
- "tpl.noneDetected": "No template detected",
377
- "tpl.nor": " nor in ",
378
- "tpl.output": "Output",
379
- "tpl.outputsFound": "outputs found: {0}",
380
- "tpl.own": "own",
381
- "tpl.possibleIn": "{0} is a command the device knows (datapoint not created yet)",
382
- "tpl.presentIn": "{0} present",
383
- "tpl.remembered": "remembered",
384
- "tpl.rememberedHint": "This alias was built from this template — it stays until you change it deliberately.",
385
- "tpl.showAllPoints": "All datapoints of the device",
386
- "tpl.showAllPointsHelp": "Leaves the template proposal and lists every datapoint the device has, including those no template mentions. From here you can pull a single one into the alias.",
387
- "tpl.showProposal": "show proposal",
388
- "tpl.showProposalHelp": "Back to what the template proposes for this device.",
389
- "tpl.skippedHead": "Left out because the source is missing: {0}",
390
- "tpl.skippedNowhere": "{0}: neither in {1}",
391
- "tpl.skippedSource": "{0}: {1} missing",
392
- "tpl.switch": "— switch template —",
393
- "tpl.whyNone": "Why no template applies",
394
- "tpl.whyThis": "Why this template",
395
- "tpl.withoutField": "{0} without {1}",
396
- "tpl.wouldNeed": "actually missing: {0}",
397
- "tpls.absolute": "fixed object",
398
- "tpls.absoluteText": "It does not live under the device and will therefore be the same for every device. Sometimes that is exactly right — a shared setpoint, say. It does not count towards detection.",
399
- "tpls.absoluteTitle": "One point refers to a fixed object. ",
400
- "tpls.andMore": "… and {0} more, not listed here",
401
- "tpls.beats": "beats {0}",
402
- "tpls.button": "Save as template …",
403
- "tpls.channelName": "Channel per output",
404
- "tpls.colDefault": "Default",
405
- "tpls.colInTemplate": "in template",
406
- "tpls.colName": "Name",
407
- "tpls.colPath": "Path, relative to the device",
408
- "tpls.colRequired": "must exist",
409
- "tpls.content": "Content checks",
410
- "tpls.contentHelp": "Makes detection more precise — and excludes devices that do not send that block. This is exactly what separates \"socket\" from \"socket with metering\".",
411
- "tpls.contentRow": "{0} must contain {1}",
412
- "tpls.contradiction": "This template would fit nothing.",
413
- "tpls.contradictionText": "These points are listed as required and as forbidden at the same time: {0}. Remove them from one of the two.",
414
- "tpls.deviceType": "Device type",
415
- "tpls.dropOff": "Leave out entirely",
416
- "tpls.dropOthers": "Leave out the other outputs",
417
- "tpls.droppedCount": "{0} points left out.",
418
- "tpls.evidence": "{0} verified",
419
- "tpls.failed": "Saving failed:",
420
- "tpls.function": "Function",
421
- "tpls.head": "Header",
422
- "tpls.hits": "{0} devices matched, {1} of them won",
423
- "tpls.id": "Id",
424
- "tpls.json": "This is what gets stored",
425
- "tpls.loadFailed": "own templates not loaded",
426
- "tpls.loadFailedHint": "The instance configuration did not answer or reported an error. Your own templates are not gone — they are only missing from this view. While this notice stands, saving may overwrite an existing template: reload first.",
427
- "tpls.losesTo": "loses to {0}",
428
- "tpls.multiple": "This device has several outputs",
429
- "tpls.multipleHelp": "The {0} in the paths is replaced by %N% — only at the end of a segment, so ENERGY.Power stays intact.",
430
- "tpls.multipleNoNumber": "Enter which number in the paths is the output. Without it the template stays a single one.",
431
- "tpls.multipleOff": "A device with POWER1, POWER2 … becomes a folder with one channel per output.",
432
- "tpls.nameDe": "Name (German)",
433
- "tpls.nameEn": "Name (English)",
434
- "tpls.nameHint": "Name hint",
435
- "tpls.nameHintHelp": "Only breaks ties between templates that fit equally well — light versus socket, for instance. Separate words with |. This device is called \"{0}\".",
436
- "tpls.noFunction": "— none —",
437
- "tpls.noHits": "Matches no device right now. Check the required points.",
438
- "tpls.noInstance": "Instance {0} not found.",
439
- "tpls.noRequired": "No point is ticked as required — the template would match nothing at all.",
440
- "tpls.noType": "— none —",
441
- "tpls.onlyOne": "only one that fits",
442
- "tpls.otherOutputs": "{0} points refer to other outputs ({1}).",
443
- "tpls.otherOutputsText": "A template for several outputs always describes just one — the rest are derived from it. Deselect the foreign points on the device, otherwise the template will only ever fit this one device.",
444
- "tpls.pickDeviceFirst": "pick a device first",
445
- "tpls.rank": "Rank",
446
- "tpls.saveAsNew": "Save as a new template",
447
- "tpls.saveAsNewHint": "the existing one stays as it is",
448
- "tpls.saveNew": "Save template",
449
- "tpls.saveUpdate": "Update template",
450
- "tpls.saved": "Template \"{0}\" saved, version {1}.",
451
- "tpls.savedWhere": "It lives in the instance configuration ({0}) and is therefore part of the backup.",
452
- "tpls.saving": "saving …",
453
- "tpls.shadowsPackage": "will then shadow the shipped one",
454
- "tpls.someOff": "Deselected on the device: {0}. These points come along as “default off” — on the next device they will be listed, just not ticked.",
455
- "tpls.states": "Datapoints",
456
- "tpls.statesCount": "{0} of them",
457
- "tpls.statesHelp": "The left tick says whether the point goes into the template at all. “Default” is the state it will be proposed with on the next device — that comes from your selection on the device. The right tick says whether it must be present for the template to match at all.",
458
- "tpls.takesOver": "{0} change template",
459
- "tpls.title": "Save as template — {0}",
460
- "tpls.tryout": "Try-out",
461
- "tpls.undrop": "undo",
462
- "tpls.updateIt": "Update template \"{0}\" — it becomes version {1}",
463
- "tpls.whatToDo": "What should happen",
464
- "tpls.whichNumber": "Number of this output",
465
- "tpls.wissen": "+ {0} more states as role knowledge — used in the “All data points of the device” view",
466
- "tree.aliases": "Edit alias",
467
- "tree.collapseAll": "collapse all",
468
- "tree.emptyNode": "no datapoints — the node exists in the database but is empty",
469
- "tree.expandAll": "expand all",
470
- "tree.filter": "filter …",
471
- "tree.filterAria": "Filter objects",
472
- "tree.loading": "loading objects …",
473
- "tree.looksLikeDevice": "looks like a single device",
474
- "tree.noObjectHint": "no object — derived from the ID only",
475
- "tree.nothingFound": "nothing found",
476
- "tree.sources": "Create alias",
477
- "tree.templates": "Templates",
478
- "tv.addFallback": "Add fallback source",
479
- "tv.addState": "Add datapoint",
480
- "tv.badNoId": "The id is missing.",
481
- "tv.badNoStates": "The datapoints (zustaende) are missing.",
482
- "tv.badNotObject": "A single template as a JSON object is expected.",
483
- "tv.badState": "{0} datapoints without a name or without a read path.",
484
- "tv.clickRow": "Click a row to edit the datapoint",
485
- "tv.delete": "Delete",
486
- "tv.deleteHint": "If it shadows a shipped template, that one reappears afterwards.",
487
- "tv.deleteSure": "Really delete",
488
- "tv.detection": "Detection",
489
- "tv.discard": "Discard changes",
490
- "tv.duplicate": "Duplicate",
491
- "tv.export": "Export as file",
492
- "tv.fallback": "Fallback sources",
493
- "tv.fallbackHint": "If the workbench cannot find the datapoint above — or the field inside it — it tries these in order. The first one where both really exist is used.",
494
- "tv.flagsHelp": "\"Default\" = pre-ticked on the next device. \"must exist\" = without this point the template does not match at all — it moves into the required list above. \"fixed object\" = the read path is not relative to the device but a full object id, the same for every device.",
495
- "tv.forbidden": "Must not exist",
496
- "tv.forbiddenHelp": "These points must NOT be present on the device, otherwise the template does not match. This is what separates a single socket from a multi one. Separate several with commas. Absent points do not count as evidence.",
497
- "tv.hide": "hide",
498
- "tv.importAndSave": "Import and save",
499
- "tv.importBad": "This file is not a template.",
500
- "tv.importFile": "Import …",
501
- "tv.importNew": "Saving creates \"{0}\".",
502
- "tv.importReplaces": "Saving replaces your template \"{0}\" — version {1} becomes version {2}.",
503
- "tv.importShadows": "Saving shadows the shipped template \"{0}\".",
504
- "tv.importTitle": "Nothing saved yet.",
505
- "tv.imported": "imported",
506
- "tv.inTemplate": "in the template",
507
- "tv.json": "The template as JSON",
508
- "tv.makeOwn": "Make an editable copy",
509
- "tv.multi": "several outputs, one channel {0} per output",
510
- "tv.nameHintShort": "Only breaks ties between templates that fit equally well. Separate words with |.",
511
- "tv.package": "shipped",
512
- "tv.packageText": "It cannot be edited, so it always stays the state it was delivered in. Duplicate makes a copy of your own, and that copy shadows the original.",
513
- "tv.packageTitle": "Shipped template.",
514
- "tv.paneHead": "The template and what it catches",
515
- "tv.rank": "rank {0}",
516
- "tv.rankOwn": "The rank only decides between your own templates. Against a shipped one yours always wins anyway — it needs no high rank for that.",
517
- "tv.rankPackage": "The rank only decides between shipped templates, and even there only once evidence and name hint come out even.",
518
- "tv.removeFallback": "remove",
519
- "tv.removeState": "Remove this point",
520
- "tv.required2": "Must exist",
521
- "tv.requiredCount": "{0} required points",
522
- "tv.requiredHelp": "These datapoints must be present on the device, otherwise the template does not match. Separate several with commas. Every required point makes the template more precise and more brittle at the same time.",
523
- "tv.save": "Save",
524
- "tv.show": "show",
525
- "tv.unsaved": "not saved",
526
- "write.aliasNowAt": "The alias is now at {0}.",
527
- "write.cannotWrite": "Cannot be written like this:",
528
- "write.changes": "changes",
529
- "write.close": "Close",
530
- "write.createAlias": "Create alias …",
531
- "write.createAll": "Create all {0} …",
532
- "write.createAsOne": "create as one device …",
533
- "write.createNamed": "Create {0} …",
534
- "write.createPerChannel": "one device per channel, {0} of them …",
535
- "write.createSendPoints": "Create the {0} missing send datapoints",
536
- "write.deselected": "deselected",
537
- "write.diffNew": "after",
538
- "write.diffOld": "before",
539
- "write.diffRaw": "show original order",
540
- "write.diffSorted": "sort fields",
541
- "write.diffSortedHint": "Field order inside an object carries no meaning — the same admin writes alias objects in four different orders. Sorted, only the real differences remain; the original order shows how it is actually stored.",
542
- "write.done": "{0} objects written.",
543
- "write.doneWithRemoved": "{0} objects written, {1} removed.",
544
- "write.dryOutputs": " — {0} outputs",
545
- "write.dryTitleCreate": "Create alias — this is what would appear",
546
- "write.dryTitleDoneCreate": "Alias created",
547
- "write.dryTitleDoneUpdate": "Alias updated",
548
- "write.dryTitleFailed": "Not everything went through",
549
- "write.dryTitleUpdate": "Update alias — this is what would appear",
550
- "write.duplicateName": "{0}: name appears twice.",
551
- "write.enumsUnknown": "Room and function will not be written: the enumerations could not be loaded. The alias itself is created as shown. Without a reliable state an existing enumeration would be replaced by a fresh one holding just this single member.",
552
- "write.failed": "{0} operations failed:",
553
- "write.new": "new",
554
- "write.noName": "One point has no name.",
555
- "write.noSourceChosen": "{0}: no source chosen.",
556
- "write.noneSelected": "Not a single datapoint is selected.",
557
- "write.notInProposal": "not in the proposal",
558
- "write.notUnderAlias": "{0} is not below alias. — nothing will be written here",
559
- "write.now": "Create now",
560
- "write.nowUpdate": "Update now",
561
- "write.pickDeviceFirst": "pick a device first",
562
- "write.remove": "Remove",
563
- "write.removeCount": "datapoints: {0}",
564
- "write.removeHint": "exist in the alias but no longer appear in the draft",
565
- "write.retry": "Try again",
566
- "write.rowSource": "source",
567
- "write.rowTarget": "target",
568
- "write.sourceMissing": "{0}: source {1} does not exist.",
569
- "write.summaryTail": "{0} new, {1} would be overwritten",
570
- "write.summaryTail3": "{0} new, {1} change, {2} unchanged",
571
- "write.unchanged": "unchanged",
572
- "write.updateAlias": "Update alias …",
573
- "write.updateAsOne": "update as one device …",
574
- "write.updateNamed": "Update {0} …",
575
- "write.willKeep": "kept: {0}",
576
- "write.willRemove": "removed: {0}",
577
- "write.writeSourceMissing": "{0}: the send datapoint {1} does not exist yet",
578
- "write.writing": "writing …",
579
- "tpls.idTaken": "This id already belongs to “{0}” (v{1}). Saving would replace it.",
580
- "tpls.nameHintBad": "Not a usable expression — it counts as “no match”.",
581
- "tv.badName": "The name must be a string or a language object.",
582
- "tv.badRecog": "“erkennung” must be an object.",
583
- "tv.badList": "“{0}” must be a list of points.",
584
- "tv.badContent": "“erkennung.inhalt” must be an object.",
585
- "tv.badNameHint": "The name hint is not a usable expression.",
586
- "tv.badType": "This detector does not know the device type “{0}”.",
587
- "check.sendUnknown": "Whether {0} may publish is not stated in the object — the topic sits in `native` only. Normal for ioBroker.mqtt and sonoff.",
588
- "del.channelsBelow": "Careful: {0} channels of their own sit below this and will be deleted too.",
589
- "detail.formulaTooSlow": "This formula took {0} ms and is no longer executed. Reloading the tab gives it one more try."
2
+ "Add missing icons to functions": "Add missing icons to functions",
3
+ "Add missing icons to rooms": "Add missing icons to rooms",
4
+ "Admin ships 62 function and 58 room templates, each with an icon. When the workbench creates an enumeration, it takes the icon from there. Existing enumerations keep whatever they have — unless you allow it to fill in what is missing. Nothing is ever written without the dry run showing it first.": "Admin ships 62 function and 58 room templates, each with an icon. When the workbench creates an enumeration, it takes the icon from there. Existing enumerations keep whatever they have — unless you allow it to fill in what is missing. Nothing is ever written without the dry run showing it first.",
5
+ "Also replace unusable icon entries": "Also replace unusable icon entries",
6
+ "Applies when a room has no icon at all and a template of the same name or ID exists.": "Applies when a room has no icon at all and a template of the same name or ID exists.",
7
+ "Icons for rooms and functions": "Icons for rooms and functions",
8
+ "Offer the Admin's room and function templates": "Offer the Admin's room and function templates",
9
+ "Same for functions. Enumerations mirrored from a HomeMatic CCU never carry an icon.": "Same for functions. Enumerations mirrored from a HomeMatic CCU never carry an icon.",
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.": "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.",
11
+ "The Alias Workbench has no running process — everything happens in the Admin tab. These settings control how it writes.": "The Alias Workbench has no running process — everything happens in the Admin tab. These settings control how it writes.",
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.": "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.",
13
+ "Where the templates come from": "Where the templates come from"
590
14
  }
@@ -0,0 +1,14 @@
1
+ {
2
+ "Add missing icons to functions": "Añadir los iconos que faltan a las funciones",
3
+ "Add missing icons to rooms": "Añadir los iconos que faltan a las habitaciones",
4
+ "Admin ships 62 function and 58 room templates, each with an icon. When the workbench creates an enumeration, it takes the icon from there. Existing enumerations keep whatever they have — unless you allow it to fill in what is missing. Nothing is ever written without the dry run showing it first.": "El Admin incluye 62 plantillas de función y 58 de habitación, cada una con un icono. Cuando el banco de trabajo crea una enumeración, toma el icono de ahí. Las enumeraciones existentes conservan lo que tienen, salvo que permita completar lo que falta. Nunca se escribe nada sin que la simulación lo muestre antes.",
5
+ "Also replace unusable icon entries": "Reemplazar también las entradas de icono inservibles",
6
+ "Applies when a room has no icon at all and a template of the same name or ID exists.": "Se aplica cuando una habitación no tiene ningún icono y existe una plantilla con el mismo nombre o ID.",
7
+ "Icons for rooms and functions": "Iconos para habitaciones y funciones",
8
+ "Offer the Admin's room and function templates": "Ofrecer las plantillas de habitación y función del Admin",
9
+ "Same for functions. Enumerations mirrored from a HomeMatic CCU never carry an icon.": "Lo mismo para las funciones. Las enumeraciones reflejadas desde una CCU HomeMatic nunca llevan icono.",
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.": "El asistente de configuración del Admin deja en el campo del icono un simple nombre como «Playroom», que ya no lleva a ninguna imagen y aparece como un recuadro roto. Con esta opción activada, el banco de trabajo lo sustituye. Con ello se sobrescribe un campo que no está vacío: la simulación lo indica expresamente.",
11
+ "The Alias Workbench has no running process — everything happens in the Admin tab. These settings control how it writes.": "El Banco de trabajo de alias no tiene ningún proceso en ejecución: todo ocurre en la pestaña del Admin. Estos ajustes determinan cómo escribe.",
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.": "El banco de trabajo las lee en tiempo de ejecución desde el propio paquete del Admin, en lugar de mantener una copia que envejecería con cada actualización. Si eso falla, las listas de selección solo muestran lo existente: no es un error, solo menos entradas.",
13
+ "Where the templates come from": "De dónde vienen las plantillas"
14
+ }