@gooddata/sdk-ui 10.33.0-alpha.8 → 10.33.0-alpha.80

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.
Files changed (71) hide show
  1. package/esm/base/localization/bundles/de-DE.json +1 -1
  2. package/esm/base/localization/bundles/de-DE.localization-bundle.js +2 -2
  3. package/esm/base/localization/bundles/de-DE.localization-bundle.js.map +1 -1
  4. package/esm/base/localization/bundles/en-AU.json +1 -1
  5. package/esm/base/localization/bundles/en-AU.localization-bundle.js +2 -2
  6. package/esm/base/localization/bundles/en-AU.localization-bundle.js.map +1 -1
  7. package/esm/base/localization/bundles/en-GB.json +1 -1
  8. package/esm/base/localization/bundles/en-GB.localization-bundle.js +2 -2
  9. package/esm/base/localization/bundles/en-GB.localization-bundle.js.map +1 -1
  10. package/esm/base/localization/bundles/en-US.json +347 -347
  11. package/esm/base/localization/bundles/en-US.localization-bundle.d.ts +747 -3754
  12. package/esm/base/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  13. package/esm/base/localization/bundles/en-US.localization-bundle.js +748 -3755
  14. package/esm/base/localization/bundles/en-US.localization-bundle.js.map +1 -1
  15. package/esm/base/localization/bundles/es-419.json +1 -1
  16. package/esm/base/localization/bundles/es-419.localization-bundle.js +2 -2
  17. package/esm/base/localization/bundles/es-419.localization-bundle.js.map +1 -1
  18. package/esm/base/localization/bundles/es-ES.json +1 -1
  19. package/esm/base/localization/bundles/es-ES.localization-bundle.js +2 -2
  20. package/esm/base/localization/bundles/es-ES.localization-bundle.js.map +1 -1
  21. package/esm/base/localization/bundles/fi-FI.json +1 -1
  22. package/esm/base/localization/bundles/fi-FI.localization-bundle.js +2 -2
  23. package/esm/base/localization/bundles/fi-FI.localization-bundle.js.map +1 -1
  24. package/esm/base/localization/bundles/fr-CA.json +1 -1
  25. package/esm/base/localization/bundles/fr-CA.localization-bundle.js +2 -2
  26. package/esm/base/localization/bundles/fr-CA.localization-bundle.js.map +1 -1
  27. package/esm/base/localization/bundles/fr-FR.json +1 -1
  28. package/esm/base/localization/bundles/fr-FR.localization-bundle.js +2 -2
  29. package/esm/base/localization/bundles/fr-FR.localization-bundle.js.map +1 -1
  30. package/esm/base/localization/bundles/it-IT.json +1 -1
  31. package/esm/base/localization/bundles/it-IT.localization-bundle.js +2 -2
  32. package/esm/base/localization/bundles/it-IT.localization-bundle.js.map +1 -1
  33. package/esm/base/localization/bundles/ja-JP.json +1 -1
  34. package/esm/base/localization/bundles/ja-JP.localization-bundle.js +2 -2
  35. package/esm/base/localization/bundles/ja-JP.localization-bundle.js.map +1 -1
  36. package/esm/base/localization/bundles/ko-KR.json +1 -1
  37. package/esm/base/localization/bundles/ko-KR.localization-bundle.js +2 -2
  38. package/esm/base/localization/bundles/ko-KR.localization-bundle.js.map +1 -1
  39. package/esm/base/localization/bundles/nl-NL.json +1 -1
  40. package/esm/base/localization/bundles/nl-NL.localization-bundle.js +2 -2
  41. package/esm/base/localization/bundles/nl-NL.localization-bundle.js.map +1 -1
  42. package/esm/base/localization/bundles/pl-PL.json +1 -1
  43. package/esm/base/localization/bundles/pl-PL.localization-bundle.js +2 -2
  44. package/esm/base/localization/bundles/pl-PL.localization-bundle.js.map +1 -1
  45. package/esm/base/localization/bundles/pt-BR.json +1 -1
  46. package/esm/base/localization/bundles/pt-BR.localization-bundle.js +2 -2
  47. package/esm/base/localization/bundles/pt-BR.localization-bundle.js.map +1 -1
  48. package/esm/base/localization/bundles/pt-PT.json +1 -1
  49. package/esm/base/localization/bundles/pt-PT.localization-bundle.js +2 -2
  50. package/esm/base/localization/bundles/pt-PT.localization-bundle.js.map +1 -1
  51. package/esm/base/localization/bundles/ru-RU.json +1 -1
  52. package/esm/base/localization/bundles/ru-RU.localization-bundle.js +2 -2
  53. package/esm/base/localization/bundles/ru-RU.localization-bundle.js.map +1 -1
  54. package/esm/base/localization/bundles/tr-TR.json +1 -1
  55. package/esm/base/localization/bundles/tr-TR.localization-bundle.js +2 -2
  56. package/esm/base/localization/bundles/tr-TR.localization-bundle.js.map +1 -1
  57. package/esm/base/localization/bundles/zh-HK.json +1 -1
  58. package/esm/base/localization/bundles/zh-HK.localization-bundle.js +2 -2
  59. package/esm/base/localization/bundles/zh-HK.localization-bundle.js.map +1 -1
  60. package/esm/base/localization/bundles/zh-Hans.json +1 -1
  61. package/esm/base/localization/bundles/zh-Hans.localization-bundle.js +2 -2
  62. package/esm/base/localization/bundles/zh-Hans.localization-bundle.js.map +1 -1
  63. package/esm/base/localization/bundles/zh-Hant.json +1 -1
  64. package/esm/base/localization/bundles/zh-Hant.localization-bundle.js +2 -2
  65. package/esm/base/localization/bundles/zh-Hant.localization-bundle.js.map +1 -1
  66. package/esm/base/react/legacy/withEntireDataView.d.ts +5 -0
  67. package/esm/base/react/legacy/withEntireDataView.d.ts.map +1 -1
  68. package/esm/base/react/legacy/withEntireDataView.js +3 -3
  69. package/esm/base/react/legacy/withEntireDataView.js.map +1 -1
  70. package/esm/sdk-ui.d.ts +4 -0
  71. package/package.json +8 -9
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "empty_value": {
3
3
  "value": "empty value",
4
- "comment": "",
4
+ "comment": "Text displayed when a data field has no value. Used throughout the application to represent null or undefined values in data displays and tables.",
5
5
  "limit": 0
6
6
  },
7
7
  "gs.date.at": {
8
8
  "value": "at",
9
- "comment": "",
9
+ "comment": "Preposition used for connecting date and time expressions, e.g., 'January 1, 2023 at 3:00 PM'. Used in various date-time displays throughout the application.",
10
10
  "limit": 0
11
11
  },
12
12
  "gs.time": {
13
13
  "value": "time",
14
- "comment": "",
14
+ "comment": "Global string for displaying time units or labels. Used in various time-related components or expressions, such as 'Meeting time' or timestamp displays.",
15
15
  "limit": 0
16
16
  },
17
17
  "gs.header.help": {
18
18
  "value": "Help",
19
- "comment": "",
19
+ "comment": "Label for the help button in the global application header. Clicking this opens the help menu or documentation.",
20
20
  "limit": 0
21
21
  },
22
22
  "gs.header.help.label": {
23
23
  "value": "Help links",
24
- "comment": "",
24
+ "comment": "ARIA label for the help links section in the help menu. Used for accessibility purposes to describe the collection of help-related links.",
25
25
  "limit": 0
26
26
  },
27
27
  "gs.header.search": {
@@ -36,22 +36,22 @@
36
36
  },
37
37
  "gs.header.logo.title.accessibility": {
38
38
  "value": "Application logo",
39
- "comment": "",
39
+ "comment": "Accessibility text for the application logo in the header. Used by screen readers to identify the logo element.",
40
40
  "limit": 0
41
41
  },
42
42
  "gs.header.href.accessibility": {
43
43
  "value": "Go to homepage",
44
- "comment": "",
44
+ "comment": "Accessibility text describing the action of clicking the application logo in the header, which navigates to the homepage.",
45
45
  "limit": 0
46
46
  },
47
47
  "gs.header.accessibility.label": {
48
48
  "value": "Global application header",
49
- "comment": "",
49
+ "comment": "ARIA label for the main header section of the application. Used by screen readers to identify the header area.",
50
50
  "limit": 0
51
51
  },
52
52
  "gs.header.menu.accessibility.label": {
53
53
  "value": "Global navigation",
54
- "comment": "",
54
+ "comment": "ARIA label for the primary navigation menu in the header. Used by screen readers to identify the main navigation area.",
55
55
  "limit": 0
56
56
  },
57
57
  "gs.header.notifications": {
@@ -61,42 +61,42 @@
61
61
  },
62
62
  "gs.header.logout": {
63
63
  "value": "Logout",
64
- "comment": "",
64
+ "comment": "Label for the logout button in the user menu. Clicking this signs the user out of their current session.",
65
65
  "limit": 0
66
66
  },
67
67
  "gs.header.workspaceSettings": {
68
68
  "value": "Workspace settings",
69
- "comment": "",
69
+ "comment": "Label for the workspace settings option in the user menu. Clicking this navigates to the workspace configuration page.",
70
70
  "limit": 0
71
71
  },
72
72
  "gs.header.account.title": {
73
73
  "value": "Account",
74
- "comment": "",
74
+ "comment": "Title for the user account menu in the header. Displays user-related options like profile settings and logout.",
75
75
  "limit": 0
76
76
  },
77
77
  "gs.list.all": {
78
78
  "value": "All",
79
- "comment": "",
79
+ "comment": "Option in filter controls to select all items. Used in various dropdown lists and filter components.",
80
80
  "limit": 0
81
81
  },
82
82
  "gs.list.except": {
83
83
  "value": "except",
84
- "comment": "",
84
+ "comment": "Used in filter expressions to indicate exclusion, e.g., 'All except [selected items]'. Appears in filter components.",
85
85
  "limit": 0
86
86
  },
87
87
  "gs.list.is": {
88
88
  "value": "is",
89
- "comment": "",
89
+ "comment": "Used in filter expressions to indicate equality, e.g., 'Product is Shoes'. Appears in filter component descriptions.",
90
90
  "limit": 0
91
91
  },
92
92
  "gs.list.search.placeholder": {
93
93
  "value": "Search…",
94
- "comment": "Use '…' as one character, not 3 dots ('...').",
94
+ "comment": "Placeholder text displayed in search input fields within list components, prompting users to enter search terms.",
95
95
  "limit": 0
96
96
  },
97
97
  "gs.list.acessibility.search.label": {
98
98
  "value": "Search attribute values",
99
- "comment": "",
99
+ "comment": "ARIA label for search input fields in attribute filter components. Used by screen readers to identify the search functionality.",
100
100
  "limit": 0
101
101
  },
102
102
  "gs.list.notAvailableAbbreviation": {
@@ -106,37 +106,37 @@
106
106
  },
107
107
  "gs.list.searchResults": {
108
108
  "value": "search results",
109
- "comment": "",
109
+ "comment": "Label for indicating search results in filter dropdowns and list components. Used in phrases like '5 search results'.",
110
110
  "limit": 0
111
111
  },
112
112
  "gs.visualizationsList.loading": {
113
113
  "value": "Loading…",
114
- "comment": "Use '…' as one character, not 3 dots ('...').",
114
+ "comment": "Loading indicator text shown while visualizations or data are being fetched or processed.",
115
115
  "limit": 0
116
116
  },
117
117
  "gs.color-picker.inputPlaceholder": {
118
118
  "value": "#color",
119
- "comment": "Character '#' means user should input color code as hexadecimal value, e.g. #C0D6E4",
119
+ "comment": "Placeholder text in the color input field, showing the expected format for hexadecimal color codes.",
120
120
  "limit": 0
121
121
  },
122
122
  "gs.color-picker.currentColor": {
123
123
  "value": "current",
124
- "comment": "",
124
+ "comment": "Label for the currently selected color in the color picker component. Appears next to the color swatch.",
125
125
  "limit": 0
126
126
  },
127
127
  "gs.color-picker.newColor": {
128
128
  "value": "new",
129
- "comment": "",
129
+ "comment": "Label for the newly selected color in the color picker component. Appears next to the new color swatch being chosen.",
130
130
  "limit": 0
131
131
  },
132
132
  "gs.color-picker.cancelButton": {
133
133
  "value": "Cancel",
134
- "comment": "",
134
+ "comment": "Label for the cancel button in the color picker dialog. Clicking this discards color changes and closes the dialog.",
135
135
  "limit": 0
136
136
  },
137
137
  "gs.color-picker.okButton": {
138
138
  "value": "OK",
139
- "comment": "",
139
+ "comment": "Label for the OK/confirm button in the color picker dialog. Clicking this applies the selected color and closes the dialog.",
140
140
  "limit": 0
141
141
  },
142
142
  "gs.color-picker.hex": {
@@ -146,12 +146,12 @@
146
146
  },
147
147
  "gs.noData.noMatchingData": {
148
148
  "value": "No matching data",
149
- "comment": "",
149
+ "comment": "Message displayed when no data matches the current filter criteria in visualizations or data views.",
150
150
  "limit": 0
151
151
  },
152
152
  "gs.noData.noDataAvailable": {
153
153
  "value": "No matching data",
154
- "comment": "",
154
+ "comment": "Message displayed when no data is available for the current visualization or view based on the applied filters or data configuration.",
155
155
  "limit": 0
156
156
  },
157
157
  "geochart.scroll.zoom.blocker": {
@@ -166,7 +166,7 @@
166
166
  },
167
167
  "visualizations.of": {
168
168
  "value": "{page} of {pagesCount}",
169
- "comment": "Don't translate placeholders '{page}', '{pagesCount}'",
169
+ "comment": "Pagination indicator showing current page number and total pages (e.g., '2 of 5'). The {page} and {pagesCount} placeholders will be replaced with actual numbers.",
170
170
  "limit": 0
171
171
  },
172
172
  "visualizations.totals.dropdown.title.sum": {
@@ -284,17 +284,17 @@
284
284
  },
285
285
  "visualizations.headline.pagination.next.metricLabel": {
286
286
  "value": "Show next comparative metric",
287
- "comment": "",
287
+ "comment": "Accessibility label for the button that shows the next comparative metric in the headline visualization. Used by screen readers.",
288
288
  "limit": 0
289
289
  },
290
290
  "visualizations.headline.pagination.previous.metricLabel": {
291
291
  "value": "Show previous comparative metric",
292
- "comment": "",
292
+ "comment": "Accessibility label for the button that shows the previous comparative metric in the headline visualization. Used by screen readers.",
293
293
  "limit": 0
294
294
  },
295
295
  "visualizations.headline.pagination.drill.hint": {
296
296
  "value": "Drilling available. Press Enter or Space to continue.",
297
- "comment": "",
297
+ "comment": "Accessibility hint informing users that they can drill into the visualization by pressing Enter or Space. Used by screen readers.",
298
298
  "limit": 0
299
299
  },
300
300
  "visualization.numericValues.k": {
@@ -329,7 +329,7 @@
329
329
  },
330
330
  "visualization.emptyValue": {
331
331
  "value": "empty value",
332
- "comment": "",
332
+ "comment": "Text displayed when a data field has no value in visualizations. Used to represent null or undefined values.",
333
333
  "limit": 0
334
334
  },
335
335
  "visualization.waterfall.total": {
@@ -344,266 +344,266 @@
344
344
  },
345
345
  "visualization.ErrorMessageGeneric|insight": {
346
346
  "value": "Sorry, we can't display this visualization",
347
- "comment": "",
347
+ "comment": "Generic error message shown when a visualization cannot be displayed due to an unspecified technical issue.",
348
348
  "limit": 0
349
349
  },
350
350
  "visualization.ErrorMessageGeneric|report": {
351
351
  "value": "Sorry, we can't display this report",
352
- "comment": "",
352
+ "comment": "Error message shown when a report cannot be displayed due to an unspecified technical issue. This is the report-specific version of the generic visualization error message.",
353
353
  "limit": 0,
354
354
  "translate": false
355
355
  },
356
356
  "visualization.ErrorDescriptionGeneric": {
357
357
  "value": "Contact your administrator.",
358
- "comment": "",
358
+ "comment": "Follow-up instruction text shown below error messages, advising the user to contact an administrator for help.",
359
359
  "limit": 0
360
360
  },
