iobroker.autodoc 0.9.35
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/LICENSE +21 -0
- package/README.md +126 -0
- package/admin/autodoc.png +0 -0
- package/admin/i18n/de.json +244 -0
- package/admin/i18n/en.json +241 -0
- package/admin/i18n/es.json +229 -0
- package/admin/i18n/fr.json +235 -0
- package/admin/i18n/it.json +229 -0
- package/admin/i18n/nl.json +229 -0
- package/admin/i18n/pl.json +229 -0
- package/admin/i18n/pt.json +229 -0
- package/admin/i18n/ru.json +229 -0
- package/admin/i18n/uk.json +229 -0
- package/admin/i18n/zh-cn.json +229 -0
- package/admin/jsonConfig.json +1490 -0
- package/io-package.json +253 -0
- package/lib/adapter-config.d.ts +19 -0
- package/lib/aiEnhancer.js +2114 -0
- package/lib/autoHostTopologyMermaid.js +195 -0
- package/lib/dependencyAnalyzer.js +83 -0
- package/lib/diagnosisSnapshot.js +32 -0
- package/lib/discovery.js +953 -0
- package/lib/docTemplateConfig.js +422 -0
- package/lib/documentModel.js +640 -0
- package/lib/forumCard.js +70 -0
- package/lib/guestHelpContent.js +93 -0
- package/lib/guestScriptPrivacy.js +14 -0
- package/lib/hostDisplay.js +19 -0
- package/lib/htmlRenderer.js +4108 -0
- package/lib/htmlThemePresets.js +79 -0
- package/lib/htmlToPdf.js +99 -0
- package/lib/i18n.js +1309 -0
- package/lib/markdownRenderer.js +2025 -0
- package/lib/mermaidAutodocPalette.js +165 -0
- package/lib/mermaidServerSvg.js +252 -0
- package/lib/notifier.js +124 -0
- package/lib/quickStartGuide.js +180 -0
- package/lib/roleMapper.js +90 -0
- package/lib/scriptGroups.js +78 -0
- package/lib/versionTracker.js +312 -0
- package/main.js +1368 -0
- package/package.json +88 -0
package/lib/i18n.js
ADDED
|
@@ -0,0 +1,1309 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internationalization (i18n) Module
|
|
3
|
+
* Manages translations for different languages
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
const translations = {
|
|
7
|
+
en: {
|
|
8
|
+
// Headers and Titles
|
|
9
|
+
projectDocumentation: name => `${name} Documentation`,
|
|
10
|
+
generated: 'Generated',
|
|
11
|
+
profile: 'Profile',
|
|
12
|
+
system: 'System',
|
|
13
|
+
trigger: 'Trigger',
|
|
14
|
+
|
|
15
|
+
// Table of Contents
|
|
16
|
+
tableOfContents: 'Table of Contents',
|
|
17
|
+
systemOverview: 'System Overview',
|
|
18
|
+
adapterInstances: 'Adapter Instances',
|
|
19
|
+
manualInformation: 'Manual Information',
|
|
20
|
+
changelog: 'Changelog',
|
|
21
|
+
appendices: 'Appendices',
|
|
22
|
+
|
|
23
|
+
// System Chapter
|
|
24
|
+
projectInformation: 'Project Information',
|
|
25
|
+
projectName: 'Project Name',
|
|
26
|
+
targetSystem: 'Target System',
|
|
27
|
+
primaryHost: 'Primary Host',
|
|
28
|
+
name: 'Name',
|
|
29
|
+
platform: 'Platform',
|
|
30
|
+
hostRuntimePlatform: 'Runtime (ioBroker host)',
|
|
31
|
+
operatingSystem: 'Operating system',
|
|
32
|
+
version: 'Version',
|
|
33
|
+
systemStatistics: 'System Statistics',
|
|
34
|
+
totalAdapterInstances: 'Total Adapter Instances',
|
|
35
|
+
enabledInstances: 'Enabled Instances',
|
|
36
|
+
disabledInstances: 'Disabled Instances',
|
|
37
|
+
totalStateObjects: 'Total State Objects',
|
|
38
|
+
writableStates: 'Writable States',
|
|
39
|
+
readOnlyStates: 'Read-only States',
|
|
40
|
+
hosts: 'Hosts',
|
|
41
|
+
|
|
42
|
+
// Rooms Chapter
|
|
43
|
+
roomsAndFunctions: 'Rooms & Functions',
|
|
44
|
+
rooms: 'Rooms',
|
|
45
|
+
functions: 'Functions',
|
|
46
|
+
totalRooms: 'Total Rooms',
|
|
47
|
+
totalFunctions: 'Total Functions',
|
|
48
|
+
memberCount: 'Devices / Datapoints',
|
|
49
|
+
noRoomsDefined: 'No rooms defined yet.',
|
|
50
|
+
|
|
51
|
+
// Scripts Chapter
|
|
52
|
+
scripts: 'Scripts',
|
|
53
|
+
totalScripts: 'Total Scripts',
|
|
54
|
+
enabledScripts: 'Active Scripts',
|
|
55
|
+
disabledScripts: 'Inactive Scripts',
|
|
56
|
+
scriptName: 'Name',
|
|
57
|
+
scriptFolder: 'Folder',
|
|
58
|
+
scriptFolderRoot: 'Root',
|
|
59
|
+
scriptFolderCommon: 'General Scripts',
|
|
60
|
+
scriptFolderGlobal: 'Global Scripts',
|
|
61
|
+
scriptsByFolderIntro:
|
|
62
|
+
'Scripts are grouped by folder (same as in ioBroker). The “Global scripts” folder runs before other scripts — only helpers belong there, not regular automations.',
|
|
63
|
+
scriptsGlobalFolderHint:
|
|
64
|
+
'Global scripts run on every restart before other scripts. Use this folder only for shared functions/constants — not for normal room or device logic (otherwise behaviour becomes hard to predict).',
|
|
65
|
+
scriptStatus: 'Status',
|
|
66
|
+
scriptTrigger: 'Trigger',
|
|
67
|
+
scriptDescription: 'Group-purpose text (common.desc — ioBroker: mainly for global scripts)',
|
|
68
|
+
scriptEngineInstance: 'Script engine (common.engine)',
|
|
69
|
+
scheduleTypeObjects: 'Schedule objects',
|
|
70
|
+
scheduleTypeObjectsIntro:
|
|
71
|
+
'Objects from getObjectView(system, schedule) — ioBroker type «schedule» (e.g. calendar-style entries). This is separate from script.js automations and from adapter instances that use run mode «schedule».',
|
|
72
|
+
instanceRunMode: 'Run mode',
|
|
73
|
+
instanceScheduleCron: 'Instance CRON (mode schedule)',
|
|
74
|
+
instanceRestartCron: 'Daemon restart CRON',
|
|
75
|
+
noScriptsDefined: 'No scripts found (script adapter may not be installed).',
|
|
76
|
+
scriptAiSummary: 'AI explanation (from script source)',
|
|
77
|
+
automationOverviewAi: 'Automations in this home (AI overview)',
|
|
78
|
+
active: 'active',
|
|
79
|
+
inactive: 'inactive',
|
|
80
|
+
|
|
81
|
+
// Maintenance chapter (Admin): checklist + disabled-instance inventory. Technical "Diagnosis" is a separate chapter.
|
|
82
|
+
maintenance: 'Maintenance & documentation setup',
|
|
83
|
+
maintenanceChecklist: 'Setup checklist (documentation)',
|
|
84
|
+
documentationScore: 'Overall score',
|
|
85
|
+
instancesWithoutRoom: 'Active instances not assigned to any room',
|
|
86
|
+
checklistProjectNarrative:
|
|
87
|
+
'Project description (“My documentation”) meets the configured minimum length (Adapter → Advanced). Clear sentences help readers and exports.',
|
|
88
|
+
checklistBaseUrlUnset:
|
|
89
|
+
'ioBroker base URL set under Adapter → Advanced — required for QR codes and bookmark links to work from other devices or networks.',
|
|
90
|
+
disabledInstancesHint: 'Disabled instances',
|
|
91
|
+
disabledInstancesInventoryNote: n =>
|
|
92
|
+
`${n} adapter instance(s) are disabled — listed below for reference. That is common and intentional; it does not affect the documentation setup score.`,
|
|
93
|
+
maintenanceChecklistDisabled:
|
|
94
|
+
'No checklist rows are enabled under Adapter → Advanced (documentation setup score). The percentage stays at 100% until at least one check is turned on.',
|
|
95
|
+
allGood: 'All checks pass — documentation is in good shape.',
|
|
96
|
+
checkOk: 'OK',
|
|
97
|
+
checkIssue: 'Needs attention',
|
|
98
|
+
scoreDimData: 'Data collection',
|
|
99
|
+
scoreDimDataDesc: 'Did autodoc successfully read all system data?',
|
|
100
|
+
scoreDimManual: 'Manual content',
|
|
101
|
+
scoreDimManualDesc: 'Has the user filled in their own texts and settings?',
|
|
102
|
+
scoreDimDepth: 'Documentation depth',
|
|
103
|
+
scoreDimDepthDesc: 'Does the documentation go beyond a raw list of data points?',
|
|
104
|
+
checkHostsFound: 'ioBroker hosts readable',
|
|
105
|
+
checkInstancesFound: 'Enabled adapter instances found',
|
|
106
|
+
checkRoomsDefined: 'Rooms / enums configured in ioBroker',
|
|
107
|
+
checkContactSet: 'Contact person filled in (My documentation)',
|
|
108
|
+
checkCustomContent: 'Custom texts provided (notes, tips, room/adapter descriptions)',
|
|
109
|
+
checkHasDiagram: 'Network diagram available (manual or auto host topology)',
|
|
110
|
+
checkRoomsHaveDevices: 'At least one room has device state assignments',
|
|
111
|
+
checkHasCustomSections: 'At least one custom documentation chapter has content',
|
|
112
|
+
checkAiConfigured: 'AI provider configured for script descriptions (optional — skipped when no scripts)',
|
|
113
|
+
checkInstancesWithoutRoomInfo: 'Active instances not assigned to any room (informational)',
|
|
114
|
+
|
|
115
|
+
// Adapters Chapter
|
|
116
|
+
overview: 'Overview',
|
|
117
|
+
totalAdapters: 'Total Adapters',
|
|
118
|
+
totalInstances: 'Total Instances',
|
|
119
|
+
adapterDetails: 'Adapter Details',
|
|
120
|
+
instanceDetails: 'Instance Details',
|
|
121
|
+
enabledShort: 'active',
|
|
122
|
+
adapters: 'Adapters',
|
|
123
|
+
enabled: 'enabled',
|
|
124
|
+
disabled: 'disabled',
|
|
125
|
+
description: 'Description',
|
|
126
|
+
noAdaptersMatch: 'No adapters match your filter.',
|
|
127
|
+
adapterRunsAutomatically: 'Runs automatically — no action needed',
|
|
128
|
+
adapterCurrentlyInactive: 'Currently inactive',
|
|
129
|
+
adapterActive: 'Active',
|
|
130
|
+
adapterInactive: 'Inactive',
|
|
131
|
+
// Adapter meta badges
|
|
132
|
+
connTypeLocal: '🔌 Local',
|
|
133
|
+
connTypeCloud: '☁️ Cloud',
|
|
134
|
+
dataPush: 'Push',
|
|
135
|
+
dataPoll: 'Polling',
|
|
136
|
+
dataAssumption: 'Assumption',
|
|
137
|
+
tierStable: 'Stable',
|
|
138
|
+
tierTested: 'Tested',
|
|
139
|
+
tierExperimental: 'Experimental',
|
|
140
|
+
|
|
141
|
+
// Manual Context
|
|
142
|
+
contact: 'Contact',
|
|
143
|
+
additionalNotes: 'Additional Notes',
|
|
144
|
+
|
|
145
|
+
// Quick Start
|
|
146
|
+
quickStart: 'Quick Start',
|
|
147
|
+
quickStartWelcome: "Welcome to your ioBroker documentation! Here's what you need to know:",
|
|
148
|
+
quickStartStructuredIntro:
|
|
149
|
+
'Below is a short overview from your installation — what runs where, and a few highlights per room (when devices are assigned to rooms).',
|
|
150
|
+
qsSystemTitle: 'Setup snapshot',
|
|
151
|
+
qsRoomGuidesTitle: 'Room highlights',
|
|
152
|
+
qsRoomCount: n => `${n} room(s) with devices`,
|
|
153
|
+
qsFunctionRow: (name, n) => `Function area «${name}» — ${n} device(s)`,
|
|
154
|
+
qsScriptRow: (name, desc) => `Automation «${name}»: ${desc}`,
|
|
155
|
+
atAGlanceTitle: 'Quick overview',
|
|
156
|
+
atAGlanceIntro:
|
|
157
|
+
'Resident snapshot: more rooms and highlights here than in the guest quick start (same discovery data).',
|
|
158
|
+
qsSeeFullRoomsBefore: 'The full room-by-room list is in ',
|
|
159
|
+
qsSeeFullRoomsAfter: ' below.',
|
|
160
|
+
qsRoomCardDevices: n => `${n} device(s)`,
|
|
161
|
+
activeAdapters: 'Active Adapters',
|
|
162
|
+
nextSteps: 'Next Steps',
|
|
163
|
+
nextStepsReview: 'Review your installed adapters below',
|
|
164
|
+
nextStepsManual: 'Check the manual information section for guidance',
|
|
165
|
+
nextStepsAdapters: 'Most adapters run automatically — no configuration needed',
|
|
166
|
+
nextStepsOnboarding1:
|
|
167
|
+
'Use the sections further down on this page for a short walk-through (rooms, what runs in the background, and contact or notes if your host added any).',
|
|
168
|
+
nextStepsOnboarding2:
|
|
169
|
+
'Contact, household notes, and emergency hints show up in the right sections if your host entered them in “My documentation”.',
|
|
170
|
+
nextStepsOnboarding3:
|
|
171
|
+
'You do not need to change system settings as a guest — the household owner manages ioBroker.',
|
|
172
|
+
onboardingAutomationsOmitted: n =>
|
|
173
|
+
`Another ${n} background script(s) are running. They are not all listed in this guest view — the full list is in the technical (admin) documentation.`,
|
|
174
|
+
onboardingAutomationsSummaryBody: n =>
|
|
175
|
+
`${n} enabled JavaScript automation(s) run in the background — you do not need to do anything. Internal script file names are not listed in this guest view (names can be personal or technical). The full list and object IDs are in the Admin documentation profile.`,
|
|
176
|
+
|
|
177
|
+
// Rooms / Functions filter
|
|
178
|
+
members: 'Members',
|
|
179
|
+
noRoomsMatch: 'No rooms match your filter.',
|
|
180
|
+
noFunctionsMatch: 'No functions match your filter.',
|
|
181
|
+
|
|
182
|
+
// Scripts filter & dependency analysis
|
|
183
|
+
noScriptsMatch: 'No scripts match your filter.',
|
|
184
|
+
stateReferences: 'State References',
|
|
185
|
+
stateReferencesDesc:
|
|
186
|
+
'States referenced by scripts (static analysis of source). The right-hand column shows the optional script object field common.desc (ioBroker schema: “group purpose description”), same as in the script list; “—” if empty.',
|
|
187
|
+
script: 'Script',
|
|
188
|
+
referencedStates: 'Referenced States',
|
|
189
|
+
sharedStates: 'Shared States',
|
|
190
|
+
sharedStatesDesc: 'States used by more than one script.',
|
|
191
|
+
stateId: 'State ID',
|
|
192
|
+
usedByScripts: 'Used by Scripts',
|
|
193
|
+
noSharedStatesMatch: 'No shared states match your filter.',
|
|
194
|
+
stateReferencesExpandSummary: (scriptCount, refCount) =>
|
|
195
|
+
`Show state-reference tables — ${scriptCount} script(s), ${refCount} reference(s) (collapsed by default)`,
|
|
196
|
+
sharedStatesExpandSummary: n =>
|
|
197
|
+
`Show shared-state table — ${n} state(s) used by multiple scripts (collapsed by default)`,
|
|
198
|
+
userdataExpandSummary: (itemCount, groupCount) =>
|
|
199
|
+
`Show all userdata datapoints — ${itemCount} in ${groupCount} group(s) (collapsed by default)`,
|
|
200
|
+
aliasesExpandSummary: (itemCount, groupCount) =>
|
|
201
|
+
`Show all aliases — ${itemCount} in ${groupCount} group(s) (collapsed by default)`,
|
|
202
|
+
|
|
203
|
+
// Diagnosis section
|
|
204
|
+
diagnosis: 'Diagnosis',
|
|
205
|
+
diagScanStatus: 'Scan Status',
|
|
206
|
+
diagActive: 'active',
|
|
207
|
+
diagInactive: 'inactive',
|
|
208
|
+
diagWhereToLook: 'Where to look',
|
|
209
|
+
diagWhatLabel: 'What',
|
|
210
|
+
diagWhereLabel: 'Where',
|
|
211
|
+
diagLogsLabel: 'Adapter logs',
|
|
212
|
+
diagLogsValue: 'Admin UI → "Log" tab → filter by adapter name',
|
|
213
|
+
diagAliveLabel: 'Adapter process running?',
|
|
214
|
+
diagAliveHint: '(true = process running, false = crashed or stopped)',
|
|
215
|
+
diagConnectedLabel: 'Adapter connected to device/service?',
|
|
216
|
+
diagConnectedHint: '(true = connection established)',
|
|
217
|
+
diagFindings: 'Findings from this scan',
|
|
218
|
+
diagFindingDisabled: n =>
|
|
219
|
+
`${n} adapter instance(s) are disabled — informational only (often intentional; see the maintenance & documentation setup chapter)`,
|
|
220
|
+
diagFindingNone: 'No issues found in this scan.',
|
|
221
|
+
// Troubleshooting section
|
|
222
|
+
troubleshooting: 'Troubleshooting',
|
|
223
|
+
tsAdapterNotStarting: 'Adapter does not start',
|
|
224
|
+
tsAdapterNotStartingSymptom: 'Symptom: alive = false, adapter keeps restarting',
|
|
225
|
+
tsAdapterNotStarting1: 'Check the Log tab for error messages from this adapter',
|
|
226
|
+
tsAdapterNotStarting2: 'Common causes: wrong IP/port/hostname, missing credentials, port already in use',
|
|
227
|
+
tsAdapterNotStarting3: 'Disable the adapter, fix the configuration, then re-enable',
|
|
228
|
+
tsAdapterNotConnected: 'Adapter running but not connected to device/service',
|
|
229
|
+
tsAdapterNotConnectedSymptom: 'Symptom: alive = true, connected = false, no state updates',
|
|
230
|
+
tsAdapterNotConnected1: 'Network: is the device reachable? (ping, browser)',
|
|
231
|
+
tsAdapterNotConnected2: 'Credentials: correct API key, password or token?',
|
|
232
|
+
tsAdapterNotConnected3: 'Push adapter: is the inbound port open in the firewall?',
|
|
233
|
+
tsScriptNotRunning: 'Script does not run',
|
|
234
|
+
tsScriptNotRunningSymptom: 'Symptom: no state changes, no log output from the script',
|
|
235
|
+
tsScriptNotRunning1: 'Is the script enabled? (green dot in the script editor)',
|
|
236
|
+
tsScriptNotRunning2: 'Is the javascript adapter active?',
|
|
237
|
+
tsScriptNotRunning2Warn: 'javascript adapter is NOT active — scripts cannot run without it',
|
|
238
|
+
tsScriptNotRunning3: 'Check script log in the Log tab (filter: "javascript")',
|
|
239
|
+
tsDocNotGenerated: 'Documentation is not being generated automatically',
|
|
240
|
+
tsDocNotGeneratedSymptom: 'Symptom: no new files in /files/autodoc.0/, no state update',
|
|
241
|
+
tsDocNotGenerated1: 'Is the autodoc adapter instance running?',
|
|
242
|
+
tsDocNotGenerated2:
|
|
243
|
+
'Check triggers: at least one should apply — on adapter start, scheduled interval (hours > 0), or on adapter install/enable/disable (with event option enabled)',
|
|
244
|
+
tsDocNotGenerated3: 'Trigger manually: set autodoc.0.action.generate = true',
|
|
245
|
+
collectorStatus: 'Collector Status',
|
|
246
|
+
instancesDetected: 'Instances detected',
|
|
247
|
+
stateObjectsScanned: 'State objects scanned',
|
|
248
|
+
nodeVersion: 'Node Version',
|
|
249
|
+
npmVersion: 'npm Version',
|
|
250
|
+
npmVersionHint: 'From host report or local npm on the instance host if not in object database.',
|
|
251
|
+
jsControllerVersion: 'js-controller Version',
|
|
252
|
+
osKernel: 'OS / Kernel',
|
|
253
|
+
osArch: 'Architecture',
|
|
254
|
+
nodeVersionOutdated: 'Node.js {0} — version below recommended LTS (v20+). Upgrade recommended.',
|
|
255
|
+
nodeVersionOk: 'Node.js {0} — LTS ✓',
|
|
256
|
+
osUpdateHint: 'Keep the operating system up to date with security patches.',
|
|
257
|
+
|
|
258
|
+
// AI section
|
|
259
|
+
aiSummary: 'AI Summary',
|
|
260
|
+
|
|
261
|
+
// Search / filter UI
|
|
262
|
+
filterPlaceholder: 'Filter...',
|
|
263
|
+
searchPlaceholder: 'Search… (Enter = next)',
|
|
264
|
+
adapterFilterPlaceholder: 'Filter adapters…',
|
|
265
|
+
adapterFilterHint: 'Filter by name, description, Stable/Tested/Experimental, Local/Cloud, Push/Poll',
|
|
266
|
+
disabledAdaptersGroup: '{0} disabled instances — show',
|
|
267
|
+
scriptFilterPlaceholder: 'Filter scripts…',
|
|
268
|
+
scriptFilterHint: 'Filter by name, group-purpose (common.desc), trigger type or folder',
|
|
269
|
+
disabledScriptsGroup: '{0} inactive scripts — show',
|
|
270
|
+
|
|
271
|
+
// Appendices
|
|
272
|
+
stateObjectsSummary: 'State Objects Summary',
|
|
273
|
+
total: 'Total',
|
|
274
|
+
writable: 'Writable',
|
|
275
|
+
readOnly: 'Read-only',
|
|
276
|
+
collectionInformation: 'Collection Information',
|
|
277
|
+
collectedAt: 'Collected at',
|
|
278
|
+
schemaVersion: 'Schema Version',
|
|
279
|
+
generatedBy: 'Generated by ioBroker.autodoc v',
|
|
280
|
+
|
|
281
|
+
// Role categories
|
|
282
|
+
catLight: 'Light',
|
|
283
|
+
catDimmer: 'Dimmer',
|
|
284
|
+
catBlind: 'Shutters',
|
|
285
|
+
catThermostat: 'Climate',
|
|
286
|
+
catHumidity: 'Humidity',
|
|
287
|
+
catMotion: 'Motion',
|
|
288
|
+
catDoor: 'Door',
|
|
289
|
+
catWindow: 'Window',
|
|
290
|
+
catAlarm: 'Alarm',
|
|
291
|
+
catLock: 'Lock',
|
|
292
|
+
catSwitch: 'Switch',
|
|
293
|
+
catMedia: 'Media',
|
|
294
|
+
catCamera: 'Camera',
|
|
295
|
+
catPower: 'Power',
|
|
296
|
+
catOther: 'Device',
|
|
297
|
+
|
|
298
|
+
// Phase 4 — Profile redesign
|
|
299
|
+
deviceHierarchy: 'Device Hierarchy',
|
|
300
|
+
category: 'Category',
|
|
301
|
+
noDevicesInRoom: 'No devices assigned to this room.',
|
|
302
|
+
automations: 'Automations',
|
|
303
|
+
connectedSystems: 'Connected Systems',
|
|
304
|
+
yourRooms: 'Your Rooms',
|
|
305
|
+
tipsAndNotes: 'Tips & Notes',
|
|
306
|
+
whatCanBeControlled: 'What can be controlled:',
|
|
307
|
+
whatRunsAutomatically: 'What runs automatically? (script engine / JavaScript)',
|
|
308
|
+
automationsIntro:
|
|
309
|
+
'These flows come from enabled JavaScript scripts in ioBroker — they run in the background; you do not need to do anything:',
|
|
310
|
+
noActiveScripts:
|
|
311
|
+
'No enabled JavaScript scripts found here. Blockly, other rule engines, or automations inside other adapters are not listed in this section yet.',
|
|
312
|
+
roomsHiddenHint: '{0} room(s) hidden by configuration.',
|
|
313
|
+
adaptersHiddenHint: '{0} adapter(s) hidden by configuration.',
|
|
314
|
+
moreScripts: '{0} more scripts (no description)',
|
|
315
|
+
moreChanges: 'changes',
|
|
316
|
+
olderEntries: '{0} older entries',
|
|
317
|
+
changelogChange_instance_count: 'Adapter instances',
|
|
318
|
+
changelogChange_enabled_instances: 'Enabled instances',
|
|
319
|
+
changelogChange_state_objects: 'State objects',
|
|
320
|
+
changelogChange_project_name: 'Project name',
|
|
321
|
+
changelogChange_adapter_version: 'Adapter update',
|
|
322
|
+
changelogMsgAdapterVersion: (title, id, prev, curr) =>
|
|
323
|
+
`Adapter "${title}" (${id}): ${prev || '?'} → ${curr || '?'}`,
|
|
324
|
+
changelogTruncated: 'Showing 10 of {0} changelog entries.',
|
|
325
|
+
onboardingWelcome: name => `Welcome to ${name}`,
|
|
326
|
+
onboardingWelcomeCity: (name, city) => `Welcome to ${name} — ${city}`,
|
|
327
|
+
onboardingIntro: 'This document explains how your smart home works.',
|
|
328
|
+
guestHelpTitle: 'Help & emergencies',
|
|
329
|
+
customDocSectionsTitle: 'Custom sections',
|
|
330
|
+
homeRoutinesTitle: 'Routines in your own words',
|
|
331
|
+
homeRoutinesIntro: 'From the people who live here — not auto-generated from scripts.',
|
|
332
|
+
ownerPlaybookTitle: 'How we run this home',
|
|
333
|
+
ownerPlaybookIntro:
|
|
334
|
+
'Your playbook — typical order, must-dos, and things not to change. Written by the household; not generated automatically.',
|
|
335
|
+
mermaidDiagramTitle: 'Layout diagram (Mermaid)',
|
|
336
|
+
mermaidDiagramIntro:
|
|
337
|
+
'Diagram from your documentation settings (Mermaid). Exported HTML embeds SVG when the optional @mermaid-js/mermaid-cli package is installed; otherwise the browser loads Mermaid from jsDelivr. Markdown keeps the source for Mermaid-capable viewers. Tip: use flowchart LR (left-to-right) if a vertical chain wastes space.',
|
|
338
|
+
mermaidAutoTopologyTitle: 'Host topology (auto-generated)',
|
|
339
|
+
mermaidAutoTopologyMdHint: 'Auto-topology is only available in the HTML export (Admin profile).',
|
|
340
|
+
mermaidAutoTopologyIntro:
|
|
341
|
+
'Adapter instances grouped by ioBroker host, with a fixed maximum number of nodes for readability. Layout is left-to-right to use page width. This is not a full wiring or dependency graph. Hide with chapter id mermaid (same as your own Mermaid diagram).',
|
|
342
|
+
troubleshootPublicLinksIntro:
|
|
343
|
+
'These pages refresh when documentation is regenerated — save or share the links that match who reads them.',
|
|
344
|
+
troubleshootPublicLinksHeading: 'Bookmark links',
|
|
345
|
+
troubleshootLinkAdmin: 'Technical documentation (admin view)',
|
|
346
|
+
troubleshootLinkUser: 'Family / everyday documentation',
|
|
347
|
+
troubleshootLinkOnboarding: 'Guest & simple view',
|
|
348
|
+
troubleshootQuickFactsTitle: 'At a glance',
|
|
349
|
+
troubleshootWifiLabel: 'Wi‑Fi / network',
|
|
350
|
+
troubleshootPowerLabel: 'Power / fuses',
|
|
351
|
+
troubleshootWaterLabel: 'Water shutoff',
|
|
352
|
+
troubleshootExtraLabel: 'Other',
|
|
353
|
+
troubleshootSnapshotDisclaimer:
|
|
354
|
+
'Snapshot from when this page was generated — not live monitoring. Technical detail for whoever maintains the system.',
|
|
355
|
+
troubleshootSnapshotNodeTitle: 'Server software may need an update',
|
|
356
|
+
troubleshootSnapshotNodeStep1:
|
|
357
|
+
'Ask the person who maintains this smart home (or your host provider) to review the software version.',
|
|
358
|
+
troubleshootSnapshotNodeStep2:
|
|
359
|
+
'They can follow the official ioBroker / Node.js long-term support guidance for upgrades — this page cannot perform updates.',
|
|
360
|
+
troubleshootSnapshotNodeStep3:
|
|
361
|
+
'Until upgraded, things may still work; staying on an older or non-LTS version can mean missing security fixes.',
|
|
362
|
+
onboardingHintTitle: 'Tip: Make this page even better!',
|
|
363
|
+
onboardingHintText:
|
|
364
|
+
'Add a description and house notes in the adapter settings (Manual Context) so that guests and family members get a personal introduction.',
|
|
365
|
+
scanToShare: 'Share this page',
|
|
366
|
+
copyLink: 'Copy link',
|
|
367
|
+
copied: 'Copied!',
|
|
368
|
+
devices: 'Devices',
|
|
369
|
+
darkMode: 'Dark Mode',
|
|
370
|
+
lightMode: 'Light Mode',
|
|
371
|
+
adaptersActive: 'active',
|
|
372
|
+
staleDocsWarning: 'This documentation might be outdated.',
|
|
373
|
+
staleDocsWeek: 'Documentation is older than 7 days.',
|
|
374
|
+
staleDocsOld: 'Documentation is older than 30 days — please regenerate.',
|
|
375
|
+
pendingUpdates: 'Updates available',
|
|
376
|
+
lastBackup: 'Last Backup',
|
|
377
|
+
today: 'today',
|
|
378
|
+
yesterday: 'yesterday',
|
|
379
|
+
location: 'Location',
|
|
380
|
+
city: 'Location',
|
|
381
|
+
timezone: 'Timezone',
|
|
382
|
+
tempUnit: 'Temperature unit',
|
|
383
|
+
uptime: 'Uptime',
|
|
384
|
+
type: 'Type',
|
|
385
|
+
value: 'Value',
|
|
386
|
+
userDefinedVariables: 'Custom Variables',
|
|
387
|
+
userDataDesc: 'Datapoints under 0_userdata.0 — user-created variables and values.',
|
|
388
|
+
aliases: 'Aliases',
|
|
389
|
+
aliasesDesc: 'Aliases make foreign datapoints accessible under a custom name (alias.0.*).',
|
|
390
|
+
aliasTarget: 'Target',
|
|
391
|
+
scoreDesc:
|
|
392
|
+
'Three separate scores show **how completely** autodoc ran, **what content** you provided, and **how deep** the documentation is. The overall score is the average of the three.',
|
|
393
|
+
totalSuffix: 'total',
|
|
394
|
+
ramSystemTooltip: 'Used / total system RAM',
|
|
395
|
+
ramAdapterTooltip: 'Sum of all ioBroker processes (js-controller + all adapter instances)',
|
|
396
|
+
ramHostTooltip: 'ioBroker host process only (js-controller). Adapter instances run as separate processes.',
|
|
397
|
+
allAdapters: 'all adapters',
|
|
398
|
+
scriptHasScheduleTitle: 'Scheduled script (cron)',
|
|
399
|
+
noNotesYet: 'No special notes have been added for this smart home yet. Feel free to look around!',
|
|
400
|
+
onboardingSetupHint:
|
|
401
|
+
'Tip for administrators: add a project description, contact person and notes in the adapter settings → "My Documentation".',
|
|
402
|
+
onboardingCapabilities: 'What can this Smart Home do?',
|
|
403
|
+
onboardingCapabilitiesDesc: 'These areas are set up and controllable in your smart home:',
|
|
404
|
+
justNow: 'just now',
|
|
405
|
+
minutesAgo: 'min. ago',
|
|
406
|
+
hoursAgo: 'hrs. ago',
|
|
407
|
+
daysAgo: 'days ago',
|
|
408
|
+
cronEvery: 'every',
|
|
409
|
+
cronDaily: 'daily',
|
|
410
|
+
cronHourly: 'hourly',
|
|
411
|
+
cronAt: 'at',
|
|
412
|
+
cronMon: 'Mon',
|
|
413
|
+
cronTue: 'Tue',
|
|
414
|
+
cronWed: 'Wed',
|
|
415
|
+
cronThu: 'Thu',
|
|
416
|
+
cronFri: 'Fri',
|
|
417
|
+
cronSat: 'Sat',
|
|
418
|
+
cronSun: 'Sun',
|
|
419
|
+
availableFunctions: 'Controllable areas throughout the house:',
|
|
420
|
+
showFunctions: 'Show functions',
|
|
421
|
+
processOnly: 'process',
|
|
422
|
+
searchPrev: 'Previous match',
|
|
423
|
+
searchNext: 'Next match',
|
|
424
|
+
searchHint: '↑↓ navigate · Esc = clear',
|
|
425
|
+
activeRepo: 'Repository',
|
|
426
|
+
},
|
|
427
|
+
de: {
|
|
428
|
+
// Headers and Titles
|
|
429
|
+
projectDocumentation: name => `${name} Dokumentation`,
|
|
430
|
+
generated: 'Generiert',
|
|
431
|
+
profile: 'Profil',
|
|
432
|
+
system: 'System',
|
|
433
|
+
trigger: 'Auslöser',
|
|
434
|
+
|
|
435
|
+
// Table of Contents
|
|
436
|
+
tableOfContents: 'Inhaltsverzeichnis',
|
|
437
|
+
systemOverview: 'Systemübersicht',
|
|
438
|
+
adapterInstances: 'Adapter-Instanzen',
|
|
439
|
+
manualInformation: 'Manuelle Informationen',
|
|
440
|
+
changelog: 'Änderungsprotokoll',
|
|
441
|
+
appendices: 'Anhänge',
|
|
442
|
+
|
|
443
|
+
// System Chapter
|
|
444
|
+
projectInformation: 'Projektinformationen',
|
|
445
|
+
projectName: 'Projektname',
|
|
446
|
+
targetSystem: 'Zielsystem',
|
|
447
|
+
primaryHost: 'Primärer Host',
|
|
448
|
+
name: 'Name',
|
|
449
|
+
platform: 'Plattform',
|
|
450
|
+
hostRuntimePlatform: 'Laufzeit (ioBroker-Host)',
|
|
451
|
+
operatingSystem: 'Betriebssystem',
|
|
452
|
+
version: 'Version',
|
|
453
|
+
systemStatistics: 'Systemstatistiken',
|
|
454
|
+
totalAdapterInstances: 'Gesamt Adapter-Instanzen',
|
|
455
|
+
enabledInstances: 'Aktivierte Instanzen',
|
|
456
|
+
disabledInstances: 'Deaktivierte Instanzen',
|
|
457
|
+
totalStateObjects: 'Gesamt State-Objekte',
|
|
458
|
+
writableStates: 'Schreibbare States',
|
|
459
|
+
readOnlyStates: 'Nur lesbare States',
|
|
460
|
+
hosts: 'Hosts',
|
|
461
|
+
|
|
462
|
+
// Rooms Chapter
|
|
463
|
+
roomsAndFunctions: 'Räume & Funktionen',
|
|
464
|
+
rooms: 'Räume',
|
|
465
|
+
functions: 'Funktionen',
|
|
466
|
+
totalRooms: 'Gesamt Räume',
|
|
467
|
+
totalFunctions: 'Gesamt Funktionen',
|
|
468
|
+
memberCount: 'Geräte / Datenpunkte',
|
|
469
|
+
noRoomsDefined: 'Noch keine Räume definiert.',
|
|
470
|
+
|
|
471
|
+
// Scripts Chapter
|
|
472
|
+
scripts: 'Skripte',
|
|
473
|
+
totalScripts: 'Gesamt Skripte',
|
|
474
|
+
enabledScripts: 'Aktive Skripte',
|
|
475
|
+
disabledScripts: 'Inaktive Skripte',
|
|
476
|
+
scriptName: 'Name',
|
|
477
|
+
scriptFolder: 'Ordner',
|
|
478
|
+
scriptFolderRoot: 'Root-Verzeichnis',
|
|
479
|
+
scriptFolderCommon: 'Allgemeine Skripte',
|
|
480
|
+
scriptFolderGlobal: 'Globale Skripte',
|
|
481
|
+
scriptsByFolderIntro:
|
|
482
|
+
'Skripte sind nach Ordner gruppiert (wie im ioBroker). Der Ordner „Globale Skripte“ läuft vor anderen Skripten — dort gehören nur Hilfen/Konstanten, keine normale Automatisierungslogik.',
|
|
483
|
+
scriptsGlobalFolderHint:
|
|
484
|
+
'Globale Skripte werden bei jedem Start vor allen anderen ausgeführt. Nur gemeinsame Funktionen/Konstanten ablegen — keine reguläre Raum-/Geräte-Logik (sonst wird das Verhalten schwer nachvollziehbar).',
|
|
485
|
+
scriptStatus: 'Status',
|
|
486
|
+
scriptTrigger: 'Auslöser',
|
|
487
|
+
scriptDescription: 'Gruppenzweck (common.desc — ioBroker: v. a. globale Skripte)',
|
|
488
|
+
scriptEngineInstance: 'Skript-Engine (common.engine)',
|
|
489
|
+
scheduleTypeObjects: 'Schedule-Objekte',
|
|
490
|
+
scheduleTypeObjectsIntro:
|
|
491
|
+
'Objekte aus getObjectView(system, schedule) — ioBroker-Typ «schedule» (z. B. kalenderartige Einträge). Das ist etwas anderes als script.js-Automatisierungen und anders als Adapter-Instanzen im Laufmodus «schedule».',
|
|
492
|
+
instanceRunMode: 'Laufmodus',
|
|
493
|
+
instanceScheduleCron: 'Instanz-CRON (Modus schedule)',
|
|
494
|
+
instanceRestartCron: 'Neustart-CRON (Daemon)',
|
|
495
|
+
noScriptsDefined: 'Keine Skripte gefunden (Script-Adapter möglicherweise nicht installiert).',
|
|
496
|
+
scriptAiSummary: 'KI-Erklärung (aus Skriptquelle)',
|
|
497
|
+
automationOverviewAi: 'Automatisierungen in diesem Zuhause (KI-Überblick)',
|
|
498
|
+
active: 'aktiv',
|
|
499
|
+
inactive: 'inaktiv',
|
|
500
|
+
|
|
501
|
+
// Maintenance-Kapitel (Admin): Checkliste + deaktivierte Instanzen. Technische «Diagnose» ist ein eigenes Kapitel.
|
|
502
|
+
maintenance: 'Wartung & Dokumentations-Setup',
|
|
503
|
+
maintenanceChecklist: 'Setup-Checkliste (Dokumentation)',
|
|
504
|
+
documentationScore: 'Gesamtpunktzahl',
|
|
505
|
+
instancesWithoutRoom: 'Aktive Instanzen ohne Raumzuweisung',
|
|
506
|
+
checklistProjectNarrative:
|
|
507
|
+
'Projektbeschreibung unter „Meine Dokumentation“ erfüllt die eingestellte Mindestlänge (Adapter → Erweitert). Einige klare Sätze helfen Lesern und Exporten.',
|
|
508
|
+
checklistBaseUrlUnset:
|
|
509
|
+
'ioBroker-Basis-URL unter Adapter → Erweitert gesetzt — erforderlich für QR-Codes und Lesezeichen-Links von anderen Geräten oder Netzen.',
|
|
510
|
+
disabledInstancesHint: 'Deaktivierte Instanzen',
|
|
511
|
+
disabledInstancesInventoryNote: n =>
|
|
512
|
+
`${n} Adapter-Instanz(en) sind deaktiviert — unten als Übersicht. Das ist üblich und oft gewollt; der Doku-Setup-Score wird dadurch nicht gemindert.`,
|
|
513
|
+
maintenanceChecklistDisabled:
|
|
514
|
+
'Unter Adapter → Erweitert ist keine Checklisten-Zeile für den Doku-Setup-Score aktiv. Der Prozentsatz bleibt bei 100 %, bis mindestens ein Kriterium eingeschaltet ist.',
|
|
515
|
+
allGood: 'Alle Prüfungen bestanden — Dokumentation ist vollständig.',
|
|
516
|
+
checkOk: 'OK',
|
|
517
|
+
checkIssue: 'Handlungsbedarf',
|
|
518
|
+
scoreDimData: 'Datenerfassung',
|
|
519
|
+
scoreDimDataDesc: 'Hat autodoc alle Systemdaten erfolgreich eingelesen?',
|
|
520
|
+
scoreDimManual: 'Manuelle Inhalte',
|
|
521
|
+
scoreDimManualDesc: 'Hat der Nutzer eigene Texte und Einstellungen ausgefüllt?',
|
|
522
|
+
scoreDimDepth: 'Dokumentationstiefe',
|
|
523
|
+
scoreDimDepthDesc: 'Geht die Dokumentation über eine reine Datenpunktliste hinaus?',
|
|
524
|
+
checkHostsFound: 'ioBroker-Hosts auslesbar',
|
|
525
|
+
checkInstancesFound: 'Aktivierte Adapterinstanzen vorhanden',
|
|
526
|
+
checkRoomsDefined: 'RÄume / Enumerationen in ioBroker konfiguriert',
|
|
527
|
+
checkContactSet: 'Kontaktperson hinterlegt (Meine Dokumentation)',
|
|
528
|
+
checkCustomContent: 'Eigene Texte ausgefüllt (Hinweise, Tipps, Raum-/Adapterbeschreibungen)',
|
|
529
|
+
checkHasDiagram: 'Netzwerkdiagramm vorhanden (manuell oder Auto-Host-Topologie)',
|
|
530
|
+
checkRoomsHaveDevices: 'Mindestens ein Raum hat GerÄtezuweisungen',
|
|
531
|
+
checkHasCustomSections: 'Mindestens ein eigenes Dokumentationskapitel hat Inhalt',
|
|
532
|
+
checkAiConfigured: 'KI-Provider für Skriptbeschreibungen konfiguriert (optional ä entfällt ohne Skripte)',
|
|
533
|
+
checkInstancesWithoutRoomInfo: 'Aktive Instanzen ohne Raumzuweisung (nur Info)',
|
|
534
|
+
|
|
535
|
+
// Adapters Chapter
|
|
536
|
+
overview: 'Übersicht',
|
|
537
|
+
totalAdapters: 'Gesamt Adapter',
|
|
538
|
+
totalInstances: 'Gesamt Instanzen',
|
|
539
|
+
adapterDetails: 'Adapter-Details',
|
|
540
|
+
instanceDetails: 'Instanz-Details',
|
|
541
|
+
enabledShort: 'aktiv',
|
|
542
|
+
adapters: 'Adapter',
|
|
543
|
+
enabled: 'aktiviert',
|
|
544
|
+
disabled: 'deaktiviert',
|
|
545
|
+
description: 'Beschreibung',
|
|
546
|
+
noAdaptersMatch: 'Keine Adapter entsprechen dem Filter.',
|
|
547
|
+
adapterRunsAutomatically: 'Läuft automatisch – keine Aktion erforderlich',
|
|
548
|
+
adapterCurrentlyInactive: 'Derzeit inaktiv',
|
|
549
|
+
adapterActive: 'Aktiv',
|
|
550
|
+
adapterInactive: 'Inaktiv',
|
|
551
|
+
// Adapter-Meta-Badges
|
|
552
|
+
connTypeLocal: '🔌 Lokal',
|
|
553
|
+
connTypeCloud: '☁️ Cloud',
|
|
554
|
+
dataPush: 'Push',
|
|
555
|
+
dataPoll: 'Polling',
|
|
556
|
+
dataAssumption: 'Annahme',
|
|
557
|
+
tierStable: 'Stabil',
|
|
558
|
+
tierTested: 'Getestet',
|
|
559
|
+
tierExperimental: 'Experimentell',
|
|
560
|
+
|
|
561
|
+
// Manual Context
|
|
562
|
+
contact: 'Kontakt',
|
|
563
|
+
additionalNotes: 'Zusätzliche Hinweise',
|
|
564
|
+
|
|
565
|
+
// Quick Start
|
|
566
|
+
quickStart: 'Schnellstart',
|
|
567
|
+
quickStartWelcome: 'Willkommen in Ihrer ioBroker-Dokumentation! Das Wichtigste auf einen Blick:',
|
|
568
|
+
quickStartStructuredIntro:
|
|
569
|
+
'Kurzüberblick aus Ihrer Installation — wo was läuft und ein paar Highlights pro Raum (wenn Geräte Räumen zugeordnet sind).',
|
|
570
|
+
qsSystemTitle: 'Installation in Kürze',
|
|
571
|
+
qsRoomGuidesTitle: 'Highlights pro Raum',
|
|
572
|
+
qsRoomCount: n => `${n} Raum/Räume mit Geräten`,
|
|
573
|
+
qsFunctionRow: (name, n) => `Bereich «${name}» — ${n} Gerät(e)`,
|
|
574
|
+
qsScriptRow: (name, desc) => `Automatisierung «${name}»: ${desc}`,
|
|
575
|
+
atAGlanceTitle: 'Kurzüberblick',
|
|
576
|
+
atAGlanceIntro:
|
|
577
|
+
'Übersicht für Bewohner: hier mehr Räume und Highlights als im Gäste-Schnellstart (dieselben Discovery-Daten).',
|
|
578
|
+
qsSeeFullRoomsBefore: 'Die vollständige Raum- und Geräteliste steht im Kapitel ',
|
|
579
|
+
qsSeeFullRoomsAfter: ' weiter unten.',
|
|
580
|
+
qsRoomCardDevices: n => `${n} Gerät(e)`,
|
|
581
|
+
activeAdapters: 'Aktive Adapter',
|
|
582
|
+
nextSteps: 'Nächste Schritte',
|
|
583
|
+
nextStepsReview: 'Überprüfen Sie Ihre installierten Adapter unten',
|
|
584
|
+
nextStepsManual: 'Lesen Sie den Abschnitt Manuelle Informationen für Hinweise',
|
|
585
|
+
nextStepsAdapters: 'Die meisten Adapter laufen automatisch – keine Konfiguration nötig',
|
|
586
|
+
nextStepsOnboarding1:
|
|
587
|
+
'Weiter unten finden Sie die Kapitel dieser Seite — ein kurzer Rundgang (Räume, Hintergrundabläufe, Kontakt- und Notfalltexte, falls Ihr Gastgeber sie in „Meine Dokumentation“ hinterlegt hat).',
|
|
588
|
+
nextStepsOnboarding2:
|
|
589
|
+
'Kontakt, Hausnotizen und Notfallabschnitt erscheinen in den passenden Kapiteln, sofern ausgefüllt.',
|
|
590
|
+
nextStepsOnboarding3:
|
|
591
|
+
'Systemeinstellungen in ioBroker anzupassen ist nicht die Rolle von Gästen — das erledigt der Eigentümer.',
|
|
592
|
+
onboardingAutomationsOmitted: n =>
|
|
593
|
+
`Weitere ${n} Hintergrund-Skripte laufen, werden in dieser Gäste-Ansicht aber nicht einzeln aufgelistet. Die vollständige Liste finden Sie in der technischen (Admin-)Doku.`,
|
|
594
|
+
onboardingAutomationsSummaryBody: n =>
|
|
595
|
+
`Aktuell sind ${n} JavaScript-Automatisierung(en) aktiv — sie laufen im Hintergrund, Sie müssen nichts tun. Interne Skript-Dateinamen und technische Kennungen führen wir in der Gäste-Ansicht nicht auf (könnten persönlich oder sensibel sein). Die vollständige Liste steht im Profil «Admin»-Dokumentation.`,
|
|
596
|
+
|
|
597
|
+
// Rooms / Functions filter
|
|
598
|
+
members: 'Mitglieder',
|
|
599
|
+
noRoomsMatch: 'Keine Räume entsprechen dem Filter.',
|
|
600
|
+
noFunctionsMatch: 'Keine Funktionen entsprechen dem Filter.',
|
|
601
|
+
|
|
602
|
+
// Scripts filter & dependency analysis
|
|
603
|
+
noScriptsMatch: 'Keine Skripte entsprechen dem Filter.',
|
|
604
|
+
stateReferences: 'State-Referenzen',
|
|
605
|
+
stateReferencesDesc:
|
|
606
|
+
'Von Skripten referenzierte States (statische Analyse des Quelltexts). Rechte Spalte: optionales Feld common.desc am Skriptobjekt (ioBroker-Schema: „group purpose description“), wie in der Skriptliste; „—“ wenn leer.',
|
|
607
|
+
script: 'Skript',
|
|
608
|
+
referencedStates: 'Referenzierte States',
|
|
609
|
+
sharedStates: 'Gemeinsame States',
|
|
610
|
+
sharedStatesDesc: 'States, die von mehreren Skripten verwendet werden.',
|
|
611
|
+
stateId: 'State-ID',
|
|
612
|
+
usedByScripts: 'Verwendet von Skripten',
|
|
613
|
+
noSharedStatesMatch: 'Keine gemeinsamen States entsprechen dem Filter.',
|
|
614
|
+
stateReferencesExpandSummary: (scriptCount, refCount) =>
|
|
615
|
+
`State-Referenz-Tabellen anzeigen — ${scriptCount} Skript(e), ${refCount} Referenz(en) (standardmäßig zugeklappt)`,
|
|
616
|
+
sharedStatesExpandSummary: n =>
|
|
617
|
+
`Tabelle gemeinsamer States anzeigen — ${n} State(s), die von mehreren Skripten genutzt werden (standardmäßig zugeklappt)`,
|
|
618
|
+
userdataExpandSummary: (itemCount, groupCount) =>
|
|
619
|
+
`Alle Userdata-Datenpunkte anzeigen — ${itemCount} in ${groupCount} Gruppe(n) (standardmäßig zugeklappt)`,
|
|
620
|
+
aliasesExpandSummary: (itemCount, groupCount) =>
|
|
621
|
+
`Alle Aliase anzeigen — ${itemCount} in ${groupCount} Gruppe(n) (standardmäßig zugeklappt)`,
|
|
622
|
+
|
|
623
|
+
// Diagnosis section
|
|
624
|
+
diagnosis: 'Diagnose',
|
|
625
|
+
diagScanStatus: 'Erfassungsstatus',
|
|
626
|
+
diagActive: 'aktiv',
|
|
627
|
+
diagInactive: 'inaktiv',
|
|
628
|
+
diagWhereToLook: 'Wo nachschauen',
|
|
629
|
+
diagWhatLabel: 'Was',
|
|
630
|
+
diagWhereLabel: 'Wo',
|
|
631
|
+
diagLogsLabel: 'Adapter-Logs',
|
|
632
|
+
diagLogsValue: 'Admin-UI → Reiter „Log" → nach Adaptername filtern',
|
|
633
|
+
diagAliveLabel: 'Adapter-Prozess läuft?',
|
|
634
|
+
diagAliveHint: '(true = Prozess läuft, false = abgestürzt oder gestoppt)',
|
|
635
|
+
diagConnectedLabel: 'Adapter mit Gerät/Dienst verbunden?',
|
|
636
|
+
diagConnectedHint: '(true = Verbindung besteht)',
|
|
637
|
+
diagFindings: 'Befunde aus diesem Scan',
|
|
638
|
+
diagFindingDisabled: n =>
|
|
639
|
+
`${n} Adapter-Instanz(en) sind deaktiviert — nur informativ (oft Absicht; siehe Kapitel «Wartung & Dokumentations-Setup»)`,
|
|
640
|
+
diagFindingNone: 'Keine Auffälligkeiten in diesem Scan.',
|
|
641
|
+
// Fehlerbehebung
|
|
642
|
+
troubleshooting: 'Fehlerbehebung',
|
|
643
|
+
tsAdapterNotStarting: 'Adapter startet nicht',
|
|
644
|
+
tsAdapterNotStartingSymptom: 'Symptom: alive = false, Adapter startet immer neu',
|
|
645
|
+
tsAdapterNotStarting1: 'Log-Tab auf Fehlermeldungen dieses Adapters prüfen',
|
|
646
|
+
tsAdapterNotStarting2: 'Häufige Ursachen: falsche IP/Port, fehlende Zugangsdaten, Port bereits belegt',
|
|
647
|
+
tsAdapterNotStarting3: 'Adapter deaktivieren, Konfiguration korrigieren, wieder aktivieren',
|
|
648
|
+
tsAdapterNotConnected: 'Adapter läuft, verbindet sich aber nicht mit Gerät/Dienst',
|
|
649
|
+
tsAdapterNotConnectedSymptom: 'Symptom: alive = true, connected = false, keine State-Aktualisierungen',
|
|
650
|
+
tsAdapterNotConnected1: 'Netzwerk: Gerät erreichbar? (ping, Browser)',
|
|
651
|
+
tsAdapterNotConnected2: 'Zugangsdaten: API-Key, Passwort oder Token korrekt?',
|
|
652
|
+
tsAdapterNotConnected3: 'Push-Adapter: Eingehender Port in der Firewall freigegeben?',
|
|
653
|
+
tsScriptNotRunning: 'Skript wird nicht ausgeführt',
|
|
654
|
+
tsScriptNotRunningSymptom: 'Symptom: keine State-Änderungen, kein Log-Output des Skripts',
|
|
655
|
+
tsScriptNotRunning1: 'Ist das Skript aktiviert? (grüner Punkt im Skript-Editor)',
|
|
656
|
+
tsScriptNotRunning2: 'Ist der javascript-Adapter aktiv?',
|
|
657
|
+
tsScriptNotRunning2Warn: 'javascript-Adapter ist NICHT aktiv — Skripte können nicht laufen',
|
|
658
|
+
tsScriptNotRunning3: 'Skript-Log im Log-Tab prüfen (Filter: „javascript")',
|
|
659
|
+
tsDocNotGenerated: 'Dokumentation wird nicht automatisch erstellt',
|
|
660
|
+
tsDocNotGeneratedSymptom: 'Symptom: keine neuen Dateien in /files/autodoc.0/, kein State-Update',
|
|
661
|
+
tsDocNotGenerated1: 'Läuft die autodoc-Adapter-Instanz?',
|
|
662
|
+
tsDocNotGenerated2:
|
|
663
|
+
'Trigger prüfen: Es muss mindestens einer greifen — beim Adapter-Start, Stunden-Intervall (> 0, separater Zeitplan), oder bei Adapter installieren/aktivieren/deaktivieren (Häkchen „bei Adapteränderungen“)',
|
|
664
|
+
tsDocNotGenerated3: 'Manuell auslösen: autodoc.0.action.generate = true setzen',
|
|
665
|
+
collectorStatus: 'Collector-Status',
|
|
666
|
+
instancesDetected: 'Erkannte Instanzen',
|
|
667
|
+
stateObjectsScanned: 'Gescannte State-Objekte',
|
|
668
|
+
nodeVersion: 'Node-Version',
|
|
669
|
+
npmVersion: 'npm-Version',
|
|
670
|
+
npmVersionHint: 'Aus Host-Meldung oder lokalem npm auf dem Instanz-Host, falls nicht in der Objektdatenbank.',
|
|
671
|
+
jsControllerVersion: 'js-controller Version',
|
|
672
|
+
osKernel: 'BS / Kernel',
|
|
673
|
+
osArch: 'Architektur',
|
|
674
|
+
nodeVersionOutdated: 'Node.js {0} — Version unter empfohlenem LTS (v20+). Upgrade empfohlen.',
|
|
675
|
+
nodeVersionOk: 'Node.js {0} — LTS ✓',
|
|
676
|
+
osUpdateHint: 'Betriebssystem regelmäßig mit Sicherheitsupdates versorgen.',
|
|
677
|
+
|
|
678
|
+
// AI section
|
|
679
|
+
aiSummary: 'KI-Zusammenfassung',
|
|
680
|
+
|
|
681
|
+
// Search / filter UI
|
|
682
|
+
filterPlaceholder: 'Filter...',
|
|
683
|
+
searchPlaceholder: 'Suchen… (Enter = weiter)',
|
|
684
|
+
adapterFilterPlaceholder: 'Adapter filtern…',
|
|
685
|
+
adapterFilterHint: 'Filtern nach Name, Beschreibung, Stabil/Getestet/Experimentell, Lokal/Cloud, Push/Poll',
|
|
686
|
+
disabledAdaptersGroup: '{0} deaktivierte Instanzen — anzeigen',
|
|
687
|
+
scriptFilterPlaceholder: 'Skripte filtern…',
|
|
688
|
+
scriptFilterHint: 'Filtern nach Name, Gruppenzweck (common.desc), Auslöser-Typ oder Ordner',
|
|
689
|
+
disabledScriptsGroup: '{0} inaktive Skripte — anzeigen',
|
|
690
|
+
|
|
691
|
+
// Appendices
|
|
692
|
+
stateObjectsSummary: 'State-Objekte Zusammenfassung',
|
|
693
|
+
total: 'Gesamt',
|
|
694
|
+
writable: 'Schreibbar',
|
|
695
|
+
readOnly: 'Nur lesbar',
|
|
696
|
+
collectionInformation: 'Erfassungsinformationen',
|
|
697
|
+
collectedAt: 'Erfasst am',
|
|
698
|
+
schemaVersion: 'Schema-Version',
|
|
699
|
+
generatedBy: 'Generiert von ioBroker.autodoc v',
|
|
700
|
+
|
|
701
|
+
// Rollen-Kategorien
|
|
702
|
+
catLight: 'Licht',
|
|
703
|
+
catDimmer: 'Dimmer',
|
|
704
|
+
catBlind: 'Rolllade',
|
|
705
|
+
catThermostat: 'Klima',
|
|
706
|
+
catHumidity: 'Feuchtigkeit',
|
|
707
|
+
catMotion: 'Bewegung',
|
|
708
|
+
catDoor: 'Tür',
|
|
709
|
+
catWindow: 'Fenster',
|
|
710
|
+
catAlarm: 'Alarm',
|
|
711
|
+
catLock: 'Schloss',
|
|
712
|
+
catSwitch: 'Schalter',
|
|
713
|
+
catMedia: 'Medien',
|
|
714
|
+
catCamera: 'Kamera',
|
|
715
|
+
catPower: 'Energie',
|
|
716
|
+
catOther: 'Gerät',
|
|
717
|
+
|
|
718
|
+
// Phase 4 — Profil-Redesign
|
|
719
|
+
deviceHierarchy: 'Gerätehierarchie',
|
|
720
|
+
category: 'Kategorie',
|
|
721
|
+
noDevicesInRoom: 'Diesem Raum sind keine Geräte zugeordnet.',
|
|
722
|
+
automations: 'Automatisierungen',
|
|
723
|
+
connectedSystems: 'Verbundene Systeme',
|
|
724
|
+
yourRooms: 'Deine Räume',
|
|
725
|
+
tipsAndNotes: 'Hinweise & Tipps',
|
|
726
|
+
whatCanBeControlled: 'Was kann gesteuert werden:',
|
|
727
|
+
whatRunsAutomatically: 'Was läuft automatisch? (Skript-Engine / JavaScript)',
|
|
728
|
+
automationsIntro:
|
|
729
|
+
'Die folgenden Abläufe stammen von aktivierten JavaScript-Skripten in ioBroker — sie laufen im Hintergrund; Sie brauchen nichts zu tun:',
|
|
730
|
+
noActiveScripts:
|
|
731
|
+
'Hier sind keine aktivierten JavaScript-Skripte hinterlegt. Blockly, andere Regelsysteme oder Logik in anderen Adaptern werden in diesem Abschnitt noch nicht aufgeführt.',
|
|
732
|
+
roomsHiddenHint: '{0} Raum/Räume per Konfiguration ausgeblendet.',
|
|
733
|
+
adaptersHiddenHint: '{0} Adapter per Konfiguration ausgeblendet.',
|
|
734
|
+
moreScripts: '{0} weitere Skripte (ohne Beschreibung)',
|
|
735
|
+
moreChanges: 'Änderungen',
|
|
736
|
+
olderEntries: '{0} ältere Einträge',
|
|
737
|
+
changelogChange_instance_count: 'Adapter-Instanzen',
|
|
738
|
+
changelogChange_enabled_instances: 'Aktivierte Instanzen',
|
|
739
|
+
changelogChange_state_objects: 'State-Objekte',
|
|
740
|
+
changelogChange_project_name: 'Projektname',
|
|
741
|
+
changelogChange_adapter_version: 'Adapter-Update',
|
|
742
|
+
changelogMsgAdapterVersion: (title, id, prev, curr) =>
|
|
743
|
+
`Adapter „${title}“ (${id}): ${prev || '?'} → ${curr || '?'}`,
|
|
744
|
+
changelogTruncated: 'Zeige 10 von {0} Einträgen.',
|
|
745
|
+
onboardingWelcome: name => `Willkommen bei ${name}`,
|
|
746
|
+
onboardingWelcomeCity: (name, city) => `Willkommen bei ${name} – ${city}`,
|
|
747
|
+
onboardingIntro: 'Dieses Dokument erklärt, wie dein Smart Home funktioniert.',
|
|
748
|
+
guestHelpTitle: 'Hilfe & Notfall',
|
|
749
|
+
customDocSectionsTitle: 'Eigene Kapitel',
|
|
750
|
+
homeRoutinesTitle: 'Abläufe mit eigenen Worten',
|
|
751
|
+
homeRoutinesIntro: 'Von den Bewohnern formuliert — nicht automatisch aus Skripten erzeugt.',
|
|
752
|
+
ownerPlaybookTitle: 'So läuft das bei uns',
|
|
753
|
+
ownerPlaybookIntro:
|
|
754
|
+
'Dein Ablaufplan — Reihenfolge, was erledigt werden muss, was niemand ändern soll. Vom Haushalt formuliert; nicht automatisch erzeugt.',
|
|
755
|
+
mermaidDiagramTitle: 'Übersichtsdiagramm (Mermaid)',
|
|
756
|
+
mermaidDiagramIntro:
|
|
757
|
+
'Diagramm aus den Dokumentations-Einstellungen (Mermaid). Der HTML-Export bettet SVG ein, wenn das optionale Paket @mermaid-js/mermaid-cli installiert ist; sonst lädt der Browser Mermaid von jsDelivr. Im Markdown bleibt der Quelltext für Mermaid-fähige Viewer. Tipp: flowchart LR (links nach rechts) nutzt die Seitenbreite statt einer langen senkrechten Kette.',
|
|
758
|
+
mermaidAutoTopologyTitle: 'Host-Topologie (automatisch)',
|
|
759
|
+
mermaidAutoTopologyMdHint: 'Auto-Topologie nur im HTML-Export verfügbar (Admin-Profil).',
|
|
760
|
+
mermaidAutoTopologyIntro:
|
|
761
|
+
'Adapter-Instanzen nach ioBroker-Host gruppiert, mit einer festen Maximalknotenzahl zur Lesbarkeit. Darstellung horizontal (links nach rechts), damit die Seitenbreite genutzt wird. Kein vollständiger Verbindungs- oder Abhängigkeitsgraph. Ausblenden mit Kapitel-Id mermaid (wie das eigene Mermaid-Diagramm).',
|
|
762
|
+
troubleshootPublicLinksIntro:
|
|
763
|
+
'Diese Seiten erneuern sich bei der Doku-Generierung — passende Links speichern oder teilen.',
|
|
764
|
+
troubleshootPublicLinksHeading: 'Merken & teilen (Links)',
|
|
765
|
+
troubleshootLinkAdmin: 'Technische Doku (Admin-Ansicht)',
|
|
766
|
+
troubleshootLinkUser: 'Alltagsdoku (Familie)',
|
|
767
|
+
troubleshootLinkOnboarding: 'Einfache / Gäste-Ansicht',
|
|
768
|
+
troubleshootQuickFactsTitle: 'Kurz & wichtig',
|
|
769
|
+
troubleshootWifiLabel: 'WLAN / Netz',
|
|
770
|
+
troubleshootPowerLabel: 'Strom / Sicherungen',
|
|
771
|
+
troubleshootWaterLabel: 'Hauptwasser',
|
|
772
|
+
troubleshootExtraLabel: 'Sonstiges',
|
|
773
|
+
troubleshootSnapshotDisclaimer:
|
|
774
|
+
'Stand von der letzten Doku-Erzeugung — kein Live-Monitoring. Technische Info für die Betreuungsperson.',
|
|
775
|
+
troubleshootSnapshotNodeTitle: 'Server-Software sollte geprüft werden',
|
|
776
|
+
troubleshootSnapshotNodeStep1:
|
|
777
|
+
'Die Person, die dieses Smart Home betreut (oder der Provider), sollte die Softwareversion prüfen.',
|
|
778
|
+
troubleshootSnapshotNodeStep2:
|
|
779
|
+
'Offizielle Hinweise zu ioBroker und Node.js (Long-Term-Support) helfen bei geplanten Updates — diese Seite kann nichts einspielen.',
|
|
780
|
+
troubleshootSnapshotNodeStep3:
|
|
781
|
+
'Bis dahin kann alles laufen; veraltete oder keine LTS-Version kann fehlende Sicherheitsupdates bedeuten.',
|
|
782
|
+
onboardingHintTitle: 'Tipp: Mach diese Seite noch besser!',
|
|
783
|
+
onboardingHintText:
|
|
784
|
+
'Füge in den Adapter-Einstellungen eine Beschreibung und Haushinweise hinzu (Manueller Kontext), damit Gäste und Familienmitglieder eine persönliche Einführung bekommen.',
|
|
785
|
+
scanToShare: 'Seite teilen',
|
|
786
|
+
copyLink: 'Link kopieren',
|
|
787
|
+
copied: 'Kopiert!',
|
|
788
|
+
devices: 'Geräte',
|
|
789
|
+
darkMode: 'Dark Mode',
|
|
790
|
+
lightMode: 'Hell Mode',
|
|
791
|
+
adaptersActive: 'aktiv',
|
|
792
|
+
staleDocsWarning: 'Diese Dokumentation könnte veraltet sein.',
|
|
793
|
+
staleDocsWeek: 'Dokumentation ist älter als 7 Tage.',
|
|
794
|
+
staleDocsOld: 'Dokumentation ist älter als 30 Tage — bitte neu generieren.',
|
|
795
|
+
pendingUpdates: 'Updates verfügbar',
|
|
796
|
+
lastBackup: 'Letztes Backup',
|
|
797
|
+
today: 'heute',
|
|
798
|
+
yesterday: 'gestern',
|
|
799
|
+
location: 'Standort',
|
|
800
|
+
city: 'Ort',
|
|
801
|
+
timezone: 'Zeitzone',
|
|
802
|
+
tempUnit: 'Temperatureinheit',
|
|
803
|
+
uptime: 'Laufzeit',
|
|
804
|
+
type: 'Typ',
|
|
805
|
+
value: 'Wert',
|
|
806
|
+
userDefinedVariables: 'Eigene Variablen',
|
|
807
|
+
userDataDesc: 'Datenpunkte unter 0_userdata.0 — selbst angelegte Variablen und Werte.',
|
|
808
|
+
aliases: 'Aliase',
|
|
809
|
+
aliasesDesc: 'Aliase machen fremde Datenpunkte unter einem eigenen Namen zugänglich (alias.0.*).',
|
|
810
|
+
aliasTarget: 'Ziel',
|
|
811
|
+
scoreDesc:
|
|
812
|
+
'Drei getrennte Scores zeigen: **Wie vollständig** autodoc gelesen hat, **welche Inhalte** du hinterlegt hast, und **wie tief** die Dokumentation ist. Der Gesamtwert ist der Durchschnitt.',
|
|
813
|
+
totalSuffix: 'gesamt',
|
|
814
|
+
ramSystemTooltip: 'Belegter / Gesamter System-RAM',
|
|
815
|
+
ramAdapterTooltip: 'Summe aller ioBroker-Prozesse (js-controller + alle Adapter-Instanzen)',
|
|
816
|
+
ramHostTooltip:
|
|
817
|
+
'Nur der ioBroker Host-Prozess (js-controller). Adapter-Instanzen laufen als separate Prozesse.',
|
|
818
|
+
allAdapters: 'alle Adapter',
|
|
819
|
+
scriptHasScheduleTitle: 'Skript mit Zeitplan (Cron)',
|
|
820
|
+
noNotesYet: 'Für dieses Smart Home wurden noch keine besonderen Hinweise hinterlegt. Schau dich gerne um!',
|
|
821
|
+
onboardingSetupHint:
|
|
822
|
+
'Tipp für Administratoren: Projektbeschreibung, Kontaktperson und Hinweise in den Adapter-Einstellungen → „Meine Dokumentation" hinterlegen.',
|
|
823
|
+
onboardingCapabilities: 'Was kann dieses Smart Home?',
|
|
824
|
+
onboardingCapabilitiesDesc: 'Diese Bereiche sind in deinem Smart Home eingerichtet und steuerbar:',
|
|
825
|
+
justNow: 'gerade eben',
|
|
826
|
+
minutesAgo: 'Min. her',
|
|
827
|
+
hoursAgo: 'Std. her',
|
|
828
|
+
daysAgo: 'Tage her',
|
|
829
|
+
cronEvery: 'alle',
|
|
830
|
+
cronDaily: 'täglich',
|
|
831
|
+
cronHourly: 'stündlich',
|
|
832
|
+
cronAt: 'um',
|
|
833
|
+
cronMon: 'Mo',
|
|
834
|
+
cronTue: 'Di',
|
|
835
|
+
cronWed: 'Mi',
|
|
836
|
+
cronThu: 'Do',
|
|
837
|
+
cronFri: 'Fr',
|
|
838
|
+
cronSat: 'Sa',
|
|
839
|
+
cronSun: 'So',
|
|
840
|
+
availableFunctions: 'Steuerbare Bereiche im ganzen Haus:',
|
|
841
|
+
showFunctions: 'Funktionen anzeigen',
|
|
842
|
+
processOnly: 'Prozess',
|
|
843
|
+
searchPrev: 'Vorheriger Treffer',
|
|
844
|
+
searchNext: 'Nächster Treffer',
|
|
845
|
+
searchHint: '↑↓ navigieren · Esc = löschen',
|
|
846
|
+
activeRepo: 'Repository',
|
|
847
|
+
},
|
|
848
|
+
fr: {
|
|
849
|
+
projectDocumentation: name => `Documentation ${name}`,
|
|
850
|
+
generated: 'Généré',
|
|
851
|
+
profile: 'Profil',
|
|
852
|
+
system: 'Système',
|
|
853
|
+
trigger: 'Déclencheur',
|
|
854
|
+
tableOfContents: 'Table des matières',
|
|
855
|
+
systemOverview: 'Aperçu du système',
|
|
856
|
+
adapterInstances: "Instances d'adaptateurs",
|
|
857
|
+
manualInformation: 'Informations manuelles',
|
|
858
|
+
changelog: 'Journal des modifications',
|
|
859
|
+
appendices: 'Appendices',
|
|
860
|
+
projectInformation: 'Informations du projet',
|
|
861
|
+
projectName: 'Nom du projet',
|
|
862
|
+
targetSystem: 'Système cible',
|
|
863
|
+
primaryHost: 'Hôte principal',
|
|
864
|
+
name: 'Nom',
|
|
865
|
+
platform: 'Plateforme',
|
|
866
|
+
hostRuntimePlatform: 'Exécution (hôte ioBroker)',
|
|
867
|
+
operatingSystem: "Système d'exploitation",
|
|
868
|
+
version: 'Version',
|
|
869
|
+
systemStatistics: 'Statistiques du système',
|
|
870
|
+
totalAdapterInstances: "Nombre total d'instances d'adaptateurs",
|
|
871
|
+
enabledInstances: 'Instances activées',
|
|
872
|
+
disabledInstances: 'Instances désactivées',
|
|
873
|
+
totalStateObjects: "Nombre total d'objets d'état",
|
|
874
|
+
writableStates: 'États inscriptibles',
|
|
875
|
+
readOnlyStates: 'États en lecture seule',
|
|
876
|
+
hosts: 'Hôtes',
|
|
877
|
+
// Rooms Chapter
|
|
878
|
+
roomsAndFunctions: 'Pièces & Fonctions',
|
|
879
|
+
rooms: 'Pièces',
|
|
880
|
+
functions: 'Fonctions',
|
|
881
|
+
totalRooms: 'Total des pièces',
|
|
882
|
+
totalFunctions: 'Total des fonctions',
|
|
883
|
+
memberCount: 'Appareils / Points de données',
|
|
884
|
+
noRoomsDefined: "Aucune pièce définie pour l'instant.",
|
|
885
|
+
|
|
886
|
+
// Scripts Chapter
|
|
887
|
+
scripts: 'Scripts',
|
|
888
|
+
totalScripts: 'Total des scripts',
|
|
889
|
+
enabledScripts: 'Scripts actifs',
|
|
890
|
+
disabledScripts: 'Scripts inactifs',
|
|
891
|
+
scriptName: 'Nom',
|
|
892
|
+
scriptFolder: 'Dossier',
|
|
893
|
+
scriptFolderRoot: 'Répertoire racine',
|
|
894
|
+
scriptFolderCommon: 'Scripts généraux',
|
|
895
|
+
scriptFolderGlobal: 'Scripts globaux',
|
|
896
|
+
scriptsByFolderIntro:
|
|
897
|
+
'Les scripts sont regroupés par dossier (comme dans ioBroker). Le dossier « Scripts globaux » s’exécute avant les autres — réservez-le aux utilitaires/partagés, pas aux automatisations courantes.',
|
|
898
|
+
scriptsGlobalFolderHint:
|
|
899
|
+
'Les scripts globaux s’exécutent à chaque redémarrage avant les autres. N’y mettez que fonctions/constantes partagées — pas la logique pièce/appareil (sinon le comportement devient difficile à prévoir).',
|
|
900
|
+
scriptStatus: 'Statut',
|
|
901
|
+
scriptTrigger: 'Déclencheur',
|
|
902
|
+
scriptDescription: 'Texte d’objectif de groupe (common.desc — ioBroker : surtout scripts globaux)',
|
|
903
|
+
scriptEngineInstance: 'Moteur de script (common.engine)',
|
|
904
|
+
scheduleTypeObjects: 'Objets Schedule',
|
|
905
|
+
scheduleTypeObjectsIntro:
|
|
906
|
+
'Objets issus de getObjectView(system, schedule) — type ioBroker « schedule » (p. ex. entrées type calendrier). Distinct des automatisations script.js et des instances en mode d’exécution « schedule ».',
|
|
907
|
+
instanceRunMode: 'Mode d’exécution',
|
|
908
|
+
instanceScheduleCron: 'CRON d’instance (mode schedule)',
|
|
909
|
+
instanceRestartCron: 'CRON de redémarrage (daemon)',
|
|
910
|
+
noScriptsDefined: "Aucun script trouvé (l'adaptateur script n'est peut-être pas installé).",
|
|
911
|
+
scriptAiSummary: 'Explication IA (à partir du code source)',
|
|
912
|
+
automationOverviewAi: 'Automatisations dans ce foyer (aperçu IA)',
|
|
913
|
+
active: 'actif',
|
|
914
|
+
inactive: 'inactif',
|
|
915
|
+
|
|
916
|
+
// Chapitre maintenance (Admin) : checklist + instances désactivées. Le chapitre « Diagnostic » technique est séparé.
|
|
917
|
+
maintenance: 'Maintenance et mise en place documentaire',
|
|
918
|
+
maintenanceChecklist: 'Liste de mise en place (documentation)',
|
|
919
|
+
documentationScore: 'Score global',
|
|
920
|
+
instancesWithoutRoom: 'Instances actives sans pièce assignée',
|
|
921
|
+
checklistProjectNarrative:
|
|
922
|
+
'La description du projet (section « Ma documentation ») atteint la longueur minimale configurée (Adaptateur → Avancé). Des phrases claires aident la lecture et les exports.',
|
|
923
|
+
checklistBaseUrlUnset:
|
|
924
|
+
"URL de base ioBroker renseignée sous Adaptateur → Avancé — nécessaire pour les codes QR et les liens signets depuis d'autres appareils ou réseaux.",
|
|
925
|
+
disabledInstancesHint: 'Instances désactivées',
|
|
926
|
+
disabledInstancesInventoryNote: n =>
|
|
927
|
+
`${n} instance(s) d'adaptateur désactivée(s) — listée(s) ci-dessous à titre informatif. C'est courant et souvent voulu ; cela n'influe pas sur le score de mise en place documentaire.`,
|
|
928
|
+
maintenanceChecklistDisabled:
|
|
929
|
+
'Aucune ligne de checklist n’est activée sous Adaptateur → Avancé (score de mise en place documentaire). Le pourcentage affiché reste à 100 % jusqu’à ce qu’au moins une vérification soit activée.',
|
|
930
|
+
allGood: 'Toutes les vérifications réussies — la documentation est complète.',
|
|
931
|
+
checkOk: 'OK',
|
|
932
|
+
checkIssue: 'À corriger',
|
|
933
|
+
scoreDimData: 'Collecte de données',
|
|
934
|
+
scoreDimDataDesc: 'Autodoc a-t-il pu lire toutes les données système?',
|
|
935
|
+
scoreDimManual: 'Contenu manuel',
|
|
936
|
+
scoreDimManualDesc: "L'utilisateur a-t-il rempli ses propres textes et paramètres?",
|
|
937
|
+
scoreDimDepth: 'Profondeur de documentation',
|
|
938
|
+
scoreDimDepthDesc: "La documentation va-t-elle au-delà d'une simple liste de points de données?",
|
|
939
|
+
checkHostsFound: 'Hôtes ioBroker lisibles',
|
|
940
|
+
checkInstancesFound: "Instances d'adaptateur actives trouvées",
|
|
941
|
+
checkRoomsDefined: 'Pièces / énumérations configurées dans ioBroker',
|
|
942
|
+
checkContactSet: 'Personne de contact renseignée (Ma documentation)',
|
|
943
|
+
checkCustomContent: 'Textes personnalisés remplis (notes, conseils, descriptions pièces/adaptateurs)',
|
|
944
|
+
checkHasDiagram: 'Diagramme réseau disponible (manuel ou topologie auto)',
|
|
945
|
+
checkRoomsHaveDevices: 'Au moins une pièce a des appareils assignés',
|
|
946
|
+
checkHasCustomSections: 'Au moins un chapitre de documentation personnalisé a du contenu',
|
|
947
|
+
checkAiConfigured:
|
|
948
|
+
'Fournisseur IA configuré pour les descriptions de scripts (optionnel é ignoré sans scripts)',
|
|
949
|
+
checkInstancesWithoutRoomInfo: 'Instances actives sans pièce assignée (informatif)',
|
|
950
|
+
|
|
951
|
+
overview: 'Aperçu',
|
|
952
|
+
totalAdapters: "Nombre total d'adaptateurs",
|
|
953
|
+
totalInstances: "Nombre total d'instances",
|
|
954
|
+
adapterDetails: "Détails de l'adaptateur",
|
|
955
|
+
instanceDetails: "Détails de l'instance",
|
|
956
|
+
enabledShort: 'actif',
|
|
957
|
+
adapters: 'Adaptateurs',
|
|
958
|
+
enabled: 'activé',
|
|
959
|
+
disabled: 'désactivé',
|
|
960
|
+
description: 'Description',
|
|
961
|
+
noAdaptersMatch: 'Aucun adaptateur ne correspond au filtre.',
|
|
962
|
+
adapterRunsAutomatically: 'Fonctionne automatiquement — aucune action requise',
|
|
963
|
+
adapterCurrentlyInactive: 'Actuellement inactif',
|
|
964
|
+
adapterActive: 'Actif',
|
|
965
|
+
adapterInactive: 'Inactif',
|
|
966
|
+
// Badges méta adaptateur
|
|
967
|
+
connTypeLocal: '🔌 Local',
|
|
968
|
+
connTypeCloud: '☁️ Cloud',
|
|
969
|
+
dataPush: 'Push',
|
|
970
|
+
dataPoll: 'Polling',
|
|
971
|
+
dataAssumption: 'Annahme',
|
|
972
|
+
tierStable: 'Stable',
|
|
973
|
+
tierTested: 'Testé',
|
|
974
|
+
tierExperimental: 'Expérimental',
|
|
975
|
+
contact: 'Contact',
|
|
976
|
+
additionalNotes: 'Notes supplémentaires',
|
|
977
|
+
quickStart: 'Démarrage rapide',
|
|
978
|
+
quickStartWelcome: 'Bienvenue dans votre documentation ioBroker ! Voici ce que vous devez savoir :',
|
|
979
|
+
quickStartStructuredIntro:
|
|
980
|
+
'Aperçu issu de votre installation — ce qui tourne où, et quelques points forts par pièce (si des appareils sont associés aux pièces).',
|
|
981
|
+
qsSystemTitle: 'En bref',
|
|
982
|
+
qsRoomGuidesTitle: 'Points forts par pièce',
|
|
983
|
+
qsRoomCount: n => `${n} pièce(s) avec appareils`,
|
|
984
|
+
qsFunctionRow: (name, n) => `Zone « ${name} » — ${n} appareil(s)`,
|
|
985
|
+
qsScriptRow: (name, desc) => `Automatisation « ${name} » : ${desc}`,
|
|
986
|
+
atAGlanceTitle: 'Aperçu rapide',
|
|
987
|
+
atAGlanceIntro:
|
|
988
|
+
'Aperçu « résidents » : plus de pièces et de points saillants que dans le démarrage rapide invité (mêmes données de découverte).',
|
|
989
|
+
qsSeeFullRoomsBefore: 'La liste complète, pièce par pièce, se trouve dans le chapitre ',
|
|
990
|
+
qsSeeFullRoomsAfter: ' ci‑dessous.',
|
|
991
|
+
qsRoomCardDevices: n => `${n} appareil(s)`,
|
|
992
|
+
activeAdapters: 'Adaptateurs actifs',
|
|
993
|
+
nextSteps: 'Prochaines étapes',
|
|
994
|
+
nextStepsReview: 'Consultez vos adaptateurs installés ci-dessous',
|
|
995
|
+
nextStepsManual: 'Consultez la section informations manuelles',
|
|
996
|
+
nextStepsAdapters: 'La plupart des adaptateurs fonctionnent automatiquement — aucune configuration nécessaire',
|
|
997
|
+
nextStepsOnboarding1:
|
|
998
|
+
'Plus bas, des sections vous guident (pièces, ce qui tourne en arrière-plan, contact ou notes d’urgence si l’hôte les a saisis dans « Ma documentation »).',
|
|
999
|
+
nextStepsOnboarding2:
|
|
1000
|
+
'Contact, notes de foyer et blocs d’urgence apparaissent dans les chapitres correspondants si l’hôte les a remplis.',
|
|
1001
|
+
nextStepsOnboarding3:
|
|
1002
|
+
'Les invités n’ont pas à modifier la configuration — c’est le rôle du responsable de l’installation ioBroker.',
|
|
1003
|
+
onboardingAutomationsOmitted: n =>
|
|
1004
|
+
`Encore ${n} script(s) JavaScript tournent en arrière-plan ; la liste n’est pas entièrement affichée dans cette vue invité. L’exhaustif est dans la documentation technique (admin).`,
|
|
1005
|
+
onboardingAutomationsSummaryBody: n =>
|
|
1006
|
+
`${n} automatisation(s) JavaScript activée(s) tournent en arrière-plan — vous n’avez rien à faire. Les noms de fichiers internes ne sont pas listés dans cette vue invité (souvent techniques ou personnels). La liste complète figure dans le profil documentation « admin ».`,
|
|
1007
|
+
members: 'Membres',
|
|
1008
|
+
noRoomsMatch: 'Aucune pièce ne correspond au filtre.',
|
|
1009
|
+
noFunctionsMatch: 'Aucune fonction ne correspond au filtre.',
|
|
1010
|
+
noScriptsMatch: 'Aucun script ne correspond au filtre.',
|
|
1011
|
+
stateReferences: "Références d'état",
|
|
1012
|
+
stateReferencesDesc:
|
|
1013
|
+
'États référencés par des scripts (analyse statique du code). La colonne de droite reprend le champ optionnel common.desc de l’objet script (schéma ioBroker : « group purpose description »), comme dans la liste ; « — » si vide.',
|
|
1014
|
+
script: 'Script',
|
|
1015
|
+
referencedStates: 'États référencés',
|
|
1016
|
+
sharedStates: 'États partagés',
|
|
1017
|
+
sharedStatesDesc: "États utilisés par plus d'un script.",
|
|
1018
|
+
stateId: "ID d'état",
|
|
1019
|
+
usedByScripts: 'Utilisé par des scripts',
|
|
1020
|
+
noSharedStatesMatch: 'Aucun état partagé ne correspond au filtre.',
|
|
1021
|
+
stateReferencesExpandSummary: (scriptCount, refCount) =>
|
|
1022
|
+
`Afficher les tableaux de références d’état — ${scriptCount} script(s), ${refCount} référence(s) (repliés par défaut)`,
|
|
1023
|
+
sharedStatesExpandSummary: n =>
|
|
1024
|
+
`Afficher le tableau des états partagés — ${n} état(s) utilisé(s) par plusieurs scripts (replié par défaut)`,
|
|
1025
|
+
userdataExpandSummary: (itemCount, groupCount) =>
|
|
1026
|
+
`Afficher tous les points userdata — ${itemCount} dans ${groupCount} groupe(s) (replié par défaut)`,
|
|
1027
|
+
aliasesExpandSummary: (itemCount, groupCount) =>
|
|
1028
|
+
`Afficher tous les alias — ${itemCount} dans ${groupCount} groupe(s) (replié par défaut)`,
|
|
1029
|
+
diagnosis: 'Diagnostic',
|
|
1030
|
+
diagScanStatus: 'Statut de collecte',
|
|
1031
|
+
diagActive: 'actif',
|
|
1032
|
+
diagInactive: 'inactif',
|
|
1033
|
+
diagWhereToLook: 'Où chercher',
|
|
1034
|
+
diagWhatLabel: 'Quoi',
|
|
1035
|
+
diagWhereLabel: 'Où',
|
|
1036
|
+
diagLogsLabel: "Journaux de l'adaptateur",
|
|
1037
|
+
diagLogsValue: "Admin UI → onglet « Log » → filtrer par nom d'adaptateur",
|
|
1038
|
+
diagAliveLabel: 'Processus adaptateur en cours ?',
|
|
1039
|
+
diagAliveHint: '(true = processus actif, false = planté ou arrêté)',
|
|
1040
|
+
diagConnectedLabel: "Adaptateur connecté à l'appareil/service ?",
|
|
1041
|
+
diagConnectedHint: '(true = connexion établie)',
|
|
1042
|
+
diagFindings: 'Résultats de ce scan',
|
|
1043
|
+
diagFindingDisabled: n =>
|
|
1044
|
+
`${n} instance(s) d'adaptateur désactivée(s) — purement informatif (souvent voulu ; voir le chapitre « Maintenance et mise en place documentaire »)`,
|
|
1045
|
+
diagFindingNone: 'Aucun problème détecté dans ce scan.',
|
|
1046
|
+
// Dépannage
|
|
1047
|
+
troubleshooting: 'Dépannage',
|
|
1048
|
+
tsAdapterNotStarting: "L'adaptateur ne démarre pas",
|
|
1049
|
+
tsAdapterNotStartingSymptom: "Symptôme : alive = false, l'adaptateur redémarre en boucle",
|
|
1050
|
+
tsAdapterNotStarting1: "Vérifier l'onglet Log pour les messages d'erreur de cet adaptateur",
|
|
1051
|
+
tsAdapterNotStarting2: 'Causes fréquentes : IP/port incorrect, identifiants manquants, port déjà utilisé',
|
|
1052
|
+
tsAdapterNotStarting3: "Désactiver l'adaptateur, corriger la configuration, réactiver",
|
|
1053
|
+
tsAdapterNotConnected: "L'adaptateur fonctionne mais ne se connecte pas à l'appareil/service",
|
|
1054
|
+
tsAdapterNotConnectedSymptom: 'Symptôme : alive = true, connected = false, pas de mise à jour des états',
|
|
1055
|
+
tsAdapterNotConnected1: "Réseau : l'appareil est-il joignable ? (ping, navigateur)",
|
|
1056
|
+
tsAdapterNotConnected2: 'Identifiants : clé API, mot de passe ou token corrects ?',
|
|
1057
|
+
tsAdapterNotConnected3: 'Adaptateur Push : port entrant ouvert dans le pare-feu ?',
|
|
1058
|
+
tsScriptNotRunning: "Le script ne s'exécute pas",
|
|
1059
|
+
tsScriptNotRunningSymptom: "Symptôme : pas de changement d'état, pas de sortie dans le log",
|
|
1060
|
+
tsScriptNotRunning1: "Le script est-il activé ? (point vert dans l'éditeur de scripts)",
|
|
1061
|
+
tsScriptNotRunning2: "L'adaptateur javascript est-il actif ?",
|
|
1062
|
+
tsScriptNotRunning2Warn: "L'adaptateur javascript n'est PAS actif — les scripts ne peuvent pas s'exécuter",
|
|
1063
|
+
tsScriptNotRunning3: 'Vérifier le log du script dans l\'onglet Log (filtre : "javascript")',
|
|
1064
|
+
tsDocNotGenerated: "La documentation n'est pas générée automatiquement",
|
|
1065
|
+
tsDocNotGeneratedSymptom: 'Symptôme : pas de nouveaux fichiers dans /files/autodoc.0/, pas de mise à jour',
|
|
1066
|
+
tsDocNotGenerated1: "L'instance autodoc est-elle en cours d'exécution ?",
|
|
1067
|
+
tsDocNotGenerated2:
|
|
1068
|
+
'Vérifier les déclencheurs : au moins un doit s’appliquer — au démarrage, intervalle horaire (> 0, plan séparé), ou lors des changements d’adaptateur (case « événement » cochée)',
|
|
1069
|
+
tsDocNotGenerated3: 'Déclencher manuellement : mettre autodoc.0.action.generate = true',
|
|
1070
|
+
collectorStatus: 'Statut du collecteur',
|
|
1071
|
+
instancesDetected: 'Instances détectées',
|
|
1072
|
+
stateObjectsScanned: "Objets d'état scannés",
|
|
1073
|
+
nodeVersion: 'Version Node',
|
|
1074
|
+
npmVersion: 'Version npm',
|
|
1075
|
+
npmVersionHint: 'Rapport hôte ou npm local sur l’hôte de l’instance si absent de la base d’objets.',
|
|
1076
|
+
jsControllerVersion: 'Version js-controller',
|
|
1077
|
+
osKernel: 'OS / Kernel',
|
|
1078
|
+
osArch: 'Architecture',
|
|
1079
|
+
nodeVersionOutdated: 'Node.js {0} — version inférieure au LTS recommandé (v20+). Mise à niveau recommandée.',
|
|
1080
|
+
nodeVersionOk: 'Node.js {0} — LTS ✓',
|
|
1081
|
+
osUpdateHint: "Maintenez le système d'exploitation à jour avec les correctifs de sécurité.",
|
|
1082
|
+
aiSummary: 'Résumé IA',
|
|
1083
|
+
filterPlaceholder: 'Filtrer...',
|
|
1084
|
+
searchPlaceholder: 'Rechercher… (Entrée = suivant)',
|
|
1085
|
+
adapterFilterPlaceholder: 'Filtrer les adaptateurs…',
|
|
1086
|
+
adapterFilterHint: 'Filtrer par nom, description, Stable/Testé/Expérimental, Local/Cloud, Push/Poll',
|
|
1087
|
+
disabledAdaptersGroup: '{0} instances désactivées — afficher',
|
|
1088
|
+
scriptFilterPlaceholder: 'Filtrer les scripts…',
|
|
1089
|
+
scriptFilterHint: 'Filtrer par nom, objectif de groupe (common.desc), type de déclencheur ou dossier',
|
|
1090
|
+
disabledScriptsGroup: '{0} scripts inactifs — afficher',
|
|
1091
|
+
stateObjectsSummary: "Résumé des objets d'état",
|
|
1092
|
+
total: 'Total',
|
|
1093
|
+
writable: 'Inscriptible',
|
|
1094
|
+
readOnly: 'Lecture seule',
|
|
1095
|
+
collectionInformation: 'Informations de collecte',
|
|
1096
|
+
collectedAt: 'Collecté à',
|
|
1097
|
+
schemaVersion: 'Version du schéma',
|
|
1098
|
+
generatedBy: 'Généré par ioBroker.autodoc v',
|
|
1099
|
+
|
|
1100
|
+
// Catégories de rôles
|
|
1101
|
+
catLight: 'Lumière',
|
|
1102
|
+
catDimmer: 'Variateur',
|
|
1103
|
+
catBlind: 'Volet',
|
|
1104
|
+
catThermostat: 'Climat',
|
|
1105
|
+
catHumidity: 'Humidité',
|
|
1106
|
+
catMotion: 'Mouvement',
|
|
1107
|
+
catDoor: 'Porte',
|
|
1108
|
+
catWindow: 'Fenêtre',
|
|
1109
|
+
catAlarm: 'Alarme',
|
|
1110
|
+
catLock: 'Serrure',
|
|
1111
|
+
catSwitch: 'Interrupteur',
|
|
1112
|
+
catMedia: 'Médias',
|
|
1113
|
+
catCamera: 'Caméra',
|
|
1114
|
+
catPower: 'Énergie',
|
|
1115
|
+
catOther: 'Appareil',
|
|
1116
|
+
|
|
1117
|
+
// Phase 4 — Refonte des profils
|
|
1118
|
+
deviceHierarchy: 'Hiérarchie des appareils',
|
|
1119
|
+
category: 'Catégorie',
|
|
1120
|
+
noDevicesInRoom: 'Aucun appareil assigné à cette pièce.',
|
|
1121
|
+
automations: 'Automatisations',
|
|
1122
|
+
connectedSystems: 'Systèmes connectés',
|
|
1123
|
+
yourRooms: 'Vos pièces',
|
|
1124
|
+
tipsAndNotes: 'Conseils & Notes',
|
|
1125
|
+
whatCanBeControlled: 'Ce qui peut être contrôlé :',
|
|
1126
|
+
whatRunsAutomatically: 'Que se passe-t-il automatiquement ? (moteur de scripts / JavaScript)',
|
|
1127
|
+
automationsIntro:
|
|
1128
|
+
'Ces fonctions proviennent de scripts JavaScript activés dans ioBroker — elles s’exécutent en arrière-plan ; vous n’avez rien à faire :',
|
|
1129
|
+
noActiveScripts:
|
|
1130
|
+
'Aucun script JavaScript activé ici. Blockly, d’autres moteurs de règles ou les automatisations dans d’autres adaptateurs ne figurent pas encore dans cette section.',
|
|
1131
|
+
roomsHiddenHint: '{0} pièce(s) masquée(s) par configuration.',
|
|
1132
|
+
adaptersHiddenHint: '{0} adaptateur(s) masqué(s) par configuration.',
|
|
1133
|
+
moreScripts: '{0} scripts supplémentaires (sans description)',
|
|
1134
|
+
moreChanges: 'modifications',
|
|
1135
|
+
olderEntries: '{0} entrées plus anciennes',
|
|
1136
|
+
changelogChange_instance_count: 'Instances d’adaptateur',
|
|
1137
|
+
changelogChange_enabled_instances: 'Instances activées',
|
|
1138
|
+
changelogChange_state_objects: 'Objets d’état',
|
|
1139
|
+
changelogChange_project_name: 'Nom du projet',
|
|
1140
|
+
changelogChange_adapter_version: 'Mise à jour adaptateur',
|
|
1141
|
+
changelogMsgAdapterVersion: (title, id, prev, curr) =>
|
|
1142
|
+
`Adaptateur « ${title} » (${id}) : ${prev || '?'} → ${curr || '?'}`,
|
|
1143
|
+
changelogTruncated: '10 entrées affichées sur {0}.',
|
|
1144
|
+
onboardingWelcome: name => `Bienvenue dans ${name}`,
|
|
1145
|
+
onboardingWelcomeCity: (name, city) => `Bienvenue dans ${name} — ${city}`,
|
|
1146
|
+
onboardingIntro: 'Ce document explique comment fonctionne votre maison intelligente.',
|
|
1147
|
+
guestHelpTitle: 'Aide & urgences',
|
|
1148
|
+
customDocSectionsTitle: 'Sections personnalisées',
|
|
1149
|
+
homeRoutinesTitle: 'Routines avec vos mots',
|
|
1150
|
+
homeRoutinesIntro: 'Rédigé par les habitants — pas généré automatiquement à partir des scripts.',
|
|
1151
|
+
ownerPlaybookTitle: 'Comment on fait tourner la maison',
|
|
1152
|
+
ownerPlaybookIntro:
|
|
1153
|
+
'Votre mode d’emploi — ordre habituel, indispensables et ce qu’il ne faut pas modifier. Rédigé par les habitants ; pas généré automatiquement.',
|
|
1154
|
+
mermaidDiagramTitle: 'Schéma (Mermaid)',
|
|
1155
|
+
mermaidDiagramIntro:
|
|
1156
|
+
'Diagramme issu des paramètres de documentation (Mermaid). L’export HTML intègre du SVG si le paquet optionnel @mermaid-js/mermaid-cli est installé ; sinon le navigateur charge Mermaid via jsDelivr. Le Markdown conserve la source pour les lecteurs compatibles Mermaid. Astuce : flowchart LR (gauche → droite) utilise mieux la largeur qu’une chaîne verticale.',
|
|
1157
|
+
mermaidAutoTopologyTitle: 'Topologie des hôtes (automatique)',
|
|
1158
|
+
mermaidAutoTopologyMdHint: "Auto-topologie disponible uniquement dans l'export HTML (profil Admin).",
|
|
1159
|
+
mermaidAutoTopologyIntro:
|
|
1160
|
+
'Instances d’adaptateurs regroupées par hôte ioBroker, avec un nombre maximal de nœuds pour la lisibilité. Mise en page horizontale pour utiliser la largeur de page. Ce n’est pas un schéma complet des liaisons ou dépendances. Masquez avec l’id de chapitre mermaid (comme pour votre schéma Mermaid personnel).',
|
|
1161
|
+
troubleshootPublicLinksIntro:
|
|
1162
|
+
'Ces pages se mettent à jour quand la doc est regénérée — gardez ou partagez le lien utile.',
|
|
1163
|
+
troubleshootPublicLinksHeading: 'Liens favoris',
|
|
1164
|
+
troubleshootLinkAdmin: 'Documentation technique (admin)',
|
|
1165
|
+
troubleshootLinkUser: 'Doc quotidienne / famille',
|
|
1166
|
+
troubleshootLinkOnboarding: 'Vue invité / simple',
|
|
1167
|
+
troubleshootQuickFactsTitle: 'L’essentiel',
|
|
1168
|
+
troubleshootWifiLabel: 'Wi‑Fi / réseau',
|
|
1169
|
+
troubleshootPowerLabel: 'Électricité / disjoncteurs',
|
|
1170
|
+
troubleshootWaterLabel: 'Coupure d’eau',
|
|
1171
|
+
troubleshootExtraLabel: 'Autre',
|
|
1172
|
+
troubleshootSnapshotDisclaimer:
|
|
1173
|
+
'Instantané à la génération de cette page — pas une surveillance en direct. Détail pour la personne qui entretient le système.',
|
|
1174
|
+
troubleshootSnapshotNodeTitle: 'Le logiciel serveur peut nécessiter une mise à jour',
|
|
1175
|
+
troubleshootSnapshotNodeStep1:
|
|
1176
|
+
'Demandez à la personne qui gère cette maison connectée (ou à l’hébergeur) de vérifier la version du logiciel.',
|
|
1177
|
+
troubleshootSnapshotNodeStep2:
|
|
1178
|
+
'Elle peut suivre les recommandations officielles ioBroker / Node.js (versions supportées) — cette page ne met rien à jour.',
|
|
1179
|
+
troubleshootSnapshotNodeStep3:
|
|
1180
|
+
'En attendant, tout peut fonctionner ; rester sur une version ancienne ou non LTS peut limiter les correctifs de sécurité.',
|
|
1181
|
+
onboardingHintTitle: 'Conseil : Améliorez cette page !',
|
|
1182
|
+
onboardingHintText:
|
|
1183
|
+
"Ajoutez une description et des notes de maison dans les paramètres de l'adaptateur (Contexte manuel) pour que les invités et les membres de la famille reçoivent une introduction personnalisée.",
|
|
1184
|
+
scanToShare: 'Partager cette page',
|
|
1185
|
+
copyLink: 'Copier le lien',
|
|
1186
|
+
copied: 'Copié !',
|
|
1187
|
+
devices: 'Appareils',
|
|
1188
|
+
darkMode: 'Mode sombre',
|
|
1189
|
+
lightMode: 'Mode clair',
|
|
1190
|
+
adaptersActive: 'actifs',
|
|
1191
|
+
staleDocsWarning: 'Cette documentation pourrait être obsolète.',
|
|
1192
|
+
staleDocsWeek: 'Documentation vieille de plus de 7 jours.',
|
|
1193
|
+
staleDocsOld: 'Documentation vieille de plus de 30 jours — veuillez régénérer.',
|
|
1194
|
+
pendingUpdates: 'Mises à jour disponibles',
|
|
1195
|
+
lastBackup: 'Dernière sauvegarde',
|
|
1196
|
+
today: "aujourd'hui",
|
|
1197
|
+
yesterday: 'hier',
|
|
1198
|
+
location: 'Emplacement',
|
|
1199
|
+
city: 'Ville',
|
|
1200
|
+
timezone: 'Fuseau horaire',
|
|
1201
|
+
tempUnit: 'Unité de température',
|
|
1202
|
+
uptime: 'Temps de fonctionnement',
|
|
1203
|
+
type: 'Type',
|
|
1204
|
+
value: 'Valeur',
|
|
1205
|
+
userDefinedVariables: 'Variables personnalisées',
|
|
1206
|
+
userDataDesc: "Points de données sous 0_userdata.0 — variables et valeurs créées par l'utilisateur.",
|
|
1207
|
+
aliases: 'Alias',
|
|
1208
|
+
aliasesDesc:
|
|
1209
|
+
'Les alias rendent des points de données étrangers accessibles sous un nom personnalisé (alias.0.*).',
|
|
1210
|
+
aliasTarget: 'Cible',
|
|
1211
|
+
scoreDesc:
|
|
1212
|
+
'Trois scores distincts indiquent : **dans quelle mesure** autodoc a pu lire les données, **quel contenu** vous avez fourni, et **quelle profondeur** a la documentation. Le score global est la moyenne des trois.',
|
|
1213
|
+
totalSuffix: 'total',
|
|
1214
|
+
ramSystemTooltip: 'RAM utilisé / total du système',
|
|
1215
|
+
ramAdapterTooltip: "Somme de tous les processus ioBroker (js-controller + toutes les instances d'adaptateurs)",
|
|
1216
|
+
ramHostTooltip:
|
|
1217
|
+
"Processus hôte ioBroker uniquement (js-controller). Les instances d'adaptateurs sont des processus séparés.",
|
|
1218
|
+
allAdapters: 'tous les adaptateurs',
|
|
1219
|
+
scriptHasScheduleTitle: 'Script planifié (cron)',
|
|
1220
|
+
noNotesYet:
|
|
1221
|
+
"Aucune note spéciale n'a encore été ajoutée pour cette maison intelligente. N'hésitez pas à explorer!",
|
|
1222
|
+
onboardingSetupHint:
|
|
1223
|
+
"Conseil pour les administrateurs : ajoutez une description, un contact et des notes dans les paramètres de l'adaptateur → « Ma documentation ».",
|
|
1224
|
+
onboardingCapabilities: 'Que peut faire cette maison intelligente ?',
|
|
1225
|
+
onboardingCapabilitiesDesc: 'Ces domaines sont configurés et contrôlables dans votre maison intelligente :',
|
|
1226
|
+
justNow: "à l'instant",
|
|
1227
|
+
minutesAgo: 'min. passées',
|
|
1228
|
+
hoursAgo: 'h passées',
|
|
1229
|
+
daysAgo: 'jours passés',
|
|
1230
|
+
cronEvery: 'toutes les',
|
|
1231
|
+
cronDaily: 'quotidien',
|
|
1232
|
+
cronHourly: 'toutes les heures',
|
|
1233
|
+
cronAt: 'à',
|
|
1234
|
+
cronMon: 'Lun',
|
|
1235
|
+
cronTue: 'Mar',
|
|
1236
|
+
cronWed: 'Mer',
|
|
1237
|
+
cronThu: 'Jeu',
|
|
1238
|
+
cronFri: 'Ven',
|
|
1239
|
+
cronSat: 'Sam',
|
|
1240
|
+
cronSun: 'Dim',
|
|
1241
|
+
availableFunctions: 'Zones contrôlables dans toute la maison :',
|
|
1242
|
+
showFunctions: 'Afficher les fonctions',
|
|
1243
|
+
processOnly: 'processus',
|
|
1244
|
+
searchPrev: 'Résultat précédent',
|
|
1245
|
+
searchNext: 'Résultat suivant',
|
|
1246
|
+
searchHint: '↑↓ naviguer · Échap = effacer',
|
|
1247
|
+
activeRepo: 'Dépôt',
|
|
1248
|
+
},
|
|
1249
|
+
};
|
|
1250
|
+
|
|
1251
|
+
/**
|
|
1252
|
+
* Internationalization helper for AutoDoc translations.
|
|
1253
|
+
*/
|
|
1254
|
+
class I18n {
|
|
1255
|
+
/**
|
|
1256
|
+
* Initialize with default language.
|
|
1257
|
+
*/
|
|
1258
|
+
constructor() {
|
|
1259
|
+
this.currentLanguage = 'en';
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
/**
|
|
1263
|
+
* Set the current language for translations
|
|
1264
|
+
*
|
|
1265
|
+
* @param {string} lang Language code (e.g., 'en', 'de', 'fr')
|
|
1266
|
+
*/
|
|
1267
|
+
setLanguage(lang) {
|
|
1268
|
+
if (translations[lang]) {
|
|
1269
|
+
this.currentLanguage = lang;
|
|
1270
|
+
} else {
|
|
1271
|
+
// Fallback to English if language not found
|
|
1272
|
+
this.currentLanguage = 'en';
|
|
1273
|
+
}
|
|
1274
|
+
}
|
|
1275
|
+
|
|
1276
|
+
/**
|
|
1277
|
+
* Get a translated string
|
|
1278
|
+
*
|
|
1279
|
+
* @param {string} key Translation key
|
|
1280
|
+
* @param {*} args Optional arguments for template functions
|
|
1281
|
+
* @returns {string} Translated string or key if not found
|
|
1282
|
+
*/
|
|
1283
|
+
t(key, ...args) {
|
|
1284
|
+
const lang = translations[this.currentLanguage];
|
|
1285
|
+
if (!lang || !lang[key]) {
|
|
1286
|
+
// Fallback to English
|
|
1287
|
+
const enLang = translations.en;
|
|
1288
|
+
if (enLang[key]) {
|
|
1289
|
+
const value = enLang[key];
|
|
1290
|
+
return typeof value === 'function' ? value(...args) : value;
|
|
1291
|
+
}
|
|
1292
|
+
return key;
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
const value = lang[key];
|
|
1296
|
+
return typeof value === 'function' ? value(...args) : value;
|
|
1297
|
+
}
|
|
1298
|
+
|
|
1299
|
+
/**
|
|
1300
|
+
* Get available languages
|
|
1301
|
+
*
|
|
1302
|
+
* @returns {string[]} Array of language codes
|
|
1303
|
+
*/
|
|
1304
|
+
getAvailableLanguages() {
|
|
1305
|
+
return Object.keys(translations);
|
|
1306
|
+
}
|
|
1307
|
+
}
|
|
1308
|
+
|
|
1309
|
+
module.exports = I18n;
|