@qooxdoo/framework 7.0.0-beta.5 → 7.0.0-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/Manifest.json +1 -1
  3. package/README.md +7 -3
  4. package/lib/compiler/compile-info.json +67 -67
  5. package/lib/compiler/index.js +2176 -1397
  6. package/lib/resource/qx/tool/loadsass.js +6 -4
  7. package/package.json +15 -2
  8. package/source/class/qx/io/__init__.js +5 -3
  9. package/source/class/qx/io/exception/Cancel.js +34 -0
  10. package/source/class/qx/io/exception/Exception.js +38 -0
  11. package/source/class/qx/io/exception/Protocol.js +26 -0
  12. package/source/class/qx/io/exception/Transport.js +39 -0
  13. package/source/class/qx/io/exception/__init__.js +4 -0
  14. package/source/class/qx/io/graphql/Client.js +112 -0
  15. package/source/class/qx/io/graphql/__init__.js +9 -0
  16. package/source/class/qx/io/graphql/protocol/Message.js +65 -0
  17. package/source/class/qx/io/graphql/protocol/Request.js +95 -0
  18. package/source/class/qx/io/graphql/protocol/Response.js +61 -0
  19. package/source/class/qx/io/graphql/protocol/__init__.js +6 -0
  20. package/source/class/qx/io/jsonrpc/Client.js +323 -0
  21. package/source/class/qx/io/jsonrpc/__init__.js +15 -0
  22. package/source/class/qx/io/jsonrpc/protocol/Batch.js +97 -0
  23. package/source/class/qx/io/jsonrpc/protocol/Error.js +63 -0
  24. package/source/class/qx/io/jsonrpc/protocol/Message.js +48 -0
  25. package/source/class/qx/io/jsonrpc/protocol/Notification.js +45 -0
  26. package/source/class/qx/io/jsonrpc/protocol/Parser.js +81 -0
  27. package/source/class/qx/io/jsonrpc/protocol/Request.js +93 -0
  28. package/source/class/qx/io/jsonrpc/protocol/Result.js +48 -0
  29. package/source/class/qx/io/jsonrpc/protocol/__init__.js +5 -0
  30. package/source/class/qx/io/request/authentication/Bearer.js +52 -0
  31. package/source/class/qx/io/transport/AbstractClient.js +100 -0
  32. package/source/class/qx/io/transport/AbstractTransport.js +41 -0
  33. package/source/class/qx/io/transport/Fetch.js +95 -0
  34. package/source/class/qx/io/transport/ITransport.js +40 -0
  35. package/source/class/qx/io/transport/PostMessage.js +55 -0
  36. package/source/class/qx/io/transport/Websocket.js +97 -0
  37. package/source/class/qx/io/transport/Xhr.js +139 -0
  38. package/source/class/qx/io/transport/__init__.js +18 -0
  39. package/source/class/qx/test/io/MAssert.js +46 -0
  40. package/source/class/qx/test/io/graphql/Client.js +169 -0
  41. package/source/class/qx/test/io/graphql/ClientFetch.js +34 -0
  42. package/source/class/qx/test/io/graphql/Request.js +42 -0
  43. package/source/class/qx/test/io/jsonrpc/Client.js +267 -0
  44. package/source/class/qx/test/io/jsonrpc/Protocol.js +80 -0
  45. package/source/class/qx/test/io/transport/PostMessage.js +56 -0
  46. package/source/class/qx/test/io/transport/Websocket.js +63 -0
  47. package/source/class/qx/test/ui/embed/Iframe.js +1 -1
  48. package/source/class/qx/test/util/DateFormat.js +45 -6
  49. package/source/class/qx/tool/cli/commands/Compile.js +3 -3
  50. package/source/class/qx/tool/cli/commands/package/Publish.js +14 -0
  51. package/source/class/qx/tool/compiler/makers/AppMaker.js +2 -1
  52. package/source/class/qx/tool/compiler/targets/Target.js +2 -1
  53. package/source/class/qx/tool/compiler/targets/meta/PolyfillJs.js +11 -3
  54. package/source/class/qx/ui/form/ComboBox.js +8 -3
  55. package/source/class/qx/ui/form/MenuButton.js +8 -4
  56. package/source/class/qx/ui/form/SelectBox.js +8 -3
  57. package/source/class/qx/ui/menu/AbstractButton.js +12 -8
  58. package/source/class/qx/ui/menu/Menu.js +18 -8
  59. package/source/class/qx/ui/table/pane/Model.js +10 -4
  60. package/source/class/qx/util/format/DateFormat.js +44 -17
  61. package/source/resource/qx/tool/loadsass.js +6 -4
  62. package/source/translation/hr.po +297 -0