361
361
  "visualization.ErrorMessageDataTooLarge": {
362
362
  "value": "Too many data points to display",
363
- "comment": "",
363
+ "comment": "Error message shown when visualization cannot be rendered because the dataset is too large for the visualization engine to process.",
364
364
  "limit": 0
365
365
  },
366
366
  "visualization.ErrorDescriptionDataTooLarge": {
367
367
  "value": "Try applying filters.",
368
- "comment": "",
368
+ "comment": "Suggestion shown below the 'Too many data points' error message, advising users to reduce the dataset size by applying filters.",
369
369
  "limit": 0
370
370
  },
371
371
  "visualization.ErrorMessageNoData": {
372
372
  "value": "No data",
373
- "comment": "",
373
+ "comment": "Error message shown when the visualization has no data to display, typically because filters exclude all data or the dataset is empty.",
374
374
  "limit": 0
375
375
  },
376
376
  "visualization.ErrorDescriptionNoData": {
377
377
  "value": "No data for your filter selection.",
378
- "comment": "",
378
+ "comment": "Explanation shown below the 'No data' error message, indicating that the current filter selection results in no data to display.",
379
379
  "limit": 0
380
380
  },
381
381
  "visualization.ErrorMessageKpi": {
382
382
  "value": "Error",
383
- "comment": "",
383
+ "comment": "Generic error indicator text shown in KPI (Key Performance Indicator) visualizations when they cannot be displayed properly.",
384
384
  "limit": 0
385
385
  },
386
386
  "visualization.ErrorMessageUnauthorized": {
387
387
  "value": "Unauthorized",
388
- "comment": "",
388
+ "comment": "Error message shown when the user does not have permission to view the requested visualization or data.",
389
389
  "limit": 0
390
390
  },
391
391
  "visualization.ErrorDescriptionUnauthorized|insight": {
392
392
  "value": "Sorry you don't have access to this visualization. Login or ask your administrator to grant you permissions.",
393
- "comment": "",
393
+ "comment": "Explanation shown when the user lacks permissions to view a visualization, providing instructions for resolution.",
394
394
  "limit": 0
395
395
  },
396
396
  "visualization.ErrorDescriptionUnauthorized|report": {
397
397
  "value": "Sorry you don't have access to this report. Login or ask your administrator to grant you permissions.",
398
- "comment": "",
398
+ "comment": "Explanation shown when the user lacks permissions to view a report, providing instructions for resolution. This is the report-specific version of the unauthorized access message.",
399
399
  "limit": 0,
400
400
  "translate": false
401
401
  },
402
402
  "visualization.ErrorMessageNotFound|insight": {
403
403
  "value": "Sorry, we can't find this visualization",
404
- "comment": "",
404
+ "comment": "Error message shown when the requested visualization cannot be found, typically because it has been deleted or the URL is incorrect.",
405
405
  "limit": 0
406
406
  },
407
407
  "visualization.ErrorMessageNotFound|report": {
408
408
  "value": "Sorry, we can't find this report",
409
- "comment": "",
409
+ "comment": "Error message shown when the requested report cannot be found, typically because it has been deleted or the URL is incorrect. This is the report-specific version of the not found message.",
410
410
  "limit": 0,
411
411
  "translate": false
412
412
  },
413
413
  "visualization.ErrorDescriptionNotFound|insight": {
414
414
  "value": "The visualization with this URL does not exist.",
415
- "comment": "",
415
+ "comment": "Explanation shown when a visualization cannot be found, indicating that no visualization exists with the requested identifier.",
416
416
  "limit": 0
417
417
  },
418
418
  "visualization.ErrorDescriptionNotFound|report": {
419
419
  "value": "The report with this URL does not exist.",
420
- "comment": "",
420
+ "comment": "Explanation shown when a report cannot be found, indicating that no report exists with the requested identifier. This is the report-specific version of the not found description.",
421
421
  "limit": 0,
422
422
  "translate": false
423
423
  },
424
424
  "visualization.ErrorDescriptionMissingMapboxToken": {
425
425
  "value": "The Geochart configuration requires a valid API access token.",
426
- "comment": "",
426
+ "comment": "Error message shown when trying to display a geographic visualization without having a valid Mapbox API token configured.",
427
427
  "limit": 0
428
428
  },
429
429
  "visualization.tooltip.resetZoom": {
430
430
  "value": "Reset zoom",
431
- "comment": "",
431
+ "comment": "Button tooltip for resetting the zoom level to default in visualizations that support zooming, like charts and maps.",
432
432
  "limit": 0
433
433
  },
434
434
  "visualization.tooltip.interaction": {
435
435
  "value": "Click chart to drill",
436
- "comment": "",
436
+ "comment": "Informational tooltip that appears over charts, informing users they can click to drill down for more detailed data.",
437
437
  "limit": 0
438
438
  },
439
439
  "visualization.tooltip.generic.interaction": {
440
440
  "value": "Click to drill or filter",
441
- "comment": "",
441
+ "comment": "Informational tooltip that appears over interactive visualization elements, indicating users can click for drilling or filtering actions.",
442
442
  "limit": 0
443
443
  },
444
444
  "gs.filterLabel.all": {
445
445
  "value": "All",
446
- "comment": "",
446
+ "comment": "Filter option label indicating that all available items or values are selected in a filter control.",
447
447
  "limit": 0
448
448
  },
449
449
  "gs.filterLabel.none": {
450
450
  "value": "None",
451
- "comment": "",
451
+ "comment": "Filter option label indicating that no items or values are selected in a filter control.",
452
452
  "limit": 0
453
453
  },
454
454
  "gs.filter.loading": {
455
455
  "value": "Loading filter…",
456
- "comment": "Use '…' as one character, not 3 dots ('...').",
456
+ "comment": "Loading indicator text shown when filter values are being loaded from the server. The ellipsis () indicates an in-progress operation.",
457
457
  "limit": 0
458
458
  },
459
459
  "gs.filter.error": {
460
460
  "value": "Error when loading filter.",
461
- "comment": "",
461
+ "comment": "Error message displayed when a filter component fails to load its values from the server.",
462
462
  "limit": 0
463
463
  },
464
464
  "gs.filter.error.tooltip": {
465
465
  "value": "Error. Values cannot be loaded.",
466
- "comment": "",
466
+ "comment": "Tooltip shown when hovering over a filter that encountered an error when trying to load its values.",
467
467
  "limit": 0
468
468
  },
469
469
  "gs.list.clear": {
470
470
  "value": "Clear",
471
- "comment": "",
471
+ "comment": "Button label for clearing all selections in a list or filter component, returning it to empty state.",
472
472
  "limit": 0
473
473
  },
474
474
  "gs.list.cancel": {
475
475
  "value": "Cancel",
476
- "comment": "",
476
+ "comment": "Button label for canceling the current operation in list or filter components and returning to the previous state.",
477
477
  "limit": 0
478
478
  },
479
479
  "gs.list.apply": {
480
480
  "value": "Apply",
481
- "comment": "",
481
+ "comment": "Button label for applying selected filters or options in list or filter components.",
482
482
  "limit": 0
483
483
  },
484
484
  "gs.list.only": {
485
485
  "value": "Only",
486
- "comment": "",
486
+ "comment": "Label used in filter expressions to indicate exclusive selection, e.g., 'Only Product A'.",
487
487
  "limit": 0
488
488
  },
489
489
  "gs.list.selectAll": {
490
490
  "value": "Select all",
491
- "comment": "",
491
+ "comment": "Button or option label that allows users to select all available items in a list or filter component.",
492
492
  "limit": 0
493
493
  },
494
494
  "gs.list.limitExceeded": {
495
495
  "value": "Sorry, you have exceeded the limit ({limit}).",
496
- "comment": "Don't translate placeholder '{limit}'.",
496
+ "comment": "Error message shown when a user exceeds the maximum allowed number of selections in a list component. The {limit} placeholder will be replaced with the actual limit number.",
497
497
  "limit": 0
498
498
  },
499
499
  "gs.list.limitReached": {
500
500
  "value": "You have reached the limit of {limit} selected values.",
501
- "comment": "Don't translate placeholder '{limit}'.",
501
+ "comment": "Informational message shown when a user reaches the maximum allowed number of selections in a list component. The {limit} placeholder will be replaced with the actual limit number.",
502
502
  "limit": 0
503
503
  },
504
504
  "gs.list.cannotSelectMoreValues": {
505
505
  "value": "You cannot select more than {limit} values.",
506
- "comment": "Don't translate placeholder '{limit}'.",
506
+ "comment": "Error message shown when a user attempts to select more items than allowed in a list component. The {limit} placeholder will be replaced with the maximum allowed number of selections.",
507
507
  "limit": 0
508
508
  },
509
509
  "gs.list.noItemsFound": {
510
510
  "value": "No items found.",
511
- "comment": "",
511
+ "comment": "Message displayed when a search or filter operation in a list component returns no results.",
512
512
  "limit": 0
513
513
  },
514
514
  "gs.list.noResultsMatch": {
515
515
  "value": "No results match",
516
- "comment": "",
516
+ "comment": "Message displayed when a search query in a list or filter component doesn't match any available items.",
517
517
  "limit": 0
518
518
  },
519
519
  "gs.list.error": {
520
520
  "value": "Error when loading filter values.",
521
- "comment": "",
521
+ "comment": "Error message shown when the application fails to load values for a filter from the server.",
522
522
  "limit": 0
523
523
  },
524
524
  "gs.header.upsellButtonText": {
525
525
  "value": "Upgrade",
526
- "comment": "",
526
+ "comment": "Button text for upgrading to a higher tier or paid version of the product from a free or lower tier.",
527
527
  "limit": 0
528
528
  },
529
529
  "gs.header.invite": {
530
530
  "value": "Invite",
531
- "comment": "",
531
+ "comment": "Button label for inviting other users to join the workspace or collaborate on dashboards.",
532
532
  "limit": 0
533
533
  },
534
534
  "gs.header.countdown.numberOfDaysLeft": {
535
535
  "value": "{number} days left",
536
- "comment": "",
536
+ "comment": "Text showing the number of days remaining in a trial or subscription period. The {number} placeholder will be replaced with the actual count of days.",
537
537
  "limit": 0
538
538
  },
539
539
  "gs.header.countdown.numberOfMonthsLeft": {
540
540
  "value": "{number} months left",
541
- "comment": "",
541
+ "comment": "Countdown message showing the number of months remaining in a trial or subscription period. The {number} placeholder will be replaced with the actual count of months.",
542
542
  "limit": 0
543
543
  },
544
544
  "gs.header.countdown.oneMonthLeft": {
545
545
  "value": "1 month left",
546
- "comment": "",
546
+ "comment": "Countdown message indicating that one month remains in the current trial or subscription period.",
547
547
  "limit": 0
548
548
  },
549
549
  "gs.header.countdown.lastDay": {
550
550
  "value": "This is your last day",
551
- "comment": "",
551
+ "comment": "Message shown on the final day of a trial or subscription period, indicating it's the last day of access.",
552
552
  "limit": 0
553
553
  },
554
554
  "measure.title.suffix.same_period_year_ago": {
555
555
  "value": "SP year ago",
556
- "comment": "",
556
+ "comment": "Suffix added to a measure title to indicate it shows data from the same period in the previous year (SP = Same Period). Used in time-based comparisons.",
557
557
  "limit": 0
558
558
  },
559
559
  "measure.title.suffix.previous_period": {
560
560
  "value": "period ago",
561
- "comment": "",
561
+ "comment": "Suffix added to a measure title to indicate it shows data from the previous time period. The specific time period (day, week, month, etc.) is determined by the current context.",
562
562
  "limit": 0
563
563
  },
564
564
  "visualizations.measure.arithmetic.sum.title": {
565
565
  "value": "Sum of {firstMeasureTitle} and {secondMeasureTitle}",
566
- "comment": "Title of an arithmetic measure of type Sum. Don't translate placeholders '{firstMeasureTitle}', '{secondMeasureTitle}'.",
566
+ "comment": "Title of an arithmetic measure of type Sum.",
567
567
  "limit": 0
568
568
  },
569
569
  "visualizations.measure.arithmetic.difference.title": {
570
570
  "value": "Difference of {firstMeasureTitle} and {secondMeasureTitle}",
571
- "comment": "Title of an arithmetic measure of type Difference. Don't translate placeholders '{firstMeasureTitle}', '{secondMeasureTitle}'.",
571
+ "comment": "Title of an arithmetic measure of type Difference.",
572
572
  "limit": 0
573
573
  },
574
574
  "visualizations.measure.arithmetic.multiplication.title": {
575
575
  "value": "Product of {firstMeasureTitle} and {secondMeasureTitle}",
576
- "comment": "Title of an arithmetic measure of type Product. Don't translate placeholders '{firstMeasureTitle}', '{secondMeasureTitle}'.",
576
+ "comment": "Title of an arithmetic measure of type Product.",
577
577
  "limit": 0
578
578
  },
579
579
  "visualizations.measure.arithmetic.ratio.title": {
580
580
  "value": "Ratio of {firstMeasureTitle} and {secondMeasureTitle}",
581
- "comment": "Title of an arithmetic measure of type Ratio. Don't translate placeholders '{firstMeasureTitle}', '{secondMeasureTitle}'.",
581
+ "comment": "Title of an arithmetic measure of type Ratio.",
582
582
  "limit": 0
583
583
  },
584
584
  "visualizations.measure.arithmetic.change.title": {
585
585
  "value": "Change from {secondMeasureTitle} to {firstMeasureTitle}",
586
- "comment": "Title of an arithmetic measure of type Change. Don't translate placeholders '{firstMeasureTitle}', '{secondMeasureTitle}'.",
586
+ "comment": "Title of an arithmetic measure of type Change.",
587
587
  "limit": 0
588
588
  },
589
589
  "visualizations.legend.text.top": {
590
590
  "value": "Top",
591
- "comment": "",
591
+ "comment": "Legend position option to place the legend above the chart or visualization.",
592
592
  "limit": 0
593
593
  },
594
594
  "visualizations.legend.text.bottom": {
595
595
  "value": "Bottom",
596
- "comment": "",
596
+ "comment": "Legend position option to place the legend below the chart or visualization.",
597
597
  "limit": 0
598
598
  },
599
599
  "visualizations.legend.text.left": {
600
600
  "value": "Left",
601
- "comment": "",
601
+ "comment": "Legend position option to place the legend to the left of the chart or visualization.",
602
602
  "limit": 0
603
603
  },
604
604
  "visualizations.legend.text.right": {
605
605
  "value": "Right",
606
- "comment": "",
606
+ "comment": "Legend position option to place the legend to the right of the chart or visualization.",
607
607
  "limit": 0
608
608
  },
609
609
  "visualizations.legend.text.colon": {
@@ -613,17 +613,17 @@
613
613
  },
614
614
  "visualizations.legend.text.column": {
615
615
  "value": "Column",
616
- "comment": "column chart",
616
+ "comment": "Label for the column chart series type in visualization legends, used to identify data series represented by vertical bars in charts.",
617
617
  "limit": 0
618
618
  },
619
619
  "visualizations.legend.text.line": {
620
620
  "value": "Line",
621
- "comment": "line chart",
621
+ "comment": "Label for the line chart series type in visualization legends, used to identify data series represented by lines in charts.",
622
622
  "limit": 0
623
623
  },
624
624
  "visualizations.legend.text.area": {
625
625
  "value": "Area",
626
- "comment": "area chart",
626
+ "comment": "Label for the area chart series type in visualization legends, used to identify data series represented by areas in charts.",
627
627
  "limit": 0
628
628
  },
629
629
  "visualizations.legend.text.combo": {
@@ -633,12 +633,12 @@
633
633
  },
634
634
  "visualizations.pagination.previous": {
635
635
  "value": "Previous page",
636
- "comment": "",
636
+ "comment": "Button label to navigate to the previous page in a paginated view. Shown when there are more items available before the current page.",
637
637
  "limit": 0
638
638
  },
639
639
  "visualizations.pagination.next": {
640
640
  "value": "Next page",
641
- "comment": "",
641
+ "comment": "Button label to navigate to the next page in a paginated view. Shown when there are more items available after the current page.",
642
642
  "limit": 0
643
643
  },
644
644
  "visualizations.menu.aggregations": {
@@ -668,17 +668,17 @@
668
668
  },
669
669
  "visualizations.menu.aggregations.within-attribute": {
670
670
  "value": "within {attributeName}",
671
- "comment": "Menu option that adds row aggregation (sub-total) for specific attribute to the table. Example: 'Sum within Attribute A'. Don't translate placeholder '{attributeName}'.",
671
+ "comment": "Menu option that adds row aggregation (sub-total) for specific attribute to the table. Example: 'Sum within Attribute A'.",
672
672
  "limit": 50
673
673
  },
