Leon4gr45 commited on
Commit
bad088c
·
verified ·
1 Parent(s): 5b00d08

Deploy Matomo fully configured for Hugging Face Spaces (part 11)

Browse files
This view is limited to 50 files because it contains too many changes.   See raw diff
Files changed (50) hide show
  1. .gitattributes +1 -0
  2. plugins/Dashboard/javascripts/dashboardObject.js +674 -0
  3. plugins/Dashboard/javascripts/dashboardWidget.js +402 -0
  4. plugins/Dashboard/javascripts/widgetMenu.js +625 -0
  5. plugins/Dashboard/lang/am.json +11 -0
  6. plugins/Dashboard/lang/ar.json +37 -0
  7. plugins/Dashboard/lang/az.json +6 -0
  8. plugins/Dashboard/lang/be.json +12 -0
  9. plugins/Dashboard/lang/bg.json +39 -0
  10. plugins/Dashboard/lang/bn.json +9 -0
  11. plugins/Dashboard/lang/bs.json +7 -0
  12. plugins/Dashboard/lang/ca.json +39 -0
  13. plugins/Dashboard/lang/cs.json +39 -0
  14. plugins/Dashboard/lang/cy.json +5 -0
  15. plugins/Dashboard/lang/da.json +37 -0
  16. plugins/Dashboard/lang/de.json +39 -0
  17. plugins/Dashboard/lang/dv.json +1 -0
  18. plugins/Dashboard/lang/el.json +40 -0
  19. plugins/Dashboard/lang/en.json +40 -0
  20. plugins/Dashboard/lang/eo.json +5 -0
  21. plugins/Dashboard/lang/es-ar.json +39 -0
  22. plugins/Dashboard/lang/es.json +40 -0
  23. plugins/Dashboard/lang/et.json +28 -0
  24. plugins/Dashboard/lang/eu.json +39 -0
  25. plugins/Dashboard/lang/fa.json +37 -0
  26. plugins/Dashboard/lang/fi.json +39 -0
  27. plugins/Dashboard/lang/fr.json +40 -0
  28. plugins/Dashboard/lang/ga.json +40 -0
  29. plugins/Dashboard/lang/gl.json +13 -0
  30. plugins/Dashboard/lang/gu.json +38 -0
  31. plugins/Dashboard/lang/he.json +17 -0
  32. plugins/Dashboard/lang/hi.json +35 -0
  33. plugins/Dashboard/lang/hr.json +39 -0
  34. plugins/Dashboard/lang/hu.json +13 -0
  35. plugins/Dashboard/lang/hy.json +1 -0
  36. plugins/Dashboard/lang/id.json +39 -0
  37. plugins/Dashboard/lang/is.json +12 -0
  38. plugins/Dashboard/lang/it.json +39 -0
  39. plugins/Dashboard/lang/ja.json +39 -0
  40. plugins/Dashboard/lang/ka.json +12 -0
  41. plugins/Dashboard/lang/ko.json +38 -0
  42. plugins/Dashboard/lang/ku.json +29 -0
  43. plugins/Dashboard/lang/lb.json +1 -0
  44. plugins/Dashboard/lang/lt.json +37 -0
  45. plugins/Dashboard/lang/lv.json +38 -0
  46. plugins/Dashboard/lang/ms.json +12 -0
  47. plugins/Dashboard/lang/nb.json +39 -0
  48. plugins/Dashboard/lang/nl.json +39 -0
  49. plugins/Dashboard/lang/nn.json +32 -0
  50. plugins/Dashboard/lang/pl.json +40 -0
.gitattributes CHANGED
@@ -94,3 +94,4 @@ plugins/CustomAlerts/tests/UI/expected-ui-screenshots/CustomAlerts_alert_conditi
94
  plugins/CustomAlerts/tests/UI/expected-ui-screenshots/CustomAlerts_edit.png filter=lfs diff=lfs merge=lfs -text
95
  plugins/CustomAlerts/tests/UI/expected-ui-screenshots/CustomAlerts_report_mediums.png filter=lfs diff=lfs merge=lfs -text
96
  plugins/CustomDimensions/tests/System/expected/test___ScheduledReports.generateReport_year.original.pdf filter=lfs diff=lfs merge=lfs -text
 
 
94
  plugins/CustomAlerts/tests/UI/expected-ui-screenshots/CustomAlerts_edit.png filter=lfs diff=lfs merge=lfs -text
95
  plugins/CustomAlerts/tests/UI/expected-ui-screenshots/CustomAlerts_report_mediums.png filter=lfs diff=lfs merge=lfs -text
96
  plugins/CustomDimensions/tests/System/expected/test___ScheduledReports.generateReport_year.original.pdf filter=lfs diff=lfs merge=lfs -text