@@ -115,7 +115,6 @@ qx.Class.define("qx.ui.form.MenuButton",
115
115
  old.resetOpener();
116
116
  }
117
117
 
118
- const contentEl = this.getContentElement();
119
118
  if (value)
120
119
  {
121
120
  value.addListener("changeVisibility", this._onMenuChange, this);
@@ -123,13 +122,18 @@ qx.Class.define("qx.ui.form.MenuButton",
123
122
 
124
123
  value.removeState("submenu");
125
124
  value.removeState("contextmenu");
126
-
127
- // ARIA attrs
125
+ }
126
+
127
+ // ARIA attrs
128
+ const contentEl = this.getContentElement();
129
+ if (!contentEl) {
130
+ return;
131
+ }
132
+ if (value) {
128
133
  contentEl.setAttribute("aria-haspopup", "menu");
129
134
  contentEl.setAttribute("aria-expanded", value.isVisible());
130
135
  contentEl.setAttribute("aria-controls", value.getContentElement().getAttribute("id"));
131
136
  } else {
132
- // ARIA attrs
133
137
  contentEl.removeAttribute("aria-haspopup");
134
138
  contentEl.removeAttribute("aria-expanded");
135
139
  contentEl.removeAttribute("aria-controls");
@@ -430,10 +430,15 @@ qx.Class.define("qx.ui.form.SelectBox",
430
430
  }
431
431
 
432
432
  // Set aria-activedescendant
433
- if (current && current[0]) {
434
- this.getContentElement().setAttribute("aria-activedescendant", current[0].getContentElement().getAttribute("id"));
433
+ const contentEl = this.getContentElement();
434
+ if (!contentEl) {
435
+ return;
436
+ }
437
+ const currentContentEl = current && current[0] ? current[0].getContentElement() : null;
438
+ if (currentContentEl) {
439
+ contentEl.setAttribute("aria-activedescendant", currentContentEl.getAttribute("id"));
435
440
  } else {
436
- this.getContentElement().removeAttribute("aria-activedescendant");
441
+ contentEl.removeAttribute("aria-activedescendant");
437
442
  }
438
443
  },
439
444
 
@@ -340,7 +340,6 @@ qx.Class.define("qx.ui.menu.AbstractButton",
340
340
  old.removeState("submenu");
341
341
  }
342
342
 
343
- const contentEl = this.getContentElement();
344
343
  if (value)
345
344
  {
346
345
  this._showChildControl("arrow");
@@ -348,17 +347,22 @@ qx.Class.define("qx.ui.menu.AbstractButton",
348
347
  value.addListener("changeVisibility", this._onMenuChange, this);
349
348
  value.setOpener(this);
350
349
  value.addState("submenu");
351
-
352
- // ARIA attrs
353
- contentEl.setAttribute("aria-haspopup", "menu");
354
- contentEl.setAttribute("aria-expanded", value.isVisible());
355
- contentEl.setAttribute("aria-controls", value.getContentElement().getAttribute("id"));
356
350
  }
357
351
  else
358
352
  {
359
353
  this._excludeChildControl("arrow");
360
-
361
- // ARIA attrs
354
+ }
355
+
356
+ // ARIA attrs
357
+ const contentEl = this.getContentElement();
358
+ if (!contentEl) {
359
+ return;
360
+ }
361
+ if (value) {
362
+ contentEl.setAttribute("aria-haspopup", "menu");
363
+ contentEl.setAttribute("aria-expanded", value.isVisible());
364
+ contentEl.setAttribute("aria-controls", value.getContentElement().getAttribute("id"));
365
+ } else {
362
366
  contentEl.removeAttribute("aria-haspopup");
363
367
  contentEl.removeAttribute("aria-expanded");
364
368
  contentEl.removeAttribute("aria-controls");
@@ -493,14 +493,19 @@ qx.Class.define("qx.ui.menu.Menu",
493
493
  if (old) {
494
494
  old.removeState("selected");
495
495
  }
496
-
497
- const opener = this.__getRootOpener();
498
- const contentEl = opener ? opener.getContentElement() : this.getContentElement();
499
496
  if (value) {
500
497
  value.addState("selected");
498
+ }
501
499
 
502
- // ARIA attrs
503
- contentEl.setAttribute("aria-activedescendant", value.getContentElement().getAttribute("id"));
500
+ // ARIA attrs
501
+ const opener = this.__getRootOpener();
502
+ const contentEl = opener ? opener.getContentElement() : this.getContentElement();
503
+ if (!contentEl) {
504
+ return;
505
+ }
506
+ const valueContentEl = value ? value.getContentElement() : null;
507
+ if (valueContentEl) {
508
+ contentEl.setAttribute("aria-activedescendant", valueContentEl.getAttribute("id"));
504
509
  } else {
505
510
  contentEl.removeAttribute("aria-activedescendant");
506
511
  }
@@ -523,10 +528,15 @@ qx.Class.define("qx.ui.menu.Menu",
523
528
  _applyOpener : function(value, old)
524
529
  {
525
530
  // ARIA attrs
526
- if (value) {
527
- this.getContentElement().setAttribute("aria-labelledby", value);
531
+ const contentEl = this.getContentElement();
532
+ if (!contentEl) {
533
+ return;
534
+ }
535
+ if (value && value.getContentElement()) {
536
+ contentEl.setAttribute("aria-labelledby", "");
537
+ this.addAriaLabelledBy(value);
528
538
  } else {
529
- this.getContentElement().removeAttribute("aria-labelledby");
539
+ contentEl.removeAttribute("aria-labelledby");
530
540
  }
531
541
  },
532
542
 
@@ -44,6 +44,10 @@ qx.Class.define("qx.ui.table.pane.Model",
44
44
  this.base(arguments);
45
45
 
46
46
  this.setTableColumnModel(tableColumnModel);
47
+
48
+ this.__defferedEventDispatcher = new qx.util.DeferredCall(function() {
49
+ this.fireEvent(qx.ui.table.pane.Model.EVENT_TYPE_MODEL_CHANGED);
50
+ }, this);
47
51
  },
48
52
 
49
53
 
@@ -122,20 +126,21 @@ qx.Class.define("qx.ui.table.pane.Model",
122
126
  {
123
127
  __columnCount : null,
124
128
  __tableColumnModel : null,
129
+ __defferedEventDispatcher : null,
125
130
 
126
131
 
127
132
  // property modifier
128
133
  _applyFirstColumnX : function(value, old)
129
134
  {
130
135
  this.__columnCount = null;
131
- this.fireEvent(qx.ui.table.pane.Model.EVENT_TYPE_MODEL_CHANGED);
136
+ this.__defferedEventDispatcher.schedule();
132
137
  },
133
138
 
134
139
  // property modifier
135
140
  _applyMaxColumnCount : function(value, old)
136
141
  {
137
142
  this.__columnCount = null;
138
- this.fireEvent(qx.ui.table.pane.Model.EVENT_TYPE_MODEL_CHANGED);
143
+ this.__defferedEventDispatcher.schedule();
139
144
  },
140
145
 
141
146
 
@@ -166,7 +171,7 @@ qx.Class.define("qx.ui.table.pane.Model",
166
171
  {
167
172
  this.__columnCount = null;
168
173
 
169
- this.fireEvent(qx.ui.table.pane.Model.EVENT_TYPE_MODEL_CHANGED);
174
+ this.__defferedEventDispatcher.schedule();
170
175
  },
171
176
 
172
177
 
@@ -177,7 +182,7 @@ qx.Class.define("qx.ui.table.pane.Model",
177
182
  */
178
183
  _onHeaderCellRendererChanged : function(evt)
179
184
  {
180
- this.fireEvent(qx.ui.table.pane.Model.EVENT_TYPE_MODEL_CHANGED);
185
+ this.__defferedEventDispatcher.schedule();
181
186
  },
182
187
 
183
188
 
@@ -305,5 +310,6 @@ qx.Class.define("qx.ui.table.pane.Model",
305
310
  this.__tableColumnModel.removeListener("headerCellRendererChanged", this._onHeaderCellRendererChanged, this);
306
311
  }
307
312
  this.__tableColumnModel = null;
313
+ this._disposeObjects("__defferedEventDispatcher");
308
314
  }
309
315
  });
@@ -64,7 +64,7 @@
64
64
  * single-quoted.
65
65
  *
66
66
  * The same format patterns will be used for both parsing and output formatting.
67
- *
67
+ *
68
68
  * NOTE: Instances of this class must be disposed of after use
69
69
  *
70
70
  */
@@ -181,6 +181,7 @@ qx.Class.define("qx.util.format.DateFormat",
181
181
  isoDate : "yyyy-MM-dd",
182
182
  isoTime : "HH:mm:ss",
183
183
  isoDateTime : "yyyy-MM-dd'T'HH:mm:ss",
184
+ isoDateTimeTz : "yyyy-MM-dd'T'HH:mm:ssZ",
184
185
  isoUtcDateTime : "yyyy-MM-dd'T'HH:mm:ss'Z'"
185
186
  },
186
187
 
@@ -406,14 +407,14 @@ qx.Class.define("qx.util.format.DateFormat",
406
407
  }
407
408
  this.__locale = value === null ? this.__initialLocale : value;
408
409
  },
409
-
410
+
410
411
  /**
411
412
  * Resets the Locale
412
413
  */
413
414
  resetLocale : function() {
414
415
  this.setLocale(null);
415
416
  },
416
-
417
+
417
418
  /**
418
419
  * Returns the locale
419
420
  */
@@ -427,7 +428,7 @@ qx.Class.define("qx.util.format.DateFormat",
427
428
 
428
429
  /**
429
430
  * Returns the original format string
430
- *
431
+ *
431
432
  * @return {String}
432
433
  */
433
434
  getFormatString() {
@@ -761,7 +762,8 @@ qx.Class.define("qx.util.format.DateFormat",
761
762
  weekOfYear : 1,
762
763
  min : 0,
763
764
  sec : 0,
764
- ms : 0
765
+ ms : 0,
766
+ tzOffsetMins: null
765
767
  };
766
768
 
767
769
  var currGroup = 1;
@@ -825,14 +827,21 @@ qx.Class.define("qx.util.format.DateFormat",
825
827
  dateValues.year = dateValues.year * dateValues.era;
826
828
  }
827
829
 
828
- var date = new Date(dateValues.year, dateValues.month, dateValues.day, (dateValues.ispm) ? (dateValues.hour + 12) : dateValues.hour, dateValues.min, dateValues.sec, dateValues.ms);
829
-
830
- if(this.__UTC) {
831
- date = new Date(date.getUTCFullYear(),date.getUTCMonth(),date.getUTCDate(),date.getUTCHours(),date.getUTCMinutes(),date.getUTCSeconds(),date.getUTCMilliseconds());
832
- }
833
-
834
- if (dateValues.month != date.getMonth() || dateValues.year != date.getFullYear()) {
835
- throw new Error("Error parsing date '" + dateStr + "': the value for day or month is too large");
830
+ var date;
831
+ if (this.__UTC || dateValues.tzOffsetMins !== null) {
832
+ var utcMs = Date.UTC(dateValues.year, dateValues.month, dateValues.day, (dateValues.ispm) ? (dateValues.hour + 12) : dateValues.hour, dateValues.min, dateValues.sec, dateValues.ms);
833
+ if (dateValues.tzOffsetMins !== 0) {
834
+ utcMs += (dateValues.tzOffsetMins * 60000);
835
+ }
836
+ date = new Date(utcMs);
837
+ if (this.__UTC && (dateValues.month !== date.getUTCMonth() || dateValues.year !== date.getUTCFullYear())) {
838
+ throw new Error("Error parsing date '" + dateStr + "': the value for day or month is too large");
839
+ }
840
+ } else {
841
+ date = new Date(dateValues.year, dateValues.month, dateValues.day, (dateValues.ispm) ? (dateValues.hour + 12) : dateValues.hour, dateValues.min, dateValues.sec, dateValues.ms);
842
+ if (dateValues.month !== date.getMonth() || dateValues.year !== date.getFullYear()) {
843
+ throw new Error("Error parsing date '" + dateStr + "': the value for day or month is too large");
844
+ }
836
845
  }
837
846
 
838
847
  return date;
@@ -1207,10 +1216,28 @@ qx.Class.define("qx.util.format.DateFormat",
1207
1216
  dateValues.hour = parseInt(value, 10) % 12;
1208
1217
  };
1209
1218
 
1210
- var ignoreManipulator = function(dateValues, value) {
1211
- return;
1219
+ var timezoneManipulator = function(dateValues, value) {
1220
+ var regEx = new RegExp("([+-]?)(\\d\\d)(?::?(\\d\\d))?$");
1221
+ var tzResults = regEx.exec(value);
1222
+ var offsetHours = parseInt(tzResults[2], 10);
1223
+ var offsetMins = parseInt(tzResults[3], 10);
1224
+ // basic check, hours range is -12 to +14 https://en.wikipedia.org/wiki/Category:UTC_offsets
1225
+ if (offsetHours > 14) {
1226
+ throw new Error("Invalid hours in time zone offset.");
1227
+ }
1228
+ if (offsetMins > 59) {
1229
+ throw new Error("Invalid minutes in time zone offset.");
1230
+ }
1231
+ dateValues.tzOffsetMins = (offsetHours * 60) + offsetMins;
1232
+ if (tzResults[1] === "-") {
1233
+ dateValues.tzOffsetMins = -dateValues.tzOffsetMins;
1234
+ }
1212
1235
  };
1213
1236
 
1237
+ // var ignoreManipulator = function(dateValues, value) {
1238
+ // return;
1239
+ // };
1240
+
1214
1241
  var narrowEraNames = ['A', 'B'];
1215
1242
  var narrowEraNameManipulator = function(dateValues, value) {
1216
1243
  dateValues.era = value == 'A' ? 1 : -1;
@@ -1755,14 +1782,14 @@ qx.Class.define("qx.util.format.DateFormat",
1755
1782
  {
1756
1783
  pattern : "Z",
1757
1784
  regex : "([\\+\\-]\\d\\d\\d\\d)",
1758
- manipulator : ignoreManipulator
1785
+ manipulator : timezoneManipulator
1759
1786
  });
1760
1787
 
1761
1788
  rules.push(
1762
1789
  {
1763
1790
  pattern : "z",
1764
1791
  regex : "(GMT[\\+\\-]\\d\\d:\\d\\d)",
1765
- manipulator : ignoreManipulator
1792
+ manipulator : timezoneManipulator
1766
1793
  });
1767
1794
  }
1768
1795
  }
@@ -1,7 +1,8 @@
1
- global.require = require;
2
- global.__filename__ = __filename;
3
- /* global loadSass */
4
- global.loadSass = new Function (
1
+ if ((typeof global !== 'undefined')) {
2
+ global.require = require;
3
+ global.__filename__ = __filename;
4
+ /* global loadSass */
5
+ global.loadSass = new Function (
5
6
  `
6
7
  // trick out sass
7
8
  process.versions.electron = "0.0.0";
@@ -11,3 +12,4 @@ global.loadSass = new Function (
11
12
  delete process.versions.electron;
12
13
  return sass;
13
14
  `);
15
+ }
@@ -0,0 +1,297 @@
1
+ # Croatian
2
+ #
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: qooxdoo framework\n"
6
+ "Report-Msgid-Bugs-To: \n"
7
+ "POT-Creation-Date: 2008-05-19 10:11+0200\n"
8
+ "PO-Revision-Date: 2021-12-28 14:40+0100\n"
9
+ "Last-Translator: Milo Ivir <mail@milotype.de>\n"
10
+ "Language-Team: Croatian <https://hosted.weblate.org/projects/qooxdoo/"
11
+ "framework/hr/>\n"
12
+ "Language: hr\n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=UTF-8\n"
15
+ "Content-Transfer-Encoding: 8bit\n"
16
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
17
+ "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n"
18
+ "X-Generator: Poedit 3.0\n"
19
+
20
+ msgid "%1 does not fit %2."
21
+ msgstr "%1 ne poklapa se s %2."
22
+
23
+ msgid "%1 is not a color! %2"
24
+ msgstr "%1 nije boja! %2"
25
+
26
+ msgid "%1 is not a number."
27
+ msgstr "%1 nije broj."
28
+
29
+ msgid "%1 is not a string."
30
+ msgstr "%1 nije znakovni niz."
31
+
32
+ msgid "%1 is not an url."
33
+ msgstr "%1 nije url."
34
+
35
+ msgid "%1 is not in %2"
36
+ msgstr "%1 nije u %2"
37
+
38
+ msgid "%1 is not in the range from [%2, %3]."
39
+ msgstr "%1 nije u rasponu od [%2, %3]."
40
+
41
+ msgid "'%1' is not an email address."
42
+ msgstr "„%1” nije e-mail adresa."
43
+
44
+ msgid "Automatic"
45
+ msgstr "Automatski"
46
+
47
+ msgid "Basic Colors"
48
+ msgstr "Osnovne boje"
49
+
50
+ msgid "Cancel"
51
+ msgstr "Odustani"
52
+
53
+ msgid "Color Selector"
54
+ msgstr "Birač boja"
55
+
56
+ msgid "Details"
57
+ msgstr "Detalji"
58
+
59
+ msgid "HSB"
60
+ msgstr "HSB"
61
+
62
+ msgid "Hex"
63
+ msgstr "Heksadecimalne"
64
+
65
+ msgid "Last month"
66
+ msgstr "Prošli mjesec"
67
+
68
+ msgid "Last year"
69
+ msgstr "Prošla godina"
70
+
71
+ msgid "Next month"
72
+ msgstr "Sljedeći mjesec"
73
+
74
+ msgid "Next year"
75
+ msgstr "Sljedeća godina"
76
+
77
+ msgid "OK"
78
+ msgstr "U redu"
79
+
80
+ msgid "Open ColorSelector"
81
+ msgstr "Otvori birač boja"
82
+
83
+ msgid "Presets"
84
+ msgstr "Predodređene postavke"
85
+
86
+ msgid "Preview (Old/New)"
87
+ msgstr "Pregled (stari/novi)"
88
+
89
+ msgid "RGB"
90
+ msgstr "RBG"
91
+
92
+ msgid "Recent Colors"
93
+ msgstr "Nedavne boje"
94
+
95
+ msgid "Reset column widths"
96
+ msgstr "Obnovi širine stupaca"
97
+
98
+ msgid "This field is required"
99
+ msgstr "Ovo je obavezno polje"
100
+
101
+ msgid "Visual"
102
+ msgstr "Vizualni"
103
+
104
+ msgid "key_full_Alt"
105
+ msgstr "Alt"
106
+
107
+ msgid "key_full_Apps"
108
+ msgstr "Aplikacije"
109
+
110
+ msgid "key_full_Backspace"
111
+ msgstr "Backspace"
112
+
113
+ msgid "key_full_CapsLock"
114
+ msgstr "CapsLock"
115
+
116
+ msgid "key_full_Control"
117
+ msgstr "Control"
118
+
119
+ msgid "key_full_Control_Mac"
120
+ msgstr "Control_Mac"
121
+
122
+ msgid "key_full_Delete"
123
+ msgstr "Izbriši"
124
+
125
+ msgid "key_full_Down"
126
+ msgstr "Dolje"
127
+
128
+ msgid "key_full_End"
129
+ msgstr "Kraj"
130
+
131
+ msgid "key_full_Enter"
132
+ msgstr "Enter"
133
+
134
+ msgid "key_full_Escape"
135
+ msgstr "Escape"
136
+
137
+ msgid "key_full_Home"
138
+ msgstr "Početak"
139
+
140
+ msgid "key_full_Insert"
141
+ msgstr "Umetni"
142
+
143
+ msgid "key_full_Left"
144
+ msgstr "LIjevo"
145
+
146
+ msgid "key_full_Meta"
147
+ msgstr "Meta"
148
+
149
+ msgid "key_full_NumLock"
150
+ msgstr "Brojčani blok"
151
+
152
+ msgid "key_full_PageDown"
153
+ msgstr "Stranica dolje"
154
+
155
+ msgid "key_full_PageUp"
156
+ msgstr "Stranica gore"
157
+
158
+ msgid "key_full_Pause"
159
+ msgstr "Pauza"
160
+
161
+ msgid "key_full_PrintScreen"
162
+ msgstr "Ispis ekrana"
163
+
164
+ msgid "key_full_Right"
165
+ msgstr "Desno"
166
+
167
+ msgid "key_full_Scroll"
168
+ msgstr "Listanje"
169
+
170
+ msgid "key_full_Shift"
171
+ msgstr "Shift"
172
+
173
+ msgid "key_full_Space"
174
+ msgstr "Razmaknica"
175
+
176
+ msgid "key_full_Tab"
177
+ msgstr "Tabulator"
178
+
179
+ msgid "key_full_Up"
180
+ msgstr "Gore"
181
+
182
+ msgid "key_full_Win"
183
+ msgstr "Win"
184
+
185
+ msgid "key_short_Alt"
186
+ msgstr "Alt"
187
+
188
+ msgid "key_short_Apps"
189
+ msgstr "Aplikacije"
190
+
191
+ msgid "key_short_Backspace"
192
+ msgstr "Backspace"
193
+
194
+ msgid "key_short_CapsLock"
195
+ msgstr "CapsLock"
196
+
197
+ msgid "key_short_Control"
198
+ msgstr "Control"
199
+
200
+ msgid "key_short_Control_Mac"
201
+ msgstr "Control_Mac"
202
+
203
+ msgid "key_short_Delete"
204
+ msgstr "Izbriši"
205
+
206
+ msgid "key_short_Down"
207
+ msgstr "Dolje"
208
+
209
+ msgid "key_short_End"
210
+ msgstr "Kraj"
211
+
212
+ msgid "key_short_Enter"
213
+ msgstr "Enter"
214
+
215
+ msgid "key_short_Escape"
216
+ msgstr "Escape"
217
+
218
+ msgid "key_short_Home"
219
+ msgstr "Početna"
220
+
221
+ msgid "key_short_Insert"
222
+ msgstr "Umetni"
223
+
224
+ msgid "key_short_Left"
225
+ msgstr "Lijevo"
226
+
227
+ msgid "key_short_Meta"
228
+ msgstr "Meta"
229
+
230
+ msgid "key_short_NumLock"
231
+ msgstr "Brojčani blok"
232
+
233
+ msgid "key_short_PageDown"
234
+ msgstr "Stranica dolje"
235
+
236
+ msgid "key_short_PageUp"
237
+ msgstr "Stranica gore"
238
+
239
+ msgid "key_short_Pause"
240
+ msgstr "Pauza"
241
+
242
+ msgid "key_short_PrintScreen"
243
+ msgstr "Ispis ekrana"
244
+
245
+ msgid "key_short_Right"
246
+ msgstr "Desno"
247
+
248
+ msgid "key_short_Scroll"
249
+ msgstr "Listanje"
250
+
251
+ msgid "key_short_Shift"
252
+ msgstr "Shift"
253
+
254
+ msgid "key_short_Space"
255
+ msgstr "Razmaknica"
256
+
257
+ msgid "key_short_Tab"
258
+ msgstr "Tabulator"
259
+
260
+ msgid "key_short_Up"
261
+ msgstr "Gore"
262
+
263
+ msgid "key_short_Win"
264
+ msgstr "Win"
265
+
266
+ msgid "one of one row"
267
+ msgid_plural "%1 of %2 rows"
268
+ msgstr[0] "jedan od jednog retka"
269
+ msgstr[1] "%1 od %2 retka"
270
+ msgstr[2] "%1 od %2 retka"
271
+
272
+ msgid "one row"
273
+ msgid_plural "%1 rows"
274
+ msgstr[0] "%1 redak"
275
+ msgstr[1] "%1 retka"
276
+ msgstr[2] "%1 redaka"
277
+
278
+ msgid "test Hello %1!"
279
+ msgstr "test Hello %1!"
280
+
281
+ msgid "test Jonny"
282
+ msgstr "test Jonny"
283
+
284
+ msgid "test One car"
285
+ msgid_plural "test %1 cars"
286
+ msgstr[0] "test %1 auto"
287
+ msgstr[1] "test %1 auta"
288
+ msgstr[2] "test %1 auta"
289
+
290
+ msgid "test affe"
291
+ msgstr "test affe"
292
+
293
+ msgid "test one"
294
+ msgstr "test jedan"
295
+
296
+ msgid "test two"
297
+ msgstr "test dva"