674
674
  "apply": {
675
675
  "value": "Apply",
676
- "comment": "",
676
+ "comment": "Button label to confirm and apply changes or selections in a dialog or form.",
677
677
  "limit": 0
678
678
  },
679
679
  "cancel": {
680
680
  "value": "Cancel",
681
- "comment": "",
681
+ "comment": "Button label to discard changes and close a dialog or form without applying any changes.",
682
682
  "limit": 0
683
683
  },
684
684
  "close": {
@@ -693,22 +693,22 @@
693
693
  },
694
694
  "loading": {
695
695
  "value": "Loading…",
696
- "comment": "Use '…' as one character, not 3 dots ('...').",
696
+ "comment": "Text shown during content loading operations",
697
697
  "limit": 0
698
698
  },
699
699
  "filtering": {
700
700
  "value": "Filtering…",
701
- "comment": "Use '…' as one character, not 3 dots ('...').",
701
+ "comment": "Text shown during filtering operations",
702
702
  "limit": 0
703
703
  },
704
704
  "dateFilterDropdown.title": {
705
705
  "value": "Date range",
706
- "comment": "",
706
+ "comment": "Title for the date filter dropdown component, allowing users to select a time range for filtering data.",
707
707
  "limit": 0
708
708
  },
709
709
  "dateFilterDropdown.setDefault": {
710
710
  "value": "Set default date filter for{nbsp}viewers:",
711
- "comment": "Do not translate non-breakable space '{nbsp}'",
711
+ "comment": "Message with non-breaking space for proper formatting. The {nbsp} represents a non-breaking space character.",
712
712
  "limit": 0
713
713
  },
714
714
  "dateFilterDropdown.configuration": {
@@ -718,397 +718,397 @@
718
718
  },
719
719
  "dateFilterDropdown.label": {
720
720
  "value": "Select a date range",
721
- "comment": "",
721
+ "comment": "Label for the date filter dropdown component, allowing users to select a time range for filtering data.",
722
722
  "limit": 0
723
723
  },
724
724
  "dateFilterDropdown.relativeForm.label": {
725
725
  "value": "Granularity",
726
- "comment": "",
726
+ "comment": "Label for the granularity selection in the date filter dropdown component, allowing users to select a time range for filtering data.",
727
727
  "limit": 0
728
728
  },
729
729
  "filters.thisMinute.title": {
730
730
  "value": "This minute",
731
- "comment": "",
731
+ "comment": "Filter option to select the current minute in time-based filtering controls.",
732
732
  "limit": 0
733
733
  },
734
734
  "filters.lastMinute.title": {
735
735
  "value": "Last minute",
736
- "comment": "",
736
+ "comment": "Filter option to select the previous minute in time-based filtering controls.",
737
737
  "limit": 0
738
738
  },
739
739
  "filters.nextMinute.title": {
740
740
  "value": "Next minute",
741
- "comment": "",
741
+ "comment": "Filter option to select the upcoming minute in time-based filtering controls.",
742
742
  "limit": 0
743
743
  },
744
744
  "filters.thisHour.title": {
745
745
  "value": "This hour",
746
- "comment": "",
746
+ "comment": "Filter option to select the current hour in time-based filtering controls.",
747
747
  "limit": 0
748
748
  },
749
749
  "filters.lastHour.title": {
750
750
  "value": "Last hour",
751
- "comment": "",
751
+ "comment": "Filter option to select the previous hour in time-based filtering controls.",
752
752
  "limit": 0
753
753
  },
754
754
  "filters.nextHour.title": {
755
755
  "value": "Next hour",
756
- "comment": "",
756
+ "comment": "Filter option to select the upcoming hour in time-based filtering controls.",
757
757
  "limit": 0
758
758
  },
759
759
  "filters.thisDay.title": {
760
760
  "value": "Today",
761
- "comment": "",
761
+ "comment": "Filter option for the current day",
762
762
  "limit": 0
763
763
  },
764
764
  "filters.lastDay.title": {
765
765
  "value": "Yesterday",
766
- "comment": "",
766
+ "comment": "Filter option for the previous day",
767
767
  "limit": 0
768
768
  },
769
769
  "filters.nextDay.title": {
770
770
  "value": "Tomorrow",
771
- "comment": "",
771
+ "comment": "Filter option for the next day",
772
772
  "limit": 0
773
773
  },
774
774
  "filters.thisWeek.title": {
775
775
  "value": "This week",
776
- "comment": "",
776
+ "comment": "Filter option for the current week",
777
777
  "limit": 0
778
778
  },
779
779
  "filters.lastWeek.title": {
780
780
  "value": "Last week",
781
- "comment": "",
781
+ "comment": "Filter option for the previous week",
782
782
  "limit": 0
783
783
  },
784
784
  "filters.nextWeek.title": {
785
785
  "value": "Next week",
786
- "comment": "",
786
+ "comment": "Filter option for the next week",
787
787
  "limit": 0
788
788
  },
789
789
  "filters.thisMonth.title": {
790
790
  "value": "This month",
791
- "comment": "",
791
+ "comment": "Filter option for the current month",
792
792
  "limit": 0
793
793
  },
794
794
  "filters.lastMonth.title": {
795
795
  "value": "Last month",
796
- "comment": "",
796
+ "comment": "Filter option for the previous month",
797
797
  "limit": 0
798
798
  },
799
799
  "filters.nextMonth.title": {
800
800
  "value": "Next month",
801
- "comment": "",
801
+ "comment": "Filter option for the next month",
802
802
  "limit": 0
803
803
  },
804
804
  "filters.thisQuarter.title": {
805
805
  "value": "This quarter",
806
- "comment": "",
806
+ "comment": "Filter option for the current quarter",
807
807
  "limit": 0
808
808
  },
809
809
  "filters.lastQuarter.title": {
810
810
  "value": "Last quarter",
811
- "comment": "",
811
+ "comment": "Filter option for the previous quarter",
812
812
  "limit": 0
813
813
  },
814
814
  "filters.nextQuarter.title": {
815
815
  "value": "Next quarter",
816
- "comment": "",
816
+ "comment": "Filter option for the next quarter",
817
817
  "limit": 0
818
818
  },
819
819
  "filters.thisYear.title": {
820
820
  "value": "This year",
821
- "comment": "",
821
+ "comment": "Filter option for the current year",
822
822
  "limit": 0
823
823
  },
824
824
  "filters.lastYear.title": {
825
825
  "value": "Last year",
826
- "comment": "",
826
+ "comment": "Filter option for the previous year",
827
827
  "limit": 0
828
828
  },
829
829
  "filters.nextYear.title": {
830
830
  "value": "Next year",
831
- "comment": "",
831
+ "comment": "Filter option for the next year",
832
832
  "limit": 0
833
833
  },
834
834
  "filters.lastNMinutes": {
835
835
  "value": "{n, plural, one {Last # minute} other {Last # minutes}}",
836
- "comment": "In '{n, plural, one {LAST # MINUTE} other {LAST # MINUTES}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
836
+ "comment": "Filter option for the last N minutes (singular/plural)",
837
837
  "limit": 0
838
838
  },
839
839
  "filters.lastNHours": {
840
840
  "value": "{n, plural, one {Last # hour} other {Last # hours}}",
841
- "comment": "In '{n, plural, one {LAST # HOUR} other {LAST # HOURS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
841
+ "comment": "Filter option for the last N hours (singular/plural)",
842
842
  "limit": 0
843
843
  },
844
844
  "filters.lastNDays": {
845
845
  "value": "{n, plural, one {Last # day} other {Last # days}}",
846
- "comment": "In '{n, plural, one {LAST # DAY} other {LAST # DAYS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
846
+ "comment": "Filter option for the last N days (singular/plural)",
847
847
  "limit": 0
848
848
  },
849
849
  "filters.lastNWeeks": {
850
850
  "value": "{n, plural, one {Last # week} other {Last # weeks}}",
851
- "comment": "In '{n, plural, one {LAST # WEEK} other {LAST # WEEKS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
851
+ "comment": "Filter option for the last N weeks (singular/plural)",
852
852
  "limit": 0
853
853
  },
854
854
  "filters.lastNMonths": {
855
855
  "value": "{n, plural, one {Last # month} other {Last # months}}",
856
- "comment": "In '{n, plural, one {LAST # MONTH} other {LAST # MONTHS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
856
+ "comment": "Filter option for the last N months (singular/plural)",
857
857
  "limit": 0
858
858
  },
859
859
  "filters.lastNQuarters": {
860
860
  "value": "{n, plural, one {Last # quarter} other {Last # quarters}}",
861
- "comment": "In '{n, plural, one {LAST # QUARTER} other {LAST # QUARTERS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
861
+ "comment": "Filter option for the last N quarters (singular/plural)",
862
862
  "limit": 0
863
863
  },
864
864
  "filters.lastNYears": {
865
865
  "value": "{n, plural, one {Last # year} other {Last # years}}",
866
- "comment": "In '{n, plural, one {LAST # YEAR} other {LAST # YEARS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
866
+ "comment": "Filter option for the last N years (singular/plural)",
867
867
  "limit": 0
868
868
  },
869
869
  "filters.nextNMinutes": {
870
870
  "value": "{n, plural, one {Next # minute} other {Next # minutes}}",
871
- "comment": "In '{n, plural, one {NEXT # MINUTE} other {NEXT # MINUTES}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
871
+ "comment": "Filter option for the next N minutes (singular/plural)",
872
872
  "limit": 0
873
873
  },
874
874
  "filters.nextNHours": {
875
875
  "value": "{n, plural, one {Next # hour} other {Next # hours}}",
876
- "comment": "In '{n, plural, one {NEXT # HOUR} other {NEXT # HOURS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
876
+ "comment": "Filter option for the next N hours (singular/plural)",
877
877
  "limit": 0
878
878
  },
879
879
  "filters.nextNDays": {
880
880
  "value": "{n, plural, one {Next # day} other {Next # days}}",
881
- "comment": "In '{n, plural, one {NEXT # DAY} other {NEXT # DAYS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
881
+ "comment": "Filter option for the next N days (singular/plural)",
882
882
  "limit": 0
883
883
  },
884
884
  "filters.nextNWeeks": {
885
885
  "value": "{n, plural, one {Next # week} other {Next # weeks}}",
886
- "comment": "In '{n, plural, one {NEXT # WEEK} other {NEXT # WEEKS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
886
+ "comment": "Filter option for the next N weeks (singular/plural)",
887
887
  "limit": 0
888
888
  },
889
889
  "filters.nextNMonths": {
890
890
  "value": "{n, plural, one {Next # month} other {Next # months}}",
891
- "comment": "In '{n, plural, one {NEXT # MONTH} other {NEXT # MONTHS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
891
+ "comment": "Filter option for the next N months (singular/plural)",
892
892
  "limit": 0
893
893
  },
894
894
  "filters.nextNQuarters": {
895
895
  "value": "{n, plural, one {Next # quarter} other {Next # quarters}}",
896
- "comment": "In '{n, plural, one {NEXT # QUARTER} other {NEXT # QUARTERS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
896
+ "comment": "Filter option for the next N quarters (singular/plural)",
897
897
  "limit": 0
898
898
  },
899
899
  "filters.nextNYears": {
900
900
  "value": "{n, plural, one {Next # year} other {Next # years}}",
901
- "comment": "In '{n, plural, one {NEXT # YEAR} other {NEXT # YEARS}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
901
+ "comment": "Filter option for the next N years (singular/plural)",
902
902
  "limit": 0
903
903
  },
904
904
  "filters.interval.minutes.past": {
905
905
  "value": "From {from} to {to} {to, plural, one {minute} other {minutes}} ago",
906
- "comment": "Example: 'From 5 to 3 minutes ago'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {MINUTE} other {MINUTES}}' translate only uppercase words.",
906
+ "comment": "Time interval in past minutes (e.g., 'From 5 to 10 minutes ago')",
907
907
  "limit": 0
908
908
  },
909
909
  "filters.interval.minutes.past.sameValue": {
910
910
  "value": "{value} {value, plural, one {minute} other {minutes}} ago",
911
- "comment": "Example: '5 minutes ago'. Don't translate placeholder '{value}'. In '{value, plural, one {MINUTE} other {MINUTES}}' translate only uppercase words.",
911
+ "comment": "Time interval for a single past minute (e.g., '5 minutes ago')",
912
912
  "limit": 0
913
913
  },
914
914
  "filters.interval.minutes.future": {
915
915
  "value": "From {from} to {to} {to, plural, one {minute} other {minutes}} ahead",
916
- "comment": "Example: 'From 3 to 5 minutes ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {MINUTE} other {MINUTES}}' translate only uppercase words.",
916
+ "comment": "Time interval in future minutes (e.g., 'From 5 to 10 minutes ahead')",
917
917
  "limit": 0
918
918
  },
919
919
  "filters.interval.minutes.future.sameValue": {
920
920
  "value": "{value} {value, plural, one {minute} other {minutes}} ahead",
921
- "comment": "Example: '5 minutes ahead'. Don't translate placeholder '{value}'. In '{value, plural, one {MINUTE} other {MINUTES}}' translate only uppercase words.",
921
+ "comment": "Time interval for a single future minute (e.g., '5 minutes ahead')",
922
922
  "limit": 0
923
923
  },
924
924
  "filters.interval.minutes.mixed": {
925
925
  "value": "From {from} {from, plural, one {minute} other {minutes}} ago to {to} {to, plural, one {minute} other {minutes}} ahead",
926
- "comment": "Example: 'From 5 minutes ago to 3 minutes ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {MINUTE} other {MINUTES}}' translate only uppercase words.",
926
+ "comment": "Time interval spanning past and future in minutes (e.g., 'From 1 minute ago to 2 minutes ahead')",
927
927
  "limit": 0
928
928
  },
929
929
  "filters.interval.hours.past": {
930
930
  "value": "From {from} to {to} {to, plural, one {hour} other {hours}} ago",
931
- "comment": "Example: 'From 5 to 3 hours ago'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {HOUR} other {HOURS}}' translate only uppercase words.",
931
+ "comment": "Time interval in past hours (e.g., 'From 1 to 3 hours ago')",
932
932
  "limit": 0
933
933
  },
934
934
  "filters.interval.hours.past.sameValue": {
935
935
  "value": "{value} {value, plural, one {hour} other {hours}} ago",
936
- "comment": "Example: '5 hours ago'. Don't translate placeholder '{value}'. In '{value, plural, one {HOUR} other {HOURS}}' translate only uppercase words.",
936
+ "comment": "Time interval for a single past hour (e.g., '2 hours ago')",
937
937
  "limit": 0
938
938
  },
939
939
  "filters.interval.hours.future": {
940
940
  "value": "From {from} to {to} {to, plural, one {hour} other {hours}} ahead",
941
- "comment": "Example: 'From 3 to 5 hours ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {HOUR} other {HOURS}}' translate only uppercase words.",
941
+ "comment": "Time interval in future hours (e.g., 'From 1 to 3 hours ahead')",
942
942
  "limit": 0
943
943
  },
944
944
  "filters.interval.hours.future.sameValue": {
945
945
  "value": "{value} {value, plural, one {hour} other {hours}} ahead",
946
- "comment": "Example: '5 hours ahead'. Don't translate placeholder '{value}'. In '{value, plural, one {HOUR} other {HOURS}}' translate only uppercase words.",
946
+ "comment": "Time interval for a single future hour (e.g., '2 hours ahead')",
947
947
  "limit": 0
948
948
  },
949
949
  "filters.interval.hours.mixed": {
950
950
  "value": "From {from} {from, plural, one {hour} other {hours}} ago to {to} {to, plural, one {hour} other {hours}} ahead",
951
- "comment": "Example: 'From 5 hours ago to 3 hours ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {HOUR} other {HOURS}}' translate only uppercase words.",
951
+ "comment": "Time interval spanning past and future in hours (e.g., 'From 1 hour ago to 2 hours ahead')",
952
952
  "limit": 0
953
953
  },
954
954
  "filters.interval.days.past": {
955
955
  "value": "From {from} to {to} {to, plural, one {day} other {days}} ago",
956
- "comment": "Example: 'From 5 to 3 days ago'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {DAY} other {DAYS}}' translate only uppercase words.",
956
+ "comment": "Time interval in past days (e.g., 'From 1 to 3 days ago')",
957
957
  "limit": 0
958
958
  },