97
+ plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf filter=lfs diff=lfs merge=lfs -text
plugins/Dashboard/javascripts/dashboardObject.js ADDED
@@ -0,0 +1,674 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Matomo - free/libre analytics platform
3
+ *
4
+ * @link https://matomo.org
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
6
+ */
7
+
8
+ (function ($) {
9
+
10
+ var layoutColumnSelector = '#dashboardWidgetsArea > .col';
11
+
12
+ /**
13
+ * Current dashboard column layout
14
+ * @type {object}
15
+ */
16
+ var dashboardLayout = {};
17
+ /**
18
+ * Id of current dashboard
19
+ * @type {int}
20
+ */
21
+ var dashboardId = 1;
22
+ /**
23
+ * Name of current dashboard
24
+ * @type {string}
25
+ */
26
+ var dashboardName = '';
27
+ /**
28
+ * Holds a reference to the dashboard element
29
+ * @type {object}
30
+ */
31
+ var dashboardElement = null;
32
+ /**
33
+ * Boolean indicating weather the layout config has been changed or not
34
+ * @type {boolean}
35
+ */
36
+ var dashboardChanged = false;
37
+
38
+ /**
39
+ * public methods of dashboard plugin
40
+ * all methods defined here are accessible with $(selector).dashboard('method', param, param, ...)
41
+ */
42
+ var methods = {
43
+
44
+ /**
45
+ * creates a dashboard object
46
+ *
47
+ * @param {object} options
48
+ */
49
+ init: function (options) {
50
+
51
+ dashboardElement = this;
52
+
53
+ if (options.idDashboard) {
54
+ dashboardId = options.idDashboard;
55
+ }
56
+
57
+ if (options.name) {
58
+ dashboardName = options.name;
59
+ }
60
+
61
+ if (options.layout) {
62
+ generateLayout(options.layout);
63
+ }
64
+
65
+ window.CoreHome.Matomo.postEvent('Dashboard.Dashboard.mounted', { element: this });
66
+
67
+ return this;
68
+ },
69
+
70
+ /**
71
+ * Destroys the dashboard object and all its childrens
72
+ *
73
+ * @return void
74
+ */
75
+ destroy: function () {
76
+ if (dashboardElement && dashboardElement.length) {
77
+ window.CoreHome.Matomo.postEvent('Dashboard.Dashboard.unmounted', {element: dashboardElement[0]});
78
+ }
79
+
80
+ $(dashboardElement).remove();
81
+ dashboardElement = null;
82
+ destroyWidgets();
83
+ },
84
+
85
+ destroyWidgets: destroyWidgets,
86
+
87
+ /**
88
+ * Load dashboard with the given id
89
+ *
90
+ * @param {int} dashboardIdToLoad
91
+ */
92
+ loadDashboard: function (dashboardIdToLoad, forceReload) {
93
+
94
+ $(dashboardElement).empty();
95
+ dashboardName = '';
96
+ dashboardLayout = null;
97
+ dashboardId = dashboardIdToLoad;
98
+
99
+ if (!forceReload && piwikHelper.isReportingPage()) {
100
+ var MatomoUrl = window.CoreHome.MatomoUrl;
101
+ MatomoUrl.updateHash(Object.assign({}, MatomoUrl.hashParsed.value, {
102
+ subcategory: dashboardIdToLoad,
103
+ }));
104
+ } else {
105
+ piwik.postEvent('Dashboard.loadDashboard', dashboardIdToLoad);
106
+ }
107
+
108
+ return this;
109
+ },
110
+
111
+ /**
112
+ * Change current column layout to the given one
113
+ *
114
+ * @param {String} newLayout
115
+ */
116
+ setColumnLayout: function (newLayout) {
117
+ adjustDashboardColumns(newLayout);
118
+ },
119
+
120
+ /**
121
+ * Returns the current column layout
122
+ *
123
+ * @return {String}
124
+ */
125
+ getColumnLayout: function () {
126
+ return dashboardLayout.config.layout;
127
+ },
128
+
129
+ /**
130
+ * Return the current dashboard name
131
+ *
132
+ * @return {String}
133
+ */
134
+ getDashboardName: function () {
135
+ return dashboardName;
136
+ },
137
+
138
+ /**
139
+ * Return the current dashboard id
140
+ *
141
+ * @return {int}
142
+ */
143
+ getDashboardId: function () {
144
+ return dashboardId;
145
+ },
146
+
147
+ /**
148
+ * Sets a new name for the current dashboard
149
+ *
150
+ * @param {String} newName
151
+ */
152
+ setDashboardName: function (newName) {
153
+ dashboardName = newName;
154
+ dashboardChanged = true;
155
+ saveLayout();
156
+ },
157
+
158
+ /**
159
+ * Adds a new widget to the dashboard
160
+ *
161
+ * @param {String} uniqueId
162
+ * @param {int} columnNumber
163
+ * @param {object} widgetParameters
164
+ * @param {boolean} addWidgetOnTop
165
+ * @param {boolean} isHidden
166
+ */
167
+ addWidget: function (uniqueId, columnNumber, widgetParameters, addWidgetOnTop, isHidden) {
168
+ addWidgetTemplate(uniqueId, columnNumber, widgetParameters, addWidgetOnTop, isHidden);
169
+ saveLayout();
170
+ },
171
+
172
+ /**
173
+ * Resets the current layout to the defaults
174
+ */
175
+ resetLayout: function () {
176
+ var ajaxRequest = new ajaxHelper();
177
+ ajaxRequest.addParams({
178
+ module: 'Dashboard',
179
+ action: 'resetLayout',
180
+ idDashboard: dashboardId
181
+ }, 'get');
182
+ ajaxRequest.withTokenInUrl();
183
+ ajaxRequest.setCallback(
184
+ function () {
185
+ methods.loadDashboard.apply(this, [dashboardId, true])
186
+ }
187
+ );
188
+ ajaxRequest.setLoadingElement();
189
+ ajaxRequest.setFormat('html');
190
+ ajaxRequest.send();
191
+ },
192
+
193
+ rebuildMenu: rebuildMenu,
194
+ /**
195
+ * Removes the current dashboard
196
+ */
197
+ removeDashboard: function () {
198
+ if (dashboardId == 1) {
199
+ return; // dashboard with id 1 should never be deleted, as it is the default
200
+ }
201
+
202
+ var ajaxRequest = new ajaxHelper();
203
+ ajaxRequest.setLoadingElement();
204
+ ajaxRequest.addParams({
205
+ module: 'API',
206
+ method: 'Dashboard.removeDashboard',
207
+ idDashboard: dashboardId,
208
+ login: piwik.userLogin,
209
+ format: 'json'
210
+ }, 'get');
211
+ ajaxRequest.setCallback(
212
+ function () {
213
+ Promise.resolve(rebuildMenu()).then(function () {
214
+ methods.loadDashboard.apply(this, [1]);
215
+ });
216
+ }
217
+ );
218
+ ajaxRequest.withTokenInUrl();
219
+ ajaxRequest.setFormat('html');
220
+ ajaxRequest.send();
221
+ },
222
+
223
+ /**
224
+ * Saves the current layout aus new default widget layout
225
+ */
226
+ saveLayoutAsDefaultWidgetLayout: function () {
227
+ saveLayout('saveLayoutAsDefault');
228
+ },
229
+
230
+ /**
231
+ * Returns if the current loaded dashboard is the default dashboard
232
+ */
233
+ isDefaultDashboard: function () {
234
+ return (dashboardId == 1);
235
+ }
236
+ };
237
+
238
+ function destroyWidgets()
239
+ {
240
+ var widgets = $('[widgetId]');
241
+ for (var i = 0; i < widgets.length; i++) {
242
+ $(widgets[i]).dashboardWidget('destroy');
243
+ }
244
+ }
245
+
246
+ function removeNonExistingWidgets(availableWidgets, layout)
247
+ {
248
+ var existingModuleAction = {};
249
+ $.each(availableWidgets, function (category, widgets) {
250
+ $.each(widgets, function (index, widget) {
251
+ existingModuleAction[widget.module + '.' + widget.action] = true;
252
+ });
253
+ });
254
+
255
+ var columns = [];
256
+ $.each(layout.columns, function (i, column) {
257
+ var widgets = [];
258
+
259
+ $.each(column, function (j, widget) {
260
+ if (!widget.parameters || !widget.parameters.module) {
261
+ return;
262
+ }
263
+
264
+ var method = widget.parameters.module + '.' + widget.parameters.action
265
+ if (existingModuleAction[method]) {
266
+ widgets.push(widget);
267
+ }
268
+
269
+ });
270
+
271
+ columns[i] = widgets;
272
+ });
273
+
274
+ layout.columns = columns;
275
+
276
+ return layout;
277
+ }
278
+
279
+ /**
280
+ * Generates the dashboard out of the given layout
281
+ *
282
+ * @param {object|string} layout
283
+ */
284
+ function generateLayout(layout) {
285
+
286
+ dashboardLayout = parseLayout(layout);
287
+
288
+ widgetsHelper.getAvailableWidgets(function (availableWidgets) {
289
+ dashboardLayout = removeNonExistingWidgets(availableWidgets, dashboardLayout);
290
+
291
+ piwikHelper.hideAjaxLoading();
292
+ adjustDashboardColumns(dashboardLayout.config.layout);
293
+
294
+ var dashboardContainsWidgets = false;
295
+ for (var column = 0; column < dashboardLayout.columns.length; column++) {
296
+ for (var i in dashboardLayout.columns[column]) {
297
+ if (typeof dashboardLayout.columns[column][i] != 'object') {
298
+ // Fix IE8 bug: the "i in" loop contains i="indexOf", which would yield type function.
299
+ // If we would continue with i="indexOf", an invalid widget would be created.
300
+ continue;
301
+ }
302
+ var widget = dashboardLayout.columns[column][i];
303
+ dashboardContainsWidgets = true;
304
+ addWidgetTemplate(widget.uniqueId, column + 1, widget.parameters, false, widget.isHidden)
305
+ }
306
+ }
307
+
308
+ if (!dashboardContainsWidgets) {
309
+ $(dashboardElement).trigger('dashboardempty');
310
+ }
311
+
312
+ makeWidgetsSortable();
313
+ });
314
+ }
315
+
316
+ /**
317
+ * Adjust the dashboard columns to fit the new layout
318
+ * removes or adds new columns if needed and sets the column sizes.
319
+ *
320
+ * @param {String} layout new layout in format xx-xx-xx
321
+ * @return {void}
322
+ */
323
+ function adjustDashboardColumns(layout) {
324
+ var columnWidth = layout.split('-');
325
+ var columnCount = columnWidth.length;
326
+
327
+ var currentCount = $('> .col', dashboardElement).length;
328
+
329
+ if (currentCount < columnCount) {
330
+ $('.menuClear', dashboardElement).remove();
331
+ for (var i = currentCount; i < columnCount; i++) {
332
+ if (dashboardLayout.columns.length < i) {
333
+ dashboardLayout.columns.push({});
334
+ }
335
+ $(dashboardElement).append('<div class="col"> </div>');
336
+ }
337
+ $(dashboardElement).append('<div class="menuClear"> </div>');
338
+ } else if (currentCount > columnCount) {
339
+ for (var i = columnCount; i < currentCount; i++) {
340
+ if (dashboardLayout.columns.length >= i) {
341
+ dashboardLayout.columns.pop();
342
+ }
343
+ // move widgets to other columns depending on columns height
344
+ $('[widgetId]', $(layoutColumnSelector + ':last')).each(function (id, elem) {
345
+ var cols = $(layoutColumnSelector).slice(0, columnCount);
346
+ var smallestColumn = $(cols[0]);
347
+ var smallestColumnHeight = null;
348
+ cols.each(function (colId, col) {
349
+ if (smallestColumnHeight == null || smallestColumnHeight > $(col).height()) {
350
+ smallestColumnHeight = $(col).height();
351
+ smallestColumn = $(col);
352
+ }
353
+ });
354
+
355
+ $(elem).appendTo(smallestColumn);
356
+ });
357
+
358
+ $(layoutColumnSelector + ':last').remove();
359
+ }
360
+ }
361
+
362
+ var $dashboardElement = $(' > .col', dashboardElement);
363
+
364
+ if (!$dashboardElement.length) {
365
+ return;
366
+ }
367
+
368
+ switch (layout) {
369
+ case '100':
370
+ $dashboardElement.removeClass().addClass('col s12');
371
+ break;
372
+ case '50-50':
373
+ $dashboardElement.removeClass().addClass('col s12 m6');
374
+ break;
375
+ case '67-33':
376
+ $dashboardElement[0].className = 'col s12 m8';
377
+ $dashboardElement[1].className = 'col s12 m4';
378
+ break;
379
+ case '33-67':
380
+ $dashboardElement[0].className = 'col s12 m4';
381
+ $dashboardElement[1].className = 'col s12 m8';
382
+ break;
383
+ case '33-33-33':
384
+ $dashboardElement[0].className = 'col s12 m4';
385
+ $dashboardElement[1].className = 'col s12 m4';
386
+ $dashboardElement[2].className = 'col s12 m4';
387
+ break;
388
+ case '40-30-30':
389
+ $dashboardElement[0].className = 'col s12 m6';
390
+ $dashboardElement[1].className = 'col s12 m3';
391
+ $dashboardElement[2].className = 'col s12 m3';
392
+ break;
393
+ case '30-40-30':
394
+ $dashboardElement[0].className = 'col s12 m3';
395
+ $dashboardElement[1].className = 'col s12 m6';
396
+ $dashboardElement[2].className = 'col s12 m3';
397
+ break;
398
+ case '30-30-40':
399
+ $dashboardElement[0].className = 'col s12 m3';
400
+ $dashboardElement[1].className = 'col s12 m3';
401
+ $dashboardElement[2].className = 'col s12 m6';
402
+ break;
403
+ case '25-25-25-25':
404
+ $dashboardElement[0].className = 'col s12 m3';
405
+ $dashboardElement[1].className = 'col s12 m3';
406
+ $dashboardElement[2].className = 'col s12 m3';
407
+ $dashboardElement[3].className = 'col s12 m3';
408
+ break;
409
+ }
410
+
411
+ makeWidgetsSortable();
412
+
413
+ // if dashboard column count is changed (not on initial load)
414
+ if (currentCount > 0 && dashboardLayout.config.layout != layout) {
415
+ dashboardChanged = true;
416
+ dashboardLayout.config.layout = layout;
417
+ saveLayout();
418
+ }
419
+
420
+ // trigger resize event on all widgets
421
+ $('.widgetContent').each(function () {
422
+ $(this).trigger('widget:resize');
423
+ });
424
+ }
425
+
426
+ /**
427
+ * Returns the given layout as an layout object
428
+ * Used to parse old layout format into the new syntax
429
+ *
430
+ * @param {object} layout layout object or string
431
+ * @return {object}
432
+ */
433
+ function parseLayout(layout) {
434
+
435
+ // Handle layout array used in piwik before 1.7
436
+ // column count was always 3, so use layout 33-33-33 as default
437
+ if ($.isArray(layout)) {
438
+ layout = {
439
+ config: {layout: '33-33-33'},
440
+ columns: layout
441
+ };
442
+ }
443
+
444
+ if (!layout.config.layout) {
445
+ layout.config.layout = '33-33-33';
446
+ }
447
+
448
+ return layout;
449
+ }
450
+
451
+ /**
452
+ * Reloads the widget with the given uniqueId
453
+ *
454
+ * @param {String|jQuery} $widget
455
+ */
456
+ function reloadWidget($widget) {
457
+ if (typeof $widget === 'string') {
458
+ $widget = $('[widgetid="' + $widget + '"]', dashboardElement);
459
+ }
460
+
461
+ $widget.dashboardWidget('reload', false, true);
462
+ }
463
+
464
+ /**
465
+ * Adds an empty widget template to the dashboard in the given column
466
+ * @param {String} uniqueId
467
+ * @param {int} columnNumber
468
+ * @param {object} widgetParameters
469
+ * @param {boolean} addWidgetOnTop
470
+ * @param {boolean} isHidden
471
+ */
472
+ function addWidgetTemplate(uniqueId, columnNumber, widgetParameters, addWidgetOnTop, isHidden) {
473
+ if (!columnNumber) {
474
+ columnNumber = 1;
475
+ }
476
+
477
+ // do not try to add widget if given column number is to high
478
+ if (columnNumber > $('> .col', dashboardElement).length) {
479
+ return;
480
+ }
481
+
482
+ var $widgetContent = $('<div class="sortable"></div>').attr('widgetId', uniqueId);
483
+
484
+ if (addWidgetOnTop) {
485
+ $('> .col:nth-child(' + columnNumber + ')', dashboardElement).prepend($widgetContent);
486
+ } else {
487
+ $('> .col:nth-child(' + columnNumber + ')', dashboardElement).append($widgetContent);
488
+ }
489
+
490
+ return $widgetContent.dashboardWidget({
491
+ uniqueId: uniqueId,
492
+ widgetParameters: widgetParameters,
493
+ onChange: function () {
494
+ saveLayout();
495
+ },
496
+ isHidden: isHidden
497
+ });
498
+ }
499
+
500
+ /**
501
+ * Make all widgets on the dashboard sortable
502
+ */
503
+ function makeWidgetsSortable() {
504
+ function onStart(event, ui) {
505
+ if (!jQuery.support.noCloneEvent) {
506
+ $('object', this).hide();
507
+ }
508
+ }
509
+
510
+ function onStop(event, ui) {
511
+ $('object', this).show();
512
+ $('.widgetHover', this).removeClass('widgetHover');
513
+ $('.widgetTopHover', this).removeClass('widgetTopHover');
514
+ if ($('.widget:has(".piwik-graph")', ui.item).length) {
515
+ reloadWidget($('.widget', ui.item).attr('id'));
516
+ }
517
+ saveLayout();
518
+ }
519
+
520
+ //launch 'sortable' property on every dashboard widgets
521
+ $( layoutColumnSelector + ":data('ui-sortable')", dashboardElement ).sortable('destroy');
522
+
523
+ $('> .col', dashboardElement)
524
+ .sortable({
525
+ items: 'div.sortable',
526
+ opacity: 0.6,
527
+ forceHelperSize: true,
528
+ forcePlaceholderSize: true,
529
+ placeholder: 'hover',
530
+ handle: '.widgetTop',
531
+ helper: 'clone',
532
+ start: onStart,
533
+ stop: onStop,
534
+ connectWith: layoutColumnSelector
535
+ });
536
+ }
537
+
538
+ /**
539
+ * Handle clicks for menu items for choosing between available dashboards
540
+ */
541
+ function rebuildMenu() {
542
+
543
+ if (piwikHelper.isReportingPage()) {
544
+ // dashboard in reporting page (regular Piwik UI)
545
+ return window.CoreHome.ReportingMenuStore.reloadMenuItems();
546
+ }
547
+
548
+ var _self = this;
549
+
550
+ // widgetized
551
+ var success = function (dashboards) {
552
+ var dashboardMenuList = $('#Dashboard_embeddedIndex_1').closest('ul');
553
+ var dashboardMenuListItems = dashboardMenuList.find('>li');
554
+
555
+ dashboardMenuListItems.filter(function () {
556
+ return $(this).attr('id').indexOf('Dashboard_embeddedIndex') == 0;
557
+ }).remove();
558
+
559
+ if (dashboards.length === 0) {
560
+ dashboards = [{iddashboard: 1, name: _pk_translate('Dashboard_Dashboard')}];
561
+ }
562
+
563
+ if (dashboards.length > 1
564
+ || dashboardMenuListItems.length >= 1
565
+ ) {
566
+ var items = [];
567
+ for (var i = 0; i < dashboards.length; i++) {
568
+ var $link = $('<a/>').attr('data-iddashboard', dashboards[i].iddashboard).text(dashboards[i].name).addClass('item');
569
+ var $li = $('<li/>').attr('id', 'Dashboard_embeddedIndex_' + dashboards[i].iddashboard).addClass('dashboardMenuItem').attr('role', 'menuitem').append($link);
570
+
571
+ items.push($li);
572
+
573
+ if (dashboards[i].iddashboard == dashboardId) {
574
+ dashboardName = dashboards[i].name;
575
+ $li.addClass('active');
576
+ }
577
+ }
578
+ dashboardMenuList.prepend(items);
579
+ }
580
+
581
+ dashboardMenuList.find('a[data-iddashboard]').click(function (e) {
582
+ e.preventDefault();
583
+
584
+ var idDashboard = $(this).attr('data-iddashboard');
585
+
586
+ $('#Dashboard ul li').removeClass('active');
587
+
588
+ methods.loadDashboard.apply(_self, [idDashboard]);
589
+
590
+ $(this).closest('li').addClass('active');
591
+ });
592
+ };
593
+
594
+ var ajaxRequest = new ajaxHelper();
595
+ ajaxRequest.addParams({
596
+ module: 'Dashboard',
597
+ action: 'getAllDashboards',
598
+ filter_limit: '-1'
599
+ }, 'get');
600
+ ajaxRequest.withTokenInUrl();
601
+ ajaxRequest.setCallback(success);
602
+ return ajaxRequest.send();
603
+ }
604
+
605
+ /**
606
+ * Save the current layout in database if it has changed
607
+ * @param {string} [action] action to perform (defaults to saveLayout)
608
+ */
609
+ function saveLayout(action) {
610
+ var columns = [];
611
+
612
+ var columnNumber = 0;
613
+
614
+ $(layoutColumnSelector).each(function () {
615
+ columns[columnNumber] = [];
616
+ var items = $('[widgetId]', this);
617
+ for (var j = 0; j < items.length; j++) {
618
+ columns[columnNumber][j] = $(items[j]).dashboardWidget('getWidgetObject');
619
+
620
+ // Do not store segment in the dashboard layout
621
+ delete columns[columnNumber][j].parameters.segment;
622
+
623
+ }
624
+ columnNumber++;
625
+ });
626
+
627
+ if (JSON.stringify(dashboardLayout.columns) != JSON.stringify(columns) || dashboardChanged || action) {
628
+
629
+ dashboardLayout.columns = JSON.parse(JSON.stringify(columns));
630
+ columns = null;
631
+
632
+ if (!action) {
633
+ action = 'saveLayout';
634
+ }
635
+
636
+ var ajaxRequest = new ajaxHelper();
637
+ ajaxRequest.addParams({
638
+ module: 'Dashboard',
639
+ action: action,
640
+ idDashboard: dashboardId
641
+ }, 'get');
642
+ ajaxRequest.addParams({
643
+ layout: JSON.stringify(dashboardLayout),
644
+ name: dashboardName
645
+ }, 'post');
646
+ ajaxRequest.setCallback(
647
+ function () {
648
+ if (dashboardChanged) {
649
+ dashboardChanged = false;
650
+ rebuildMenu();
651
+ }
652
+ }
653
+ );
654
+
655
+ ajaxRequest.withTokenInUrl();
656
+ ajaxRequest.setFormat('html');
657
+ ajaxRequest.send();
658
+ }
659
+ }
660
+
661
+ /**
662
+ * Make plugin methods available
663
+ */
664
+ $.fn.dashboard = function (method) {
665
+ if (methods[method]) {
666
+ return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
667
+ } else if (typeof method === 'object' || !method) {
668
+ return methods.init.apply(this, arguments);
669
+ } else {
670
+ $.error('Method ' + method + ' does not exist on jQuery.dashboard');
671
+ }
672
+ }
673
+
674
+ })(jQuery);
plugins/Dashboard/javascripts/dashboardWidget.js ADDED
@@ -0,0 +1,402 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Matomo - free/libre analytics platform
3
+ *
4
+ * @link https://matomo.org
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
6
+ */
7
+
8
+ (function ($) {
9
+
10
+ $.widget('piwik.dashboardWidget', {
11
+
12
+ /**
13
+ * Boolean indicating weather the widget is currently maximised
14
+ * @type {Boolean}
15
+ */
16
+ isMaximised: false,
17
+ /**
18
+ * Unique Id of the widget
19
+ * @type {String}
20
+ */
21
+ uniqueId: null,
22
+ /**
23
+ * Object holding the widget parameters
24
+ * @type {Object}
25
+ */
26
+ widgetParameters: {},
27
+
28
+ /**
29
+ * Options available for initialization
30
+ */
31
+ options: {
32
+ uniqueId: null,
33
+ isHidden: false,
34
+ onChange: null,
35
+ widgetParameters: {},
36
+ title: null,
37
+ onRemove: null,
38
+ onRefresh: null,
39
+ onMaximise: null,
40
+ onMinimise: null,
41
+ autoMaximiseVisualizations: ['tableAllColumns', 'tableGoals']
42
+ },
43
+
44
+ /**
45
+ * creates a widget object
46
+ */
47
+ _create: function () {
48
+
49
+ if (!this.options.uniqueId) {
50
+ piwikHelper.error('widgets can\'t be created without an uniqueId');
51
+ return;
52
+ } else {
53
+ this.uniqueId = this.options.uniqueId;
54
+ }
55
+
56
+ if (this.options.widgetParameters) {
57
+ this.widgetParameters = this.options.widgetParameters;
58
+ }
59
+
60
+ this._createDashboardWidget(this.uniqueId);
61
+
62
+ var self = this;
63
+ this.element.on('setParameters.dashboardWidget', function (e, params) { self.setParameters(params); });
64
+
65
+ this.reload(true, true);
66
+ },
67
+
68
+ /**
69
+ * Cleanup some events and dialog
70
+ * Called automatically upon removing the widgets domNode
71
+ */
72
+ destroy: function () {
73
+ if (this.isMaximised) {
74
+ $('[widgetId="' + this.uniqueId + '"]').dialog('destroy');
75
+ }
76
+ $('*', this.element).off('.dashboardWidget'); // unbind all events
77
+ $('.widgetContent', this.element).trigger('widget:destroy');
78
+ require('piwik/UI').UIControl.cleanupUnusedControls();
79
+ return this;
80
+ },
81
+
82
+ /**
83
+ * Returns the data currently set for the widget
84
+ * @return {object}
85
+ */
86
+ getWidgetObject: function () {
87
+ return {
88
+ uniqueId: this.uniqueId,
89
+ parameters: this.widgetParameters,
90
+ isHidden: this.options.isHidden
91
+ };
92
+ },
93
+
94
+ /**
95
+ * Show the current widget in an ui.dialog
96
+ */
97
+ maximise: function () {
98
+ this.isMaximised = true;
99
+
100
+ if (this.options.onMaximise) {
101
+ this.options.onMaximise(this.element);
102
+ } else {
103
+ this._maximiseImpl();
104
+ }
105
+
106
+ $('.widgetContent', this.element).trigger('widget:maximise');
107
+ return this;
108
+ },
109
+
110
+ /**
111
+ * Reloads the widgets content with the currently set parameters
112
+ */
113
+ reload: function (hideLoading, notJQueryUI, overrideParams) {
114
+ if (!notJQueryUI) {
115
+ piwikHelper.log('widget.reload() was called by jquery.ui, ignoring', arguments.callee.caller);
116
+ return;
117
+ }
118
+
119
+ var self = this, currentWidget = this.element;
120
+
121
+ $('.widgetContent', currentWidget).trigger('widget:reload');
122
+
123
+ function onWidgetLoadedReplaceElementWithContent(loadedContent) {
124
+ var $widgetContent = $('.widgetContent', currentWidget);
125
+
126
+ $widgetContent.html(loadedContent);
127
+
128
+ /* move widget icons into datatable top actions
129
+ var $buttons = currentWidget.find('.buttons .button');
130
+ var $controls = currentWidget.find('.dataTableControls .dataTableAction').first();
131
+ if ($buttons.length && $controls.length) {
132
+ $buttons.find('.button').addClass('dataTableAction');
133
+ $buttons.insertBefore($controls);
134
+ }*/
135
+
136
+ if (currentWidget.parents('body').length) {
137
+ // there might be race conditions, eg widget might be just refreshed while whole dashboard is also
138
+ // removed from DOM
139
+ piwikHelper.compileVueEntryComponents($widgetContent);
140
+ }
141
+ $widgetContent.removeClass('loading');
142
+ $widgetContent.trigger('widget:create', [self]);
143
+
144
+ window.CoreHome.NotificationsStore.parseNotificationDivs();
145
+ }
146
+
147
+ // Reading segment from hash tag (standard case) or from the URL (when embedding dashboard)
148
+ ['segment'].forEach(function (paramName) {
149
+ var value = broadcast.getValueFromHash(paramName) || broadcast.getValueFromUrl(paramName);
150
+ if (value.length) {
151
+ self.widgetParameters[paramName] = value;
152
+ }
153
+ });
154
+
155
+ ['compareSegments', 'comparePeriods', 'compareDates'].forEach(function (paramName) {
156
+ var value = broadcast.getValueFromHash(paramName) || broadcast.getValueFromUrl(paramName);
157
+ if (value.length) {
158
+ self.widgetParameters[paramName] = value;
159
+ } else {
160
+ delete self.widgetParameters[paramName];
161
+ }
162
+ });
163
+
164
+ if (!hideLoading) {
165
+ $('.widgetContent', currentWidget).addClass('loading');
166
+ }
167
+
168
+ var params = $.extend(
169
+ this.widgetParameters,
170
+ overrideParams || {},
171
+ window.CoreHome.SearchFiltersPersistenceStore.getSearchFilters(this.uniqueId)
172
+ );
173
+
174
+ widgetsHelper.loadWidgetAjax(this.uniqueId, params, onWidgetLoadedReplaceElementWithContent, function (deferred, status) {
175
+ if (status == 'abort' || !deferred || deferred.status < 400 || deferred.status >= 600) {
176
+ return;
177
+ }
178
+
179
+ var errorMessage;
180
+ $('.widgetContent', currentWidget).removeClass('loading');
181
+
182
+
183
+ if (deferred.status === 429) {
184
+ errorMessage = `<div class="alert alert-danger">${_pk_translate('General_ErrorRateLimit')}>',
185
+ '</a>'])}</div>`;
186
+
187
+ if($('#loadingRateLimitError').html()) {
188
+ errorMessage = $('#loadingRateLimitError')
189
+ .html();
190
+ }
191
+ } else {
192
+ var errorMessage = _pk_translate('General_ErrorRequest', ['', '']);
193
+ if ($('#loadingError').html()) {
194
+ errorMessage = $('#loadingError').html();
195
+ }
196
+ }
197
+
198
+ $('.widgetContent', currentWidget).html('<div class="widgetLoadingError">' + errorMessage + '</div>');
199
+ });
200
+
201
+ return this;
202
+ },
203
+
204
+ /**
205
+ * Update widget parameters
206
+ *
207
+ * @param {object} parameters
208
+ */
209
+ setParameters: function (parameters) {
210
+ if (!this.isMaximised
211
+ && this.options.autoMaximiseVisualizations.indexOf(parameters.viewDataTable) !== -1
212
+ ) {
213
+ this.maximise();
214
+ }
215
+ for (var name in parameters) {
216
+ this.widgetParameters[name] = parameters[name];
217
+ }
218
+ if (!this.isMaximised) {
219
+ this.options.onChange();
220
+ }
221
+
222
+ return this;
223
+ },
224
+
225
+ /**
226
+ * Get widget parameters
227
+ *
228
+ * @param {object} parameters
229
+ */
230
+ getParameters: function () {
231
+ return $.extend({}, this.widgetParameters);
232
+ },
233
+
234
+ /**
235
+ * Creates the widget markup for the given uniqueId
236
+ *
237
+ * @param {String} uniqueId
238
+ */
239
+ _createDashboardWidget: function (uniqueId) {
240
+
241
+ var self = this;
242
+
243
+ widgetsHelper.getWidgetNameFromUniqueId(uniqueId, function(widgetName) {
244
+ if (!widgetName) {
245
+ // when widget not found hide it.
246
+ $('[widgetId="' + uniqueId + '"]').hide();
247
+ widgetName = _pk_translate('Dashboard_WidgetNotFound');
248
+ }
249
+
250
+ var title = self.options.title === null ? $('<span/>').text(widgetName) : self.options.title;
251
+ var emptyWidgetContent = require('piwik/UI/Dashboard').WidgetFactory.make(uniqueId, title);
252
+ self.element.html(emptyWidgetContent);
253
+
254
+ var widgetElement = $('[id="' + uniqueId + '"]', self.element);
255
+ widgetElement
256
+ .on('mouseenter.dashboardWidget', function () {
257
+ if (!self.isMaximised) {
258
+ $(this).addClass('widgetHover');
259
+ $('.widgetTop', this).addClass('widgetTopHover');
260
+ }
261
+ })
262
+ .on('mouseleave.dashboardWidget', function () {
263
+ if (!self.isMaximised) {
264
+ $(this).removeClass('widgetHover');
265
+ $('.widgetTop', this).removeClass('widgetTopHover');
266
+ }
267
+ });
268
+
269
+ if (self.options.isHidden) {
270
+ $('.widgetContent', widgetElement).toggleClass('hidden').closest('.widget').toggleClass('hiddenContent');
271
+ }
272
+
273
+ $('.button#close', widgetElement)
274
+ .on('click.dashboardWidget', function (ev) {
275
+ piwikHelper.modalConfirm('#confirm', {yes: function () {
276
+ if (self.options.onRemove) {
277
+ self.options.onRemove(self.element);
278
+ } else {
279
+ self.element.remove();
280
+ self.options.onChange();
281
+ }
282
+ }});
283
+ });
284
+
285
+ $('.button#maximise', widgetElement)
286
+ .on('click.dashboardWidget', function (ev) {
287
+ if (self.options.onMaximise) {
288
+ self.options.onMaximise(self.element);
289
+ } else {
290
+ if ($('.widgetContent', $(this).parents('.widget')).hasClass('hidden')) {
291
+ self.showContent();
292
+ } else {
293
+ self.maximise();
294
+ }
295
+ }
296
+ });
297
+
298
+ $('.button#minimise', widgetElement)
299
+ .on('click.dashboardWidget', function (ev) {
300
+ if (self.options.onMinimise) {
301
+ self.options.onMinimise(self.element);
302
+ } else {
303
+ if (!self.isMaximised) {
304
+ self.hideContent();
305
+ } else {
306
+ self.element.dialog("close");
307
+ }
308
+ }
309
+ });
310
+
311
+ $('.button#refresh', widgetElement)
312
+ .on('click.dashboardWidget', function (ev) {
313
+ if (self.options.onRefresh) {
314
+ self.options.onRefresh(self.element);
315
+ } else {
316
+ self.reload(false, true);
317
+ }
318
+ });
319
+ });
320
+ },
321
+
322
+ /**
323
+ * Hide the widget content. Triggers the onChange event.
324
+ */
325
+ hideContent: function () {
326
+ $('.widgetContent', this.element.find('.widget').addClass('hiddenContent')).addClass('hidden');
327
+ this.options.isHidden = true;
328
+ this.options.onChange();
329
+ },
330
+
331
+ /**
332
+ * Show the widget content. Triggers the onChange event.
333
+ */
334
+ showContent: function () {
335
+ this.isMaximised = false;
336
+ this.options.isHidden = false;
337
+ this.element.find('.widget').removeClass('hiddenContent').find('.widgetContent').removeClass('hidden');
338
+ this.element.find('.widget').find('div.piwik-graph').trigger('resizeGraph');
339
+ this.options.onChange();
340
+ $('.widgetContent', this.element).trigger('widget:minimise');
341
+ },
342
+
343
+ /**
344
+ * Default maximise behavior. Will create a dialog that is 70% of the document's width,
345
+ * displaying the widget alone.
346
+ */
347
+ _maximiseImpl: function () {
348
+ this.detachWidget();
349
+
350
+ var width = Math.floor($('body').width() * 0.7);
351
+
352
+ var self = this;
353
+ this.element.dialog({
354
+ title: '',
355
+ dialogClass: 'widgetoverlay',
356
+ modal: true,
357
+ width: width,
358
+ resizable: true,
359
+ autoOpen: true,
360
+ close: function (event, ui) {
361
+ self.isMaximised = false;
362
+ $('body').off('.dashboardWidget');
363
+ $(this).dialog("destroy");
364
+ $('[id="' + self.uniqueId + '-placeholder"]').replaceWith(this);
365
+ $(this).removeAttr('style');
366
+ self.options.onChange();
367
+ $(this).find('div.piwik-graph').trigger('resizeGraph');
368
+ $('.widgetContent', self.element).trigger('widget:minimise');
369
+ }
370
+ });
371
+ this.element.find('div.piwik-graph').trigger('resizeGraph');
372
+ // remove all previously shown tooltips as they might not be destroyed automatically
373
+ // see https://github.com/matomo-org/matomo/issues/17625
374
+ $('.ui-tooltip').remove();
375
+
376
+ var currentWidget = this.element;
377
+ $('body').on('click.dashboardWidget', function (ev) {
378
+ if (/ui-widget-overlay/.test(ev.target.className)) {
379
+ $(currentWidget).dialog("close");
380
+ }
381
+ });
382
+ },
383
+
384
+ /**
385
+ * Detaches the widget from the DOM and replaces it with a placeholder element.
386
+ * The placeholder element will have the save dimensions as the widget and will have
387
+ * the widgetPlaceholder CSS class.
388
+ *
389
+ * @return {jQuery} the detached widget
390
+ */
391
+ detachWidget: function () {
392
+ this.element.before('<div id="' + this.uniqueId + '-placeholder" class="widgetPlaceholder widget"> </div>');
393
+ var placeholder = $('[id="' + self.uniqueId + '-placeholder"]');
394
+
395
+ $('#' + this.uniqueId + '-placeholder').height(this.element.height());
396
+ $('#' + this.uniqueId + '-placeholder').width(this.element.width() - 16);
397
+
398
+ return this.element.detach();
399
+ }
400
+ });
401
+
402
+ })(jQuery);
plugins/Dashboard/javascripts/widgetMenu.js ADDED
@@ -0,0 +1,625 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*!
2
+ * Matomo - free/libre analytics platform
3
+ *
4
+ * @link https://matomo.org
5
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
6
+ */
7
+
8
+ function widgetsHelper() {
9
+ }
10
+
11
+ // a Promise for the first call to getAvailableWidgets. this should not be aborted,
12
+ // so any code that aborts all ajax requests should make sure this promise is resolved
13
+ // first.
14
+ widgetsHelper.firstGetAvailableWidgetsCall = null;
15
+
16
+ /**
17
+ * Returns the available widgets fetched via AJAX (if not already done)
18
+ *
19
+ * @return {object} object containing available widgets
20
+ */
21
+ widgetsHelper.getAvailableWidgets = function (callback) {
22
+
23
+ function resetFirstGetAvailableWidgetsCall(promise) {
24
+ if (widgetsHelper.firstGetAvailableWidgetsCall === promise) {
25
+ widgetsHelper.firstGetAvailableWidgetsCall = null;
26
+ }
27
+ }
28
+
29
+ if (!widgetsHelper.availableWidgets && widgetsHelper.firstGetAvailableWidgetsCall) {
30
+ return widgetsHelper.firstGetAvailableWidgetsCall.then(function () {
31
+ if (callback) {
32
+ callback(widgetsHelper.availableWidgets);
33
+ }
34
+ });
35
+ }
36
+
37
+ function mergeCategoriesAndSubCategories(availableWidgets)
38
+ {
39
+ var categorized = {};
40
+
41
+ $.each(availableWidgets, function (index, widget) {
42
+ var category = widget.category.name;
43
+
44
+ if (!categorized[category]) {
45
+ categorized[category] = {'-': []};
46
+ }
47
+
48
+ var subcategory = '-';
49
+ if (widget.subcategory && widget.subcategory.name) {
50
+ subcategory = widget.subcategory.name;
51
+ }
52
+
53
+ if (!categorized[category][subcategory]) {
54
+ categorized[category][subcategory] = [];
55
+ }
56
+
57
+ categorized[category][subcategory].push(widget);
58
+ });
59
+
60
+ var moved = {};
61
+
62
+ $.each(categorized, function (category, widgets) {
63
+ $.each(widgets, function (subcategory, subwidgets) {
64
+ if (!subwidgets.length) {
65
+ return;
66
+ }
67
+
68
+ var categoryToUse = category;
69
+ if (subwidgets.length >= 3 && subcategory !== '-') {
70
+ categoryToUse = category + ' - ' + subcategory;
71
+ }
72
+
73
+ if (!moved[categoryToUse]) {
74
+ moved[categoryToUse] = [];
75
+ }
76
+
77
+ $.each(subwidgets, function (index, widget) {
78
+ moved[categoryToUse].push(widget);
79
+ });
80
+ });
81
+ });
82
+
83
+ return moved;
84
+ }
85
+
86
+ var promise = new Promise(function (resolve, reject) {
87
+ if (!widgetsHelper.availableWidgets) {
88
+ var ajaxRequest = new ajaxHelper();
89
+ ajaxRequest._mixinDefaultGetParams = function (params) {
90
+ return params;
91
+ };
92
+ ajaxRequest.addParams({
93
+ module: 'API',
94
+ method: 'API.getWidgetMetadata',
95
+ filter_limit: '-1',
96
+ format: 'JSON',
97
+ deep: '1',
98
+ idSite: piwik.idSite || broadcast.getValueFromUrl('idSite')
99
+ }, 'get');
100
+ ajaxRequest.setCallback(
101
+ function (data) {
102
+ widgetsHelper.availableWidgets = mergeCategoriesAndSubCategories(data);
103
+
104
+ resetFirstGetAvailableWidgetsCall(promise);
105
+ resolve();
106
+ }
107
+ );
108
+ ajaxRequest.setErrorCallback(function (deferred, status) {
109
+ resetFirstGetAvailableWidgetsCall(promise);
110
+
111
+ if (status == 'abort') {
112
+ reject(new Error('Loading widget metadata was aborted'));
113
+ return;
114
+ }
115
+
116
+ if (!deferred || deferred.status < 400 || deferred.status >= 600) {
117
+ reject(new Error('Loading widget metadata failed'));
118
+ return;
119
+ }
120
+
121
+ $('#loadingError').show();
122
+ reject(new Error('Loading widget metadata failed'));
123
+ });
124
+ ajaxRequest.send();
125
+ return;
126
+ }
127
+
128
+ resolve();
129
+ });
130
+
131
+ if (!widgetsHelper.firstGetAvailableWidgetsCall) {
132
+ widgetsHelper.firstGetAvailableWidgetsCall = promise;
133
+ }
134
+
135
+ return promise.then(function () {
136
+ if (callback) {
137
+ callback(widgetsHelper.availableWidgets);
138
+ }
139
+ });
140
+ };
141
+
142
+ /**
143
+ * Clear the current collection of availableWidgets so that getAvailableWidgets() will load a fresh
144
+ * collection from the API. This is useful when we added/deleted a report and need a refresh.
145
+ */
146
+ widgetsHelper.clearAvailableWidgets = function () {
147
+ delete widgetsHelper.availableWidgets;
148
+ widgetsHelper.firstGetAvailableWidgetsCall = null;
149
+ };
150
+
151
+ /**
152
+ * Determines the complete widget object by its unique id and sends it to callback method
153
+ *
154
+ * @param {string} uniqueId
155
+ * @param {function} callback
156
+ */
157
+ widgetsHelper.getWidgetObjectFromUniqueId = function (uniqueId, callback) {
158
+ widgetsHelper.getAvailableWidgets(function(widgets){
159
+ callback(widgetsHelper.findWidgetObjectFromUniqueId(uniqueId, widgets));
160
+ });
161
+ };
162
+
163
+ widgetsHelper.findWidgetObjectFromUniqueId = function (uniqueId, widgets) {
164
+ if (!widgets) {
165
+ return false;
166
+ }
167
+
168
+ for (var widgetCategory in widgets) {
169
+ var widgetInCategory = widgets[widgetCategory];
170
+ for (var i in widgetInCategory) {
171
+ if (widgetInCategory[i]["uniqueId"] == uniqueId) {
172
+ return widgetInCategory[i];
173
+ }
174
+ }
175
+ }
176
+
177
+ return false;
178
+ };
179
+
180
+ /**
181
+ * Determines the name of a widget by its unique id and sends it to the callback
182
+ *
183
+ * @param {string} uniqueId unique id of the widget
184
+ * @param {function} callback
185
+ * @return {string}
186
+ */
187
+ widgetsHelper.getWidgetNameFromUniqueId = function (uniqueId, callback) {
188
+ this.getWidgetObjectFromUniqueId(uniqueId, function(widget) {
189
+ if (widget == false) {
190
+ callback(false);
191
+ }
192
+ callback(widget["name"]);
193
+ });
194
+ };
195
+
196
+ /**
197
+ * Sends an ajax request to query for the widget's html
198
+ *
199
+ * @param {string} widgetUniqueId unique id of the widget
200
+ * @param {object} widgetParameters parameters to be used for loading the widget
201
+ * @param {function} onWidgetLoadedCallback callback to be executed after widget is loaded
202
+ * @return {object}
203
+ */
204
+ widgetsHelper.loadWidgetAjax = function (widgetUniqueId, widgetParameters, onWidgetLoadedCallback, onWidgetErrorCallback) {
205
+ var disableLink = broadcast.getValueFromUrl('disableLink');
206
+ widgetParameters['disableLink'] = disableLink.length || $('body#standalone').length;
207
+
208
+ widgetParameters['widget'] = 1;
209
+
210
+ var widgetRequest = {
211
+ aborted: false,
212
+ ajaxRequest: null,
213
+ abort: function () {
214
+ this.aborted = true;
215
+ if (this.ajaxRequest) {
216
+ this.ajaxRequest.abort();
217
+ }
218
+ }
219
+ };
220
+
221
+ function loadLegacyWidget() {
222
+ if (widgetRequest.aborted) {
223
+ return;
224
+ }
225
+
226
+ var ajaxRequest = new ajaxHelper();
227
+ ajaxRequest.addParams(widgetParameters, 'get');
228
+ ajaxRequest.setCallback(function () {
229
+ if (widgetRequest.aborted) {
230
+ return;
231
+ }
232
+
233
+ onWidgetLoadedCallback.apply(this, arguments);
234
+ });
235
+ if (onWidgetErrorCallback) {
236
+ ajaxRequest.setErrorCallback(function () {
237
+ if (widgetRequest.aborted) {
238
+ return;
239
+ }
240
+
241
+ onWidgetErrorCallback.apply(this, arguments);
242
+ });
243
+ }
244
+ ajaxRequest.setFormat('html');
245
+ ajaxRequest.send();
246
+ widgetRequest.ajaxRequest = ajaxRequest;
247
+ }
248
+
249
+ var metadataReady = widgetsHelper.availableWidgets
250
+ ? Promise.resolve()
251
+ : widgetsHelper.getAvailableWidgets();
252
+
253
+ metadataReady.then(function () {
254
+ if (widgetRequest.aborted) {
255
+ return;
256
+ }
257
+
258
+ var clientWidget = widgetsHelper.findWidgetObjectFromUniqueId(
259
+ widgetUniqueId,
260
+ widgetsHelper.availableWidgets
261
+ );
262
+
263
+ if (clientWidget && clientWidget.clientComponent) {
264
+ clientWidget = $.extend(true, {}, clientWidget);
265
+ clientWidget.parameters = $.extend({}, clientWidget.parameters, widgetParameters);
266
+
267
+ var html = '<div vue-entry="CoreHome.Widget"'
268
+ + ' widget="' + piwikHelper.htmlEntities(JSON.stringify(clientWidget)) + '"'
269
+ + ' widgetized="true"></div>';
270
+ onWidgetLoadedCallback(html);
271
+ return;
272
+ }
273
+
274
+ loadLegacyWidget();
275
+ }).catch(function () {
276
+ loadLegacyWidget();
277
+ });
278
+
279
+ return widgetRequest;
280
+ };
281
+
282
+ (function ($, require) {
283
+ var exports = require('piwik/UI/Dashboard');
284
+
285
+ /**
286
+ * Singleton instance that creates widget elements. Normally not needed even
287
+ * when embedding/re-using dashboard widgets, but it can be useful when creating
288
+ * elements with the same look and feel as dashboard widgets, but different
289
+ * behavior (such as the widget preview in the dashboard manager control).
290
+ *
291
+ * @constructor
292
+ */
293
+ var WidgetFactory = function () {
294
+ // empty
295
+ };
296
+
297
+ /**
298
+ * Creates an HTML element for displaying a widget.
299
+ *
300
+ * @param {string} uniqueId unique id of the widget
301
+ * @param {string} widgetName name of the widget
302
+ * @return {Element} the empty widget
303
+ */
304
+ WidgetFactory.prototype.make = function (uniqueId, widgetName) {
305
+ var $result = this.getWidgetTemplate().clone();
306
+ $result.attr('id', uniqueId).find('.widgetName').append(widgetName);
307
+ return $result;
308
+ };
309
+
310
+ /**
311
+ * Returns the base widget template element. The template is stored in the
312
+ * element with id == 'widgetTemplate'.
313
+ *
314
+ * @return {Element} the widget template
315
+ */
316
+ WidgetFactory.prototype.getWidgetTemplate = function () {
317
+ if (!this.widgetTemplate) {
318
+ this.widgetTemplate = $('#widgetTemplate').find('>.widget').detach();
319
+ }
320
+ return this.widgetTemplate;
321
+ };
322
+
323
+ exports.WidgetFactory = new WidgetFactory();
324
+ })(jQuery, require);
325
+
326
+ /**
327
+ * widgetPreview jQuery Extension
328
+ *
329
+ * Converts a dom element to a widget preview
330
+ * Widget preview contains a categorylist, a widgetlist and a preview
331
+ */
332
+ (function ($) {
333
+ $.extend({
334
+ widgetPreview: new function () {
335
+
336
+ /**
337
+ * Default settings for widgetPreview
338
+ * @type {object}
339
+ */
340
+ var defaultSettings = {
341
+ /**
342
+ * handler called after a widget preview is loaded in preview element
343
+ * @type {function}
344
+ */
345
+ onPreviewLoaded: function () {},
346
+ /**
347
+ * handler called on click on element in widgetlist or widget header
348
+ * @type {function}
349
+ */
350
+ onSelect: function () {},
351
+ /**
352
+ * callback used to determine if a widget is available or not
353
+ * unavailable widgets aren't selectable in widgetlist
354
+ * @type {function}
355
+ */
356
+ isWidgetAvailable: function (widgetUniqueId) { return true; },
357
+ /**
358
+ * should the lists and preview be reset on widget selection?
359
+ * @type {boolean}
360
+ */
361
+ resetOnSelect: false,
362
+ /**
363
+ * css classes for various elements
364
+ * @type {string}
365
+ */
366
+ baseClass: 'widgetpreview-base',
367
+ categorylistClass: 'widgetpreview-categorylist',
368
+ widgetlistClass: 'widgetpreview-widgetlist',
369
+ widgetpreviewClass: 'widgetpreview-preview',
370
+ choosenClass: 'widgetpreview-choosen',
371
+ unavailableClass: 'widgetpreview-unavailable'
372
+ };
373
+
374
+ /**
375
+ * Returns the div to show category list in
376
+ * - if element doesn't exist, it will be created and added
377
+ * - if element already exists, its content will be removed
378
+ *
379
+ * @return {$} category list element
380
+ */
381
+ function createWidgetCategoryList(widgetPreview, availableWidgets) {
382
+
383
+ var settings = widgetPreview.settings;
384
+
385
+ if (!$('.' + settings.categorylistClass, widgetPreview).length) {
386
+ $(widgetPreview).append('<ul class="' + settings.categorylistClass + '"></ul>');
387
+ } else {
388
+ $('.' + settings.categorylistClass, widgetPreview).empty();
389
+ }
390
+
391
+ for (var widgetCategory in availableWidgets) {
392
+ $('.' + settings.categorylistClass, widgetPreview).append($('<li>').text(widgetCategory));
393
+ }
394
+
395
+ return $('.' + settings.categorylistClass, widgetPreview);
396
+ }
397
+
398
+ /**
399
+ * Returns the div to show widget list in
400
+ * - if element doesn't exist, it will be created and added
401
+ * - if element already exists, its content will be removed
402
+ *
403
+ * @return {$} widget list element
404
+ */
405
+ function createWidgetList(widgetPreview) {
406
+ var settings = widgetPreview.settings;
407
+
408
+ if (!$('.' + settings.widgetlistClass, widgetPreview).length) {
409
+ $(widgetPreview).append('<ul class="' + settings.widgetlistClass + '"></ul>');
410
+ } else {
411
+ $('.' + settings.widgetlistClass + ' li', widgetPreview).off('mouseover');
412
+ $('.' + settings.widgetlistClass + ' li', widgetPreview).off('click');
413
+ $('.' + settings.widgetlistClass, widgetPreview).empty();
414
+ }
415
+
416
+ if ($('.' + settings.categorylistClass + ' .' + settings.choosenClass, widgetPreview).length) {
417
+ var position = $('.' + settings.categorylistClass + ' .' + settings.choosenClass, widgetPreview).position().top -
418
+ $('.' + settings.categorylistClass, widgetPreview).position().top;
419
+
420
+ $('.' + settings.widgetlistClass, widgetPreview).css({
421
+ top: position,
422
+ marginBottom: position + 10
423
+ });
424
+ }
425
+
426
+ return $('.' + settings.widgetlistClass, widgetPreview);
427
+ }
428
+
429
+ /**
430
+ * Display the given widgets in a widget list
431
+ *
432
+ * @param {object} widgets widgets to be displayed
433
+ * @return {void}
434
+ */
435
+ function showWidgetList(widgets, widgetPreview) {
436
+ var settings = widgetPreview.settings;
437
+
438
+ var widgetList = createWidgetList(widgetPreview),
439
+ widgetPreviewTimer;
440
+
441
+ for (var j = 0; j < widgets.length; j++) {
442
+ var widgetName = widgets[j]["name"];
443
+ var widgetUniqueId = widgets[j]["uniqueId"];
444
+ var widgetCategoryId = widgets[j].category ? widgets[j].category.id : null;
445
+ var widgetClass = '';
446
+ if (!settings.isWidgetAvailable(widgetUniqueId) && widgetCategoryId !== 'General_KpiMetric') {
447
+ widgetClass += ' ' + settings.unavailableClass;
448
+ }
449
+
450
+ widgetName = piwikHelper.escape(piwikHelper.htmlEntities(widgetName));
451
+
452
+ widgetList.append('<li class="' + widgetClass + '" uniqueid="' + widgetUniqueId + '">' + widgetName + '</li>');
453
+ }
454
+
455
+ // delay widget preview a few milliseconds
456
+ $('li', widgetList).on('mouseenter', function () {
457
+ var that = this,
458
+ widgetUniqueId = $(this).attr('uniqueid');
459
+ clearTimeout(widgetPreview);
460
+ widgetPreviewTimer = setTimeout(function () {
461
+ $('li', widgetList).removeClass(settings.choosenClass);
462
+ $(that).addClass(settings.choosenClass);
463
+
464
+ showPreview(widgetUniqueId, widgetPreview);
465
+ }, 400);
466
+ });
467
+
468
+ // clear timeout after mouse has left
469
+ $('li:not(.' + settings.unavailableClass + ')', widgetList).on('mouseleave', function () {
470
+ clearTimeout(widgetPreview);
471
+ });
472
+
473
+ $('li', widgetList).on('click', function () {
474
+ if (!$('.widgetLoading', widgetPreview).length) {
475
+ settings.onSelect($(this).attr('uniqueid'));
476
+ if (settings.resetOnSelect) {
477
+ resetWidgetPreview(widgetPreview);
478
+ }
479
+ }
480
+ return false;
481
+ });
482
+ }
483
+
484
+ /**
485
+ * Returns the div to show widget preview in
486
+ * - if element doesn't exist, it will be created and added
487
+ * - if element already exists, its content will be removed
488
+ *
489
+ * @return {$} preview element
490
+ */
491
+ function createPreviewElement(widgetPreview) {
492
+ var settings = widgetPreview.settings;
493
+
494
+ if (!$('.' + settings.widgetpreviewClass, widgetPreview).length) {
495
+ $(widgetPreview).append('<div class="' + settings.widgetpreviewClass + '"></div>');
496
+ } else {
497
+ $('.' + settings.widgetpreviewClass + ' .widgetTop', widgetPreview).off('click');
498
+ $('.' + settings.widgetpreviewClass, widgetPreview).empty();
499
+ }
500
+
501
+ return $('.' + settings.widgetpreviewClass, widgetPreview);
502
+ }
503
+
504
+ /**
505
+ * Show widget with the given uniqueId in preview
506
+ *
507
+ * @param {string} widgetUniqueId unique id of widget to display
508
+ * @param widgetPreview
509
+ * @return {void}
510
+ */
511
+ function showPreview(widgetUniqueId, widgetPreview) {
512
+ // do not reload id widget already displayed
513
+ if ($('[id="' + widgetUniqueId + '"]', widgetPreview).length) return;
514
+
515
+ var settings = widgetPreview.settings;
516
+
517
+ var previewElement = createPreviewElement(widgetPreview);
518
+
519
+ widgetsHelper.getWidgetObjectFromUniqueId(widgetUniqueId, function(widget) {
520
+ var widgetParameters = widget['parameters'];
521
+
522
+ var emptyWidgetHtml = require('piwik/UI/Dashboard').WidgetFactory.make(
523
+ widgetUniqueId,
524
+ $('<span/>')
525
+ .attr('title', _pk_translate("Dashboard_AddPreviewedWidget"))
526
+ .text(_pk_translate('Dashboard_WidgetPreview'))
527
+ );
528
+ previewElement.html(emptyWidgetHtml);
529
+
530
+ var onWidgetLoadedCallback = function (response) {
531
+ var widgetElement = previewElement.children('.widget').first();
532
+ $('.widgetContent', widgetElement).html($(response));
533
+ piwikHelper.compileVueEntryComponents($('.widgetContent', widgetElement));
534
+ // `widget:create` handlers should only rely on `.element`, the widget's
535
+ // root jQuery node. Dashboard widgets pass their full plugin instance;
536
+ // previews pass `{ element }` so handlers scope to this preview instead
537
+ // of grabbing the first matching node in the document.
538
+ $('.widgetContent', widgetElement).trigger('widget:create', [{ element: widgetElement }]);
539
+ settings.onPreviewLoaded(widgetUniqueId, widgetElement);
540
+ $('.' + settings.widgetpreviewClass + ' .widgetTop', widgetPreview).on('click', function () {
541
+ settings.onSelect(widgetUniqueId);
542
+ if (settings.resetOnSelect) {
543
+ resetWidgetPreview(widgetPreview);
544
+ }
545
+ return false;
546
+ });
547
+ };
548
+
549
+ // abort previous sent request
550
+ if (widgetPreview.widgetAjaxRequest) {
551
+ widgetPreview.widgetAjaxRequest.abort();
552
+ }
553
+
554
+ widgetPreview.widgetAjaxRequest = widgetsHelper.loadWidgetAjax(widgetUniqueId, widgetParameters, onWidgetLoadedCallback);
555
+ });
556
+ }
557
+
558
+ /**
559
+ * Reset function
560
+ *
561
+ * @return {void}
562
+ */
563
+ function resetWidgetPreview(widgetPreview) {
564
+ var settings = widgetPreview.settings;
565
+
566
+ $('.' + settings.categorylistClass + ' li', widgetPreview).removeClass(settings.choosenClass);
567
+ createWidgetList(widgetPreview);
568
+ createPreviewElement(widgetPreview);
569
+ }
570
+
571
+ /**
572
+ * Constructor
573
+ *
574
+ * @param {object} userSettings Settings to be used
575
+ * @return {void}
576
+ */
577
+ this.construct = function (userSettings) {
578
+
579
+ if (userSettings == 'reset') {
580
+ resetWidgetPreview(this);
581
+ return;
582
+ }
583
+
584
+ this.widgetAjaxRequest = null;
585
+
586
+ $(this).addClass('widgetpreview-base');
587
+
588
+ this.settings = jQuery.extend({}, defaultSettings, userSettings);
589
+
590
+ // set onSelect callback
591
+ if (typeof this.settings.onSelect == 'function') {
592
+ this.onSelect = this.settings.onSelect;
593
+ }
594
+
595
+ // set onPreviewLoaded callback
596
+ if (typeof this.settings.onPreviewLoaded == 'function') {
597
+ this.onPreviewLoaded = this.settings.onPreviewLoaded;
598
+ }
599
+
600
+ var self = this;
601
+ widgetsHelper.getAvailableWidgets(function (availableWidgets) {
602
+
603
+ var categoryList = createWidgetCategoryList(self, availableWidgets);
604
+
605
+ $('li', categoryList).on('mouseover', function () {
606
+ var category = $(this).text();
607
+ var widgets = availableWidgets[category];
608
+ $('li', categoryList).removeClass(self.settings.choosenClass);
609
+ $(this).addClass(self.settings.choosenClass);
610
+ showWidgetList(widgets, self);
611
+ createPreviewElement(self); // empty preview
612
+ });
613
+ });
614
+
615
+ };
616
+ }
617
+ });
618
+
619
+ /**
620
+ * Makes widgetPreview available with $().widgetPreview()
621
+ */
622
+ $.fn.extend({
623
+ widgetPreview: $.widgetPreview.construct
624
+ })
625
+ })(jQuery);
plugins/Dashboard/lang/am.json ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddPreviewedWidget": "ቅድመ እይታ የተሰጠውን widget ወደ ዳሽቦርዱ ጨምር",
4
+ "Dashboard": "ዳሽቦርድ",
5
+ "DeleteWidgetConfirm": "እርግጠኛ ነህ ይህ widget ከዳሽቦርድ ይሰረዝ?",
6
+ "LoadingWidget": "widget በመጫን ላይ, እባክዎ ይጠበቁ…",
7
+ "SelectWidget": "ወደ ዳሽቦርድ የሚጨመረውን widget ምረጥ",
8
+ "WidgetNotFound": "Widget አልተገኘም",
9
+ "WidgetPreview": "የWidget ቅድመእይታ"
10
+ }
11
+ }
plugins/Dashboard/lang/ar.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "أضف عنصر واجهة",
4
+ "AddPreviewedWidget": "إضغط لتضيف عنصر واجهة إلى لوحة المعلومات",
5
+ "ChangeDashboardLayout": "تغيير تخطيط لوحة المعلومات",
6
+ "CopyDashboardToUser": "إنسخ لوحة المعلومات إلى مستخدِم",
7
+ "CreateNewDashboard": "إنشاء لوحة معلومات جديدة",
8
+ "Dashboard": "لوحة المعلومات",
9
+ "DashboardCopied": "تم نسخ لوحة المعلومات الحالية إلى المستخدم المحدَّد بنجاح.",
10
+ "DashboardEmptyNotification": "اللوحة الرئيسية فارغة تماماً. ابدأ بإضافة بعد التطبيقات أو قم بتنضيد اللوحة الرئيسية إلى الإعدادات الافتراضية.",
11
+ "DashboardName": "اسم اللوحة:",
12
+ "DashboardOf": "لوحة معلومات %s",
13
+ "DefaultDashboard": "اللوحة الافتراضية - تستخدم المجموعة الافتراضية من التطبيقات وتخطيط الأعمدة.",
14
+ "DeleteWidgetConfirm": "هل ترغب حقاً في حذف لوحة الأداة هذه من لوحة التحكم?",
15
+ "EmptyDashboard": "لوحة المعلومات فارغة - إختر عناصر التحكم التي تفضّلها",
16
+ "LoadingWidget": "جاري تحميل الأداة، الرجاء الانتظار…",
17
+ "ManageDashboard": "إدارة اللوحة",
18
+ "Maximise": "تكبير",
19
+ "Minimise": "تصغير",
20
+ "NotUndo": "لن يمكنك التراجع عن هذه العملية.",
21
+ "PluginDescription": "لوحة معلومات تحليلات الويب الخاصة بك. خصّص لوحة معلوماتك بإضافة عناصر واجهة جديدة وسحبها وإسقاطها أينما شئت ، بإمكانك أيضاً تغيير تخطيط أعمدة لوحة المعلومات. يمكن لكل مستخدم إدارة لوحة معلومات يخصصها كما يشاء.",
22
+ "RemoveDashboard": "إزالة اللوحة",
23
+ "RemoveDashboardConfirm": "هل أنت متأكد من رغبتك حذف لوحة المعلومات \"%s\" ؟",
24
+ "RemoveDefaultDashboardNotPossible": "لايمكن حذف لوحة المعلومات الافتراضية",
25
+ "RenameDashboard": "إعادة تسمية اللوحة",
26
+ "ResetDashboard": "أعد ضبط لوحة المعلومات",
27
+ "ResetDashboardConfirm": "هل ترغب حقاً في تنضيد تخطيط اللوحة الرئيسية ومجموعة التطبيقات المعروضة فيها إلى الافتراضية؟",
28
+ "SelectDashboardLayout": "فضلاً إختر التخطيط الجديد للوحة المعلومات",
29
+ "SelectWidget": "اختر لوحة الأداة لإضافتها للوحة التحكم",
30
+ "SetAsDefaultWidgets": "اضبط كمجموعة التطبيقات الافتراضية",
31
+ "SetAsDefaultWidgetsConfirm": "هل أنت متأكد أنك تريد جعل عناصر الواجهة المختارة حالياً وتخطيط لوحة المعلومات هذا القالب الافتراضي للوحة المعلومات ؟",
32
+ "SetAsDefaultWidgetsConfirmHelp": "سيتم استخدام مجموعة التطبيقات هذه ومخطط أعمدة اللوحة عند إنشاء لوحات جديدة أو عند استخدام خاصية \"%s\".",
33
+ "TopLinkTooltip": "عرض تقارير إحصاءات الويب لـ %s",
34
+ "WidgetNotFound": "لم يتم العثور على الأداة",
35
+ "WidgetPreview": "معاينة لوحة الأداة"
36
+ }
37
+ }
plugins/Dashboard/lang/az.json ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Mini-proqramı bu lövhəyə əlavə et",
4
+ "Dashboard": "Lövhə"
5
+ }
6
+ }
plugins/Dashboard/lang/be.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddPreviewedWidget": "Дадаць предпросмотренный віджэт на інформпанель",
4
+ "Dashboard": "Інфармацыйная панэль",
5
+ "DeleteWidgetConfirm": "Вы ўпэўнены, што жадаеце выдаліць гэты віджэт з інфармацыйнай панэлі?",
6
+ "LoadingWidget": "Загрузка віджэта, калі ласка пачакайце…",
7
+ "Maximise": "Максімалізаваць",
8
+ "SelectWidget": "Абярыце віджэт для дадання на інформпанель",
9
+ "WidgetNotFound": "Віджэт не знойдзены",
10
+ "WidgetPreview": "Прадпрагляд віджэта"
11
+ }
12
+ }
plugins/Dashboard/lang/bg.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Добави нов уиджет",
4
+ "AddPreviewedWidget": "Добави уиджета на таблото",
5
+ "ChangeDashboardLayout": "Сменете изледа на таблото",
6
+ "CopyDashboardToUser": "Копиране на табло при потребител",
7
+ "CreateNewDashboard": "Направете ново табло",
8
+ "Dashboard": "Табло",
9
+ "DashboardCategoryHelp": "Това е страница на таблото. Таблата за управление са колекция от уиджети на Matomo, които добавяте сами, за да отговарят на Вашите специфични нужди. Смесете и съпоставете които и да е от уиджетите на Matomo, за да получите данните %1$s*, от които*%2$s се нуждаете с един поглед.",
10
+ "DashboardCopied": "Настоящото табло е успешно копирано при избрания потребител.",
11
+ "DashboardEmptyNotification": "Вашето табло не съдържа никакви уиджети. Започнете с добавяне на някои уиджети или просто нулирайте таблото, за да изберете уиджетите по подразбиране.",
12
+ "DashboardName": "Име на табло:",
13
+ "DashboardOf": "Табло за %s",
14
+ "DefaultDashboard": "Табло по подразбиране - Използвайте уиджетите по подразбиране и изгледа на колоните",
15
+ "DeleteWidgetConfirm": "Наистина ли искате да изтриете този уиджет от таблото?",
16
+ "EmptyDashboard": "Изпразнете таблото - Изберете любимите си уиджети",
17
+ "LoadingWidget": "Зарежда уиджета, почакайте…",
18
+ "ManageDashboard": "Управлявате таблото",
19
+ "Maximise": "Максимизиране",
20
+ "Minimise": "Минимизиране",
21
+ "NotUndo": "Вие няма да можете да отмените тази операция.",
22
+ "PluginDescription": "Вашето табло за уеб анализи. Настройте Вашия панел добавяйки нови уиджети, които можете да влачите, също така променяйки оформлението на колоните. Всеки потребител поотделно може да настрой своето табло.",
23
+ "RemoveDashboard": "Премахнете таблото",
24
+ "RemoveDashboardConfirm": "Сигурни ли сте че искате да премахнете таблото \"%s\"?",
25
+ "RemoveDefaultDashboardNotPossible": "Таблото по подразбиране не може да бъде премахнато",
26
+ "RenameDashboard": "Сменете името на таблото",
27
+ "ResetDashboard": "Зареди отново таблото",
28
+ "ResetDashboardConfirm": "Сигурни ли сте, че искате да заредите отново плана на таблото с избраните по подразбиране уиджети?",
29
+ "SelectDashboardLayout": "Моля, изберете Вашият нов изглед на табло",
30
+ "SelectWidget": "Изберете уиджет, който да добавите на таблото",
31
+ "SetAsDefaultWidgets": "Поставете по подразбиране избора на уиджети",
32
+ "SetAsDefaultWidgetsConfirm": "Сигурни ли сте, че искате да настройте настоящата селекция на уиджети и оформление на таблото по подразбиране?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Селекцията на уиджетии колоните на изгледа на таблото ще бъдат използвани, когато потребителят създаде ново табло, или когато \"%s\" функция е използвана.",
34
+ "TopLinkTooltip": "Вижте доклада за уеб анализи за %s.",
35
+ "TopMenuTitle": "Анализ",
36
+ "WidgetNotFound": "Несъществуващ уиджет",
37
+ "WidgetPreview": "Преглед на уиджета"
38
+ }
39
+ }
plugins/Dashboard/lang/bn.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "CreateNewDashboard": "নতুন ড্যাশবোর্ড তৈরি করুন",
4
+ "Dashboard": "ড্যাশবোর্ড",
5
+ "DashboardName": "ড্যাশবোর্ডের নাম:",
6
+ "RemoveDashboard": "ড্যাশবোর্ড মুছে ফেলুন",
7
+ "RenameDashboard": "ড্যাশবোর্ডের নাম পরিবর্তন"
8
+ }
9
+ }
plugins/Dashboard/lang/bs.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "Dashboard": "Kontrolna ploča",
4
+ "Maximise": "Maksimiziraj",
5
+ "Minimise": "Minimiziraj"
6
+ }
7
+ }
plugins/Dashboard/lang/ca.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Afegiu un giny a aquest tauler de control",
4
+ "AddPreviewedWidget": "Afegeix el giny al tauler",
5
+ "ChangeDashboardLayout": "Canviar el disseny del tauler",
6
+ "CopyDashboardToUser": "Copiar tauler a l'usuari",
7
+ "CreateNewDashboard": "Crear un nou tauler",
8
+ "Dashboard": "Tauler",
9
+ "DashboardCategoryHelp": "Aquesta és una pàgina de tauler. Els taulers de control són una col·lecció de ginys de Matomo per afegir tu mateix per adaptar-los a les teves necessitats específiques. Barreja i combina qualsevol dels widgets de Matomo per obtenir les dades que %1$s*tu*%2$s necessites veure d'un cop d'ull.",
10
+ "DashboardCopied": "El tauler de control actual s'ha copiat correctament a l'usuari seleccionat.",
11
+ "DashboardEmptyNotification": "El vostre tauler no conté cap giny. Comenceu per afegir alguns ginys o restablieu el tauler a la selecció de ginys per defecte.",
12
+ "DashboardName": "Nom del tauler:",
13
+ "DashboardOf": "Tauler de %s",
14
+ "DefaultDashboard": "Tauler per defecte - Utilitzant la selecció de ginys i l'estructura de columnes per defecte",
15
+ "DeleteWidgetConfirm": "Realment voleu esborrar aquest giny?",
16
+ "EmptyDashboard": "Tauler buit - Seleccioneu els vostres ginys preferits",
17
+ "LoadingWidget": "S'està carregant el giny…",
18
+ "ManageDashboard": "Administreu aquest tauler de control",
19
+ "Maximise": "Maximitza",
20
+ "Minimise": "Minimitza",
21
+ "NotUndo": "No podreu desfer aquesta operació.",
22
+ "PluginDescription": "El teu taulell d'analítica web. Personalitza el teu taulell afegint nous ginys, arrossega i solta per a moure'ls i canvia l'estructura de columnes. Cada usuari pot tenir el seu taulell personalitzat.",
23
+ "RemoveDashboard": "Elimina el tauler",
24
+ "RemoveDashboardConfirm": "Esteu segurs que voleu eliminar el tauler \"%s\"?",
25
+ "RemoveDefaultDashboardNotPossible": "El tauler predeterminat no es pot eliminar",
26
+ "RenameDashboard": "Reanomena el tauler",
27
+ "ResetDashboard": "Reinicialitza el tauler",
28
+ "ResetDashboardConfirm": "Esteu segurs que voleu reiniciar la disposició del vostre tauler a la selecció de ginys per defecte?",
29
+ "SelectDashboardLayout": "Seleccioneu la nova disposició del vostre tauler",
30
+ "SelectWidget": "Escolliu el giny que voleu afegir a la consola",
31
+ "SetAsDefaultWidgets": "Estableix com a selecció de widgets per defecte",
32
+ "SetAsDefaultWidgetsConfirm": "Esteu segurs que voleu definir la selecció de ginys i la disposició del tauler actuals per a la plantilla de tauler per defecte?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Aquesta selecció de ginys i la disposició de columnes del tauler es faran servir quan qualsevol usuari crei un nou tauler o quan s'utiltiza la funció \"%s\".",
34
+ "TopLinkTooltip": "Mostra els informes d'analítica web per %s.",
35
+ "TopMenuTitle": "Analítica",
36
+ "WidgetNotFound": "Aquest giny no s'ha trobat",
37
+ "WidgetPreview": "Previsualitza el giny"
38
+ }
39
+ }
plugins/Dashboard/lang/cs.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Přidat widget",
4
+ "AddPreviewedWidget": "Přidat widget v náhledu na nástěnku",
5
+ "ChangeDashboardLayout": "Změnit rozvržení nástěnky",
6
+ "CopyDashboardToUser": "Zkopírovat přehled uživateli",
7
+ "CreateNewDashboard": "Vytvořit novou nástěnku",
8
+ "Dashboard": "Nástěnka",
9
+ "DashboardCategoryHelp": "Toto je stránka s ovládacím panelem. Ovládací panely jsou sbírkou widgetů Matomo, které si sami přidáváte podle svých specifických potřeb. Můžete kombinovat libovolné widgety Matomo a získat tak na první pohled data, která %1$s*vy*%2$s potřebujete.",
10
+ "DashboardCopied": "Přehled byl úspěšně zkopírován vybranému uživateli.",
11
+ "DashboardEmptyNotification": "Vaše nástěnka neobsahuje žádné widgety. Nějaké přidejte, nebo obnovte výchozí výběr widgetů na nástěnce.",
12
+ "DashboardName": "Jméno nástěnky:",
13
+ "DashboardOf": "Nástěnka %s",
14
+ "DefaultDashboard": "Výchozí nástěnka - používáte výchozí rozvržení nástěnky",
15
+ "DeleteWidgetConfirm": "Opravdu chcete odstranit tento widget z nástěnky?",
16
+ "EmptyDashboard": "Prázdná nástěnka - vyberte si své oblíbené widgety",
17
+ "LoadingWidget": "Načítání widgetu, chvíli strpení…",
18
+ "ManageDashboard": "Správa nástěnky",
19
+ "Maximise": "Maximalizovat",
20
+ "Minimise": "Minimalizovat",
21
+ "NotUndo": "Tuto operaci nemůžete vrátit zpět.",
22
+ "PluginDescription": "Vaše nástěnka analýzy webu. Přizpůsobte si vaši nástěnku přidáním nových widgetů, jejich přesunutím nebo změnou rozvržení sloupců. Každý uživatel může přizpůsobit svou vlastní nástěnku.",
23
+ "RemoveDashboard": "Odstranit nástěnku",
24
+ "RemoveDashboardConfirm": "Opravdu chcete odstranit nástěnku: %s?",
25
+ "RemoveDefaultDashboardNotPossible": "Výchozí nástěnka nemůže být odstraněna",
26
+ "RenameDashboard": "Přejmenovat nástěnku",
27
+ "ResetDashboard": "Obnovit nástěnku",
28
+ "ResetDashboardConfirm": "Opravdu chcete obnovit nastavení nástěnky do továrního stavu?",
29
+ "SelectDashboardLayout": "Prosím vyberte nové rozvržení nástěnky",
30
+ "SelectWidget": "Zvolte widget pro přidání na nástěnku",
31
+ "SetAsDefaultWidgets": "Nastavit výchozí výběr widgetů",
32
+ "SetAsDefaultWidgetsConfirm": "Opravdu chcete nastavit toto rozvržení widgetů jako výchozí?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Tyto widgety a jejich rozvržení budou použity vždy, když někdo vytvoří novou nástěnku nebo použije vlastnost %s.",
34
+ "TopLinkTooltip": "Zobraz analytické hlášení webu pro %s.",
35
+ "TopMenuTitle": "Analytika",
36
+ "WidgetNotFound": "Widget nenalezen",
37
+ "WidgetPreview": "Náhled widgetu"
38
+ }
39
+ }
plugins/Dashboard/lang/cy.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "Dashboard": "Dangosfwrdd"
4
+ }
5
+ }
plugins/Dashboard/lang/da.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Tilføj modul",
4
+ "AddPreviewedWidget": "Tilføj forhåndsvist modul til kontrolpanelet",
5
+ "ChangeDashboardLayout": "Skift udformning på kontrolpanel",
6
+ "CopyDashboardToUser": "Kopier kontrolpanel til bruger",
7
+ "CreateNewDashboard": "Opret nyt kontrolpanel",
8
+ "Dashboard": "Kontrolpanel",
9
+ "DashboardCopied": "Aktuelt kontrolpanel blev succesfuldt kopieret til den valgte bruger.",
10
+ "DashboardEmptyNotification": "Kontrolpanelet indeholder ikke nogen moduler. Start med at tilføje nogle moduler eller nulstille kontrolpanel til standard.",
11
+ "DashboardName": "Kontrolpanel navn:",
12
+ "DashboardOf": "Kontrolpanel af %s",
13
+ "DefaultDashboard": "Standard kontrolpanel - Bruger standard moduler og udformning",
14
+ "DeleteWidgetConfirm": "Bekræft fjernelse af modul fra kontrolpanelet?",
15
+ "EmptyDashboard": "Tomt kontrolpanel - Vælg favorit moduler",
16
+ "LoadingWidget": "Indlæser modul, vent…",
17
+ "ManageDashboard": "Administrer kontrolpanel",
18
+ "Maximise": "Maksimer",
19
+ "Minimise": "Minimer",
20
+ "NotUndo": "Handlingen kan ikke fortrydes.",
21
+ "PluginDescription": "Webanalyse kontrolpanel. Tilpas dit kontrolpanel ved at tilføje nye moduler, træk og slip dem rundt, og ændre kontrolpanelets kolonnelayout. Hver bruger kan styre deres eget brugerdefinerede kontrolpanel.",
22
+ "RemoveDashboard": "Fjern kontrolpanel",
23
+ "RemoveDashboardConfirm": "Bekræft fjernelse af kontrolpanel \"%s\"?",
24
+ "RemoveDefaultDashboardNotPossible": "Standard kontrolpanel kan ikke fjernes",
25
+ "RenameDashboard": "Omdøb kontrolpanel",
26
+ "ResetDashboard": "Nulstil kontrolpanel",
27
+ "ResetDashboardConfirm": "Nulstil kontrolpanel til standard?",
28
+ "SelectDashboardLayout": "Vælg ny udformning på kontrolpanel",
29
+ "SelectWidget": "Vælg modul, som skal tilføjes kontrolpanelet",
30
+ "SetAsDefaultWidgets": "Indstil som standard modul valg",
31
+ "SetAsDefaultWidgetsConfirm": "Skal de nuværende modul udvælgelser og kontrolpanel udformning bruges som standard kontrolpanel skabelon?",
32
+ "SetAsDefaultWidgetsConfirmHelp": "Modul udvælgelse og kontrolpanelets udformning vil blive brugt når en bruger opretter et nyt kontrolpanel, eller når \"%s\" -funktionen bruges.",
33
+ "TopLinkTooltip": "Vis webanalyse-rapporter for %s.",
34
+ "WidgetNotFound": "Fandt ikke modul",
35
+ "WidgetPreview": "Forhåndsvisning af modul"
36
+ }
37
+ }
plugins/Dashboard/lang/de.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Widget zu diesem Dashboard hinzufügen",
4
+ "AddPreviewedWidget": "Widget aus der Vorschau zum Dashboard hinzufügen",
5
+ "ChangeDashboardLayout": "Dashboardlayout verändern",
6
+ "CopyDashboardToUser": "Dashboard zu Benutzer kopieren",
7
+ "CreateNewDashboard": "Neues Dashboard erstellen",
8
+ "Dashboard": "Dashboard",
9
+ "DashboardCategoryHelp": "Dies ist eine Dashboard Seite. Dashboards sind Sammlungen von Matomo Widgets welche Sie für Ihre persönlichen Bedürfnisse anpassen können. Mixen und kombinieren Sie beliebig Matomo Widgets um die Daten zu erhalten, die %1$s*Sie*%2$s auf einen Blick benötigen.",
10
+ "DashboardCopied": "Aktuelles Dashboard wurde erfolgreich zum ausgewählten Benutzer kopiert.",
11
+ "DashboardEmptyNotification": "Ihr Dashboard enthält keine Widgets. Sie können jetzt Widgets hinzufügen oder das Dashboard auf die Standard Widgetauswahl zurücksetzen.",
12
+ "DashboardName": "Dashboard Name:",
13
+ "DashboardOf": "Dashboard von %s",
14
+ "DefaultDashboard": "Standard Dashboard - Verwendet Standardwidgets und Spaltenlayout",
15
+ "DeleteWidgetConfirm": "Wollen Sie wirklich dieses Widget vom Dashboard entfernen?",
16
+ "EmptyDashboard": "Leeres Dashboard - Wählen Sie Ihre bevorzugten Widgets",
17
+ "LoadingWidget": "Lade Widget, bitte warten…",
18
+ "ManageDashboard": "Verwalten Sie dieses Dashboard",
19
+ "Maximise": "Vergrößern",
20
+ "Minimise": "Minimieren",
21
+ "NotUndo": "Sie können diese Aktion nicht rückgängig machen.",
22
+ "PluginDescription": "Ihr Web Analyse Dashboard. Personalisieren Sie Ihr Dashboard, in dem Sie neue Widgets hinzufügen, per Drag-and-drop herumschieben, und das Dashboard Spaltenlayout ändern. Jeder Benutzer kann sein eigenes personalisiertes Dashboard verwalten.",
23
+ "RemoveDashboard": "Dashboard entfernen",
24
+ "RemoveDashboardConfirm": "Sind Sie sicher, dass Sie das Dashboard \"%s\" löschen möchten?",
25
+ "RemoveDefaultDashboardNotPossible": "Das Standard-Dashboard kann nicht entfernt werden",
26
+ "RenameDashboard": "Dashboard umbenennen",
27
+ "ResetDashboard": "Dashboard zurücksetzen",
28
+ "ResetDashboardConfirm": "Wollen Sie wirklich das Dashboardlayout auf die Standardeinstellungen zurücksetzen?",
29
+ "SelectDashboardLayout": "Bitte wählen Sie ein neues Dashboardlayout",
30
+ "SelectWidget": "Wählen Sie hier das Widget aus, welches zum Dashboard hinzugefügt werden soll",
31
+ "SetAsDefaultWidgets": "Als Standard Widgetauswahl speichern",
32
+ "SetAsDefaultWidgetsConfirm": "Sind Sie sicher, dass Sie die aktuelle Widgetauswahl und das Layout als das Standard Dashboardvorlage speichern möchten?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Diese Widgetauswahl und das aktuelle Spaltenlayout werden verwendet, wenn ein neues Dashboard erstellt wird oder wenn \"%s\" verwendet wird.",
34
+ "TopLinkTooltip": "Zeige Webanalytik Berichte für %s.",
35
+ "TopMenuTitle": "Analysen",
36
+ "WidgetNotFound": "Widget nicht gefunden",
37
+ "WidgetPreview": "Widget-Vorschau"
38
+ }
39
+ }
plugins/Dashboard/lang/dv.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {}
plugins/Dashboard/lang/el.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Προσθήκη μικροεφαρμογής στον πίνακα",
4
+ "AddPreviewedWidget": "Πατήστε για να προσθέσετε τη μικροεφαρμογή στον κεντρικό πίνακα",
5
+ "ChangeDashboardLayout": "Αλλαγή εμφάνισης κεντρικού πίνακα",
6
+ "CopyDashboardToUser": "Αντιγραφή κεντρικού πίνακα στο χρήστη",
7
+ "CreateNewDashboard": "Δημιουργία νέου κεντρικού πίνακα",
8
+ "Dashboard": "Κεντρικός Πίνακας",
9
+ "DashboardCategoryHelp": "Αυτή είναι μια σελίδα ταμπλό. Τα ταμπλό είναι μια συλλογή από γραφικά συστατικά μέρη του Matomo που προσθέτετε οι ίδιοι ώστε να σας εξυπηρετούν. Ανακατέψτε και τοποθετήστε οποιαδήποτε από τα γραφικά συστατικά μέρη του Matomo για να έχετε τα δεδομένα που %1$s*εσείς*%2$s χρειάζεστε με μια ματιά.",
10
+ "DashboardCopied": "Ο τρέχων κεντρικός πίνακας αντιγράφτηκε επιτυχώς στον επιλεγμένο χρήστη.",
11
+ "DashboardEmptyNotification": "Ο Κεντρικός σας Πίνακας δεν περιέχει μικροεφαρμογές. Ξεκινήστε βάζοντας ορισμένες ή απλά επαναφέρτε τον κεντρικό πίνακα στην προεπιλεγμένη διάταξη μικροεφαρμογών.",
12
+ "DashboardName": "Ονομασία κεντρικού πίνακα:",
13
+ "DashboardOf": "Κεντρικός πίνακας του %s",
14
+ "DefaultDashboard": "Προεπιλεγμένος Κεντρικός Πίνακας - Χρήση επιλογής προεπιλεγμένων μικροεφαρμογών και διάταξης στηλών",
15
+ "DeleteWidgetConfirm": "Είστε σίγουρος ότι θέλετε να αφαιρέσετε αυτή τη μικροεφαρμογή από τον κεντρικό πίνακα;",
16
+ "EmptyDashboard": "Άδειασμα κεντρικού πίνακα - Επιλέξτε τις αγαπημένες μικροεφαρμογές σας",
17
+ "ExportThisDashboard": "Εξαγωγή της εργαλειοθήκης",
18
+ "LoadingWidget": "Φόρτωση μικροεφαρμογής, περιμένετε…",
19
+ "ManageDashboard": "Διαχείριση Κεντρικού πίνακα",
20
+ "Maximise": "Μεγιστοποίηση",
21
+ "Minimise": "Ελαχιστοποίηση",
22
+ "NotUndo": "Αυτή η λειτουργεία δεν είναι αναστρέψιμη.",
23
+ "PluginDescription": "Ο κεντρικός πίνακας Αναλυτικών Ιστού. Προσαρμόστε τον πίνακα με την προσθήκη νέων γραφικών συστατικών, σύρτε και αφήστε τα όπου θέλετε και αλλάξτε την διάταξη στήλης του πίνακα. Κάθε χρήστης μπορεί να διαχειρίζεται τον δικό του πίνακα.",
24
+ "RemoveDashboard": "Απομάκρυνση κεντρικού πίνακα",
25
+ "RemoveDashboardConfirm": "Θέλετε, σίγουρα, να απομακρύνετε τον Κεντρικό Πίνακα «%s»;",
26
+ "RemoveDefaultDashboardNotPossible": "Ο προκαθορισμένος πίνακας εργαλείων δεν είναι δυνατό να αφαιρεθεί",
27
+ "RenameDashboard": "Μετονομασία κεντρικού πίνακα",
28
+ "ResetDashboard": "Επαναφορά κεντρικού πίνακα",
29
+ "ResetDashboardConfirm": "Θέλετε σίγουρα να επαναφέρετε τον κεντρικό σας πίνακα στις προεπιλεγμένες Μικροεφαρμογές;",
30
+ "SelectDashboardLayout": "Επιλέξτε τη νέα εμφάνιση κεντρικού πίνακα",
31
+ "SelectWidget": "Επιλέξτε τη μικροεφαρμογή για προσθήκη στον κεντρικό πίνακα",
32
+ "SetAsDefaultWidgets": "Ορισμός ως προεπιλεγμένης ομάδας μικροεφαρμογών",
33
+ "SetAsDefaultWidgetsConfirm": "Θέλετε, σίγουρα, να ορίσετε την τρέχουσα επιλογή μικροεφαρμογών και διάταξης κεντρικού πίνακα ως το προεπιλεγμένο πρότυπο κεντρικού πίνακα;",
34
+ "SetAsDefaultWidgetsConfirmHelp": "Αυτή η επιλογή μικροεφαρμογών και διάταξης στηλών κεντρικού πίνακα θα χρησιμοποιηθεί όταν κάθε χρήστης δημιουργεί έναν νέο κεντρικό πίνακα ή όταν το χαρακτηριστικό «%s» χρησιμοποιείται.",
35
+ "TopLinkTooltip": "Προβολή αναφορών Στατιστικών Ιστού για %s.",
36
+ "TopMenuTitle": "Αναλυτικά",
37
+ "WidgetNotFound": "Η Μικροεφαρμογή δεν βρέθηκε",
38
+ "WidgetPreview": "Προεπισκόπηση Μικροεφαρμογής"
39
+ }
40
+ }
plugins/Dashboard/lang/en.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Add widget to this dashboard",
4
+ "AddPreviewedWidget": "Click to add widget to the dashboard",
5
+ "ChangeDashboardLayout": "Change dashboard layout",
6
+ "CopyDashboardToUser": "Copy dashboard to user",
7
+ "CreateNewDashboard": "Create new dashboard",
8
+ "Dashboard": "Dashboard",
9
+ "DashboardCopied": "Current dashboard successfully copied to selected user.",
10
+ "DashboardEmptyNotification": "Your Dashboard does not contain any widgets. Start by adding some widgets or just reset the dashboard to the default widget selection.",
11
+ "DashboardName": "Dashboard name:",
12
+ "DashboardOf": "Dashboard of %s",
13
+ "DefaultDashboard": "Default dashboard - Using default widgets selection and columns layout",
14
+ "DeleteWidgetConfirm": "Are you sure you want to delete this widget from the dashboard?",
15
+ "EmptyDashboard": "Empty dashboard - Pick your favorite widgets",
16
+ "LoadingWidget": "Loading widget, please wait…",
17
+ "ManageDashboard": "Manage Dashboard",
18
+ "ExportThisDashboard": "Export dashboard",
19
+ "Maximise": "Maximise",
20
+ "Minimise": "Minimise",
21
+ "NotUndo": "You will not be able to undo this operation.",
22
+ "PluginDescription": "Your Web Analytics Dashboard. Customise your dashboard by adding new widgets, drag and drop them around, and change the dashboard column layout. Each user can manage their own custom dashboard.",
23
+ "RemoveDashboard": "Remove dashboard",
24
+ "RemoveDashboardConfirm": "Are you sure you want to remove the dashboard \"%s\"?",
25
+ "RemoveDefaultDashboardNotPossible": "The default dashboard cannot be removed",
26
+ "RenameDashboard": "Rename dashboard",
27
+ "ResetDashboard": "Reset dashboard",
28
+ "ResetDashboardConfirm": "Are you sure you want to reset your dashboard layout to the default Widgets selection?",
29
+ "SelectDashboardLayout": "Please select your new dashboard layout",
30
+ "SelectWidget": "Select the widget to add in the dashboard",
31
+ "SetAsDefaultWidgets": "Set as default widgets selection",
32
+ "SetAsDefaultWidgetsConfirm": "Are you sure you want to set the current widgets selection and dashboard layout as the default dashboard template?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "This widgets selection and dashboard columns layout will be used when any user creates a new dashboard, or when \"%s\" feature is used.",
34
+ "TopLinkTooltip": "View Web Analytics reports for %s.",
35
+ "TopMenuTitle": "Analytics",
36
+ "WidgetNotFound": "Widget not found",
37
+ "WidgetPreview": "Widget preview",
38
+ "DashboardCategoryHelp": "This is a dashboard page. Dashboards are a collection of Matomo's widgets that you add yourself to suit your specific needs. Mix and match any of Matomo's widgets to get the data %1$s*you*%2$s need at a glance."
39
+ }
40
+ }
plugins/Dashboard/lang/eo.json ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "Dashboard": "Panelo"
4
+ }
5
+ }
plugins/Dashboard/lang/es-ar.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Agregá un widget",
4
+ "AddPreviewedWidget": "Hacé clic para agregar el widget al panel",
5
+ "ChangeDashboardLayout": "Cambiar el diseño del panel",
6
+ "CopyDashboardToUser": "Copiar panel al usuario",
7
+ "CreateNewDashboard": "Crear nuevo panel",
8
+ "Dashboard": "Panel",
9
+ "DashboardCategoryHelp": "Esta es una página de panel. Los paneles son una colección de widgets de Matomo que agregas vos mismo para cubrir tus necesidades específicas. Mezclá y combiná cualquiera de los widgets de Matomo para obtener los datos que %1$sVOS%2$s necesitás de un saque.",
10
+ "DashboardCopied": "Se copió exitosamente el panel actual al usuario seleccionado.",
11
+ "DashboardEmptyNotification": "Tu panel no contiene ningún widget. Comenzá agregando alguno o simplemente reiniciá el panel a la selección predeterminada de widgets.",
12
+ "DashboardName": "Nombre del panel:",
13
+ "DashboardOf": "Panel de %s",
14
+ "DefaultDashboard": "Panel predeterminado - Usando la selección de widgets y diseño de columnas predeterminado",
15
+ "DeleteWidgetConfirm": "¿Estás seguro que querés eliminar este widget del panel?",
16
+ "EmptyDashboard": "Panel vacío - Elegí tus widgets favoritos",
17
+ "LoadingWidget": "Cargando widget. Por favor, esperá…",
18
+ "ManageDashboard": "Administrar panel",
19
+ "Maximise": "Maximizar",
20
+ "Minimise": "Minimizar",
21
+ "NotUndo": "No podrás deshacer esta operación.",
22
+ "PluginDescription": "Tu panel de análisis web. Personalizá tu panel agregando nuevos widgets, arrastrándolos y soltándolos, y cambiando el diseño de las columnas del panel. Cada usuario puede administrar su propio panel personalizado.",
23
+ "RemoveDashboard": "Quitar panel",
24
+ "RemoveDashboardConfirm": "¿Estás seguro que querés eliminar el panel \"%s\"?",
25
+ "RemoveDefaultDashboardNotPossible": "No se puede quitar el panel predeterminado",
26
+ "RenameDashboard": "Renombrar el panel",
27
+ "ResetDashboard": "Reiniciar panel",
28
+ "ResetDashboardConfirm": "¿Estás seguro que querés restablecer el diseño de tu panel a la selección predeterminada de widgets?",
29
+ "SelectDashboardLayout": "Por favor, seleccioná tu nuevo diseño de panel",
30
+ "SelectWidget": "Seleccioná el widget para agregar en el panel",
31
+ "SetAsDefaultWidgets": "Establecer como selección predeterminada de widgets",
32
+ "SetAsDefaultWidgetsConfirm": "¿Estás seguro que querés establecer la selección actual de widgets y el diseño del panel como la plantilla predeterminada?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Esta selección de widgets y diseño de columnas del panel será usada cuando un usuario cree un nuevo panel o cuando se use la función \"%s\".",
34
+ "TopLinkTooltip": "Ver informes de análisis web para %s.",
35
+ "TopMenuTitle": "Análisis",
36
+ "WidgetNotFound": "Widget no encontrado",
37
+ "WidgetPreview": "Previsualización del Widget"
38
+ }
39
+ }
plugins/Dashboard/lang/es.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Añadir widget a este tablero",
4
+ "AddPreviewedWidget": "Añade el módulo al panel de control",
5
+ "ChangeDashboardLayout": "Modificar distribución del tablero",
6
+ "CopyDashboardToUser": "Copiar tablero al usuario",
7
+ "CreateNewDashboard": "Crear nuevo tablero",
8
+ "Dashboard": "Tablero",
9
+ "DashboardCategoryHelp": "Esta es una página de tablero. Los paneles son una colección de widgets de Matomo que agrega usted mismo para satisfacer sus necesidades específicas. Mezcle y combine cualquiera de los widgets de Matomo para obtener los datos que %1$s*usted*%2$s necesita de un vistazo.",
10
+ "DashboardCopied": "Tablero actual copiado con éxito al usuario seleccionado.",
11
+ "DashboardEmptyNotification": "Su panel de control no contiene ningún módulo. Comience añadiendo alguno o restablezca el panel de control con la selección de módulos por defecto.",
12
+ "DashboardName": "Nombre del tablero:",
13
+ "DashboardOf": "Tablero de %s",
14
+ "DefaultDashboard": "Panel de control por defecto - Usando la selección por defecto de módulos y la disposición de columnas",
15
+ "DeleteWidgetConfirm": "¿Está seguro que desea borrar este módulo de su panel de control?",
16
+ "EmptyDashboard": "Panel de control vacío - Elija sus módulos preferidos",
17
+ "ExportThisDashboard": "Exportar tablero",
18
+ "LoadingWidget": "Cargando módulo, por favor espere…",
19
+ "ManageDashboard": "Gestionar tablero",
20
+ "Maximise": "Maximizar",
21
+ "Minimise": "Minimizar",
22
+ "NotUndo": "No podrá deshacer esta operación.",
23
+ "PluginDescription": "Su panel de control. Personalice su tablero añadiendo nuevos módulos arrastrándolos y soltándolos; cambie la disposición de las columnas del panel de control. Cada usuario puede administrar su propio panel de control personalizado.",
24
+ "RemoveDashboard": "Elimina el tablero",
25
+ "RemoveDashboardConfirm": "¿Está seguro que desea eliminar el tablero \"%s\"?",
26
+ "RemoveDefaultDashboardNotPossible": "El tablero predeterminado no puede ser eliminado",
27
+ "RenameDashboard": "Renombrar el tablero",
28
+ "ResetDashboard": "Reinicia el tablero",
29
+ "ResetDashboardConfirm": "¿Realmente desea restablecer la distribución del panel de control y regresar a la selección de módulos por defecto ?",
30
+ "SelectDashboardLayout": "Por favor seleccione su nueva distribución de tablero",
31
+ "SelectWidget": "Selecciona el módulo para añadirlo al panel de control",
32
+ "SetAsDefaultWidgets": "Establecer como selección de módulos por defecto",
33
+ "SetAsDefaultWidgetsConfirm": "¿Está seguro que desea establecer esta selección y disposición de tablero como la plantilla de tablero por defecto?",
34
+ "SetAsDefaultWidgetsConfirmHelp": "Esta selección de módulos y disposición de columnas del panel de control será usada cuando un usuario cree un nuevo panel de control o cuando se use la función \"%s\".",
35
+ "TopLinkTooltip": "Ver los reportes de Análisis de internet para %s.",
36
+ "TopMenuTitle": "Analíticas",
37
+ "WidgetNotFound": "Reproductor no encontrado",
38
+ "WidgetPreview": "Previsualización del reproductor"
39
+ }
40
+ }
plugins/Dashboard/lang/et.json ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Lisa vidin",
4
+ "AddPreviewedWidget": "Vali et lisada vidin töölauale",
5
+ "ChangeDashboardLayout": "Muuda töölaua paigutust",
6
+ "CopyDashboardToUser": "Kopeeri töölaud kasutajale",
7
+ "CreateNewDashboard": "Loo uus töölaud",
8
+ "Dashboard": "Töölaud",
9
+ "DashboardName": "Töölaua nimi:",
10
+ "DashboardOf": "%s töölaud",
11
+ "DefaultDashboard": "Vaikimisi töölaud - kasutab vaikimisi vidinaid ja paigutust",
12
+ "DeleteWidgetConfirm": "Oled sa kindel selle mooduli kustutamises oma töölaualt?",
13
+ "EmptyDashboard": "Tühi töölaud - vali oma lemmik vidinad",
14
+ "LoadingWidget": "Laen moodulit, palun oota…",
15
+ "ManageDashboard": "Halda töölauda",
16
+ "Maximise": "Maksimeeri",
17
+ "Minimise": "Minimeeri",
18
+ "NotUndo": "Sul ei ole võimalik antud tegevust tagasi võtta.",
19
+ "RemoveDashboard": "Eemalda töölaud",
20
+ "RenameDashboard": "Nimeta töölaud ümber",
21
+ "ResetDashboard": "Algseadista töölaud",
22
+ "SelectWidget": "Vali töölauale lisatav moodul",
23
+ "SetAsDefaultWidgets": "Määra vaikimisi valitud vidinateks",
24
+ "TopLinkTooltip": "Kuva veebianalüütika raport lehele %s.",
25
+ "WidgetNotFound": "Moodulit ei leitud",
26
+ "WidgetPreview": "Vidina eelvaade"
27
+ }
28
+ }
plugins/Dashboard/lang/eu.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Gehitu widget-a panel honetara",
4
+ "AddPreviewedWidget": "Egin klik widget-a panelera gehitzeko",
5
+ "ChangeDashboardLayout": "Aldatu panelaren diseinua",
6
+ "CopyDashboardToUser": "Kopiatu panela erabiltzailera",
7
+ "CreateNewDashboard": "Sortu panel berria",
8
+ "Dashboard": "Panela",
9
+ "DashboardCategoryHelp": "Hau panelaren orri bat da. Panelak zuk zure beharrak asetzeko Matomoren widget-ak gehituz sortutako bildumak dira. Erabili nahi dituzun Matomo widget-ak %1$s*zuk*%2$s behar dituzun datuak begi kolpean ikusteko.",
10
+ "DashboardCopied": "Uneko panela behar bezala kopiatu da hautatutako erabiltzailera.",
11
+ "DashboardEmptyNotification": "Zure panelak ez dauka widget-ik. Gehitu widget batzuk edo berrezarri panelaren widget hautapen lehenetsia.",
12
+ "DashboardName": "Panelaren izena:",
13
+ "DashboardOf": "%s erabiltzailearen panela",
14
+ "DefaultDashboard": "Panel lehenetsia - Widget hautapen eta zutabe diseinu lehenetsia erabiltzen du",
15
+ "DeleteWidgetConfirm": "Ziur zaude widget hau paneletik ezabatu nahi duzula?",
16
+ "EmptyDashboard": "Panel hutsa - Aukeratu zure gogoko widget-ak",
17
+ "LoadingWidget": "Widget-a kargatzen, itxaron mesedez…",
18
+ "ManageDashboard": "Kudeatu panela",
19
+ "Maximise": "Maximizatu",
20
+ "Minimise": "Minimizatu",
21
+ "NotUndo": "Ezingo duzu eragiketa hau desegin.",
22
+ "PluginDescription": "Zure web analitika panela. Pertsonaliza ezazu zure panela widget berriak gehituz, arrastatu eta jaregin itzazu batetik bestera eta aldatu panelaren zutabe diseinua. Erabiltzaile bakoitzak bere panel pertsonalizatua kudeatu dezake.",
23
+ "RemoveDashboard": "Kendu panela",
24
+ "RemoveDashboardConfirm": "Ziur zaude \"%s\" panela kendu nahi duzula?",
25
+ "RemoveDefaultDashboardNotPossible": "Panel lehenetsia ezin da kendu",
26
+ "RenameDashboard": "Berrizendatu panela",
27
+ "ResetDashboard": "Berrezarri panela",
28
+ "ResetDashboardConfirm": "Ziur zaude panelaren diseinua Widget hautapen lehenetsira berrezarri nahi duzula?",
29
+ "SelectDashboardLayout": "Hautatu zure panel berriaren diseinua",
30
+ "SelectWidget": "Hautatu panelean gehitzeko widget-a",
31
+ "SetAsDefaultWidgets": "Ezarri widget hautapen lehenetsi bezala",
32
+ "SetAsDefaultWidgetsConfirm": "Ziur zaude uneko widget hautapena eta panelaren diseinua panel-txantiloi lehenetsi bezala ezarri nahi dituzula?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Widget hautapen eta panelaren zutabe-diseinu hau erabiliko da edozein erabiltzailek panel berri bat sortzen duenean edo \"%s\" ezaugarria erabiltzen denean.",
34
+ "TopLinkTooltip": "Ikusi %s(r)en web analitika txostenak.",
35
+ "TopMenuTitle": "Analitikak",
36
+ "WidgetNotFound": "Ez da widget-a aurkitu",
37
+ "WidgetPreview": "Widget-aren aurrebista"
38
+ }
39
+ }
plugins/Dashboard/lang/fa.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "اضافه کردن یک ابزار",
4
+ "AddPreviewedWidget": "برای اضافه کردن یک ابزار به داشبورد اینجا کلیک کنید",
5
+ "ChangeDashboardLayout": "تغییر طرح داشبورد",
6
+ "CopyDashboardToUser": "اضافه کردن داشبورد به کاربر",
7
+ "CreateNewDashboard": "ایجاد داشبورد جدید",
8
+ "Dashboard": "داشبورد",
9
+ "DashboardCopied": "همین داشبورد با موفقیت به کاربر انتخاب شده کپی شد.",
10
+ "DashboardEmptyNotification": "صفحه شما هر ویدجت نیست. شروع با اضافه کردن برخی از ویدجت و یا تنظیم مجدد داشبورد به انتخاب پیش فرض ویجت.",
11
+ "DashboardName": "نام داشبورد:",
12
+ "DashboardOf": "داشبورد %s",
13
+ "DefaultDashboard": "داشبورد پیش فرض - با استفاده از ابزارهای پیش فرض و طرح ستونی",
14
+ "DeleteWidgetConfirm": "آیا شما مطمئن هستید که می خواهید این ابزار را از داشبورد حذف کنید؟",
15
+ "EmptyDashboard": "داشبورد خالی - ویدجت های مورد علاقه خود را انتخاب کنید",
16
+ "LoadingWidget": "در حال بارگزاری ابزار، لطفا منتظر بمانید…",
17
+ "ManageDashboard": "مدیریت داشبورد",
18
+ "Maximise": "ماکسمیاز",
19
+ "Minimise": "حداقل",
20
+ "NotUndo": "شما قادر نخواهد بود برای خنثیسازی این عملیات است.",
21
+ "PluginDescription": "داشبورد داده‌های تحلیلی سایت شما. داشبورد خود را با افزودن ابزارک‌ها جدید، برداشتن و گذاشتن در مکان‌های مختلف، و تغییر چیدمان ستون‌های داشبورد سفارشی کنید. هر کاربر می‌تواند داشبورد سفارشی خود را مدیریت کند.",
22
+ "RemoveDashboard": "حذف داشبورد",
23
+ "RemoveDashboardConfirm": "آیا شما مطمئن هستید که می خواهید این داشبورد %s را پاک کنید؟",
24
+ "RemoveDefaultDashboardNotPossible": "داشبورد پیشفرض قابل حذف نیست",
25
+ "RenameDashboard": "تغییر نام داشبورد",
26
+ "ResetDashboard": "تنظیم مجدد داشبورد",
27
+ "ResetDashboardConfirm": "آیا شما واقعا طرح داشبورد خود را به تنظیم مجدد به طور پیش فرض انتخاب ابزارک می خواهم؟",
28
+ "SelectDashboardLayout": "لطفا طرح داشبورد جدید خود را انتخاب کنید",
29
+ "SelectWidget": "یک ابزار برای اضافه کردن در داشبورد انتخاب کنید",
30
+ "SetAsDefaultWidgets": "قرار دادن به عنوان پیش فرض انتخاب ویدجت",
31
+ "SetAsDefaultWidgetsConfirm": "آیا شما مطمئن هستید که می خواهید به مجموعه فعلی انتخاب ویدجت ها و طرح داشبورد به عنوان قالب پیش فرض داشبورد؟",
32
+ "SetAsDefaultWidgetsConfirmHelp": "این ابزارک‌ها و چیدمان ستون‌های داشبورد برای هر کاربر که داشبورد جدید می‌سازد و یا وقتی ویژگی \"%s\" به کار برده می‌شود، استفاده خواهد شد.",
33
+ "TopLinkTooltip": "گزارش های داده های آماری %s را ببینید.",
34
+ "WidgetNotFound": "ابزار پیدا نشد",
35
+ "WidgetPreview": "پیش نمایش ابزار"
36
+ }
37
+ }
plugins/Dashboard/lang/fi.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Lisää vimpain",
4
+ "AddPreviewedWidget": "Napsauta lisätäksesi vimpaimen työpöydälle",
5
+ "ChangeDashboardLayout": "Vaihda työpöydän asettelua",
6
+ "CopyDashboardToUser": "Kopioi työpöytä käyttäjälle",
7
+ "CreateNewDashboard": "Luo uusi työpöytä",
8
+ "Dashboard": "Työpöytä",
9
+ "DashboardCategoryHelp": "Tämä on työpöydän sivu. Työpöydät ovat kokoelmia Matomon vimpaimia, joita lisäät itsellesi omiin tarpeisiisi. Määritä oma valikoima vimpaimia saadaksesi ne tiedot, joita %1$s*sinä*%2$s tarvitset muodostaaksesi yleiskuvan.",
10
+ "DashboardCopied": "Nykyinen työpöytä on kopioitu onnistuneesti valitulle käyttäjälle.",
11
+ "DashboardEmptyNotification": "Työpöytäsi on tyhjä. Voit aloittaa lisäämällä vimpaimia tai palauttamalla työpöydän oletusasetuksiin.",
12
+ "DashboardName": "Työpöydän nimi:",
13
+ "DashboardOf": "Työpöytä: %s",
14
+ "DefaultDashboard": "Oletustyöpöytä - käytössä on oletusvalikoima ja -asettelu",
15
+ "DeleteWidgetConfirm": "Haluatko varmasti poistaa vimpaimen työpöydältä?",
16
+ "EmptyDashboard": "Tyhjä työpöytä - valitse vimpaimia",
17
+ "LoadingWidget": "Ladataan vimpainta, odota…",
18
+ "ManageDashboard": "Muokkaa työpöytää",
19
+ "Maximise": "Suurenna",
20
+ "Minimise": "Pienennä",
21
+ "NotUndo": "Et voi perua tätä operaatiota.",
22
+ "PluginDescription": "Web-analytiikkojen työpöytä. Muokkaa työpöytääsi lisäämällä uusia vimpaimia, siirtämällä vimpaimia eri kohtiin, ja vaihtamalla työpöydän sisältöä. Jokainen käyttäjä voi hallita omaa työpöytäänsä.",
23
+ "RemoveDashboard": "Poista työpöytä",
24
+ "RemoveDashboardConfirm": "Haluatko varmasti poistaa työpöydän \"%s\"?",
25
+ "RemoveDefaultDashboardNotPossible": "Oletustyöpöytää ei voi poistaa",
26
+ "RenameDashboard": "Nimeä työpöytä uudelleen",
27
+ "ResetDashboard": "Palauta työpöytä oletusasetuksiin",
28
+ "ResetDashboardConfirm": "Haluatko varmasti palauttaa työpöydän asettelun takaisin oletusasetuksiin?",
29
+ "SelectDashboardLayout": "Valitse uusi työpöydän asettelu",
30
+ "SelectWidget": "Valitse työpöydälle lisättävä vimpain",
31
+ "SetAsDefaultWidgets": "Aseta oletusvalikoimaksi",
32
+ "SetAsDefaultWidgetsConfirm": "Haluatko varmasti tallentaa nykyisen työpöydän oletusasetukseksi?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Tätä työpöytää käytetään kun kuka tahansa käyttäjistä luo uuden työpöydän tai kun ominaisuutta \"%s\" käytetään.",
34
+ "TopLinkTooltip": "Näytä verkkoanalyysiraportit %s:lle.",
35
+ "TopMenuTitle": "Analytiikka",
36
+ "WidgetNotFound": "Vimpainta ei löydy",
37
+ "WidgetPreview": "Vimpaimen esikatselu"
38
+ }
39
+ }
plugins/Dashboard/lang/fr.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Ajouter un gadget",
4
+ "AddPreviewedWidget": "Ajouter le widget visualisé au tableau de bord",
5
+ "ChangeDashboardLayout": "Modifier la mise en page du tableau de bord",
6
+ "CopyDashboardToUser": "Copier le tableau de bord vers l'utilisateur",
7
+ "CreateNewDashboard": "Créer un nouveau tableau de bord",
8
+ "Dashboard": "Tableau de bord",
9
+ "DashboardCategoryHelp": "Ceci est une page de tableau de bord. Les tableaux de bord sont une collection de gadgets Matomo que vous agencez vous-même en fonction de vos besoins. Combinez et disposez les widgets de Matomo pour obtenir les données dont %1$svous%2$s avez besoin en un coup d'œil.",
10
+ "DashboardCopied": "Tableau de bord actuel copié avec succès vers l'utilisateur sélectionné.",
11
+ "DashboardEmptyNotification": "Votre tableau de bord ne contient aucun gadget. Commencez par ajouter quelques gadgets ou réinitialisez le tableau de bord à la sélection de gadgets par défaut.",
12
+ "DashboardName": "Nom du tableau de bord :",
13
+ "DashboardOf": "Tableau de bord de %s",
14
+ "DefaultDashboard": "Tableau de bord par défaut - Utilisant la sélection de gadgets par défaut et la disposition des colonnes",
15
+ "DeleteWidgetConfirm": "Êtes-vous sûr(e) de vouloir supprimer ce widget du tableau de bord ?",
16
+ "EmptyDashboard": "Tableau de bord vide - Sélectionnez vos gadgets favoris",
17
+ "ExportThisDashboard": "Exporter le tableau de bord",
18
+ "LoadingWidget": "Chargement du widget, patientez svp…",
19
+ "ManageDashboard": "Gérer le tableau de bord",
20
+ "Maximise": "Maximiser",
21
+ "Minimise": "Minimiser",
22
+ "NotUndo": "Vous ne pourrez pas annuler cette action.",
23
+ "PluginDescription": "Votre tableau de bord, personnalisez le en ajoutant des widgets, en les déplaçant et en modifiant la disposition des colonnes. Chaque utilisateur possède son propre tableau de bord.",
24
+ "RemoveDashboard": "Supprimer le tableau de bord",
25
+ "RemoveDashboardConfirm": "Êtes-vous sûr(e) de vouloir supprimer le tableau de bord \"%s\" ?",
26
+ "RemoveDefaultDashboardNotPossible": "Le tableau de bord par défaut ne peut pas être supprimé",
27
+ "RenameDashboard": "Renommer le tableau de bord",
28
+ "ResetDashboard": "Restaurer le tableau de bord",
29
+ "ResetDashboardConfirm": "Voulez-vous vraiment restaurer votre tableau de bord avec les widgets par défaut ?",
30
+ "SelectDashboardLayout": "Veuillez sélectionner votre nouvelle mise en page pour le tableau de bord",
31
+ "SelectWidget": "Sélectionnez le widget à ajouter au tableau de bord",
32
+ "SetAsDefaultWidgets": "Définir comme sélection de gadgets par défaut",
33
+ "SetAsDefaultWidgetsConfirm": "Êtes-vous sûr(e) de vouloir définir la sélection de gadgets actuelle et la disposition actuelle du tableau de bord comme modèle par défaut ?",
34
+ "SetAsDefaultWidgetsConfirmHelp": "Cette sélection de gadgets et cette disposition du tableau de bord seront utilisées à chaque création de tableau de bord par n'importe quel utilisateur ou quand la fonctionnalité \"%s\" est utilisée.",
35
+ "TopLinkTooltip": "Afficher les rapport de statistiques web pour %s.",
36
+ "TopMenuTitle": "Statistiques",
37
+ "WidgetNotFound": "Widget introuvable",
38
+ "WidgetPreview": "Prévisualisation du Widget"
39
+ }
40
+ }
plugins/Dashboard/lang/ga.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Cuir giuirléid leis an deais seo",
4
+ "AddPreviewedWidget": "Cliceáil chun giuirléid a chur leis an deais",
5
+ "ChangeDashboardLayout": "Athraigh leagan amach an deais",
6
+ "CopyDashboardToUser": "Cóipeáil an painéal chuig an úsáideoir",
7
+ "CreateNewDashboard": "Cruthaigh painéal nua",
8
+ "Dashboard": "Deais",
9
+ "DashboardCategoryHelp": "Is leathanach deais é seo. Is éard atá i ndeischláir ná bailiúchán de ghiuirléidí Matomo a chuireann tú féin leis chun freastal ar do shainriachtanais. Measc agus meaitseáil aon cheann de ghiuirléidí Matomo chun na sonraí %1$s* a theastaíonn uait*%2$s a fháil go sracfhéachaint.",
10
+ "DashboardCopied": "D'éirigh le cóipeáil an deais reatha chuig an úsáideoir roghnaithe.",
11
+ "DashboardEmptyNotification": "Níl aon ghiuirléid ar do Phainéal. Tosaigh trí roinnt giuirléidí a chur leis nó díreach an painéal a athshocrú go dtí an rogha réamhshocraithe giuirléidí.",
12
+ "DashboardName": "Ainm an deais:",
13
+ "DashboardOf": "Painéal %s",
14
+ "DefaultDashboard": "Deais réamhshocraithe - Ag baint úsáide as roghnú giuirléidí réamhshocraithe agus leagan amach na gcolún",
15
+ "DeleteWidgetConfirm": "An bhfuil tú cinnte gur mhaith leat an ghiuirléid seo a scriosadh ón deais?",
16
+ "EmptyDashboard": "Deais folamh - Roghnaigh na giuirléidí is fearr leat",
17
+ "ExportThisDashboard": "Easpórtáil Painéal Rialaithe",
18
+ "LoadingWidget": "Giuirléid á lódáil, fan go fóill…",
19
+ "ManageDashboard": "Bainistigh Painéal Rialaithe",
20
+ "Maximise": "Uasmhéadaigh",
21
+ "Minimise": "Íoslaghdaigh",
22
+ "NotUndo": "Ní bheidh tú in ann an oibríocht seo a chealú.",
23
+ "PluginDescription": "Do Phainéal Analytics Gréasáin. Saincheap do dheais trí ghiuirléidí nua a chur leis, tarraing agus scaoil thart iad, agus athraigh leagan amach colúin an deais. Is féidir le gach úsáideoir a dheais saincheaptha féin a bhainistiú.",
24
+ "RemoveDashboard": "Bain deais",
25
+ "RemoveDashboardConfirm": "An bhfuil tú cinnte gur mhaith leat an painéal \"%s\" a bhaint?",
26
+ "RemoveDefaultDashboardNotPossible": "Ní féidir an painéal réamhshocraithe a bhaint",
27
+ "RenameDashboard": "Athainmnigh an painéal",
28
+ "ResetDashboard": "Athshocraigh an painéal",
29
+ "ResetDashboardConfirm": "An bhfuil tú cinnte gur mian leat leagan amach do dheais a athshocrú go dtí an rogha réamhshocraithe Giuirléidí?",
30
+ "SelectDashboardLayout": "Roghnaigh do leagan amach nua deais",
31
+ "SelectWidget": "Roghnaigh an ghiuirléid le cur leis an deais",
32
+ "SetAsDefaultWidgets": "Socraigh mar rogha réamhshocraithe giuirléidí",
33
+ "SetAsDefaultWidgetsConfirm": "An bhfuil tú cinnte gur mian leat rogha na ngiuirléidí reatha agus leagan amach an deais a shocrú mar an teimpléad deais réamhshocraithe?",
34
+ "SetAsDefaultWidgetsConfirmHelp": "Úsáidfear an rogha giuirléidí seo agus leagan amach na gcolún ar an deais nuair a chruthaíonn aon úsáideoir deais nua, nó nuair a úsáidtear an ghné \"%s\".",
35
+ "TopLinkTooltip": "Féach ar thuairiscí Web Analytics le haghaidh %s.",
36
+ "TopMenuTitle": "Anailísíocht",
37
+ "WidgetNotFound": "Giuirléid gan aimsiú",
38
+ "WidgetPreview": "Réamhamharc giuirléid"
39
+ }
40
+ }
plugins/Dashboard/lang/gl.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Engadir un trebello",
4
+ "Dashboard": "Tableiro",
5
+ "DeleteWidgetConfirm": "¿Está seguro de que desexa borrar este widget desde el tablón?",
6
+ "LoadingWidget": "Cargando widget, agarde por favor…",
7
+ "Maximise": "Maximizar",
8
+ "Minimise": "Minimizar",
9
+ "NotUndo": "Non lle será posíbel desfacer esta operación.",
10
+ "SelectWidget": "Seleccione un widget para engadilo no tablón",
11
+ "WidgetNotFound": "Trebello non atopado"
12
+ }
13
+ }
plugins/Dashboard/lang/gu.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "વિજેટ ઉમેરો",
4
+ "AddPreviewedWidget": "ડેશબોર્ડમાં વિજેટ ઉમેરવા માટે ક્લિક કરો",
5
+ "ChangeDashboardLayout": "ડેશબોર્ડ લેઆઉટ બદલો",
6
+ "CopyDashboardToUser": "ડૅશબોર્ડને વપરાશકર્તા પર કૉપિ કરો",
7
+ "CreateNewDashboard": "નવું ડેશબોર્ડ બનાવો",
8
+ "Dashboard": "ડેશબોર્ડ",
9
+ "DashboardCategoryHelp": "આ ડેશબોર્ડ પેજ છે. ડેશબોર્ડ એ Matomo ના વિજેટ્સનો સંગ્રહ છે જે તમે તમારી ચોક્કસ જરૂરિયાતોને અનુરૂપ તમારી જાતને ઉમેરો છો. %1$s*તમને*%2$s ને એક નજરમાં જોઈતો ડેટા મેળવવા માટે Matomo ના કોઈપણ વિજેટ્સને મિક્સ અને મેચ કરો.",
10
+ "DashboardCopied": "વર્તમાન ડેશબોર્ડ પસંદ કરેલ વપરાશકર્તા પર સફળતાપૂર્વક કૉપિ કર્યું.",
11
+ "DashboardEmptyNotification": "તમારા ડેશબોર્ડમાં કોઈપણ વિજેટ્સ નથી. કેટલાક વિજેટ્સ ઉમેરીને પ્રારંભ કરો અથવા ફક્ત ડેશબોર્ડને ડિફોલ્ટ વિજેટ પસંદગી પર ફરીથી સેટ કરો.",
12
+ "DashboardName": "ડેશબોર્ડ નામ:",
13
+ "DashboardOf": "%s નું ડેશબોર્ડ",
14
+ "DefaultDashboard": "ડિફૉલ્ટ ડેશબોર્ડ - ડિફૉલ્ટ વિજેટ્સ પસંદગી અને કૉલમ લેઆઉટનો ઉપયોગ કરીને",
15
+ "DeleteWidgetConfirm": "શું તમે ખરેખર આ વિજેટને ડેશબોર્ડમાંથી કાઢી નાખવા માંગો છો?",
16
+ "EmptyDashboard": "ખાલી ડેશબોર્ડ - તમારા મનપસંદ વિજેટ્સ પસંદ કરો",
17
+ "LoadingWidget": "વિજેટ લોડ કરી રહ્યા છે, કૃપા કરીને રાહ જુઓ…",
18
+ "ManageDashboard": "ડેશબોર્ડ મેનેજ કરો",
19
+ "Maximise": "મહત્તમ કરો",
20
+ "Minimise": "નાનું કરો",
21
+ "NotUndo": "તમે આ ઓપરેશનને પૂર્વવત્ કરી શકશો નહીં.",
22
+ "PluginDescription": "તમારું વેબ એનાલિટિક્સ ડેશબોર્ડ. નવા વિજેટ્સ ઉમેરીને તમારા ડેશબોર્ડને કસ્ટમાઇઝ કરો, તેમને આસપાસ ખેંચો અને છોડો અને ડેશબોર્ડ કૉલમ લેઆઉટ બદલો. દરેક વપરાશકર્તા તેમના પોતાના કસ્ટમ ડેશબોર્ડનું સંચાલન કરી શકે છે.",
23
+ "RemoveDashboard": "ડેશબોર્ડ દૂર કરો",
24
+ "RemoveDashboardConfirm": "શું તમે ખરેખર ડેશબોર્ડ \"%s\" દૂર કરવા માંગો છો?",
25
+ "RemoveDefaultDashboardNotPossible": "ડિફૉલ્ટ ડેશબોર્ડ દૂર કરી શકાતું નથી",
26
+ "RenameDashboard": "ડેશબોર્ડનું નામ બદલો",
27
+ "ResetDashboard": "ડેશબોર્ડ રીસેટ કરો",
28
+ "ResetDashboardConfirm": "શું તમે ખરેખર તમારા ડેશબોર્ડ લેઆઉટને ડિફોલ્ટ વિજેટ્સ પસંદગી પર રીસેટ કરવા માંગો છો?",
29
+ "SelectDashboardLayout": "કૃપા કરીને તમારું નવું ડેશબોર્ડ લેઆઉટ પસંદ કરો",
30
+ "SelectWidget": "ડેશબોર્ડમાં ઉમેરવા માટે વિજેટ પસંદ કરો",
31
+ "SetAsDefaultWidgets": "ડિફૉલ્ટ વિજેટ્સ પસંદગી તરીકે સેટ કરો",
32
+ "SetAsDefaultWidgetsConfirm": "શું તમે ખરેખર વર્તમાન વિજેટ્સ પસંદગી અને ડેશબોર્ડ લેઆઉટને ડિફોલ્ટ ડેશબોર્ડ નમૂના તરીકે સેટ કરવા માંગો છો?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "આ વિજેટ્સ પસં���ગી અને ડેશબોર્ડ કૉલમ લેઆઉટનો ઉપયોગ જ્યારે કોઈપણ વપરાશકર્તા નવું ડેશબોર્ડ બનાવે છે, અથવા જ્યારે \"%s\" સુવિધાનો ઉપયોગ કરવામાં આવે ત્યારે કરવામાં આવશે.",
34
+ "TopLinkTooltip": "%s માટે વેબ ઍનલિટિક્સ રિપોર્ટ્સ જુઓ.",
35
+ "WidgetNotFound": "વિજેટ મળ્યું નથી",
36
+ "WidgetPreview": "વિજેટ પ્રીવ્યૂ"
37
+ }
38
+ }
plugins/Dashboard/lang/he.json ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "הוספת וידג'ט",
4
+ "AddPreviewedWidget": "הוספת היישומון המוצג לפאנל הסקירה",
5
+ "CreateNewDashboard": "יצירת לוח בקרה חדש",
6
+ "Dashboard": "פאנל סקירה",
7
+ "DashboardName": "שם לוח בקרה:",
8
+ "DeleteWidgetConfirm": "למחוק את היישומון מפאנל הסקירה? 100%%?",
9
+ "LoadingWidget": "טוען יישומון, נא להמתין…",
10
+ "ManageDashboard": "ניהול לוח בקרה",
11
+ "Maximise": "הגדלה",
12
+ "RenameDashboard": "שינוי שם לוח בקרה",
13
+ "SelectWidget": "בחירת היישומון להוספה לפאנל הסקירה",
14
+ "WidgetNotFound": "יישומון לא נמצא",
15
+ "WidgetPreview": "הצגת יישומון"
16
+ }
17
+ }
plugins/Dashboard/lang/hi.json ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "एक विजेट जोड़ें",
4
+ "AddPreviewedWidget": "डैशबोर्ड विजेट जोड़ने के लिए क्लिक करें",
5
+ "ChangeDashboardLayout": "डैशबोर्ड अभिन्यास बदलें",
6
+ "CopyDashboardToUser": "उपयोगकर्ता के लिए डैशबोर्ड कॉपी करें",
7
+ "CreateNewDashboard": "नया डैशबोर्ड बनाएँ",
8
+ "Dashboard": "डैशबोर्ड",
9
+ "DashboardCopied": "वर्तमान डैशबोर्ड सफलतापूर्वक चयनित उपयोगकर्ता के लिए नकल की.",
10
+ "DashboardEmptyNotification": "अपने डैशबोर्ड पर कोई भी विगेट्स शामिल नहीं है. कुछ विगेट्स जोड़ने से शुरू करो या बस डिफ़ॉल्ट विजेट चयन करने के लिए डैशबोर्ड रीसेट करें.",
11
+ "DashboardName": "डैशबोर्ड नाम:",
12
+ "DashboardOf": "%s से डैशबोर्ड",
13
+ "DefaultDashboard": "डिफ़ॉल्ट डैशबोर्ड - डिफ़ॉल्ट विगेट्स चयन और कॉलम लेआउट का उपयोग करना",
14
+ "DeleteWidgetConfirm": "आप सुनिश्चित कर रहे हैं आप डैशबोर्ड से इस विजेट को हटाना चाहते हैं?",
15
+ "EmptyDashboard": "खाली डैशबोर्ड - अपने पसंदीदा विगेट्स उठाओ",
16
+ "LoadingWidget": "विजेट लोड हो रहा है, कृपया प्रतीक्षा करें …",
17
+ "ManageDashboard": "डैशबोर्ड प्रबंधन",
18
+ "Maximise": "अधिकतम",
19
+ "Minimise": "कम से कम",
20
+ "NotUndo": "आप इस कार्रवाई को पूर्ववत् करने सक्षम नहीं होंगे.",
21
+ "RemoveDashboard": "डैशबोर्ड को हटाएँ",
22
+ "RemoveDashboardConfirm": "आप सुनिश्चित कर रहे हैं, आप \"%s\" डैशबोर्ड को हटाना चाहते हैं?",
23
+ "RenameDashboard": "डैशबोर्ड का नाम बदलें",
24
+ "ResetDashboard": "डैशबोर्ड पुनःआरंभ करें",
25
+ "ResetDashboardConfirm": "आप सुनिश्चित कर रहे हैं आप डिफ़ॉल्ट विजेट चयन करने के लिए अपने डैशबोर्ड अभिन्यास पुनःआरंभ करना चाहते हैं?",
26
+ "SelectDashboardLayout": "अपना नया डैशबोर्ड अभिन्यास का चयन करें",
27
+ "SelectWidget": "डैशबोर्ड में जोड़ने के लिए विजेट का चयन करें",
28
+ "SetAsDefaultWidgets": "डिफ़ॉल्ट विगेट्स चयन के रूप में सेट करें",
29
+ "SetAsDefaultWidgetsConfirm": "आप सुनिश्चित कर रहे हैं, आप डिफ़ॉल्ट डैशबोर्ड टेम्पलेट के रूप में मौजूदा विगेट्स चयन और डैशबोर्ड अभिन्यास सेट करना चाहते हैं?",
30
+ "SetAsDefaultWidgetsConfirmHelp": "इस विगेट्स चयन और डैशबोर्ड कॉलम अभिन्यास का उपयोग किया जाएगा जब कोई उपयोगकर्ता एक नया डैशबोर्ड बनाता है, या जब \"%s\" सुविधा का उपयोग करता है।",
31
+ "TopLinkTooltip": "%s के लिए वेब विश्लेषिकी रिपोर्ट देखें",
32
+ "WidgetNotFound": "विजेट नहीं मिला",
33
+ "WidgetPreview": "विजेट पूर्वावलोकन"
34
+ }
35
+ }
plugins/Dashboard/lang/hr.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Dodaj widget u nadzornu ploču",
4
+ "AddPreviewedWidget": "Klikni za dodavanje widgeta u nadzornu ploču",
5
+ "ChangeDashboardLayout": "Promijeni raspored nadzorne ploče",
6
+ "CopyDashboardToUser": "Kopiraj nadzornu ploču korisniku",
7
+ "CreateNewDashboard": "Stvori novu nadzornu ploču",
8
+ "Dashboard": "Nadzorna ploča",
9
+ "DashboardCategoryHelp": "Ovo je stranica nadzorne ploče. Nadzorne ploče su zbirka Matomovih widgeta koje ti dodaješ kako bi odgovarali tvojim specifičnim potrebama. Kombiniraj bilo koje od Matomovih widgeta kako bi se na prvi pogled prikazali podaci koje %1$s*ti*%2$s trebaš.",
10
+ "DashboardCopied": "Trenutačna nadzorna ploča je uspješno kopirana odabranom korisniku.",
11
+ "DashboardEmptyNotification": "Tvoja nadzorna ploča ne sadrži widgete. Započni dodavanjem nekoliko widgeta ili jednostavno resetiraj nadzornu ploču na zadani odabir widgeta.",
12
+ "DashboardName": "Ime nadzorne ploče:",
13
+ "DashboardOf": "Nadzorna ploča od %s",
14
+ "DefaultDashboard": "Zadana nadzorna ploča – Korištenje zadanog odabira widgeta i rasporeda stupaca",
15
+ "DeleteWidgetConfirm": "Stvarno želiš izbrisati ovaj widget iz nadzorne ploče?",
16
+ "EmptyDashboard": "Prazna nadzorna ploča – Odaberi svoje omiljene widgete",
17
+ "ExportThisDashboard": "Izvezi ovu nadzornu ploču",
18
+ "LoadingWidget": "Učitavanje widgeta, molimo pričekajte…",
19
+ "ManageDashboard": "Upravljaj ovom nadzornom pločom",
20
+ "Maximise": "Uvečaj",
21
+ "Minimise": "Smanji",
22
+ "NotUndo": "Ovu radnju nećeš moći poništiti.",
23
+ "PluginDescription": "Tvoja nadzorna ploča za web analitiku. Prilagodi svoju nadzornu ploču dodavanjem novih widgeta, povlačenjem i ispuštanjem i mijenjenjem rasporeda stupaca nadzorne ploče. Svaki korisnik može upravljati vlastitom prilagođenom nadzornom pločom.",
24
+ "RemoveDashboard": "Ukloni nadzornu ploču",
25
+ "RemoveDashboardConfirm": "Stvarno želiš ukloniti nadzornu ploču „%s”?",
26
+ "RemoveDefaultDashboardNotPossible": "Zadana nadzorna ploča se ne može ukloniti",
27
+ "RenameDashboard": "Preimenuj nadzornu ploču",
28
+ "ResetDashboard": "Resetiraj nadzornu ploču",
29
+ "ResetDashboardConfirm": "Stvarno želiš resetirati raspored nadzorne ploče na zadani odabir widgeta?",
30
+ "SelectDashboardLayout": "Odaberi novi raspored nadzorne ploče",
31
+ "SelectWidget": "Odaberi widget za dodavanje u nadzornu ploču",
32
+ "SetAsDefaultWidgets": "Postavi kao zadani odabir widgeta",
33
+ "SetAsDefaultWidgetsConfirm": "Stvarno želiš postaviti trenutačni odabir widgeta i raspored nadzorne ploče kao zadani predložak nadzorne ploče?",
34
+ "SetAsDefaultWidgetsConfirmHelp": "Ovaj odabir widgeta i raspored stupaca nadzorne ploče koristit će se kada bilo koji korisnik stvori novu nadzornu ploču ili kada se koristi funkcija „%s”.",
35
+ "TopLinkTooltip": "Prikaži izvještaje web analitike za %s.",
36
+ "WidgetNotFound": "Widget nije pronađen",
37
+ "WidgetPreview": "Predpregled widgeta"
38
+ }
39
+ }
plugins/Dashboard/lang/hu.json ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddPreviewedWidget": "Add hozzá a megtekintett modult a vezérlőpultodhoz",
4
+ "Dashboard": "Vezérlőpult",
5
+ "DeleteWidgetConfirm": "Biztosan törölni akarod ezt a modult a vezérlőpultról?",
6
+ "LoadingWidget": "Modul betöltése folyamatban. Kérjük, várj…",
7
+ "Maximise": "Maximalizál",
8
+ "Minimise": "Minimalizál",
9
+ "SelectWidget": "Válaszd ki melyik modult szeretnéd hozzáadni a vezérlőpulthoz!",
10
+ "WidgetNotFound": "A modul nem található",
11
+ "WidgetPreview": "Modul előnézete"
12
+ }
13
+ }
plugins/Dashboard/lang/hy.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {}
plugins/Dashboard/lang/id.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Tambahkan widget",
4
+ "AddPreviewedWidget": "Klik untuk menambahkan widget ke dasbor",
5
+ "ChangeDashboardLayout": "Ubah tata letak dasbor",
6
+ "CopyDashboardToUser": "Salin dasbor ke pengguna",
7
+ "CreateNewDashboard": "Buat dasbor baru",
8
+ "Dashboard": "Dasbor",
9
+ "DashboardCategoryHelp": "Ini adalah halaman dasbor. Dasbor adalah kumpulan widget Matomo yang Anda tambahkan sendiri sesuai dengan kebutuhan spesifik Anda. Campur dan cocokkan widget Matomo untuk mendapatkan data %1$s*Anda*%2$s yang diperlukan dengan sekilas.",
10
+ "DashboardCopied": "Dasbor berikut ini berhasil disalin ke pengguna terpilih.",
11
+ "DashboardEmptyNotification": "Dasbor Anda tidak berisi widget apa pun. Mulailah dengan menambahkan beberapa widget atau cukup setel ulang dasbor ke pilihan widget bawaan.",
12
+ "DashboardName": "Nama dasbor:",
13
+ "DashboardOf": "Dasbor %s",
14
+ "DefaultDashboard": "Dasbor bawaan. Menggunakan pemilihan widget dan tata letak kolom bawaan",
15
+ "DeleteWidgetConfirm": "Anda yakin ingin menghapus widget ini dari dasbor?",
16
+ "EmptyDashboard": "Dasbor kosong. Pilih widget favorit Anda",
17
+ "LoadingWidget": "Memuat widget, harap tunggu…",
18
+ "ManageDashboard": "Kelola dasbor",
19
+ "Maximise": "Maksimalkan",
20
+ "Minimise": "Minimalkan",
21
+ "NotUndo": "Anda tak dapat mengembalikan tidakan ini.",
22
+ "PluginDescription": "Dasbor Analisis Web Anda. Sesuaikan dasbor Anda dengan menambahkan widget baru, seret dan lepas, dan ubah tata letak kolom dasbor. Setiap pengguna dapat mengelola dasbor mereka sendiri.",
23
+ "RemoveDashboard": "Hapus dasbor",
24
+ "RemoveDashboardConfirm": "Yakin ingin menghapus dasbor \"%s\"?",
25
+ "RemoveDefaultDashboardNotPossible": "Dasbor bawaan tidak dapat dihapus",
26
+ "RenameDashboard": "Ganti nama dasbor",
27
+ "ResetDashboard": "Setel ulang dasbor",
28
+ "ResetDashboardConfirm": "Yakin ingin mengatur ulang tata letak dasbor ke pemilihan Widget bawaan?",
29
+ "SelectDashboardLayout": "Silakan pilih tata letak dasbor baru Anda",
30
+ "SelectWidget": "Pilih widget untuk ditambahkan di dasbor",
31
+ "SetAsDefaultWidgets": "Tetapkan sebagai pilihan widget asali",
32
+ "SetAsDefaultWidgetsConfirm": "Apakah Anda yakin ingin menyetel pemilihan widget dan tata letak dasbor saat ini sebagai templat dasbor bawaan?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Pemilihan widget dan tata letak kolom dasbor ini akan digunakan saat pengguna membuat dasbor baru atau saat fitur \"%s\" digunakan.",
34
+ "TopLinkTooltip": "Lihat laporan Analisis Web untuk %s.",
35
+ "TopMenuTitle": "Analitik",
36
+ "WidgetNotFound": "Widget tidak ditemukan",
37
+ "WidgetPreview": "Pratinjau widget"
38
+ }
39
+ }
plugins/Dashboard/lang/is.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddPreviewedWidget": "Bæta forskoðuðum aukahlut á skjáborðið",
4
+ "Dashboard": "Skjáborð",
5
+ "DeleteWidgetConfirm": "Ertu viss um að þú viljir eyða þessum aukahlut af skjáborðinu?",
6
+ "LoadingWidget": "Hleð inn aukahlut, vinsamlegast bíðið…",
7
+ "Maximise": "Hámarka",
8
+ "SelectWidget": "Veldu aukahlutinn til að bæta við skjáborðið",
9
+ "WidgetNotFound": "Aukahlutur fannst ekki",
10
+ "WidgetPreview": "Forskoðun á aukahlut"
11
+ }
12
+ }
plugins/Dashboard/lang/it.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Aggiungi widget a questa dashboard",
4
+ "AddPreviewedWidget": "Clicca per aggiungere un widget alla dashboard",
5
+ "ChangeDashboardLayout": "Cambia il layout della dashboard",
6
+ "CopyDashboardToUser": "Copia la dashboard a un utente",
7
+ "CreateNewDashboard": "Crea una nuova dasboard",
8
+ "Dashboard": "Dashboard",
9
+ "DashboardCategoryHelp": "Questa è una pagina della dashboard. Le dashboard sono una raccolta di widget di Matomo che aggiungi tu stesso per soddisfare le tue esigenze specifiche. Mescola e abbina qualsiasi widget di Matomo per ottenere i dati di cui %1$s\"tu\"%2$s hai bisogno a colpo d'occhio.",
10
+ "DashboardCopied": "La dashboard corrente è stata copiata con successo all'utente selezionato.",
11
+ "DashboardEmptyNotification": "La tua dashboard non contiene widget. Inizia con l'aggiunta di alcuni widget o semplicemente resetta il pannello alla selezione widget predefinita.",
12
+ "DashboardName": "Nome della dashboard:",
13
+ "DashboardOf": "Dashboard di %s",
14
+ "DefaultDashboard": "Dashboard predefinita - Utilizza la selezione di widget e le colonne di layout predefinite",
15
+ "DeleteWidgetConfirm": "Sei sicuro di voler eliminare il widget dalla dashboard?",
16
+ "EmptyDashboard": "Dashboard vuota - Scegli i tuoi widget preferiti",
17
+ "LoadingWidget": "Caricamento widget, attendere…",
18
+ "ManageDashboard": "Gestisci questa dashboard",
19
+ "Maximise": "Espandi",
20
+ "Minimise": "Minimizza",
21
+ "NotUndo": "Non sarà possibile annullare questa operazione.",
22
+ "PluginDescription": "La tua Dashboard delle Statistiche Web. Personalizzala aggiungendo nuovi widgets, trascinandoli e spostandoli e cambiando l'aspetto delle colonne. Ciascun utente può gestire una propria dashboard.",
23
+ "RemoveDashboard": "Rimuovi la dashboard",
24
+ "RemoveDashboardConfirm": "Sei sicuro di voler rimuovere la dashboard \"%s\"?",
25
+ "RemoveDefaultDashboardNotPossible": "La dashboard predefinita non può essere eliminata",
26
+ "RenameDashboard": "Rinomina dashboard",
27
+ "ResetDashboard": "Reimposta la dashboard",
28
+ "ResetDashboardConfirm": "Sei sicuro di voler ripristinare il layout della dashboard alla selezione di widget predefinita?",
29
+ "SelectDashboardLayout": "Si prega di selezionare il layout della nuova dashboard",
30
+ "SelectWidget": "Seleziona il widget da aggiungere nella dashboard",
31
+ "SetAsDefaultWidgets": "Imposta come selezione predefinita di widget",
32
+ "SetAsDefaultWidgetsConfirm": "Sei sicuro di voler impostare la selezione corrente di widget e il layout del pannello come modello predefinito?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Questa selezione di widget e il layout colonne saranno utilizzate quando un utente creerà una nuova dashboard o quando verrà utilizzata la funzione \"%s\".",
34
+ "TopLinkTooltip": "Visualizza report Web Analytics per %s.",
35
+ "TopMenuTitle": "Statistiche",
36
+ "WidgetNotFound": "Widget non trovato",
37
+ "WidgetPreview": "Anteprima del widget"
38
+ }
39
+ }
plugins/Dashboard/lang/ja.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "ウィジェットを追加",
4
+ "AddPreviewedWidget": "クリックしてウィジェットをダッシュボードに追加します",
5
+ "ChangeDashboardLayout": "ダッシュボードのレイアウトを変更",
6
+ "CopyDashboardToUser": "ダッシュボードをユーザーへコピーする",
7
+ "CreateNewDashboard": "新しいダッシュボードを作成する",
8
+ "Dashboard": "ダッシュボード",
9
+ "DashboardCategoryHelp": "これはダッシュボードページです。 ダッシュボードは、特定のニーズに合わせて自分で追加するMatomoのウィジェットのコレクションです。 Matomoのウィジェットを組み合わせて、必要なデータを%1$s一目で%2$s確認できます。",
10
+ "DashboardCopied": "現在のダッシュボードは選択したユーザーへコピーされました。",
11
+ "DashboardEmptyNotification": "ダッシュボードにウィジェットがありません。ダッシュボードにウィジェットを追加するか、ダッシュボードをデフォルトのウィジェットにリセットしてから始めてください。",
12
+ "DashboardName": "ダッシュボード名:",
13
+ "DashboardOf": "%s のダッシュボード",
14
+ "DefaultDashboard": "デフォルトのダッシュボード - デフォルトのウィジェットとカラムレイアウトを使用します",
15
+ "DeleteWidgetConfirm": "本当にこのウィジェットをダッシュボードから削除しますか?",
16
+ "EmptyDashboard": "空のダッシュボード - お好みのウィジェットを選択してください",
17
+ "LoadingWidget": "ウィジェットを読み込んでいます、お待ちください…",
18
+ "ManageDashboard": "ダッシュボードの管理",
19
+ "Maximise": "最大化",
20
+ "Minimise": "最小化",
21
+ "NotUndo": "この操作は取り消せません。",
22
+ "PluginDescription": "ユーザーの Web Analytics のダッシュ ボード。新しいウィジェットを追加することによって、ダッシュ ボードをカスタマイズ、ドラッグ アンドドロップしでダッシュ ボードのカラムのレイアウトを変更します。各ユーザーは、独自のカスタム ダッシュ ボードを管理できます。",
23
+ "RemoveDashboard": "ダッシュボードの削除",
24
+ "RemoveDashboardConfirm": "本当にダッシュボード \"%s\" を削除しますか?",
25
+ "RemoveDefaultDashboardNotPossible": "既定のダッシュ ボードを削除できません",
26
+ "RenameDashboard": "ダッシュボードの名前を変更する",
27
+ "ResetDashboard": "ダッシュボードのリセット",
28
+ "ResetDashboardConfirm": "ダッシュボードのレイアウトをリセットしてデフォルトのウィジェットに戻しますか?",
29
+ "SelectDashboardLayout": "新しいダッシュボードのレイアウトを選択してください",
30
+ "SelectWidget": "ダッシュボードに追加するウィジェットを選択してください",
31
+ "SetAsDefaultWidgets": "デフォルトのウィジェット選択として設定",
32
+ "SetAsDefaultWidgetsConfirm": "現在のウィジェットとダッシュボードのレイアウトをデフォルトのテンプレートとして設定しますか?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "これらのウィジェットとダッシュボードのレイアウトは、新規ダッシュボードの作成時か、あるいは %s 機能の使用時に使用されます。",
34
+ "TopLinkTooltip": "%s のウェブ解析レポートを表示します。",
35
+ "TopMenuTitle": "アナリティクス",
36
+ "WidgetNotFound": "ウィジェットが見つかりませんでした",
37
+ "WidgetPreview": "ウィジェットのプレビュー"
38
+ }
39
+ }
plugins/Dashboard/lang/ka.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddPreviewedWidget": "დაამატეთ ნანახი ვიჯეტი საინფორმაციო დაფას",
4
+ "Dashboard": "საინფორმაციო დაფა",
5
+ "DeleteWidgetConfirm": "დარწმუნებული ხართ, რომ გსურთ ვიჯეტის წაშლა ინსრუმენტთა პანელიდან?",
6
+ "LoadingWidget": "ვიჯეტი იტვირთება, გთხოვთ დაიცადოთ…",
7
+ "Maximise": "მაქსიმალურად გადიდება",
8
+ "SelectWidget": "შეარჩიეთ საინფორმაციო დაფაზე დასამატებელი ვიჯეტი",
9
+ "WidgetNotFound": "ვიჯეტი არ მოიძებნა",
10
+ "WidgetPreview": "ვიჯეტის ნახვა"
11
+ }
12
+ }
plugins/Dashboard/lang/ko.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "위젯 추가",
4
+ "AddPreviewedWidget": "대시보드에 미리보기된 위젯 추가",
5
+ "ChangeDashboardLayout": "대시보드 레이아웃 변경",
6
+ "CopyDashboardToUser": "대시보드를 사용자에게 복사",
7
+ "CreateNewDashboard": "새로운 대시보드 만들기",
8
+ "Dashboard": "대시보드",
9
+ "DashboardCategoryHelp": "이것은 대시보드 페이지입니다. 대시보드는 특정 요구 사항에 맞게 추가하는 Matomo의 위젯 모음입니다. Matomo의 위젯을 조합하여 %1$s*사용자*%2$s에게 필요한 데이터를 한 눈에 볼 수 있습니다.",
10
+ "DashboardCopied": "대시보드가 선택한 사용자에게 성공적으로 복사되었습니다.",
11
+ "DashboardEmptyNotification": "대시보드에 위젯이 하나도 없습니다. 대시 보드 위젯을 추가하거나 대시 보드를 기본 위젯으로 재설정하세요.",
12
+ "DashboardName": "대시보드 이름:",
13
+ "DashboardOf": "%s의 대시보드",
14
+ "DefaultDashboard": "기본 대시보드 - 기본 위젯으로 구성된 레이아웃을 사용합니다",
15
+ "DeleteWidgetConfirm": "대시보드에서 이 위젯을 삭제하시겠습니까?",
16
+ "EmptyDashboard": "빈 대시보드 - 원하는 위젯을 선택하세요",
17
+ "LoadingWidget": "위젯 로딩중, 잠시만 기다리세요…",
18
+ "ManageDashboard": "대시보드 관리",
19
+ "Maximise": "최대화",
20
+ "Minimise": "최소화",
21
+ "NotUndo": "이 작업은 취소할 수 없습니다.",
22
+ "PluginDescription": "당신의 사이트를 분석한 대시보드입니다. 드래그 앤 드롭으로 새로운 위젯을 추가하거나 대시보드 레이아웃을 바꾸는 기능을 통해 당신만의 대시보드를 꾸며보세요. 모든 사용자들은 자신만의 대시보드를 가질 수 있습니다.",
23
+ "RemoveDashboard": "대시보드 제거",
24
+ "RemoveDashboardConfirm": "\"%s\" 대시보드를 제거하시겠습니까?",
25
+ "RemoveDefaultDashboardNotPossible": "기본 대시보드는 제거할 수 없습니다",
26
+ "RenameDashboard": "대시보드 이름 변경",
27
+ "ResetDashboard": "대시보드 재설정",
28
+ "ResetDashboardConfirm": "대시보드의 레이아웃을 재설정하여 기본 위젯으로 복원하시겠습니까?",
29
+ "SelectDashboardLayout": "새 대시보드의 레이아웃을 선택하세요",
30
+ "SelectWidget": "대시보드에 추가할 위젯 선택",
31
+ "SetAsDefaultWidgets": "기본 위젯으로 설정",
32
+ "SetAsDefaultWidgetsConfirm": "현재 위젯과 대시보드의 레이아웃을 기본 템플릿으로 설정하시겠습니까?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "위젯과 대시보드의 레이아웃은 새로운 대시보드를 만들거나 %s 기능을 사용할 때 사용됩니다.",
34
+ "TopLinkTooltip": "%s에 대한 웹 로그 분석 보고서를 볼 수 있습니다.",
35
+ "WidgetNotFound": "위젯을 찾지 못함",
36
+ "WidgetPreview": "위젯 미리보기"
37
+ }
38
+ }
plugins/Dashboard/lang/ku.json ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "زیادکردنی ویجیت",
4
+ "AddPreviewedWidget": "بۆ زیادکردنی ویجیت بۆ داشبۆرد کرتە بکە",
5
+ "ChangeDashboardLayout": "گۆڕینی چوارچێوەی داشبۆرد",
6
+ "CopyDashboardToUser": "ڕوونووسکردنی داشبۆرد بۆ بەکارهێنەر",
7
+ "CreateNewDashboard": "دروستکردنی داشبۆردی نوێ",
8
+ "Dashboard": "داشبۆرد",
9
+ "DashboardCopied": "ئەم داشبۆردە بەسەرکەوتوویی بۆ بەکارهێنەر ڕوونووسکرا.",
10
+ "DashboardEmptyNotification": "داشبۆردەکەت هیچ ویجیتێک لەخۆ ناگرێ. بە زێدەکردنی هەندێ ویجتەوە دەست پێ بکە یان هەر داشبۆردەکە ڕێکبخەرەوە بۆ هەڵبژاردنی ویجتی بنەڕەتی.",
11
+ "DashboardName": "ناوی داشبۆرد",
12
+ "DashboardOf": "داشبۆردی %s",
13
+ "DefaultDashboard": "داشبۆردی بنەڕەت - بەکارهێنانی بنەڕەتی هەڵبژاردنەکانی ویجت و چوارچێوەی ستوونەکان",
14
+ "DeleteWidgetConfirm": "دڵنیای دەتەوێ ئەم ویجتە لە داشبۆرد بسڕیتەوە؟",
15
+ "EmptyDashboard": "داشبۆردی چۆڵ - ویجتە دڵخوازەکانت هەڵبژێرە",
16
+ "LoadingWidget": "بارگرتنی ویجت، تکایە بوەستە…",
17
+ "ManageDashboard": "بەڕێوەبەریی داشبۆرد",
18
+ "Maximise": "زۆرینەکردن",
19
+ "Minimise": "کەمینەکردن",
20
+ "NotUndo": "لەداهاتوودا ناتوانی ئەم کردارە هەڵوەشێنیتەوە.",
21
+ "RemoveDashboard": "لابردنی داشبۆرد",
22
+ "RemoveDashboardConfirm": "دڵنیای دەتەوێ داشبۆردەکە لاببەی \"%s\"؟",
23
+ "RemoveDefaultDashboardNotPossible": "داشبۆردی بنەڕەتی لاناچێ",
24
+ "RenameDashboard": "ناونانەوەی داشبۆرد",
25
+ "ResetDashboard": "ڕێکخستنەوەی داشبۆرد",
26
+ "ResetDashboardConfirm": "دڵنیای دەتەوێ چوارچێوەی داشبۆردەکەت ڕێک بخەیتەوە بۆ هەڵبژاردنە بنەڕەتەکانی ویجت؟",
27
+ "SelectDashboardLayout": "تکایە چواچێوەی نوێی داشبۆردەکەت هەڵبژێرە"
28
+ }
29
+ }
plugins/Dashboard/lang/lb.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {}
plugins/Dashboard/lang/lt.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Pridėti valdiklį",
4
+ "AddPreviewedWidget": "Spustelėkite, norėdami pridėti valdiklį į skydelį",
5
+ "ChangeDashboardLayout": "Pakeisti skydelio išdėstymą",
6
+ "CopyDashboardToUser": "Kopijuoti skydelį naudotojui",
7
+ "CreateNewDashboard": "Sukurti naują skydelį",
8
+ "Dashboard": "Skydelis",
9
+ "DashboardCopied": "Esamas skydelis sėkmingai nukopijuotas pasirinktam naudotojui.",
10
+ "DashboardEmptyNotification": "Jūsų skydelyje nėra jokių valdiklių. Pradėkite, pridėdami kelis valdiklius arba, tiesiog, atstatykite skydelį į numatytąjį valdiklių pasirinkimą.",
11
+ "DashboardName": "Skydelio pavadinimas:",
12
+ "DashboardOf": "%s skydelis",
13
+ "DefaultDashboard": "Numatytasis skydelis - Naudojamas numatytųjų valdiklių pasirinkimo ir stulpelių išdėstymas",
14
+ "DeleteWidgetConfirm": "Ar tikrai norite pašalinti šį valdiklį iš skydelio?",
15
+ "EmptyDashboard": "Tuščias skydelis - Pasirinkite savo mėgstamus valdiklius",
16
+ "LoadingWidget": "Įkeliamas valdiklis, palaukite…",
17
+ "ManageDashboard": "Tvarkyti skydelį",
18
+ "Maximise": "Išskleisti",
19
+ "Minimise": "Suskleisti",
20
+ "NotUndo": "Jūs negalėsite atšaukti šios operacijos.",
21
+ "PluginDescription": "Jūsų Saityno Analitikos Skydelis. Tinkinkite savo skydelį, pridėdami naujų valdiklių, vilkdami juos iš vienos vietos į kitą ir keisdami skydelio stulpelių išdėstymą. Kiekvienas naudotojas gali tvarkyti savo asmeninį pasirinktiną skydelį.",
22
+ "RemoveDashboard": "Šalinti skydelį",
23
+ "RemoveDashboardConfirm": "Ar tikrai norite pašalinti skydelį \"%s\"?",
24
+ "RemoveDefaultDashboardNotPossible": "Numatytasis skydelis negali būti pašalintas",
25
+ "RenameDashboard": "Pervadinti skydelį",
26
+ "ResetDashboard": "Atstatyti skydelį",
27
+ "ResetDashboardConfirm": "Ar tikrai norite atstatyti savo skydelio išdėstymą į numatytąjį valdiklių pasirinkimą?",
28
+ "SelectDashboardLayout": "Pasirinkite savo naujojo skydelio išdėstymą",
29
+ "SelectWidget": "Pasirinkite valdiklį, kurį norite pridėti į skydelį",
30
+ "SetAsDefaultWidgets": "Nustatyti kaip numatytąjį valdiklių pasirinkimą",
31
+ "SetAsDefaultWidgetsConfirm": "Ar tikrai norite nustatyti esamą valdiklių pasirinkimą ir skydelio išdėstymą kaip numatytąjį skydelio šabloną?",
32
+ "SetAsDefaultWidgetsConfirmHelp": "Šis valdiklių pasirinkimas ir skydelio stulpelių išdėstymas bus naudojami, kai bet kuris naudotojas sukurs naują skydelį arba kai bus naudojama \"%s\" ypatybė.",
33
+ "TopLinkTooltip": "Rodyti saityno analitikos ataskaitas, skirtas %s.",
34
+ "WidgetNotFound": "Valdiklis nerastas",
35
+ "WidgetPreview": "Valdiklio peržiūra"
36
+ }
37
+ }
plugins/Dashboard/lang/lv.json ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Pievienot logrīku",
4
+ "AddPreviewedWidget": "Pievienot apskatīto logdaļu panelim",
5
+ "ChangeDashboardLayout": "Izmainīt paneļa izkārtojumu",
6
+ "CopyDashboardToUser": "Kopēt paneli uz lietotāju",
7
+ "CreateNewDashboard": "Izveidot jaunu paneli",
8
+ "Dashboard": "Panelis",
9
+ "DashboardCategoryHelp": "Šī ir paneļu lapa. Paneļi ir Matomo logrīku kolekcija, ko jūs pats izveidojat, lai tā atbilstu jūsu konkrētajām vajadzībām. Apvienojiet jebkurus Matomo logrīkus, lai iegūtu %1$s*jums*%2$s nepieciešamos datus ar vienu acu uzmetienu.",
10
+ "DashboardCopied": "Panelis sekmīgi kopēts atlasītajam lietotājam.",
11
+ "DashboardEmptyNotification": "Jūsu panelī nav logrīku. Sāciet ar dažu logrīku pievienošanu vai vienkārši atiestatiet paneli uz noklusējuma logrīka atlasi.",
12
+ "DashboardName": "Paneļa vārds:",
13
+ "DashboardOf": "%s panelis",
14
+ "DefaultDashboard": "Noklusējuma panelis - ar noklusējuma logrīku izvēli un kolonnu izkārtojumu",
15
+ "DeleteWidgetConfirm": "Vai tiešām vēlaties dzēst šo logdaļu no paneļa?",
16
+ "EmptyDashboard": "Tukšs panelis - izvēlieties savus iecienītākos logrīkus",
17
+ "LoadingWidget": "Notiek logdaļas ielāde, lūdzu uzgaidiet…",
18
+ "ManageDashboard": "Pārvaldīt paneli",
19
+ "Maximise": "Izvērst",
20
+ "Minimise": "Samazināt",
21
+ "NotUndo": "Jūs nevarēsiet atgriezt šo operāciju.",
22
+ "PluginDescription": "Jūsu tīmekļa analīzes panelis. Pielāgojiet savu paneli, pievienojot jaunus logrīkus, pārvietojot tos vai mainot paneļa kolonnu izkārtojumu. Katrs lietotājs var pārvaldīt savu pielāgoto paneli.",
23
+ "RemoveDashboard": "Noņemt paneli",
24
+ "RemoveDashboardConfirm": "Vai Jūs tiešām vēlaties noņemt paneli \"%s\"?",
25
+ "RemoveDefaultDashboardNotPossible": "Noklusējuma paneli nevar noņemt",
26
+ "RenameDashboard": "Pārsaukt paneli",
27
+ "ResetDashboard": "Atiestatīt paneli",
28
+ "ResetDashboardConfirm": "Vai tiešām vēlaties atiestatīt savu paneļa izkārtojumu uz noklusējuma logrīku izvēli?",
29
+ "SelectDashboardLayout": "Lūdzu izvēlieties Jūsu jaunā paneļa izkārtojumu",
30
+ "SelectWidget": "Izvēlieties to logdaļu, kuru vēlaties pievienot panelim",
31
+ "SetAsDefaultWidgets": "Iestatīt kā noklusējuma logrīku izvēli",
32
+ "SetAsDefaultWidgetsConfirm": "Vai tiešām vēlaties iestatīt pašreizējo logrīku izvēli un paneļa izkārtojumu kā noklusējuma paneļa veidni?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Šī logrīku izvēle un paneļa kolonnu izkārtojums tiks izmantots, kad lietotājs izveidos jaunu paneli vai kad tiks pielietota \"%s\" funkcija.",
34
+ "TopLinkTooltip": "Skatīt tīmekļa analīzes ziņojumus par %s.",
35
+ "WidgetNotFound": "Logdaļa nav atrasta",
36
+ "WidgetPreview": "Logdaļas priekšstatījums"
37
+ }
38
+ }
plugins/Dashboard/lang/ms.json ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Tambah widget",
4
+ "AddPreviewedWidget": "Klik untuk menambah widget pada papan pemuka",
5
+ "ChangeDashboardLayout": "Tukar susun atur papan pemuka",
6
+ "CopyDashboardToUser": "Salin papan pemuka kepada pengguna",
7
+ "CreateNewDashboard": "Buat papan pemuka baharu",
8
+ "Dashboard": "Papan Pemuka",
9
+ "DashboardCopied": "Papan pemuka semasa berjaya disalin ke pengguna terpilih.",
10
+ "RenameDashboard": "Ubah nama papan pemuka"
11
+ }
12
+ }
plugins/Dashboard/lang/nb.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Legg til miniprogram",
4
+ "AddPreviewedWidget": "Klikk for å legge til miniprogram i oversikt",
5
+ "ChangeDashboardLayout": "Tilpass oversiktspanel",
6
+ "CopyDashboardToUser": "Kopier oversiktspanel til bruker",
7
+ "CreateNewDashboard": "Ny oversikt",
8
+ "Dashboard": "Oversikt",
9
+ "DashboardCategoryHelp": "Dette er en oversiktsside. Oversikten er en samling Matomo-miniprogrammer du kan legge til selv for å tilpasse bruken dine behov. Bland fritt for å få dataen %1$s*du*%2$s trenger.",
10
+ "DashboardCopied": "Gjeldende oversikt ble kopiert til valgt bruker.",
11
+ "DashboardEmptyNotification": "Din oversikt inneholder ikke noen miniprogrammer. Start ved å legge til noen miniprogrammer eller bare gjenopprett oversikten til å bruke de forvalgte miniprogrammene.",
12
+ "DashboardName": "Navn på oversikt:",
13
+ "DashboardOf": "Oversikt for %s",
14
+ "DefaultDashboard": "Standard oversikt – Bruker standardwidgetene og -kolonnelayout",
15
+ "DeleteWidgetConfirm": "Er du sikker på at du vil fjerne dette elementet fra din oversikt?",
16
+ "EmptyDashboard": "Tøm oversikt — Velg dine favorittminiprogrammer",
17
+ "LoadingWidget": "Laster element, vennligst vent …",
18
+ "ManageDashboard": "Administrer oversikt",
19
+ "Maximise": "Maksimer",
20
+ "Minimise": "Minimer",
21
+ "NotUndo": "Du vil ikke være i stand til å angre denne handlingen.",
22
+ "PluginDescription": "Din vevstatistikkoversikt. Tilpass din oversikt ved å legge til nye miniprogrammer, dra og slipp dem der du vil ha dem, og endre oversiktens kolonneoppsett. Hver bruker kan administrere sine egne tilpassede oversikter.",
23
+ "RemoveDashboard": "Fjern oversikt",
24
+ "RemoveDashboardConfirm": "Er du sikker på at du vil fjerne oversikten «%s»?",
25
+ "RemoveDefaultDashboardNotPossible": "Standardoversikten kan ikke slettes",
26
+ "RenameDashboard": "Gi nytt navn på oversiktspanelet",
27
+ "ResetDashboard": "Nullstill oversikt",
28
+ "ResetDashboardConfirm": "Gjennopprett oversiktsoppsettet til bruk av de forvalgte miniprogrammene?",
29
+ "SelectDashboardLayout": "Vennligst veld ny oversiktslayout",
30
+ "SelectWidget": "Velg miniprogram å legge til i oversiktspanelet",
31
+ "SetAsDefaultWidgets": "Bruk som forvalgt miniprogramsutvalg",
32
+ "SetAsDefaultWidgetsConfirm": "Sett dette miniprogramsutvalget og kolonneoppsettet som forvalgt mal?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Dette widgetutvalget og kolonnelayouten vil bli brukt når brukere lager nye oversikter, eller når funksjonen \"%s\" brukes.",
34
+ "TopLinkTooltip": "Vis webstatistikkrapporter for %s.",
35
+ "TopMenuTitle": "Analyse",
36
+ "WidgetNotFound": "Finner ikke element",
37
+ "WidgetPreview": "Forhåndsvisning av element"
38
+ }
39
+ }
plugins/Dashboard/lang/nl.json ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Voeg widget toe aan dit dashboard",
4
+ "AddPreviewedWidget": "Klik om het widget aan het dashboard toe te voegen",
5
+ "ChangeDashboardLayout": "Wijzig de dashboard lay-out",
6
+ "CopyDashboardToUser": "Dashboard naar gebruiker kopiëren",
7
+ "CreateNewDashboard": "Nieuw dashboard aanmaken",
8
+ "Dashboard": "Dashboard",
9
+ "DashboardCategoryHelp": "Dit is een dashboardpagina. Dashboards zijn een verzameling van Matomo-widgets die u zelf toevoegt volgens uw specifieke behoeften. Kies en schik alle Matomo-widgets zodat u in één oogopslag de %1$s-gegevens krijgt die *u* %2$s nodig heeft.",
10
+ "DashboardCopied": "Huidig dashboard succesvol naar geselecteerde gebruiker gekopieerd.",
11
+ "DashboardEmptyNotification": "Uw dashboard bevat geen widgets. Start met het toevoegen van nieuwe widgets of reset het dashboard naar de standaard widget selectie.",
12
+ "DashboardName": "Naam dashboard:",
13
+ "DashboardOf": "Dashboard van %s",
14
+ "DefaultDashboard": "Standaard dashboard - Gebruik de standaard widgets in een standaard lay-out",
15
+ "DeleteWidgetConfirm": "Weet u zeker dat u dit widget van het dashboard wilt verwijderen?",
16
+ "EmptyDashboard": "Maak het dashboard leeg - kies uw favoriete widgets",
17
+ "LoadingWidget": "Bezig widget te laden, even geduld aub…",
18
+ "ManageDashboard": "Beheer dit dashboard",
19
+ "Maximise": "Maximaliseren",
20
+ "Minimise": "Minimaliseren",
21
+ "NotUndo": "Je kunt deze verwijdering niet ongedaan maken.",
22
+ "PluginDescription": "Je Web Analytics Dashboard. Pas je dashboard aan door nieuwe widgets toe te voegen, versleep ze, en wijzig de dashboard kolomweergave. Elke gebruiker kan een eigen aangepaste dashboard beheren.",
23
+ "RemoveDashboard": "Dashboard verwijderen",
24
+ "RemoveDashboardConfirm": "Weet u zeker dat u het dashboard \"%s\" wilt verwijderen?",
25
+ "RemoveDefaultDashboardNotPossible": "Het standaard dashboard kan niet worden verwijderd",
26
+ "RenameDashboard": "Dashboard hernoemen",
27
+ "ResetDashboard": "Reset dashboard",
28
+ "ResetDashboardConfirm": "Wilt u echt uw dashboard lay-out terugzetten naar de standaard Widgets selectie?",
29
+ "SelectDashboardLayout": "Selecteer je nieuwe dashboard lay-out",
30
+ "SelectWidget": "Selecteer een widget om toe te voegen aan het dashboard",
31
+ "SetAsDefaultWidgets": "Stel in als standaard widgetselectie",
32
+ "SetAsDefaultWidgetsConfirm": "Weet je zeker dat je de huidige selectie van widgets en dashboard lay-out wilt toepassen als het nieuwe standaard dashboard sjabloon?",
33
+ "SetAsDefaultWidgetsConfirmHelp": "Deze selectie van widgets en dashboard lay-out zal gebruikt worden om nieuwe dashboards te maken voor nieuwe gebruikers, of wanneer de \"%s\" functie gebruikt is.",
34
+ "TopLinkTooltip": "Bekijk web analyse rapporten voor %s.",
35
+ "TopMenuTitle": "Analytics",
36
+ "WidgetNotFound": "Widget niet gevonden",
37
+ "WidgetPreview": "Widget voorbeeld"
38
+ }
39
+ }
plugins/Dashboard/lang/nn.json ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Legg til småprogram",
4
+ "AddPreviewedWidget": "Klikk for å leggja småprogram til styringspanelet",
5
+ "ChangeDashboardLayout": "Endre oppsett på styringspanelet",
6
+ "CreateNewDashboard": "Opprett nytt styringspanel",
7
+ "Dashboard": "Styringspanel",
8
+ "DashboardEmptyNotification": "Styringspanelet ditt inneheld ingen småprogram. Start med å leggja til nokre småprogram, eller nullstill panelet til standardutvalet.",
9
+ "DashboardName": "Namn på styringspanel:",
10
+ "DashboardOf": "Styringspanelet til %s",
11
+ "DefaultDashboard": "Standard styringspanel - Bruker standard småprogramutval og kolonneutforming",
12
+ "DeleteWidgetConfirm": "Er du sikker på at du vil fjerna dette småprogrammet frå styringspanelet ditt?",
13
+ "EmptyDashboard": "Tomt styringspanel - Vel dine favorittsmåprogram",
14
+ "LoadingWidget": "Lastar småprogram, vent…",
15
+ "ManageDashboard": "Handsam styringspanel",
16
+ "Maximise": "Maksimer",
17
+ "Minimise": "Minimer",
18
+ "NotUndo": "Du kan ikkje angra denne handlinga.",
19
+ "RemoveDashboard": "Fjern styringspanel",
20
+ "RemoveDashboardConfirm": "Er du sikker på at du vil fjerna styringspanelet \"%s\"?",
21
+ "RenameDashboard": "Lag nytt namn på styringspanel",
22
+ "ResetDashboard": "Nullstill styringspanelet",
23
+ "ResetDashboardConfirm": "Vil du verkeleg nullstilla styringspanelet ditt?",
24
+ "SelectDashboardLayout": "Vel ditt nye oppsett av styringspanelet",
25
+ "SelectWidget": "Vel det småprogrammet du vil legga til styringspanelet",
26
+ "SetAsDefaultWidgets": "Sett som standard småprogramutval",
27
+ "SetAsDefaultWidgetsConfirm": "Er du sikker på at du vil setja dette utvalet av småprogram og utforming som standardmal for styringspanel?",
28
+ "SetAsDefaultWidgetsConfirmHelp": "Dette utvalet av småprogram og kolonneutforminga vil bli brukt når ein brukar opprettar eit nytt styringspanel, eller når \"%s\"-funksjonen er brukt.",
29
+ "WidgetNotFound": "Fann ikkje småprogrammet",
30
+ "WidgetPreview": "Småprogramvisning"
31
+ }
32
+ }
plugins/Dashboard/lang/pl.json ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "Dashboard": {
3
+ "AddAWidget": "Dodaj widget do tego pulpitu",
4
+ "AddPreviewedWidget": "Kliknij, aby dodać widżet do pulpitu",
5
+ "ChangeDashboardLayout": "Zmień układ pulpitu",
6
+ "CopyDashboardToUser": "Kopiuj pulpit do użytkownika",
7
+ "CreateNewDashboard": "Utwórz nowy pulpit",
8
+ "Dashboard": "Pulpit",
9
+ "DashboardCategoryHelp": "Strona pulpitu. Pulpity są kolekcją widżetów Matomo, które możesz samodzielnie dodawać, w zależności od potrzeb. Miksuj i dobieraj widżety Matomo, żeby mieć dane, których %1$s\"Ty\"%2$s potrzebujesz, pod ręką.",
10
+ "DashboardCopied": "Bieżący pulpit został pomyślnie skopiowany do wybranego użytkownika.",
11
+ "DashboardEmptyNotification": "Twój pulpit nie zawiera żadnych widżetów. Rozpocznij pracę od dodania kilku widżetów, lub po prostu zresetuj pulpit, aby przywrócić domyślny zestaw widżetów.",
12
+ "DashboardName": "Nazwa pulpitu:",
13
+ "DashboardOf": "Pulpit %s",
14
+ "DefaultDashboard": "Domyślny pulpit - Używa domyślnego zestawu widżetów i układu kolumn",
15
+ "DeleteWidgetConfirm": "Czy jesteś pewien, że chcesz usunąć ten widżet z pulpitu?",
16
+ "EmptyDashboard": "Pusty pulpit - wybierz swoje ulubione widżety",
17
+ "ExportThisDashboard": "Eksportuj Pulpit",
18
+ "LoadingWidget": "Ładowanie widżetu, proszę czekać…",
19
+ "ManageDashboard": "Zarządzaj Pulpitem",
20
+ "Maximise": "Maksymalizuj",
21
+ "Minimise": "Minimalizuj",
22
+ "NotUndo": "Nie będziesz mógł cofnąć tej operacji.",
23
+ "PluginDescription": "Twój pulpit statystyk. Dostosuj swój pulpit poprzez dodanie nowych widżetów, przeciągaj i opuszczaj je w dowolnych miejscach, zmień także układ kolumn. Każdy użytkownik może zarządzać swoim pulpitem.",
24
+ "RemoveDashboard": "Usuń pulpit",
25
+ "RemoveDashboardConfirm": "Czy jesteś pewny, że chcesz usunąć pulpit \"%s\"?",
26
+ "RemoveDefaultDashboardNotPossible": "Nie można usunąć domyślnego pulpitu",
27
+ "RenameDashboard": "Zmień nawę pulpitu",
28
+ "ResetDashboard": "Resetuj pulpit",
29
+ "ResetDashboardConfirm": "Czy na pewno chcesz zresetować układ pulpitu?",
30
+ "SelectDashboardLayout": "Wybierz układ swojego nowego pulpitu",
31
+ "SelectWidget": "Wybierz widżet, który chcesz dodać do pulpitu",
32
+ "SetAsDefaultWidgets": "Ustaw jako domyślny zestaw widżetów",
33
+ "SetAsDefaultWidgetsConfirm": "Czy na pewno chcesz zapisać obecny układ elementów i zestaw widżetów na bieżącym panelu jako domyślny szablon pulpitu?",
34
+ "SetAsDefaultWidgetsConfirmHelp": "Ten zestaw widżetów i układ kolumn będzie używany, gdy jakikolwiek użytkownik stworzy nowy pulpit, albo gdy funkcja \"%s\" zostanie użyta.",
35
+ "TopLinkTooltip": "Podgląd raportów Web Analytics dla %s.",
36
+ "TopMenuTitle": "Statystyki",
37
+ "WidgetNotFound": "Widżet nie został znaleziony",
38
+ "WidgetPreview": "Podgląd widżetu"
39
+ }
40
+ }