959
959
  "filters.interval.days.past.sameValue": {
960
960
  "value": "{value} {value, plural, one {day} other {days}} ago",
961
- "comment": "Example: '5 days ago'. Don't translate placeholder '{value}'. In '{value, plural, one {DAY} other {DAYS}}' translate only uppercase words.",
961
+ "comment": "Time interval for a single past day (e.g., '2 days ago')",
962
962
  "limit": 0
963
963
  },
964
964
  "filters.interval.days.future": {
965
965
  "value": "From {from} to {to} {to, plural, one {day} other {days}} ahead",
966
- "comment": "Example: 'From 3 to 5 days ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {DAY} other {DAYS}}' translate only uppercase words.",
966
+ "comment": "Time interval for future days with a range, showing the number of days ahead (e.g., 'From 2 to 4 days ahead'). The placeholders {from} and {to} represent the start and end days.",
967
967
  "limit": 0
968
968
  },
969
969
  "filters.interval.days.future.sameValue": {
970
970
  "value": "{value} {value, plural, one {day} other {days}} ahead",
971
- "comment": "Example: '5 days ahead'. Don't translate placeholder '{value}'. In '{value, plural, one {DAY} other {DAYS}}' translate only uppercase words.",
971
+ "comment": "Time interval for a single future day (e.g., '2 days ahead'). The placeholder {value} represents the number of days.",
972
972
  "limit": 0
973
973
  },
974
974
  "filters.interval.days.mixed": {
975
975
  "value": "From {from} {from, plural, one {day} other {days}} ago to {to} {to, plural, one {day} other {days}} ahead",
976
- "comment": "Example: 'From 5 days ago to 3 days ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {DAY} other {DAYS}}' translate only uppercase words.",
976
+ "comment": "Time interval spanning both past and future days (e.g., 'From 1 day ago to 2 days ahead'). The placeholders {from} and {to} represent the number of days in the past and future respectively.",
977
977
  "limit": 0
978
978
  },
979
979
  "filters.interval.weeks.past": {
980
980
  "value": "From {from} to {to} {to, plural, one {week} other {weeks}} ago",
981
- "comment": "Example: 'From 5 to 3 weeks ago'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {WEEK} other {WEEKS}}' translate only uppercase words.",
981
+ "comment": "Time interval for past weeks with a range, showing the number of weeks ago (e.g., 'From 2 to 4 weeks ago'). The placeholders {from} and {to} represent the start and end weeks.",
982
982
  "limit": 0
983
983
  },
984
984
  "filters.interval.weeks.past.sameValue": {
985
985
  "value": "{value} {value, plural, one {week} other {weeks}} ago",
986
- "comment": "Example: '5 weeks ago'. Don't translate placeholder '{value}'. In '{value, plural, one {WEEK} other {WEEKS}}' translate only uppercase words.",
986
+ "comment": "Time interval for a single past week (e.g., '2 weeks ago'). The placeholder {value} represents the number of weeks.",
987
987
  "limit": 0
988
988
  },
989
989
  "filters.interval.weeks.future": {
990
990
  "value": "From {from} to {to} {to, plural, one {week} other {weeks}} ahead",
991
- "comment": "Example: 'From 3 to 5 weeks ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {WEEK} other {WEEKS}}' translate only uppercase words.",
991
+ "comment": "Time interval for future weeks with a range, showing the number of weeks ahead (e.g., 'From 2 to 4 weeks ahead'). The placeholders {from} and {to} represent the start and end weeks.",
992
992
  "limit": 0
993
993
  },
994
994
  "filters.interval.weeks.future.sameValue": {
995
995
  "value": "{value} {value, plural, one {week} other {weeks}} ahead",
996
- "comment": "Example: '5 weeks ahead'. Don't translate placeholder '{value}'. In '{value, plural, one {WEEK} other {WEEKS}}' translate only uppercase words.",
996
+ "comment": "Time interval for a single future week (e.g., '2 weeks ahead'). The placeholder {value} represents the number of weeks.",
997
997
  "limit": 0
998
998
  },
999
999
  "filters.interval.weeks.mixed": {
1000
1000
  "value": "From {from} {from, plural, one {week} other {weeks}} ago to {to} {to, plural, one {week} other {weeks}} ahead",
1001
- "comment": "Example: 'From 5 weeks ago to 3 weeks ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {WEEK} other {WEEKS}}' translate only uppercase words.",
1001
+ "comment": "Time interval spanning both past and future weeks (e.g., 'From 1 week ago to 2 weeks ahead'). The placeholders {from} and {to} represent the number of weeks in the past and future respectively.",
1002
1002
  "limit": 0
1003
1003
  },
1004
1004
  "filters.interval.months.past": {
1005
1005
  "value": "From {from} to {to} {to, plural, one {month} other {months}} ago",
1006
- "comment": "Example: 'From 5 to 3 months ago'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {MONTH} other {MONTHS}}' translate only uppercase words.",
1006
+ "comment": "Time interval for past months with a range, showing the number of months ago (e.g., 'From 2 to 4 months ago'). The placeholders {from} and {to} represent the start and end months.",
1007
1007
  "limit": 0
1008
1008
  },
1009
1009
  "filters.interval.months.past.sameValue": {
1010
1010
  "value": "{value} {value, plural, one {month} other {months}} ago",
1011
- "comment": "Example: '5 months ago'. Don't translate placeholder '{value}'. In '{value, plural, one {MONTH} other {MONTHS}}' translate only uppercase words.",
1011
+ "comment": "Time interval for a single past month (e.g., '2 months ago'). The placeholder {value} represents the number of months.",
1012
1012
  "limit": 0
1013
1013
  },
1014
1014
  "filters.interval.months.future": {
1015
1015
  "value": "From {from} to {to} {to, plural, one {month} other {months}} ahead",
1016
- "comment": "Example: 'From 3 to 5 months ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {MONTH} other {MONTHS}}' translate only uppercase words.",
1016
+ "comment": "Time interval for future months with a range, showing the number of months ahead (e.g., 'From 2 to 4 months ahead'). The placeholders {from} and {to} represent the start and end months.",
1017
1017
  "limit": 0
1018
1018
  },
1019
1019
  "filters.interval.months.future.sameValue": {
1020
1020
  "value": "{value} {value, plural, one {month} other {months}} ahead",
1021
- "comment": "Example: '5 months ahead'. Don't translate placeholder '{value}'. In '{value, plural, one {MONTH} other {MONTHS}}' translate only uppercase words.",
1021
+ "comment": "Time interval for a single future month (e.g., '2 months ahead'). The placeholder {value} represents the number of months.",
1022
1022
  "limit": 0
1023
1023
  },
1024
1024
  "filters.interval.months.mixed": {
1025
1025
  "value": "From {from} {from, plural, one {month} other {months}} ago to {to} {to, plural, one {month} other {months}} ahead",
1026
- "comment": "Example: 'From 5 months ago to 3 months ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {MONTH} other {MONTHS}}' translate only uppercase words.",
1026
+ "comment": "Time interval spanning both past and future months (e.g., 'From 1 month ago to 2 months ahead'). The placeholders {from} and {to} represent the number of months in the past and future respectively.",
1027
1027
  "limit": 0
1028
1028
  },
1029
1029
  "filters.interval.quarters.past": {
1030
1030
  "value": "From {from} to {to} {to, plural, one {quarter} other {quarters}} ago",
1031
- "comment": "Example: 'From 5 to 3 quarters ago'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {QUARTER} other {QUARTERS}}' translate only uppercase words.",
1031
+ "comment": "Time interval for past quarters with a range, showing the number of quarters ago (e.g., 'From Q2 to Q4 last year'). The placeholders {from} and {to} represent the start and end quarters.",
1032
1032
  "limit": 0
1033
1033
  },
1034
1034
  "filters.interval.quarters.past.sameValue": {
1035
1035
  "value": "{value} {value, plural, one {quarter} other {quarters}} ago",
1036
- "comment": "Example: '5 quarters ago'. Don't translate placeholder '{value}'. In '{value, plural, one {QUARTER} other {QUARTERS}}' translate only uppercase words.",
1036
+ "comment": "Time interval for a single past quarter (e.g., '2 quarters ago'). The placeholder {value} represents the number of quarters.",
1037
1037
  "limit": 0
1038
1038
  },
1039
1039
  "filters.interval.quarters.future": {
1040
1040
  "value": "From {from} to {to} {to, plural, one {quarter} other {quarters}} ahead",
1041
- "comment": "Example: 'From 3 to 5 quarters ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {QUARTER} other {QUARTERS}}' translate only uppercase words.",
1041
+ "comment": "Time interval for future quarters with a range, showing the number of quarters ahead (e.g., 'From Q3 to Q4 next year'). The placeholders {from} and {to} represent the start and end quarters.",
1042
1042
  "limit": 0
1043
1043
  },
1044
1044
  "filters.interval.quarters.future.sameValue": {
1045
1045
  "value": "{value} {value, plural, one {quarter} other {quarters}} ahead",
1046
- "comment": "Example: '5 quarters ahead'. Don't translate placeholder '{value}'. In '{value, plural, one {QUARTER} other {QUARTERS}}' translate only uppercase words.",
1046
+ "comment": "Time interval for a single future quarter (e.g., '2 quarters ahead'). The placeholder {value} represents the number of quarters.",
1047
1047
  "limit": 0
1048
1048
  },
1049
1049
  "filters.interval.quarters.mixed": {
1050
1050
  "value": "From {from} {from, plural, one {quarter} other {quarters}} ago to {to} {to, plural, one {quarter} other {quarters}} ahead",
1051
- "comment": "Example: 'From 5 quarters ago to 3 quarters ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {QUARTER} other {QUARTERS}}' translate only uppercase words.",
1051
+ "comment": "Time interval spanning both past and future quarters (e.g., 'From Q1 last year to Q2 next year'). The placeholders {from} and {to} represent the number of quarters in the past and future respectively.",
1052
1052
  "limit": 0
1053
1053
  },
1054
1054
  "filters.interval.years.past": {
1055
1055
  "value": "From {from} to {to} {to, plural, one {year} other {years}} ago",
1056
- "comment": "Example: 'From 5 to 3 years ago'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {YEAR} other {YEARS}}' translate only uppercase words.",
1056
+ "comment": "Time interval for past years with a range, showing the number of years ago (e.g., 'From 2 to 4 years ago'). The placeholders {from} and {to} represent the start and end years.",
1057
1057
  "limit": 0
1058
1058
  },
1059
1059
  "filters.interval.years.past.sameValue": {
1060
1060
  "value": "{value} {value, plural, one {year} other {years}} ago",
1061
- "comment": "Example: '5 years ago'. Don't translate placeholder '{value}'. In '{value, plural, one {YEAR} other {YEARS}}' translate only uppercase words.",
1061
+ "comment": "Time interval for a single past year (e.g., '2 years ago'). The placeholder {value} represents the number of years.",
1062
1062
  "limit": 0
1063
1063
  },
1064
1064
  "filters.interval.years.future": {
1065
1065
  "value": "From {from} to {to} {to, plural, one {year} other {years}} ahead",
1066
- "comment": "Example: 'From 3 to 5 years ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {YEAR} other {YEARS}}' translate only uppercase words.",
1066
+ "comment": "Time interval for future years with a range, showing the number of years ahead (e.g., 'From 2025 to 2027'). The placeholders {from} and {to} represent the start and end years.",
1067
1067
  "limit": 0
1068
1068
  },
1069
1069
  "filters.interval.years.future.sameValue": {
1070
1070
  "value": "{value} {value, plural, one {year} other {years}} ahead",
1071
- "comment": "Example: '5 years ahead'. Don't translate placeholder '{value}'. In '{value, plural, one {YEAR} other {YEARS}}' translate only uppercase words.",
1071
+ "comment": "Time interval for a single future year (e.g., '2 years ahead'). The placeholder {value} represents the number of years.",
1072
1072
  "limit": 0
1073
1073
  },
1074
1074
  "filters.interval.years.mixed": {
1075
1075
  "value": "From {from} {from, plural, one {year} other {years}} ago to {to} {to, plural, one {year} other {years}} ahead",
1076
- "comment": "Example: 'From 5 years ago to 3 years ahead'. Don't translate placeholders '{from}', '{to}'. In '{to, plural, one {YEAR} other {YEARS}}' translate only uppercase words.",
1076
+ "comment": "Time interval spanning both past and future years (e.g., 'From 1 year ago to 2 years ahead'). The placeholders {from} and {to} represent the number of years in the past and future respectively.",
1077
1077
  "limit": 0
1078
1078
  },
1079
1079
  "filters.granularity.minutes": {
1080
1080
  "value": "Minutes",
1081
- "comment": "",
1081
+ "comment": "Time granularity option for filtering data at the minute level. Used in time-based filters and selectors.",
1082
1082
  "limit": 0
1083
1083
  },
1084
1084
  "filters.granularity.hours": {
1085
1085
  "value": "Hours",
1086
- "comment": "",
1086
+ "comment": "Time granularity option for filtering data at the hour level. Used in time-based filters and selectors.",
1087
1087
  "limit": 0
1088
1088
  },
1089
1089
  "filters.granularity.days": {
1090
1090
  "value": "Days",
1091
- "comment": "",
1091
+ "comment": "Time granularity option for filtering data at the day level. Used in time-based filters and selectors.",
1092
1092
  "limit": 0
1093
1093
  },
1094
1094
  "filters.granularity.weeks": {
1095
1095
  "value": "Weeks",
1096
- "comment": "",
1096
+ "comment": "Time granularity option for filtering data at the week level. Used in time-based filters and selectors.",
1097
1097
  "limit": 0
1098
1098
  },
1099
1099
  "filters.granularity.months": {
1100
1100
  "value": "Months",
1101
- "comment": "",
1101
+ "comment": "Time granularity option for filtering data at the month level. Used in time-based filters and selectors.",
1102
1102
  "limit": 0
1103
1103
  },
1104
1104
  "filters.granularity.quarters": {
1105
1105
  "value": "Quarters",
1106
- "comment": "",
1106
+ "comment": "Time granularity option for filtering data at the quarter level. Used in time-based filters and selectors.",
1107
1107
  "limit": 0
1108
1108
  },
1109
1109
  "filters.granularity.years": {
1110
1110
  "value": "Years",
1111
- "comment": "",
1111
+ "comment": "Time granularity option for filtering data at the year level. Used in time-based filters and selectors.",
1112
1112
  "limit": 0
1113
1113
  },
1114
1114
  "filters.staticPeriod.dateFrom": {
@@ -1133,7 +1133,7 @@
1133
1133
  },
1134
1134
  "filters.staticPeriod.dateFormatHint": {
1135
1135
  "value": "Use date format {format}.",
1136
- "comment": "Displayed as a hint below input in which user enters a date. Do not translate {format} placeholder. It will be replaced in runtime with date format pattern.",
1136
+ "comment": "Date input field hint. The {format} placeholder shows the expected date format pattern (e.g., 'MM/DD/YYYY').",
1137
1137
  "limit": 0
1138
1138
  },
1139
1139
  "filters.staticPeriod.timeFormatHint": {
@@ -1143,272 +1143,272 @@
1143
1143
  },
1144
1144
  "filters.date.accessibility.label.from": {
1145
1145
  "value": "Select date from",
1146
- "comment": "",
1146
+ "comment": "Accessibility label for the 'from' date input field in date range selectors. Used by screen readers to identify the start date selection.",
1147
1147
  "limit": 0
1148
1148
  },
1149
1149
  "filters.date.accessibility.label.to": {
1150
1150
  "value": "Select date to",
1151
- "comment": "",
1151
+ "comment": "Accessibility label for the 'to' date input field in date range selectors. Used by screen readers to identify the end date selection.",
1152
1152
  "limit": 0
1153
1153
  },
1154
1154
  "filters.time.accessibility.label.from": {
1155
1155
  "value": "Select time from",
1156
- "comment": "",
1156
+ "comment": "Accessibility label for the 'from' time input field in time range selectors. Used by screen readers to identify the start time selection.",
1157
1157
  "limit": 0
1158
1158
  },
1159
1159
  "filters.time.accessibility.label.to": {
1160
1160
  "value": "Select time to",
1161
- "comment": "",
1161
+ "comment": "Accessibility label for the 'to' time input field in time range selectors. Used by screen readers to identify the end time selection.",
1162
1162
  "limit": 0
1163
1163
  },
1164
1164
  "filters.relative.placeholder": {
1165
1165
  "value": "Type or select",
1166
- "comment": "",
1166
+ "comment": "Placeholder text shown in relative date filter inputs, indicating users can either type a value or select from a list of options.",
1167
1167
  "limit": 0
1168
1168
  },
1169
1169
  "filters.relative.from.label": {
1170
1170
  "value": "Period start",
1171
- "comment": "",
1171
+ "comment": "Label for the starting point of a relative time period in date range selectors. Indicates where the time period begins.",
1172
1172
  "limit": 0
1173
1173
  },
1174
1174
  "filters.relative.from.invalid.value": {
1175
1175
  "value": "Error: Invalid period start — enter a valid period or select it from the list.",
1176
- "comment": "",
1176
+ "comment": "Error message shown when an invalid value is entered for the start of a relative time period. Guides users to enter a valid value or select from available options.",
1177
1177
  "limit": 0
1178
1178
  },
1179
1179
  "filters.relative.from.empty.value": {
1180
1180
  "value": "Error: Period start is empty — enter a valid period or select it from the list.",
1181
- "comment": "",
1181
+ "comment": "Error message shown when the start period field is left empty in a relative date filter. Guides users to provide a valid value or select from available options.",
1182
1182
  "limit": 0
1183
1183
  },
1184
1184
  "filters.relative.to.label": {
1185
1185
  "value": "Period end",
1186
- "comment": "",
1186
+ "comment": "Label for the ending point of a relative time period in date range selectors. Indicates where the time period concludes.",
1187
1187
  "limit": 0
1188
1188
  },
1189
1189
  "filters.relative.to.invalid.value": {
1190
1190
  "value": "Error: Invalid period end — enter a valid period or select it from the list.",
1191
- "comment": "",
1191
+ "comment": "Error message shown when an invalid value is entered for the end of a relative time period. Helps users correct their input with valid values.",
1192
1192
  "limit": 0
1193
1193
  },
1194
1194
  "filters.relative.to.empty.value": {
1195
1195
  "value": "Error: Period end is empty — enter a valid period or select it from the list.",
1196
- "comment": "",
1196
+ "comment": "Error message shown when the end period field is left empty in a relative date filter. Prompts users to provide a valid value or select from available options.",
1197
1197
  "limit": 0
1198
1198
  },
1199
1199
  "filters.floatingRange": {
1200
1200
  "value": "Relative period",
1201
- "comment": "",
1201
+ "comment": "Label for the relative period filter option, allowing users to select time periods relative to the current date (e.g., 'Last 7 days').",
1202
1202
  "limit": 0
1203
1203
  },
1204
1204
  "filters.floatingRange.tooltip": {
1205
1205
  "value": "The date range is relative to today and adjusts in time.",
1206
- "comment": "",
1206
+ "comment": "Tooltip explaining that the relative period filter will automatically update based on the current date, ensuring the time window remains consistent (e.g., 'Last 30 days' will always show the most recent 30 days).",
1207
1207
  "limit": 0
1208
1208
  },
1209
1209
  "filters.floatingRange.noMatch": {
1210
1210
  "value": "No match found",
1211
- "comment": "",
1211
+ "comment": "Message displayed when a search or filter operation in the relative period selector doesn't return any matching results.",
1212
1212
  "limit": 0
1213
1213
  },
1214
1214
  "filters.floatingRange.tooBig": {
1215
1215
  "value": "Maximum value: {limit}",
1216
- "comment": "This string should be as short as possible to fit in the container. Don't translate placeholder '{limit}'.",
1216
+ "comment": "Error message shown when a user enters a value exceeding the maximum allowed limit in a relative period filter. Example: 'Maximum value: 100'.",
1217
1217
  "limit": 32
1218
1218
  },
1219
1219
  "filters.floatingRange.option.minute.offset.history": {
1220
1220
  "value": "{n, plural, one {last minute} other {# minutes ago}}",
1221
- "comment": "In '{n, plural, one {LAST MINUTE} other {# MINUTES AGO}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1221
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1222
1222
  "limit": 0
1223
1223
  },
1224
1224
  "filters.floatingRange.option.minute.offset.today": {
1225
1225
  "value": "this minute",
1226
- "comment": "",
1226
+ "comment": "Option in the relative time selector referring to the current minute. Used when filtering data to include only the current minute's data.",
1227
1227
  "limit": 0
1228
1228
  },
1229
1229
  "filters.floatingRange.option.minute.offset.future": {
1230
1230
  "value": "{n, plural, one {next minute} other {# minutes ahead}}",
1231
- "comment": "In '{n, plural, one {NEXT MINUTE} other {# MINUTES AHEAD}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1231
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1232
1232
  "limit": 0
1233
1233
  },
1234
1234
  "filters.floatingRange.option.hour.offset.history": {
1235
1235
  "value": "{n, plural, one {last hour} other {# hours ago}}",
1236
- "comment": "In '{n, plural, one {LAST HOUR} other {# HOURS AGO}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1236
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1237
1237
  "limit": 0
1238
1238
  },
1239
1239
  "filters.floatingRange.option.hour.offset.today": {
1240
1240
  "value": "this hour",
1241
- "comment": "",
1241
+ "comment": "Relative time filter option referring to the current hour. Used to filter data for the current 60-minute period.",
1242
1242
  "limit": 0
1243
1243
  },
1244
1244
  "filters.floatingRange.option.hour.offset.future": {
1245
1245
  "value": "{n, plural, one {next hour} other {# hours ahead}}",
1246
- "comment": "In '{n, plural, one {NEXT HOUR} other {# HOURS AHEAD}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1246
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1247
1247
  "limit": 0
1248
1248
  },
1249
1249
  "filters.floatingRange.option.day.offset.history": {
1250
1250
  "value": "{n, plural, one {yesterday} other {# days ago}}",
1251
- "comment": "In '{n, plural, one {YESTERDAY} other {# DAYS AGO}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1251
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1252
1252
  "limit": 0
1253
1253
  },
1254
1254
  "filters.floatingRange.option.day.offset.today": {
1255
1255
  "value": "today",
1256
- "comment": "",
1256
+ "comment": "Relative time filter option for the current calendar day. Used to filter data for the current 24-hour period from midnight to midnight.",
1257
1257
  "limit": 0
1258
1258
  },
1259
1259
  "filters.floatingRange.option.day.offset.future": {
1260
1260
  "value": "{n, plural, one {tomorrow} other {# days ahead}}",
1261
- "comment": "In '{n, plural, one {TOMORROW} other {# DAYS AHEAD}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1261
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1262
1262
  "limit": 0
1263
1263
  },
1264
1264
  "filters.floatingRange.option.week.offset.history": {
1265
1265
  "value": "{n, plural, one {last week} other {# weeks ago}}",
1266
- "comment": "In '{n, plural, one {LAST WEEK} other {# WEEKS AGO}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1266
+ "comment": "Relative time filter option for past weeks. The placeholder {n} represents the number of weeks ago. Used in time-based filtering to reference previous weeks.",
1267
1267
  "limit": 0
1268
1268
  },
1269
1269
  "filters.floatingRange.option.week.offset.today": {
1270
1270
  "value": "this week",
1271
- "comment": "",
1271
+ "comment": "Relative time filter option for the current calendar week (typically Sunday to Saturday or Monday to Sunday, depending on locale). Used to filter data for the current 7-day period.",
1272
1272
  "limit": 0
1273
1273
  },
1274
1274
  "filters.floatingRange.option.week.offset.future": {
1275
1275
  "value": "{n, plural, one {next week} other {# weeks ahead}}",
1276
- "comment": "In '{n, plural, one {NEXT WEEK} other {# WEEKS AHEAD}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1276
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1277
1277
  "limit": 0
1278
1278
  },
1279
1279
  "filters.floatingRange.option.month.offset.history": {
1280
1280
  "value": "{n, plural, one {last month} other {# months ago}}",
1281
- "comment": "In '{n, plural, one {LAST MONTH} other {# MONTHS AGO}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1281
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1282
1282
  "limit": 0
1283
1283
  },
1284
1284
  "filters.floatingRange.option.month.offset.today": {
1285
1285
  "value": "this month",
1286
- "comment": "",
1286
+ "comment": "Relative time filter option for the current calendar month. Used to filter data for the current month from first to last day.",
1287
1287
  "limit": 0
1288
1288
  },
1289
1289
  "filters.floatingRange.option.month.offset.future": {
1290
1290
  "value": "{n, plural, one {next month} other {# months ahead}}",
1291
- "comment": "In '{n, plural, one {NEXT MONTH} other {# MONTHS AHEAD}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1291
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1292
1292
  "limit": 0
1293
1293
  },
1294
1294
  "filters.floatingRange.option.quarter.offset.history": {
1295
1295
  "value": "{n, plural, one {last quarter} other {# quarters ago}}",
1296
- "comment": "In '{n, plural, one {LAST QUARTER} other {# QUARTERS AGO}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1296
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1297
1297
  "limit": 0
1298
1298
  },
1299
1299
  "filters.floatingRange.option.quarter.offset.today": {
1300
1300
  "value": "this quarter",
1301
- "comment": "",
1301
+ "comment": "Relative time filter option for the current calendar quarter (Q1: Jan-Mar, Q2: Apr-Jun, etc.). Used to filter data for the current 3-month period.",
1302
1302
  "limit": 0
1303
1303
  },
1304
1304
  "filters.floatingRange.option.quarter.offset.future": {
1305
1305
  "value": "{n, plural, one {next quarter} other {# quarters ahead}}",
1306
- "comment": "In '{n, plural, one {NEXT QUARTER} other {# QUARTERS AHEAD}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1306
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1307
1307
  "limit": 0
1308
1308
  },
1309
1309
  "filters.floatingRange.option.year.offset.history": {
1310
1310
  "value": "{n, plural, one {last year} other {# years ago}}",
1311
- "comment": "In '{n, plural, one {LAST YEAR} other {# YEARS AGO}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1311
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1312
1312
  "limit": 0
1313
1313
  },
1314
1314
  "filters.floatingRange.option.year.offset.today": {
1315
1315
  "value": "this year",
1316
- "comment": "",
1316
+ "comment": "Relative time filter option for the current calendar year. Used to filter data for the current 12-month period from January to December.",
1317
1317
  "limit": 0
1318
1318
  },
1319
1319
  "filters.floatingRange.option.year.offset.future": {
1320
1320
  "value": "{n, plural, one {next year} other {# years ahead}}",
1321
- "comment": "In '{n, plural, one {NEXT YEAR} other {# YEARS AHEAD}}' translate only uppercase words. Do not translate the numeric placeholder '#'. Add missing plural forms if your language has any: ask if you need any help.",
1321
+ "comment": "Relative time expression using plural forms. Keep the {n, plural, ...} format and the # placeholder for numbers. Examples: 'last minute', '5 minutes ago', 'next hour', '3 days ahead'.",
1322
1322
  "limit": 0
1323
1323
  },
1324
1324
  "filters.allTime.title": {
1325
1325
  "value": "All time",
1326
- "comment": "",
1326
+ "comment": "Filter option indicating no time-based filtering should be applied, including all available historical data in the results.",
1327
1327
  "limit": 0
1328
1328
  },
1329
1329
  "filters.allTime.excludeCurrentPeriod": {
1330
1330
  "value": "Exclude open period",
1331
- "comment": "",
1331
+ "comment": "Option to exclude incomplete or in-progress time periods from the 'All time' filter, such as the current day, week, or month that hasn't fully elapsed.",
1332
1332
  "limit": 0
1333
1333
  },
1334
1334
  "filters.minute.title": {
1335
1335
  "value": "MINUTE",
1336
- "comment": "",
1336
+ "comment": "Header label for minute-level time filter options. Used in filter configuration interfaces to group minute-related filtering controls.",
1337
1337
  "limit": 0
1338
1338
  },
1339
1339
  "filters.minute.excludeCurrentPeriod": {
1340
1340
  "value": "Exclude this minute",
1341
- "comment": "",
1341
+ "comment": "Option to exclude the current minute from the filtered results. Useful when the current minute might contain incomplete or in-progress data.",
1342
1342
  "limit": 0
1343
1343
  },
1344
1344
  "filters.hour.title": {
1345
1345
  "value": "HOUR",
1346
- "comment": "",
1346
+ "comment": "Header label for hour-level time filter options. Used in filter configuration interfaces to group hour-related filtering controls.",
1347
1347
  "limit": 0
1348
1348
  },
1349
1349
  "filters.hour.excludeCurrentPeriod": {
1350
1350
  "value": "Exclude this hour",
1351
- "comment": "",
1351
+ "comment": "Option to exclude the current hour from the filtered results. Useful when the current hour might contain incomplete or in-progress data.",
1352
1352
  "limit": 0
1353
1353
  },
1354
1354
  "filters.day.title": {
1355
1355
  "value": "DAY",
1356
- "comment": "",
1356
+ "comment": "Header label for day-level time filter options. Used in filter configuration interfaces to group day-related filtering controls.",
1357
1357
  "limit": 0
1358
1358
  },
1359
1359
  "filters.day.excludeCurrentPeriod": {
1360
1360
  "value": "Exclude today",
1361
- "comment": "",
1361
+ "comment": "Option to exclude the current day from the filtered results. Useful when today's data might be incomplete or still being collected.",
1362
1362
  "limit": 0
1363
1363
  },
1364
1364
  "filters.week.title": {
1365
1365
  "value": "WEEK",
1366
- "comment": "",
1366
+ "comment": "Header label for week-level time filter options. Used in filter configuration interfaces to group week-related filtering controls.",
1367
1367
  "limit": 0
1368
1368
  },
1369
1369
  "filters.week.excludeCurrentPeriod": {
1370
1370
  "value": "Exclude this week",
1371
- "comment": "",
1371
+ "comment": "Option to exclude the current week from the filtered results. Useful when the current week's data might be incomplete or still being collected.",
1372
1372
  "limit": 0
1373
1373
  },
1374
1374
  "filters.month.title": {
1375
1375
  "value": "MONTH",
1376
- "comment": "",
1376
+ "comment": "Header label for month-level time filter options. Used in filter configuration interfaces to group month-related filtering controls.",
1377
1377
  "limit": 0
1378
1378
  },
1379
1379
  "filters.month.excludeCurrentPeriod": {
1380
1380
  "value": "Exclude this month",
1381
- "comment": "",
1381
+ "comment": "Option to exclude the current month from the filtered results. Useful when the current month's data might be incomplete or still being collected.",
1382
1382
  "limit": 0
1383
1383
  },
1384
1384
  "filters.quarter.title": {
1385
1385
  "value": "QUARTER",
1386
- "comment": "",
1386
+ "comment": "Header label for quarter-level time filter options. Used in filter configuration interfaces to group quarter-related filtering controls.",
1387
1387
  "limit": 0
1388
1388
  },
1389
1389
  "filters.quarter.excludeCurrentPeriod": {
1390
1390
  "value": "Exclude this quarter",
1391
- "comment": "",
1391
+ "comment": "Option to exclude the current quarter from the filtered results. Useful when the current quarter's data might be incomplete or still being collected.",
1392
1392
  "limit": 0
1393
1393
  },
1394
1394
  "filters.year.title": {
1395
1395
  "value": "YEAR",
1396
- "comment": "",
1396
+ "comment": "Header label for year-level time filter options. Used in filter configuration interfaces to group year-related filtering controls.",
1397
1397
  "limit": 0
1398
1398
  },
1399
1399
  "filters.year.excludeCurrentPeriod": {
1400
1400
  "value": "Exclude this year",
1401
- "comment": "",
1401
+ "comment": "Option to exclude the current year from the filtered results. Useful when the current year's data might be incomplete or still being collected.",
1402
1402
  "limit": 0
1403
1403
  },
1404
1404
  "filters.excludeCurrentPeriod.unavailable": {
1405
1405
  "value": "Not available for the selected date range",
1406
- "comment": "",
1406
+ "comment": "Message displayed when the 'exclude current period' option is not applicable to the currently selected date range filter settings.",
1407
1407
  "limit": 0
1408
1408
  },
1409
1409
  "filters.staticPeriod": {
1410
1410
  "value": "Static period",
1411
- "comment": "",
1411
+ "comment": "Label for the static period filter option, allowing users to select fixed date ranges that don't change over time (as opposed to relative periods).",
1412
1412
  "limit": 0
1413
1413
  },
1414
1414
  "filters.staticPeriod.errors.emptyStartDate": {
@@ -1418,7 +1418,7 @@
1418
1418
  },
1419
1419
  "filters.staticPeriod.errors.invalidStartDate": {
1420
1420
  "value": "Error: Invalid start date — use {format} format.",
1421
- "comment": "Placeholder '{format}' is used for showing date format. Example 'Error: Start date is not in MM/dd/yyyy format'. Don't translate placeholder '{format}'.",
1421
+ "comment": "Placeholder '{format}' is used for showing date format. Example 'Error: Start date is not in MM/dd/yyyy format'.",
1422
1422
  "limit": 0
1423
1423
  },
1424
1424
  "filters.staticPeriod.errors.startDateAfterEndDate": {
@@ -1438,7 +1438,7 @@
1438
1438
  },
1439
1439
  "filters.staticPeriod.errors.invalidEndDate": {
1440
1440
  "value": "Error: Invalid end date — use {format} format.",
1441
- "comment": "Placeholder '{format}' is used for showing date format. Example 'Error: End date is not in MM/dd/yyyy format'. Don't translate placeholder '{format}'.",
1441
+ "comment": "Placeholder '{format}' is used for showing date format. Example 'Error: End date is not in MM/dd/yyyy format'.",
1442
1442
  "limit": 0
1443
1443
  },
1444
1444
  "filters.staticPeriod.errors.endDateBeforeStartDate": {
@@ -1458,52 +1458,52 @@
1458
1458
  },
1459
1459
  "mvf.operator.greaterThan": {
1460
1460
  "value": "greater than",
1461
- "comment": "",
1461
+ "comment": "Filter operator that matches values greater than the specified value. Used in measure value filters to filter data points above a certain threshold.",
1462
1462
  "limit": 0
1463
1463
  },
1464
1464
  "mvf.operator.greaterThanOrEqualTo": {
1465
1465
  "value": "greater than or equal to",
1466
- "comment": "",
1466
+ "comment": "Filter operator that matches values greater than or equal to the specified value. Used in measure value filters to include the threshold value in the results.",
1467
1467
  "limit": 0
1468
1468
  },
1469
1469
  "mvf.operator.lessThan": {
1470
1470
  "value": "less than",
1471
- "comment": "",
1471
+ "comment": "Filter operator that matches values less than the specified value. Used in measure value filters to filter data points below a certain threshold.",
1472
1472
  "limit": 0
1473
1473
  },
1474
1474
  "mvf.operator.lessThanOrEqualTo": {
1475
1475
  "value": "less than or equal to",
1476
- "comment": "",
1476
+ "comment": "Filter operator that matches values less than or equal to the specified value. Used in measure value filters to include the threshold value in the results.",
1477
1477
  "limit": 0
1478
1478
  },
1479
1479
  "mvf.operator.equalTo": {
1480
1480
  "value": "equal to",
1481
- "comment": "",
1481
+ "comment": "Filter operator that matches values exactly equal to the specified value. Used in measure value filters to find specific data points.",
1482
1482
  "limit": 0
1483
1483
  },
1484
1484
  "mvf.operator.notEqualTo": {
1485
1485
  "value": "not equal to",
1486
- "comment": "",
1486
+ "comment": "Filter operator that matches all values except the specified value. Used in measure value filters to exclude specific data points.",
1487
1487
  "limit": 0
1488
1488
  },
1489
1489
  "mvf.operator.between": {
1490
1490
  "value": "between",
1491
- "comment": "",
1491
+ "comment": "Filter operator that matches values within a specified range (inclusive of boundaries). Used in measure value filters to find data points within a specific range.",
1492
1492
  "limit": 0
1493
1493
  },
1494
1494
  "mvf.operator.notBetween": {
1495
1495
  "value": "not between",
1496
- "comment": "",
1496
+ "comment": "Filter operator that matches values outside a specified range (exclusive of boundaries). Used in measure value filters to exclude data points within a specific range.",
1497
1497
  "limit": 0
1498
1498
  },
1499
1499
  "mvf.operator.between.tooltip.bubble": {
1500
1500
  "value": "Start and end values are included.",
1501
- "comment": "",
1501
+ "comment": "Tooltip explaining that when using the 'between' operator, the range is inclusive of both the start and end values in the filter criteria.",
1502
1502
  "limit": 0
1503
1503
  },
1504
1504
  "mvf.operator.notBetween.tooltip.bubble": {
1505
1505
  "value": "Start and end values are not included.",
1506
- "comment": "",
1506
+ "comment": "Tooltip explaining that when using the 'not between' operator, the range is exclusive of both the start and end values in the filter criteria.",
1507
1507
  "limit": 0
1508
1508
  },
1509
1509
  "mvf.treatNullValuesAsZeroLabel": {
@@ -1563,37 +1563,37 @@
1563
1563
  },
1564
1564
  "properties.legend.title": {
1565
1565
  "value": "Legend",
1566
- "comment": "",
1566
+ "comment": "Title for the legend section in visualization properties. The legend provides a key to the colors and patterns used in the chart.",
1567
1567
  "limit": 0
1568
1568
  },
1569
1569
  "properties.legend.series.item.description": {
1570
1570
  "value": "Press Space or Enter to toggle visibility",
1571
- "comment": "",
1571
+ "comment": "Tooltip for legend items. Space and Enter stands for keyboard keys.",
1572
1572
  "limit": 0
1573
1573
  },
1574
1574
  "properties.legend.more.button": {
1575
1575
  "value": "Show all legend items in a dialog",
1576
- "comment": "",
1576
+ "comment": "Button text for opening a dialog to show all legend items",
1577
1577
  "limit": 0
1578
1578
  },
1579
1579
  "properties.legend.series.named": {
1580
1580
  "value": "Legend: {name}",
1581
- "comment": "",
1581
+ "comment": "Title for a named legend item in visualization properties. {name} is a placeholder for the legend name.",
1582
1582
  "limit": 0
1583
1583
  },
1584
1584
  "properties.legend.series.unnamed": {
1585
1585
  "value": "Visualization legend",
1586
- "comment": "",
1586
+ "comment": "Title for the legend section in visualization properties. The legend provides a key to the colors and patterns used in the chart.",
1587
1587
  "limit": 0
1588
1588
  },
1589
1589
  "attrf.all": {
1590
1590
  "value": "All",
1591
- "comment": "",
1591
+ "comment": "Option to select all items in an attribute filter. When selected, the filter will include all possible values of the attribute.",
1592
1592
  "limit": 0
1593
1593
  },
1594
1594
  "attrf.all_except": {
1595
1595
  "value": "All except",
1596
- "comment": "",
1596
+ "comment": "Option to exclude specific items from an attribute filter. When selected, all values except the specified ones will be included in the filter.",
1597
1597
  "limit": 0
1598
1598
  },
1599
1599
  "rankingFilter.topBottom": {
@@ -1665,22 +1665,22 @@
1665
1665
  },
1666
1666
  "rankingFilter.preview.top_without_attribute": {
1667
1667
  "value": "Top {value} of <strong>{measure}</strong>",
1668
- "comment": "Do not translate placeholder {value} and {measure} or HTML markup enclosed in <>. Text describes ranking filter. Example: 'Top 3 of Revenue'",
1668
+ "comment": "Preview text showing the top N values based on a measure, where {value} is the number of items and {measure} is the measure name. Used when no attribute is specified for ranking.",
1669
1669
  "limit": 0
1670
1670
  },
1671
1671
  "rankingFilter.preview.bottom_without_attribute": {
1672
1672
  "value": "Bottom {value} of <strong>{measure}</strong>",
1673
- "comment": "Do not translate placeholder {value} and {measure} or HTML markup enclosed in <>. Title describing ranking direction and number of values. Example: 'Bottom 5 of Revenue'",
1673
+ "comment": "Preview text showing the bottom N values based on a measure, where {value} is the number of items and {measure} is the measure name. Used when no attribute is specified for ranking.",
1674
1674
  "limit": 0
1675
1675
  },
1676
1676
  "rankingFilter.preview.top_with_attribute": {
1677
1677
  "value": "Top {value} out of <strong>{attribute}</strong> based on <strong>{measure}</strong>",
1678
- "comment": "Do not translate placeholder {value}, {attribute}, and {measure} or HTML markup enclosed in <>. Title describing ranking direction, number of values, attribute granularity, and measure ranking is based on. Example: 'Top 3 out of Product based on Revenue'",
1678
+ "comment": "Preview text showing the top N values of a specific attribute based on a measure, where {value} is the number of items, {attribute} is the attribute name, and {measure} is the measure name.",
1679
1679
  "limit": 0
1680
1680
  },
1681
1681
  "rankingFilter.preview.bottom_with_attribute": {
1682
1682
  "value": "Bottom {value} out of <strong>{attribute}</strong> based on <strong>{measure}</strong>",
1683
- "comment": "Do not translate placeholder {value}, {attribute}, and {measure} or HTML markup enclosed in <>. Title describing ranking direction, number of values, attribute granularity, and measure ranking is based on. Example: 'Bottom 5 out of Product based on Revenue'",
1683
+ "comment": "Preview text showing the bottom N values of a specific attribute based on a measure, where {value} is the number of items, {attribute} is the attribute name, and {measure} is the measure name.",
1684
1684
  "limit": 0
1685
1685
  },
1686
1686
  "rankingFilter.valueTooltip|insight": {
@@ -1696,7 +1696,7 @@
1696
1696
  },
1697
1697
  "attributesDropdown.itemsFiltered.tooltip": {
1698
1698
  "value": "Values are filtered by: <strong>{filters}</strong>",
1699
- "comment": "Do not translate HTML markup enclosed in <> and {filters} placeholder as it will be replaced by list of filter names.",
1699
+ "comment": "Tooltip explaining which filters are currently applied to the attribute dropdown items. The {filters} placeholder will be replaced with the names of active filters.",
1700
1700
  "limit": 0
1701
1701
  },
1702
1702
  "attributesDropdown.itemsFiltered": {
@@ -1706,7 +1706,7 @@
1706
1706
  },
1707
1707
  "attributeFilterDropdown.emptyValue": {
1708
1708
  "value": "empty value",
1709
- "comment": "",
1709
+ "comment": "Display text for empty or null values in the attribute filter dropdown. Used when an attribute has no value assigned.",
1710
1710
  "limit": 0
1711
1711
  },
1712
1712
  "attributesDropdown.noData": {
@@ -1746,7 +1746,7 @@
1746
1746
  },
1747
1747
  "attributesDropdown.filterConfiguredMessage": {
1748
1748
  "value": "<strong>{parentTitle}</strong> is already filtered by <strong>{childTitle}</strong> filter directly or through other filters.",
1749
- "comment": "Do not translate HTML markup enclosed in <> and placeholders enclosed in {}.",
1749
+ "comment": "Message explaining filter configuration status. The <strong> tags emphasize attribute names, and {parentTitle}/{childTitle} show the specific filter names.",
1750
1750
  "limit": 0
1751
1751
  },
1752
1752
  "attributesDropdown.attributeNameWithData": {
@@ -1756,67 +1756,67 @@
1756
1756
  },
1757
1757
  "attributesDropdown.noConnectionMessage": {
1758
1758
  "value": "<strong>{childTitle}</strong> cannot be filtered by <strong>{parentTitle}</strong>. There is no connection between the filter attributes in the data model.",
1759
- "comment": "Do not translate HTML markup enclosed in <> and placeholders enclosed in {}.",
1759
+ "comment": "Message explaining that a filter cannot be applied because there is no connection between the filter attributes in the data model.",
1760
1760
  "limit": 0
1761
1761
  },
1762
1762
  "attributesDropdown.details.type": {
1763
1763
  "value": "Attribute",
1764
- "comment": "",
1764
+ "comment": "Label indicating the type of metadata being displayed, in this case an 'Attribute' type field in the attribute dropdown details.",
1765
1765
  "limit": 0
1766
1766
  },
1767
1767
  "attributesDropdown.details.dataset": {
1768
1768
  "value": "Dataset",
1769
- "comment": "",
1769
+ "comment": "Label for the dataset field in the attribute dropdown details, showing which dataset the attribute belongs to.",
1770
1770
  "limit": 0
1771
1771
  },
1772
1772
  "attributesDropdown.relevantValues": {
1773
1773
  "value": "Relevant values only.{nbsp}",
1774
- "comment": "Do not translate non-breakable space '{nbsp}'",
1774
+ "comment": "Message explaining that only relevant values are displayed in the dropdown.",
1775
1775
  "limit": 0
1776
1776
  },
1777
1777
  "attributesDropdown.relevantValues.tooltip.parentFilters": {
1778
1778
  "value": "Available values for <strong>{child}</strong> are filtered by selected <strong>{parents}</strong>.",
1779
- "comment": "Do not translate HTML markup enclosed in <> and {child}, {parents} placeholders as it will be replaced by list of filter names.",
1779
+ "comment": "Message about filter dependencies. The <strong> tags emphasize filter names, and {child}/{parents} placeholders show the specific filter relationships.",
1780
1780
  "limit": 0
1781
1781
  },
1782
1782
  "attributesDropdown.relevantValues.tooltip.limits": {
1783
1783
  "value": "Values for <strong>{child}</strong> are filtered by an additional filter setting. ",
1784
- "comment": "Do not translate HTML markup enclosed in <> and {child} placeholder as it will be replaced by a filter name.",
1784
+ "comment": "Message about filter dependencies. The <strong> tags emphasize filter names, and {child}/{parents} placeholders show the specific filter relationships.",
1785
1785
  "limit": 0
1786
1786
  },
1787
1787
  "attributesDropdown.relevantValues.tooltip.parentFiltersLimits": {
1788
1788
  "value": "Values for <strong>{child}</strong> are filtered by the selected <strong>{parents}</strong> and an additional filter setting.",
1789
- "comment": "Do not translate HTML markup enclosed in <> and {child}, {parents} placeholders as it will be replaced by list of filter names.",
1789
+ "comment": "Message about filter dependencies. The <strong> tags emphasize filter names, and {child}/{parents} placeholders show the specific filter relationships.",
1790
1790
  "limit": 0
1791
1791
  },
1792
1792
  "attributesDropdown.noRelevantValues": {
1793
1793
  "value": "No relevant values",
1794
- "comment": "",
1794
+ "comment": "Message displayed when there are no matching values available in the dropdown based on the current filter criteria.",
1795
1795
  "limit": 0
1796
1796
  },
1797
1797
  "attributesDropdown.noRelevantValues.tooltip": {
1798
1798
  "value": "Your selection in the dependent filter has resulted in no matching values for this filter.{break}Click 'Show all' to see all available options.",
1799
- "comment": "Do not translate '{break}' variable.",
1799
+ "comment": "Tooltip explaining that the current filter combination yields no results and suggests viewing all available options by clicking the 'Show all' button.",
1800
1800
  "limit": 0
1801
1801
  },
1802
1802
  "attributesDropdown.irrelevantValues": {
1803
1803
  "value": "Irrelevant value selected.{nbsp}",
1804
- "comment": "Do not translate non-breakable space '{nbsp}'",
1804
+ "comment": "Message with non-breaking space for proper formatting. The {nbsp} represents a non-breaking space character.",
1805
1805
  "limit": 0
1806
1806
  },
1807
1807
  "attributesDropdown.irrelevantValues.tooltip": {
1808
1808
  "value": "Selected value is no longer relevant due to changes in <strong>{parents}</strong>.",
1809
- "comment": "Do not translate HTML markup enclosed in <> and {parents} placeholder as it will be replaced by list of filter names.",
1809
+ "comment": "Message about parent filter restrictions. The <strong> tags emphasize filter names, and {parents} shows the list of conflicting filters.",
1810
1810
  "limit": 0
1811
1811
  },
1812
1812
  "attributesDropdown.irrelevantValues.clear": {
1813
1813
  "value": "Clear",
1814
- "comment": "",
1814
+ "comment": "Button label for clearing the current selection of irrelevant values in the attribute filter dropdown.",
1815
1815
  "limit": 0
1816
1816
  },
1817
1817
  "attributesDropdown.showAll": {
1818
1818
  "value": "Show all",
1819
- "comment": "",
1819
+ "comment": "Button label that reveals all available options in the dropdown, regardless of current filter settings.",
1820
1820
  "limit": 0
1821
1821
  },
1822
1822
  "shareDialog.share.grantee.title": {
@@ -1845,7 +1845,7 @@
1845
1845
  "limit": 0
1846
1846
  },
1847
1847
  "shareDialog.share.link.buttonText": {
1848
- "value": "Copy",
1848
+ "value": "Copy dashboard link",
1849
1849
  "comment": "Label of button that copies the share link to the clipboard.",
1850
1850
  "limit": 0
1851
1851
  },
@@ -1906,12 +1906,12 @@
1906
1906
  },
1907
1907
  "shareDialog.share.grantee.item.you": {
1908
1908
  "value": "{userName} (You)",
1909
- "comment": "Text used for currently logged user in the list of grantees in share dialog. '{userName}' placeholder is replaced with logged use name, for example, 'John Doe (You)'. Do not translate '{userName}' placeholder.",
1909
+ "comment": "Text used for currently logged user in the list of grantees in share dialog. '{userName}' placeholder is replaced with logged user name, for example, 'John Doe (You)'. Keep {userName} placeholder unchanged.",
1910
1910
  "limit": 0
1911
1911
  },
1912
1912
  "shareDialog.share.grantee.item.users.count": {
1913
1913
  "value": "{granteeCount} users",
1914
- "comment": "Description of grantee user group in share dialog that informs about how many users are in the group. {granteeCount} placeholder will be replaced with a number, for example '110 users'. Do not translate '{granteeCount}' placeholder.",
1914
+ "comment": "Description of grantee user group in share dialog that informs about how many users are in the group. {granteeCount} placeholder will be replaced with a number, for example '110 users'",
1915
1915
  "limit": 0
1916
1916
  },
1917
1917
  "shareDialog.share.grantee.item.creator": {
@@ -1941,72 +1941,72 @@
1941
1941
  },
1942
1942
  "shareDialog.share.granular.grantee.permission.edit": {
1943
1943
  "value": "Can edit & share",
1944
- "comment": "",
1944
+ "comment": "Permission level that grants the user full edit and share capabilities for the dashboard, including modifying content and managing access for others.",
1945
1945
  "limit": 0
1946
1946
  },
1947
1947
  "shareDialog.share.granular.grantee.permission.share": {
1948
1948
  "value": "Can view & share",
1949
- "comment": "",
1949
+ "comment": "Permission level that allows users to view the dashboard and share it with others, but not modify the dashboard content.",
1950
1950
  "limit": 0
1951
1951
  },
1952
1952
  "shareDialog.share.granular.grantee.permission.view": {
1953
1953
  "value": "Can view",
1954
- "comment": "",
1954
+ "comment": "Basic read-only permission level that allows users to view the dashboard content but not make any changes or share it with others.",
1955
1955
  "limit": 0
1956
1956
  },
1957
1957
  "shareDialog.share.granular.grantee.permission.remove": {
1958
1958
  "value": "Remove",
1959
- "comment": "",
1959
+ "comment": "Button label for removing a user's or group's permissions entirely from the dashboard.",
1960
1960
  "limit": 0
1961
1961
  },
1962
1962
  "shareDialog.share.granular.granularUser.tooltip.cannotChangeHigher": {
1963
1963
  "value": "You cannot remove or change permissions for users with higher permissions than you have.",
1964
- "comment": "",
1964
+ "comment": "Error message shown when a user attempts to modify permissions of another user who has higher access rights than themselves.",
1965
1965
  "limit": 0
1966
1966
  },
1967
1967
  "shareDialog.share.granular.granularGroup.tooltip.cannotChangeHigher": {
1968
1968
  "value": "You cannot remove or change permissions for groups with higher permissions than you have.",
1969
- "comment": "",
1969
+ "comment": "Error message shown when a user attempts to modify permissions of a group that has higher access rights than they do.",
1970
1970
  "limit": 0
1971
1971
  },
1972
1972
  "shareDialog.share.granular.grantee.tooltip.cannotGrantHigher": {
1973
1973
  "value": "You cannot set higher permissions than you have.",
1974
- "comment": "",
1974
+ "comment": "Error message shown when a user attempts to grant permissions that exceed their own permission level.",
1975
1975
  "limit": 0
1976
1976
  },
1977
1977
  "shareDialog.share.granular.granularUser.tooltip.cannotGrantLower": {
1978
1978
  "value": "You cannot set lower permissions than are the permissions from user groups with this user.",
1979
- "comment": "",
1979
+ "comment": "Error message shown when attempting to set permissions for a user that would be lower than what they inherit from their group memberships.",
1980
1980
  "limit": 0
1981
1981
  },
1982
1982
  "shareDialog.share.granular.granularGroup.tooltip.cannotGrantLower": {
1983
1983
  "value": "You cannot set lower permissions than are the permissions from user groups that include this group.",
1984
- "comment": "",
1984
+ "comment": "Error message shown when attempting to set permissions for a group that would be lower than what's inherited from parent groups.",
1985
1985
  "limit": 0
1986
1986
  },
1987
1987
  "shareDialog.share.granular.granularUser.tooltip.cannotRemoveFromParent": {
1988
1988
  "value": "You cannot remove permissions for this user in this workspace. To remove the permissions, do so from the parent workspace.",
1989
- "comment": "",
1989
+ "comment": "Error message shown when a user tries to remove permissions that are inherited from a parent workspace and cannot be modified in the current context.",
1990
1990
  "limit": 0
1991
1991
  },
1992
1992
  "shareDialog.share.granular.granularGroup.tooltip.cannotRemoveFromParent": {
1993
1993
  "value": "You cannot remove permissions for this user group in this workspace. To remove the permissions, do so from the parent workspace.",
1994
- "comment": "",
1994
+ "comment": "Error message shown when a user tries to remove permissions for a group that are inherited from a parent workspace and cannot be modified in the current context.",
1995
1995
  "limit": 0
1996
1996
  },
1997
1997
  "shareDialog.share.granular.granularUser.tooltip.noChangeAvailable": {
1998
1998
  "value": "You cannot remove or change permissions for this user in this workspace. To edit the permissions, do so from the parent workspace.",
1999
- "comment": "",
1999
+ "comment": "Error message shown when a user attempts to modify permissions that are managed at a higher level and cannot be changed in the current workspace context.",
2000
2000
  "limit": 0
2001
2001
  },
2002
2002
  "shareDialog.share.granular.granularGroup.tooltip.noChangeAvailable": {
2003
2003
  "value": "You cannot remove or change permissions for this user group in this workspace. To edit the permissions, do so from the parent workspace.",
2004
- "comment": "",
2004
+ "comment": "Error message shown when a user attempts to modify group permissions that are managed at a higher level and cannot be changed in the current workspace context.",
2005
2005
  "limit": 0
2006
2006
  },
2007
2007
  "shareDialog.share.granular.administrator.info": {
2008
2008
  "value": "<b>Note.</b> You and other administrators have full access to all dashboards.",
2009
- "comment": "",
2009
+ "comment": "Informational message displayed to administrators, indicating they have full access privileges across all dashboards by default.",
2010
2010
  "limit": 0
2011
2011
  },
2012
2012
  "shareDialog.share.granular.grantee.permission.label": {
@@ -2087,7 +2087,7 @@
2087
2087
  },
2088
2088
  "embedInsightDialog.actions.close": {
2089
2089
  "value": "Close",
2090
- "comment": "",
2090
+ "comment": "Label for the close button in the embed insight dialog, allowing users to exit the dialog without copying any code.",
2091
2091
  "limit": 0
2092
2092
  },
2093
2093
  "embedInsightDialog.actions.copyCode": {
@@ -2117,7 +2117,7 @@
2117
2117
  },
2118
2118
  "embedInsightDialog.webComponents.options.displayTitle": {
2119
2119
  "value": "Display title",
2120
- "comment": "",
2120
+ "comment": "Option to control whether the title of the embedded insight should be displayed in the web component.",
2121
2121
  "limit": 0
2122
2122
  },
2123
2123
  "embedInsightDialog.webComponents.options.customTitle": {
@@ -2148,22 +2148,22 @@
2148
2148
  },
2149
2149
  "embedInsightDialog.code.options.custom.height": {
2150
2150
  "value": "Custom height",
2151
- "comment": "",
2151
+ "comment": "Option to specify a custom height for the embedded insight component in the generated code.",
2152
2152
  "limit": 0
2153
2153
  },
2154
2154
  "embedInsightDialog.code.options.display.configuration": {
2155
2155
  "value": "Include configuration",
2156
- "comment": "",
2156
+ "comment": "Option to include visualization configuration (colors, axes, legend settings) in the generated embed code.",
2157
2157
  "limit": 0
2158
2158
  },
2159
2159
  "embedInsightDialog.headLine.embedInsight|insight": {
2160
2160
  "value": "Embed visualization",
2161
- "comment": "",
2161
+ "comment": "Title of the dialog for embedding a visualization, shown when the user wants to embed a specific visualization.",
2162
2162
  "limit": 0
2163
2163
  },
2164
2164
  "embedInsightDialog.headLine.embedInsight|report": {
2165
2165
  "value": "Embed report",
2166
- "comment": "",
2166
+ "comment": "Title of the dialog for embedding a report, shown when the user wants to embed a specific report.",
2167
2167
  "limit": 0,
2168
2168
  "translate": false
2169
2169
  },
@@ -2201,7 +2201,7 @@
2201
2201
  },
2202
2202
  "embedInsightDialog.prepareEnvironmentMessage": {
2203
2203
  "value": "<b>Note.</b> In order for this snippet to work, prepare your environment.",
2204
- "comment": "Do not translate html tags <b>, </b>",
2204
+ "comment": "Message explaining code area restrictions. The <b> or <a> tags provide emphasis and clickable actions respectively.",
2205
2205
  "limit": 0
2206
2206
  },
2207
2207
  "embedInsightDialog.prepareEnvironmentMessage.link": {
@@ -2226,12 +2226,12 @@
2226
2226
  },
2227
2227
  "embedInsightDialog.emptyInsight.byReference|insight": {
2228
2228
  "value": "Code snipped will be displayed here once you <a>save the visualization</a>.",
2229
- "comment": "The disabled message for code area. Do not translate html tags <a>, </a>",
2229
+ "comment": "Message explaining code area restrictions. The <b> or <a> tags provide emphasis and clickable actions respectively.",
2230
2230
  "limit": 0
2231
2231
  },
2232
2232
  "embedInsightDialog.emptyInsight.byReference|report": {
2233
2233
  "value": "Code snipped will be displayed here once you <a>save the report</a>.",
2234
- "comment": "The disabled message for code area. Do not translate html tags <a>, </a>",
2234
+ "comment": "Message explaining code area restrictions. The <b> or <a> tags provide emphasis and clickable actions respectively.",
2235
2235
  "limit": 0,
2236
2236
  "translate": false
2237
2237
  },
@@ -2258,42 +2258,42 @@
2258
2258
  },
2259
2259
  "error.overlay.login": {
2260
2260
  "value": "Login",
2261
- "comment": "",
2261
+ "comment": "Button label for the login action shown in the error overlay when a user has been logged out.",
2262
2262
  "limit": 0
2263
2263
  },
2264
2264
  "error.overlay.title": {
2265
2265
  "value": "You have been logged out",
2266
- "comment": "",
2266
+ "comment": "Title shown in the error overlay when a user's session has expired or they have been logged out.",
2267
2267
  "limit": 0
2268
2268
  },
2269
2269
  "error.overlay.text": {
2270
2270
  "value": "Please log back in to continue your work.",
2271
- "comment": "",
2271
+ "comment": "Instructional text shown in the error overlay, guiding the user to log back in after being logged out.",
2272
2272
  "limit": 0
2273
2273
  },
2274
2274
  "stylingPicker.title.basic": {
2275
2275
  "value": "Default",
2276
- "comment": "",
2276
+ "comment": "Label for the default styling option in the styling picker, using the system's default styles.",
2277
2277
  "limit": 0
2278
2278
  },
2279
2279
  "stylingPicker.title.custom": {
2280
2280
  "value": "Custom",
2281
- "comment": "",
2281
+ "comment": "Label for the custom styling option in the styling picker, allowing users to apply their own styles.",
2282
2282
  "limit": 0
2283
2283
  },
2284
2284
  "stylingPicker.title.create": {
2285
2285
  "value": "Create",
2286
- "comment": "",
2286
+ "comment": "Button label for creating a new custom style in the styling picker interface.",
2287
2287
  "limit": 0
2288
2288
  },
2289
2289
  "stylingEditor.dialog.name": {
2290
2290
  "value": "Name",
2291
- "comment": "",
2291
+ "comment": "Label for the name input field in the styling editor dialog.",
2292
2292
  "limit": 0
2293
2293
  },
2294
2294
  "stylingEditor.dialog.name.required": {
2295
2295
  "value": "Cannot save. Specify a name.",
2296
- "comment": "",
2296
+ "comment": "Error message shown when attempting to save a style without providing a name.",
2297
2297
  "limit": 0
2298
2298
  },
2299
2299
  "stylingEditor.dialog.definition": {
@@ -2303,17 +2303,17 @@
2303
2303
  },
2304
2304
  "stylingEditor.dialog.definition.required": {
2305
2305
  "value": "Cannot save. Specify a definition.",
2306
- "comment": "",
2306
+ "comment": "Error message shown when attempting to save a style without providing a definition.",
2307
2307
  "limit": 0
2308
2308
  },
2309
2309
  "stylingEditor.dialog.definition.invalid": {
2310
2310
  "value": "Cannot save. The definition is not a valid JSON object.",
2311
- "comment": "",
2311
+ "comment": "Error message shown when the style definition contains invalid JSON syntax.",
2312
2312
  "limit": 0
2313
2313
  },
2314
2314
  "stylingEditor.dialog.examples": {
2315
2315
  "value": "Templates",
2316
- "comment": "",
2316
+ "comment": "Label for the templates section in the styling editor dialog, containing predefined style examples.",
2317
2317
  "limit": 0
2318
2318
  },
2319
2319
  "stylingEditor.dialog.example.paste": {
@@ -2323,17 +2323,17 @@
2323
2323
  },
2324
2324
  "stylingPicker.item.edit": {
2325
2325
  "value": "Edit",
2326
- "comment": "",
2326
+ "comment": "Button label for editing an existing style in the styling picker.",
2327
2327
  "limit": 0
2328
2328
  },
2329
2329
  "stylingPicker.item.delete": {
2330
2330
  "value": "Delete",
2331
- "comment": "",
2331
+ "comment": "Button label for removing a style from the styling picker.",
2332
2332
  "limit": 0
2333
2333
  },
2334
2334
  "stylingPicker.item.delete.tooltip": {
2335
2335
  "value": "Applied item cannot be deleted.",
2336
- "comment": "",
2336
+ "comment": "Tooltip message shown when attempting to delete a style that is currently in use.",
2337
2337
  "limit": 0
2338
2338
  },
2339
2339
  "descriptionPanel.button.more": {
@@ -2353,17 +2353,17 @@
2353
2353
  },
2354
2354
  "configurationPanel.drillConfig.drillToDashboard.tooltip": {
2355
2355
  "value": "Open a related dashboard for an expanded view on the selected data point, carrying over relevant filters and context. <a>Learn more</a>",
2356
- "comment": "Tooltip that explain what happens when drilling to dashboard. Do not translate html tags <a>, </a>.",
2356
+ "comment": "Tooltip explaining drilling behavior. The <a> tags create clickable help links for more information.",
2357
2357
  "limit": 0
2358
2358
  },
2359
2359
  "configurationPanel.drillConfig.drillToInsight.tooltip": {
2360
2360
  "value": "Open a related visualization, maintaining the applied filters from the original view. <a>Learn more</a>",
2361
- "comment": "Tooltip that explain what happens when drilling to visualization. Do not translate html tags <a>, </a>.",
2361
+ "comment": "Tooltip explaining drilling behavior. The <a> tags create clickable help links for more information.",
2362
2362
  "limit": 0
2363
2363
  },
2364
2364
  "configurationPanel.drillConfig.drillToUrl.tooltip": {
2365
2365
  "value": "Open a custom URL with dynamic parameters based on the selected data point. <a>Learn more</a>",
2366
- "comment": "Tooltip that explain what happens when drilling to custom URL. Do not translate html tags <a>, </a>.",
2366
+ "comment": "Tooltip explaining drilling behavior. The <a> tags create clickable help links for more information.",
2367
2367
  "limit": 0
2368
2368
  },
2369
2369
  "configurationPanel.drillConfig.drilldown": {
@@ -2373,17 +2373,17 @@
2373
2373
  },
2374
2374
  "configurationPanel.drillConfig.drilldown.tooltip": {
2375
2375
  "value": "Drill down within the current visualization, following predefined attribute hierarchies to view your data on an increasingly granular level. <a>Learn more</a>",
2376
- "comment": "Tooltip that explain what happens when drilling down. Do not translate html tags <a>, </a>.",
2376
+ "comment": "Tooltip explaining drilling behavior. The <a> tags create clickable help links for more information.",
2377
2377
  "limit": 0
2378
2378
  },
2379
2379
  "configurationPanel.drillConfig.drilldown.tooltip.disabled.insight": {
2380
2380
  "value": "Drill down is turned off in this visualization's configuration.",
2381
- "comment": "Tooltip that explain drill down is disabled by visualization's configuration",
2381
+ "comment": "Tooltip explaining drill down is disabled by visualization's configuration",
2382
2382
  "limit": 0
2383
2383
  },
2384
2384
  "configurationPanel.drillConfig.drilldown.tooltip.disabled.metric": {
2385
2385
  "value": "Drill down can only be set for attributes, not metrics.",
2386
- "comment": "Tooltip that explain drill down is disabled for metrics",
2386
+ "comment": "Tooltip explaining drill down is disabled for metrics",
2387
2387
  "limit": 0
2388
2388
  },
2389
2389
  "configurationPanel.drillConfig.drilldown.emtpy.hierarchy.info": {
@@ -2393,7 +2393,7 @@
2393
2393
  },
2394
2394
  "configurationPanel.drillConfig.selectHierarchy": {
2395
2395
  "value": "Choose hierarchy…",
2396
- "comment": "Hint guiding users that attribute hierarchy in select box has to be selected. Use '…' as one character, not 3 dots ('...').",
2396
+ "comment": "Hint guiding users that attribute hierarchy in select box has to be selected.",
2397
2397
  "limit": 0
2398
2398
  },
2399
2399
  "configurationPanel.drillConfig.drilldown.create.hierarchy": {
@@ -2468,12 +2468,12 @@
2468
2468
  },
2469
2469
  "attributeHierarchyEditor.attribute.dropdown.title": {
2470
2470
  "value": "Choose attribute…",
2471
- "comment": "Use '…' as one character, not 3 dots ('...').",
2471
+ "comment": "Text for dropdown title to select an attribute.",
2472
2472
  "limit": 0
2473
2473
  },
2474
2474
  "attributeHierarchyEditor.attribute.dropdown.search": {
2475
2475
  "value": "Search…",
2476
- "comment": "Use '…' as one character, not 3 dots ('...').",
2476
+ "comment": "Text for dropdown search input placeholder.",
2477
2477
  "limit": 0
2478
2478
  },
2479
2479
  "attributeHierarchyEditor.note.title": {
@@ -2483,7 +2483,7 @@
2483
2483
  },
2484
2484
  "attributeHierarchyEditor.note.message": {
2485
2485
  "value": "<b>Note:</b> The attribute hierarchy you define is applied globally to all visualizations. This enables drill down interactions not just for the {br}current visualization, but for all visualizations that include any of the attributes within the hierarchy.",
2486
- "comment": "Information shown in create hierarchy editor. Do not translate html tags <b>, </b> and {br}.",
2486
+ "comment": "Information about hierarchy editor functionality. The <b> tags emphasize important terms and {br} represents line breaks.",
2487
2487
  "limit": 0
2488
2488
  },
2489
2489
  "attributeHierarchyEditor.howItWorks.title": {
@@ -2579,12 +2579,12 @@
2579
2579
  },
2580
2580
  "workspaceHierarchy.inheritedInsight|insight": {
2581
2581
  "value": "You cannot edit or delete this visualization.{br}It is centrally managed and certified.",
2582
- "comment": "Shown when hovering over lock indicator. Dont translate html tag placeholder {br}.",
2582
+ "comment": "Shown when hovering over lock indicator. Placeholder {br} is replaced with visual line break",
2583
2583
  "limit": 0
2584
2584
  },
2585
2585
  "workspaceHierarchy.inheritedInsight|report": {
2586
2586
  "value": "You cannot edit or delete this report.{br}It is centrally managed and certified.",
2587
- "comment": "Shown when hovering over lock indicator. Dont translate html tag placeholder {br}.",
2587
+ "comment": "Shown when hovering over lock indicator. Placeholder {br} is replaced with visual line break",
2588
2588
  "translate": false,
2589
2589
  "limit": 0
2590
2590
  },
@@ -2655,17 +2655,17 @@
2655
2655
  },
2656
2656
  "userManagement.tab.workspaces": {
2657
2657
  "value": "Workspaces ({count})",
2658
- "comment": "Label of tab that lists user permissions to workspaces. Do not translate placeholder {count}. It will be replaced by number of assigned permissions in runtime.",
2658
+ "comment": "Label of tab that lists user permissions to workspaces. The placeholder {count} will be replaced with a number, e.g., 'Workspaces (5)' when user has 5 workspace assignments. For example, if the user has 5 workspace assignments, the label will be 'Workspaces (5)'. The placeholder {count} will be replaced with a number, e.g., 'Workspaces (5)' when user has 5 workspace assignments.",
2659
2659
  "limit": 0
2660
2660
  },
2661
2661
  "userManagement.tab.groups": {
2662
2662
  "value": "Groups ({count})",
2663
- "comment": "Label of tab that lists user groups user is member of. Do not translate placeholder {count}. It will be replaced by number of assigned groups in runtime.",
2663
+ "comment": "Label of tab that lists user groups user is member of. The placeholder {count} will be replaced with a number, e.g., 'Groups (3)' when user belongs to 3 groups.",
2664
2664
  "limit": 0
2665
2665
  },
2666
2666
  "userManagement.tab.users": {
2667
2667
  "value": "Members ({count})",
2668
- "comment": "Label of tab that lists user members of a user group. Do not translate placeholder {count}. It will be replaced by number of group members in runtime.",
2668
+ "comment": "Label of tab that lists user members of a user group. The placeholder {count} will be replaced with a number, e.g., 'Members (12)' when group has 12 members.",
2669
2669
  "limit": 0
2670
2670
  },
2671
2671
  "userManagement.tab.details": {
@@ -2700,7 +2700,7 @@
2700
2700
  },
2701
2701
  "userManagement.tab.dataSources": {
2702
2702
  "value": "Data Sources ({count})",
2703
- "comment": "Label of tab that lists data sources assigned to a user. Do not translate placeholder {count}. It will be replaced by number of data sources in runtime.",
2703
+ "comment": "Label of tab that lists data sources assigned to a user. The placeholder {count} will be replaced with a number, e.g., 'Data Sources (5)' when user has 5 data source assignments.",
2704
2704
  "limit": 0
2705
2705
  },
2706
2706
  "userManagement.buttons.addDataSourcePermission": {
@@ -3190,7 +3190,7 @@
3190
3190
  },
3191
3191
  "userManagement.userGroups.emptySelection.edit": {
3192
3192
  "value": "No groups selected.",
3193
- "comment": "Information is displayed in user groups selectbox when user did not type anything yet.",
3193
+ "comment": "Shown when user did not type anything yet.",
3194
3194
  "limit": 0
3195
3195
  },
3196
3196
  "userManagement.userDetail.saveButton": {
@@ -3335,7 +3335,7 @@
3335
3335
  },
3336
3336
  "userManagement.deleteDialog.multipleUsers.body": {
3337
3337
  "value": "<b>{count} users</b> will be irreversibly deleted, but their visualizations and dashboards will remain unaffected.",
3338
- "comment": "Body of dialog that deletes multiple users. Do not translate placeholder {count}. It will be replaced with number of selected users in runtime.",
3338
+ "comment": "Body of dialog that deletes multiple users. The placeholder {count} will be replaced with a number, e.g., '5 users'.",
3339
3339
  "limit": 0
3340
3340
  },
3341
3341
  "userManagement.deleteDialog.group.title": {
@@ -3355,7 +3355,7 @@
3355
3355
  },
3356
3356
  "userManagement.deleteDialog.multipleGroups.body": {
3357
3357
  "value": "<b>{count} groups</b> will be irreversibly deleted. All their members will lose the rights defined by the group-specific permissions.",
3358
- "comment": "Body of dialog that deletes multiple user group. Do not translate placeholder {count}. It will be replaced with number of selected user groups in runtime.",
3358
+ "comment": "Body of dialog that deletes multiple user groups. The placeholder {count} will be replaced with a number, e.g., '5 groups'.",
3359
3359
  "limit": 0
3360
3360
  },
3361
3361
  "userManagement.deleteDialog.cancelButton": {
@@ -3625,12 +3625,12 @@
3625
3625
  },
3626
3626
  "recurrence.types.weekly": {
3627
3627
  "value": "Weekly on {day}",
3628
- "comment": "Example: 'Weekly on Friday'. Placeholder '{day}' refers to a day of a week. Don't translate placeholder '{day}'.",
3628
+ "comment": "Example: 'Weekly on Friday'. Placeholder '{day}' refers to a day of a week.",
3629
3629
  "limit": 0
3630
3630
  },
3631
3631
  "recurrence.types.monthly.last": {
3632
3632
  "value": "Monthly on the last {day}",
3633
- "comment": "Example: 'Monthly on the last Friday'. Do not translate placeholder {day}'",
3633
+ "comment": "Example: 'Monthly on the last Friday'. The placeholder {day} will be replaced with a day of the week name like 'Friday', 'Monday', etc.",
3634
3634
  "limit": 0
3635
3635
  },
3636
3636
  "recurrence.types.monthly.first": {
@@ -3645,7 +3645,7 @@
3645
3645
  },
3646
3646
  "recurrence.types.monthly": {
3647
3647
  "value": "Monthly on the {week, select, 1 {first} 2 {second} 3 {third} 4 {fourth} other {last}} {day}",
3648
- "comment": "Example: 'Monthly on the first Friday'. Translate only uppercase in 'MONTHLY ON THE {week, select, 1 {FIRST} 2 {SECOND} 3 {THIRD} 4 {FOURTH} other {LAST}} {day}'",
3648
+ "comment": "Recurrence pattern description. The placeholder {week} will be replaced with a number (1-4) to select the appropriate week ordinal, and {day} will be replaced with a day name. Examples: 'Monthly on the first Friday', 'Monthly on the second Monday', 'Monthly on the last Sunday'.",
3649
3649
  "limit": 0
3650
3650
  },
3651
3651
  "recurrence.types.cron": {
@@ -3665,32 +3665,32 @@
3665
3665
  },
3666
3666
  "recurrence.description.hourly": {
3667
3667
  "value": "At start of every hour",
3668
- "comment": "",
3668
+ "comment": "Description of hourly recurrence pattern, indicating execution at the beginning of each hour.",
3669
3669
  "limit": 0
3670
3670
  },
3671
3671
  "recurrence.description.daily": {
3672
3672
  "value": "At {hour} every day",
3673
- "comment": "Do not translate placeholder {hour}.",
3673
+ "comment": "The placeholder {hour} will be replaced with a time value like '9:00 AM', '14:30', etc.",
3674
3674
  "limit": 0
3675
3675
  },
3676
3676
  "recurrence.description.weekly_first": {
3677
3677
  "value": "At {hour} every week start",
3678
- "comment": "Do not translate placeholder {hour}.",
3678
+ "comment": "The placeholder {hour} will be replaced with a time value like '9:00 AM', '14:30', etc.",
3679
3679
  "limit": 0
3680
3680
  },
3681
3681
  "recurrence.description.weekly": {
3682
3682
  "value": "At {hour} on {dayOfWeekName} every week",
3683
- "comment": "Do not translate placeholders {hour} and {dayOfWeekName}.",
3683
+ "comment": "The placeholder {hour} will be replaced with a time value like '9:00 AM', '14:30', etc. The placeholder {dayOfWeekName} will be replaced with a day name like 'Monday', 'Tuesday', etc.",
3684
3684
  "limit": 0
3685
3685
  },
3686
3686
  "recurrence.description.monthly_first": {
3687
3687
  "value": "At {hour} every month start",
3688
- "comment": "Do not translate placeholder {hour}.",
3688
+ "comment": "The placeholder {hour} will be replaced with a time value like '9:00 AM', '14:30', etc.",
3689
3689
  "limit": 0
3690
3690
  },
3691
3691
  "recurrence.description.monthly": {
3692
3692
  "value": "At {hour} on {dayOfWeekName} every {weekNumber}. week in month",
3693
- "comment": "Do not translate placeholders {hour}, {dayOfWeekName} and {weekNumber}.",
3693
+ "comment": "The placeholder {hour} will be replaced with a time value like '9:00 AM', '14:30', etc. The placeholder {dayOfWeekName} will be replaced with a day name like 'Monday', 'Tuesday', etc. The placeholder {weekNumber} will be replaced with a number like '1', '2', '3', etc.",
3694
3694
  "limit": 0
3695
3695
  },
3696
3696
  "recurrence.error.too_often": {
@@ -3700,57 +3700,57 @@
3700
3700
  },
3701
3701
  "recurrence.error.empty": {
3702
3702
  "value": "Error: Required field — enter a Spring cron expression with six fields: seconds, minutes, hours, day of month, month, and day of week. <a>Learn more</a>",
3703
- "comment": "Input field is required. Do not translate html tags <a>, </a>.",
3703
+ "comment": "Input field validation message. The <a> tags create clickable help links for assistance.",
3704
3704
  "limit": 0
3705
3705
  },
3706
3706
  "recurrence.error.wrongFormat": {
3707
3707
  "value": "Error: Invalid format — use Spring cron format with six fields: seconds, minutes, hours, day of month, month, and day of week. <a>Learn more</a>",
3708
- "comment": "Input field has wrong format. Do not translate html tags <a>, </a>.",
3708
+ "comment": "Input field has wrong format. The <a> tags create clickable help links for assistance.",
3709
3709
  "limit": 0
3710
3710
  },
3711
3711
  "recurrence.cron.tooltip": {
3712
3712
  "value": "Use Spring cron format — six fields: seconds, minutes, hours, day of month, month, day of week. <a>Learn more</a>",
3713
- "comment": "Do not translate html tags <a>, </a>.",
3713
+ "comment": "Input field tooltip. The <a> tags create clickable help links for assistance.",
3714
3714
  "limit": 0
3715
3715
  },
3716
3716
  "recurrence.datetime.format.help": {
3717
3717
  "value": "Format: {dateFormat}",
3718
- "comment": "Do not translate placeholde {dateFormat}",
3718
+ "comment": "Input field tooltip. Example: Format: YYYY-MM-DD",
3719
3719
  "limit": 0
3720
3720
  },
3721
3721
  "recurrence.datetime.empty.error": {
3722
3722
  "value": "Error: Required field — enter a valid date to continue.",
3723
- "comment": "Do not translate placeholde {dateFormat}",
3723
+ "comment": "Input field validation message.",
3724
3724
  "limit": 0
3725
3725
  },
3726
3726
  "recurrence.datetime.wrong.format.error": {
3727
3727
  "value": "Error: Invalid date — format must be {dateFormat}",
3728
- "comment": "Do not translate placeholde {dateFormat}",
3728
+ "comment": "Error message shown when the date format doesn't match the expected format. The placeholder {dateFormat} shows the required format.",
3729
3729
  "limit": 0
3730
3730
  },
3731
3731
  "message.accessibility.dismiss.notification": {
3732
3732
  "value": "Dismiss notification",
3733
- "comment": "",
3733
+ "comment": "Accessibility label for the button that closes or dismisses a notification message. Used by screen readers.",
3734
3734
  "limit": 0
3735
3735
  },
3736
3736
  "datePicker.accessibility.label": {
3737
3737
  "value": "Select start date",
3738
- "comment": "",
3738
+ "comment": "Accessibility label for the date picker component, indicating it's used to select a start date. Used by screen readers.",
3739
3739
  "limit": 0
3740
3740
  },
3741
3741
  "timePicker.accessibility.label": {
3742
3742
  "value": "Select starting time",
3743
- "comment": "",
3743
+ "comment": "Accessibility label for the time picker component, indicating it's used to select a starting time. Used by screen readers.",
3744
3744
  "limit": 0
3745
3745
  },
3746
3746
  "menu.close": {
3747
3747
  "value": "Close menu",
3748
- "comment": "",
3748
+ "comment": "Button label for closing a menu. Used in various dropdown and context menus throughout the application.",
3749
3749
  "limit": 0
3750
3750
  },
3751
3751
  "menu.back": {
3752
3752
  "value": "Back to the parent menu",
3753
- "comment": "",
3753
+ "comment": "Button label for navigating back to the parent menu in a nested menu structure. Used in hierarchical navigation.",
3754
3754
  "limit": 0
3755
3755
  }
3756
3756
  }