Loco Translate - Version 1.4

Version Description

  • Added native MO compiler
  • Added hash generation config option
  • Added direct MO download from editor
  • Fixed some translations and added German
Download this release

Release Info

Developer timwhitlock
Plugin Icon 128x128 Loco Translate
Version 1.4
Comparing to
See all releases

Code changes from version 1.3.1 to 1.4

languages/loco-translate-de_DE.mo ADDED
Binary file
languages/loco-translate-de_DE.po ADDED
@@ -0,0 +1,483 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Loco Translate\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: Thu Jan 02 2014 17:30:57 GMT+0000 (GMT)\n"
6
+ "PO-Revision-Date: Sat Jan 04 2014 20:45:42 GMT+0000 (GMT)\n"
7
+ "Last-Translator: admin <support@localise.biz>\n"
8
+ "Language-Team: \n"
9
+ "Language: German\n"
10
+ "Plural-Forms: nplurals=2; plural=(n != 1)\n"
11
+ "MIME-Version: 1.0\n"
12
+ "Content-Type: text/plain; charset=UTF-8\n"
13
+ "Content-Transfer-Encoding: 8bit\n"
14
+ "X-Poedit-SourceCharset: UTF-8\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: ..\n"
17
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;__:1;"
18
+ "_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;_x:1,2c;"
19
+ "_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;esc_attr__:1;"
20
+ "esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;esc_html_x:1,2c;"
21
+ "comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
22
+ "X-Generator: Loco - https://localise.biz/\n"
23
+ "X-Loco-Target-Locale: de_DE"
24
+
25
+ #. Translators: Bold text label in admin error messages
26
+ #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
27
+ msgctxt "Message label"
28
+ msgid "Error"
29
+ msgstr "Fehler"
30
+
31
+ #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:6
32
+ msgctxt "Message label"
33
+ msgid "Warning"
34
+ msgstr "Warnung"
35
+
36
+ #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:5
37
+ msgctxt "Message label"
38
+ msgid "OK"
39
+ msgstr "OK"
40
+
41
+ #: ../lib/loco-admin.php:47
42
+ msgid "Settings saved"
43
+ msgstr "Einstellungen gespeichert"
44
+
45
+ #: ../lib/loco-admin.php:120
46
+ msgid "New PO file"
47
+ msgstr "Neue PO-Datei"
48
+
49
+ #: ../lib/loco-admin.php:230
50
+ msgid "You must specify a valid locale for a new PO file"
51
+ msgstr "Du musst einen gültigen Pfad für die PO-Datei angeben"
52
+
53
+ #: ../lib/loco-admin.php:252 ../lib/loco-admin.php:342
54
+ msgid "No translatable strings found"
55
+ msgstr "Keine übersetzbaren Zeichenketten gefunden"
56
+
57
+ #: ../lib/loco-admin.php:252
58
+ msgid "Cannot create a PO file."
59
+ msgstr "Erstellen der PO-Datei fehlgeschlagen."
60
+
61
+ #: ../lib/loco-admin.php:259
62
+ msgid "PO file already exists with locale %s"
63
+ msgstr "PO-Datei existiert schon unter %s"
64
+
65
+ #: ../lib/loco-admin.php:312
66
+ msgid ""
67
+ "File cannot be created automatically. Fix the file permissions or use Download "
68
+ "instead of Save"
69
+ msgstr ""
70
+ "Datei kann nicht automatisch erstellt werden. Setze die Datei-Zugriffsrechte "
71
+ "oder benutze Download anstatt Speichern"
72
+
73
+ #: ../lib/loco-admin.php:321 ../lib/loco-admin.php:330
74
+ msgid "%s file is empty"
75
+ msgstr "Datei (%s) ist leer"
76
+
77
+ #: ../lib/loco-admin.php:322 ../lib/loco-admin.php:337
78
+ msgid "Run Sync to update from source code"
79
+ msgstr "Benutze Sync, um von der Quelle zu aktualisieren"
80
+
81
+ #: ../lib/loco-admin.php:326
82
+ msgid "No strings could be extracted from source code"
83
+ msgstr "Es konnten keine Zeichenketten vom Quellcode extrahiert werden"
84
+
85
+ #: ../lib/loco-admin.php:333
86
+ msgid "Run Sync to update from %s"
87
+ msgstr "Benutze Sync, um aus %s zu aktualisieren"
88
+
89
+ #: ../lib/loco-admin.php:352
90
+ msgid "Source code has been modified, run Sync to update POT"
91
+ msgstr "Quellcode wurde geändert, benutze Sync um POT zu aktualisieren"
92
+
93
+ #: ../lib/loco-admin.php:356
94
+ msgid "POT has been modified since PO file was saved, run Sync to update"
95
+ msgstr ""
96
+ "POT wurde aktualisiert bevor die PO-Datei gespeichert wurde. Benutze Sync zum "
97
+ "Aktualisieren."
98
+
99
+ #: ../lib/loco-admin.php:429
100
+ msgid "Bad file path"
101
+ msgstr "Falscher Dateipfad"
102
+
103
+ #: ../lib/loco-admin.php:732
104
+ msgctxt "Add button"
105
+ msgid "New template"
106
+ msgstr "Neues Template"
107
+
108
+ #: ../lib/loco-admin.php:751
109
+ msgctxt "Add button"
110
+ msgid "New language"
111
+ msgstr "Neue Sprache"
112
+
113
+ #: ../lib/loco-admin.php:790
114
+ msgid "%s%% translated"
115
+ msgstr "%s%% übersetzt"
116
+
117
+ #: ../lib/loco-admin.php:790
118
+ msgid "1 string"
119
+ msgid_plural "%s strings"
120
+ msgstr[0] "1 Zeichenkette"
121
+ msgstr[1] "%s Zeichenketten"
122
+
123
+ #: ../lib/loco-admin.php:793
124
+ msgid "%s fuzzy"
125
+ msgstr "%s undeutlich"
126
+
127
+ #: ../lib/loco-admin.php:796
128
+ msgid "%s untranslated"
129
+ msgstr "%s nicht übersetzt"
130
+
131
+ #: ../lib/loco-admin.php:838
132
+ msgid "Failed to compile MO file with built-in compiler"
133
+ msgstr "Kompilieren der MO-Datei mit dem internen Kompilierer fehlgeschlagen."
134
+
135
+ #: ../lib/loco-admin.php:867
136
+ msgid "Loco, Translation Management"
137
+ msgstr "Loco, Translation Management"
138
+
139
+ #: ../lib/loco-admin.php:869
140
+ msgid "Translation"
141
+ msgstr "Übersetzung"
142
+
143
+ #: ../lib/loco-admin.php:872 ../lib/loco-admin.php:883
144
+ msgid "Manage translations"
145
+ msgstr "Übersetzungen verwalten"
146
+
147
+ #: ../lib/loco-admin.php:884 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
148
+ msgid "Settings"
149
+ msgstr "Einstellungen"
150
+
151
+ #: ../lib/loco-admin.php:908
152
+ msgid "File download failed"
153
+ msgstr "Dateidownload ist fehlgeschlagen"
154
+
155
+ #: ../lib/loco-locales.php:70
156
+ msgid "Unknown language"
157
+ msgstr "Unbekannte Sprache"
158
+
159
+ #: ../lib/loco-packages.php:240 ../lib/loco-packages.php:246
160
+ msgid "Some files not writable"
161
+ msgstr "Einige Dateien nicht schreibbar"
162
+
163
+ #: ../lib/loco-packages.php:249
164
+ msgid "Some files missing"
165
+ msgstr "Einige Dateien fehlen"
166
+
167
+ #: ../lib/loco-packages.php:255
168
+ msgid "\"%s\" folder not writable"
169
+ msgstr "Ordner \"%s\" nicht schreibbar"
170
+
171
+ #: ../lib/loco-packages.php:266
172
+ msgid "Folder not writable"
173
+ msgstr "Ordner nicht schreibbar"
174
+
175
+ #: ../lib/loco-packages.php:268
176
+ msgid "POT file not writable"
177
+ msgstr "POT-Datei nicht schreibbar"
178
+
179
+ #: ../lib/loco-packages.php:272
180
+ msgid "PO file not writable"
181
+ msgstr "PO-Datei nicht schreibbar"
182
+
183
+ #: ../lib/loco-packages.php:274
184
+ msgid "MO file not writable"
185
+ msgstr "MO-Datei nicht schreibbar"
186
+
187
+ #: ../lib/loco-packages.php:274
188
+ msgid "MO file not found"
189
+ msgstr "MO-Datei nicht gefunden"
190
+
191
+ #: ../php/loco-ajax.php:17 ../php/loco-download.php:21
192
+ msgid "User does not have permission to manage translations"
193
+ msgstr "Benutzer hat keine Rechte die Übersetzungen zu verwalten"
194
+
195
+ #: ../php/loco-download.php:68 ../php/loco-posave.php:88
196
+ msgid "Failed to compile MO file with %s, check your settings"
197
+ msgstr "Kompilieren der MO-Datei fehlgeschlagen. Bitte prüfe Deine Einstellungen"
198
+
199
+ #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
200
+ msgid "Invalid data posted to server"
201
+ msgstr "Ungültige Daten zum Server gesendet"
202
+
203
+ #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
204
+ msgid "Package not found called %s"
205
+ msgstr "Paket %s nicht gefunden"
206
+
207
+ #: ../php/loco-posave.php:37
208
+ msgid ""
209
+ "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
210
+ "it manually."
211
+ msgstr ""
212
+ "Webserver kann Ordner \"%s\" nicht in \"%s\" erstellen. Setze die Zugriffsrechte "
213
+ "oder erstelle den Ordner selbst."
214
+
215
+ #: ../php/loco-posave.php:40
216
+ msgid ""
217
+ "Web server cannot create files in the \"%s\" directory. Fix file permissions or "
218
+ "use the download function."
219
+ msgstr ""
220
+ "Webserver kann keine Dateien im Ordner \"%s\" erstellen. Setze die Datei-"
221
+ "Zugriffsrechte oder benutze Download anstatt Speichern."
222
+
223
+ #: ../php/loco-posave.php:48
224
+ msgid ""
225
+ "%s file is not writable by the web server. Fix file permissions or download and "
226
+ "copy to \"%s/%s\"."
227
+ msgstr ""
228
+ "Datei %s ist vom Webserver nicht schreibbar. Setze die Datei-Zugriffsrechte "
229
+ "oder benutze Download anstatt Speichern und speichere die Datei auf dem Server "
230
+ "unter \"%s/%s\" ab."
231
+
232
+ #: ../php/loco-posave.php:69
233
+ msgid "Cannot create MO file"
234
+ msgstr "Erstellen der MO-Datei fehlgeschlagen."
235
+
236
+ #: ../php/loco-posave.php:72
237
+ msgid "Cannot overwrite MO file"
238
+ msgstr "Überschreiben der MO-Datei fehlgeschlagen"
239
+
240
+ #: ../php/loco-posave.php:98
241
+ msgid "Failed to write MO file"
242
+ msgstr ""
243
+
244
+ #: ../php/loco-posync.php:53
245
+ msgid "No strings could be extracted from source files"
246
+ msgstr "Es konnten keine Zeichenketten aus der Quelle extrahiert werden"
247
+
248
+ #: ../pub/js/lang/dummy.php:8
249
+ msgid "Unknown error"
250
+ msgstr "Unbekannter Fehler"
251
+
252
+ #: ../pub/js/lang/dummy.php:9
253
+ msgid "PO file saved"
254
+ msgstr "PO-Datei gespeichert"
255
+
256
+ #: ../pub/js/lang/dummy.php:10
257
+ msgid "and MO file compiled"
258
+ msgstr "und MO-Datei kompiliert"
259
+
260
+ #: ../pub/js/lang/dummy.php:11
261
+ msgid "Merged from %s"
262
+ msgstr "Aus %s zusammengeführt"
263
+
264
+ #: ../pub/js/lang/dummy.php:12
265
+ msgid "Merged from source code"
266
+ msgstr "Aus Quelle zusammengeführt"
267
+
268
+ #: ../pub/js/lang/dummy.php:13
269
+ msgid "Already up to date with %s"
270
+ msgstr "Bereit auf dem aktuellen Stand mit %s"
271
+
272
+ #: ../pub/js/lang/dummy.php:14
273
+ msgid "Already up to date with source code"
274
+ msgstr "Bereit mit der Quelle auf dem aktuellen Stand"
275
+
276
+ #: ../pub/js/lang/dummy.php:15
277
+ msgid "1 new string added"
278
+ msgid_plural "%s new strings added"
279
+ msgstr[0] "1 neue Zeichenkette hinzugefügt"
280
+ msgstr[1] "%s neue Zeichenketten hinzugefügt"
281
+
282
+ #: ../pub/js/lang/dummy.php:16
283
+ msgid "1 obsolete string removed"
284
+ msgid_plural "%s obsolete strings removed"
285
+ msgstr[0] "1 veraltete Zeichenkette entfernt"
286
+ msgstr[1] "%s veraltete Zeichenketten entfernt"
287
+
288
+ #: ../pub/js/lang/dummy.php:17
289
+ msgid "Your changes will be lost if you continue without saving"
290
+ msgstr "Deine Änderungen gehen verloren, wenn du fortsetzt ohne zu Speichern"
291
+
292
+ #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
293
+ msgid "Packages"
294
+ msgstr "Pakete"
295
+
296
+ #: ../tpl/admin-fscheck.tpl.php:8
297
+ msgid "File check"
298
+ msgstr "Dateiprüfung"
299
+
300
+ #: ../tpl/admin-fscheck.tpl.php:17
301
+ msgid "File system permissions for %s"
302
+ msgstr "Dateisystem-Rechte für %s"
303
+
304
+ #: ../tpl/admin-fscheck.tpl.php:40
305
+ msgid "Back"
306
+ msgstr "Zurück"
307
+
308
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:64
309
+ msgid "Get help"
310
+ msgstr "Hilfe erhalten"
311
+
312
+ #: ../tpl/admin-list.tpl.php:11
313
+ msgctxt "Table header"
314
+ msgid "Package details"
315
+ msgstr "Paketdetails"
316
+
317
+ #: ../tpl/admin-list.tpl.php:14
318
+ msgctxt "Table header"
319
+ msgid "Translations (PO)"
320
+ msgstr "Übersetzungen (PO)"
321
+
322
+ #: ../tpl/admin-list.tpl.php:17
323
+ msgctxt "Table header"
324
+ msgid "Template (POT)"
325
+ msgstr "Template (POT)"
326
+
327
+ #: ../tpl/admin-list.tpl.php:20
328
+ msgctxt "Table header"
329
+ msgid "File permissions"
330
+ msgstr "Dateizugriffsrechte"
331
+
332
+ #: ../tpl/admin-list.tpl.php:38
333
+ msgid "1 language"
334
+ msgid_plural "%u languages"
335
+ msgstr[0] "1 Sprache"
336
+ msgstr[1] "%u Sprachen"
337
+
338
+ #: ../tpl/admin-list.tpl.php:43
339
+ msgctxt "Modified time"
340
+ msgid "Updated"
341
+ msgstr "Aktualisiert"
342
+
343
+ #: ../tpl/admin-list.tpl.php:93
344
+ msgid "OK"
345
+ msgstr "OK"
346
+
347
+ #: ../tpl/admin-nav.tpl.php:20
348
+ msgid "Powered by"
349
+ msgstr "Präsentiert von"
350
+
351
+ #: ../tpl/admin-opts.tpl.php:18
352
+ msgid "Configure Loco Translate"
353
+ msgstr "Konfiguriere Loco Translate"
354
+
355
+ #: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
356
+ msgid "Compiling MO files"
357
+ msgstr "MO-Dateien kompilieren"
358
+
359
+ #: ../tpl/admin-opts.tpl.php:36
360
+ msgid "Use built-in MO compiler."
361
+ msgstr "Benutze internen MO-Kompilierer"
362
+
363
+ #: ../tpl/admin-opts.tpl.php:42
364
+ msgid "Use external command:"
365
+ msgstr "Benutze externes Befehlsprogramm:"
366
+
367
+ #: ../tpl/admin-opts.tpl.php:47
368
+ msgid "Enter path to msgfmt on server"
369
+ msgstr "Pfad zum msgfmt-Programm"
370
+
371
+ #: ../tpl/admin-opts.tpl.php:54
372
+ msgid "Generate hash tables"
373
+ msgstr ""
374
+
375
+ #: ../tpl/admin-opts.tpl.php:63
376
+ msgid "Save settings"
377
+ msgstr "Einstellungen speichern"
378
+
379
+ #: ../tpl/admin-poedit.tpl.php:31
380
+ msgid "Template file"
381
+ msgstr "Templatedatei"
382
+
383
+ #: ../tpl/admin-poedit.tpl.php:39
384
+ msgctxt "Dropdown label"
385
+ msgid "Switch to..."
386
+ msgstr "Wechsle zu..."
387
+
388
+ #: ../tpl/admin-poedit.tpl.php:57
389
+ msgid "Updated"
390
+ msgstr "Aktualisiert"
391
+
392
+ #: ../tpl/admin-poedit.tpl.php:62
393
+ msgid "never"
394
+ msgstr "niemals"
395
+
396
+ #: ../tpl/admin-poedit.tpl.php:87
397
+ msgctxt "Editor button"
398
+ msgid "Save"
399
+ msgstr "Speichern"
400
+
401
+ #: ../tpl/admin-poedit.tpl.php:94 ../tpl/admin-poedit.tpl.php:103
402
+ msgctxt "Editor button"
403
+ msgid "Download"
404
+ msgstr "Download"
405
+
406
+ #: ../tpl/admin-poedit.tpl.php:115
407
+ msgctxt "Editor button"
408
+ msgid "Sync"
409
+ msgstr "Sync"
410
+
411
+ #: ../tpl/admin-poedit.tpl.php:120
412
+ msgctxt "Editor button"
413
+ msgid "Revert"
414
+ msgstr "zurücksetzen"
415
+
416
+ #: ../tpl/admin-poedit.tpl.php:125
417
+ msgctxt "Editor button"
418
+ msgid "Add"
419
+ msgstr "Hinzufügen"
420
+
421
+ #: ../tpl/admin-poedit.tpl.php:130
422
+ msgctxt "Editor button"
423
+ msgid "Del"
424
+ msgstr "Löschen"
425
+
426
+ #: ../tpl/admin-poedit.tpl.php:135
427
+ msgctxt "Editor button"
428
+ msgid "Fuzzy"
429
+ msgstr "Undeutlich"
430
+
431
+ #: ../tpl/admin-poedit.tpl.php:139
432
+ msgid "Filter translations"
433
+ msgstr "Übersetzungen filtern"
434
+
435
+ #: ../tpl/admin-poedit.tpl.php:143
436
+ msgctxt "Editor button"
437
+ msgid "Help"
438
+ msgstr "Hilfe"
439
+
440
+ #: ../tpl/admin-poinit.tpl.php:21
441
+ msgid "Initialize new translations in %s"
442
+ msgstr "Initialisiere neue Übersetzung in %s"
443
+
444
+ #: ../tpl/admin-poinit.tpl.php:34
445
+ msgid "Select from common languages"
446
+ msgstr "Wähle aus den Standardsprachen"
447
+
448
+ #: ../tpl/admin-poinit.tpl.php:45
449
+ msgctxt "Form label"
450
+ msgid "or enter any language code"
451
+ msgstr "oder trage den Sprach-Code ein"
452
+
453
+ #: ../tpl/admin-poinit.tpl.php:51
454
+ msgctxt "Submit button"
455
+ msgid "Start translating"
456
+ msgstr "Starte Übersetzung"
457
+
458
+ #: ../tpl/admin-root.tpl.php:18
459
+ msgid "New version available"
460
+ msgstr "Neue Version verfügbar"
461
+
462
+ #: ../tpl/admin-root.tpl.php:21
463
+ msgid "Upgrade to version %s of Loco Translate"
464
+ msgstr "Bitte upgrade Loco Translate auf Version %s"
465
+
466
+ #: ../tpl/admin-root.tpl.php:31
467
+ msgid "Select a plugin or theme to translate"
468
+ msgstr "Wähle ein Plugin oder Theme zum Übersetzen"
469
+
470
+ #: ../tpl/admin-root.tpl.php:40
471
+ msgctxt "Package list header"
472
+ msgid "Themes"
473
+ msgstr "Themes"
474
+
475
+ #: ../tpl/admin-root.tpl.php:53
476
+ msgctxt "Package list header"
477
+ msgid "Plugins"
478
+ msgstr "Plugins"
479
+
480
+ #: ../tpl/admin-root.tpl.php:66
481
+ msgctxt "Package list header"
482
+ msgid "Core"
483
+ msgstr "Core"
languages/loco-translate-nl_BE.mo CHANGED
Binary file
languages/loco-translate-nl_BE.po CHANGED
@@ -2,9 +2,9 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Loco Translate\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: Fri Dec 06 2013 17:56:11 GMT+0000 (GMT)\n"
6
- "PO-Revision-Date: Fri Dec 06 2013 17:58:06 GMT+0000 (GMT)\n"
7
- "Last-Translator: Tim Whitlock <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Dutch (Belgium)\n"
10
  "Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -22,23 +22,23 @@ msgstr ""
22
  "X-Poedit-Basepath: .\n"
23
  "X-Poedit-SearchPath-0: .."
24
 
25
- # Translators: Bold text label in admin error messages
26
- #: ../lib/loco-admin.php:15
27
  msgctxt "Message label"
28
  msgid "Error"
29
  msgstr "Fout"
30
 
31
- #: ../lib/loco-admin.php:24
32
  msgctxt "Message label"
33
  msgid "Warning"
34
  msgstr "Waarschuwing"
35
 
36
- #: ../lib/loco-admin.php:33
37
  msgctxt "Message label"
38
  msgid "OK"
39
  msgstr "OK"
40
 
41
- #: ../lib/loco-admin.php:46
42
  msgid "Settings saved"
43
  msgstr ""
44
 
@@ -98,50 +98,58 @@ msgstr "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up t
98
  msgid "Bad file path"
99
  msgstr "Foute bestandslocatie"
100
 
101
- #: ../lib/loco-admin.php:731
102
  msgctxt "Add button"
103
  msgid "New template"
104
  msgstr "Nieuw sjabloon"
105
 
106
- #: ../lib/loco-admin.php:750
107
  msgctxt "Add button"
108
  msgid "New language"
109
  msgstr "Nieuwe taal"
110
 
111
- #: ../lib/loco-admin.php:789
112
  msgid "%s%% translated"
113
  msgstr "%s%% vertaald"
114
 
115
- #: ../lib/loco-admin.php:789
116
  msgid "1 string"
117
  msgid_plural "%s strings"
118
  msgstr[0] "1 te vertalen tekst"
119
  msgstr[1] "%s te vertalen teksten"
120
 
121
- #: ../lib/loco-admin.php:792
122
  msgid "%s fuzzy"
123
  msgstr "%s onzeker"
124
 
125
- #: ../lib/loco-admin.php:795
126
- msgid "%s unstranslated"
127
  msgstr "%s onvertaald"
128
 
129
- #: ../lib/loco-admin.php:826
 
 
 
 
130
  msgid "Loco, Translation Management"
131
  msgstr "Loco, vertalingsbeheer"
132
 
133
- #: ../lib/loco-admin.php:828
134
  msgid "Translation"
135
  msgstr ""
136
 
137
- #: ../lib/loco-admin.php:831 ../lib/loco-admin.php:842
138
  msgid "Manage translations"
139
  msgstr "Beheer vertalingen"
140
 
141
- #: ../lib/loco-admin.php:843 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
142
  msgid "Settings"
143
  msgstr ""
144
 
 
 
 
 
145
  #: ../lib/loco-locales.php:70
146
  msgid "Unknown language"
147
  msgstr "Onbekende taal"
@@ -178,10 +186,14 @@ msgstr ""
178
  msgid "MO file not found"
179
  msgstr ""
180
 
181
- #: ../php/loco-ajax.php:17
182
  msgid "User does not have permission to manage translations"
183
  msgstr "Gebruik heeft geen rechten om vertalingen te beheren"
184
 
 
 
 
 
185
  #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
186
  msgid "Invalid data posted to server"
187
  msgstr "Ongeldige gegevens op server"
@@ -214,22 +226,66 @@ msgstr ""
214
  "Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
215
  "schrijfrechten of download en kopieer naar \"%s/%s\"."
216
 
217
- #: ../php/loco-posave.php:81
218
  msgid "Cannot create MO file"
219
  msgstr ""
220
 
221
- #: ../php/loco-posave.php:84
222
  msgid "Cannot overwrite MO file"
223
  msgstr ""
224
 
225
- #: ../php/loco-posave.php:97
226
- msgid "Failed to compile MO file with %s, check your settings"
227
  msgstr ""
228
 
229
  #: ../php/loco-posync.php:53
230
  msgid "No strings could be extracted from source files"
231
  msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
232
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
  #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
234
  msgid "Packages"
235
  msgstr "Pakketten"
@@ -246,6 +302,10 @@ msgstr ""
246
  msgid "Back"
247
  msgstr ""
248
 
 
 
 
 
249
  #: ../tpl/admin-list.tpl.php:11
250
  msgctxt "Table header"
251
  msgid "Package details"
@@ -289,11 +349,27 @@ msgstr "Ondersteund door"
289
  msgid "Configure Loco Translate"
290
  msgstr ""
291
 
292
- #: ../tpl/admin-opts.tpl.php:27
293
- msgid "Path to msgfmt program for compiling MO files"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
  msgstr ""
295
 
296
- #: ../tpl/admin-opts.tpl.php:33
297
  msgid "Save settings"
298
  msgstr ""
299
 
@@ -319,41 +395,41 @@ msgctxt "Editor button"
319
  msgid "Save"
320
  msgstr "Opslaan"
321
 
322
- #: ../tpl/admin-poedit.tpl.php:94
323
  msgctxt "Editor button"
324
  msgid "Download"
325
  msgstr "Downloaden"
326
 
327
- #: ../tpl/admin-poedit.tpl.php:104
328
  msgctxt "Editor button"
329
  msgid "Sync"
330
  msgstr "Sync"
331
 
332
- #: ../tpl/admin-poedit.tpl.php:109
333
  msgctxt "Editor button"
334
  msgid "Revert"
335
  msgstr "Ongedaan maken"
336
 
337
- #: ../tpl/admin-poedit.tpl.php:114
338
  msgctxt "Editor button"
339
  msgid "Add"
340
  msgstr "Toevoegen"
341
 
342
- #: ../tpl/admin-poedit.tpl.php:119
343
  msgctxt "Editor button"
344
  msgid "Del"
345
  msgstr "Verwijder"
346
 
347
- #: ../tpl/admin-poedit.tpl.php:124
348
  msgctxt "Editor button"
349
  msgid "Fuzzy"
350
  msgstr "Onzeker"
351
 
352
- #: ../tpl/admin-poedit.tpl.php:128
353
  msgid "Filter translations"
354
  msgstr "Filter vertalingen"
355
 
356
- #: ../tpl/admin-poedit.tpl.php:132
357
  msgctxt "Editor button"
358
  msgid "Help"
359
  msgstr "Help"
2
  msgstr ""
3
  "Project-Id-Version: Loco Translate\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: Thu Jan 02 2014 17:30:57 GMT+0000 (GMT)\n"
6
+ "PO-Revision-Date: Sat Jan 04 2014 20:46:00 GMT+0000 (GMT)\n"
7
+ "Last-Translator: admin <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Dutch (Belgium)\n"
10
  "Plural-Forms: nplurals=2; plural=(n != 1)\n"
22
  "X-Poedit-Basepath: .\n"
23
  "X-Poedit-SearchPath-0: .."
24
 
25
+ #. Translators: Bold text label in admin error messages
26
+ #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
27
  msgctxt "Message label"
28
  msgid "Error"
29
  msgstr "Fout"
30
 
31
+ #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:6
32
  msgctxt "Message label"
33
  msgid "Warning"
34
  msgstr "Waarschuwing"
35
 
36
+ #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:5
37
  msgctxt "Message label"
38
  msgid "OK"
39
  msgstr "OK"
40
 
41
+ #: ../lib/loco-admin.php:47
42
  msgid "Settings saved"
43
  msgstr ""
44
 
98
  msgid "Bad file path"
99
  msgstr "Foute bestandslocatie"
100
 
101
+ #: ../lib/loco-admin.php:732
102
  msgctxt "Add button"
103
  msgid "New template"
104
  msgstr "Nieuw sjabloon"
105
 
106
+ #: ../lib/loco-admin.php:751
107
  msgctxt "Add button"
108
  msgid "New language"
109
  msgstr "Nieuwe taal"
110
 
111
+ #: ../lib/loco-admin.php:790
112
  msgid "%s%% translated"
113
  msgstr "%s%% vertaald"
114
 
115
+ #: ../lib/loco-admin.php:790
116
  msgid "1 string"
117
  msgid_plural "%s strings"
118
  msgstr[0] "1 te vertalen tekst"
119
  msgstr[1] "%s te vertalen teksten"
120
 
121
+ #: ../lib/loco-admin.php:793
122
  msgid "%s fuzzy"
123
  msgstr "%s onzeker"
124
 
125
+ #: ../lib/loco-admin.php:796
126
+ msgid "%s untranslated"
127
  msgstr "%s onvertaald"
128
 
129
+ #: ../lib/loco-admin.php:838
130
+ msgid "Failed to compile MO file with built-in compiler"
131
+ msgstr ""
132
+
133
+ #: ../lib/loco-admin.php:867
134
  msgid "Loco, Translation Management"
135
  msgstr "Loco, vertalingsbeheer"
136
 
137
+ #: ../lib/loco-admin.php:869
138
  msgid "Translation"
139
  msgstr ""
140
 
141
+ #: ../lib/loco-admin.php:872 ../lib/loco-admin.php:883
142
  msgid "Manage translations"
143
  msgstr "Beheer vertalingen"
144
 
145
+ #: ../lib/loco-admin.php:884 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
146
  msgid "Settings"
147
  msgstr ""
148
 
149
+ #: ../lib/loco-admin.php:908
150
+ msgid "File download failed"
151
+ msgstr ""
152
+
153
  #: ../lib/loco-locales.php:70
154
  msgid "Unknown language"
155
  msgstr "Onbekende taal"
186
  msgid "MO file not found"
187
  msgstr ""
188
 
189
+ #: ../php/loco-ajax.php:17 ../php/loco-download.php:21
190
  msgid "User does not have permission to manage translations"
191
  msgstr "Gebruik heeft geen rechten om vertalingen te beheren"
192
 
193
+ #: ../php/loco-download.php:68 ../php/loco-posave.php:88
194
+ msgid "Failed to compile MO file with %s, check your settings"
195
+ msgstr ""
196
+
197
  #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
198
  msgid "Invalid data posted to server"
199
  msgstr "Ongeldige gegevens op server"
226
  "Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
227
  "schrijfrechten of download en kopieer naar \"%s/%s\"."
228
 
229
+ #: ../php/loco-posave.php:69
230
  msgid "Cannot create MO file"
231
  msgstr ""
232
 
233
+ #: ../php/loco-posave.php:72
234
  msgid "Cannot overwrite MO file"
235
  msgstr ""
236
 
237
+ #: ../php/loco-posave.php:98
238
+ msgid "Failed to write MO file"
239
  msgstr ""
240
 
241
  #: ../php/loco-posync.php:53
242
  msgid "No strings could be extracted from source files"
243
  msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
244
 
245
+ #: ../pub/js/lang/dummy.php:8
246
+ msgid "Unknown error"
247
+ msgstr ""
248
+
249
+ #: ../pub/js/lang/dummy.php:9
250
+ msgid "PO file saved"
251
+ msgstr ""
252
+
253
+ #: ../pub/js/lang/dummy.php:10
254
+ msgid "and MO file compiled"
255
+ msgstr ""
256
+
257
+ #: ../pub/js/lang/dummy.php:11
258
+ msgid "Merged from %s"
259
+ msgstr ""
260
+
261
+ #: ../pub/js/lang/dummy.php:12
262
+ msgid "Merged from source code"
263
+ msgstr ""
264
+
265
+ #: ../pub/js/lang/dummy.php:13
266
+ msgid "Already up to date with %s"
267
+ msgstr ""
268
+
269
+ #: ../pub/js/lang/dummy.php:14
270
+ msgid "Already up to date with source code"
271
+ msgstr ""
272
+
273
+ #: ../pub/js/lang/dummy.php:15
274
+ msgid "1 new string added"
275
+ msgid_plural "%s new strings added"
276
+ msgstr[0] ""
277
+ msgstr[1] ""
278
+
279
+ #: ../pub/js/lang/dummy.php:16
280
+ msgid "1 obsolete string removed"
281
+ msgid_plural "%s obsolete strings removed"
282
+ msgstr[0] ""
283
+ msgstr[1] ""
284
+
285
+ #: ../pub/js/lang/dummy.php:17
286
+ msgid "Your changes will be lost if you continue without saving"
287
+ msgstr ""
288
+
289
  #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
290
  msgid "Packages"
291
  msgstr "Pakketten"
302
  msgid "Back"
303
  msgstr ""
304
 
305
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:64
306
+ msgid "Get help"
307
+ msgstr ""
308
+
309
  #: ../tpl/admin-list.tpl.php:11
310
  msgctxt "Table header"
311
  msgid "Package details"
349
  msgid "Configure Loco Translate"
350
  msgstr ""
351
 
352
+ #: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
353
+ msgid "Compiling MO files"
354
+ msgstr ""
355
+
356
+ #: ../tpl/admin-opts.tpl.php:36
357
+ msgid "Use built-in MO compiler."
358
+ msgstr ""
359
+
360
+ #: ../tpl/admin-opts.tpl.php:42
361
+ msgid "Use external command:"
362
+ msgstr ""
363
+
364
+ #: ../tpl/admin-opts.tpl.php:47
365
+ msgid "Enter path to msgfmt on server"
366
+ msgstr ""
367
+
368
+ #: ../tpl/admin-opts.tpl.php:54
369
+ msgid "Generate hash tables"
370
  msgstr ""
371
 
372
+ #: ../tpl/admin-opts.tpl.php:63
373
  msgid "Save settings"
374
  msgstr ""
375
 
395
  msgid "Save"
396
  msgstr "Opslaan"
397
 
398
+ #: ../tpl/admin-poedit.tpl.php:94 ../tpl/admin-poedit.tpl.php:103
399
  msgctxt "Editor button"
400
  msgid "Download"
401
  msgstr "Downloaden"
402
 
403
+ #: ../tpl/admin-poedit.tpl.php:115
404
  msgctxt "Editor button"
405
  msgid "Sync"
406
  msgstr "Sync"
407
 
408
+ #: ../tpl/admin-poedit.tpl.php:120
409
  msgctxt "Editor button"
410
  msgid "Revert"
411
  msgstr "Ongedaan maken"
412
 
413
+ #: ../tpl/admin-poedit.tpl.php:125
414
  msgctxt "Editor button"
415
  msgid "Add"
416
  msgstr "Toevoegen"
417
 
418
+ #: ../tpl/admin-poedit.tpl.php:130
419
  msgctxt "Editor button"
420
  msgid "Del"
421
  msgstr "Verwijder"
422
 
423
+ #: ../tpl/admin-poedit.tpl.php:135
424
  msgctxt "Editor button"
425
  msgid "Fuzzy"
426
  msgstr "Onzeker"
427
 
428
+ #: ../tpl/admin-poedit.tpl.php:139
429
  msgid "Filter translations"
430
  msgstr "Filter vertalingen"
431
 
432
+ #: ../tpl/admin-poedit.tpl.php:143
433
  msgctxt "Editor button"
434
  msgid "Help"
435
  msgstr "Help"
languages/loco-translate-nl_NL.mo CHANGED
Binary file
languages/loco-translate-nl_NL.po CHANGED
@@ -2,9 +2,9 @@ msgid ""
2
  msgstr ""
3
  "Project-Id-Version: Loco Translate\n"
4
  "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: Fri Dec 06 2013 17:56:11 GMT+0000 (GMT)\n"
6
- "PO-Revision-Date: Fri Dec 06 2013 17:57:41 GMT+0000 (GMT)\n"
7
- "Last-Translator: Tim Whitlock <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Dutch\n"
10
  "Plural-Forms: nplurals=2; plural=(n != 1)\n"
@@ -22,23 +22,23 @@ msgstr ""
22
  "X-Poedit-Basepath: .\n"
23
  "X-Poedit-SearchPath-0: .."
24
 
25
- # Translators: Bold text label in admin error messages
26
- #: ../lib/loco-admin.php:15
27
  msgctxt "Message label"
28
  msgid "Error"
29
  msgstr "Fout"
30
 
31
- #: ../lib/loco-admin.php:24
32
  msgctxt "Message label"
33
  msgid "Warning"
34
  msgstr "Waarschuwing"
35
 
36
- #: ../lib/loco-admin.php:33
37
  msgctxt "Message label"
38
  msgid "OK"
39
  msgstr "OK"
40
 
41
- #: ../lib/loco-admin.php:46
42
  msgid "Settings saved"
43
  msgstr ""
44
 
@@ -98,50 +98,58 @@ msgstr "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up t
98
  msgid "Bad file path"
99
  msgstr "Foute bestandslocatie"
100
 
101
- #: ../lib/loco-admin.php:731
102
  msgctxt "Add button"
103
  msgid "New template"
104
  msgstr "Nieuw sjabloon"
105
 
106
- #: ../lib/loco-admin.php:750
107
  msgctxt "Add button"
108
  msgid "New language"
109
  msgstr "Nieuwe taal"
110
 
111
- #: ../lib/loco-admin.php:789
112
  msgid "%s%% translated"
113
  msgstr "%s%% vertaald"
114
 
115
- #: ../lib/loco-admin.php:789
116
  msgid "1 string"
117
  msgid_plural "%s strings"
118
  msgstr[0] "1 te vertalen tekst"
119
  msgstr[1] "%s te vertalen teksten"
120
 
121
- #: ../lib/loco-admin.php:792
122
  msgid "%s fuzzy"
123
  msgstr "%s onzeker"
124
 
125
- #: ../lib/loco-admin.php:795
126
- msgid "%s unstranslated"
127
  msgstr "%s onvertaald"
128
 
129
- #: ../lib/loco-admin.php:826
 
 
 
 
130
  msgid "Loco, Translation Management"
131
  msgstr "Loco, vertalingsbeheer"
132
 
133
- #: ../lib/loco-admin.php:828
134
  msgid "Translation"
135
  msgstr ""
136
 
137
- #: ../lib/loco-admin.php:831 ../lib/loco-admin.php:842
138
  msgid "Manage translations"
139
  msgstr "Beheer vertalingen"
140
 
141
- #: ../lib/loco-admin.php:843 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
142
  msgid "Settings"
143
  msgstr ""
144
 
 
 
 
 
145
  #: ../lib/loco-locales.php:70
146
  msgid "Unknown language"
147
  msgstr "Onbekende taal"
@@ -178,10 +186,14 @@ msgstr ""
178
  msgid "MO file not found"
179
  msgstr ""
180
 
181
- #: ../php/loco-ajax.php:17
182
  msgid "User does not have permission to manage translations"
183
  msgstr "Gebruik heeft geen rechten om vertalingen te beheren"
184
 
 
 
 
 
185
  #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
186
  msgid "Invalid data posted to server"
187
  msgstr "Ongeldige gegevens op server"
@@ -214,22 +226,66 @@ msgstr ""
214
  "Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
215
  "schrijfrechten of download en kopieer naar \"%s/%s\"."
216
 
217
- #: ../php/loco-posave.php:81
218
  msgid "Cannot create MO file"
219
  msgstr ""
220
 
221
- #: ../php/loco-posave.php:84
222
  msgid "Cannot overwrite MO file"
223
  msgstr ""
224
 
225
- #: ../php/loco-posave.php:97
226
- msgid "Failed to compile MO file with %s, check your settings"
227
  msgstr ""
228
 
229
  #: ../php/loco-posync.php:53
230
  msgid "No strings could be extracted from source files"
231
  msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
232
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
233
  #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
234
  msgid "Packages"
235
  msgstr "Pakketten"
@@ -246,6 +302,10 @@ msgstr ""
246
  msgid "Back"
247
  msgstr ""
248
 
 
 
 
 
249
  #: ../tpl/admin-list.tpl.php:11
250
  msgctxt "Table header"
251
  msgid "Package details"
@@ -289,11 +349,27 @@ msgstr "Ondersteund door"
289
  msgid "Configure Loco Translate"
290
  msgstr ""
291
 
292
- #: ../tpl/admin-opts.tpl.php:27
293
- msgid "Path to msgfmt program for compiling MO files"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
294
  msgstr ""
295
 
296
- #: ../tpl/admin-opts.tpl.php:33
297
  msgid "Save settings"
298
  msgstr ""
299
 
@@ -319,41 +395,41 @@ msgctxt "Editor button"
319
  msgid "Save"
320
  msgstr "Opslaan"
321
 
322
- #: ../tpl/admin-poedit.tpl.php:94
323
  msgctxt "Editor button"
324
  msgid "Download"
325
  msgstr "Downloaden"
326
 
327
- #: ../tpl/admin-poedit.tpl.php:104
328
  msgctxt "Editor button"
329
  msgid "Sync"
330
  msgstr "Sync"
331
 
332
- #: ../tpl/admin-poedit.tpl.php:109
333
  msgctxt "Editor button"
334
  msgid "Revert"
335
  msgstr "Ongedaan maken"
336
 
337
- #: ../tpl/admin-poedit.tpl.php:114
338
  msgctxt "Editor button"
339
  msgid "Add"
340
  msgstr "Toevoegen"
341
 
342
- #: ../tpl/admin-poedit.tpl.php:119
343
  msgctxt "Editor button"
344
  msgid "Del"
345
  msgstr "Verwijder"
346
 
347
- #: ../tpl/admin-poedit.tpl.php:124
348
  msgctxt "Editor button"
349
  msgid "Fuzzy"
350
  msgstr "Onzeker"
351
 
352
- #: ../tpl/admin-poedit.tpl.php:128
353
  msgid "Filter translations"
354
  msgstr "Filter vertalingen"
355
 
356
- #: ../tpl/admin-poedit.tpl.php:132
357
  msgctxt "Editor button"
358
  msgid "Help"
359
  msgstr "Help"
2
  msgstr ""
3
  "Project-Id-Version: Loco Translate\n"
4
  "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: Thu Jan 02 2014 17:30:57 GMT+0000 (GMT)\n"
6
+ "PO-Revision-Date: Sat Jan 04 2014 20:46:05 GMT+0000 (GMT)\n"
7
+ "Last-Translator: admin <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Dutch\n"
10
  "Plural-Forms: nplurals=2; plural=(n != 1)\n"
22
  "X-Poedit-Basepath: .\n"
23
  "X-Poedit-SearchPath-0: .."
24
 
25
+ #. Translators: Bold text label in admin error messages
26
+ #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
27
  msgctxt "Message label"
28
  msgid "Error"
29
  msgstr "Fout"
30
 
31
+ #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:6
32
  msgctxt "Message label"
33
  msgid "Warning"
34
  msgstr "Waarschuwing"
35
 
36
+ #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:5
37
  msgctxt "Message label"
38
  msgid "OK"
39
  msgstr "OK"
40
 
41
+ #: ../lib/loco-admin.php:47
42
  msgid "Settings saved"
43
  msgstr ""
44
 
98
  msgid "Bad file path"
99
  msgstr "Foute bestandslocatie"
100
 
101
+ #: ../lib/loco-admin.php:732
102
  msgctxt "Add button"
103
  msgid "New template"
104
  msgstr "Nieuw sjabloon"
105
 
106
+ #: ../lib/loco-admin.php:751
107
  msgctxt "Add button"
108
  msgid "New language"
109
  msgstr "Nieuwe taal"
110
 
111
+ #: ../lib/loco-admin.php:790
112
  msgid "%s%% translated"
113
  msgstr "%s%% vertaald"
114
 
115
+ #: ../lib/loco-admin.php:790
116
  msgid "1 string"
117
  msgid_plural "%s strings"
118
  msgstr[0] "1 te vertalen tekst"
119
  msgstr[1] "%s te vertalen teksten"
120
 
121
+ #: ../lib/loco-admin.php:793
122
  msgid "%s fuzzy"
123
  msgstr "%s onzeker"
124
 
125
+ #: ../lib/loco-admin.php:796
126
+ msgid "%s untranslated"
127
  msgstr "%s onvertaald"
128
 
129
+ #: ../lib/loco-admin.php:838
130
+ msgid "Failed to compile MO file with built-in compiler"
131
+ msgstr ""
132
+
133
+ #: ../lib/loco-admin.php:867
134
  msgid "Loco, Translation Management"
135
  msgstr "Loco, vertalingsbeheer"
136
 
137
+ #: ../lib/loco-admin.php:869
138
  msgid "Translation"
139
  msgstr ""
140
 
141
+ #: ../lib/loco-admin.php:872 ../lib/loco-admin.php:883
142
  msgid "Manage translations"
143
  msgstr "Beheer vertalingen"
144
 
145
+ #: ../lib/loco-admin.php:884 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
146
  msgid "Settings"
147
  msgstr ""
148
 
149
+ #: ../lib/loco-admin.php:908
150
+ msgid "File download failed"
151
+ msgstr ""
152
+
153
  #: ../lib/loco-locales.php:70
154
  msgid "Unknown language"
155
  msgstr "Onbekende taal"
186
  msgid "MO file not found"
187
  msgstr ""
188
 
189
+ #: ../php/loco-ajax.php:17 ../php/loco-download.php:21
190
  msgid "User does not have permission to manage translations"
191
  msgstr "Gebruik heeft geen rechten om vertalingen te beheren"
192
 
193
+ #: ../php/loco-download.php:68 ../php/loco-posave.php:88
194
+ msgid "Failed to compile MO file with %s, check your settings"
195
+ msgstr ""
196
+
197
  #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
198
  msgid "Invalid data posted to server"
199
  msgstr "Ongeldige gegevens op server"
226
  "Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
227
  "schrijfrechten of download en kopieer naar \"%s/%s\"."
228
 
229
+ #: ../php/loco-posave.php:69
230
  msgid "Cannot create MO file"
231
  msgstr ""
232
 
233
+ #: ../php/loco-posave.php:72
234
  msgid "Cannot overwrite MO file"
235
  msgstr ""
236
 
237
+ #: ../php/loco-posave.php:98
238
+ msgid "Failed to write MO file"
239
  msgstr ""
240
 
241
  #: ../php/loco-posync.php:53
242
  msgid "No strings could be extracted from source files"
243
  msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
244
 
245
+ #: ../pub/js/lang/dummy.php:8
246
+ msgid "Unknown error"
247
+ msgstr ""
248
+
249
+ #: ../pub/js/lang/dummy.php:9
250
+ msgid "PO file saved"
251
+ msgstr ""
252
+
253
+ #: ../pub/js/lang/dummy.php:10
254
+ msgid "and MO file compiled"
255
+ msgstr ""
256
+
257
+ #: ../pub/js/lang/dummy.php:11
258
+ msgid "Merged from %s"
259
+ msgstr ""
260
+
261
+ #: ../pub/js/lang/dummy.php:12
262
+ msgid "Merged from source code"
263
+ msgstr ""
264
+
265
+ #: ../pub/js/lang/dummy.php:13
266
+ msgid "Already up to date with %s"
267
+ msgstr ""
268
+
269
+ #: ../pub/js/lang/dummy.php:14
270
+ msgid "Already up to date with source code"
271
+ msgstr ""
272
+
273
+ #: ../pub/js/lang/dummy.php:15
274
+ msgid "1 new string added"
275
+ msgid_plural "%s new strings added"
276
+ msgstr[0] ""
277
+ msgstr[1] ""
278
+
279
+ #: ../pub/js/lang/dummy.php:16
280
+ msgid "1 obsolete string removed"
281
+ msgid_plural "%s obsolete strings removed"
282
+ msgstr[0] ""
283
+ msgstr[1] ""
284
+
285
+ #: ../pub/js/lang/dummy.php:17
286
+ msgid "Your changes will be lost if you continue without saving"
287
+ msgstr ""
288
+
289
  #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
290
  msgid "Packages"
291
  msgstr "Pakketten"
302
  msgid "Back"
303
  msgstr ""
304
 
305
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:64
306
+ msgid "Get help"
307
+ msgstr ""
308
+
309
  #: ../tpl/admin-list.tpl.php:11
310
  msgctxt "Table header"
311
  msgid "Package details"
349
  msgid "Configure Loco Translate"
350
  msgstr ""
351
 
352
+ #: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
353
+ msgid "Compiling MO files"
354
+ msgstr ""
355
+
356
+ #: ../tpl/admin-opts.tpl.php:36
357
+ msgid "Use built-in MO compiler."
358
+ msgstr ""
359
+
360
+ #: ../tpl/admin-opts.tpl.php:42
361
+ msgid "Use external command:"
362
+ msgstr ""
363
+
364
+ #: ../tpl/admin-opts.tpl.php:47
365
+ msgid "Enter path to msgfmt on server"
366
+ msgstr ""
367
+
368
+ #: ../tpl/admin-opts.tpl.php:54
369
+ msgid "Generate hash tables"
370
  msgstr ""
371
 
372
+ #: ../tpl/admin-opts.tpl.php:63
373
  msgid "Save settings"
374
  msgstr ""
375
 
395
  msgid "Save"
396
  msgstr "Opslaan"
397
 
398
+ #: ../tpl/admin-poedit.tpl.php:94 ../tpl/admin-poedit.tpl.php:103
399
  msgctxt "Editor button"
400
  msgid "Download"
401
  msgstr "Downloaden"
402
 
403
+ #: ../tpl/admin-poedit.tpl.php:115
404
  msgctxt "Editor button"
405
  msgid "Sync"
406
  msgstr "Sync"
407
 
408
+ #: ../tpl/admin-poedit.tpl.php:120
409
  msgctxt "Editor button"
410
  msgid "Revert"
411
  msgstr "Ongedaan maken"
412
 
413
+ #: ../tpl/admin-poedit.tpl.php:125
414
  msgctxt "Editor button"
415
  msgid "Add"
416
  msgstr "Toevoegen"
417
 
418
+ #: ../tpl/admin-poedit.tpl.php:130
419
  msgctxt "Editor button"
420
  msgid "Del"
421
  msgstr "Verwijder"
422
 
423
+ #: ../tpl/admin-poedit.tpl.php:135
424
  msgctxt "Editor button"
425
  msgid "Fuzzy"
426
  msgstr "Onzeker"
427
 
428
+ #: ../tpl/admin-poedit.tpl.php:139
429
  msgid "Filter translations"
430
  msgstr "Filter vertalingen"
431
 
432
+ #: ../tpl/admin-poedit.tpl.php:143
433
  msgctxt "Editor button"
434
  msgid "Help"
435
  msgstr "Help"
languages/loco-translate.pot CHANGED
@@ -1,11 +1,11 @@
1
- # Loco Gettext template
2
  #, fuzzy
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: Loco Translate\n"
6
  "Report-Msgid-Bugs-To: \n"
7
- "POT-Creation-Date: Fri Dec 06 2013 17:56:11 GMT+0000 (GMT)\n"
8
- "POT-Revision-Date: Fri Dec 06 2013 17:56:40 GMT+0000 (GMT)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -24,23 +24,23 @@ msgstr ""
24
  "comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
25
  "X-Generator: Loco - https://localise.biz/"
26
 
27
- # Translators: Bold text label in admin error messages
28
- #: ../lib/loco-admin.php:15
29
  msgctxt "Message label"
30
  msgid "Error"
31
  msgstr ""
32
 
33
- #: ../lib/loco-admin.php:24
34
  msgctxt "Message label"
35
  msgid "Warning"
36
  msgstr ""
37
 
38
- #: ../lib/loco-admin.php:33
39
  msgctxt "Message label"
40
  msgid "OK"
41
  msgstr ""
42
 
43
- #: ../lib/loco-admin.php:46
44
  msgid "Settings saved"
45
  msgstr ""
46
 
@@ -98,50 +98,58 @@ msgstr ""
98
  msgid "Bad file path"
99
  msgstr ""
100
 
101
- #: ../lib/loco-admin.php:731
102
  msgctxt "Add button"
103
  msgid "New template"
104
  msgstr ""
105
 
106
- #: ../lib/loco-admin.php:750
107
  msgctxt "Add button"
108
  msgid "New language"
109
  msgstr ""
110
 
111
- #: ../lib/loco-admin.php:789
112
  msgid "%s%% translated"
113
  msgstr ""
114
 
115
- #: ../lib/loco-admin.php:789
116
  msgid "1 string"
117
  msgid_plural "%s strings"
118
  msgstr[0] ""
119
  msgstr[1] ""
120
 
121
- #: ../lib/loco-admin.php:792
122
  msgid "%s fuzzy"
123
  msgstr ""
124
 
125
- #: ../lib/loco-admin.php:795
126
- msgid "%s unstranslated"
127
  msgstr ""
128
 
129
- #: ../lib/loco-admin.php:826
 
 
 
 
130
  msgid "Loco, Translation Management"
131
  msgstr ""
132
 
133
- #: ../lib/loco-admin.php:828
134
  msgid "Translation"
135
  msgstr ""
136
 
137
- #: ../lib/loco-admin.php:831 ../lib/loco-admin.php:842
138
  msgid "Manage translations"
139
  msgstr ""
140
 
141
- #: ../lib/loco-admin.php:843 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
142
  msgid "Settings"
143
  msgstr ""
144
 
 
 
 
 
145
  #: ../lib/loco-locales.php:70
146
  msgid "Unknown language"
147
  msgstr ""
@@ -178,10 +186,14 @@ msgstr ""
178
  msgid "MO file not found"
179
  msgstr ""
180
 
181
- #: ../php/loco-ajax.php:17
182
  msgid "User does not have permission to manage translations"
183
  msgstr ""
184
 
 
 
 
 
185
  #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
186
  msgid "Invalid data posted to server"
187
  msgstr ""
@@ -208,22 +220,66 @@ msgid ""
208
  "copy to \"%s/%s\"."
209
  msgstr ""
210
 
211
- #: ../php/loco-posave.php:81
212
  msgid "Cannot create MO file"
213
  msgstr ""
214
 
215
- #: ../php/loco-posave.php:84
216
  msgid "Cannot overwrite MO file"
217
  msgstr ""
218
 
219
- #: ../php/loco-posave.php:97
220
- msgid "Failed to compile MO file with %s, check your settings"
221
  msgstr ""
222
 
223
  #: ../php/loco-posync.php:53
224
  msgid "No strings could be extracted from source files"
225
  msgstr ""
226
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
228
  msgid "Packages"
229
  msgstr ""
@@ -240,6 +296,10 @@ msgstr ""
240
  msgid "Back"
241
  msgstr ""
242
 
 
 
 
 
243
  #: ../tpl/admin-list.tpl.php:11
244
  msgctxt "Table header"
245
  msgid "Package details"
@@ -283,11 +343,27 @@ msgstr ""
283
  msgid "Configure Loco Translate"
284
  msgstr ""
285
 
286
- #: ../tpl/admin-opts.tpl.php:27
287
- msgid "Path to msgfmt program for compiling MO files"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
288
  msgstr ""
289
 
290
- #: ../tpl/admin-opts.tpl.php:33
291
  msgid "Save settings"
292
  msgstr ""
293
 
@@ -313,41 +389,41 @@ msgctxt "Editor button"
313
  msgid "Save"
314
  msgstr ""
315
 
316
- #: ../tpl/admin-poedit.tpl.php:94
317
  msgctxt "Editor button"
318
  msgid "Download"
319
  msgstr ""
320
 
321
- #: ../tpl/admin-poedit.tpl.php:104
322
  msgctxt "Editor button"
323
  msgid "Sync"
324
  msgstr ""
325
 
326
- #: ../tpl/admin-poedit.tpl.php:109
327
  msgctxt "Editor button"
328
  msgid "Revert"
329
  msgstr ""
330
 
331
- #: ../tpl/admin-poedit.tpl.php:114
332
  msgctxt "Editor button"
333
  msgid "Add"
334
  msgstr ""
335
 
336
- #: ../tpl/admin-poedit.tpl.php:119
337
  msgctxt "Editor button"
338
  msgid "Del"
339
  msgstr ""
340
 
341
- #: ../tpl/admin-poedit.tpl.php:124
342
  msgctxt "Editor button"
343
  msgid "Fuzzy"
344
  msgstr ""
345
 
346
- #: ../tpl/admin-poedit.tpl.php:128
347
  msgid "Filter translations"
348
  msgstr ""
349
 
350
- #: ../tpl/admin-poedit.tpl.php:132
351
  msgctxt "Editor button"
352
  msgid "Help"
353
  msgstr ""
1
+ #. Loco Gettext template
2
  #, fuzzy
3
  msgid ""
4
  msgstr ""
5
  "Project-Id-Version: Loco Translate\n"
6
  "Report-Msgid-Bugs-To: \n"
7
+ "POT-Creation-Date: Thu Jan 02 2014 17:30:57 GMT+0000 (GMT)\n"
8
+ "POT-Revision-Date: Sat Jan 04 2014 20:45:33 GMT+0000 (GMT)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
24
  "comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
25
  "X-Generator: Loco - https://localise.biz/"
26
 
27
+ #. Translators: Bold text label in admin error messages
28
+ #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
29
  msgctxt "Message label"
30
  msgid "Error"
31
  msgstr ""
32
 
33
+ #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:6
34
  msgctxt "Message label"
35
  msgid "Warning"
36
  msgstr ""
37
 
38
+ #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:5
39
  msgctxt "Message label"
40
  msgid "OK"
41
  msgstr ""
42
 
43
+ #: ../lib/loco-admin.php:47
44
  msgid "Settings saved"
45
  msgstr ""
46
 
98
  msgid "Bad file path"
99
  msgstr ""
100
 
101
+ #: ../lib/loco-admin.php:732
102
  msgctxt "Add button"
103
  msgid "New template"
104
  msgstr ""
105
 
106
+ #: ../lib/loco-admin.php:751
107
  msgctxt "Add button"
108
  msgid "New language"
109
  msgstr ""
110
 
111
+ #: ../lib/loco-admin.php:790
112
  msgid "%s%% translated"
113
  msgstr ""
114
 
115
+ #: ../lib/loco-admin.php:790
116
  msgid "1 string"
117
  msgid_plural "%s strings"
118
  msgstr[0] ""
119
  msgstr[1] ""
120
 
121
+ #: ../lib/loco-admin.php:793
122
  msgid "%s fuzzy"
123
  msgstr ""
124
 
125
+ #: ../lib/loco-admin.php:796
126
+ msgid "%s untranslated"
127
  msgstr ""
128
 
129
+ #: ../lib/loco-admin.php:838
130
+ msgid "Failed to compile MO file with built-in compiler"
131
+ msgstr ""
132
+
133
+ #: ../lib/loco-admin.php:867
134
  msgid "Loco, Translation Management"
135
  msgstr ""
136
 
137
+ #: ../lib/loco-admin.php:869
138
  msgid "Translation"
139
  msgstr ""
140
 
141
+ #: ../lib/loco-admin.php:872 ../lib/loco-admin.php:883
142
  msgid "Manage translations"
143
  msgstr ""
144
 
145
+ #: ../lib/loco-admin.php:884 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
146
  msgid "Settings"
147
  msgstr ""
148
 
149
+ #: ../lib/loco-admin.php:908
150
+ msgid "File download failed"
151
+ msgstr ""
152
+
153
  #: ../lib/loco-locales.php:70
154
  msgid "Unknown language"
155
  msgstr ""
186
  msgid "MO file not found"
187
  msgstr ""
188
 
189
+ #: ../php/loco-ajax.php:17 ../php/loco-download.php:21
190
  msgid "User does not have permission to manage translations"
191
  msgstr ""
192
 
193
+ #: ../php/loco-download.php:68 ../php/loco-posave.php:88
194
+ msgid "Failed to compile MO file with %s, check your settings"
195
+ msgstr ""
196
+
197
  #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
198
  msgid "Invalid data posted to server"
199
  msgstr ""
220
  "copy to \"%s/%s\"."
221
  msgstr ""
222
 
223
+ #: ../php/loco-posave.php:69
224
  msgid "Cannot create MO file"
225
  msgstr ""
226
 
227
+ #: ../php/loco-posave.php:72
228
  msgid "Cannot overwrite MO file"
229
  msgstr ""
230
 
231
+ #: ../php/loco-posave.php:98
232
+ msgid "Failed to write MO file"
233
  msgstr ""
234
 
235
  #: ../php/loco-posync.php:53
236
  msgid "No strings could be extracted from source files"
237
  msgstr ""
238
 
239
+ #: ../pub/js/lang/dummy.php:8
240
+ msgid "Unknown error"
241
+ msgstr ""
242
+
243
+ #: ../pub/js/lang/dummy.php:9
244
+ msgid "PO file saved"
245
+ msgstr ""
246
+
247
+ #: ../pub/js/lang/dummy.php:10
248
+ msgid "and MO file compiled"
249
+ msgstr ""
250
+
251
+ #: ../pub/js/lang/dummy.php:11
252
+ msgid "Merged from %s"
253
+ msgstr ""
254
+
255
+ #: ../pub/js/lang/dummy.php:12
256
+ msgid "Merged from source code"
257
+ msgstr ""
258
+
259
+ #: ../pub/js/lang/dummy.php:13
260
+ msgid "Already up to date with %s"
261
+ msgstr ""
262
+
263
+ #: ../pub/js/lang/dummy.php:14
264
+ msgid "Already up to date with source code"
265
+ msgstr ""
266
+
267
+ #: ../pub/js/lang/dummy.php:15
268
+ msgid "1 new string added"
269
+ msgid_plural "%s new strings added"
270
+ msgstr[0] ""
271
+ msgstr[1] ""
272
+
273
+ #: ../pub/js/lang/dummy.php:16
274
+ msgid "1 obsolete string removed"
275
+ msgid_plural "%s obsolete strings removed"
276
+ msgstr[0] ""
277
+ msgstr[1] ""
278
+
279
+ #: ../pub/js/lang/dummy.php:17
280
+ msgid "Your changes will be lost if you continue without saving"
281
+ msgstr ""
282
+
283
  #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
284
  msgid "Packages"
285
  msgstr ""
296
  msgid "Back"
297
  msgstr ""
298
 
299
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:64
300
+ msgid "Get help"
301
+ msgstr ""
302
+
303
  #: ../tpl/admin-list.tpl.php:11
304
  msgctxt "Table header"
305
  msgid "Package details"
343
  msgid "Configure Loco Translate"
344
  msgstr ""
345
 
346
+ #: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
347
+ msgid "Compiling MO files"
348
+ msgstr ""
349
+
350
+ #: ../tpl/admin-opts.tpl.php:36
351
+ msgid "Use built-in MO compiler."
352
+ msgstr ""
353
+
354
+ #: ../tpl/admin-opts.tpl.php:42
355
+ msgid "Use external command:"
356
+ msgstr ""
357
+
358
+ #: ../tpl/admin-opts.tpl.php:47
359
+ msgid "Enter path to msgfmt on server"
360
+ msgstr ""
361
+
362
+ #: ../tpl/admin-opts.tpl.php:54
363
+ msgid "Generate hash tables"
364
  msgstr ""
365
 
366
+ #: ../tpl/admin-opts.tpl.php:63
367
  msgid "Save settings"
368
  msgstr ""
369
 
389
  msgid "Save"
390
  msgstr ""
391
 
392
+ #: ../tpl/admin-poedit.tpl.php:94 ../tpl/admin-poedit.tpl.php:103
393
  msgctxt "Editor button"
394
  msgid "Download"
395
  msgstr ""
396
 
397
+ #: ../tpl/admin-poedit.tpl.php:115
398
  msgctxt "Editor button"
399
  msgid "Sync"
400
  msgstr ""
401
 
402
+ #: ../tpl/admin-poedit.tpl.php:120
403
  msgctxt "Editor button"
404
  msgid "Revert"
405
  msgstr ""
406
 
407
+ #: ../tpl/admin-poedit.tpl.php:125
408
  msgctxt "Editor button"
409
  msgid "Add"
410
  msgstr ""
411
 
412
+ #: ../tpl/admin-poedit.tpl.php:130
413
  msgctxt "Editor button"
414
  msgid "Del"
415
  msgstr ""
416
 
417
+ #: ../tpl/admin-poedit.tpl.php:135
418
  msgctxt "Editor button"
419
  msgid "Fuzzy"
420
  msgstr ""
421
 
422
+ #: ../tpl/admin-poedit.tpl.php:139
423
  msgid "Filter translations"
424
  msgstr ""
425
 
426
+ #: ../tpl/admin-poedit.tpl.php:143
427
  msgctxt "Editor button"
428
  msgid "Help"
429
  msgstr ""
lib/build/gettext-compiled.php CHANGED
@@ -2,6 +2,6 @@
2
  /**
3
  * Compiled source code - DO NOT EDIT!
4
  * @author Tim Whitlock http://timwhitlock.info/
5
- * @date Thu, 12 Dec 2013 21:33:39 +0000
6
  */
7
- class LocoArray implements Iterator { private $i; private $length; private $keys; private $vals; private $index; public function __construct( array $data = array() ){ $this->keys = array_keys( $data ); $this->vals = array_values( $data ); $this->index = array_flip( array_map( 'strtolower', $this->keys ) ); $this->length = count( $this->keys ); $this->rewind(); } public function add( $key, $val ){ $k = strtolower($key); if( isset($this->index[$k]) ){ $this->keys[ $this->index[$k] ] = $key; $this->vals[ $this->index[$k] ] = $val; } else { $this->index[$k] = $this->length++; $this->keys[] = $key; $this->vals[] = $val; } return $this; } public function to_array(){ return array_combine( $this->keys, $this->vals ); } public function count(){ return $this->length; } public function trimmed( $prop ){ return trim( $this->__get($prop) ); } public function has( $key ){ return isset( $this->index[ strtolower($key) ] ); } public function __get( $key ){ $key = strtolower( $key ); return isset($this->index[$key]) ? $this->vals[ $this->index[$key] ] : null; } public function rewind(){ $this->i = reset( $this->index ); } public function key(){ return is_int($this->i) ? $this->keys[$this->i] : null; } public function current(){ return is_int($this->i) ? $this->vals[$this->i] : null; } public function valid(){ return is_int($this->i); } public function next(){ $this->i = next( $this->index ); } } define( 'LOCO_FLAG_OK', 0 ); define( 'LOCO_FLAG_ERROR', 1 ); define( 'LOCO_FLAG_REVIEW', 2 ); define( 'LOCO_FLAG_PENDING', 3 ); define( 'LOCO_FLAG_FUZZY', 4 ); function loco_flags(){ static $flags = array ( LOCO_FLAG_OK => 'Translated', LOCO_FLAG_ERROR => 'Incorrect', LOCO_FLAG_REVIEW => 'Needs review', LOCO_FLAG_PENDING => 'Pending sign-off', LOCO_FLAG_FUZZY => 'Fuzzy', ); return $flags; } function loco_flag( $f ){ $flags = loco_flags(); if( ! isset($flags[$f]) ){ throw new Exception('Invalid LOCO_FLAG_ constant ', var_export($f,1) ); } return $flags[$f]; } function loco_po_flags(){ static $map = array ( LOCO_FLAG_FUZZY => '#, fuzzy', ); return $map; } function loco_parse_po( $src ){ $i = -1; $key = ''; $entries = array(); $template = array( '#' => array(), 'id' => array(), 'str' => array(), 'ctxt' => array() ); foreach( preg_split('/[\r\n]+/', $src) as $line ){ while( $line = trim($line) ){ $c = $line{0}; if( '"' === $c ){ if( $key && isset($entry) ){ $entry[$key][$idx][] = loco_po_unquote( $line ); } } else if( '#' === $c ){ if( isset($entry['i']) ){ unset( $entry ); $entry = $template; } $f = empty($line{1}) ? ' ' : $line{1}; $entry['#'][$f][] = trim( substr( $line, 1+strlen($f) ), "/ \n\r\t" ); } else if( preg_match('/^msg(id|str|ctxt|id_plural)(?:\[(\d+)\])?[ \t]+/', $line, $r ) ){ $key = $r[1]; $idx = isset($r[2]) ? (int) $r[2] : 0; if( 'str' === $key ){ if( ! isset($entry['i']) ){ $entry['i'] = ++$i; $entries[$i] = &$entry; } } else if( ! isset($entry) || isset($entry['i']) ){ unset( $entry ); $entry = $template; } $line = substr( $line, strlen($r[0]) ); continue; } continue 2; } } unset( $entry ); $assets = array(); foreach( $entries as $i => $entry ){ $asset = array ( 'id' => '', 'source' => implode('',$entry['id'][0]), 'target' => implode('',$entry['str'][0]), ); if( isset($entry['ctxt'][0]) ){ $asset['context'] = implode('',$entry['ctxt'][0]); } $comments = array(); isset($entry['#'][' ']) and $comments = array_merge( $comments, $entry['#'][' ']); isset($entry['#']['.']) and $comments = array_merge( $comments, $entry['#']['.']); $comments and $asset['comment'] = implode("\n", $comments); if( isset($entry['#'][':']) ){ $asset['refs'] = implode( "\n", $entry['#'][':'] ); } if( isset($entry['#'][',']) ){ foreach( $entry['#'][','] as $flag ){ if( $flag = loco_po_parse_flag($flag) ){ $asset['flag'] = $flag; break; } } } $pidx = count($assets); $assets[] = $asset; if( isset($entry['id_plural']) || isset($entry['str'][1]) ){ $idx = 0; $num = max( 2, count($entry['str']) ); while( ++$idx < $num ){ $assets[] = array ( 'id' => '', 'parent' => $pidx, 'plural' => $idx, 'source' => isset($entry['id_plural'][0]) ? implode('',$entry['id_plural'][0]) : '', 'target' => isset($entry['str'][$idx]) ? implode('',$entry['str'][$idx]) : '', ); } } } return $assets; } function loco_po_parse_flag( $text, $flag = 0 ){ $map = loco_po_flags(); foreach( explode(',',$text) as $needle ){ if( $needle = trim($needle) ){ foreach( $map as $loco_flag => $haystack ){ if( false !== stripos($haystack, $needle) ){ $flag |= $loco_flag; break; } } } } return $flag; } function loco_po_unquote( $str ){ return substr( stripcslashes($str), 1, -1 ); } function loco_parse_po_headers( $str ){ $headers = new LocoArray( array() ); foreach( explode("\n",$str) as $line ){ $i = strpos($line,':') and $key = trim( substr($line,0,$i) ) and $headers->add( $key, trim( substr($line,++$i) ) ); } return $headers; } final class PHPTokens implements Iterator { private $tokens; private $i; private $skip_tokens = array(); private $skip_strings = array(); public function __construct( array $tokens ){ $this->tokens = $tokens; $this->rewind(); } public function ignore(){ foreach( func_get_args() as $t ){ if( is_int($t) ){ $this->skip_tokens[$t] = true; } else { $this->skip_strings[$t] = true; } } return $this; } public function advance(){ $this->next(); return $this->current(); } public function rewind(){ $this->i = false === reset($this->tokens) ? null : key($this->tokens); } public function valid(){ return isset($this->i); } public function key(){ return $this->i; } public function next(){ $this->i = false === next($this->tokens) ? null : key($this->tokens); } public function current(){ while( isset($this->i) ){ $tok = $this->tokens[$this->i]; if( is_array($tok) ){ if( isset($this->skip_tokens[$tok[0]]) ){ $this->next(); } else { return $tok; } } else if( isset($this->skip_strings[$tok]) ){ $this->next(); } else { return $tok; } } return false; } } function loco_parse_comment($comment){ if( '*' === $comment{1} ){ $lines = array(); foreach( explode("\n", $comment) as $line ){ $line and $lines[] = trim($line,"/* \r\t"); } $comment = implode("\n", $lines); } return trim( $comment,"/ \n\r\t" ); } function decapse_string( $s ){ if( empty($s) ){ return ''; } $q = $s{0}; switch( $q ){ case "'": case '"': $s = substr( $s, 1, -1 ); if( '"' === $q ){ return stripcslashes($s); } return str_replace( array( '\\'.$q, '\\\\' ), array( $q, '\\' ), $s ); default: trigger_error( "Bad quote character ($q) at offset 0", E_USER_NOTICE ); return $s; } } function loco_extract_php( array $tokens, $fileref = '' ){ $extractor = new LocoPHPExtractor; return $extractor->extract( $tokens, $fileref ); } final class LocoPHPExtractor { private static $rules = array ( '_' => 's', 'gettext' => 's', 'dgettext' => '_s', 'ngettext' => 'sp', 'dngettext' => '_sp', '__' => 's', '_e' => 's', '_c' => 's', '_n' => 'sp', '_n_noop' => 'sp', '_nc' => 'sp', '__ngettext' => 'sp', '__ngettext_noop' => 'sp', '_x' => 'sc', '_ex' => 'sc', '_nx' => 'sp_c', '_nx_noop' => 'spc', '_n_js' => 'sp', '_nx_js' => 'spc', 'esc_attr__' => 's', 'esc_html__' => 's', 'esc_attr_e' => 's', 'esc_html_e' => 's', 'esc_attr_x' => 'sc', 'esc_html_x' => 'sc', 'comments_number_link' => '_sp', 't' => 's', 'st' => 's', 'trans' => 's', 'transChoice' => 'sp', ); private $exp = array(); private $reg = array(); public function extract( array $tokens, $fileref = '' ){ $tokens = new PHPTokens( $tokens ); $tokens->ignore( T_WHITESPACE ); $comment = ''; foreach( $tokens as $tok ){ if( isset($args) ){ if( ')' === $tok ){ isset($arg) and $arg and $args[] = $arg; $this->push( $rule, $args, $comment, $ref ); unset($args,$arg); $comment = ''; } else if( ',' === $tok ){ isset($arg) and $arg and $args[] = $arg; unset($arg); } else if( isset($arg) ){ $arg[] = $tok; } else { $arg = array( $tok ); } } else if( is_array($tok) ){ list($t,$s) = $tok; if( T_COMMENT === $t || T_DOC_COMMENT === $t ){ $comment = $s; } else if( T_STRING === $t && isset(self::$rules[$s]) && '(' === $tokens->advance() ){ $rule = self::$rules[$s]; $args = array(); $ref = $fileref ? $fileref.':'.$tok[2]: ''; } else if( $comment && false === stripos($comment, 'translators') ){ $comment = ''; } } } return $this->exp; } private function push( $rule, array $args, $comment = '', $ref = '' ){ $s = strpos( $rule, 's'); $p = strpos( $rule, 'p'); $c = strpos( $rule, 'c'); foreach( $args as $i => $tokens ){ if( 1 === count($tokens) && is_array($tokens[0]) && T_CONSTANT_ENCAPSED_STRING === $tokens[0][0] ){ $args[$i] = decapse_string( $tokens[0][1] ); } else { $args[$i] = null; } } $key = $msgid = $args[$s]; if( ! $msgid ){ return null; } $entry = array ( 'id' => '', 'source' => $msgid, 'target' => '', ); if( $c && isset($args[$c]) ){ $entry['context'] = $args[$c]; $key .= "\0". $args[$c]; } if( $ref ){ $entry['refs'] = $ref; } if( $comment ){ $entry['comment'] = loco_parse_comment($comment); } if( isset($this->reg[$key]) ){ $index = $this->reg[$key]; $a = array(); isset($this->exp[$index]['refs']) and $a[] = $this->exp[$index]['refs']; isset($entry['refs']) and $a[] = $entry['refs']; $a && $this->exp[$index]['refs'] = implode(" ", $a ); $a = array(); isset($this->exp[$index]['comment']) and $a[] = $this->exp[$index]['comment']; isset($entry['comment']) and $a[] = $entry['comment']; $a && $this->exp[$index]['comment'] = implode("\n", $a ); } else { $index = count($this->exp); $this->reg[$key] = $index; $this->exp[] = $entry; } if( $p && isset($args[$p]) ){ $msgid_plural = $args[$p]; $entry = array ( 'id' => '', 'source' => $msgid_plural, 'target' => '', 'plural' => 1, 'parent' => $index, ); $key = $msgid_plural."\0\0"; if( isset($this->reg[$key]) ){ $plural_index = $this->reg[$key]; $this->exp[$plural_index] = $entry; } else { $plural_index = count($this->exp); $this->reg[$key] = $plural_index; $this->exp[] = $entry; } } return $index; } public function get_xgettext( $input = '-' ){ $cmd = defined('WHICH_XGETTEXT') ? WHICH_XGETTEXT : 'xgettext'; $cmd.= ' -LPHP -c -o-'; if( $k = $this->get_xgettext_keywords() ){ $cmd.= ' -k'.implode(' -k', $k ); } return $cmd.' '.$input; } public function get_xgettext_keywords(){ $ks = array(); foreach( self::$rules as $word => $rule ){ $s = strpos( $rule, 's'); $k = $word.':'.++$s; if( false !== $p = strpos( $rule, 'p') ){ $k.= ','.++$p; } if( false !== $p = strpos( $rule, 'c') ){ $k.= ','.++$p.'c'; } $ks[] = $k; } return $ks; } } function loco_relative_path( $source_path, $target_path ){ $rel = ''; $common = false; $src = preg_split('!/+!', $source_path, -1, PREG_SPLIT_NO_EMPTY ); $dst = preg_split('!/+!', $target_path, -1, PREG_SPLIT_NO_EMPTY ); while( $src && $dst ){ if( current($src) !== current($dst) ){ break; } $common = true; array_shift($src); array_shift($dst); } if( ! $common ){ return $target_path; } if( $src ){ $up = array_fill( 0, count($src), '..' ); $rel = implode('/', $up ); } if( $dst ){ $rel && $rel .= '/'; $rel .= implode('/', $dst ); } return $rel; } function loco_po_stats( array $po ){ $t = $n = $f = $u = 0; foreach( $po as $r ){ if( ! isset($r['source']) || '' === $r['source'] ){ continue; } if( isset($r['parent']) && is_int($r['parent']) ){ continue; } $t++; if( '' === $r['target'] ){ $u++; } else if( isset($r['flag']) && LOCO_FLAG_FUZZY === $r['flag'] ){ $f++; } else { $n++; } } $r = $t && $n ? $n / $t : 0; $p = (string) round( $r * 100 ); return compact('t','p','f','u'); }
2
  /**
3
  * Compiled source code - DO NOT EDIT!
4
  * @author Tim Whitlock http://timwhitlock.info/
5
+ * @date Sat, 04 Jan 2014 20:28:03 +0000
6
  */
7
+ class LocoArray implements Iterator { private $i; private $length; private $keys; private $vals; private $index; public function __construct( array $data = array() ){ $this->keys = array_keys( $data ); $this->vals = array_values( $data ); $this->index = array_flip( array_map( 'strtolower', $this->keys ) ); $this->length = count( $this->keys ); $this->rewind(); } public function add( $key, $val ){ $k = strtolower($key); if( isset($this->index[$k]) ){ $this->keys[ $this->index[$k] ] = $key; $this->vals[ $this->index[$k] ] = $val; } else { $this->index[$k] = $this->length++; $this->keys[] = $key; $this->vals[] = $val; } return $this; } public function to_array(){ return array_combine( $this->keys, $this->vals ); } function __toString(){ $pairs = array(); foreach( $this->keys as $i => $key ){ $pairs[] = trim($key).': '.$this->vals[$i]; } return implode("\n", $pairs ); } public function count(){ return $this->length; } public function trimmed( $prop ){ return trim( $this->__get($prop) ); } public function has( $key ){ return isset( $this->index[ strtolower($key) ] ); } public function __get( $key ){ $key = strtolower( $key ); return isset($this->index[$key]) ? $this->vals[ $this->index[$key] ] : null; } public function rewind(){ $this->i = reset( $this->index ); } public function key(){ return is_int($this->i) ? $this->keys[$this->i] : null; } public function current(){ return is_int($this->i) ? $this->vals[$this->i] : null; } public function valid(){ return is_int($this->i); } public function next(){ $this->i = next( $this->index ); } } define( 'LOCO_FLAG_OK', 0 ); define( 'LOCO_FLAG_ERROR', 1 ); define( 'LOCO_FLAG_REVIEW', 2 ); define( 'LOCO_FLAG_PENDING', 3 ); define( 'LOCO_FLAG_FUZZY', 4 ); function loco_flags(){ static $flags = array ( LOCO_FLAG_OK => 'Translated', LOCO_FLAG_ERROR => 'Incorrect', LOCO_FLAG_REVIEW => 'Needs review', LOCO_FLAG_PENDING => 'Pending sign-off', LOCO_FLAG_FUZZY => 'Fuzzy', ); return $flags; } function loco_flag( $f ){ $flags = loco_flags(); if( ! isset($flags[$f]) ){ throw new Exception('Invalid LOCO_FLAG_ constant ', var_export($f,1) ); } return $flags[$f]; } function loco_po_flags(){ static $map = array ( LOCO_FLAG_FUZZY => '#, fuzzy', ); return $map; } function loco_parse_po( $src ){ $i = -1; $key = ''; $entries = array(); $template = array( '#' => array(), 'id' => array(), 'str' => array(), 'ctxt' => array() ); foreach( preg_split('/[\r\n]+/', $src) as $line ){ while( $line = trim($line) ){ $c = $line{0}; if( '"' === $c ){ if( $key && isset($entry) ){ $entry[$key][$idx][] = loco_po_unquote( $line ); } } else if( '#' === $c ){ if( isset($entry['i']) ){ unset( $entry ); $entry = $template; } $f = empty($line{1}) ? ' ' : $line{1}; $entry['#'][$f][] = trim( substr( $line, 1+strlen($f) ), "/ \n\r\t" ); } else if( preg_match('/^msg(id|str|ctxt|id_plural)(?:\[(\d+)\])?[ \t]+/', $line, $r ) ){ $key = $r[1]; $idx = isset($r[2]) ? (int) $r[2] : 0; if( 'str' === $key ){ if( ! isset($entry['i']) ){ $entry['i'] = ++$i; $entries[$i] = &$entry; } } else if( ! isset($entry) || isset($entry['i']) ){ unset( $entry ); $entry = $template; } $line = substr( $line, strlen($r[0]) ); continue; } continue 2; } } unset( $entry ); $assets = array(); foreach( $entries as $i => $entry ){ $asset = array ( 'id' => '', 'source' => implode('',$entry['id'][0]), 'target' => implode('',$entry['str'][0]), ); if( isset($entry['ctxt'][0]) ){ $asset['context'] = implode('',$entry['ctxt'][0]); } $comments = array(); isset($entry['#'][' ']) and $comments = array_merge( $comments, $entry['#'][' ']); isset($entry['#']['.']) and $comments = array_merge( $comments, $entry['#']['.']); $comments and $asset['comment'] = implode("\n", $comments); if( isset($entry['#'][':']) ){ $asset['refs'] = implode( "\n", $entry['#'][':'] ); } if( isset($entry['#'][',']) ){ foreach( $entry['#'][','] as $flag ){ if( $flag = loco_po_parse_flag($flag) ){ $asset['flag'] = $flag; break; } } } $pidx = count($assets); $assets[] = $asset; if( isset($entry['id_plural']) || isset($entry['str'][1]) ){ $idx = 0; $num = max( 2, count($entry['str']) ); while( ++$idx < $num ){ $assets[] = array ( 'id' => '', 'parent' => $pidx, 'plural' => $idx, 'source' => isset($entry['id_plural'][0]) ? implode('',$entry['id_plural'][0]) : '', 'target' => isset($entry['str'][$idx]) ? implode('',$entry['str'][$idx]) : '', ); } } } return $assets; } function loco_po_parse_flag( $text, $flag = 0 ){ $map = loco_po_flags(); foreach( explode(',',$text) as $needle ){ if( $needle = trim($needle) ){ foreach( $map as $loco_flag => $haystack ){ if( false !== stripos($haystack, $needle) ){ $flag |= $loco_flag; break; } } } } return $flag; } function loco_po_unquote( $str ){ return substr( stripcslashes($str), 1, -1 ); } function loco_parse_po_headers( $str ){ $headers = new LocoArray( array() ); foreach( explode("\n",$str) as $line ){ $i = strpos($line,':') and $key = trim( substr($line,0,$i) ) and $headers->add( $key, trim( substr($line,++$i) ) ); } return $headers; } final class PHPTokens implements Iterator { private $tokens; private $i; private $skip_tokens = array(); private $skip_strings = array(); public function __construct( array $tokens ){ $this->tokens = $tokens; $this->rewind(); } public function ignore(){ foreach( func_get_args() as $t ){ if( is_int($t) ){ $this->skip_tokens[$t] = true; } else { $this->skip_strings[$t] = true; } } return $this; } public function advance(){ $this->next(); return $this->current(); } public function rewind(){ $this->i = false === reset($this->tokens) ? null : key($this->tokens); } public function valid(){ return isset($this->i); } public function key(){ return $this->i; } public function next(){ $this->i = false === next($this->tokens) ? null : key($this->tokens); } public function current(){ while( isset($this->i) ){ $tok = $this->tokens[$this->i]; if( is_array($tok) ){ if( isset($this->skip_tokens[$tok[0]]) ){ $this->next(); } else { return $tok; } } else if( isset($this->skip_strings[$tok]) ){ $this->next(); } else { return $tok; } } return false; } } function loco_parse_comment($comment){ if( '*' === $comment{1} ){ $lines = array(); foreach( explode("\n", $comment) as $line ){ $line and $lines[] = trim($line,"/* \r\t"); } $comment = implode("\n", $lines); } return trim( $comment,"/ \n\r\t" ); } function decapse_string( $s ){ if( empty($s) ){ return ''; } $q = $s{0}; switch( $q ){ case "'": case '"': $s = substr( $s, 1, -1 ); if( '"' === $q ){ return stripcslashes($s); } return str_replace( array( '\\'.$q, '\\\\' ), array( $q, '\\' ), $s ); default: trigger_error( "Bad quote character ($q) at offset 0", E_USER_NOTICE ); return $s; } } function loco_extract_php( array $tokens, $fileref = '' ){ $extractor = new LocoPHPExtractor; return $extractor->extract( $tokens, $fileref ); } final class LocoPHPExtractor { private static $rules = array ( '_' => 's', 'gettext' => 's', 'dgettext' => '_s', 'ngettext' => 'sp', 'dngettext' => '_sp', '__' => 's', '_e' => 's', '_c' => 's', '_n' => 'sp', '_n_noop' => 'sp', '_nc' => 'sp', '__ngettext' => 'sp', '__ngettext_noop' => 'sp', '_x' => 'sc', '_ex' => 'sc', '_nx' => 'sp_c', '_nx_noop' => 'spc', '_n_js' => 'sp', '_nx_js' => 'spc', 'esc_attr__' => 's', 'esc_html__' => 's', 'esc_attr_e' => 's', 'esc_html_e' => 's', 'esc_attr_x' => 'sc', 'esc_html_x' => 'sc', 'comments_number_link' => '_sp', 't' => 's', 'st' => 's', 'trans' => 's', 'transChoice' => 'sp', ); private $exp = array(); private $reg = array(); public function extract( array $tokens, $fileref = '' ){ $tokens = new PHPTokens( $tokens ); $tokens->ignore( T_WHITESPACE ); $comment = ''; foreach( $tokens as $tok ){ if( isset($args) ){ if( ')' === $tok ){ isset($arg) and $arg and $args[] = $arg; $this->push( $rule, $args, $comment, $ref ); unset($args,$arg); $comment = ''; } else if( ',' === $tok ){ isset($arg) and $arg and $args[] = $arg; unset($arg); } else if( isset($arg) ){ $arg[] = $tok; } else { $arg = array( $tok ); } } else if( is_array($tok) ){ list($t,$s) = $tok; if( T_COMMENT === $t || T_DOC_COMMENT === $t ){ $comment = $s; } else if( T_STRING === $t && isset(self::$rules[$s]) && '(' === $tokens->advance() ){ $rule = self::$rules[$s]; $args = array(); $ref = $fileref ? $fileref.':'.$tok[2]: ''; } else if( $comment && false === stripos($comment, 'translators') ){ $comment = ''; } } } return $this->exp; } private function push( $rule, array $args, $comment = '', $ref = '' ){ $s = strpos( $rule, 's'); $p = strpos( $rule, 'p'); $c = strpos( $rule, 'c'); foreach( $args as $i => $tokens ){ if( 1 === count($tokens) && is_array($tokens[0]) && T_CONSTANT_ENCAPSED_STRING === $tokens[0][0] ){ $args[$i] = decapse_string( $tokens[0][1] ); } else { $args[$i] = null; } } $key = $msgid = $args[$s]; if( ! $msgid ){ return null; } $entry = array ( 'id' => '', 'source' => $msgid, 'target' => '', ); if( $c && isset($args[$c]) ){ $entry['context'] = $args[$c]; $key .= "\0". $args[$c]; } if( $ref ){ $entry['refs'] = $ref; } if( $comment ){ $entry['comment'] = loco_parse_comment($comment); } if( isset($this->reg[$key]) ){ $index = $this->reg[$key]; $a = array(); isset($this->exp[$index]['refs']) and $a[] = $this->exp[$index]['refs']; isset($entry['refs']) and $a[] = $entry['refs']; $a && $this->exp[$index]['refs'] = implode(" ", $a ); $a = array(); isset($this->exp[$index]['comment']) and $a[] = $this->exp[$index]['comment']; isset($entry['comment']) and $a[] = $entry['comment']; $a && $this->exp[$index]['comment'] = implode("\n", $a ); } else { $index = count($this->exp); $this->reg[$key] = $index; $this->exp[] = $entry; } if( $p && isset($args[$p]) ){ $msgid_plural = $args[$p]; $entry = array ( 'id' => '', 'source' => $msgid_plural, 'target' => '', 'plural' => 1, 'parent' => $index, ); $key = $msgid_plural."\0\0"; if( isset($this->reg[$key]) ){ $plural_index = $this->reg[$key]; $this->exp[$plural_index] = $entry; } else { $plural_index = count($this->exp); $this->reg[$key] = $plural_index; $this->exp[] = $entry; } } return $index; } public function get_xgettext( $input = '-' ){ $cmd = defined('WHICH_XGETTEXT') ? WHICH_XGETTEXT : 'xgettext'; $cmd.= ' -LPHP -c -o-'; if( $k = $this->get_xgettext_keywords() ){ $cmd.= ' -k'.implode(' -k', $k ); } return $cmd.' '.$input; } public function get_xgettext_keywords(){ $ks = array(); foreach( self::$rules as $word => $rule ){ $s = strpos( $rule, 's'); $k = $word.':'.++$s; if( false !== $p = strpos( $rule, 'p') ){ $k.= ','.++$p; } if( false !== $p = strpos( $rule, 'c') ){ $k.= ','.++$p.'c'; } $ks[] = $k; } return $ks; } } function loco_relative_path( $source_path, $target_path ){ $rel = ''; $common = false; $src = preg_split('!/+!', $source_path, -1, PREG_SPLIT_NO_EMPTY ); $dst = preg_split('!/+!', $target_path, -1, PREG_SPLIT_NO_EMPTY ); while( $src && $dst ){ if( current($src) !== current($dst) ){ break; } $common = true; array_shift($src); array_shift($dst); } if( ! $common ){ return $target_path; } if( $src ){ $up = array_fill( 0, count($src), '..' ); $rel = implode('/', $up ); } if( $dst ){ $rel && $rel .= '/'; $rel .= implode('/', $dst ); } return $rel; } class LocoMo { private $bin; private $msgs; private $head; private $hash; public function __construct( array $export, LocoArray $head = null ){ if( ! $head ){ $head = new LocoArray( array( 'Project-Id-Version' => 'None', 'MIME-Version' => '1.0', 'Content-Type' => 'text/plain; charset=UTF-8', 'Content-Transfer-Encoding' => '8bit', 'X-Generator' => 'Loco '.PLUG_HTTP_ADDR, ) ); } $this->head = $head; $this->msgs = $export; $this->bin = ''; } public function enableHash(){ return $this->hash = new LocoMoTable; } public function setHeader( $key, $val ){ $this->head->add($key, $val); return $this; } public function setProject( LocoProject $Proj ){ return $this ->setHeader( 'Project-Id-Version', $Proj->proj_name ) ->setHeader($key, $val) ; } public function setLocale( LocoProjectLocale $Loc ){ return $this ->setHeader( 'Language', $Loc->label ) ->setHeader( 'Plural-Forms', 'nplurals='.$Loc->nplurals.'; plural='.$Loc->pluraleq.';' ) ; } public function count(){ return count($this->msgs); } public function compile(){ $table = array(''); $sources = array(''); $targets = array( $this->head->__toString() ); foreach( $this->msgs as $r ){ $msgid = $r['key']; if( isset($r['context']) && $r['context'] ){ $msgid or $msgid = "(".$r['context'].')'; $msgid = $r['context']."\x04".$msgid; } if( ! $msgid ){ continue; } $msgstr = $r['translation']; if( ! $msgstr ){ continue; } $table[] = $msgid; if( isset($r['plurals']) ){ foreach( $r['plurals'] as $i => $p ){ if( $i === 0 ){ $msgid .= "\0".$p['key']; } $msgstr .= "\0".$p['translation']; } } $sources[] = $msgid; $targets[] = $msgstr; } asort( $sources, SORT_STRING ); $this->bin = ''; $this->writeInteger( 0x950412de ); $this->writeInteger( 0 ); $n = count($sources); $this->writeInteger( $n ); $offset = 28; $this->writeInteger( $offset ); $offset += $n * 8; $this->writeInteger( $offset ); if( $this->hash ){ sort( $table, SORT_STRING ); $this->hash->compile( $table ); $s = $this->hash->count(); } else { $s = 0; } $this->writeInteger( $s ); $offset += $n * 8; $this->writeInteger( $offset ); if( $s ){ $offset += $s * 4; } $source = ''; foreach( $sources as $i => $str ){ $source .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } $target = ''; foreach( array_keys($sources) as $i ){ $str = $targets[$i]; $target .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } if( $this->hash ){ $this->bin .= $this->hash->__toString(); } $this->bin .= $source; $this->bin .= $target; return $this->bin; } private function writeInteger( $num ){ $this->bin .= pack( 'V', $num ); return $this; } } class LocoMoTable { private $size = 0; private $bin = ''; private $map; public function __construct( $data = null ){ if( is_array($data) ){ $this->compile( $data ); } else if( $data ){ $this->parse( $data ); } } public function count(){ if( ! isset($this->size) ){ if( $this->bin ){ $this->size = (int) ( strlen( $this->bin ) / 4 ); } else if( is_array($this->map) ){ $this->size = count($this->map); } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2'); } } return $this->size; } public function bytes(){ return $this->count() * 4; } public function __toString(){ return $this->bin; } public function export(){ if( ! is_array($this->map) ){ $this->parse( $this->bin ); } return $this->map; } private function reset( $length ){ $this->size = max( 3, self::next_prime ( $length * 4 / 3 ) ); $this->bin = null; $this->map = array(); return $this->size; } public function compile( array $msgids ){ $hash_tab_size = $this->reset( count($msgids) ); $packed = array_fill( 0, $hash_tab_size, "\0\0\0\0" ); $j = 0; foreach( $msgids as $msgid ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $hash_tab_size; if( array_key_exists($idx, $this->map) ){ $incr = 1 + ( $hash_val % ( $hash_tab_size - 2 ) ); do { $idx += $incr; if( $hash_val === $idx ){ throw new Exception('Unable to find empty slot in hash table'); } $idx %= $hash_tab_size; } while( array_key_exists($idx, $this->map ) ); } $this->map[$idx] = $j; $packed[$idx] = pack('V', ++$j ); } return $this->bin = implode('',$packed); } public function lookup( $msgid, array $msgids ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $this->size; $incr = 1 + ( $hash_val % ( $this->size - 2 ) ); while( true ){ if( ! array_key_exists($idx, $this->map) ){ break; } $j = $this->map[$idx]; if( isset($msgids[$j]) && $msgid === $msgids[$j] ){ return $j; } $idx += $incr; if( $idx === $hash_val ){ break; } $idx %= $this->size; } return -1; } public function parse( $bin ){ $this->bin = (string) $bin; $this->size = null; $hash_tab_size = $this->count(); $this->map = array(); $idx = -1; $byte = 0; while( ++$idx < $hash_tab_size ){ $word = substr( $this->bin, $byte, 4 ); if( "\0\0\0\0" !== $word ){ list(,$j) = unpack('V', $word ); $this->map[$idx] = $j - 1; } $byte += 4; } return $this->map; } public static function hashpjw( $str ){ $i = -1; $hval = 0; $len = strlen($str); while( ++$i < $len ){ $ord = ord( $str{$i} ); $hval = ( $hval << 4 ) + $ord; $g = $hval & 0xf0000000; if( $g !== 0 ){ $hval ^= $g >> 24; $hval ^= $g; } } return $hval; } private static function next_prime( $seed ){ $seed |= 1; while ( ! self::is_prime($seed) ){ $seed += 2; } return $seed; } private static function is_prime( $num ) { if ($num === 1 ){ return false; } if( $num === 2 ){ return true; } if( $num % 2 == 0 ) { return false; } for( $i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) { if($num % $i == 0 ){ return false; } } return true; } } function loco_msgfmt( $po, $withhash = false ){ if( ! is_array($po) ){ $po = loco_parse_po( $po ); } $head = null; if( isset($po[0]) && '' === $po[0]['source'] ){ $head = loco_parse_po_headers( $po[0]['target'] ); $po[0] = null; } $export = array(); foreach( $po as $i => $r ){ if( ! $r ){ continue; } $msg = array ( 'key' => $r['source'], 'translation' => $r['target'], ); if( isset($r['parent']) ){ unset( $parent ); $parent = &$export[ $r['parent'] ]; isset($parent['plurals']) or $parent['plurals'] = array(); $parent['plurals'][] = $msg; } else { isset($r['context']) and $msg['context'] = $r['context']; $export[$i] = $msg; } } $mo = new LocoMo( $export, $head ); if( $withhash ){ $mo->enableHash(); } return $mo->compile(); } function loco_po_stats( array $po ){ $t = $n = $f = $u = 0; foreach( $po as $r ){ if( ! isset($r['source']) || '' === $r['source'] ){ continue; } if( isset($r['parent']) && is_int($r['parent']) ){ continue; } $t++; if( '' === $r['target'] ){ $u++; } else if( isset($r['flag']) && LOCO_FLAG_FUZZY === $r['flag'] ){ $f++; } else { $n++; } } $r = $t && $n ? $n / $t : 0; $p = (string) round( $r * 100 ); return compact('t','p','f','u'); }
lib/build/locales-compiled.php CHANGED
@@ -2,6 +2,6 @@
2
  /**
3
  * Compiled source code - DO NOT EDIT!
4
  * @author Tim Whitlock http://timwhitlock.info/
5
- * @date Thu, 12 Dec 2013 21:33:39 +0000
6
  */
7
  return unserialize('a:130:{s:5:"af_ZA";s:24:"Afrikaans (South Africa)";s:5:"ar_AE";s:29:"Arabic (United Arab Emirates)";s:5:"ar_IL";s:15:"Arabic (Israel)";s:5:"az_TR";s:20:"Azerbaijani (Turkey)";s:5:"bg_BG";s:9:"Bulgarian";s:5:"bn_BD";s:20:"Bengali (Bangladesh)";s:5:"bs_BA";s:30:"Bosnian (Bosnia & Herzegovina)";s:5:"cs_CZ";s:5:"Czech";s:5:"cy_GB";s:5:"Welsh";s:5:"da_DK";s:6:"Danish";s:5:"de_AT";s:16:"German (Austria)";s:5:"de_CH";s:20:"German (Switzerland)";s:5:"de_DE";s:6:"German";s:5:"el_CY";s:14:"Greek (Cyprus)";s:5:"el_GR";s:5:"Greek";s:5:"en_AE";s:30:"English (United Arab Emirates)";s:5:"en_AU";s:19:"English (Australia)";s:5:"en_CA";s:16:"English (Canada)";s:5:"en_GB";s:12:"English (UK)";s:5:"en_HK";s:19:"English (Hong Kong)";s:5:"en_IE";s:17:"English (Ireland)";s:5:"en_IN";s:15:"English (India)";s:5:"en_NZ";s:21:"English (New Zealand)";s:5:"en_SG";s:19:"English (Singapore)";s:5:"en_US";s:13:"English (USA)";s:5:"en_ZA";s:22:"English (South Africa)";s:5:"es_AR";s:19:"Spanish (Argentina)";s:5:"es_BO";s:17:"Spanish (Bolivia)";s:5:"es_CL";s:15:"Spanish (Chile)";s:5:"es_CO";s:18:"Spanish (Colombia)";s:5:"es_CR";s:20:"Spanish (Costa Rica)";s:5:"es_CU";s:14:"Spanish (Cuba)";s:5:"es_DO";s:28:"Spanish (Dominican Republic)";s:5:"es_EC";s:17:"Spanish (Ecuador)";s:5:"es_ES";s:7:"Spanish";s:5:"es_GT";s:19:"Spanish (Guatemala)";s:5:"es_HN";s:18:"Spanish (Honduras)";s:5:"es_MX";s:16:"Spanish (Mexico)";s:5:"es_NI";s:19:"Spanish (Nicaragua)";s:5:"es_PA";s:16:"Spanish (Panama)";s:5:"es_PE";s:14:"Spanish (Peru)";s:5:"es_PY";s:18:"Spanish (Paraguay)";s:5:"es_SV";s:21:"Spanish (El Salvador)";s:5:"es_UY";s:17:"Spanish (Uruguay)";s:5:"es_VE";s:19:"Spanish (Venezuela)";s:5:"et_EE";s:8:"Estonian";s:5:"fa_AF";s:21:"Persian (Afghanistan)";s:5:"fa_IR";s:14:"Persian (Iran)";s:5:"fi_FI";s:7:"Finnish";s:5:"fo_DK";s:17:"Faroese (Denmark)";s:5:"fo_FO";s:23:"Faroese (Faroe Islands)";s:5:"fr_BE";s:16:"French (Belgium)";s:5:"fr_CA";s:15:"French (Canada)";s:5:"fr_CH";s:20:"French (Switzerland)";s:5:"fr_FR";s:6:"French";s:5:"fr_HT";s:14:"French (Haiti)";s:5:"ga_IE";s:15:"Irish (Ireland)";s:5:"gl_ES";s:16:"Galician (Spain)";s:5:"gn_PY";s:18:"Guarani (Paraguay)";s:5:"he_IL";s:15:"Hebrew (Israel)";s:5:"hi_IN";s:13:"Hindi (India)";s:5:"hr_HR";s:8:"Croatian";s:5:"ht_HT";s:14:"Haitian Creole";s:5:"hu_HU";s:9:"Hungarian";s:5:"hy_AM";s:8:"Armenian";s:5:"id_ID";s:10:"Indonesian";s:5:"is_IS";s:9:"Icelandic";s:5:"it_CH";s:21:"Italian (Switzerland)";s:5:"it_IT";s:7:"Italian";s:5:"ja_JP";s:8:"Japanese";s:5:"jv_ID";s:20:"Javanese (Indonesia)";s:5:"ka_GE";s:8:"Georgian";s:5:"kk_KZ";s:6:"Kazakh";s:5:"kn_IN";s:15:"Kannada (India)";s:5:"ko_KR";s:6:"Korean";s:5:"lb_LU";s:13:"Luxembourgish";s:5:"li_NL";s:24:"Limburgish (Netherlands)";s:5:"lo_LA";s:10:"Lao (Laos)";s:5:"lt_LT";s:10:"Lithuanian";s:5:"lv_LV";s:7:"Latvian";s:5:"mg_MG";s:21:"Malagasy (Madagascar)";s:5:"ms_MY";s:16:"Malay (Malaysia)";s:5:"mt_MT";s:7:"Maltese";s:5:"my_MM";s:17:"Burmese (Myanmar)";s:5:"nb_NO";s:7:"Bokmål";s:5:"ne_NP";s:6:"Nepali";s:5:"nl_BE";s:15:"Dutch (Belgium)";s:5:"nl_NL";s:5:"Dutch";s:5:"nn_NO";s:7:"Nynorsk";s:5:"no_NO";s:9:"Norwegian";s:5:"os_GE";s:18:"Ossetian (Georgia)";s:5:"os_RU";s:17:"Ossetian (Russia)";s:5:"os_TR";s:17:"Ossetian (Turkey)";s:5:"pa_IN";s:15:"Punjabi (India)";s:5:"pl_PL";s:6:"Polish";s:5:"pt_BR";s:19:"Portuguese (Brazil)";s:5:"pt_PT";s:10:"Portuguese";s:5:"ro_RO";s:8:"Romanian";s:5:"ru_RU";s:7:"Russian";s:5:"ru_UA";s:17:"Russian (Ukraine)";s:5:"sa_IN";s:16:"Sanskrit (India)";s:5:"sc_IT";s:17:"Sardinian (Italy)";s:5:"sd_PK";s:17:"Sindhi (Pakistan)";s:5:"si_LK";s:19:"Sinhala (Sri Lanka)";s:5:"sk_SK";s:6:"Slovak";s:5:"sl_SI";s:9:"Slovenian";s:5:"so_SO";s:6:"Somali";s:5:"sq_AL";s:18:"Albanian (Albania)";s:5:"sr_RS";s:7:"Serbian";s:5:"su_ID";s:21:"Sundanese (Indonesia)";s:5:"sv_SE";s:7:"Swedish";s:5:"sw_KE";s:15:"Swahili (Kenya)";s:5:"sw_KM";s:17:"Swahili (Comoros)";s:5:"sw_TZ";s:18:"Swahili (Tanzania)";s:5:"sw_UG";s:16:"Swahili (Uganda)";s:5:"ta_IN";s:13:"Tamil (India)";s:5:"ta_LK";s:17:"Tamil (Sri Lanka)";s:5:"te_IN";s:14:"Telugu (India)";s:5:"tg_TJ";s:18:"Tajik (Tajikistan)";s:5:"th_TW";s:13:"Thai (Taiwan)";s:5:"tr_TR";s:7:"Turkish";s:5:"ug_CN";s:14:"Uyghur (China)";s:5:"uk_UA";s:19:"Ukrainian (Ukraine)";s:5:"ur_IN";s:12:"Urdu (India)";s:5:"ur_PK";s:15:"Urdu (Pakistan)";s:5:"uz_UZ";s:18:"Uzbek (Uzbekistan)";s:5:"vi_VN";s:10:"Vietnamese";s:5:"zh_CN";s:7:"Chinese";s:5:"zh_HK";s:19:"Chinese (Hong Kong)";s:5:"zh_TW";s:16:"Chinese (Taiwan)";}');
2
  /**
3
  * Compiled source code - DO NOT EDIT!
4
  * @author Tim Whitlock http://timwhitlock.info/
5
+ * @date Sat, 04 Jan 2014 20:28:03 +0000
6
  */
7
  return unserialize('a:130:{s:5:"af_ZA";s:24:"Afrikaans (South Africa)";s:5:"ar_AE";s:29:"Arabic (United Arab Emirates)";s:5:"ar_IL";s:15:"Arabic (Israel)";s:5:"az_TR";s:20:"Azerbaijani (Turkey)";s:5:"bg_BG";s:9:"Bulgarian";s:5:"bn_BD";s:20:"Bengali (Bangladesh)";s:5:"bs_BA";s:30:"Bosnian (Bosnia & Herzegovina)";s:5:"cs_CZ";s:5:"Czech";s:5:"cy_GB";s:5:"Welsh";s:5:"da_DK";s:6:"Danish";s:5:"de_AT";s:16:"German (Austria)";s:5:"de_CH";s:20:"German (Switzerland)";s:5:"de_DE";s:6:"German";s:5:"el_CY";s:14:"Greek (Cyprus)";s:5:"el_GR";s:5:"Greek";s:5:"en_AE";s:30:"English (United Arab Emirates)";s:5:"en_AU";s:19:"English (Australia)";s:5:"en_CA";s:16:"English (Canada)";s:5:"en_GB";s:12:"English (UK)";s:5:"en_HK";s:19:"English (Hong Kong)";s:5:"en_IE";s:17:"English (Ireland)";s:5:"en_IN";s:15:"English (India)";s:5:"en_NZ";s:21:"English (New Zealand)";s:5:"en_SG";s:19:"English (Singapore)";s:5:"en_US";s:13:"English (USA)";s:5:"en_ZA";s:22:"English (South Africa)";s:5:"es_AR";s:19:"Spanish (Argentina)";s:5:"es_BO";s:17:"Spanish (Bolivia)";s:5:"es_CL";s:15:"Spanish (Chile)";s:5:"es_CO";s:18:"Spanish (Colombia)";s:5:"es_CR";s:20:"Spanish (Costa Rica)";s:5:"es_CU";s:14:"Spanish (Cuba)";s:5:"es_DO";s:28:"Spanish (Dominican Republic)";s:5:"es_EC";s:17:"Spanish (Ecuador)";s:5:"es_ES";s:7:"Spanish";s:5:"es_GT";s:19:"Spanish (Guatemala)";s:5:"es_HN";s:18:"Spanish (Honduras)";s:5:"es_MX";s:16:"Spanish (Mexico)";s:5:"es_NI";s:19:"Spanish (Nicaragua)";s:5:"es_PA";s:16:"Spanish (Panama)";s:5:"es_PE";s:14:"Spanish (Peru)";s:5:"es_PY";s:18:"Spanish (Paraguay)";s:5:"es_SV";s:21:"Spanish (El Salvador)";s:5:"es_UY";s:17:"Spanish (Uruguay)";s:5:"es_VE";s:19:"Spanish (Venezuela)";s:5:"et_EE";s:8:"Estonian";s:5:"fa_AF";s:21:"Persian (Afghanistan)";s:5:"fa_IR";s:14:"Persian (Iran)";s:5:"fi_FI";s:7:"Finnish";s:5:"fo_DK";s:17:"Faroese (Denmark)";s:5:"fo_FO";s:23:"Faroese (Faroe Islands)";s:5:"fr_BE";s:16:"French (Belgium)";s:5:"fr_CA";s:15:"French (Canada)";s:5:"fr_CH";s:20:"French (Switzerland)";s:5:"fr_FR";s:6:"French";s:5:"fr_HT";s:14:"French (Haiti)";s:5:"ga_IE";s:15:"Irish (Ireland)";s:5:"gl_ES";s:16:"Galician (Spain)";s:5:"gn_PY";s:18:"Guarani (Paraguay)";s:5:"he_IL";s:15:"Hebrew (Israel)";s:5:"hi_IN";s:13:"Hindi (India)";s:5:"hr_HR";s:8:"Croatian";s:5:"ht_HT";s:14:"Haitian Creole";s:5:"hu_HU";s:9:"Hungarian";s:5:"hy_AM";s:8:"Armenian";s:5:"id_ID";s:10:"Indonesian";s:5:"is_IS";s:9:"Icelandic";s:5:"it_CH";s:21:"Italian (Switzerland)";s:5:"it_IT";s:7:"Italian";s:5:"ja_JP";s:8:"Japanese";s:5:"jv_ID";s:20:"Javanese (Indonesia)";s:5:"ka_GE";s:8:"Georgian";s:5:"kk_KZ";s:6:"Kazakh";s:5:"kn_IN";s:15:"Kannada (India)";s:5:"ko_KR";s:6:"Korean";s:5:"lb_LU";s:13:"Luxembourgish";s:5:"li_NL";s:24:"Limburgish (Netherlands)";s:5:"lo_LA";s:10:"Lao (Laos)";s:5:"lt_LT";s:10:"Lithuanian";s:5:"lv_LV";s:7:"Latvian";s:5:"mg_MG";s:21:"Malagasy (Madagascar)";s:5:"ms_MY";s:16:"Malay (Malaysia)";s:5:"mt_MT";s:7:"Maltese";s:5:"my_MM";s:17:"Burmese (Myanmar)";s:5:"nb_NO";s:7:"Bokmål";s:5:"ne_NP";s:6:"Nepali";s:5:"nl_BE";s:15:"Dutch (Belgium)";s:5:"nl_NL";s:5:"Dutch";s:5:"nn_NO";s:7:"Nynorsk";s:5:"no_NO";s:9:"Norwegian";s:5:"os_GE";s:18:"Ossetian (Georgia)";s:5:"os_RU";s:17:"Ossetian (Russia)";s:5:"os_TR";s:17:"Ossetian (Turkey)";s:5:"pa_IN";s:15:"Punjabi (India)";s:5:"pl_PL";s:6:"Polish";s:5:"pt_BR";s:19:"Portuguese (Brazil)";s:5:"pt_PT";s:10:"Portuguese";s:5:"ro_RO";s:8:"Romanian";s:5:"ru_RU";s:7:"Russian";s:5:"ru_UA";s:17:"Russian (Ukraine)";s:5:"sa_IN";s:16:"Sanskrit (India)";s:5:"sc_IT";s:17:"Sardinian (Italy)";s:5:"sd_PK";s:17:"Sindhi (Pakistan)";s:5:"si_LK";s:19:"Sinhala (Sri Lanka)";s:5:"sk_SK";s:6:"Slovak";s:5:"sl_SI";s:9:"Slovenian";s:5:"so_SO";s:6:"Somali";s:5:"sq_AL";s:18:"Albanian (Albania)";s:5:"sr_RS";s:7:"Serbian";s:5:"su_ID";s:21:"Sundanese (Indonesia)";s:5:"sv_SE";s:7:"Swedish";s:5:"sw_KE";s:15:"Swahili (Kenya)";s:5:"sw_KM";s:17:"Swahili (Comoros)";s:5:"sw_TZ";s:18:"Swahili (Tanzania)";s:5:"sw_UG";s:16:"Swahili (Uganda)";s:5:"ta_IN";s:13:"Tamil (India)";s:5:"ta_LK";s:17:"Tamil (Sri Lanka)";s:5:"te_IN";s:14:"Telugu (India)";s:5:"tg_TJ";s:18:"Tajik (Tajikistan)";s:5:"th_TW";s:13:"Thai (Taiwan)";s:5:"tr_TR";s:7:"Turkish";s:5:"ug_CN";s:14:"Uyghur (China)";s:5:"uk_UA";s:19:"Ukrainian (Ukraine)";s:5:"ur_IN";s:12:"Urdu (India)";s:5:"ur_PK";s:15:"Urdu (Pakistan)";s:5:"uz_UZ";s:18:"Uzbek (Uzbekistan)";s:5:"vi_VN";s:10:"Vietnamese";s:5:"zh_CN";s:7:"Chinese";s:5:"zh_HK";s:19:"Chinese (Hong Kong)";s:5:"zh_TW";s:16:"Chinese (Taiwan)";}');
lib/build/shell-compiled.php CHANGED
@@ -2,6 +2,6 @@
2
  /**
3
  * Compiled source code - DO NOT EDIT!
4
  * @author Tim Whitlock http://timwhitlock.info/
5
- * @date Thu, 12 Dec 2013 21:33:39 +0000
6
  */
7
- function loco_compile_mo( $po ){ $descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'a'), ); $cmd = WHICH_MSGFMT.' -o - -'; $process = proc_open($cmd, $descriptorspec, $pipes ); if( ! $process ){ throw new Exception('Failed to open process to '.$cmd); } fwrite($pipes[0], $po); fclose($pipes[0]); $err = stream_get_contents($pipes[2]); fclose($pipes[2]); $mo = stream_get_contents($pipes[1]); fclose($pipes[1]); $e = proc_close($process); if( 0 !== $e ){ $err and trigger_error( $err, E_USER_WARNING ); throw new Exception( WHICH_MSGFMT.' exited with code '.sprintf('%d',$e).'; Got '.strlen($mo).' bytes from '.strlen($po).' bytes'); } if( ! $mo ){ throw new Exception('Empty file from '.WHICH_MSGFMT); } return $mo; } function loco_compile_mo_file( $pofile, $mofile = '' ){ $descriptorspec = array ( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'a'), ); if( ! $mofile ){ $mofile = $pofile.'.mo'; } $cmd = WHICH_MSGFMT.' -o '.escapeshellarg($mofile).' '.escapeshellarg($pofile); $process = proc_open($cmd, $descriptorspec, $pipes ); if( ! $process ){ throw new Exception('Failed to open process to '.$cmd); } $err = stream_get_contents($pipes[0]); fclose($pipes[0]); $e = proc_close($process); if( 0 !== $e ){ $err and trigger_error( $err, E_USER_WARNING ); throw new Exception('Gettext msgfmt exited with code '.sprintf('%d',$e).';'); } return $mofile; } function loco_find_executable( $name ){ $paths = array ( '/usr/local/', '/usr/', '/', '~/' ); $descriptorspec = array ( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'), ); foreach( array('bin/','sbin/') as $dir ){ foreach( $paths as $path ){ $bin = $path.$dir.$name; $cmd = '[ -x '.escapeshellarg($bin).' ]'; $process = proc_open( $cmd, $descriptorspec, $pipes ); if( ! $process ){ return ''; } $e = proc_close($process); if( 0 === $e ){ return $bin; } } } return ''; }
2
  /**
3
  * Compiled source code - DO NOT EDIT!
4
  * @author Tim Whitlock http://timwhitlock.info/
5
+ * @date Sat, 04 Jan 2014 20:28:03 +0000
6
  */
7
+ function loco_compile_mo( $po ){ $descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'a'), ); $cmd = WHICH_MSGFMT.' -o - -'; $process = proc_open($cmd, $descriptorspec, $pipes ); if( ! $process ){ throw new Exception('Failed to open process to '.$cmd); } fwrite($pipes[0], $po); fclose($pipes[0]); $err = stream_get_contents($pipes[2]); fclose($pipes[2]); $mo = stream_get_contents($pipes[1]); fclose($pipes[1]); $e = proc_close($process); if( 0 !== $e ){ $err and trigger_error( $err, E_USER_WARNING ); throw new Exception( WHICH_MSGFMT.' exited with code '.sprintf('%d',$e).'; Got '.strlen($mo).' bytes from '.strlen($po).' bytes'); } if( ! $mo ){ throw new Exception('Empty file from '.WHICH_MSGFMT); } return $mo; } function loco_compile_mo_file( $pofile, $mofile = '' ){ $descriptorspec = array ( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'a'), ); if( ! $mofile ){ $mofile = $pofile.'.mo'; } $cmd = WHICH_MSGFMT.' -o '.escapeshellarg($mofile).' '.escapeshellarg($pofile); $process = proc_open($cmd, $descriptorspec, $pipes ); if( ! $process ){ throw new Exception('Failed to open process to '.$cmd); } $err = stream_get_contents($pipes[0]); fclose($pipes[0]); $e = proc_close($process); if( 0 !== $e ){ $err and trigger_error( $err, E_USER_WARNING ); throw new Exception('Gettext msgfmt exited with code '.sprintf('%d',$e).';'); } if( ! file_exists($mofile) ){ throw new Exception('Gettext msgfmt failed to create '.$mofile); } return $mofile; } function loco_find_executable( $name ){ $paths = array ( '/usr/local/', '/usr/', '/', '~/' ); $descriptorspec = array ( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'), ); foreach( array('bin/','sbin/') as $dir ){ foreach( $paths as $path ){ $bin = $path.$dir.$name; $cmd = '[ -x '.escapeshellarg($bin).' ]'; $process = proc_open( $cmd, $descriptorspec, $pipes ); if( ! $process ){ return ''; } $e = proc_close($process); if( 0 === $e ){ return $bin; } } } return ''; }
lib/build/test.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Unit tests for compiled Loco utils.
4
+ * $ php -c /etc -f /path/to/phpunit.phar - --colors path/to/test.php
5
+ */
6
+ require __DIR__.'/gettext-compiled.php';
7
+ require __DIR__.'/locales-compiled.php';
8
+ require __DIR__.'/shell-compiled.php';
9
+ require __DIR__.'/../loco-locales.php';
10
+
11
+
12
+ class LocoTest extends PHPUnit_Framework_TestCase {
13
+
14
+ /**
15
+ * Test PO parser.
16
+ */
17
+ public function testParsePO(){
18
+ $popath = __DIR__.'/../../languages/loco-translate-de_DE.po';
19
+ $this->assertFileExists( $popath );
20
+ $posrc = file_get_contents($popath);
21
+ $po = loco_parse_po( $posrc );
22
+ // test header as guaranteed first string
23
+ $head = $po[0];
24
+ $this->assertEquals( '', $head['source'] );
25
+ $head = loco_parse_po_headers( $head['target'] );
26
+ /* @var $head LocoArray */
27
+ $this->assertEquals( 'Loco Translate', $head->__get('Project-Id-Version'), 'Failed to extract Project-Id-Version' );
28
+ $this->assertEquals( 'German', $head->language, 'Failed to extract Language header' );
29
+ return $po;
30
+ }
31
+
32
+
33
+ /**
34
+ * Test native MO writer
35
+ * @depends testParsePO
36
+ */
37
+ public function testNativeMsgfmt( array $po ){
38
+ $bin = loco_msgfmt( $po );
39
+ $this->assertStringStartsWith( "\xDE\x12\x04\x95\0\0\0\0", $bin, 'Bad magic number encoding' );
40
+ $this->assertStringEndsWith( "\0", $bin, 'Bad mo file ending' );
41
+ }
42
+
43
+
44
+
45
+ /**
46
+ * Test shell msgfmt MO writer
47
+ */
48
+ public function testShellMsgfmt(){
49
+ // test finding of executable
50
+ $cmd = loco_find_executable('msgfmt');
51
+ $this->assertStringEndsWith('/msgfmt', $cmd );
52
+ define( 'WHICH_MSGFMT', $cmd );
53
+ // test shell compile via temp file
54
+ $popath = realpath( __DIR__.'/../../languages/loco-translate-de_DE.po' );
55
+ $mopath = tempnam( sys_get_temp_dir(), 'loco-mo-' );
56
+ register_shutdown_function('unlink', $mopath );
57
+ $this->assertEquals( $mopath, loco_compile_mo_file( $popath, $mopath ), 'Failed to compile MO' );
58
+ $bin = file_get_contents( $mopath );
59
+ $this->assertStringEndsWith( "\0", $bin, 'Bad mo file ending' );
60
+ }
61
+
62
+
63
+
64
+ /**
65
+ * Test locale data
66
+ */
67
+ public function testLocales(){
68
+ $locale = loco_locale_resolve( '--fr_FR' );
69
+ $this->assertEquals('French', $locale->get_name(), 'Failed to parse language code fr_FR' );
70
+ // object equality
71
+ $other = LocoLocale::init('fr','');
72
+ $this->assertTrue( $locale->equal_to($other), $locale.' is not the same locale as '.$other );
73
+ // plurals
74
+ $data = $locale->export();
75
+ $this->assertEquals( 2, (int) $data['nplurals'] );
76
+ // preg matching
77
+ $pattern = '/'.$locale->preg().'/';
78
+ $this->assertTrue( (bool) preg_match($pattern, '--fr_FR' ) );
79
+ }
80
+
81
+
82
+
83
+ }
84
+
85
+
lib/loco-admin.php CHANGED
@@ -42,16 +42,17 @@ abstract class LocoAdmin {
42
  public static function render_page_options(){
43
  // update applicaion settings if posted
44
  if( isset($_POST['loco']) && is_array( $update = $_POST['loco'] ) ){
 
45
  $args = Loco::config( $update );
46
  $args['success'] = Loco::__('Settings saved');
47
  }
48
  else {
49
  $args = Loco::config();
50
- // establish a default msgfmt if possible
51
- if( false === $args['which_msgfmt'] ){
52
- function_exists('loco_find_executable') or loco_require('build/shell-compiled');
53
- $args['which_msgfmt'] = loco_find_executable('msgfmt');
54
- }
55
  }
56
  Loco::render('admin-opts', $args );
57
  }
@@ -75,7 +76,6 @@ abstract class LocoAdmin {
75
  $package = LocoPackage::get( $_GET['name'], $_GET['type'] );
76
  }
77
 
78
-
79
  // Extract messages if 'xgettext' is in query string
80
  //
81
  if( isset($_GET['xgettext']) ){
@@ -429,7 +429,8 @@ abstract class LocoAdmin {
429
  self::error( Loco::__('Bad file path').' '.var_export($path,1) );
430
  return '';
431
  }
432
- return $realpath;
 
433
  }
434
 
435
 
@@ -792,14 +793,54 @@ abstract class LocoAdmin {
792
  $extra[] = sprintf( Loco::__('%s fuzzy'), number_format($f) );
793
  }
794
  if( $u ){
795
- $extra[] = sprintf( Loco::__('%s unstranslated'), number_format($f) );
796
  }
797
  if( $extra ){
798
  $text .= ' ('.implode(', ',$extra).')';
799
  }
800
  return $text;
801
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
802
 
 
803
  }
804
 
805
 
@@ -849,7 +890,7 @@ function _loco_hook__plugin_row_meta( $links, $file = '' ){
849
  /**
850
  * execute ajax actions
851
  */
852
- function _lock_hook__wp_ajax(){
853
  extract( Loco::postdata() );
854
  if( isset($action) ){
855
  require Loco::basedir().'/php/loco-ajax.php';
@@ -857,14 +898,26 @@ function _lock_hook__wp_ajax(){
857
  }
858
 
859
 
 
 
 
 
 
 
 
 
 
 
 
860
 
861
 
862
  add_action('admin_menu', '_loco_hook__admin_menu' );
863
  add_action('plugin_row_meta', '_loco_hook__plugin_row_meta', 10, 2 );
864
 
865
  // ajax hooks all going through one central function
866
- add_action('wp_ajax_loco-posave', '_lock_hook__wp_ajax' );
867
- add_action('wp_ajax_loco-posync', '_lock_hook__wp_ajax' );
 
868
 
869
  // WP_LANG_DIR was introduced in Wordpress 2.1.0.
870
  if( ! defined('WP_LANG_DIR') ){
42
  public static function render_page_options(){
43
  // update applicaion settings if posted
44
  if( isset($_POST['loco']) && is_array( $update = $_POST['loco'] ) ){
45
+ $update += array( 'gen_hash' => '0' );
46
  $args = Loco::config( $update );
47
  $args['success'] = Loco::__('Settings saved');
48
  }
49
  else {
50
  $args = Loco::config();
51
+ }
52
+ // establish a default msgfmt if required and possible
53
+ if( $args['use_msgfmt'] && ! $args['which_msgfmt'] ){
54
+ function_exists('loco_find_executable') or loco_require('build/shell-compiled');
55
+ $args['which_msgfmt'] = loco_find_executable('msgfmt');// and Loco::config( $args );
56
  }
57
  Loco::render('admin-opts', $args );
58
  }
76
  $package = LocoPackage::get( $_GET['name'], $_GET['type'] );
77
  }
78
 
 
79
  // Extract messages if 'xgettext' is in query string
80
  //
81
  if( isset($_GET['xgettext']) ){
429
  self::error( Loco::__('Bad file path').' '.var_export($path,1) );
430
  return '';
431
  }
432
+ // returning original path in case something was symlinked outside the web root
433
+ return $path;
434
  }
435
 
436
 
793
  $extra[] = sprintf( Loco::__('%s fuzzy'), number_format($f) );
794
  }
795
  if( $u ){
796
+ $extra[] = sprintf( Loco::__('%s untranslated'), number_format($f) );
797
  }
798
  if( $extra ){
799
  $text .= ' ('.implode(', ',$extra).')';
800
  }
801
  return $text;
802
  }
803
+
804
+
805
+ /**
806
+ * get configured path to external msgfmt command, including --no-hash argument
807
+ * @return string
808
+ */
809
+ public static function msgfmt_command(){
810
+ $conf = Loco::config();
811
+ if( ! $conf['use_msgfmt'] || ! $conf['which_msgfmt'] ){
812
+ return '';
813
+ }
814
+ $cmd = escapeshellarg( trim( $conf['which_msgfmt'] ) );
815
+ if( ! $conf['gen_hash'] ){
816
+ $cmd .= ' --no-hash';
817
+ }
818
+ return $cmd;
819
+ }
820
+
821
+
822
+ /**
823
+ * Execute native msgfmt command
824
+ * @param string po source
825
+ * @return string binary mo source
826
+ */
827
+ public static function msgfmt_native( $po ){
828
+ try {
829
+ $conf = Loco::config();
830
+ loco_require('build/gettext-compiled');
831
+ $gen_hash = (bool) $conf['gen_hash'];
832
+ $mo = loco_msgfmt( $po, $gen_hash );
833
+ }
834
+ catch( Exception $Ex ){
835
+ error_log( $Ex->getMessage(), 0 );
836
+ }
837
+ if( ! $mo ){
838
+ throw new Exception( sprintf( Loco::__('Failed to compile MO file with built-in compiler') ) );
839
+ }
840
+ return $mo;
841
+ }
842
 
843
+
844
  }
845
 
846
 
890
  /**
891
  * execute ajax actions
892
  */
893
+ function _loco_hook__wp_ajax(){
894
  extract( Loco::postdata() );
895
  if( isset($action) ){
896
  require Loco::basedir().'/php/loco-ajax.php';
898
  }
899
 
900
 
901
+ /**
902
+ * execute file download actions
903
+ */
904
+ function _loco_hook__wp_ajax_download(){
905
+ extract( Loco::postdata() );
906
+ if( isset($action) ){
907
+ require Loco::basedir().'/php/loco-download.php';
908
+ die( __('File download failed') );
909
+ }
910
+ }
911
+
912
 
913
 
914
  add_action('admin_menu', '_loco_hook__admin_menu' );
915
  add_action('plugin_row_meta', '_loco_hook__plugin_row_meta', 10, 2 );
916
 
917
  // ajax hooks all going through one central function
918
+ add_action('wp_ajax_loco-posave', '_loco_hook__wp_ajax' );
919
+ add_action('wp_ajax_loco-posync', '_loco_hook__wp_ajax' );
920
+ add_action('wp_ajax_loco-download', '_loco_hook__wp_ajax_download' );
921
 
922
  // WP_LANG_DIR was introduced in Wordpress 2.1.0.
923
  if( ! defined('WP_LANG_DIR') ){
lib/loco-boot.php CHANGED
@@ -8,7 +8,7 @@ abstract class Loco {
8
  /** plugin namespace */
9
  const NS = 'loco-translate';
10
 
11
- const VERSION = '1.3';
12
  const CAPABILITY = 'manage_options';
13
 
14
  /* whether to enable APC cache */
@@ -35,11 +35,11 @@ abstract class Loco {
35
  */
36
  public static function load_textdomain(){
37
  $locale = get_locale();
38
- if( 0 === strpos($locale,'en') ){
39
  return;
40
  }
41
  $plugin_rel_path = basename( self::basedir() );
42
- load_plugin_textdomain( Loco::NS, false, $plugin_rel_path );
43
  }
44
 
45
 
@@ -115,7 +115,13 @@ abstract class Loco {
115
  $stubs = func_get_args();
116
  if( ! isset($v) ){
117
  $v = WP_DEBUG ? time() : Loco::VERSION;
118
- // @todo enqueue JavaScript translations here
 
 
 
 
 
 
119
  }
120
  foreach( $stubs as $stub ){
121
  $js = Loco::baseurl().'/pub/js/'.$stub.'.js';
@@ -251,11 +257,16 @@ abstract class Loco {
251
  static $conf;
252
  if( ! isset($conf) ){
253
  $conf = array (
254
- 'which_msgfmt' => false,
 
 
 
 
 
255
  );
256
  foreach( $conf as $key => $val ){
257
  $conf[$key] = get_option( Loco::NS.'-'.$key);
258
- if( empty($conf[$key]) && ! is_string($conf[$key]) ){
259
  $conf[$key] = $val;
260
  }
261
  }
@@ -266,6 +277,10 @@ abstract class Loco {
266
  $conf[$key] = $val;
267
  }
268
  }
 
 
 
 
269
  return $conf;
270
  }
271
  }
8
  /** plugin namespace */
9
  const NS = 'loco-translate';
10
 
11
+ const VERSION = '1.4';
12
  const CAPABILITY = 'manage_options';
13
 
14
  /* whether to enable APC cache */
35
  */
36
  public static function load_textdomain(){
37
  $locale = get_locale();
38
+ if( ! $locale || 0 === strpos($locale,'en') ){
39
  return;
40
  }
41
  $plugin_rel_path = basename( self::basedir() );
42
+ load_plugin_textdomain( Loco::NS, false, $plugin_rel_path.'/languages' );
43
  }
44
 
45
 
115
  $stubs = func_get_args();
116
  if( ! isset($v) ){
117
  $v = WP_DEBUG ? time() : Loco::VERSION;
118
+ // enqueue JavaScript translations once
119
+ $trans = 'lang/dummy';
120
+ $locale = get_locale() and
121
+ 0 !== strpos( $locale, 'en' ) and
122
+ file_exists( Loco::basedir().'/pub/js/lang/'.Loco::NS.'-'.$locale.'.js' ) and
123
+ $trans = 'lang/'.Loco::NS.'-'.$locale;
124
+ array_unshift( $stubs, $trans );
125
  }
126
  foreach( $stubs as $stub ){
127
  $js = Loco::baseurl().'/pub/js/'.$stub.'.js';
257
  static $conf;
258
  if( ! isset($conf) ){
259
  $conf = array (
260
+ // whether to use external msgfmt command (1), or internal (default)
261
+ 'use_msgfmt' => false,
262
+ // which external msgfmt command to use
263
+ 'which_msgfmt' => '',
264
+ // whether to compile hash table into mo files
265
+ 'gen_hash' => '0',
266
  );
267
  foreach( $conf as $key => $val ){
268
  $conf[$key] = get_option( Loco::NS.'-'.$key);
269
+ if( ! is_string($conf[$key]) ){
270
  $conf[$key] = $val;
271
  }
272
  }
277
  $conf[$key] = $val;
278
  }
279
  }
280
+ // force msgfmt usage if path is set (legacy installs/upgrades)
281
+ if( false === $conf['use_msgfmt'] ){
282
+ $conf['use_msgfmt'] = $conf['which_msgfmt'] ? '1' : '0';
283
+ }
284
  return $conf;
285
  }
286
  }
loco.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Loco Translate
4
  Plugin URI: http://wordpress.org/extend/plugins/loco-translate
5
  Description: Translate Wordpress plugins and themes directly in your browser
6
  Author: Tim Whitlock
7
- Version: 1.3.1
8
  Author URI: http://localise.biz/help/wordpress/translate-plugin
9
  */
10
 
4
  Plugin URI: http://wordpress.org/extend/plugins/loco-translate
5
  Description: Translate Wordpress plugins and themes directly in your browser
6
  Author: Tim Whitlock
7
+ Version: 1.4
8
  Author URI: http://localise.biz/help/wordpress/translate-plugin
9
  */
10
 
php/loco-download.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
- * Simple PO/POT post-through script.
4
  */
5
  try {
6
 
@@ -8,22 +8,77 @@ try {
8
  throw new Exception( 'Method not permitted', 405 );
9
  }
10
 
11
- extract( $_POST );
 
 
 
 
 
 
 
 
 
 
 
 
12
  if( empty($po) ){
13
  throw new Exception( 'Empty source data', 422 );
14
  }
15
 
16
  if( empty($path) ){
17
  $name = 'messages.po';
 
18
  }
19
  else {
20
  $name = basename($path);
 
21
  }
22
 
23
- header('Content-Type: application/x-gettext; charset=UTF-8', true );
24
- header('Content-Length: '.strlen($po), true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  header('Content-Disposition: attachment; filename='.$name, true );
26
- echo $po;
27
  exit(0);
28
 
29
 
1
  <?php
2
  /**
3
+ * PO/MO download script
4
  */
5
  try {
6
 
8
  throw new Exception( 'Method not permitted', 405 );
9
  }
10
 
11
+ // no errors ruining response please
12
+ if( false === ini_set( 'display_errors', 0 ) ){
13
+ error_reporting(0);
14
+ }
15
+
16
+ if( ! function_exists('current_user_can') || ! class_exists('LocoAdmin') ){
17
+ throw new Exception('Wordpress not bootstrapped');
18
+ }
19
+
20
+ if( ! current_user_can(Loco::CAPABILITY) ){
21
+ throw new Exception( Loco::__('User does not have permission to manage translations'), 403 );
22
+ }
23
+
24
  if( empty($po) ){
25
  throw new Exception( 'Empty source data', 422 );
26
  }
27
 
28
  if( empty($path) ){
29
  $name = 'messages.po';
30
+ $ext = 'po';
31
  }
32
  else {
33
  $name = basename($path);
34
+ $ext = strtolower( pathinfo( $name, PATHINFO_EXTENSION ) );
35
  }
36
 
37
+ // Simple post-through for PO and POT
38
+ if( 'mo' !== $ext ){
39
+ header('Content-Type: application/x-gettext; charset=UTF-8', true );
40
+ header('Content-Length: '.strlen($po), true );
41
+ header('Content-Disposition: attachment; filename='.$name, true );
42
+ echo $po;
43
+ exit(0);
44
+ }
45
+
46
+
47
+ // Attempt to compile MO direct to file via shell
48
+ if( $msgfmt = LocoAdmin::msgfmt_command() ){
49
+ try {
50
+ loco_require('build/shell-compiled');
51
+ define( 'WHICH_MSGFMT', $msgfmt );
52
+ // use temp file if possible, due to stdin size restrictions
53
+ if( $popath = tempnam( sys_get_temp_dir(), 'loco-' ) ){
54
+ register_shutdown_function( 'unlink', $popath );
55
+ file_put_contents( $popath, $po );
56
+ $mopath = loco_compile_mo_file( $popath, $mopath );
57
+ register_shutdown_function( 'unlink', $mopath );
58
+ $mo = file_get_contents( $mopath );
59
+ }
60
+ else {
61
+ $mo = loco_compile_mo( $po );
62
+ }
63
+ }
64
+ catch( Exception $Ex ){
65
+ error_log( $Ex->getMessage(), 0 );
66
+ }
67
+ if( ! $mo ){
68
+ throw new Exception( sprintf( Loco::__('Failed to compile MO file with %s, check your settings'), WHICH_MSGFMT ) );
69
+ }
70
+ }
71
+
72
+ // Fall back to in-built MO compiler - requires PO is parsed too
73
+ else {
74
+ $mo = LocoAdmin::msgfmt_native($po);
75
+ }
76
+
77
+ // exit with binary MO
78
+ header('Content-Type: application/x-gettext-translation; charset=UTF-8', true );
79
+ header('Content-Length: '.strlen($mo), true );
80
  header('Content-Disposition: attachment; filename='.$name, true );
81
+ echo $mo;
82
  exit(0);
83
 
84
 
php/loco-fatal.php CHANGED
@@ -6,7 +6,7 @@ $status = $Ex->getCode() or $status = 500;
6
  $message = $Ex->getMessage();
7
 
8
 
9
- if( ( isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 'XMLHttpRequest' === $_SERVER['HTTP_X_REQUESTED_WITH'] ) || ( defined('DOING_AJAX') && DOING_AJAX ) ){
10
  $type = 'application/json; charset=UTF-8';
11
  $body = json_encode( compact('status','message') );
12
  }
6
  $message = $Ex->getMessage();
7
 
8
 
9
+ if( ( isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 'XMLHttpRequest' === $_SERVER['HTTP_X_REQUESTED_WITH'] ) ){
10
  $type = 'application/json; charset=UTF-8';
11
  $body = json_encode( compact('status','message') );
12
  }
php/loco-posave.php CHANGED
@@ -60,33 +60,24 @@
60
 
61
 
62
  // attempt to write MO file also, but may fail for numerous reasons.
63
- if( ! $ispot ){
64
  try {
65
 
66
- // establish msgfmt settings
67
- $conf = Loco::config();
68
-
69
- // attempt to find an appropriate msgfmt if never set
70
- if( false === $conf['which_msgfmt'] ){
71
- function_exists('loco_find_executable') or loco_require('build/shell-compiled');
72
- $conf['which_msgfmt'] = loco_find_executable('msgfmt') and
73
- Loco::config( $conf );
74
  }
75
-
76
- if( $conf['which_msgfmt'] ){
77
- define( 'WHICH_MSGFMT', $conf['which_msgfmt'] );
78
- // check target MO path before compiling
79
- $mopath = preg_replace( '/\.po$/', '.mo', $path );
80
- if( ! file_exists($mopath) && ! is_writable( dirname($mopath) ) ){
81
- throw new Exception( Loco::__('Cannot create MO file') );
82
- }
83
- else if( file_exists($mopath) && ! is_writable($mopath) ){
84
- throw new Exception( Loco::__('Cannot overwrite MO file') );
85
- }
86
- // attempt to compile MO direct to file via shell
87
  try {
88
  $bytes = 0;
89
- function_exists('loco_compile_mo_file') or loco_require('build/shell-compiled');
 
90
  $mopath = loco_compile_mo_file( $path, $mopath );
91
  $bytes = $mopath && file_exists($mopath) ? filesize($mopath) : 0;
92
  }
@@ -97,10 +88,22 @@
97
  throw new Exception( sprintf( Loco::__('Failed to compile MO file with %s, check your settings'), WHICH_MSGFMT ) );
98
  }
99
  $response['compiled'] = $bytes;
 
 
 
 
 
 
 
 
100
  }
 
 
 
101
  }
102
  catch( Exception $e ){
103
  $response['compiled'] = $e->getMessage();
 
104
  }
105
  }
106
 
60
 
61
 
62
  // attempt to write MO file also, but may fail for numerous reasons.
63
+ while( ! $ispot ){
64
  try {
65
 
66
+ // check target MO path before compiling
67
+ $mopath = preg_replace( '/\.po$/', '.mo', $path );
68
+ if( ! file_exists($mopath) && ! is_writable( dirname($mopath) ) ){
69
+ throw new Exception( Loco::__('Cannot create MO file') );
 
 
 
 
70
  }
71
+ else if( file_exists($mopath) && ! is_writable($mopath) ){
72
+ throw new Exception( Loco::__('Cannot overwrite MO file') );
73
+ }
74
+
75
+ // attempt to compile MO direct to file via shell
76
+ if( $msgfmt = LocoAdmin::msgfmt_command() ){
 
 
 
 
 
 
77
  try {
78
  $bytes = 0;
79
+ loco_require('build/shell-compiled');
80
+ define( 'WHICH_MSGFMT', $msgfmt );
81
  $mopath = loco_compile_mo_file( $path, $mopath );
82
  $bytes = $mopath && file_exists($mopath) ? filesize($mopath) : 0;
83
  }
88
  throw new Exception( sprintf( Loco::__('Failed to compile MO file with %s, check your settings'), WHICH_MSGFMT ) );
89
  }
90
  $response['compiled'] = $bytes;
91
+ break;
92
+ }
93
+
94
+ // Fall back to in-built MO compiler - requires PO is parsed too
95
+ $mo = LocoAdmin::msgfmt_native($po);
96
+ $bytes = file_put_contents( $mopath, $mo );
97
+ if( ! $bytes ){
98
+ throw new Exception( Loco::__('Failed to write MO file') );
99
  }
100
+ $response['compiled'] = $bytes;
101
+ break;
102
+
103
  }
104
  catch( Exception $e ){
105
  $response['compiled'] = $e->getMessage();
106
+ break;
107
  }
108
  }
109
 
pub/css/loco-admin.css CHANGED
@@ -1 +1 @@
1
- .wrap #loco-poedit .wg-cell,.wrap #loco-poedit .wg-cell div{position:relative;box-sizing:border-box;-moz-box-sizing:border-box}.wrap #loco-poedit .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}.wrap #loco-poedit .wg-split{background:#eee}.wrap #loco-poedit .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.wrap #loco-poedit .wg-split-x>div>.not-first>*{margin-left:6px}.wrap #loco-poedit .wg-split-y>div>.not-first>*{margin-top:6px}.wrap #loco-poedit .wg-split>div>.has-title .wg-content{margin-top:0}.wrap #loco-poedit .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}.wrap #loco-poedit .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}.wrap #loco-poedit .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}.wrap #loco-poedit .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png) center center no-repeat}.wrap #loco-poedit .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}.wrap #loco-poedit .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png) center center no-repeat}.wrap #loco-poedit .wg-split>div.locked{cursor:default}.wrap #loco-poedit .wg-split-x>div.locked>.not-first>*{margin-left:1px}.wrap #loco-poedit .wg-split-y>div.locked>.not-first>*{margin-top:1px}.wrap #loco-poedit .wg-split>div.locked>.not-first:before{display:none}.wrap #loco-poedit .wg-title{background:#ddd;cursor:default !important;margin:0;padding:4px 6px;font-size:1em;white-space:nowrap}.wrap #loco-poedit .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;-moz-box-sizing:border-box}.wrap #loco-poedit .is-table .wg-cols{outline:none}.wrap #loco-poedit .is-table .wg-col{float:left;clear:none}.wrap #loco-poedit .is-table .wg-title{padding:3px 10px;margin:0 !important;font-weight:normal}.wrap #loco-poedit .is-table .wg-thead>div>.not-first:before{background-position:center 1px}.wrap #loco-poedit .is-table .wg-thead{background:#ddd;border-bottom:solid 1px #ccc}.wrap #loco-poedit .is-table .wg-tr{height:1.6em;overflow:hidden}.wrap #loco-poedit .is-table .wg-tr:nth-child(even){background-color:#f3f7fd}.wrap #loco-poedit .is-table .wg-tr.selected{background-color:#3875d7;color:#fff}.wrap #loco-poedit .is-table .wg-td{white-space:nowrap;line-height:1.2em;margin:0.3em 4px;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.wrap #loco-poedit .is-table .wg-tbody .not-first .wg-td{margin-left:10px}.wrap #loco-poedit .is-table .wg-cols.filtered .wg-tr{display:none}.wrap #loco-poedit .is-table .wg-cols.filtered .wg-tr.filtered{display:block}.wrap #loco-poedit .is-field>.wg-content{cursor:text;outline:none;white-space:pre-wrap}.wrap #loco-poedit .is-field>.wg-content:focus{-moz-box-shadow:inset 0 0 10px #3875d7;-webkit-box-shadow:inset 0 0 10px #3875d7;box-shadow:inset 0 0 10px #3875d7}.wrap #loco-poedit .is-field.readonly>.wg-content{cursor:default;background:#f8f8f8;text-shadow:0 1px #fff}.wrap #loco-poedit .is-field.readonly>.wg-content:focus{-moz-box-shadow:inset 0 0 10px #cc0000;-webkit-box-shadow:inset 0 0 10px #cc0000;box-shadow:inset 0 0 10px #cc0000}.wrap #loco-poedit .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:0.5em 1em;color:#000;text-decoration:none;-moz-border-radius:0.2em;-webkit-border-radius:0.2em;border-radius:0.2em}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a:hover{background-color:#f3f7fd}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a.active{background-color:#3875d7;color:#fff}@media all and (max-width: 768px){.wrap #loco-poedit .wg-split-x>div>.not-first>*{margin-left:20px}.wrap #loco-poedit .wg-split-y>div>.not-first>*{margin-top:20px}.wrap #loco-poedit .wg-split-x>div>.not-first:before{width:20px}.wrap #loco-poedit .wg-split-y>div>.not-first:before{height:20px}}.wrap #loco-poedit .is-table .po-fuzzy{color:#b59829;font-weight:bold}.wrap #loco-poedit .is-table .po-empty{color:#1f507a;font-weight:bold}.wrap #loco-poedit .is-table .wg-col.first .wg-td:before{font-family:loco;vertical-align:middle;display:inline-block;content:" ";width:1.2em;line-height:1}.wrap #loco-poedit .is-table .po-incorrect,.wrap #loco-poedit .is-table .po-needs-review{color:#CC0000}.wrap #loco-poedit .is-table .wg-col.first .po-flagged .wg-td:before{content:"\e60e"}.wrap #loco-poedit .is-table .wg-col.first .po-comment .wg-td:before{content:"\e613";color:#999}.wrap #loco-poedit .is-table .wg-col.first .po-unsaved .wg-td:before{content:"\e612";color:#f1d040}.wrap #loco-poedit #po-list .wg-content{padding:0}.wrap #loco-poedit #po-source>.wg-body>.has-title>h2{background:transparent;font-weight:normal;float:left;clear:none;min-width:4em}.wrap #loco-poedit #po-source>.wg-body>.has-title>.wg-content{clear:none}.wrap .flag{width:16px;height:11px;display:inline-block;background:url(../img/flags.tiny.png) no-repeat}.wrap .flag.flag-ad{background-position:-16px 0}.wrap .flag.flag-ae{background-position:-32px 0}.wrap .flag.flag-af{background-position:-48px 0}.wrap .flag.flag-ag{background-position:-64px 0}.wrap .flag.flag-ai{background-position:-80px 0}.wrap .flag.flag-al{background-position:-96px 0}.wrap .flag.flag-am{background-position:-112px 0}.wrap .flag.flag-an{background-position:-128px 0}.wrap .flag.flag-ao{background-position:-144px 0}.wrap .flag.flag-ar{background-position:-160px 0}.wrap .flag.flag-as{background-position:-176px 0}.wrap .flag.flag-at{background-position:-192px 0}.wrap .flag.flag-au{background-position:-208px 0}.wrap .flag.flag-aw{background-position:-224px 0}.wrap .flag.flag-az{background-position:-240px 0}.wrap .flag.flag-ba{background-position:0 -11px}.wrap .flag.flag-bb{background-position:-16px -11px}.wrap .flag.flag-bd{background-position:-32px -11px}.wrap .flag.flag-be{background-position:-48px -11px}.wrap .flag.flag-bf{background-position:-64px -11px}.wrap .flag.flag-bg{background-position:-80px -11px}.wrap .flag.flag-bh{background-position:-96px -11px}.wrap .flag.flag-bi{background-position:-112px -11px}.wrap .flag.flag-bj{background-position:-128px -11px}.wrap .flag.flag-bm{background-position:-144px -11px}.wrap .flag.flag-bn{background-position:-160px -11px}.wrap .flag.flag-bo{background-position:-176px -11px}.wrap .flag.flag-br{background-position:-192px -11px}.wrap .flag.flag-bs{background-position:-208px -11px}.wrap .flag.flag-bt{background-position:-224px -11px}.wrap .flag.flag-bw{background-position:-240px -11px}.wrap .flag.flag-by{background-position:0 -22px}.wrap .flag.flag-bz{background-position:-16px -22px}.wrap .flag.flag-ca{background-position:-32px -22px}.wrap .flag.flag-cd{background-position:-48px -22px}.wrap .flag.flag-cf{background-position:-64px -22px}.wrap .flag.flag-cg{background-position:-80px -22px}.wrap .flag.flag-ch{background-position:-96px -22px}.wrap .flag.flag-ci{background-position:-112px -22px}.wrap .flag.flag-ck{background-position:-128px -22px}.wrap .flag.flag-cl{background-position:-144px -22px}.wrap .flag.flag-cm{background-position:-160px -22px}.wrap .flag.flag-cn{background-position:-176px -22px}.wrap .flag.flag-co{background-position:-192px -22px}.wrap .flag.flag-cr{background-position:-208px -22px}.wrap .flag.flag-cu{background-position:-224px -22px}.wrap .flag.flag-cv{background-position:-240px -22px}.wrap .flag.flag-cw{background-position:0 -33px}.wrap .flag.flag-cy{background-position:-16px -33px}.wrap .flag.flag-cz{background-position:-32px -33px}.wrap .flag.flag-de{background-position:-48px -33px}.wrap .flag.flag-dj{background-position:-64px -33px}.wrap .flag.flag-dk{background-position:-80px -33px}.wrap .flag.flag-dm{background-position:-96px -33px}.wrap .flag.flag-do{background-position:-112px -33px}.wrap .flag.flag-dz{background-position:-128px -33px}.wrap .flag.flag-ec{background-position:-144px -33px}.wrap .flag.flag-ee{background-position:-160px -33px}.wrap .flag.flag-eg{background-position:-176px -33px}.wrap .flag.flag-eh{background-position:-192px -33px}.wrap .flag.flag-er{background-position:-208px -33px}.wrap .flag.flag-es{background-position:-224px -33px}.wrap .flag.flag-et{background-position:-240px -33px}.wrap .flag.flag-fi{background-position:0 -44px}.wrap .flag.flag-fj{background-position:-16px -44px}.wrap .flag.flag-fk{background-position:-32px -44px}.wrap .flag.flag-fm{background-position:-48px -44px}.wrap .flag.flag-fo{background-position:-64px -44px}.wrap .flag.flag-fr{background-position:-80px -44px}.wrap .flag.flag-ga{background-position:-96px -44px}.wrap .flag.flag-gb{background-position:-112px -44px}.wrap .flag.flag-gd{background-position:-128px -44px}.wrap .flag.flag-ge{background-position:-144px -44px}.wrap .flag.flag-gf{background-position:-160px -44px}.wrap .flag.flag-gh{background-position:-176px -44px}.wrap .flag.flag-gi{background-position:-192px -44px}.wrap .flag.flag-gl{background-position:-208px -44px}.wrap .flag.flag-gm{background-position:-224px -44px}.wrap .flag.flag-gn{background-position:-240px -44px}.wrap .flag.flag-gp{background-position:0 -55px}.wrap .flag.flag-gq{background-position:-16px -55px}.wrap .flag.flag-gr{background-position:-32px -55px}.wrap .flag.flag-gt{background-position:-48px -55px}.wrap .flag.flag-gu{background-position:-64px -55px}.wrap .flag.flag-gw{background-position:-80px -55px}.wrap .flag.flag-gy{background-position:-96px -55px}.wrap .flag.flag-hk{background-position:-112px -55px}.wrap .flag.flag-hn{background-position:-128px -55px}.wrap .flag.flag-hr{background-position:-144px -55px}.wrap .flag.flag-ht{background-position:-160px -55px}.wrap .flag.flag-hu{background-position:-176px -55px}.wrap .flag.flag-id{background-position:-192px -55px}.wrap .flag.flag-ie{background-position:-208px -55px}.wrap .flag.flag-il{background-position:-224px -55px}.wrap .flag.flag-in{background-position:-240px -55px}.wrap .flag.flag-iq{background-position:0 -66px}.wrap .flag.flag-ir{background-position:-16px -66px}.wrap .flag.flag-is{background-position:-32px -66px}.wrap .flag.flag-it{background-position:-48px -66px}.wrap .flag.flag-jm{background-position:-64px -66px}.wrap .flag.flag-jo{background-position:-80px -66px}.wrap .flag.flag-jp{background-position:-96px -66px}.wrap .flag.flag-ke{background-position:-112px -66px}.wrap .flag.flag-kg{background-position:-128px -66px}.wrap .flag.flag-kh{background-position:-144px -66px}.wrap .flag.flag-ki{background-position:-160px -66px}.wrap .flag.flag-km{background-position:-176px -66px}.wrap .flag.flag-kn{background-position:-192px -66px}.wrap .flag.flag-kp{background-position:-208px -66px}.wrap .flag.flag-kr{background-position:-224px -66px}.wrap .flag.flag-kw{background-position:-240px -66px}.wrap .flag.flag-ky{background-position:0 -77px}.wrap .flag.flag-kz{background-position:-16px -77px}.wrap .flag.flag-la{background-position:-32px -77px}.wrap .flag.flag-lb{background-position:-48px -77px}.wrap .flag.flag-lc{background-position:-64px -77px}.wrap .flag.flag-li{background-position:-80px -77px}.wrap .flag.flag-lk{background-position:-96px -77px}.wrap .flag.flag-lr{background-position:-112px -77px}.wrap .flag.flag-ls{background-position:-128px -77px}.wrap .flag.flag-lt{background-position:-144px -77px}.wrap .flag.flag-lu{background-position:-160px -77px}.wrap .flag.flag-lv{background-position:-176px -77px}.wrap .flag.flag-ly{background-position:-192px -77px}.wrap .flag.flag-ma{background-position:-208px -77px}.wrap .flag.flag-mc{background-position:-224px -77px}.wrap .flag.flag-md{background-position:-240px -77px}.wrap .flag.flag-me{background-position:0 -88px}.wrap .flag.flag-mg{background-position:-16px -88px}.wrap .flag.flag-mh{background-position:-32px -88px}.wrap .flag.flag-mk{background-position:-48px -88px}.wrap .flag.flag-ml{background-position:-64px -88px}.wrap .flag.flag-mm{background-position:-80px -88px}.wrap .flag.flag-mn{background-position:-96px -88px}.wrap .flag.flag-mo{background-position:-112px -88px}.wrap .flag.flag-mp{background-position:-128px -88px}.wrap .flag.flag-mq{background-position:-144px -88px}.wrap .flag.flag-mr{background-position:-160px -88px}.wrap .flag.flag-ms{background-position:-176px -88px}.wrap .flag.flag-mt{background-position:-192px -88px}.wrap .flag.flag-mu{background-position:-208px -88px}.wrap .flag.flag-mv{background-position:-224px -88px}.wrap .flag.flag-mw{background-position:-240px -88px}.wrap .flag.flag-mx{background-position:0 -99px}.wrap .flag.flag-my{background-position:-16px -99px}.wrap .flag.flag-mz{background-position:-32px -99px}.wrap .flag.flag-na{background-position:-48px -99px}.wrap .flag.flag-nc{background-position:-64px -99px}.wrap .flag.flag-ne{background-position:-80px -99px}.wrap .flag.flag-nf{background-position:-96px -99px}.wrap .flag.flag-ng{background-position:-112px -99px}.wrap .flag.flag-ni{background-position:-128px -99px}.wrap .flag.flag-nl{background-position:-144px -99px}.wrap .flag.flag-no{background-position:-160px -99px}.wrap .flag.flag-np{background-position:-176px -99px}.wrap .flag.flag-nr{background-position:-192px -99px}.wrap .flag.flag-nu{background-position:-208px -99px}.wrap .flag.flag-nz{background-position:-224px -99px}.wrap .flag.flag-om{background-position:-240px -99px}.wrap .flag.flag-pa{background-position:0 -110px}.wrap .flag.flag-pe{background-position:-16px -110px}.wrap .flag.flag-pf{background-position:-32px -110px}.wrap .flag.flag-pg{background-position:-48px -110px}.wrap .flag.flag-ph{background-position:-64px -110px}.wrap .flag.flag-pk{background-position:-80px -110px}.wrap .flag.flag-pl{background-position:-96px -110px}.wrap .flag.flag-pm{background-position:-112px -110px}.wrap .flag.flag-pn{background-position:-128px -110px}.wrap .flag.flag-pr{background-position:-144px -110px}.wrap .flag.flag-ps{background-position:-160px -110px}.wrap .flag.flag-pt{background-position:-176px -110px}.wrap .flag.flag-pw{background-position:-192px -110px}.wrap .flag.flag-py{background-position:-208px -110px}.wrap .flag.flag-qa{background-position:-224px -110px}.wrap .flag.flag-re{background-position:-240px -110px}.wrap .flag.flag-ro{background-position:0 -121px}.wrap .flag.flag-rs{background-position:-16px -121px}.wrap .flag.flag-ru{background-position:-32px -121px}.wrap .flag.flag-rw{background-position:-48px -121px}.wrap .flag.flag-sa{background-position:-64px -121px}.wrap .flag.flag-sb{background-position:-80px -121px}.wrap .flag.flag-sc{background-position:-96px -121px}.wrap .flag.flag-sd{background-position:-112px -121px}.wrap .flag.flag-se{background-position:-128px -121px}.wrap .flag.flag-sg{background-position:-144px -121px}.wrap .flag.flag-sh{background-position:-160px -121px}.wrap .flag.flag-si{background-position:-176px -121px}.wrap .flag.flag-sk{background-position:-192px -121px}.wrap .flag.flag-sl{background-position:-208px -121px}.wrap .flag.flag-sm{background-position:-224px -121px}.wrap .flag.flag-sn{background-position:-240px -121px}.wrap .flag.flag-so{background-position:0 -132px}.wrap .flag.flag-sr{background-position:-16px -132px}.wrap .flag.flag-ss{background-position:-32px -132px}.wrap .flag.flag-st{background-position:-48px -132px}.wrap .flag.flag-sv{background-position:-64px -132px}.wrap .flag.flag-sy{background-position:-80px -132px}.wrap .flag.flag-sz{background-position:-96px -132px}.wrap .flag.flag-tc{background-position:-112px -132px}.wrap .flag.flag-td{background-position:-128px -132px}.wrap .flag.flag-tg{background-position:-144px -132px}.wrap .flag.flag-th{background-position:-160px -132px}.wrap .flag.flag-tj{background-position:-176px -132px}.wrap .flag.flag-tk{background-position:-192px -132px}.wrap .flag.flag-tl{background-position:-208px -132px}.wrap .flag.flag-tm{background-position:-224px -132px}.wrap .flag.flag-tn{background-position:-240px -132px}.wrap .flag.flag-to{background-position:0 -143px}.wrap .flag.flag-tr{background-position:-16px -143px}.wrap .flag.flag-tt{background-position:-32px -143px}.wrap .flag.flag-tv{background-position:-48px -143px}.wrap .flag.flag-tw{background-position:-64px -143px}.wrap .flag.flag-tz{background-position:-80px -143px}.wrap .flag.flag-ua{background-position:-96px -143px}.wrap .flag.flag-ug{background-position:-112px -143px}.wrap .flag.flag-us{background-position:-128px -143px}.wrap .flag.flag-uy{background-position:-144px -143px}.wrap .flag.flag-uz{background-position:-160px -143px}.wrap .flag.flag-va{background-position:-176px -143px}.wrap .flag.flag-vc{background-position:-192px -143px}.wrap .flag.flag-ve{background-position:-208px -143px}.wrap .flag.flag-vg{background-position:-224px -143px}.wrap .flag.flag-vi{background-position:-240px -143px}.wrap .flag.flag-vn{background-position:0 -154px}.wrap .flag.flag-vu{background-position:-16px -154px}.wrap .flag.flag-wf{background-position:-32px -154px}.wrap .flag.flag-ws{background-position:-48px -154px}.wrap .flag.flag-ye{background-position:-64px -154px}.wrap .flag.flag-yt{background-position:-80px -154px}.wrap .flag.flag-za{background-position:-96px -154px}.wrap .flag.flag-zm{background-position:-112px -154px}.wrap .flag.flag-zw{background-position:-128px -154px}.wrap .loco-add>*:before{content:"\e60c"}.wrap .loco-del>*:before{content:"\e60d"}.wrap .loco-save>*:before{content:"\e610"}.wrap .loco-sync>*:before{content:"\e633"}.wrap .loco-help>*:before{content:"\3f"}.wrap .loco-revert>*:before{content:"\e634"}.wrap .loco-fuzzy>*:before{content:"\e607"}.wrap .loco-download>*:before{content:"\e608"}.wrap .loco-ok>*:before{content:"\e618"}.wrap .loco-warn>*:before{content:"\e62e"}.wrap .loco-edit-pot>*:before{content:"\e61e"}@font-face{font-family:'loco';src:url("../font/loco.eot");src:url("../font/loco.eot?#iefix") format("embedded-opentype"),url("../font/loco.woff") format("woff"),url("../font/loco.ttf") format("truetype"),url("../font/loco.svg#loco") format("svg");font-weight:normal;font-style:normal}.wrap div{position:relative}h2 .nav-tab.nav-tab-loco{float:right;border-color:transparent;font-size:16px;color:#2e892e;background:transparent}h2 .nav-tab.nav-tab-loco:hover{color:#3db63d}.widefat thead tr th{width:25%}.wrap .loco-list{margin:10px 0}.wrap .loco-list li>a:before,.wrap .loco-list li>span:before{padding-right:0.5em;font-family:loco;color:inherit}.wrap .loco-list li.loco-add a{color:#666666}.wrap .loco-list li.loco-add a:hover{color:#000}.wrap .loco-list li.loco-edit-po .flag{margin-right:6px}.wrap .loco-list li.loco-warn>*:before{color:#cc0000}.wrap .loco-list li.loco-ok>*:before{color:#006600}.wrap .loco-list .loco-details li{margin-bottom:0}.wrap .loco-list .loco-mtime{color:#999}.wrap .loco-list .loco-progress{color:#999}.error a.dismiss,.updated a.dismiss{text-decoration:none;font-size:20px;line-height:1;display:block;position:absolute;right:10px;top:5px}.wrap div.loco-message{margin-top:10px}.wrap div.loco-success{border-color:#00CC00;background-color:#ccffcc}.wrap div.loco-message:hover{border-color:#000}form.loco-switcher{display:inline;display:inline-block;padding:0 5px}form.loco-switcher select{font-weight:normal;height:auto;display:inline}.wrap #loco-poedit{border:solid 1px #ccc}.wrap #loco-poedit-inner{min-height:600px;font-size:14px;clear:both}.wrap #loco-poedit-inner h2{color:#000;line-height:1}#loco-nav{font-size:14px;height:50px}#loco-nav form{display:block;padding:0;margin:0}#loco-search,#loco-nav button{display:block;position:relative;float:left;clear:none;box-sizing:border-box;margin:5px 0 0 5px;height:40px;text-align:left}#loco-nav button.loco-help{float:right;margin-right:5px}#loco-nav button span:before{padding-right:0.5em;font-family:loco}.wp-core-ui button.loco-inverted,.wp-core-ui button.loco-inverted:hover{background-image:-webkit-gradient(linear, left top, left bottom, from(#e0e0e0), to(#fefefe));background-image:-webkit-linear-gradient(top, #e0e0e0, #fefefe);background-image:-moz-linear-gradient(top, #e0e0e0, #fefefe);background-image:-o-linear-gradient(top, #e0e0e0, #fefefe);background-image:linear-gradient(to bottom, #e0e0e0, #fefefe)}#loco-filter input[type="text"]{padding-left:10px;margin-left:20px;width:300px;font-size:15px}#loco-filter .icon.clear{display:none !important}.loco-fscheck .loco-list{margin-bottom:20px}
1
+ .wrap #loco-poedit .wg-cell,.wrap #loco-poedit .wg-cell div{position:relative;box-sizing:border-box;-moz-box-sizing:border-box}.wrap #loco-poedit .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}.wrap #loco-poedit .wg-split{background:#eee}.wrap #loco-poedit .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.wrap #loco-poedit .wg-split-x>div>.not-first>*{margin-left:6px}.wrap #loco-poedit .wg-split-y>div>.not-first>*{margin-top:6px}.wrap #loco-poedit .wg-split>div>.has-title .wg-content{margin-top:0}.wrap #loco-poedit .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}.wrap #loco-poedit .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}.wrap #loco-poedit .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}.wrap #loco-poedit .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png) center center no-repeat}.wrap #loco-poedit .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}.wrap #loco-poedit .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png) center center no-repeat}.wrap #loco-poedit .wg-split>div.locked{cursor:default}.wrap #loco-poedit .wg-split-x>div.locked>.not-first>*{margin-left:1px}.wrap #loco-poedit .wg-split-y>div.locked>.not-first>*{margin-top:1px}.wrap #loco-poedit .wg-split>div.locked>.not-first:before{display:none}.wrap #loco-poedit .wg-title{background:#ddd;cursor:default !important;margin:0;padding:4px 6px;font-size:1em;white-space:nowrap}.wrap #loco-poedit .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;-moz-box-sizing:border-box}.wrap #loco-poedit .is-table .wg-cols{outline:none}.wrap #loco-poedit .is-table .wg-col{float:left;clear:none}.wrap #loco-poedit .is-table .wg-title{padding:3px 10px;margin:0 !important;font-weight:normal}.wrap #loco-poedit .is-table .wg-thead>div>.not-first:before{background-position:center 1px}.wrap #loco-poedit .is-table .wg-thead{background:#ddd;border-bottom:solid 1px #ccc}.wrap #loco-poedit .is-table .wg-tr{height:1.6em;overflow:hidden}.wrap #loco-poedit .is-table .wg-tr:nth-child(even){background-color:#f3f7fd}.wrap #loco-poedit .is-table .wg-tr.selected{background-color:#3875d7;color:#fff}.wrap #loco-poedit .is-table .wg-td{white-space:nowrap;line-height:1.2em;margin:0.3em 4px;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.wrap #loco-poedit .is-table .wg-tbody .not-first .wg-td{margin-left:10px}.wrap #loco-poedit .is-table .wg-cols.filtered .wg-tr{display:none}.wrap #loco-poedit .is-table .wg-cols.filtered .wg-tr.filtered{display:block}.wrap #loco-poedit .is-field>.wg-content{cursor:text;outline:none;white-space:pre-wrap}.wrap #loco-poedit .is-field>.wg-content:focus{-moz-box-shadow:inset 0 0 10px #3875d7;-webkit-box-shadow:inset 0 0 10px #3875d7;box-shadow:inset 0 0 10px #3875d7}.wrap #loco-poedit .is-field.readonly>.wg-content{cursor:default;background:#f8f8f8;text-shadow:0 1px #fff}.wrap #loco-poedit .is-field.readonly>.wg-content:focus{-moz-box-shadow:inset 0 0 10px #cc0000;-webkit-box-shadow:inset 0 0 10px #cc0000;box-shadow:inset 0 0 10px #cc0000}.wrap #loco-poedit .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:0.5em 1em;color:#000;text-decoration:none;-moz-border-radius:0.2em;-webkit-border-radius:0.2em;border-radius:0.2em}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a:hover{background-color:#f3f7fd}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a.active{background-color:#3875d7;color:#fff}@media all and (max-width: 768px){.wrap #loco-poedit .wg-split-x>div>.not-first>*{margin-left:20px}.wrap #loco-poedit .wg-split-y>div>.not-first>*{margin-top:20px}.wrap #loco-poedit .wg-split-x>div>.not-first:before{width:20px}.wrap #loco-poedit .wg-split-y>div>.not-first:before{height:20px}}.wrap #loco-poedit .is-table .po-fuzzy{color:#b59829;font-weight:bold}.wrap #loco-poedit .is-table .po-empty{color:#1f507a;font-weight:bold}.wrap #loco-poedit .is-table .wg-col.first .wg-td:before{font-family:loco;vertical-align:middle;display:inline-block;content:" ";width:1.2em;line-height:1}.wrap #loco-poedit .is-table .po-incorrect,.wrap #loco-poedit .is-table .po-needs-review{color:#CC0000}.wrap #loco-poedit .is-table .wg-col.first .po-flagged .wg-td:before{content:"\e60e"}.wrap #loco-poedit .is-table .wg-col.first .po-comment .wg-td:before{content:"\e613";color:#999}.wrap #loco-poedit .is-table .wg-col.first .po-unsaved .wg-td:before{content:"\e612";color:#f1d040}.wrap #loco-poedit #po-list .wg-content{padding:0}.wrap #loco-poedit #po-source>.wg-body>.has-title>h2{background:transparent;font-weight:normal;float:left;clear:none;min-width:4em}.wrap #loco-poedit #po-source>.wg-body>.has-title>.wg-content{clear:none}.wrap #loco-poedit #po-source>.wg-body>.has-title>h2{min-width:4.5em}.wrap .flag{width:16px;height:11px;display:inline-block;background:url(../img/flags.tiny.png) no-repeat}.wrap .flag.flag-ad{background-position:-16px 0}.wrap .flag.flag-ae{background-position:-32px 0}.wrap .flag.flag-af{background-position:-48px 0}.wrap .flag.flag-ag{background-position:-64px 0}.wrap .flag.flag-ai{background-position:-80px 0}.wrap .flag.flag-al{background-position:-96px 0}.wrap .flag.flag-am{background-position:-112px 0}.wrap .flag.flag-an{background-position:-128px 0}.wrap .flag.flag-ao{background-position:-144px 0}.wrap .flag.flag-ar{background-position:-160px 0}.wrap .flag.flag-as{background-position:-176px 0}.wrap .flag.flag-at{background-position:-192px 0}.wrap .flag.flag-au{background-position:-208px 0}.wrap .flag.flag-aw{background-position:-224px 0}.wrap .flag.flag-az{background-position:-240px 0}.wrap .flag.flag-ba{background-position:0 -11px}.wrap .flag.flag-bb{background-position:-16px -11px}.wrap .flag.flag-bd{background-position:-32px -11px}.wrap .flag.flag-be{background-position:-48px -11px}.wrap .flag.flag-bf{background-position:-64px -11px}.wrap .flag.flag-bg{background-position:-80px -11px}.wrap .flag.flag-bh{background-position:-96px -11px}.wrap .flag.flag-bi{background-position:-112px -11px}.wrap .flag.flag-bj{background-position:-128px -11px}.wrap .flag.flag-bm{background-position:-144px -11px}.wrap .flag.flag-bn{background-position:-160px -11px}.wrap .flag.flag-bo{background-position:-176px -11px}.wrap .flag.flag-br{background-position:-192px -11px}.wrap .flag.flag-bs{background-position:-208px -11px}.wrap .flag.flag-bt{background-position:-224px -11px}.wrap .flag.flag-bw{background-position:-240px -11px}.wrap .flag.flag-by{background-position:0 -22px}.wrap .flag.flag-bz{background-position:-16px -22px}.wrap .flag.flag-ca{background-position:-32px -22px}.wrap .flag.flag-cd{background-position:-48px -22px}.wrap .flag.flag-cf{background-position:-64px -22px}.wrap .flag.flag-cg{background-position:-80px -22px}.wrap .flag.flag-ch{background-position:-96px -22px}.wrap .flag.flag-ci{background-position:-112px -22px}.wrap .flag.flag-ck{background-position:-128px -22px}.wrap .flag.flag-cl{background-position:-144px -22px}.wrap .flag.flag-cm{background-position:-160px -22px}.wrap .flag.flag-cn{background-position:-176px -22px}.wrap .flag.flag-co{background-position:-192px -22px}.wrap .flag.flag-cr{background-position:-208px -22px}.wrap .flag.flag-cu{background-position:-224px -22px}.wrap .flag.flag-cv{background-position:-240px -22px}.wrap .flag.flag-cw{background-position:0 -33px}.wrap .flag.flag-cy{background-position:-16px -33px}.wrap .flag.flag-cz{background-position:-32px -33px}.wrap .flag.flag-de{background-position:-48px -33px}.wrap .flag.flag-dj{background-position:-64px -33px}.wrap .flag.flag-dk{background-position:-80px -33px}.wrap .flag.flag-dm{background-position:-96px -33px}.wrap .flag.flag-do{background-position:-112px -33px}.wrap .flag.flag-dz{background-position:-128px -33px}.wrap .flag.flag-ec{background-position:-144px -33px}.wrap .flag.flag-ee{background-position:-160px -33px}.wrap .flag.flag-eg{background-position:-176px -33px}.wrap .flag.flag-eh{background-position:-192px -33px}.wrap .flag.flag-er{background-position:-208px -33px}.wrap .flag.flag-es{background-position:-224px -33px}.wrap .flag.flag-et{background-position:-240px -33px}.wrap .flag.flag-fi{background-position:0 -44px}.wrap .flag.flag-fj{background-position:-16px -44px}.wrap .flag.flag-fk{background-position:-32px -44px}.wrap .flag.flag-fm{background-position:-48px -44px}.wrap .flag.flag-fo{background-position:-64px -44px}.wrap .flag.flag-fr{background-position:-80px -44px}.wrap .flag.flag-ga{background-position:-96px -44px}.wrap .flag.flag-gb{background-position:-112px -44px}.wrap .flag.flag-gd{background-position:-128px -44px}.wrap .flag.flag-ge{background-position:-144px -44px}.wrap .flag.flag-gf{background-position:-160px -44px}.wrap .flag.flag-gh{background-position:-176px -44px}.wrap .flag.flag-gi{background-position:-192px -44px}.wrap .flag.flag-gl{background-position:-208px -44px}.wrap .flag.flag-gm{background-position:-224px -44px}.wrap .flag.flag-gn{background-position:-240px -44px}.wrap .flag.flag-gp{background-position:0 -55px}.wrap .flag.flag-gq{background-position:-16px -55px}.wrap .flag.flag-gr{background-position:-32px -55px}.wrap .flag.flag-gt{background-position:-48px -55px}.wrap .flag.flag-gu{background-position:-64px -55px}.wrap .flag.flag-gw{background-position:-80px -55px}.wrap .flag.flag-gy{background-position:-96px -55px}.wrap .flag.flag-hk{background-position:-112px -55px}.wrap .flag.flag-hn{background-position:-128px -55px}.wrap .flag.flag-hr{background-position:-144px -55px}.wrap .flag.flag-ht{background-position:-160px -55px}.wrap .flag.flag-hu{background-position:-176px -55px}.wrap .flag.flag-id{background-position:-192px -55px}.wrap .flag.flag-ie{background-position:-208px -55px}.wrap .flag.flag-il{background-position:-224px -55px}.wrap .flag.flag-in{background-position:-240px -55px}.wrap .flag.flag-iq{background-position:0 -66px}.wrap .flag.flag-ir{background-position:-16px -66px}.wrap .flag.flag-is{background-position:-32px -66px}.wrap .flag.flag-it{background-position:-48px -66px}.wrap .flag.flag-jm{background-position:-64px -66px}.wrap .flag.flag-jo{background-position:-80px -66px}.wrap .flag.flag-jp{background-position:-96px -66px}.wrap .flag.flag-ke{background-position:-112px -66px}.wrap .flag.flag-kg{background-position:-128px -66px}.wrap .flag.flag-kh{background-position:-144px -66px}.wrap .flag.flag-ki{background-position:-160px -66px}.wrap .flag.flag-km{background-position:-176px -66px}.wrap .flag.flag-kn{background-position:-192px -66px}.wrap .flag.flag-kp{background-position:-208px -66px}.wrap .flag.flag-kr{background-position:-224px -66px}.wrap .flag.flag-kw{background-position:-240px -66px}.wrap .flag.flag-ky{background-position:0 -77px}.wrap .flag.flag-kz{background-position:-16px -77px}.wrap .flag.flag-la{background-position:-32px -77px}.wrap .flag.flag-lb{background-position:-48px -77px}.wrap .flag.flag-lc{background-position:-64px -77px}.wrap .flag.flag-li{background-position:-80px -77px}.wrap .flag.flag-lk{background-position:-96px -77px}.wrap .flag.flag-lr{background-position:-112px -77px}.wrap .flag.flag-ls{background-position:-128px -77px}.wrap .flag.flag-lt{background-position:-144px -77px}.wrap .flag.flag-lu{background-position:-160px -77px}.wrap .flag.flag-lv{background-position:-176px -77px}.wrap .flag.flag-ly{background-position:-192px -77px}.wrap .flag.flag-ma{background-position:-208px -77px}.wrap .flag.flag-mc{background-position:-224px -77px}.wrap .flag.flag-md{background-position:-240px -77px}.wrap .flag.flag-me{background-position:0 -88px}.wrap .flag.flag-mg{background-position:-16px -88px}.wrap .flag.flag-mh{background-position:-32px -88px}.wrap .flag.flag-mk{background-position:-48px -88px}.wrap .flag.flag-ml{background-position:-64px -88px}.wrap .flag.flag-mm{background-position:-80px -88px}.wrap .flag.flag-mn{background-position:-96px -88px}.wrap .flag.flag-mo{background-position:-112px -88px}.wrap .flag.flag-mp{background-position:-128px -88px}.wrap .flag.flag-mq{background-position:-144px -88px}.wrap .flag.flag-mr{background-position:-160px -88px}.wrap .flag.flag-ms{background-position:-176px -88px}.wrap .flag.flag-mt{background-position:-192px -88px}.wrap .flag.flag-mu{background-position:-208px -88px}.wrap .flag.flag-mv{background-position:-224px -88px}.wrap .flag.flag-mw{background-position:-240px -88px}.wrap .flag.flag-mx{background-position:0 -99px}.wrap .flag.flag-my{background-position:-16px -99px}.wrap .flag.flag-mz{background-position:-32px -99px}.wrap .flag.flag-na{background-position:-48px -99px}.wrap .flag.flag-nc{background-position:-64px -99px}.wrap .flag.flag-ne{background-position:-80px -99px}.wrap .flag.flag-nf{background-position:-96px -99px}.wrap .flag.flag-ng{background-position:-112px -99px}.wrap .flag.flag-ni{background-position:-128px -99px}.wrap .flag.flag-nl{background-position:-144px -99px}.wrap .flag.flag-no{background-position:-160px -99px}.wrap .flag.flag-np{background-position:-176px -99px}.wrap .flag.flag-nr{background-position:-192px -99px}.wrap .flag.flag-nu{background-position:-208px -99px}.wrap .flag.flag-nz{background-position:-224px -99px}.wrap .flag.flag-om{background-position:-240px -99px}.wrap .flag.flag-pa{background-position:0 -110px}.wrap .flag.flag-pe{background-position:-16px -110px}.wrap .flag.flag-pf{background-position:-32px -110px}.wrap .flag.flag-pg{background-position:-48px -110px}.wrap .flag.flag-ph{background-position:-64px -110px}.wrap .flag.flag-pk{background-position:-80px -110px}.wrap .flag.flag-pl{background-position:-96px -110px}.wrap .flag.flag-pm{background-position:-112px -110px}.wrap .flag.flag-pn{background-position:-128px -110px}.wrap .flag.flag-pr{background-position:-144px -110px}.wrap .flag.flag-ps{background-position:-160px -110px}.wrap .flag.flag-pt{background-position:-176px -110px}.wrap .flag.flag-pw{background-position:-192px -110px}.wrap .flag.flag-py{background-position:-208px -110px}.wrap .flag.flag-qa{background-position:-224px -110px}.wrap .flag.flag-re{background-position:-240px -110px}.wrap .flag.flag-ro{background-position:0 -121px}.wrap .flag.flag-rs{background-position:-16px -121px}.wrap .flag.flag-ru{background-position:-32px -121px}.wrap .flag.flag-rw{background-position:-48px -121px}.wrap .flag.flag-sa{background-position:-64px -121px}.wrap .flag.flag-sb{background-position:-80px -121px}.wrap .flag.flag-sc{background-position:-96px -121px}.wrap .flag.flag-sd{background-position:-112px -121px}.wrap .flag.flag-se{background-position:-128px -121px}.wrap .flag.flag-sg{background-position:-144px -121px}.wrap .flag.flag-sh{background-position:-160px -121px}.wrap .flag.flag-si{background-position:-176px -121px}.wrap .flag.flag-sk{background-position:-192px -121px}.wrap .flag.flag-sl{background-position:-208px -121px}.wrap .flag.flag-sm{background-position:-224px -121px}.wrap .flag.flag-sn{background-position:-240px -121px}.wrap .flag.flag-so{background-position:0 -132px}.wrap .flag.flag-sr{background-position:-16px -132px}.wrap .flag.flag-ss{background-position:-32px -132px}.wrap .flag.flag-st{background-position:-48px -132px}.wrap .flag.flag-sv{background-position:-64px -132px}.wrap .flag.flag-sy{background-position:-80px -132px}.wrap .flag.flag-sz{background-position:-96px -132px}.wrap .flag.flag-tc{background-position:-112px -132px}.wrap .flag.flag-td{background-position:-128px -132px}.wrap .flag.flag-tg{background-position:-144px -132px}.wrap .flag.flag-th{background-position:-160px -132px}.wrap .flag.flag-tj{background-position:-176px -132px}.wrap .flag.flag-tk{background-position:-192px -132px}.wrap .flag.flag-tl{background-position:-208px -132px}.wrap .flag.flag-tm{background-position:-224px -132px}.wrap .flag.flag-tn{background-position:-240px -132px}.wrap .flag.flag-to{background-position:0 -143px}.wrap .flag.flag-tr{background-position:-16px -143px}.wrap .flag.flag-tt{background-position:-32px -143px}.wrap .flag.flag-tv{background-position:-48px -143px}.wrap .flag.flag-tw{background-position:-64px -143px}.wrap .flag.flag-tz{background-position:-80px -143px}.wrap .flag.flag-ua{background-position:-96px -143px}.wrap .flag.flag-ug{background-position:-112px -143px}.wrap .flag.flag-us{background-position:-128px -143px}.wrap .flag.flag-uy{background-position:-144px -143px}.wrap .flag.flag-uz{background-position:-160px -143px}.wrap .flag.flag-va{background-position:-176px -143px}.wrap .flag.flag-vc{background-position:-192px -143px}.wrap .flag.flag-ve{background-position:-208px -143px}.wrap .flag.flag-vg{background-position:-224px -143px}.wrap .flag.flag-vi{background-position:-240px -143px}.wrap .flag.flag-vn{background-position:0 -154px}.wrap .flag.flag-vu{background-position:-16px -154px}.wrap .flag.flag-wf{background-position:-32px -154px}.wrap .flag.flag-ws{background-position:-48px -154px}.wrap .flag.flag-ye{background-position:-64px -154px}.wrap .flag.flag-yt{background-position:-80px -154px}.wrap .flag.flag-za{background-position:-96px -154px}.wrap .flag.flag-zm{background-position:-112px -154px}.wrap .flag.flag-zw{background-position:-128px -154px}.wrap .loco-add>*:before{content:"\e60c"}.wrap .loco-del>*:before{content:"\e60d"}.wrap .loco-save>*:before{content:"\e610"}.wrap .loco-sync>*:before{content:"\e633"}.wrap .loco-help>*:before{content:"\3f"}.wrap .loco-revert>*:before{content:"\e634"}.wrap .loco-fuzzy>*:before{content:"\e607"}.wrap .loco-download>*:before{content:"\e608"}.wrap .loco-ok>*:before{content:"\e618"}.wrap .loco-warn>*:before{content:"\e62e"}.wrap .loco-edit-pot>*:before{content:"\e61e"}@font-face{font-family:'loco';src:url("../font/loco.eot");src:url("../font/loco.eot?#iefix") format("embedded-opentype"),url("../font/loco.woff") format("woff"),url("../font/loco.ttf") format("truetype"),url("../font/loco.svg#loco") format("svg");font-weight:normal;font-style:normal}.wrap div{position:relative}h2 .nav-tab.nav-tab-loco{float:right;border-color:transparent;font-size:16px;color:#2e892e;background:transparent}h2 .nav-tab.nav-tab-loco:hover{color:#3db63d}.widefat thead tr th{width:25%}.wrap .loco-list{margin:10px 0}.wrap .loco-list li>a:before,.wrap .loco-list li>span:before{padding-right:0.5em;font-family:loco;color:inherit}.wrap .loco-list li.loco-add a{color:#666666}.wrap .loco-list li.loco-add a:hover{color:#000}.wrap .loco-list li.loco-edit-po .flag{margin-right:6px}.wrap .loco-list li.loco-warn>*:before{color:#cc0000}.wrap .loco-list li.loco-ok>*:before{color:#006600}.wrap .loco-list .loco-details li{margin-bottom:0}.wrap .loco-list .loco-mtime{color:#999}.wrap .loco-list .loco-progress{color:#999}.error a.dismiss,.updated a.dismiss{text-decoration:none;font-size:20px;line-height:1;display:block;position:absolute;right:10px;top:5px}.wrap div.loco-message{margin-top:10px}.wrap div.loco-success{border-color:#00CC00;background-color:#ccffcc}.wrap div.loco-message:hover{border-color:#000}form.loco-switcher{display:inline;display:inline-block;padding:0 5px}form.loco-switcher select{font-weight:normal;height:auto;display:inline}h3.title .loco-meta{font-weight:normal;font-size:14px}.wrap #loco-poedit{border:solid 1px #ccc}.wrap #loco-poedit-inner{min-height:600px;font-size:14px;clear:both}.wrap #loco-poedit-inner h2{color:#000;line-height:1}#loco-nav{font-size:14px;height:50px}#loco-nav form{display:block;padding:0;margin:0}#loco-search,#loco-nav button{display:block;position:relative;float:left;clear:none;box-sizing:border-box;margin:5px 0 0 5px;height:40px;text-align:left}#loco-nav button.loco-help{float:right;margin-right:5px}#loco-nav button span:before{padding-right:0.5em;font-family:loco}.wp-core-ui button.loco-inverted,.wp-core-ui button.loco-inverted:hover{background-image:-webkit-gradient(linear, left top, left bottom, from(#e0e0e0), to(#fefefe));background-image:-webkit-linear-gradient(top, #e0e0e0, #fefefe);background-image:-moz-linear-gradient(top, #e0e0e0, #fefefe);background-image:-o-linear-gradient(top, #e0e0e0, #fefefe);background-image:linear-gradient(to bottom, #e0e0e0, #fefefe)}#loco-filter input[type="text"]{padding-left:10px;margin-left:20px;width:300px;font-size:15px}#loco-filter .icon.clear{display:none !important}.loco-fscheck .loco-list{margin-bottom:20px}
pub/js/build/admin-poedit.js CHANGED
@@ -1,76 +1,76 @@
1
- (function(u,B,e,S){function O(c){c.stopPropagation();c.preventDefault();return!1}function $(c,d){function k(){f();b=setTimeout(function(){e(c).fadeOut(1E3,d)},g)}function f(){b&&clearTimeout(b);b=null}var b,g=5E3;k();e(c).mouseenter(f).mouseleave(k)}function W(c,d){function k(d){e(c).remove();e(u).triggerHandler("resize");return d&&O(d)}e('<a class="dismiss" href="#">&times;</a>').appendTo(c).click(k);d||$(c,k)}function U(c,d,k,f){var b="loco-js-"+k;k=B.getElementById(b)||e('<div id="'+b+'" class="loco-message '+
2
- (f||k)+'"></div>').insertBefore(e("#loco-poedit"));c=e(B.createElement("p")).text(c);d=e(B.createElement("strong")).text(d+": ");c.prepend(d).appendTo(e(k).html(""));e(u).triggerHandler("resize");W(k);e("div.loco-warning").remove()}function X(c){return U(c,P("OK"),"updated loco-success")}function V(){var c=G.stats(),d=c.t,k=c.f,f=c.u,d=d+" string"+(1===d?"":"s"),b=[];T&&(d=c.p+" translated, "+d,k&&b.push(k+" fuzzy"),f&&b.push(f+" untranslated"),b.length&&(d+=" ("+b.join(", ")+")"));e("#loco-po-status").text(d)}
3
- function Y(c,d,k){function f(b,c,a){a=a||P("Unknown Ajax error");U(a,P("Error"),"error");k&&k(b,c,a)}return e.ajax({url:aa,type:c.method,data:e(c).serialize(),dataType:"json",error:f,success:function(b,c,a){!b||b.error?f(a,c,b&&b.error&&b.error.message):d&&d(b,c,a)}})}var q=function(){var c={};return{register:function(d,e){c[d]=e},require:function(d,e){var f=c[d];if(!f)throw Error('CommonJS error: failed to require("'+e+'")');return f}}}();q.register("$1",function(c,d,e){Array.prototype.indexOf||
4
- (Array.prototype.indexOf=function(c){if(null==this)throw new TypeError;var b,d=Object(this),a=d.length>>>0;if(0===a)return-1;b=0;1<arguments.length&&(b=Number(arguments[1]),b!=b?b=0:0!=b&&Infinity!=b&&-Infinity!=b&&(b=(0<b||-1)*Math.floor(Math.abs(b))));if(b>=a)return-1;for(b=0<=b?b:Math.max(a-Math.abs(b),0);b<a;b++)if(b in d&&d[b]===c)return b;return-1});return c}({},u,B));q.register("$16",function(c,d,e){function f(r){a||d._gat&&(a=_gat._createTracker(b,"loco"));if(a){var l=r.shift();a[l].apply(a,
5
- r)}else g&&g.push(r);return c}var b,g,a;c._init=function(a){if(b=a.code){g=d._gaq||(d._gaq=[]);g.push(["_setAccount",b]);g.push(["_trackPageview"]);g.push(["_setDomainName",a.host]);a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src=("https:"==e.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var l=e.getElementsByTagName("script")[0];l.parentNode.insertBefore(a,l)}return c};c.event=function(a,c,b,h){return f(["_trackEvent",a||"",c||"",b||"",h||0])};c.page=
6
- function(a,c){return f(["_trackPageview",{page:a||location.pathname+location.hash,title:c||e.title}])};return c}({},u,B));q.register("$17",function(c,d,e){function f(a,r){if(b)b[a](r);else d.ga&&ga(a,r);return c}var b,g;c._init=function(a){a.code&&(function(a,c,b,h,d,n,g){a.GoogleAnalyticsObject=d;a[d]=a[d]||function(){(a[d].q=a[d].q||[]).push(arguments)};a[d].l=1*new Date;n=c.createElement(b);g=c.getElementsByTagName(b)[0];n.async=1;n.src=h;g.parentNode.insertBefore(n,g)}(d,e,"script","//www.google-analytics.com/analytics.js",
7
- "ga"),ga("create",a.code,{alwaysSendReferrer:!0}),a.custom&&f("set",a.custom),c.page(),ga(function(a){b=a}));return c};c.event=function(a,c,b,d){return f("send",{hitType:"event",eventCategory:a||"",eventAction:c||"",eventLabel:b||"",eventValue:Number(d||0)})};c.page=function(a,c){var b={hitType:"pageview",page:a||location.pathname+location.hash,title:c||e.title};b.location=location.protocol+"//"+location.hostname+b.page;g&&f("set",{referrer:g});g=b.location;return f("send",b)};c.reset=function(){g=
8
- location.href;f("set",{page:location.pathname+location.hash,title:e.title,location:g});return c};return c}({},u,B));q.register("$8",function(c,d,k){function f(a,d){e(a).click(function(a){b&&b.event(d,"click",this.getAttribute("href")||"");return!0});a=null;return c}var b,g=location.hostname;c.init=function(a){!b&&a&&(g=a.host||(a.host=g),b=a.legacy?q.require("$16","legacy.js"):q.require("$17","universal.js"),b._init(a));return c};c.link=function(a){for(var b=a.getAttribute("href");b&&"#"!==b;){if(0===
9
- b.indexOf("#"))return f(a,"anchor");if(0===b.indexOf("http")||0===b.indexOf("//")){if(-1!==b.indexOf(g)&&/^(https?:)*\/\/([^\/]+)/.exec(b)&&g===RegExp.$2)break;a.setAttribute("target","_blank");f(a,"external")}break}return c};c.page=function(){b&&b.page.apply(b,arguments);return c};c.event=function(){b&&b.event.apply(b,arguments);return c};c.reset=function(){b&&b.reset&&b.reset();return c};return c}({},u,B));q.register("$22",function(c,d,k){function f(a,b,c,d,h){function s(){t&&clearTimeout(t);f&&
10
- f.fadeOut(400,function(){e(this).remove();f=null});return!1}function n(){m();-1!==d&&(t=setTimeout(s,d||2E3));f.unbind("mouseleave");f.mouseenter(m)}function m(){t&&clearTimeout(t);t=null;f.unbind("mouseenter");f.mouseleave(n)}var t;g||(g=k.createElement("div"),g.id="growls",k.body.appendChild(g));var f=e('<div class="growl growl-'+c+'"><div><a class="close" href="#"><span>X</span></a><span class="badge"></span><p class="message"></p><small class="caption"></small></div></div>');f.find("p").text(a||
11
- "Empty message");b?f.find("small").text(b):f.find("small").remove();if(h.length){h.push({label:"Cancel",callback:s,css:"cancel"});var z,A=e('<form action="#" class="dialog"></form>');b=function(a,h){z=e('<input type="button" value="'+h.label+'" class="butt '+(h.css||"")+'" />');z.click(function(a){"function"===typeof h.callback&&h.callback(a,{close:s})});A.append(z);return z};for(a=0;a<h.length;a++)b(a,h[a]);f.append(A)}e(g).prepend(f.hide().fadeIn(400));f.find("a").click(s);n()}var b,g;c.init=function(){if(!b)return b=
12
- d.alert,d.alert=function(a){a=String(a).split("\n");var b=a[1]&&a.slice(1).join("\n");c.alert(a[0],b)},c};c.debug=function(a){b(a);return c};c.alert=function(a,c,g,e,h){try{return f(a,c||"",g||"alert",e||4E3,h||[]),!0}catch(s){return a+="\n\n--\n"+(s.message||s),b.call(d,a),!1}};c.success=function(a,b,d){return c.alert(a,b,"success",d||2E3)};c.dialog=function(a,b,d,g){return c.alert(a,b,g||"alert",-1,d)};c.login=function(a,b,d,g){c.dialog(b||"You're not logged in",d||"Please log in to continue",[{label:g||
13
- "Log in",callback:function(h,b){location.assign(a||"/session/auth/login?r="+encodeURIComponent(location.href))}}])};return c}({},u,B));q.register("$19",function(c,d,k){function f(a){return 27===a.keyCode&&n&&m?(I(),a.preventDefault(),!1):!0}function b(h){if(n){var b=Math.max(a.height(),r.outerHeight(!0));b&&v.css("height",b+"px");h&&(p=e(d).innerWidth(),D(w))}return!0}function g(a){a?(h.show(),l.addClass("has-title")):(h.hide(),l.removeClass("has-title"))}var a,r,l,v,h,s,n=!1,m=!1,t=!1,E,z,A,p,w,
14
- y=c.init=function(){if(!a){a=e('<div id="overlay"></div>');r=e('<div class="overlay-frame"></div>');l=e('<div class="overlay-container"></div>');h=e('<div class="overlay-title"><span class="title">Untitled</span></div>');s=e('<a class="overlay-close" href="#"><span>x</span></a>');v=e('<div class="overlay-bg"></div>');a.append(r.append(l)).append(v).prependTo(k.body);e(k).bind("keydown",f);e(d).resize(b);A=l.outerWidth(!0)-l.width()+(r.innerWidth()-r.width());l.outerHeight(!0);l.outerHeight(!1);r.innerHeight();
15
- r.height();p=e(d).innerWidth();E=parseInt(l.css("width"));if(!E||isNaN(E))E=l.width();z=parseInt(l.css("height"));if(!z||isNaN(z))z=l.height();h.append(s.hide()).hide().prependTo(r);a.hide()}return a},D=c.width=function(h){y();if(null===h)r.css("width",""),l.css("width","");else{h=h||E||640;x=h+A;w=h;var b=p;x>b?(x=b,h=x-A,a.addClass("spill")):a.removeClass("spill");r.css("width",x+"px");l.css("width",h+"px")}return c};c.autoSize=function(){y();b();var a=E||0;l.children().each(function(h,b){a=Math.max(a,
16
- e(b).outerWidth(!0))});D(a);return c};c.css=function(a){y().attr("class",a);return c};c.html=function(a){y();d.innerShiv&&(a=innerShiv(a,!1));return l.html(a)};c.append=function(a){y();a instanceof jQuery||(a=e(a));l.append(a);return c};var I=c.close=function(h){if(n){var b=function(){y().hide();e(k.body).removeClass("has-overlay");n=!1;l.html("");n=null;a.trigger("overlayClosed",[c])};null==h&&(h=300);h?a.fadeOut(h,b):b()}return c};c.title=function(a){y();t=a||"";h.find("span.title").text(t);null!=
17
- a?g(!0):m||g(!1);return c};c.enableClose=function(){y();m=!0;s.unbind("click").bind("click",function(a){I();return!1});g(!0);s.show();return c};c.disableClose=function(){y();m=!1;s.hide();n&&t||g(!1);return c};c.open=function(){y();l.html("");D(E);a.attr("class","");e(k.body).addClass("has-overlay");y().show();n=!0;b();c.title(null);m&&g(!0);a.trigger("overlayOpened",[c]);return c};c.listen=function(a){y().bind("overlayClosed",a);return c};c.unlisten=function(a){y().unbind("overlayClosed",a);return c};
18
- return c}({},u,B));q.register("$18",function(c,d,k){var f={401:"You've been logged out",404:"Not Found",500:"Server Error",502:"Bad Gateway",503:"Service unavailable",504:"Gateway timeout"};c.getErrors=function(){return f};c.jsonLink=function(b){if(!b)return"";b=b.split("?");b[0]=b[0].replace(/(\.[a-z0-9]{1,4})?$/i,".json");return b.join("?")};c.errorData=function(b,c,a){var d,l;a=b.responseText;c=b.status;if(!a&&0===c)return null;try{d=e.parseJSON(a)||{}}catch(v){d={},l=v.message||v}l||(l=d.statusText||
19
- b.statusText||f[c]||"Unknown Error");d.error=l;return d};c.ajax=function(b,g,a,r){function l(){a&&a()}function f(a){a.alert&&alert(a.alert);var h=a.success;h&&q.require("$22","growl.js").success.apply(this,h.push?h:[h]);h=r||e(k.body);h.trigger("locoAjaxSuccess",[a]);var b=a.events;if(b&&b.length)for(var c,g=q.require("$8","ga.js");c=b.shift();)h.trigger(c,[a]),g.event("ajax",c);a.modal&&q.require("$10","LocoModal.js").replace(a.modal);if(a.download)d.location.assign(a.download);else if(a.redirect)return d.location.assign(a.redirect),
20
- !1;l();return!0}function h(a,h,b){401===a.status?(q.require("$22","growl.js").login(),l()):(h=c.errorData(a,h,b),null!=h&&(b=h.error,"function"===typeof g&&!1===g(null,b,a.status)?l():h&&h.data&&!f(h.data)||(alert(b||"Unknown error"),l())))}b.error=h;b.success=function(a,b,c){if(!a)return h(c,"unknown");a.status&&alert(a.statusText||"Unknown error");"function"===typeof g&&!1===g(a&&a.data?a.data:a)?l():a&&a.data?f(a.data):l()};e.ajax(b)};return c}({},u,B));q.register("$10",function(c,d,k){function f(a,
21
- b){g.autoSize();var c=g.init();q.require("$2","html.js").init(c);c.find("[data-script]").each(function(a,h){h=e(h);for(var c=-1,d,n=h.attr("data-script").split(" ");++c<n.length;)d=n[c],r[d]?r[d](h,b||{}):alert("Unknown script "+d)});c.trigger("locoModalLoaded",[g,a||"",b||{}]);var d,l=c.find("form")[0];if(l)a:for(c=0;c<l.elements.length;c++)switch(d=l.elements[c],d.type){case "text":case "email":case "textarea":e(d).focus();break a}}function b(a){var b=e(a.currentTarget),c=b.attr("data-modal");if("close"===
22
- c){v();var d=b.attr("href");if(d&&-1!==d.indexOf("#!"))return!0}else{var r="submit"===a.type,f=b.attr("title")||b.attr("data-title"),d=b.attr("href")||b.attr("action"),z=r?b.serialize():"",b=r?b.attr("method"):"get";l(d,f,b,z);c||(c=d.split("/").slice(1,4).join("-"));c="modal "+c;g.width(null).css(c).autoSize()}a.stopPropagation();a.preventDefault();return!1}var g=q.require("$19","overlay.js"),a=q.require("$8","ga.js"),r={},l=c.load=function(h,b,d,r){g.open().title("Loading ..").disableClose().css("modal").html('<div class="overlay-placeholder"></div>');
23
- var l=q.require("$18","http.js");d={type:d||"get",data:r||"",url:l.jsonLink(h)};l.ajax(d,function(c,d,r){var n=c&&c.html;if(!n)return c=e('<h3 class="error"></h3>').text(d||"Unknown error"),g.enableClose().title("Error "+r||"?").html("").append(c),!1;b=c.title||b||"Untitled";g.enableClose().title(b).html(n);f(h,c.js);a.page(h,b);g.init().one("overlayClosed",function(){a.reset()});return!0});return c},v=c.close=function(){g.close();return c};c.initLink=function(a){a.click(b)};c.initForm=function(a){e(a).submit(b)};
24
- c.replace=function(a){var b=a&&a.html,c=a&&a.url,d=a&&a.title;c?(l(c,d),a=a&&a.css||c.split("/").slice(1,4).join("-"),g.width(null).css(" modal "+a).autoSize()):b&&(g.open().html(b),d&&g.enableClose().title(d),f("",a&&a.js))};c.find=function(a){return g.init().find(a)};c.script=function(a,b){if(b){if("function"!==typeof b.run)throw Error(a+" macro has no run function");r[a]=b.run;return c}return r[a]};return c}({},u,B));q.register("$12",function(c,d,k){function f(a){a.stopPropagation();a.preventDefault();
25
- return!1}function b(a,b,c){if(c=c||a.getElement(b))c.unbind().mouseup(function(c){c.stopPropagation();a.selectIndex(b,!0);return!1}).mouseover(function(){e(this).addClass("over");a.hover=b;return!0}).mouseout(function(){e(this).removeClass("over");a.hover=-1;return!0}),c=null;return a}function g(a){if(a){var b=this,c=a[0];b.id=c.id||"";b.name=c.name||"";b.prefix=c.getAttribute("data-prefix");b.defaultIcon=c.getAttribute("data-icon")||"jshide";var d=c.selectedIndex,h=[],g,n,m;for(n=0;n<c.options.length;n++)g=
26
- c.options[n],m=g.disabled,g=e(g),h.push([g.val(),g.text(),g.attr("data-icon")||"",m]);b.hidden=e('<input type="hidden" name="'+b.name+'" value="" />').appendTo(c.form);b.list=e('<ul class="clearfix"></ul>');b.icon=e('<span class="icon"> </span>');b.selection=e('<span class="label"></span>');b.handle=e('<a class="handle" href="#"></a>').attr("tabindex",a.attr("tabindex")||"").append(b.icon).append(b.selection);b.wrapper=e("<div></div>").addClass(c.className).addClass("selector").append(b.handle).append(b.list).replaceAll(c);
27
- this.id&&b.wrapper.attr("id",this.id);for(b.clearOptions();g=h.shift();)b.addOption.apply(b,g);b.handle.click(function(a){a.preventDefault();return!1}).mouseover(function(a){return b.onRollover(a)}).mouseout(function(a){return b.onRollout(a)}).mousedown(function(a){return b.onPress(a)}).keydown(function(a){return b.onKeydown(a)});e(k.body).mouseup(function(a){return b.onRelease(a)}).keydown(function(a){return b.onGlobalKeydown(a)});b.close();b.selectIndex(d)}}c.create=function(a){return new g(a)};
28
- c.extend=function(a){a.prototype=new g};d=g.prototype;d.onRollover=function(a){return this.over=!0};d.onRollout=function(a){this.over=!1;return!0};d.onPress=function(a){return this.active?this.over?(this.close(),a.stopPropagation(),a.preventDefault(),!1):!0:(this.open(),a.stopPropagation(),a.preventDefault(),this.handle.focus(),!1)};d.onRelease=function(a){this.active&&!this.over&&this.close();return!0};d.onGlobalKeydown=function(a){if(this.active)switch(a.keyCode){case 27:return this.close(),f(a);
29
- case 40:return this.hoverNext(1),f(a);case 38:return this.hoverNext(-1),f(a);case 13:if(-1!=this.hover)return this.selectIndex(this.hover,!0),this.hoverItem(-1),this.close(),f(a)}return!0};d.onKeydown=function(a){return this.active||40!==a.keyCode?!0:(this.open(),f(a))};d.open=function(){this.active=!0;this.hover=-1;this.wrapper.addClass("active");var a=this.handle.outerHeight()||0;this.list.show().css("top",a+"px");var a=this.handle.outerWidth()||0,b=this.list.outerWidth()||0;a>b&&(b-=this.list.width(),
30
- this.list.css("min-width",String(a-b)+"px"))};d.close=function(){this.list.hide();this.active=!1;-1!==this.hover&&(this.getElement(this.hover).removeClass("over"),this.hover=-1);this.wrapper.removeClass("active")};d.hoverItem=function(a,b){-1!==this.hover&&this.getElement(this.hover).removeClass("over");this.hover=a;-1!==a&&(b=b||this.getElement(a),b.addClass("over"))};d.hoverNext=function(a){var b=this.options.length;if(b){b-=1;if(-1==this.hover)a=0<a?0:b;else{a=this.hover+a;if(0>a){this.close();
31
- return}a>b&&(a=0)}this.hoverItem(a)}};d.enableChange=function(a){this.eventName=a;this.eventData=[].slice.call(arguments,1);return this};d.clearOptions=function(){this.index={};this.length=0;this.options=[];this.list.html("");this.hidden.val("");this.idx=this.hover=-1;return this};d.addOption=function(a,c,d,g){var h=this.options.length,s=e("<span></span>").addClass(d||"jshide"),n=e('<span class="label"></span>').text(c||a),s=e("<li></li>").append(s).append(n).appendTo(this.list);s.attr("data-option",
32
- h);this.options[h]={value:a,text:c,icon:d};this.index[a]=h;this.length=h+1;g?this.disableIndex(h):b(this,h,s);return h};d.disableOption=function(a){return this.disableIndex(this.index[a])};d.disableIndex=function(a){(a=this.getElement(a))&&a.addClass("disabled").unbind();return this};d.enableOption=function(a){return this.enableIndex(this.index[a])};d.enableIndex=function(a){return b(this,a)};d.reIndex=function(){this.index={};this.length=0;for(var a=this.options.length;-1<--a;)this.index[this.options[a].value]=
33
- a,this.length++};d.selectValue=function(a,b){return this.selectIndex(this.index[a],b)};d.selectIndex=function(a,b){var c=this.options[a];c&&(this.hidden.val(c.value),a!==this.idx&&(this.idx=a,this.setLabel(c.text),this.icon.attr("class",c.icon||this.defaultIcon),b&&this.change()),this.active&&this.close());return this};d.setLabel=function(a){this.selection.text(a);this.prefix&&this.selection.prepend(e('<span class="prefix"></span>').text(this.prefix))};d.val=function(){var a=this.options[this.idx];
34
- return a&&a.value};d.change=function(){var a=this.eventName||"change",b=this.eventData&&this.eventData.slice()||[];b.unshift(this.val());this.wrapper.trigger(a,b);return this};d.renameOption=function(a,b){var c=this.index[a],d=this.options[c];d&&(d.text=b,this.getElement(c).find("span.label").text(b),c===this.idx&&this.setLabel(b));return this};d.removeOption=function(a){var b=this.index[a],c=this.options[b];c&&(a=this.val(),this.getElement(b).remove(),this.options.splice(b,1),this.reIndex(),a===
35
- c.value?this.selectIndex(0,!0):this.selectValue(a,!1))};d.getElement=function(a){return this.list.find("li").eq(a)};d=null;return c}({},u,B));q.register("$20",function(c,d,e){function f(a){b&&(a=g[a]||a);return a}var b=navigator.msPointerEnabled,g={touchstart:"MSPointerDown",touchmove:"MSPointerMove",touchend:"MSPointerUp"};c.bind=function(a,b,d){a=f(a);b.addEventListener&&b.addEventListener(a,d,!1);return c};c.unbind=function(a,b,d){a=f(a);b.removeEventListener&&b.removeEventListener(a,d,!1);return c};
36
- return c}({},u,B));q.register("$13",function(c,d,k){function f(){r&&clearTimeout(r);r=null}function b(a){a.preventDefault();a.stopPropagation();return!1}var g,a,r,l=100,v=100,h=!1,s=!1,n;c.delays=function(a,b){l=a||0;v=b||0};c.kill=function(){a&&a.hide().stop().remove();a=null;g&&g.hide().html("")};c.text=function(b){a&&a.find("label.tip").text(b)};c.init=function(m){function t(){g||(g=e('<div id="tipholder"></div>').appendTo(k.body));return g}function E(){f();y?r=setTimeout(z,y):z()}function z(){f();
37
- h||s||p()}function A(){f();a&&(a.stop(),a.remove());var b=m.offset();a=I.clone();t().show().append(a);var c=Math.round(b.left),b=Math.round(b.top);a.hasClass("tooltip-right")&&(c-=a.outerWidth(!1),c+=m.outerWidth(!1));b=a.hasClass("tooltip-top")?b-a.outerHeight():b+m.outerHeight();t().css("left",c+"px").css("top",b+"px");a.mouseenter(function(){h=!0;return!1}).mouseleave(function(){h=!1;E();return!0});Boolean(a.find("form").length|a.find("a").length)||a.click(w);m.trigger("tooltipOpen",[a])}function p(){function b(){c.kill()}
38
- a?a.fadeOut(500,b):b();m.trigger("tooltipClose",[a])}function w(){!1!==m.triggerHandler("click")&&C&&(location.href=C);return!1}var y=Number(m.attr("data-hide-delay")||v),D=Number(m.attr("data-show-delay")||l),I=m.find("div.tooltip"),F=m.attr("title");if(!I.length){if(!F)return;I=e('<div class="tooltip"></div>').append(e('<label class="tip"></label>').text(F));m.hasClass("hastip-top")&&I.addClass("tooltip-top");m.hasClass("hastip-right")&&I.addClass("tooltip-right");m.prepend(I)}F&&(m.attr("data-title")&&
39
- I.children("label.tip").text(F),m.attr("data-title",F),m.attr("title",""));var C=m.attr("href");"#"===C&&(C="");F=q.require("$20","touch.js").bind("touchstart",m[0],b).bind("touchmove",m[0],b).bind("touchend",m[0],function(a){setTimeout(w,300);return b(a)});null==n&&(n=!1,F.bind("touchstart",d,function(){return n=!0}).bind("touchend",d,function(){setTimeout(function(){n=!1},300);return!0}));m.mouseover(function(){n||(s=!0,f(),a?A():D?r=setTimeout(A,D):A());return!0}).mouseout(function(){n||(s=!1,
40
- E());return!0});C&&m.click(function(){s=!1;p();return!0})};return c}({},u,B));q.register("$2",function(c,d,k){var f=d.ieVersion;c.ie=function(b){return b?f<=b:f};var b=c.init=function(d){d?d instanceof jQuery||(d=e(d)):d=e(k.body);var a=q.require("$8","ga.js"),r=q.require("$9","forms.js"),l=q.require("$10","LocoModal.js"),v=q.require("$11","LocoAutoComplete.js"),h=q.require("$12","LocoSelector.js"),s=q.require("$13","tooltip.js");d.find("form").each(function(a,b){var c=e(b);f&&10>f&&r.placeholders(c);
41
- b.getAttribute("data-modal")?l.initForm(b):b.action&&0!==b.action.indexOf("#")&&!b.target&&r.jsonify(b);c.hasClass("hasreveal")&&r.revealify(c);c.find("input.button").each(function(a,b){r.linkify(b)});c.find("input.auto-comp").each(function(a,b){v.init(b)});c.find("select.selector").each(function(a,b){h.create(e(b))})});d.find("a").each(function(d,h){-1!==h.className.indexOf("hastip")&&s.init(e(h));if(-1!==h.href.indexOf("/modal/")||h.getAttribute("data-modal"))l.initLink(e(h));else{a.link(h);var g=
42
- h.getAttribute("data-ajax-target");g&&(g=e("#"+g),e(h).click(function(a){a.preventDefault();g.addClass("loading");e.get(h.href,function(a){a=c.$(a).replaceAll(g);b(a);a.trigger("locoAhah")});return!1}))}});r=l=v=d=null;return c};c.$=function(b){return e(d.innerShiv?innerShiv(b,!1):b)};e.fn._html=function(c){return null!=c?(c=this.html(d.innerShiv?innerShiv(c,!1):c),b(this),c):j.html()};e.fn.macro=function(b,a){if("function"!==typeof b.run)throw Error("macro has no run function");b.run(this,a||{});
43
- return this};c.el=function(b,a){var c=k.createElement(b||"div");a&&(c.className=a);return c};c.txt=function(b){return k.createTextNode(b||"")};return c}({},u,B));q.register("$6",function(c,d,k){var f=q.require("$2","html.js").ie()?["keyup","paste"]:["input"];c.listen=function(b,c){function a(){m[s?"show":"hide"]()}function d(){b.value!==s&&(v&&clearTimeout(v),s=b.value,n&&b.setAttribute("size",s.length||1),a(),v=setTimeout(function(){c(s)},h))}function l(){d();return!0}b=b instanceof jQuery?b[0]:
44
- b;for(var v,h=150,s=b.value,n=1===Number(b.size),m=e('<a href="#clear" tabindex="-1" class="icon clear"><span>clear</span></a>').click(function(a){b.value="";d();return!1}),t=-1,E=e(b);++t<f.length;)E.bind(f[t],l);E.after(m);a();t=E=null;return{ping:d,val:function(c){if(null==c)return s;v&&clearTimeout(v);b.value=s=c;a()}}};return c}({},u,B));q.register("$4",function(c,d,e){function f(){var b,c;this.clear=function(){this.length=0;b={};c=[]};this.getTree=function(){return b};this.getData=function(){return c};
45
- this.clear()}c.create=function(){return new f};d=f.prototype;d.depth=0;d.matchall=!0;d.ignorecase=!0;d.nonword=/[\-.?!;:,_*^+=~`"'(){}<>[\]\/\\\u00a0\u1680\u180e\u2000-\u206f\u2e00-\u2e7f\u3000-\u303f]+/g;d.translit=function(b,c){function a(a){return b[a]||a}c=c||/[^a-z0-9]/g;this.trans=function(b){return b.replace(c,a)}};d.stoppers=function(b){this.stopped=function(c){return Boolean(b[c])}};d.add=function(b,c){null==c&&(c=String(b));var a=-1,d,e,f,h,s,n=this.normalize(c);d=this.getData();var m=d.length;
46
- d.push(b);for(this.length++;++a<n.length;)if(d=n[a],!this.stopped(d)){e=this.getTree();f=Math.min(d.length,this.depth)||d.length;for(h=0;h<f;h++)s=d.charAt(h),e=e[s]||(e[s]={});d=e[" "]||(e[" "]=[]);d.push(m)}return this};d.find=function(b,c){function a(b,c){var d,h,A;for(n in b)if(A=b[n]," "===n)for(d in A)m=A[d],h=t[m]||(t[m]={length:0,words:{}}),h.length+=h.words[c]?0:1,h.words[c]=1+(h.words[c]||0);else a(A,c)}var d=-1,e,f,h,s,n,m,t={},E=[],k=this.normalize(b),A=this.getData();a:for(;++d<k.length;){e=
47
- k[d];f=this.getTree();h=Math.min(e.length,this.depth)||e.length;for(s=0;s<h;s++){n=e.charAt(s);if(!f[n])continue a;f=f[n]}a(f,e)}for(m in t)this.matchall&&t[m].length<k.length||E.push(A[m]);c&&(c.query=b,c.words=k);return E};d.normalize=function(b){for(var c=-1,a={},d=[],e=this.split(b);++c<e.length;)if(b=e[c])if(this.ignorecase&&(b=b.toLowerCase()),b=this.strip(b))this.trans&&(b=this.trans(b)),a[b]||(d.push(b),a[b]=!0);return d};d.stopped=function(b){return 1===b.length};d.split=function(b){return b.split(/\s+/)};
48
- d.strip=function(b){return b.replace(this.nonword,"")};d=null;return c}({},u,B));q.register("$11",function(c,d,k){function f(b){this.url="/auto/"+b+".json?q=";this.dead={}}function b(){this.dict=q.require("$4","dict.js").create()}c.init=function(c){function a(){if("hint"!==F){var a=D.val()&&!(L&&L.val())&&null==w&&!k;Z[a?"addClass":"removeClass"]("error")}}function d(){u.show();var a=D.outerWidth(!1),b=D.outerHeight(!1),c=D.css("margin-top");c&&(c=parseInt(c),isNaN(c)||(b+=c));a-=2;u.css("top",b+
49
- "px").css("width",a+"px");k=!0}function l(){u.hide();k=!1}function v(){u.html("");l();E=0;y=w=null}function h(b){v();var c;for(c=0;c<b.length;c++){var h=c,p=b[c],g=e('<span class="label"></span>').text(p.label),w=e('<div class="auto-comp-result"></div>'),f=void 0;for(f in p)w.attr("data-"+f,p[f]);p.icon&&w.append(e("<span></span>").attr("class",p.icon));w.append(g);s(h,w)}(E=b.length)?(A&&d(),n(0)):(n(null),a())}function s(a,b){u.append(b);b.click(function(c){c.stopPropagation();n(a,b);t();return!1});
50
- return b}function n(a,b){y&&(y.removeClass("selected"),y=null);w=null;null==a?L&&L.val(""):(b||(b=u.find("div.auto-comp-result").eq(a)),b.length&&(b.addClass("selected"),w=a,y=b))}function m(a){if(E){var b=E-1;null==w?a=0<a?0:b:(a=w+a,0>a?a=b:a>b&&(a=0));return n(a)}}function t(){if(null==w)B.val(""),L&&L.val("");else{var b=u.find("div.auto-comp-result").eq(w),c=b.attr("data-value"),d=b.attr("data-label");L&&L.val(c);B.val(d);l();b=b.clone();v();s(0,b);E=1;n(0,b);a();b.trigger("locoAutocomp",[c,d,
51
- b])}}var E=0,k=!1,A=!1,p=c.form,w=null,y=null,D=e(c),I=D.attr("name"),F=D.attr("data-mode"),C=D.attr("data-provider"),L="hint"!==F&&e('<input type="hidden" value="" name="'+I+'" />').appendTo(p),Z=e('<div class="auto-comp-wrap"></div>').replaceAll(D),u=e('<div class="auto-comp-drop"></div>');C&&(C=new f(C));L&&D.attr("name","_"+I);D.attr("autocomplete","off");Z.append(D).append(u);l();D.focus(function(a){A=!0;1<E&&d()}).blur(function(b){A=!1;a()}).keydown(function(a){function b(){a.preventDefault();
52
- a.stopPropagation();return!1}switch(a.keyCode){case 27:k&&(a.stopPropagation(),l(),D.blur());break;case 40:E&&(k?m(1):d());break;case 38:k&&m(-1);break;case 13:if(k)return t(),b();if(!w&&"hint"!==F)return b()}return!0});var B=q.require("$6","LocoTextListener.js").listen(D,function(a){C&&C.fetch(a,h)});(p=D.attr("data-pre"))&&(p=e.parseJSON(p))&&p.value&&p.label?(h([p]),t()):!c.value||L&&L.val()||!C||C.fetch(c.value,function(a){h(a);t()});return{$:D,clear:v,reset:function(){v();D.val("");L&&L.val("");
53
- B.ping()},preload:function(a){E&&v();C=new b;var c,d;for(c in a)d=a[c],C.add(d)},mode:function(a){F=a}}};f.prototype.fetch=function(b,a){if(!b)return a&&a([]),this;var c,d=this.dead;for(c in d)if(0===b.indexOf(c))return a&&a([]),this;c={dataType:"json",url:this.url+encodeURIComponent(b)};q.require("$18","http.js").ajax(c,function(c){var h=c&&c.results;h&&(a&&c.query&&c.query===b&&a(c.results),h.length||(d[b]=0));return!0});return this};b.prototype.add=function(b){var a=b.fulltext||b.label||b.value;
54
- a&&this.dict.add(b,a)};b.prototype.fetch=function(b,a){if(!b)return a&&a([]),this;var c=this.dict.find(b);a(c)};return c}({},u,B));q.register("$9",function(c,d,k){function f(a){function b(){a.value===h&&(a.value="",d.removeClass("placeheld"));return!0}function c(){""===a.value&&(a.value=h,d.addClass("placeheld"));return!0}var d=e(a);if(!d.hasClass("auto-comp")){var h=d.attr("placeholder");if(h)return d.focus(b).blur(c),c(),{kill:function(){b();d.unbind("focus",b).unbind("blur",c)}}}}var b=c.enable=
55
- function(a){function b(a,c){c.getAttribute("data-was-disabled")||(c.disabled=!1)}a.find(".button").removeClass("loading");a.find("input").each(b);a.find("select").each(b);a.find("textarea").each(b);d.attachEvent&&a.hasClass("has-placeholders")&&c.placeholders(a)},g=c.disable=function(a){function b(a,c){c.disabled?c.setAttribute("data-was-disabled","true"):c.disabled=!0}a.find(".button").addClass("loading");a.find("input").each(b);a.find("select").each(b);a.find("textarea").each(b)};c.jsonify=function(a,
56
- c,f){a instanceof jQuery||(a=e(a));a.disable||(e.fn.disable=function(){g(this);return this},e.fn.enable=function(){b(this);this.placehold&&this.placehold();return this});var k="";a.find('[type="submit"]').click(function(a){a&&a.target&&a.target.name&&(k=encodeURIComponent(a.target.name)+"="+encodeURIComponent(a.target.value));return!0});a.submit(function(b){if(b&&b.isDefaultPrevented&&b.isDefaultPrevented()||f&&!1===f(b))return!1;var h=d.tinyMCE;h&&a.find("textarea.editor").each(function(a,b){var c=
57
- h.get(b.id);c&&c.save()});var e=a.serialize();k&&(e&&(e+="&"),e+=k,k="");a.disable();var g=q.require("$18","http.js"),e={url:g.jsonLink(a.attr("action")),type:a.attr("method"),data:e};g.ajax(e,c,function(){a.enable()},a);b.preventDefault();b.stopPropagation();return!1});if(a.hasClass("autopost")){var h,s=Number(a.attr("data-autopost-delay")||500);a.find('input[type="checkbox"]').change(function(){h&&clearTimeout(h);h=setTimeout(function(){a.submit()},s);return!0})}};c.revealify=function(a){a.find("div[data-reveal-if]").each(function(b,
58
- c){function d(a){var b;z=z||a.target;if("."===k)b=Boolean(z&&z[E]);else if("="===k){var c,f;b=e(z.form).serializeArray();for(f in b)b[f].name===g&&(c=b[f].value);b=E===c}if(b!==n)if(n=b,a)h[n?"slideDown":"slideUp"](200);else h[n?"show":"hide"]();return!0}var h=e(c),f=/^([_\w\-\[\]]+)(\.|=)(.+)$/.exec(h.attr("data-reveal-if"));if(f){var n,g=f[1],k=f[2],E=f[3],f=a[0][g];f.length||(f=[f]);var z;for(b=0;b<f.length;b++)z=f[b],d(),e(z).change(d).removeClass("jshide");f=f=z=null}});a=null};c.linkify=function(a){var b=
59
- a.getAttribute("data-icon");if(b){var c=e(a),d=e("<a> </a>");d.attr("href",a.form.action);d.attr("class",c.attr("class"));d.attr("tabindex",c.attr("tabindex"));c.attr("tabindex","-1");d.text(c.val());b&&e("<span></span>").prependTo(d).addClass(b);c.hide().after(d);d.click(function(a){c.click();return!1})}};c.placeholders=function(a){var b,c=[];a.find("input[placeholder]").each(function(a,d){"password"!==d.type&&(b=f(d))&&c.push(b)});c.length&&(a.submit(function(){for(var a in c)c[a].kill()}),a.addClass("has-placeholders"),
60
- b=i=null)};return c}({},u,B));q.register("$14",function(c,d,e){function f(b){this.reIndex([]);if(b)for(var c in b)this.add(c,b[c])}c.init=function(b){return new f(b)};d=f.prototype;d.reIndex=function(b){var c=-1;for(this.ords={};++c<b.length;)this.ords[b[c]]=c;this.keys=b;this.length=c};d.key=function(b,c){if(null==c)return this.keys[b];var a=this.keys[b],d=this.ords[c];if(c!==a){if(null!=d)throw Error("Clash with item at ["+d+"]");this.keys[b]=c;delete this.ords[a];this.ords[c]=b}return b};d.indexOf=
61
- function(b){b=this.ords[b];return null==b?-1:b};d.add=function(b,c){var a=this.ords[b];null==a&&(this.keys[this.length]=b,a=this.ords[b]=this.length++);this[a]=c;return a};d.get=function(b){return this[this.ords[b]]};d.cut=function(b,c){var a=[].splice.call(this,b,c);this.keys.splice(b,c);this.reIndex(this.keys);return a};d.each=function(b){for(var c=-1;++c<this.length;)b(this.keys[c],this[c],c);return this};d=null;return c}({},u,B));q.register("$3",function(c,d,e){function f(a){return{"Project-Id-Version":"PACKAGE VERSION",
62
- "Report-Msgid-Bugs-To":"","POT-Creation-Date":a||"","POT-Revision-Date":a||"","PO-Revision-Date":a||"","Last-Translator":"","Language-Team":"",Language:"","Plural-Forms":"","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","X-Poedit-SourceCharset":"UTF-8"}}function b(a,b){var c=a||"";b&&(c+="\x00"+b);return c}function g(){return q.require("$14","collection.js").init()}function a(a){if(!a)return'""';for(var b=a.replace("\r\n","\n").split("\n"),c=b.length-
63
- 1,d=[],e=-1,f;++e<b.length;){a=b[e];for(c&&c!==e&&(a+="\n");a&&a.charAt(79);){for(f=80;--f;)if(-1!==" \n\r.?!,;:-".indexOf(a.charAt(f))){f++;break}f||(f=79);d.push(r(a.substr(0,f)));a=a.substr(f)}a&&d.push(r(a))}d[1]&&d.unshift("");return'"'+d.join('"\n"')+'"'}function r(a){return a.replace(/(["\\])/g,"\\$1").replace(/\n/g,"\\n")}function l(a){this.head={};this.headers(f(this.now()));this.locale(a);this.length=0;this.rows=g()}function v(a,b){this.src=[a||""];this.msg=[b||""];this.ref=this.cmt="";
64
- this.status=0}c.create=function(a){return new l(a)};d=l.prototype;d.now=function(){return(new Date).toString()};d.header=function(a,b){if(null==b)return this.headers()[a]||"";this.head[a]=b||"";return this};d.headers=function(a){var b;if(null!=a){for(b in a)this.head[b]=a[b];return this}var c=this.locale(),d=this.now();a={};for(b in this.head)a[b]=String(this.head[b]);c?(a.Language=c.label||"Unknown locale",a["Plural-Forms"]="nplurals="+(c.nplurals||"2")+"; plural="+(c.pluraleq||"n!=1"),a["X-Loco-Target-Locale"]=
65
- (c.lang||"en")+"_"+(c.region||"GB"),a["PO-Revision-Date"]=d,delete a["POT-Revision-Date"]):(a.Language="",a["Plural-Forms"]="nplurals=INTEGER; plural=EXPRESSION",a["POT-Revision-Date"]=d,a["PO-Revision-Date"]="YEAR-MO-DA HO:MI+ZONE");a["X-Generator"]="Loco - https://localise.biz/";return a};d.locale=function(a){if(null==a)return this.loc;this.loc=a||{lang:"en",region:"GB",nplurals:2,pluraleq:"n == 1 ? 0 : 1",label:"English"};this.loc.toString=function(){return this.lang+"_"+this.region};return this};
66
- d.lock=function(a){this.locale(a||!1);return this.loc};d.unlock=function(){var a=this.loc;this.loc=null;return a};d.reIndex=function(a,b){var c=this.indexOf(a),d=a.hash(),e=this.rows.indexOf(d);return e===c?c:-1!==e?(b=(b||0)+1,a.source("Error, duplicate "+String(b)+": "+a.source()),this.reIndex(a,b)):this.rows.key(c,d)};d.get=function(a,c){var d=b(a,c);return this.rows.get(d)};d.indexOf=function(a){null==a.idx&&(a.idx=this.rows.indexOf(a.hash()));return a.idx};d.del=function(a){a=this.indexOf(a);
67
- if(-1!==a){var b=this.rows.cut(a,1);if(b&&b.length)return this.length=this.rows.length,this.rows.each(function(a,b,c){b.idx=c}),a}};d.add=function(a,b){a instanceof v||(a=new v(a));b&&a.context(b);var c=a.hash();if(this.rows.get(c))throw Error("Duplicate message at index "+this.indexOf(a));a.idx=this.rows.add(c,a);this.length=this.rows.length;return a};d.each=function(a){this.rows.each(a);return this};d.load=function(a){for(var b=-1,c,d,e,f,g=[],A=[],p=[],w=[];++b<a.length;)if(c=a[b],null==c.parent){if(d=
68
- c.source||c.id,e=c.context,d||e)f=new v(d,c.target||""),e&&f.context(e),c.flag&&f.flag(c.flag,!0),c.comment&&f.comment(c.comment),c.refs&&f.location(c.refs),c.message=f,f.translation()?f.fuzzy()?p.push(f):A.push(f):w.push(f)}else g.push(c);for(b=-1;++b<g.length;)try{c=g[b];d=c.source||c.id;f=a[c.parent]&&a[c.parent].message;if(!f)throw Error("parent missing for plural "+d);1===c.plural&&f.plural(d);f.translate(c.target||"",c.plural)}catch(y){}d=[w,p,A];for(b=0;3>b;b++)for(c=d[b],a=-1;++a<c.length;)try{this.add(c[a])}catch(k){}return this};
69
- d.merge=function(a){var b,c=this.rows,d=g(),e={add:[],del:[]};a=a.rows;this.rows.each(function(b,c){a.get(b)||e.del.push(c)});a.each(function(a,h){try{(b=c.get(a))?h.ref&&b.location(h.ref):(b=h,e.add.push(b)),b.idx=d.add(a,b)}catch(f){}});this.rows=d;this.length=d.length;return e};d.row=function(a){return this.rows[a]};d.toString=function(){var a,b=[],c=[],d=this.headers(),e=!this.loc;for(a in d)c.push(a+": "+d[a]);c=new v("",c.join("\n"));e&&(c.comment("Loco Gettext template"),c.fuzzy(!0));b.push(c.toString());
70
- b.push("");this.rows.each(function(a,c){a&&(b.push(c.toString(e)),b.push(""))});return b.join("\n")};d=v.prototype;d.hash=function(){return b(this.source(),this.context())};d.flag=function(a,b){var c=a===(a&this.status);if(null==b)return c;b?this.status|=a:c&&(this.status^=a);return this};d.fuzzy=function(a){return this.flag(4,a)};d.source=function(a,b){if(null==a)return this.src[0];this.src[0]=a;this.plural(b);return this};d.plural=function(a){if(null==a)return this.src[1];this.src[1]=a||"";return this};
71
- d.each=function(a){for(var b=-1;++b<this.msg.length;)a(b,this.msg[b]);return this};d.translate=function(a,b){this.msg[b||0]=a||"";return this};d.translation=function(a){return this.msg[a||0]||""};d.comment=function(a){if(null==a)return this.cmt;this.cmt=a||"";return this};d.location=function(a){if(null==a)return this.ref;this.ref=a||"";return this};d.context=function(a){if(null==a)return this.src[2]||"";this.src[2]=a||"";return this};d.toString=function(b){var c,d=[];this.cmt&&d.push("# "+this.cmt.replace("\r\n",
72
- "\n").split("\n").join("\n# "));this.ref&&d.push("#: "+this.ref.replace("\r\n","\n").split("\n").join("\n#: "));!b&&this.fuzzy()&&d.push("#, fuzzy");this.src[2]&&d.push("msgctxt "+a(this.src[2]));d.push("msgid "+a(this.src[0]));if(null==this.src[1])d.push("msgstr "+a(b?"":this.msg[0]));else for(c=-1,d.push("msgid_plural "+a(this.src[1]));++c<this.msg.length;)d.push("msgstr["+c+"] "+a(b?"":this.msg[c]));return d.join("\n")};d.toText=function(){return this.src.join(" ")+" "+this.msg.join(" ")};d.weight=
73
- function(){var a=0;this.translation()||(a+=2);this.fuzzy()&&(a+=1);return a};d.compare=function(a,b){var c=this.weight(),d=a.weight();if(c>d)return 1;if(c<d)return-1;if(b){c=this.hash().toLowerCase();d=a.hash().toLowerCase();if(c<d)return 1;if(c>d)return-1}return 0};d.equals=function(a){return this===a||this.source()===a.source()&&this.context()===a.context()};d=d=null;return c}({},u,B));q.register("$5",{"\u0131":"i","\u03b1":"a","\u03b2":"b","\u03c8":"c","\u03b4":"d","\u03b5":"e","\u03c6":"f","\u03b3":"g",
74
  "\u03b7":"h","\u03b9":"i","\u03be":"j","\u03ba":"k","\u03bb":"l","\u03bc":"m","\u03bd":"n","\u03bf":"o","\u03c0":"p","\u03c1":"r","\u03c3":"s","\u03c4":"t","\u03b8":"u","\u03c9":"v","\u03c2":"s","\u03c7":"x","\u03c5":"y","\u03b6":"z","\u0444":"a","\u0438":"b","\u0441":"c","\u0432":"d","\u0443":"e","\u0430":"f","\u043f":"g","\u0440":"h","\u0448":"i","\u043e":"j","\u043b":"k","\u0434":"l","\u044c":"m","\u0442":"n","\u0449":"o","\u0437":"p","\u0439":"\ua647","\u043a":"r","\u044b":"s","\u0435":"t","\u0433":"u",
75
  "\u043c":"v","\u0446":"w","\u0447":"x","\u043d":"y","\u044f":"z","\u00aa":"a","\u00e1":"a","\u00e0":"a","\u0103":"a","\u1eaf":"a","\u1eb1":"a","\u1eb5":"a","\u1eb3":"a","\u00e2":"a","\u1ea5":"a","\u1ea7":"a","\u1eab":"a","\u1ea9":"a","\u01ce":"a","\u00e5":"a","\u01fb":"a","\u00e4":"a","\u01df":"a","\u00e3":"a","\u0227":"a","\u01e1":"a","\u0105":"a","\u0101":"a","\u1ea3":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1eb7":"a","\u1ead":"a","\u1e01":"a","\ua733":"a","\u00e6":"a","\u01fd":"a","\u01e3":"a",
76
  "\ua735":"a","\ua737":"a","\ua739":"a","\ua73b":"a","\ua73d":"a","\u1e9a":"a","\u2c65":"\u2c65","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"\u0180","\u0183":"\u0183","\u0107":"c","\u0109":"c","\u010d":"c","\u010b":"c","\u00e7":"c","\u1e09":"c","\u023c":"\u023c","\ua792":"\ua793","\u0188":"\u0188","\ua73f":"\ua73f","\u010f":"d","\u1e0b":"d","\u1e11":"d","\u1e0d":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u00f0":"d","\ua77a":"d","\u0238":"d","\u01f3":"d","\u01f2":"d","\u01c6":"d","\u01c5":"d",
@@ -105,44 +105,44 @@ function(){var a=0;this.translation()||(a+=2);this.fuzzy()&&(a+=1);return a};d.c
105
  "\u04ab":"\u04ab","\u2dee":"n","\ua68d":"\ua68d","\u050f":"\u050f","\u04ad":"\u04ad","\ua68b":"\ua68b","\u045b":"\u045b","\u045c":"\u045b","\ua677":"e","\u04ef":"e","\u045e":"e","\u04f1":"e","\u04f3":"e","\u04af":"\u04af","\u04b1":"\u04b1","\u2df9":"\ua64b","\ua64b":"\ua64b","\u0479":"\u0479","\u2def":"\u0445","\u0445":"\u0445","\u04fd":"\u04fd","\u04ff":"\u04ff","\u04b3":"\u04b3","\u04bb":"\u04bb","\u0527":"\u0527","\ua695":"\ua695","\ua67b":"\u0461","\u0461":"\u0461","\u047f":"\u047f","\ua64d":"\ua64d",
106
  "\u047d":"\u047d","\u047b":"\u047b","\u2df0":"w","\ua661":"\ua661","\ua68f":"\ua68f","\u04b5":"\u04b5","\ua691":"\ua691","\u2df1":"x","\ua693":"\ua693","\u04f5":"\ua693","\u04b7":"\u04b7","\u04cc":"\u04cc","\u04b9":"\u04b9","\ua687":"\ua687","\u04bd":"\u04bd","\u04bf":"\u04bf","\u045f":"\u045f","\u2df2":"i","\ua697":"\ua697","\u2df3":"o","\ua64f":"\ua64f","\ua678":"\u044a","\u044a":"\u044a","\ua651":"\ua651","\ua679":"s","\u04f9":"s","\ua67a":"m","\u048d":"\u048d","\u2dfa":"\u0463","\u0463":"\u0463",
107
  "\ua653":"\ua653","\u044d":"\u044d","\u04ed":"\u044d","\u2dfb":"\u044e","\u044e":"\u044e","\ua655":"\ua655","\u2dfc":"\ua657","\ua657":"\ua657","\u0519":"\u0519","\ua69f":"\u0465","\u0465":"\u0465","\u2dfd":"\u0467","\u0467":"\u0467","\ua659":"\ua659","\u2dfe":"\u046b","\u046b":"\u046b","\ua65b":"\ua65b","\u0469":"\u0469","\ua65d":"\ua65d","\u2dff":"\u046d","\u046d":"\u046d","\u046f":"\u046f","\u0471":"\u0471","\u2df4":"\u0473","\u0473":"\u0473","\u0475":"\u0475","\u0477":"\u0475","\ua65f":"\ua65f",
108
- "\u04a9":"\u04a9","\u051d":"\u051d","\u04cf":"\u04cf"});q.register("$23",function(c,d,e){var f=d.requestAnimationFrame,b=d.cancelAnimationFrame,g=0;if(!f||!b)for(var a in{ms:1,moz:1,webkit:1,o:1})if(f=d[a+"RequestAnimationFrame"])if(b=d[a+"CancelAnimationFrame"]||d[a+"CancelRequestAnimationFrame"])break;f&&b||(f=function(a){var b=r();timeToCall=Math.max(0,16-(b-g));nextTime=b+timeToCall;timerId=d.setTimeout(function(){a(nextTime)},timeToCall);g=nextTime;return timerId},b=function(a){clearTimeout(a)});
109
- var r=Date.now||function(){return(new Date).getTime()};c.loop=function(a,c){function d(){g=f(d,c);a(e++)}var e=0,g;d();return{stop:function(){g&&b(g);g=null}}};return c}({},u,B));q.register("$21",function(c,d,e){function f(b,c,d,e){if(a){var f=d;d=function(a){if((a.MSPOINTER_TYPE_TOUCH||"touch")===a.pointerType)return f(a)}}b.addEventListener(c,d,e);return{unbind:function(){b.removeEventListener(c,d,e)}}}function b(a){a.preventDefault();a.stopPropagation();return!1}var g,a=!!d.navigator.msPointerEnabled,
110
- r=a?"MSPointerDown":"touchstart",l=a?"MSPointerMove":"touchmove",v=a?"MSPointerUp":"touchend";c.ok=function(a){null==g&&(g="function"===typeof e.body.addEventListener);g&&a&&a(c);return g};c.ms=function(){return a};c.dragger=function(a,c){function d(b){a.addEventListener(b,f[b],!1)}function e(b){a.removeEventListener(b,f[b],!1)}var f={};f[r]=function(a){h(a,function(b,d){d.type=r;c(a,d,A)});d(l);d(v);return!0};f[v]=function(a){e(l);e(v);h(a,function(b,d){d.type=v;c(a,d,A)});return!0};f[l]=function(a){h(a,
111
- function(b,d){d.type=l;c(a,d,A)});return b(a)};d(r);var A={kill:function(){e(r);e(l);e(v);a=A=c=null}};return A};c.swiper=function(c,d,e){function f(a){c.addEventListener(a,k[a],!1)}function g(a){c.removeEventListener(a,k[a],!1)}function A(){p&&p.stop();p=null}var p,w,y,k={},I=[],F=[],C=[];k[r]=function(a){w=!1;A();var b=s();h(a,function(a,c){I[a]=b;F[a]=c.clientX;C[a]=c.clientY});y=c.scrollLeft;return!0};k[v]=function(a){h(a,function(a,b){var c=s()-I[a],e=F[a]-b.clientX,c=Math.abs(e)/c;d(c,e?0>e?
112
- -1:1:0)});y=null;return!0};k[l]=function(a){var d,e;null==y||h(a,function(a,b){d=F[a]-b.clientX;e=C[a]-b.clientY});if(e&&Math.abs(e)>Math.abs(d))return w=!0;d&&(w=!0,c.scrollLeft=Math.max(0,y+d));return b(a)};if(!a||e)f(r),f(l),f(v),a&&(c.className+=" mstouch");return{kill:function(){g(r);g(l);g(v);A()},swiped:function(){return w},ms:function(){return a},snap:function(b){a&&!e&&(c.style["-ms-scroll-snap-points-x"]="snapInterval(0px,"+b+"px)",c.style["-ms-scroll-snap-type"]="mandatory",c.style["-ms-scroll-chaining"]=
113
- "none")},scroll:function(a,b,d){A();var e=c.scrollLeft,f=a>e?1:-1,w=Math[1===f?"min":"max"],h=Math.round(16*b*f);return p=q.require("$23","fps.js").loop(function(b){b&&(e=Math.max(0,w(a,e+h)),c.scrollLeft=e,a===e&&(A(),d&&d(e)))},c)}}};c.start=function(a,b){return f(a,r,b,!1)};c.move=function(a,b){return f(a,l,b,!1)};c.end=function(a,b){return f(a,v,b,!1)};var h=c.each=function(b,c){if(a)(b.MSPOINTER_TYPE_TOUCH||"touch")===b.pointerType&&c(0,b);else for(var d=-1,e=(b.originalEvent||b).changedTouches||
114
- [];++d<e.length;)c(d,e[d])},s=Date.now||function(){return(new Date).getTime()};return c}({},u,B));q.register("$15",function(c,d,k){function f(a,b){var c=a.id,d=c&&u[c],e=d&&d.parent();if(!d||!e)return null;var f=(c=e.dir===t)?"X":"Y",c=c?v:h,g=c(e.el),k=b["offset"+f];null==k&&(k=b["page"+f]-c(a));k&&(g+=k);return{move:function(a){e.resize(a["page"+f]-g,d);return!0}}}function b(a,b){function c(){e(k).unbind("mousemove",d);z=null;return!0}function d(a){z?z.move(a):c();return!0}if(z)return!0;z=f(a.target,
115
- a);if(!z)return!0;e(k).one("mouseup",c).mousemove(d);return l(a)}function g(a,b){var c=b.type;"touchmove"===c?z&&z.move(b):"touchstart"===c?z=f(a.target,b):"touchend"===c&&z&&(z=null)}function a(a){var b=e(a.target).closest("div.wg-tr"),c=b.length&&b.closest("div.is-table");(c=c&&u[c.attr("id")])&&c.selectRow(Number(b.attr("data-row")));return l(a)}function r(a){var b=a.keyCode;if(b=40===b?1:38===b?-1:0){var c=e(a.target),d=c.data("row");if(-1<d&&(c=(c=c.closest("div.is-table"))&&u[c.attr("id")])){for(;!1===
116
- c.selectRow(d+=b););return l(a)}}return!0}function l(a){a.stopPropagation();a.preventDefault();return!1}function v(a,b){b||(b=k.body);for(var c=a.offsetLeft||0;(a=a.offsetParent)&&a!==b;)c+=a.offsetLeft||0;return c}function h(a,b){b||(b=k.body);for(var c=a.offsetTop||0;(a=a.offsetParent)&&a!==b;)c+=a.offsetTop||0;return c}function s(a){function b(){var c=a.innerHTML;c!==d&&(d=c,e(a).trigger("wgChange",[c]));return!0}var c=m.ie()?["keyup","paste"]:["input"],d=a.innerHTML,f=d;return e(a).attr("contenteditable",
117
- "true").focus(function(){for(var d=e(a),f=-1;++f<c.length;)d.bind(c[f],b);return!0}).blur(function(){for(var h=e(a),g=-1;++g<c.length;)h.unbind(c[g]);b();f!==d&&e(a).trigger("wgChanged",[a]);return!0})}function n(a){this.el=a;this.id=a.id;this.pos=this.index=0;this.css=["wg-cell"];u[a.id]=this;this.clear()}var m=q.require("$2","html.js"),t=1,u={},z=!1;c.init=function(a){var c=new n(a);c.restyle().redraw();c.root=!0;q.require("$21","touch.js").ok(function(b){b.dragger(a,g)});e(a).mousedown(b);return c};
118
- d=n.prototype;d.each=function(a){for(var b=-1;++b<this.length;)a(b,this.cells[b]);return this};d.bind=function(){return this.$("bind",arguments)};d.unbind=function(){return this.$("unbind",arguments)};d.$=function(a,b){e.fn[a].apply(e(this.el),b);return this};d.parent=function(){return this.pid&&u[this.pid]};d.splitx=function(){return this._split(t,arguments)};d.splity=function(){return this._split(2,arguments)};d._split=function(a,b){this.dir&&this.dir!==a&&this.clear();this.dir=a;var c=-1,d,e=this.length,
119
- f=b.length,h=1/(e+f),g=0;if(e)throw Error("Todo: implement re-split");for(;++c<f;){d=m.el();this.body.appendChild(d);for(var k=d,l=b[c],r=l,q=1;u[l];)l=r+"-"+ ++q;k.id=l;d=new n(d);d.index=e+c;d.pid=this.id;d.pos=g;g+=h;this.cells.push(d);this.length++}this.restyle().redraw();return this.cells};d.clear=function(){for(var a=-1,b;++a<this.length;)b=this.cells[a].clear(),delete u[b.id];this.cells=[];this.length=0;this.nav&&this.el.removeChild(this.nav);this.nav=null;this.body&&(this.field&&m.ie()&&(e(this.body).triggerHandler("blur"),
120
- this.field=null),this.table&&(this.table=null),this.el.removeChild(this.body));this.body=this.el.appendChild(m.el("","wg-body"));return this};d.resize=function(a,b){if(!b&&(b=this.cells[1],!b))return;var c=b.index,d=e(this.el)[this.dir===t?"width":"height"](),f=this.cells[c+1],c=this.cells[c-1];pad=(b.body||b.el.firstChild).offsetTop||0;max=(f?f.pos*d:d)-pad;min=c?c.pos*d:0;b.pos=Math.min(max,Math.max(min,a))/d;(d=this.parent())&&d.table?d.redraw():this.redraw();return this};d.distribute=function(){for(var a,
121
- b=0;b<arguments.length;)a=Math.max(0,Math.min(1,arguments[b++])),this.cells[b].pos=a;this.redraw();return this};d.restyle=function(){var a=this.css.slice();this.root&&a.push("wg-root");0===this.index?a.push("first"):a.push("not-first");this.dir&&(a.push("wg-split"),2===this.dir?a.push("wg-split-y"):a.push("wg-split-x"));this.t&&a.push("has-title");this.nav&&a.push("has-nav");this.table?a.push("is-table"):null!=this.field&&(a.push("is-field"),this.field||a.push("readonly"));this.el.className=a.join(" ");
122
- return this};d.redraw=function(){if(this.body){var a=this.el.clientHeight||0,b=this.body.offsetTop||0;b<a&&(a-=b);this.body.style.height=String(a)+"px"}for(var a=this.length,c,d=1,f=2===this.dir?"height":"width";0<=--a;)b=this.cells[a],this.nav?c=1:(b.fixed&&(b.pos=b.fixed/e(this.el)[f]()),c=d-b.pos,d=b.pos),b.el.style[f]=String(100*c)+"%",b.restyle().redraw();this.table&&this.redrawTable();return this};d.redrawTable=function(){var a=-1,b=this.cells[0],c=this.cells[1],a=e(c.body).width(),d=c.body.firstChild,
123
- c=d.childNodes;d.style.width=a+"px";for(var a=b.length,f=1;0<=--a;)d=b.cells[a],c[a].style.width=String(100*(f-d.pos))+"%",f=d.pos;return!0};d.contents=function(a){if(null===a)return this.body.innerHTML;this.cells.length?this.clear():this.body&&this.el.removeChild(this.body);this.body=this.el.appendChild(m.el("","wg-content"));"string"===typeof a?e(this.body)._html(a):this.append(a);this.redraw();return this};d.textarea=function(a,b){var c=m.txt(a);this.contents(c);(this.field=b)&&s(this.body);this.restyle();
124
- return this};d.append=function(a){a.nodeType?m.init(this.body.appendChild(a)):m.init(e(a).appendTo(this.body));return this};d.header=function(a,b){if(!arguments.length)return this.el.getElementsByTagName("h2")[0];var c=["wg-title"];b&&c.push(b);this.t=m.txt(a||"");this.el.insertBefore(m.el("h2",c.join(" ")),this.body).appendChild(this.t);this.restyle().redraw();return this};d.title=function(a){this.t?this.t.nodeValue=a||"":this.header(a);return this.t};d.tabulate=function(b){var c=this.id,d=[],f=
125
- [];rows=this.splity(c+"-thead",c+"-body");thead=rows[0];tbody=rows[1];thead.css.push("wg-thead");tbody.css.push("wg-tbody");b.eachCol(function(a,b){d.push(c+"-col"+a);f.push(b)});for(var g=-1,k,l=m.el("","wg-cols"),n=thead._split(t,d);++g<n.length;)k=n[g],k.header(f[g]),l.appendChild(m.el("","wg-col "+(0===g?"":"not-")+"first"));tbody.contents(l);b.eachRow(function(a,b,c){tbody._addRow(b,c)});e(tbody.el).mousedown(a);this.lock();this.table=b;this.restyle().redraw();k=thead.cells[0];tbody.fixed=h(k.body,
126
- k.el)||20;this.resize(tbody.fixed);e(l).attr("tabindex","-1").keydown(r);return l};d.lock=function(){this.body.className+=" locked";return this};d.addRow=function(a,b){this.table&&this.cells[1]&&this.cells[1]._addRow(a,b);return this};d._addRow=function(a,b){var c,d=this.body.firstChild.childNodes,e=d.length,f=d[0].childNodes.length,g=-1;for(b=b&&"wg-tr "+b||"wg-tr";++g<e;)c=d[g].appendChild(m.el("",b)),c.setAttribute("data-row",f),c=c.appendChild(m.el("","wg-td")),a[g]&&/\S/.test(a[g])?c.appendChild(m.txt(a[g])):
127
- c.innerHTML="&nbsp;";return d};d.tr=function(a){for(var b=-1,c,d=[],e=this.cells[1].body.firstChild.childNodes;++b<e.length;)(c=e[b].childNodes[a])&&d.push(c);return d};d.td=function(a,b){try{return this.cells[1].body.firstChild.childNodes[b].childNodes[a].firstChild}catch(c){return null}};d.selectRow=function(a,b){var c=this.table&&this.table.row(a);if(!c)return null;var d=this.tr(a);if(d.length){var d=e(d),f=this.cells[1],g=f.body,h=e(g.firstChild);if(h.hasClass("filtered")&&!d.hasClass("filtered"))return!1;
128
- h.find("div.selected").removeClass("selected");d.addClass("selected");h.data("row",a);if(b)f.scrollTo(d[0],!0);else{var k=g.scrollTop;h.focus();k&&(g.scrollTop=k);f.scrollTo(d[0])}h.trigger("wgRowSelect",[a,c])}return this};d.deselectRow=function(){if(this.table){var a=e(this.cells[1].body.firstChild),b=a.data("row");a.find("div.selected").removeClass("selected");a.data("row",null);a.trigger("wgRowDeselect",[b])}};d.filterRows=function(a){var b=-1,c;c=e(this.cells[1].body.firstChild);if(!a)return c.removeClass("filtered"),
129
- this;for(c.addClass("filtered").find("div.filtered").removeClass("filtered");++b<a.length;)c=a[b],c=this.tr(c),c.length&&e(c).addClass("filtered");return this};d.scrollTo=function(a,b){var c,d=this.body.scrollTop,f=this.body.clientHeight+d,g=h(a,this.body),k=g+e(a).outerHeight();d>g?c=g:f<k&&(c=k-this.body.clientHeight);null!=c&&(b?this.body.scrollTop=c:e(this.body).animate({scrollTop:c},300));return this};d.navigize=function(a){function b(a,c){d=a.show();f=c.addClass("active");a.trigger("wgTabSelect",
130
- [a.data("index")]);return a}var c=this;c.nav&&c.el.removeChild(c.nav);c.nav=c.el.insertBefore(m.el("nav","wg-tabs"),c.body);var d,f,g=e(c.nav).click(function(a){var g=e(a.target),h=g.data("tab");if(h){var k=f;d&&d.hide();k&&k.removeClass("active");b(h,g).children().focus();c.redraw();return l(a)}});c.each(function(c,f){f.pos=0;var h=e(f.el).data("index",c),k=e('<a href="#'+f.id+'"></a>').data("tab",h).text(a[c]).appendTo(g);d?h&&h.hide():b(h,k)});c.lock();c.restyle().redraw();g=null;return c};d=null;
131
- return c}({},u,B));q.register("$7",function(c,d,k){function f(b){var c=k.createElement("pre");c.innerHTML=b.replace(/<(p|div|br) ?\/?>/ig,"\n<$1>").replace(/(^\n+|\n+$)/g,"");b="string"===typeof c.textContent?c.textContent:"string"===typeof c.innerText?c.innerText:e(c).text();return b}c.init=function(b){function c(){var a=p.length,b=0,d=0,e=0;p.each(function(a,c){c.translation()?c.fuzzy()?e++:b++:d++});return{t:a,p:String(b?Math.round(100*(b/a)):0)+"%",f:e,u:d}}function a(){w.clear();p.each(function(a,
132
- b,c){w.add(c,b.toText())});y="";D=p.length}function k(a,b){var c,d={};if(y===a)return D||0;if(!p.length)return 0;if(a){if(y&&!D&&0===a.indexOf(y))return 0;c=w.find(a,d);d.words.length||(a="")}y=a;D=c?c.length:p.length;K.filterRows(c);d=C?p.indexOf(C):-1;if(-1===d||c&&-1===c.indexOf(d))c?c.length?K.selectRow(c[0],!0):K.deselectRow():K.selectRow(0,!0);b||t("poFilter",[y,D]);return D}function l(a){if(!a)return["",""];var b=[a.source()||"",a.translation()||""];(a=a.context())&&(b[0]+=" [ "+a+" ]");return b}
133
- function v(a){if(a=a||C){var b=p.indexOf(a),b=K.tr(b),c=b[0].className.replace(/\s*po-[a-z]+/g,""),c=c+(" "+s(a)+" po-unsaved");e(b).attr("class",c);t("poUnsaved",[++G])}}function h(a,b){b=b||C;if(!b)return null;var c=b.fuzzy();null!=a&&c!=a&&(b.fuzzy(a),t("poFuzzy",[b,a]),t(H,[b]),v(b));return c}function s(a){var b=[];a&&(a.fuzzy()&&b.push("po-fuzzy"),a.translation()||b.push("po-empty"),a.comment()&&b.push("po-comment"));return b.join(" ")}function n(a,b){var c=l(a)[b||0],d=p.indexOf(a),d=K.td(d,
134
- b);c&&/\S/.test(c)?e(d).text(c.replace("\n"," ")):e(d).html("&nbsp;")}function m(a){a!==B&&(F=(B=a)?p.lock(F):p.unlock()||F,t("poLock",[a,F]),C&&A(C))}function t(a,c){return e(b).trigger(a,c||[])}function u(){if(p&&p.row){y&&(y="",D=p.length,t("poFilter",[y,D]));var a;K.table&&(a=J?J.parentNode.scrollTop:0,K.clear());J=K.tabulate(O);a&&(J.parentNode.scrollTop=a);t("poLoad");(a=p.locale())?(F=a,m(!0)):m(!1);return!!p.length}K.clear().header("Error").contents("Invalid PO")}function z(){Q.unbind().clear();
135
- N.unbind().clear();S.unbind();C&&(t("poDeselected",[C]),C=null)}function A(b){function c(){var d=F&&F.lang&&"en"!==F.lang&&F.label;N.title(d?d+" translation:":"Translation:");if(m){var k=[],l=q.require("$14","collection.js").init();b.each(function(a,b){k.push("Form "+a);l.add("plural-"+a,b)});M=N.splitx.apply(N,l.keys);N.each(function(a,b){b.textarea(l[a],g)});N.navigize(k).bind("wgTabSelect",function(a,b){e=b})}else N.textarea(b.translation(),g);N.bind("wgChange",function(a,c){var d=f(c);b.translate(d,
136
- e);0===e&&n(b,1);b.fuzzy()?h(!1,b):v(b)}).bind("wgChanged",function(c){w&&a();t(H,[b])})}function d(){N.title("Context:");N.textarea(b.context(),!0);N.bind("wgChange",function(a,c){var d=f(c);b.context(d);b.source();n(b,0);v(b)}).bind("wgChanged",function(){p.reIndex(b);w&&a();t(H,[b])})}z();C=b;S.textarea(b.comment(),!0).bind("wgChange",function(a,c){var d=f(c);b.comment(d);t("poComment",[b,d]);v(b)});var e=0,g=B,k=!B,l=b.source()||"",m=b.plural()||"";(function(){m?(M=Q.splity(Q.id+"-singular",Q.id+
137
- "-plural"),M[0].header("Singular:").textarea(l,k),M[1].header("Plural:").textarea(m,k),Q.lock()):Q.textarea(l,k);Q.title("Source text:");k&&Q.bind("wgChange",function(a,c){var d=f(c);Q.id+"-plural"===a.target.parentNode.id?b.plural(d):(b.source(d),n(b,0));v(b)}).bind("wgChanged",function(c){Q.id+"-plural"===c.target.parentNode.id||p.reIndex(b);w&&a();t(H,[b])})})();g?c():d();t("poSelected",[b]);data=null}var p,w,y,D,B,F,C,G=0,H="poUpdate",J,O={row:function(a){return l(p.row(a))},eachCol:function(a){a(0,
138
- "Source text");a(1,"Translation")},eachRow:function(a){var b=0;p.each(function(c,d){a(b++,l(d),s(d))})}},P=q.require("$15","LocoWinGrid.js").init(b),M=P.splity("po-list","po-edit"),K=M[0],R=M[1],M=R.splitx("po-trans","po-comment"),T=M[0],S=M[1].header("Comment:"),M=T.splity("po-source","po-target"),Q=M[0].header("Source text:"),N=M[1].header("Translation:");P.distribute(0.34);R.distribute(0.8);e(d).resize(function(){P.redraw(!0);return!0});K.bind("wgRowSelect",function(a,b,c){a=p.row(b);A(a);return!0}).bind("wgRowDeselect",
139
- function(){z();S.textarea("",!1);Q.textarea("",!1).title("Source text not loaded:");N.textarea("",!1).title("Translation not loaded:");t("poSelected",[null]);return!0});return{bind:function(a,c){return e(b).bind(a,c)},load:function(b){p=b;w&&a();u()&&K.selectRow(0)},save:function(a){if(G||a)e(J).find("div.po-unsaved").removeClass("po-unsaved"),t("poSave");G=0;return p},fuzzy:function(a){return h(a)},del:function(b,c){var d=arguments.length?p.get(b,c):C;if(d){var e=y,f=p.del(d);null!=f&&(t("poDel",
140
- [d]),t(H,[d]),u(),w&&a(),C&&C.equals(d)&&z(),p.length&&(e&&k(e),C||(f=Math.min(f,p.length-1),K.selectRow(f))))}},add:function(a,b){var c,d=p.get(a,b);d?c=p.indexOf(d):(c=p.length,d=p.add(a,b),K.addRow(O.row(c),s(d)),v(d),w&&w.add(p.indexOf(d),d.toText()),t("poAdd",[d]),t(H,[d]));y&&k("");K.selectRow(c);return d},lock:function(){m(!0)},unlock:function(){m(!1)},locked:function(){return Boolean(B)},filter:function(a){return w&&p&&p.length&&k(a,!0)},searchable:function(b){b&&(w=b,p&&a());return w&&!0},
141
- stats:function(){return c()}}};return c}({},u,B));q.require("$1","array.js");q.require("$2","html.js");var aa=u.ajaxurl||"/wp-admin/admin-ajax.php";S=(u.loco||{}).conf||{};var T=S.locale,J=q.require("$3","po.js").create(T),H={},R=B.getElementById("loco-poedit-inner"),P=u.loco__||function(c){return c};e(u).resize(function(){function c(){var c;c=R;for(var b=c.offsetTop||0;(c=c.offsetParent)&&void 0!==c;)b+=c.offsetTop||0;c=b;b=e(u).innerHeight();c=Math.max(k,b-c-d);R.style.height=String(c)+"px";return!0}
142
- var d=20,k=parseInt(e(R).css("min-height")||0);c();return c}());H.save=function(c){function d(){c.disabled=!1}d();G.bind("poUnsaved",function(){e(c).addClass("button-primary loco-flagged")}).bind("poSave",function(){e(c).removeClass("button-primary loco-flagged")});e(c.form).submit(function(k){var f=k.target;k.target.po.value=J.toString();c.disabled=!0;Y(f,function(b){d();e("#loco-po-modified").text(b.modified);G.save(!0);var c=P("PO file saved"),a=b.filename;b=b.compiled;null!=b&&(/\D/.test(b)?U(b,
143
- P("Error"),"error"):(c+=" "+P("and MO file compiled"),a=a.replace(/\.po$/i,".mo")));X(c+" - "+a)},d);return O(k)});return!0};H.download=function(c){c.disabled=!1;e(c).click(function(){c.form.po.value=J.toString();e(R).trigger("poSave");return!0});return!0};H.add=!T&&function(c){c.disabled=!1;e(c).click(function(c){var e=1,f;for(f="New message";J.get(f);)e=/(\d+)/.exec(f)?Math.max(e,RegExp.$1):e,f="New message "+ ++e;G.add(f);return O(c)});return!0};H.del=!T&&function(c){c.disabled=!1;e(c).click(function(c){G.del();
144
- return O(c)});return!0};H.fuzzy=T&&function(c){function d(d){c.disabled=null==d;e(c)[d?"addClass":"removeClass"]("loco-inverted")}G.bind("poSelected",function(c,e){d(e&&G.locked()?e.fuzzy():null)}).bind("poFuzzy",function(c,e,b){d(G.locked()?b:null)});e(c).click(function(c){var d=!G.fuzzy();G.fuzzy(d);return O(c)});return!0};H.sync=function(c){function d(){c.disabled=!1}d();G.bind("poUnsaved",function(){c.disabled=!0}).bind("poSave",function(){d()});e(c.form).submit(function(k){c.disabled=!0;Y(k.target,
145
- function(c){d();var b=q.require("$3","po.js").create(void 0);b.load(c.exp);var g=[],a=J.merge(b),b=a.add.length,a=a.del.length;G.load(J);b||a?(g.push("Merged from "+(c.pot||"source code")),b&&g.push(b+" new string"+(1===b?"":"s")+" added"),a&&g.push(a+" obsolete string"+(1===a?"":"s")+" removed"),e(R).trigger("poUnsaved",[]),V()):g.push("Already up to date with "+(c.pot||"source code"));J.headers(c.headers||{});X(g.join(". "))},d);return O(k)});return!0};H.revert=function(c){G.bind("poUnsaved",function(){c.disabled=
146
- !1}).bind("poSave",function(){c.disabled=!0});e(c).click(function(c){location.reload();return O(c)});return!0};H.help=function(){return!0};R.innerHTML="";var G=q.require("$7","poedit.js").init(R);e("#loco-nav").find("button").each(function(c,d){var k=d.getAttribute("data-loco");H[k]&&H[k](d)||e(d).hide()});H=null;(function(c){e(c.form).submit(function(c){return O(c)});var d=q.require("$4","dict.js").create();d.depth=10;d.translit(q.require("$5","translit.json"));G.searchable(d);c.disabled=!1;c.value=
147
- "";var k=q.require("$6","LocoTextListener.js").listen(c,function(c){G.filter(c)});G.bind("poFilter",function(c,b){k.val(b)});c=d=null})(B.getElementById("loco-search"));G.bind("poUnsaved",function(){u.onbeforeunload=function(){return P("Your changes will be lost if you continue without saving")}}).bind("poSave",function(){u.onbeforeunload=null}).bind("poUpdate",V);T?J.load(S.po||{}):J.load(S.pot||{});J.headers(S.headers);G.load(J);V();e("#wpbody-content").find("div.loco-message").each(function(c,
148
- d){W(d,!0)})})(window,document,window.jQuery);
1
+ (function(u,A,e,V){function N(c){var a=0,e,f=[].slice.call(arguments,1);return c.replace(/%(s|u|%)/g,function(d,c){if("%"===c)return"%";e=f[a++];return String(e)||""})}function Q(c){c.stopPropagation();c.preventDefault();return!1}function ca(c,a){function k(){f();d=setTimeout(function(){e(c).fadeOut(1E3,a)},g)}function f(){d&&clearTimeout(d);d=null}var d,g=5E3;k();e(c).mouseenter(f).mouseleave(k)}function Y(c,a){function k(a){e(c).remove();e(u).triggerHandler("resize");return a&&Q(a)}e('<a class="dismiss" href="#">&times;</a>').appendTo(c).click(k);
2
+ a||ca(c,k)}function W(c,a,k,f){var d="loco-js-"+k;k=A.getElementById(d)||e('<div id="'+d+'" class="loco-message '+(f||k)+'"></div>').insertBefore(e("#loco-poedit"));c=e(A.createElement("p")).text(c);a=e(A.createElement("strong")).text(a+": ");c.prepend(a).appendTo(e(k).html(""));e(u).triggerHandler("resize");Y(k);e("div.loco-warning").remove()}function Z(c){return W(c,G("OK"),"updated loco-success")}function X(){var c=H.stats(),a=c.t,k=c.f,f=c.u,a=N(G("1 string","%s strings",a),a),d=[];S&&(a=N(G("%s%% translated"),
3
+ c.p.replace("%",""))+", "+a,k&&d.push(N(G("%s fuzzy"),k)),f&&d.push(N(G("%s untranslated"),f)),d.length&&(a+=" ("+d.join(", ")+")"));e("#loco-po-status").text(a)}function $(c,a,k){function f(d,c,b){b=b||G("Unknown error");W(b,G("Error"),"error");k&&k(d,c,b)}return e.ajax({url:aa,type:c.method,data:e(c).serialize(),dataType:"json",error:f,success:function(c,g,b){!c||c.error?f(b,g,c&&c.error&&c.error.message):a&&a(c,g,b)}})}var s=function(){var c={};return{register:function(a,e){c[a]=e},require:function(a,
4
+ e){var f=c[a];if(!f)throw Error('CommonJS error: failed to require("'+e+'")');return f}}}();s.register("$1",function(c,a,e){Array.prototype.indexOf||(Array.prototype.indexOf=function(c){if(null==this)throw new TypeError;var d,a=Object(this),b=a.length>>>0;if(0===b)return-1;d=0;1<arguments.length&&(d=Number(arguments[1]),d!=d?d=0:0!=d&&Infinity!=d&&-Infinity!=d&&(d=(0<d||-1)*Math.floor(Math.abs(d))));if(d>=b)return-1;for(d=0<=d?d:Math.max(b-Math.abs(d),0);d<b;d++)if(d in a&&a[d]===c)return d;return-1});
5
+ return c}({},u,A));s.register("$16",function(c,a,e){function f(m){b||a._gat&&(b=_gat._createTracker(d,"loco"));if(b){var l=m.shift();b[l].apply(b,m)}else g&&g.push(m);return c}var d,g,b;c._init=function(b){if(d=b.code){g=a._gaq||(a._gaq=[]);g.push(["_setAccount",d]);g.push(["_trackPageview"]);g.push(["_setDomainName",b.host]);b=e.createElement("script");b.type="text/javascript";b.async=!0;b.src=("https:"==e.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var l=e.getElementsByTagName("script")[0];
6
+ l.parentNode.insertBefore(b,l)}return c};c.event=function(b,c,a,h){return f(["_trackEvent",b||"",c||"",a||"",h||0])};c.page=function(b,c){return f(["_trackPageview",{page:b||location.pathname+location.hash,title:c||e.title}])};return c}({},u,A));s.register("$17",function(c,a,e){function f(b,m){if(d)d[b](m);else a.ga&&ga(b,m);return c}var d,g;c._init=function(b){b.code&&(function(b,c,a,h,d,p,g){b.GoogleAnalyticsObject=d;b[d]=b[d]||function(){(b[d].q=b[d].q||[]).push(arguments)};b[d].l=1*new Date;p=
7
+ c.createElement(a);g=c.getElementsByTagName(a)[0];p.async=1;p.src=h;g.parentNode.insertBefore(p,g)}(a,e,"script","//www.google-analytics.com/analytics.js","ga"),ga("create",b.code,{alwaysSendReferrer:!0}),b.custom&&f("set",b.custom),c.page(),ga(function(b){d=b}));return c};c.event=function(b,c,a,d){return f("send",{hitType:"event",eventCategory:b||"",eventAction:c||"",eventLabel:a||"",eventValue:Number(d||0)})};c.page=function(b,c){var a={hitType:"pageview",page:b||location.pathname+location.hash,
8
+ title:c||e.title};a.location=location.protocol+"//"+location.hostname+a.page;g&&f("set",{referrer:g});g=a.location;return f("send",a)};c.reset=function(){g=location.href;f("set",{page:location.pathname+location.hash,title:e.title,location:g});return c};return c}({},u,A));s.register("$8",function(c,a,k){function f(b,a){e(b).click(function(b){d&&d.event(a,"click",this.getAttribute("href")||"");return!0});b=null;return c}var d,g=location.hostname;c.init=function(b){!d&&b&&(g=b.host||(b.host=g),d=b.legacy?
9
+ s.require("$16","legacy.js"):s.require("$17","universal.js"),d._init(b));return c};c.link=function(b){for(var a=b.getAttribute("href");a&&"#"!==a;){if(0===a.indexOf("#"))return f(b,"anchor");if(0===a.indexOf("http")||0===a.indexOf("//")){if(-1!==a.indexOf(g)&&/^(https?:)*\/\/([^\/]+)/.exec(a)&&g===RegExp.$2)break;b.setAttribute("target","_blank");f(b,"external")}break}return c};c.page=function(){d&&d.page.apply(d,arguments);return c};c.event=function(){d&&d.event.apply(d,arguments);return c};c.reset=
10
+ function(){d&&d.reset&&d.reset();return c};return c}({},u,A));s.register("$22",function(c,a,k){function f(b,c,a,d,h){function v(){t&&clearTimeout(t);f&&f.fadeOut(400,function(){e(this).remove();f=null});return!1}function p(){n();-1!==d&&(t=setTimeout(v,d||2E3));f.unbind("mouseleave");f.mouseenter(n)}function n(){t&&clearTimeout(t);t=null;f.unbind("mouseenter");f.mouseleave(p)}var t;g||(g=k.createElement("div"),g.id="growls",k.body.appendChild(g));var f=e('<div class="growl growl-'+a+'"><div><a class="close" href="#"><span>X</span></a><span class="badge"></span><p class="message"></p><small class="caption"></small></div></div>');
11
+ f.find("p").text(b||"Empty message");c?f.find("small").text(c):f.find("small").remove();if(h.length){h.push({label:"Cancel",callback:v,css:"cancel"});var z,B=e('<form action="#" class="dialog"></form>');c=function(b,h){z=e('<input type="button" value="'+h.label+'" class="butt '+(h.css||"")+'" />');z.click(function(b){"function"===typeof h.callback&&h.callback(b,{close:v})});B.append(z);return z};for(b=0;b<h.length;b++)c(b,h[b]);f.append(B)}e(g).prepend(f.hide().fadeIn(400));f.find("a").click(v);p()}
12
+ var d,g;c.init=function(){if(!d)return d=a.alert,a.alert=function(b){b=String(b).split("\n");var a=b[1]&&b.slice(1).join("\n");c.alert(b[0],a)},c};c.debug=function(b){d(b);return c};c.alert=function(b,c,g,e,h){try{return f(b,c||"",g||"alert",e||4E3,h||[]),!0}catch(v){return b+="\n\n--\n"+(v.message||v),d.call(a,b),!1}};c.success=function(b,a,d){return c.alert(b,a,"success",d||2E3)};c.dialog=function(b,a,d,g){return c.alert(b,a,g||"alert",-1,d)};c.login=function(b,a,d,g){c.dialog(a||"You're not logged in",
13
+ d||"Please log in to continue",[{label:g||"Log in",callback:function(h,c){location.assign(b||"/session/auth/login?r="+encodeURIComponent(location.href))}}])};return c}({},u,A));s.register("$19",function(c,a,k){function f(b){return 27===b.keyCode&&p&&n?(J(),b.preventDefault(),!1):!0}function d(h){if(p){var c=Math.max(b.height(),m.outerHeight(!0));c&&r.css("height",c+"px");h&&(q=e(a).innerWidth(),D(w))}return!0}function g(b){b?(h.show(),l.addClass("has-title")):(h.hide(),l.removeClass("has-title"))}
14
+ var b,m,l,r,h,v,p=!1,n=!1,t=!1,E,z,B,q,w,y=c.init=function(){if(!b){b=e('<div id="overlay"></div>');m=e('<div class="overlay-frame"></div>');l=e('<div class="overlay-container"></div>');h=e('<div class="overlay-title"><span class="title">Untitled</span></div>');v=e('<a class="overlay-close" href="#"><span>x</span></a>');r=e('<div class="overlay-bg"></div>');b.append(m.append(l)).append(r).prependTo(k.body);e(k).bind("keydown",f);e(a).resize(d);B=l.outerWidth(!0)-l.width()+(m.innerWidth()-m.width());
15
+ l.outerHeight(!0);l.outerHeight(!1);m.innerHeight();m.height();q=e(a).innerWidth();E=parseInt(l.css("width"));if(!E||isNaN(E))E=l.width();z=parseInt(l.css("height"));if(!z||isNaN(z))z=l.height();h.append(v.hide()).hide().prependTo(m);b.hide()}return b},D=c.width=function(h){y();if(null===h)m.css("width",""),l.css("width","");else{h=h||E||640;x=h+B;w=h;var a=q;x>a?(x=a,h=x-B,b.addClass("spill")):b.removeClass("spill");m.css("width",x+"px");l.css("width",h+"px")}return c};c.autoSize=function(){y();
16
+ d();var b=E||0;l.children().each(function(h,c){b=Math.max(b,e(c).outerWidth(!0))});D(b);return c};c.css=function(b){y().attr("class",b);return c};c.html=function(b){y();a.innerShiv&&(b=innerShiv(b,!1));return l.html(b)};c.append=function(b){y();b instanceof jQuery||(b=e(b));l.append(b);return c};var J=c.close=function(h){if(p){var a=function(){y().hide();e(k.body).removeClass("has-overlay");p=!1;l.html("");p=null;b.trigger("overlayClosed",[c])};null==h&&(h=300);h?b.fadeOut(h,a):a()}return c};c.title=
17
+ function(b){y();t=b||"";h.find("span.title").text(t);null!=b?g(!0):n||g(!1);return c};c.enableClose=function(){y();n=!0;v.unbind("click").bind("click",function(b){J();return!1});g(!0);v.show();return c};c.disableClose=function(){y();n=!1;v.hide();p&&t||g(!1);return c};c.open=function(){y();l.html("");D(E);b.attr("class","");e(k.body).addClass("has-overlay");y().show();p=!0;d();c.title(null);n&&g(!0);b.trigger("overlayOpened",[c]);return c};c.listen=function(b){y().bind("overlayClosed",b);return c};
18
+ c.unlisten=function(b){y().unbind("overlayClosed",b);return c};return c}({},u,A));s.register("$18",function(c,a,k){var f={401:"You've been logged out",404:"Not Found",500:"Server Error",502:"Bad Gateway",503:"Service unavailable",504:"Gateway timeout"};c.getErrors=function(){return f};c.jsonLink=function(c){if(!c)return"";c=c.split("?");c[0]=c[0].replace(/(\.[a-z0-9]{1,4})?$/i,".json");return c.join("?")};c.errorData=function(c,a,b){var m,l;b=c.responseText;a=c.status;if(!b&&0===a)return null;try{m=
19
+ e.parseJSON(b)||{}}catch(r){m={},l=r.message||r}l||(l=m.statusText||c.statusText||f[a]||"Unknown Error");m.error=l;return m};c.ajax=function(d,g,b,m){function l(){b&&b()}function f(b){b.alert&&alert(b.alert);var h=b.success;h&&s.require("$22","growl.js").success.apply(this,h.push?h:[h]);h=m||e(k.body);h.trigger("locoAjaxSuccess",[b]);var c=b.events;if(c&&c.length)for(var d,g=s.require("$8","ga.js");d=c.shift();)h.trigger(d,[b]),g.event("ajax",d);b.modal&&s.require("$10","LocoModal.js").replace(b.modal);
20
+ if(b.download)a.location.assign(b.download);else if(b.redirect)return a.location.assign(b.redirect),!1;l();return!0}function h(b,h,a){401===b.status?(s.require("$22","growl.js").login(),l()):(h=c.errorData(b,h,a),null!=h&&(a=h.error,"function"===typeof g&&!1===g(null,a,b.status)?l():h&&h.data&&!f(h.data)||(alert(a||"Unknown error"),l())))}d.error=h;d.success=function(b,c,a){if(!b)return h(a,"unknown");b.status&&alert(b.statusText||"Unknown error");"function"===typeof g&&!1===g(b&&b.data?b.data:b)?
21
+ l():b&&b.data?f(b.data):l()};e.ajax(d)};return c}({},u,A));s.register("$10",function(c,a,k){function f(b,c){g.autoSize();var a=g.init();s.require("$2","html.js").init(a);a.find("[data-script]").each(function(b,h){h=e(h);for(var a=-1,d,p=h.attr("data-script").split(" ");++a<p.length;)d=p[a],m[d]?m[d](h,c||{}):alert("Unknown script "+d)});a.trigger("locoModalLoaded",[g,b||"",c||{}]);var d,l=a.find("form")[0];if(l)a:for(a=0;a<l.elements.length;a++)switch(d=l.elements[a],d.type){case "text":case "email":case "textarea":e(d).focus();
22
+ break a}}function d(b){var a=e(b.currentTarget),c=a.attr("data-modal");if("close"===c){r();var d=a.attr("href");if(d&&-1!==d.indexOf("#!"))return!0}else{var m="submit"===b.type,f=a.attr("title")||a.attr("data-title"),d=a.attr("href")||a.attr("action"),z=m?a.serialize():"",a=m?a.attr("method"):"get";l(d,f,a,z);c||(c=d.split("/").slice(1,4).join("-"));c="modal "+c;g.width(null).css(c).autoSize()}b.stopPropagation();b.preventDefault();return!1}var g=s.require("$19","overlay.js"),b=s.require("$8","ga.js"),
23
+ m={},l=c.load=function(h,a,d,m){g.open().title("Loading ..").disableClose().css("modal").html('<div class="overlay-placeholder"></div>');var l=s.require("$18","http.js");d={type:d||"get",data:m||"",url:l.jsonLink(h)};l.ajax(d,function(c,d,m){var p=c&&c.html;if(!p)return c=e('<h3 class="error"></h3>').text(d||"Unknown error"),g.enableClose().title("Error "+m||"?").html("").append(c),!1;a=c.title||a||"Untitled";g.enableClose().title(a).html(p);f(h,c.js);b.page(h,a);g.init().one("overlayClosed",function(){b.reset()});
24
+ return!0});return c},r=c.close=function(){g.close();return c};c.initLink=function(b){b.click(d)};c.initForm=function(b){e(b).submit(d)};c.replace=function(b){var a=b&&b.html,c=b&&b.url,d=b&&b.title;c?(l(c,d),b=b&&b.css||c.split("/").slice(1,4).join("-"),g.width(null).css(" modal "+b).autoSize()):a&&(g.open().html(a),d&&g.enableClose().title(d),f("",b&&b.js))};c.find=function(b){return g.init().find(b)};c.script=function(b,a){if(a){if("function"!==typeof a.run)throw Error(b+" macro has no run function");
25
+ m[b]=a.run;return c}return m[b]};return c}({},u,A));s.register("$12",function(c,a,k){function f(b){b.stopPropagation();b.preventDefault();return!1}function d(b,a,c){if(c=c||b.getElement(a))c.unbind().mouseup(function(c){c.stopPropagation();b.selectIndex(a,!0);return!1}).mouseover(function(){e(this).addClass("over");b.hover=a;return!0}).mouseout(function(){e(this).removeClass("over");b.hover=-1;return!0}),c=null;return b}function g(b){if(b){var a=this,c=b[0];a.id=c.id||"";a.name=c.name||"";a.prefix=
26
+ c.getAttribute("data-prefix");a.defaultIcon=c.getAttribute("data-icon")||"jshide";var d=c.selectedIndex,h=[],g,p,n;for(p=0;p<c.options.length;p++)g=c.options[p],n=g.disabled,g=e(g),h.push([g.val(),g.text(),g.attr("data-icon")||"",n]);a.hidden=e('<input type="hidden" name="'+a.name+'" value="" />').appendTo(c.form);a.list=e('<ul class="clearfix"></ul>');a.icon=e('<span class="icon"> </span>');a.selection=e('<span class="label"></span>');a.handle=e('<a class="handle" href="#"></a>').attr("tabindex",
27
+ b.attr("tabindex")||"").append(a.icon).append(a.selection);a.wrapper=e("<div></div>").addClass(c.className).addClass("selector").append(a.handle).append(a.list).replaceAll(c);this.id&&a.wrapper.attr("id",this.id);for(a.clearOptions();g=h.shift();)a.addOption.apply(a,g);a.handle.click(function(b){b.preventDefault();return!1}).mouseover(function(b){return a.onRollover(b)}).mouseout(function(b){return a.onRollout(b)}).mousedown(function(b){return a.onPress(b)}).keydown(function(b){return a.onKeydown(b)});
28
+ e(k.body).mouseup(function(b){return a.onRelease(b)}).keydown(function(b){return a.onGlobalKeydown(b)});a.close();a.selectIndex(d)}}c.create=function(b){return new g(b)};c.extend=function(b){b.prototype=new g};a=g.prototype;a.onRollover=function(b){return this.over=!0};a.onRollout=function(b){this.over=!1;return!0};a.onPress=function(b){return this.active?this.over?(this.close(),b.stopPropagation(),b.preventDefault(),!1):!0:(this.open(),b.stopPropagation(),b.preventDefault(),this.handle.focus(),!1)};
29
+ a.onRelease=function(b){this.active&&!this.over&&this.close();return!0};a.onGlobalKeydown=function(b){if(this.active)switch(b.keyCode){case 27:return this.close(),f(b);case 40:return this.hoverNext(1),f(b);case 38:return this.hoverNext(-1),f(b);case 13:if(-1!=this.hover)return this.selectIndex(this.hover,!0),this.hoverItem(-1),this.close(),f(b)}return!0};a.onKeydown=function(b){return this.active||40!==b.keyCode?!0:(this.open(),f(b))};a.open=function(){this.active=!0;this.hover=-1;this.wrapper.addClass("active");
30
+ var b=this.handle.outerHeight()||0;this.list.show().css("top",b+"px");var b=this.handle.outerWidth()||0,a=this.list.outerWidth()||0;b>a&&(a-=this.list.width(),this.list.css("min-width",String(b-a)+"px"))};a.close=function(){this.list.hide();this.active=!1;-1!==this.hover&&(this.getElement(this.hover).removeClass("over"),this.hover=-1);this.wrapper.removeClass("active")};a.hoverItem=function(b,a){-1!==this.hover&&this.getElement(this.hover).removeClass("over");this.hover=b;-1!==b&&(a=a||this.getElement(b),
31
+ a.addClass("over"))};a.hoverNext=function(b){var a=this.options.length;if(a){a-=1;if(-1==this.hover)b=0<b?0:a;else{b=this.hover+b;if(0>b){this.close();return}b>a&&(b=0)}this.hoverItem(b)}};a.enableChange=function(b){this.eventName=b;this.eventData=[].slice.call(arguments,1);return this};a.clearOptions=function(){this.index={};this.length=0;this.options=[];this.list.html("");this.hidden.val("");this.idx=this.hover=-1;return this};a.addOption=function(b,a,c,g){var h=this.options.length,f=e("<span></span>").addClass(c||
32
+ "jshide"),p=e('<span class="label"></span>').text(a||b),f=e("<li></li>").append(f).append(p).appendTo(this.list);f.attr("data-option",h);this.options[h]={value:b,text:a,icon:c};this.index[b]=h;this.length=h+1;g?this.disableIndex(h):d(this,h,f);return h};a.disableOption=function(b){return this.disableIndex(this.index[b])};a.disableIndex=function(b){(b=this.getElement(b))&&b.addClass("disabled").unbind();return this};a.enableOption=function(b){return this.enableIndex(this.index[b])};a.enableIndex=function(b){return d(this,
33
+ b)};a.reIndex=function(){this.index={};this.length=0;for(var b=this.options.length;-1<--b;)this.index[this.options[b].value]=b,this.length++};a.selectValue=function(b,a){return this.selectIndex(this.index[b],a)};a.selectIndex=function(b,a){var c=this.options[b];c&&(this.hidden.val(c.value),b!==this.idx&&(this.idx=b,this.setLabel(c.text),this.icon.attr("class",c.icon||this.defaultIcon),a&&this.change()),this.active&&this.close());return this};a.setLabel=function(b){this.selection.text(b);this.prefix&&
34
+ this.selection.prepend(e('<span class="prefix"></span>').text(this.prefix))};a.val=function(){var b=this.options[this.idx];return b&&b.value};a.change=function(){var b=this.eventName||"change",a=this.eventData&&this.eventData.slice()||[];a.unshift(this.val());this.wrapper.trigger(b,a);return this};a.renameOption=function(b,a){var c=this.index[b],d=this.options[c];d&&(d.text=a,this.getElement(c).find("span.label").text(a),c===this.idx&&this.setLabel(a));return this};a.removeOption=function(b){var a=
35
+ this.index[b],c=this.options[a];c&&(b=this.val(),this.getElement(a).remove(),this.options.splice(a,1),this.reIndex(),b===c.value?this.selectIndex(0,!0):this.selectValue(b,!1))};a.getElement=function(b){return this.list.find("li").eq(b)};a=null;return c}({},u,A));s.register("$20",function(c,a,e){function f(b){d&&(b=g[b]||b);return b}var d=navigator.msPointerEnabled,g={touchstart:"MSPointerDown",touchmove:"MSPointerMove",touchend:"MSPointerUp"};c.bind=function(b,a,d){b=f(b);a.addEventListener&&a.addEventListener(b,
36
+ d,!1);return c};c.unbind=function(b,a,d){b=f(b);a.removeEventListener&&a.removeEventListener(b,d,!1);return c};return c}({},u,A));s.register("$13",function(c,a,k){function f(){m&&clearTimeout(m);m=null}function d(b){b.preventDefault();b.stopPropagation();return!1}var g,b,m,l=100,r=100,h=!1,v=!1,p;c.delays=function(b,a){l=b||0;r=a||0};c.kill=function(){b&&b.hide().stop().remove();b=null;g&&g.hide().html("")};c.text=function(a){b&&b.find("label.tip").text(a)};c.init=function(n){function t(){g||(g=e('<div id="tipholder"></div>').appendTo(k.body));
37
+ return g}function E(){f();y?m=setTimeout(z,y):z()}function z(){f();h||v||q()}function B(){f();b&&(b.stop(),b.remove());var a=n.offset();b=J.clone();t().show().append(b);var c=Math.round(a.left),a=Math.round(a.top);b.hasClass("tooltip-right")&&(c-=b.outerWidth(!1),c+=n.outerWidth(!1));a=b.hasClass("tooltip-top")?a-b.outerHeight():a+n.outerHeight();t().css("left",c+"px").css("top",a+"px");b.mouseenter(function(){h=!0;return!1}).mouseleave(function(){h=!1;E();return!0});Boolean(b.find("form").length|
38
+ b.find("a").length)||b.click(w);n.trigger("tooltipOpen",[b])}function q(){function a(){c.kill()}b?b.fadeOut(500,a):a();n.trigger("tooltipClose",[b])}function w(){!1!==n.triggerHandler("click")&&C&&(location.href=C);return!1}var y=Number(n.attr("data-hide-delay")||r),D=Number(n.attr("data-show-delay")||l),J=n.find("div.tooltip"),F=n.attr("title");if(!J.length){if(!F)return;J=e('<div class="tooltip"></div>').append(e('<label class="tip"></label>').text(F));n.hasClass("hastip-top")&&J.addClass("tooltip-top");
39
+ n.hasClass("hastip-right")&&J.addClass("tooltip-right");n.prepend(J)}F&&(n.attr("data-title")&&J.children("label.tip").text(F),n.attr("data-title",F),n.attr("title",""));var C=n.attr("href");"#"===C&&(C="");F=s.require("$20","touch.js").bind("touchstart",n[0],d).bind("touchmove",n[0],d).bind("touchend",n[0],function(b){setTimeout(w,300);return d(b)});null==p&&(p=!1,F.bind("touchstart",a,function(){return p=!0}).bind("touchend",a,function(){setTimeout(function(){p=!1},300);return!0}));n.mouseover(function(){p||
40
+ (v=!0,f(),b?B():D?m=setTimeout(B,D):B());return!0}).mouseout(function(){p||(v=!1,E());return!0});C&&n.click(function(){v=!1;q();return!0})};return c}({},u,A));s.register("$2",function(c,a,k){var f=a.ieVersion;c.ie=function(a){return a?f<=a:f};var d=c.init=function(a){a?a instanceof jQuery||(a=e(a)):a=e(k.body);var b=s.require("$8","ga.js"),m=s.require("$9","forms.js"),l=s.require("$10","LocoModal.js"),r=s.require("$11","LocoAutoComplete.js"),h=s.require("$12","LocoSelector.js"),v=s.require("$13",
41
+ "tooltip.js");a.find("form").each(function(b,a){var c=e(a);f&&10>f&&m.placeholders(c);a.getAttribute("data-modal")?l.initForm(a):a.action&&0!==a.action.indexOf("#")&&!a.target&&m.jsonify(a);c.hasClass("hasreveal")&&m.revealify(c);c.find("input.button").each(function(b,a){m.linkify(a)});c.find("input.auto-comp").each(function(b,a){r.init(a)});c.find("select.selector").each(function(b,a){h.create(e(a))})});a.find("a").each(function(a,h){-1!==h.className.indexOf("hastip")&&v.init(e(h));if(-1!==h.href.indexOf("/modal/")||
42
+ h.getAttribute("data-modal"))l.initLink(e(h));else{b.link(h);var g=h.getAttribute("data-ajax-target");g&&(g=e("#"+g),e(h).click(function(b){b.preventDefault();g.addClass("loading");e.get(h.href,function(b){b=c.$(b).replaceAll(g);d(b);b.trigger("locoAhah")});return!1}))}});m=l=r=a=null;return c};c.$=function(c){return e(a.innerShiv?innerShiv(c,!1):c)};e.fn._html=function(c){return null!=c?(c=this.html(a.innerShiv?innerShiv(c,!1):c),d(this),c):j.html()};e.fn.macro=function(a,b){if("function"!==typeof a.run)throw Error("macro has no run function");
43
+ a.run(this,b||{});return this};c.el=function(a,b){var c=k.createElement(a||"div");b&&(c.className=b);return c};c.txt=function(a){return k.createTextNode(a||"")};return c}({},u,A));s.register("$6",function(c,a,k){var f=s.require("$2","html.js").ie()?["keyup","paste"]:["input"];c.listen=function(a,c){function b(){n[v?"show":"hide"]()}function m(){a.value!==v&&(r&&clearTimeout(r),v=a.value,p&&a.setAttribute("size",v.length||1),b(),r=setTimeout(function(){c(v)},h))}function l(){m();return!0}a=a instanceof
44
+ jQuery?a[0]:a;for(var r,h=150,v=a.value,p=1===Number(a.size),n=e('<a href="#clear" tabindex="-1" class="icon clear"><span>clear</span></a>').click(function(b){a.value="";m();return!1}),t=-1,E=e(a);++t<f.length;)E.bind(f[t],l);E.after(n);b();t=E=null;return{ping:m,val:function(c){if(null==c)return v;r&&clearTimeout(r);a.value=v=c;b()}}};return c}({},u,A));s.register("$4",function(c,a,e){function f(){var a,c;this.clear=function(){this.length=0;a={};c=[]};this.getTree=function(){return a};this.getData=
45
+ function(){return c};this.clear()}c.create=function(){return new f};a=f.prototype;a.depth=0;a.matchall=!0;a.ignorecase=!0;a.nonword=/[\-.?!;:,_*^+=~`"'(){}<>[\]\/\\\u00a0\u1680\u180e\u2000-\u206f\u2e00-\u2e7f\u3000-\u303f]+/g;a.translit=function(a,c){function b(b){return a[b]||b}c=c||/[^a-z0-9]/g;this.trans=function(a){return a.replace(c,b)}};a.stoppers=function(a){this.stopped=function(c){return Boolean(a[c])}};a.add=function(a,c){null==c&&(c=String(a));var b=-1,e,f,r,h,v,p=this.normalize(c);e=this.getData();
46
+ var n=e.length;e.push(a);for(this.length++;++b<p.length;)if(e=p[b],!this.stopped(e)){f=this.getTree();r=Math.min(e.length,this.depth)||e.length;for(h=0;h<r;h++)v=e.charAt(h),f=f[v]||(f[v]={});e=f[" "]||(f[" "]=[]);e.push(n)}return this};a.find=function(a,c){function b(a,c){var h,d,e;for(p in a)if(e=a[p]," "===p)for(h in e)n=e[h],d=t[n]||(t[n]={length:0,words:{}}),d.length+=d.words[c]?0:1,d.words[c]=1+(d.words[c]||0);else b(e,c)}var e=-1,f,r,h,v,p,n,t={},E=[],k=this.normalize(a),B=this.getData();a:for(;++e<
47
+ k.length;){f=k[e];r=this.getTree();h=Math.min(f.length,this.depth)||f.length;for(v=0;v<h;v++){p=f.charAt(v);if(!r[p])continue a;r=r[p]}b(r,f)}for(n in t)this.matchall&&t[n].length<k.length||E.push(B[n]);c&&(c.query=a,c.words=k);return E};a.normalize=function(a){for(var c=-1,b={},e=[],f=this.split(a);++c<f.length;)if(a=f[c])if(this.ignorecase&&(a=a.toLowerCase()),a=this.strip(a))this.trans&&(a=this.trans(a)),b[a]||(e.push(a),b[a]=!0);return e};a.stopped=function(a){return 1===a.length};a.split=function(a){return a.split(/\s+/)};
48
+ a.strip=function(a){return a.replace(this.nonword,"")};a=null;return c}({},u,A));s.register("$11",function(c,a,k){function f(a){this.url="/auto/"+a+".json?q=";this.dead={}}function d(){this.dict=s.require("$4","dict.js").create()}c.init=function(a){function b(){if("hint"!==F){var b=D.val()&&!(L&&L.val())&&null==w&&!k;ba[b?"addClass":"removeClass"]("error")}}function c(){u.show();var b=D.outerWidth(!1),a=D.outerHeight(!1),h=D.css("margin-top");h&&(h=parseInt(h),isNaN(h)||(a+=h));b-=2;u.css("top",a+
49
+ "px").css("width",b+"px");k=!0}function l(){u.hide();k=!1}function r(){u.html("");l();E=0;y=w=null}function h(a){r();var h;for(h=0;h<a.length;h++){var d=h,q=a[h],f=e('<span class="label"></span>').text(q.label),g=e('<div class="auto-comp-result"></div>'),w=void 0;for(w in q)g.attr("data-"+w,q[w]);q.icon&&g.append(e("<span></span>").attr("class",q.icon));g.append(f);v(d,g)}(E=a.length)?(B&&c(),p(0)):(p(null),b())}function v(b,a){u.append(a);a.click(function(c){c.stopPropagation();p(b,a);t();return!1});
50
+ return a}function p(b,a){y&&(y.removeClass("selected"),y=null);w=null;null==b?L&&L.val(""):(a||(a=u.find("div.auto-comp-result").eq(b)),a.length&&(a.addClass("selected"),w=b,y=a))}function n(b){if(E){var a=E-1;null==w?b=0<b?0:a:(b=w+b,0>b?b=a:b>a&&(b=0));return p(b)}}function t(){if(null==w)A.val(""),L&&L.val("");else{var a=u.find("div.auto-comp-result").eq(w),c=a.attr("data-value"),h=a.attr("data-label");L&&L.val(c);A.val(h);l();a=a.clone();r();v(0,a);E=1;p(0,a);b();a.trigger("locoAutocomp",[c,h,
51
+ a])}}var E=0,k=!1,B=!1,q=a.form,w=null,y=null,D=e(a),J=D.attr("name"),F=D.attr("data-mode"),C=D.attr("data-provider"),L="hint"!==F&&e('<input type="hidden" value="" name="'+J+'" />').appendTo(q),ba=e('<div class="auto-comp-wrap"></div>').replaceAll(D),u=e('<div class="auto-comp-drop"></div>');C&&(C=new f(C));L&&D.attr("name","_"+J);D.attr("autocomplete","off");ba.append(D).append(u);l();D.focus(function(b){B=!0;1<E&&c()}).blur(function(a){B=!1;b()}).keydown(function(b){function a(){b.preventDefault();
52
+ b.stopPropagation();return!1}switch(b.keyCode){case 27:k&&(b.stopPropagation(),l(),D.blur());break;case 40:E&&(k?n(1):c());break;case 38:k&&n(-1);break;case 13:if(k)return t(),a();if(!w&&"hint"!==F)return a()}return!0});var A=s.require("$6","LocoTextListener.js").listen(D,function(b){C&&C.fetch(b,h)});(q=D.attr("data-pre"))&&(q=e.parseJSON(q))&&q.value&&q.label?(h([q]),t()):!a.value||L&&L.val()||!C||C.fetch(a.value,function(b){h(b);t()});return{$:D,clear:r,reset:function(){r();D.val("");L&&L.val("");
53
+ A.ping()},preload:function(b){E&&r();C=new d;var a,c;for(a in b)c=b[a],C.add(c)},mode:function(b){F=b}}};f.prototype.fetch=function(a,b){if(!a)return b&&b([]),this;var c,d=this.dead;for(c in d)if(0===a.indexOf(c))return b&&b([]),this;c={dataType:"json",url:this.url+encodeURIComponent(a)};s.require("$18","http.js").ajax(c,function(c){var h=c&&c.results;h&&(b&&c.query&&c.query===a&&b(c.results),h.length||(d[a]=0));return!0});return this};d.prototype.add=function(a){var b=a.fulltext||a.label||a.value;
54
+ b&&this.dict.add(a,b)};d.prototype.fetch=function(a,b){if(!a)return b&&b([]),this;var c=this.dict.find(a);b(c)};return c}({},u,A));s.register("$9",function(c,a,k){function f(b){function a(){b.value===h&&(b.value="",d.removeClass("placeheld"));return!0}function c(){""===b.value&&(b.value=h,d.addClass("placeheld"));return!0}var d=e(b);if(!d.hasClass("auto-comp")){var h=d.attr("placeholder");if(h)return d.focus(a).blur(c),c(),{kill:function(){a();d.unbind("focus",a).unbind("blur",c)}}}}var d=c.enable=
55
+ function(b){function d(b,a){a.getAttribute("data-was-disabled")||(a.disabled=!1)}b.find(".button").removeClass("loading");b.find("input").each(d);b.find("select").each(d);b.find("textarea").each(d);a.attachEvent&&b.hasClass("has-placeholders")&&c.placeholders(b)},g=c.disable=function(a){function c(a,b){b.disabled?b.setAttribute("data-was-disabled","true"):b.disabled=!0}a.find(".button").addClass("loading");a.find("input").each(c);a.find("select").each(c);a.find("textarea").each(c)};c.jsonify=function(b,
56
+ c,f){b instanceof jQuery||(b=e(b));b.disable||(e.fn.disable=function(){g(this);return this},e.fn.enable=function(){d(this);this.placehold&&this.placehold();return this});var k="";b.find('[type="submit"]').click(function(a){a&&a.target&&a.target.name&&(k=encodeURIComponent(a.target.name)+"="+encodeURIComponent(a.target.value));return!0});b.submit(function(h){if(h&&h.isDefaultPrevented&&h.isDefaultPrevented()||f&&!1===f(h))return!1;var d=a.tinyMCE;d&&b.find("textarea.editor").each(function(a,b){var c=
57
+ d.get(b.id);c&&c.save()});var e=b.serialize();k&&(e&&(e+="&"),e+=k,k="");b.disable();var g=s.require("$18","http.js"),e={url:g.jsonLink(b.attr("action")),type:b.attr("method"),data:e};g.ajax(e,c,function(){b.enable()},b);h.preventDefault();h.stopPropagation();return!1});if(b.hasClass("autopost")){var h,v=Number(b.attr("data-autopost-delay")||500);b.find('input[type="checkbox"]').change(function(){h&&clearTimeout(h);h=setTimeout(function(){b.submit()},v);return!0})}};c.revealify=function(a){a.find("div[data-reveal-if]").each(function(c,
58
+ d){function f(a){var b;z=z||a.target;if("."===k)b=Boolean(z&&z[E]);else if("="===k){var c,d;b=e(z.form).serializeArray();for(d in b)b[d].name===n&&(c=b[d].value);b=E===c}if(b!==p)if(p=b,a)h[p?"slideDown":"slideUp"](200);else h[p?"show":"hide"]();return!0}var h=e(d),g=/^([_\w\-\[\]]+)(\.|=)(.+)$/.exec(h.attr("data-reveal-if"));if(g){var p,n=g[1],k=g[2],E=g[3],g=a[0][n];g.length||(g=[g]);var z;for(c=0;c<g.length;c++)z=g[c],f(),e(z).change(f).removeClass("jshide");g=g=z=null}});a=null};c.linkify=function(a){var c=
59
+ a.getAttribute("data-icon");if(c){var d=e(a),f=e("<a> </a>");f.attr("href",a.form.action);f.attr("class",d.attr("class"));f.attr("tabindex",d.attr("tabindex"));d.attr("tabindex","-1");f.text(d.val());c&&e("<span></span>").prependTo(f).addClass(c);d.hide().after(f);f.click(function(a){d.click();return!1})}};c.placeholders=function(a){var c,d=[];a.find("input[placeholder]").each(function(a,b){"password"!==b.type&&(c=f(b))&&d.push(c)});d.length&&(a.submit(function(){for(var a in d)d[a].kill()}),a.addClass("has-placeholders"),
60
+ c=i=null)};return c}({},u,A));s.register("$14",function(c,a,e){function f(a){this.reIndex([]);if(a)for(var c in a)this.add(c,a[c])}c.init=function(a){return new f(a)};a=f.prototype;a.reIndex=function(a){var c=-1;for(this.ords={};++c<a.length;)this.ords[a[c]]=c;this.keys=a;this.length=c};a.key=function(a,c){if(null==c)return this.keys[a];var b=this.keys[a],e=this.ords[c];if(c!==b){if(null!=e)throw Error("Clash with item at ["+e+"]");this.keys[a]=c;delete this.ords[b];this.ords[c]=a}return a};a.indexOf=
61
+ function(a){a=this.ords[a];return null==a?-1:a};a.add=function(a,c){var b=this.ords[a];null==b&&(this.keys[this.length]=a,b=this.ords[a]=this.length++);this[b]=c;return b};a.get=function(a){return this[this.ords[a]]};a.cut=function(a,c){var b=[].splice.call(this,a,c);this.keys.splice(a,c);this.reIndex(this.keys);return b};a.each=function(a){for(var c=-1;++c<this.length;)a(this.keys[c],this[c],c);return this};a=null;return c}({},u,A));s.register("$3",function(c,a,e){function f(a){return{"Project-Id-Version":"PACKAGE VERSION",
62
+ "Report-Msgid-Bugs-To":"","POT-Creation-Date":a||"","POT-Revision-Date":a||"","PO-Revision-Date":a||"","Last-Translator":"","Language-Team":"",Language:"","Plural-Forms":"","MIME-Version":"1.0","Content-Type":"text/plain; charset=UTF-8","Content-Transfer-Encoding":"8bit","X-Poedit-SourceCharset":"UTF-8"}}function d(a,b){var c=a||"";b&&(c+="\x00"+b);return c}function g(){return s.require("$14","collection.js").init()}function b(a){if(!a)return'""';for(var b=a.replace("\r\n","\n").split("\n"),c=b.length-
63
+ 1,d=[],e=-1,f;++e<b.length;){a=b[e];for(c&&c!==e&&(a+="\n");a&&a.charAt(79);){for(f=80;--f;)if(-1!==" \n\r.?!,;:-".indexOf(a.charAt(f))){f++;break}f||(f=79);d.push(m(a.substr(0,f)));a=a.substr(f)}a&&d.push(m(a))}d[1]&&d.unshift("");return'"'+d.join('"\n"')+'"'}function m(a){return a.replace(/(["\\])/g,"\\$1").replace(/\n/g,"\\n")}function l(a){this.head={};this.headers(f(this.now()));this.locale(a);this.length=0;this.rows=g()}function r(a,b){this.src=[a||""];this.msg=[b||""];this.ref=this.cmt="";
64
+ this.status=0}c.create=function(a){return new l(a)};a=l.prototype;a.now=function(){return(new Date).toString()};a.header=function(a,b){if(null==b)return this.headers()[a]||"";this.head[a]=b||"";return this};a.headers=function(a){var b;if(null!=a){for(b in a)this.head[b]=a[b];return this}var c=this.locale(),d=this.now();a={};for(b in this.head)a[b]=String(this.head[b]);c?(a.Language=c.label||"Unknown locale",a["Plural-Forms"]="nplurals="+(c.nplurals||"2")+"; plural="+(c.pluraleq||"n!=1"),a["X-Loco-Target-Locale"]=
65
+ (c.lang||"en")+"_"+(c.region||"GB"),a["PO-Revision-Date"]=d,delete a["POT-Revision-Date"]):(a.Language="",a["Plural-Forms"]="nplurals=INTEGER; plural=EXPRESSION",a["POT-Revision-Date"]=d,a["PO-Revision-Date"]="YEAR-MO-DA HO:MI+ZONE");a["X-Generator"]="Loco - https://localise.biz/";return a};a.locale=function(a){if(null==a)return this.loc;this.loc=a||{lang:"en",region:"GB",nplurals:2,pluraleq:"n == 1 ? 0 : 1",label:"English"};this.loc.toString=function(){return this.lang+"_"+this.region};return this};
66
+ a.lock=function(a){this.locale(a||!1);return this.loc};a.unlock=function(){var a=this.loc;this.loc=null;return a};a.reIndex=function(a,b){var c=this.indexOf(a),d=a.hash(),e=this.rows.indexOf(d);return e===c?c:-1!==e?(b=(b||0)+1,a.source("Error, duplicate "+String(b)+": "+a.source()),this.reIndex(a,b)):this.rows.key(c,d)};a.get=function(a,b){var c=d(a,b);return this.rows.get(c)};a.indexOf=function(a){null==a.idx&&(a.idx=this.rows.indexOf(a.hash()));return a.idx};a.del=function(a){a=this.indexOf(a);
67
+ if(-1!==a){var b=this.rows.cut(a,1);if(b&&b.length)return this.length=this.rows.length,this.rows.each(function(a,b,c){b.idx=c}),a}};a.add=function(a,b){a instanceof r||(a=new r(a));b&&a.context(b);var c=a.hash();if(this.rows.get(c))throw Error("Duplicate message at index "+this.indexOf(a));a.idx=this.rows.add(c,a);this.length=this.rows.length;return a};a.each=function(a){this.rows.each(a);return this};a.load=function(a){for(var b=-1,c,d,e,f,g=[],B=[],q=[],w=[];++b<a.length;)if(c=a[b],null==c.parent){if(d=
68
+ c.source||c.id,e=c.context,d||e)f=new r(d,c.target||""),e&&f.context(e),c.flag&&f.flag(c.flag,!0),c.comment&&f.comment(c.comment),c.refs&&f.location(c.refs),c.message=f,f.translation()?f.fuzzy()?q.push(f):B.push(f):w.push(f)}else g.push(c);for(b=-1;++b<g.length;)try{c=g[b];d=c.source||c.id;f=a[c.parent]&&a[c.parent].message;if(!f)throw Error("parent missing for plural "+d);1===c.plural&&f.plural(d);f.translate(c.target||"",c.plural)}catch(y){}d=[w,q,B];for(b=0;3>b;b++)for(c=d[b],a=-1;++a<c.length;)try{this.add(c[a])}catch(k){}return this};
69
+ a.merge=function(a){var b,c=this.rows,d=g(),e={add:[],del:[]};a=a.rows;this.rows.each(function(b,c){a.get(b)||e.del.push(c)});a.each(function(a,h){try{(b=c.get(a))?h.ref&&b.location(h.ref):(b=h,e.add.push(b)),b.idx=d.add(a,b)}catch(f){}});this.rows=d;this.length=d.length;return e};a.row=function(a){return this.rows[a]};a.toString=function(){var a,b=[],c=[],d=this.headers(),e=!this.loc;for(a in d)c.push(a+": "+d[a]);c=new r("",c.join("\n"));e&&(c.comment("Loco Gettext template"),c.fuzzy(!0));b.push(c.toString());
70
+ b.push("");this.rows.each(function(a,c){a&&(b.push(c.toString(e)),b.push(""))});return b.join("\n")};a=r.prototype;a.hash=function(){return d(this.source(),this.context())};a.flag=function(a,b){var c=a===(a&this.status);if(null==b)return c;b?this.status|=a:c&&(this.status^=a);return this};a.fuzzy=function(a){return this.flag(4,a)};a.source=function(a,b){if(null==a)return this.src[0];this.src[0]=a;this.plural(b);return this};a.plural=function(a){if(null==a)return this.src[1];this.src[1]=a||"";return this};
71
+ a.each=function(a){for(var b=-1;++b<this.msg.length;)a(b,this.msg[b]);return this};a.translate=function(a,b){this.msg[b||0]=a||"";return this};a.translation=function(a){return this.msg[a||0]||""};a.comment=function(a){if(null==a)return this.cmt;this.cmt=a||"";return this};a.location=function(a){if(null==a)return this.ref;this.ref=a||"";return this};a.context=function(a){if(null==a)return this.src[2]||"";this.src[2]=a||"";return this};a.toString=function(a){var c,d=[];this.cmt&&d.push("#. "+this.cmt.replace("\r\n",
72
+ "\n").split("\n").join("\n#. "));this.ref&&d.push("#: "+this.ref.replace("\r\n","\n").split("\n").join("\n#: "));!a&&this.fuzzy()&&d.push("#, fuzzy");this.src[2]&&d.push("msgctxt "+b(this.src[2]));d.push("msgid "+b(this.src[0]));if(null==this.src[1])d.push("msgstr "+b(a?"":this.msg[0]));else for(c=-1,d.push("msgid_plural "+b(this.src[1]));++c<this.msg.length;)d.push("msgstr["+c+"] "+b(a?"":this.msg[c]));return d.join("\n")};a.toText=function(){return this.src.join(" ")+" "+this.msg.join(" ")};a.weight=
73
+ function(){var a=0;this.translation()||(a+=2);this.fuzzy()&&(a+=1);return a};a.compare=function(a,b){var c=this.weight(),d=a.weight();if(c>d)return 1;if(c<d)return-1;if(b){c=this.hash().toLowerCase();d=a.hash().toLowerCase();if(c<d)return 1;if(c>d)return-1}return 0};a.equals=function(a){return this===a||this.source()===a.source()&&this.context()===a.context()};a=a=null;return c}({},u,A));s.register("$5",{"\u0131":"i","\u03b1":"a","\u03b2":"b","\u03c8":"c","\u03b4":"d","\u03b5":"e","\u03c6":"f","\u03b3":"g",
74
  "\u03b7":"h","\u03b9":"i","\u03be":"j","\u03ba":"k","\u03bb":"l","\u03bc":"m","\u03bd":"n","\u03bf":"o","\u03c0":"p","\u03c1":"r","\u03c3":"s","\u03c4":"t","\u03b8":"u","\u03c9":"v","\u03c2":"s","\u03c7":"x","\u03c5":"y","\u03b6":"z","\u0444":"a","\u0438":"b","\u0441":"c","\u0432":"d","\u0443":"e","\u0430":"f","\u043f":"g","\u0440":"h","\u0448":"i","\u043e":"j","\u043b":"k","\u0434":"l","\u044c":"m","\u0442":"n","\u0449":"o","\u0437":"p","\u0439":"\ua647","\u043a":"r","\u044b":"s","\u0435":"t","\u0433":"u",
75
  "\u043c":"v","\u0446":"w","\u0447":"x","\u043d":"y","\u044f":"z","\u00aa":"a","\u00e1":"a","\u00e0":"a","\u0103":"a","\u1eaf":"a","\u1eb1":"a","\u1eb5":"a","\u1eb3":"a","\u00e2":"a","\u1ea5":"a","\u1ea7":"a","\u1eab":"a","\u1ea9":"a","\u01ce":"a","\u00e5":"a","\u01fb":"a","\u00e4":"a","\u01df":"a","\u00e3":"a","\u0227":"a","\u01e1":"a","\u0105":"a","\u0101":"a","\u1ea3":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1eb7":"a","\u1ead":"a","\u1e01":"a","\ua733":"a","\u00e6":"a","\u01fd":"a","\u01e3":"a",
76
  "\ua735":"a","\ua737":"a","\ua739":"a","\ua73b":"a","\ua73d":"a","\u1e9a":"a","\u2c65":"\u2c65","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"\u0180","\u0183":"\u0183","\u0107":"c","\u0109":"c","\u010d":"c","\u010b":"c","\u00e7":"c","\u1e09":"c","\u023c":"\u023c","\ua792":"\ua793","\u0188":"\u0188","\ua73f":"\ua73f","\u010f":"d","\u1e0b":"d","\u1e11":"d","\u1e0d":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u00f0":"d","\ua77a":"d","\u0238":"d","\u01f3":"d","\u01f2":"d","\u01c6":"d","\u01c5":"d",
105
  "\u04ab":"\u04ab","\u2dee":"n","\ua68d":"\ua68d","\u050f":"\u050f","\u04ad":"\u04ad","\ua68b":"\ua68b","\u045b":"\u045b","\u045c":"\u045b","\ua677":"e","\u04ef":"e","\u045e":"e","\u04f1":"e","\u04f3":"e","\u04af":"\u04af","\u04b1":"\u04b1","\u2df9":"\ua64b","\ua64b":"\ua64b","\u0479":"\u0479","\u2def":"\u0445","\u0445":"\u0445","\u04fd":"\u04fd","\u04ff":"\u04ff","\u04b3":"\u04b3","\u04bb":"\u04bb","\u0527":"\u0527","\ua695":"\ua695","\ua67b":"\u0461","\u0461":"\u0461","\u047f":"\u047f","\ua64d":"\ua64d",
106
  "\u047d":"\u047d","\u047b":"\u047b","\u2df0":"w","\ua661":"\ua661","\ua68f":"\ua68f","\u04b5":"\u04b5","\ua691":"\ua691","\u2df1":"x","\ua693":"\ua693","\u04f5":"\ua693","\u04b7":"\u04b7","\u04cc":"\u04cc","\u04b9":"\u04b9","\ua687":"\ua687","\u04bd":"\u04bd","\u04bf":"\u04bf","\u045f":"\u045f","\u2df2":"i","\ua697":"\ua697","\u2df3":"o","\ua64f":"\ua64f","\ua678":"\u044a","\u044a":"\u044a","\ua651":"\ua651","\ua679":"s","\u04f9":"s","\ua67a":"m","\u048d":"\u048d","\u2dfa":"\u0463","\u0463":"\u0463",
107
  "\ua653":"\ua653","\u044d":"\u044d","\u04ed":"\u044d","\u2dfb":"\u044e","\u044e":"\u044e","\ua655":"\ua655","\u2dfc":"\ua657","\ua657":"\ua657","\u0519":"\u0519","\ua69f":"\u0465","\u0465":"\u0465","\u2dfd":"\u0467","\u0467":"\u0467","\ua659":"\ua659","\u2dfe":"\u046b","\u046b":"\u046b","\ua65b":"\ua65b","\u0469":"\u0469","\ua65d":"\ua65d","\u2dff":"\u046d","\u046d":"\u046d","\u046f":"\u046f","\u0471":"\u0471","\u2df4":"\u0473","\u0473":"\u0473","\u0475":"\u0475","\u0477":"\u0475","\ua65f":"\ua65f",
108
+ "\u04a9":"\u04a9","\u051d":"\u051d","\u04cf":"\u04cf"});s.register("$23",function(c,a,e){var f=a.requestAnimationFrame,d=a.cancelAnimationFrame,g=0;if(!f||!d)for(var b in{ms:1,moz:1,webkit:1,o:1})if(f=a[b+"RequestAnimationFrame"])if(d=a[b+"CancelAnimationFrame"]||a[b+"CancelRequestAnimationFrame"])break;f&&d||(f=function(b){var c=m();timeToCall=Math.max(0,16-(c-g));nextTime=c+timeToCall;timerId=a.setTimeout(function(){b(nextTime)},timeToCall);g=nextTime;return timerId},d=function(a){clearTimeout(a)});
109
+ var m=Date.now||function(){return(new Date).getTime()};c.loop=function(a,b){function c(){g=f(c,b);a(e++)}var e=0,g;c();return{stop:function(){g&&d(g);g=null}}};return c}({},u,A));s.register("$21",function(c,a,e){function f(a,c,d,e){if(b){var f=d;d=function(a){if((a.MSPOINTER_TYPE_TOUCH||"touch")===a.pointerType)return f(a)}}a.addEventListener(c,d,e);return{unbind:function(){a.removeEventListener(c,d,e)}}}function d(a){a.preventDefault();a.stopPropagation();return!1}var g,b=!!a.navigator.msPointerEnabled,
110
+ m=b?"MSPointerDown":"touchstart",l=b?"MSPointerMove":"touchmove",r=b?"MSPointerUp":"touchend";c.ok=function(a){null==g&&(g="function"===typeof e.body.addEventListener);g&&a&&a(c);return g};c.ms=function(){return b};c.dragger=function(a,b){function c(b){a.addEventListener(b,f[b],!1)}function e(b){a.removeEventListener(b,f[b],!1)}var f={};f[m]=function(a){h(a,function(c,d){d.type=m;b(a,d,B)});c(l);c(r);return!0};f[r]=function(a){e(l);e(r);h(a,function(c,d){d.type=r;b(a,d,B)});return!0};f[l]=function(a){h(a,
111
+ function(c,d){d.type=l;b(a,d,B)});return d(a)};c(m);var B={kill:function(){e(m);e(l);e(r);a=B=b=null}};return B};c.swiper=function(a,c,e){function f(b){a.addEventListener(b,k[b],!1)}function g(b){a.removeEventListener(b,k[b],!1)}function B(){q&&q.stop();q=null}var q,w,y,k={},J=[],F=[],C=[];k[m]=function(b){w=!1;B();var c=v();h(b,function(a,b){J[a]=c;F[a]=b.clientX;C[a]=b.clientY});y=a.scrollLeft;return!0};k[r]=function(a){h(a,function(a,b){var d=v()-J[a],e=F[a]-b.clientX,d=Math.abs(e)/d;c(d,e?0>e?
112
+ -1:1:0)});y=null;return!0};k[l]=function(b){var c,e;null==y||h(b,function(a,b){c=F[a]-b.clientX;e=C[a]-b.clientY});if(e&&Math.abs(e)>Math.abs(c))return w=!0;c&&(w=!0,a.scrollLeft=Math.max(0,y+c));return d(b)};if(!b||e)f(m),f(l),f(r),b&&(a.className+=" mstouch");return{kill:function(){g(m);g(l);g(r);B()},swiped:function(){return w},ms:function(){return b},snap:function(c){b&&!e&&(a.style["-ms-scroll-snap-points-x"]="snapInterval(0px,"+c+"px)",a.style["-ms-scroll-snap-type"]="mandatory",a.style["-ms-scroll-chaining"]=
113
+ "none")},scroll:function(b,c,d){B();var e=a.scrollLeft,f=b>e?1:-1,h=Math[1===f?"min":"max"],g=Math.round(16*c*f);return q=s.require("$23","fps.js").loop(function(c){c&&(e=Math.max(0,h(b,e+g)),a.scrollLeft=e,b===e&&(B(),d&&d(e)))},a)}}};c.start=function(a,b){return f(a,m,b,!1)};c.move=function(a,b){return f(a,l,b,!1)};c.end=function(a,b){return f(a,r,b,!1)};var h=c.each=function(a,c){if(b)(a.MSPOINTER_TYPE_TOUCH||"touch")===a.pointerType&&c(0,a);else for(var d=-1,e=(a.originalEvent||a).changedTouches||
114
+ [];++d<e.length;)c(d,e[d])},v=Date.now||function(){return(new Date).getTime()};return c}({},u,A));s.register("$15",function(c,a,k){function f(a,b){var c=a.id,d=c&&u[c],e=d&&d.parent();if(!d||!e)return null;var f=(c=e.dir===t)?"X":"Y",c=c?r:h,g=c(e.el),k=b["offset"+f];null==k&&(k=b["page"+f]-c(a));k&&(g+=k);return{move:function(a){e.resize(a["page"+f]-g,d);return!0}}}function d(a,b){function c(){e(k).unbind("mousemove",d);z=null;return!0}function d(a){z?z.move(a):c();return!0}if(z)return!0;z=f(a.target,
115
+ a);if(!z)return!0;e(k).one("mouseup",c).mousemove(d);return l(a)}function g(a,b){var c=b.type;"touchmove"===c?z&&z.move(b):"touchstart"===c?z=f(a.target,b):"touchend"===c&&z&&(z=null)}function b(a){var b=e(a.target).closest("div.wg-tr"),c=b.length&&b.closest("div.is-table");(c=c&&u[c.attr("id")])&&c.selectRow(Number(b.attr("data-row")));return l(a)}function m(a){var b=a.keyCode;if(b=40===b?1:38===b?-1:0){var c=e(a.target),d=c.data("row");if(-1<d&&(c=(c=c.closest("div.is-table"))&&u[c.attr("id")])){for(;!1===
116
+ c.selectRow(d+=b););return l(a)}}return!0}function l(a){a.stopPropagation();a.preventDefault();return!1}function r(a,b){b||(b=k.body);for(var c=a.offsetLeft||0;(a=a.offsetParent)&&a!==b;)c+=a.offsetLeft||0;return c}function h(a,b){b||(b=k.body);for(var c=a.offsetTop||0;(a=a.offsetParent)&&a!==b;)c+=a.offsetTop||0;return c}function v(a){function b(){var c=a.innerHTML;c!==d&&(d=c,e(a).trigger("wgChange",[c]));return!0}var c=n.ie()?["keyup","paste"]:["input"],d=a.innerHTML,f=d;return e(a).attr("contenteditable",
117
+ "true").focus(function(){for(var d=e(a),f=-1;++f<c.length;)d.bind(c[f],b);return!0}).blur(function(){for(var g=e(a),h=-1;++h<c.length;)g.unbind(c[h]);b();f!==d&&e(a).trigger("wgChanged",[a]);return!0})}function p(a){this.el=a;this.id=a.id;this.pos=this.index=0;this.css=["wg-cell"];u[a.id]=this;this.clear()}var n=s.require("$2","html.js"),t=1,u={},z=!1;c.init=function(a){var b=new p(a);b.restyle().redraw();b.root=!0;s.require("$21","touch.js").ok(function(b){b.dragger(a,g)});e(a).mousedown(d);return b};
118
+ a=p.prototype;a.each=function(a){for(var b=-1;++b<this.length;)a(b,this.cells[b]);return this};a.bind=function(){return this.$("bind",arguments)};a.unbind=function(){return this.$("unbind",arguments)};a.$=function(a,b){e.fn[a].apply(e(this.el),b);return this};a.parent=function(){return this.pid&&u[this.pid]};a.splitx=function(){return this._split(t,arguments)};a.splity=function(){return this._split(2,arguments)};a._split=function(a,b){this.dir&&this.dir!==a&&this.clear();this.dir=a;var c=-1,d,e=this.length,
119
+ f=b.length,g=1/(e+f),h=0;if(e)throw Error("Todo: implement re-split");for(;++c<f;){d=n.el();this.body.appendChild(d);for(var k=d,l=b[c],m=l,r=1;u[l];)l=m+"-"+ ++r;k.id=l;d=new p(d);d.index=e+c;d.pid=this.id;d.pos=h;h+=g;this.cells.push(d);this.length++}this.restyle().redraw();return this.cells};a.clear=function(){for(var a=-1,b;++a<this.length;)b=this.cells[a].clear(),delete u[b.id];this.cells=[];this.length=0;this.nav&&this.el.removeChild(this.nav);this.nav=null;this.body&&(this.field&&n.ie()&&(e(this.body).triggerHandler("blur"),
120
+ this.field=null),this.table&&(this.table=null),this.el.removeChild(this.body));this.body=this.el.appendChild(n.el("","wg-body"));return this};a.resize=function(a,b){if(!b&&(b=this.cells[1],!b))return;var c=b.index,d=e(this.el)[this.dir===t?"width":"height"](),f=this.cells[c+1],c=this.cells[c-1];pad=(b.body||b.el.firstChild).offsetTop||0;max=(f?f.pos*d:d)-pad;min=c?c.pos*d:0;b.pos=Math.min(max,Math.max(min,a))/d;(d=this.parent())&&d.table?d.redraw():this.redraw();return this};a.distribute=function(){for(var a,
121
+ b=0;b<arguments.length;)a=Math.max(0,Math.min(1,arguments[b++])),this.cells[b].pos=a;this.redraw();return this};a.restyle=function(){var a=this.css.slice();this.root&&a.push("wg-root");0===this.index?a.push("first"):a.push("not-first");this.dir&&(a.push("wg-split"),2===this.dir?a.push("wg-split-y"):a.push("wg-split-x"));this.t&&a.push("has-title");this.nav&&a.push("has-nav");this.table?a.push("is-table"):null!=this.field&&(a.push("is-field"),this.field||a.push("readonly"));this.el.className=a.join(" ");
122
+ return this};a.redraw=function(){if(this.body){var a=this.el.clientHeight||0,b=this.body.offsetTop||0;b<a&&(a-=b);this.body.style.height=String(a)+"px"}for(var a=this.length,c,d=1,f=2===this.dir?"height":"width";0<=--a;)b=this.cells[a],this.nav?c=1:(b.fixed&&(b.pos=b.fixed/e(this.el)[f]()),c=d-b.pos,d=b.pos),b.el.style[f]=String(100*c)+"%",b.restyle().redraw();this.table&&this.redrawTable();return this};a.redrawTable=function(){var a=-1,b=this.cells[0],c=this.cells[1],a=e(c.body).width(),d=c.body.firstChild,
123
+ c=d.childNodes;d.style.width=a+"px";for(var a=b.length,f=1;0<=--a;)d=b.cells[a],c[a].style.width=String(100*(f-d.pos))+"%",f=d.pos;return!0};a.contents=function(a){if(null===a)return this.body.innerHTML;this.cells.length?this.clear():this.body&&this.el.removeChild(this.body);this.body=this.el.appendChild(n.el("","wg-content"));"string"===typeof a?e(this.body)._html(a):this.append(a);this.redraw();return this};a.textarea=function(a,b){var c=n.txt(a);this.contents(c);(this.field=b)&&v(this.body);this.restyle();
124
+ return this};a.append=function(a){a.nodeType?n.init(this.body.appendChild(a)):n.init(e(a).appendTo(this.body));return this};a.header=function(a,b){if(!arguments.length)return this.el.getElementsByTagName("h2")[0];var c=["wg-title"];b&&c.push(b);this.t=n.txt(a||"");this.el.insertBefore(n.el("h2",c.join(" ")),this.body).appendChild(this.t);this.restyle().redraw();return this};a.title=function(a){this.t?this.t.nodeValue=a||"":this.header(a);return this.t};a.tabulate=function(a){var c=this.id,d=[],f=
125
+ [];rows=this.splity(c+"-thead",c+"-body");thead=rows[0];tbody=rows[1];thead.css.push("wg-thead");tbody.css.push("wg-tbody");a.eachCol(function(a,b){d.push(c+"-col"+a);f.push(b)});for(var g=-1,k,l=n.el("","wg-cols"),p=thead._split(t,d);++g<p.length;)k=p[g],k.header(f[g]),l.appendChild(n.el("","wg-col "+(0===g?"":"not-")+"first"));tbody.contents(l);a.eachRow(function(a,b,c){tbody._addRow(b,c)});e(tbody.el).mousedown(b);this.lock();this.table=a;this.restyle().redraw();k=thead.cells[0];tbody.fixed=h(k.body,
126
+ k.el)||20;this.resize(tbody.fixed);e(l).attr("tabindex","-1").keydown(m);return l};a.lock=function(){this.body.className+=" locked";return this};a.addRow=function(a,b){this.table&&this.cells[1]&&this.cells[1]._addRow(a,b);return this};a._addRow=function(a,b){var c,d=this.body.firstChild.childNodes,e=d.length,f=d[0].childNodes.length,g=-1;for(b=b&&"wg-tr "+b||"wg-tr";++g<e;)c=d[g].appendChild(n.el("",b)),c.setAttribute("data-row",f),c=c.appendChild(n.el("","wg-td")),a[g]&&/\S/.test(a[g])?c.appendChild(n.txt(a[g])):
127
+ c.innerHTML="&nbsp;";return d};a.tr=function(a){for(var b=-1,c,d=[],e=this.cells[1].body.firstChild.childNodes;++b<e.length;)(c=e[b].childNodes[a])&&d.push(c);return d};a.td=function(a,b){try{return this.cells[1].body.firstChild.childNodes[b].childNodes[a].firstChild}catch(c){return null}};a.selectRow=function(a,b){var c=this.table&&this.table.row(a);if(!c)return null;var d=this.tr(a);if(d.length){var d=e(d),f=this.cells[1],g=f.body,h=e(g.firstChild);if(h.hasClass("filtered")&&!d.hasClass("filtered"))return!1;
128
+ h.find("div.selected").removeClass("selected");d.addClass("selected");h.data("row",a);if(b)f.scrollTo(d[0],!0);else{var k=g.scrollTop;h.focus();k&&(g.scrollTop=k);f.scrollTo(d[0])}h.trigger("wgRowSelect",[a,c])}return this};a.deselectRow=function(){if(this.table){var a=e(this.cells[1].body.firstChild),b=a.data("row");a.find("div.selected").removeClass("selected");a.data("row",null);a.trigger("wgRowDeselect",[b])}};a.filterRows=function(a){var b=-1,c;c=e(this.cells[1].body.firstChild);if(!a)return c.removeClass("filtered"),
129
+ this;for(c.addClass("filtered").find("div.filtered").removeClass("filtered");++b<a.length;)c=a[b],c=this.tr(c),c.length&&e(c).addClass("filtered");return this};a.scrollTo=function(a,b){var c,d=this.body.scrollTop,f=this.body.clientHeight+d,g=h(a,this.body),k=g+e(a).outerHeight();d>g?c=g:f<k&&(c=k-this.body.clientHeight);null!=c&&(b?this.body.scrollTop=c:e(this.body).animate({scrollTop:c},300));return this};a.navigize=function(a){function b(a,c){d=a.show();f=c.addClass("active");a.trigger("wgTabSelect",
130
+ [a.data("index")]);return a}var c=this;c.nav&&c.el.removeChild(c.nav);c.nav=c.el.insertBefore(n.el("nav","wg-tabs"),c.body);var d,f,g=e(c.nav).click(function(a){var g=e(a.target),h=g.data("tab");if(h){var k=f;d&&d.hide();k&&k.removeClass("active");b(h,g).children().focus();c.redraw();return l(a)}});c.each(function(c,f){f.pos=0;var h=e(f.el).data("index",c),k=e('<a href="#'+f.id+'"></a>').data("tab",h).text(a[c]).appendTo(g);d?h&&h.hide():b(h,k)});c.lock();c.restyle().redraw();g=null;return c};a=null;
131
+ return c}({},u,A));s.register("$7",function(c,a,k){function f(a){var c=k.createElement("pre");c.innerHTML=a.replace(/<(p|div|br) ?\/?>/ig,"\n<$1>").replace(/(^\n+|\n+$)/g,"");a="string"===typeof c.textContent?c.textContent:"string"===typeof c.innerText?c.innerText:e(c).text();return a}c.init=function(c){function g(){var a=q.length,b=0,c=0,d=0;q.each(function(a,e){e.translation()?e.fuzzy()?d++:b++:c++});return{t:a,p:String(b?Math.round(100*(b/a)):0)+"%",f:d,u:c}}function b(){w.clear();q.each(function(a,
132
+ b,c){w.add(c,b.toText())});y="";D=q.length}function k(a,b){var c,d={};if(y===a)return D||0;if(!q.length)return 0;if(a){if(y&&!D&&0===a.indexOf(y))return 0;c=w.find(a,d);d.words.length||(a="")}y=a;D=c?c.length:q.length;K.filterRows(c);d=C?q.indexOf(C):-1;if(-1===d||c&&-1===c.indexOf(d))c?c.length?K.selectRow(c[0],!0):K.deselectRow():K.selectRow(0,!0);b||t("poFilter",[y,D]);return D}function l(a){if(!a)return["",""];var b=[a.source()||"",a.translation()||""];(a=a.context())&&(b[0]+=" [ "+a+" ]");return b}
133
+ function r(a){if(a=a||C){var b=q.indexOf(a),b=K.tr(b),c=b[0].className.replace(/\s*po-[a-z]+/g,""),c=c+(" "+v(a)+" po-unsaved");e(b).attr("class",c);t("poUnsaved",[++H])}}function h(a,b){b=b||C;if(!b)return null;var c=b.fuzzy();null!=a&&c!=a&&(b.fuzzy(a),t("poFuzzy",[b,a]),t(G,[b]),r(b));return c}function v(a){var b=[];a&&(a.fuzzy()&&b.push("po-fuzzy"),a.translation()||b.push("po-empty"),a.comment()&&b.push("po-comment"));return b.join(" ")}function p(a,b){var c=l(a)[b||0],d=q.indexOf(a),d=K.td(d,
134
+ b);c&&/\S/.test(c)?e(d).text(c.replace("\n"," ")):e(d).html("&nbsp;")}function n(a){a!==A&&(F=(A=a)?q.lock(F):q.unlock()||F,t("poLock",[a,F]),C&&B(C))}function t(a,b){return e(c).trigger(a,b||[])}function u(){if(q&&q.row){y&&(y="",D=q.length,t("poFilter",[y,D]));var a;K.table&&(a=I?I.parentNode.scrollTop:0,K.clear());I=K.tabulate(M);a&&(I.parentNode.scrollTop=a);t("poLoad");(a=q.locale())?(F=a,n(!0)):n(!1);return!!q.length}K.clear().header("Error").contents("Invalid PO")}function z(){R.unbind().clear();
135
+ P.unbind().clear();S.unbind();C&&(t("poDeselected",[C]),C=null)}function B(a){function c(){var d=F&&F.lang&&"en"!==F.lang&&F.label;P.title(d?d+" translation:":"Translation:");if(m){var k=[],l=s.require("$14","collection.js").init();a.each(function(a,b){k.push("Form "+a);l.add("plural-"+a,b)});O=P.splitx.apply(P,l.keys);P.each(function(a,b){b.textarea(l[a],g)});P.navigize(k).bind("wgTabSelect",function(a,b){e=b})}else P.textarea(a.translation(),g);P.bind("wgChange",function(b,c){var d=f(c);a.translate(d,
136
+ e);0===e&&p(a,1);a.fuzzy()?h(!1,a):r(a)}).bind("wgChanged",function(c){w&&b();t(G,[a])})}function d(){P.title("Context:");P.textarea(a.context(),!0);P.bind("wgChange",function(b,c){var d=f(c);a.context(d);a.source();p(a,0);r(a)}).bind("wgChanged",function(){q.reIndex(a);w&&b();t(G,[a])})}z();C=a;S.textarea(a.comment(),!0).bind("wgChange",function(b,c){var d=f(c);a.comment(d);t("poComment",[a,d]);r(a)});var e=0,g=A,k=!A,l=a.source()||"",m=a.plural()||"";(function(){m?(O=R.splity(R.id+"-singular",R.id+
137
+ "-plural"),O[0].header("Singular:").textarea(l,k),O[1].header("Plural:").textarea(m,k),R.lock()):R.textarea(l,k);R.title("Source text:");k&&R.bind("wgChange",function(b,c){var d=f(c);R.id+"-plural"===b.target.parentNode.id?a.plural(d):(a.source(d),p(a,0));r(a)}).bind("wgChanged",function(c){R.id+"-plural"===c.target.parentNode.id||q.reIndex(a);w&&b();t(G,[a])})})();g?c():d();t("poSelected",[a]);data=null}var q,w,y,D,A,F,C,H=0,G="poUpdate",I,M={row:function(a){return l(q.row(a))},eachCol:function(a){a(0,
138
+ "Source text");a(1,"Translation")},eachRow:function(a){var b=0;q.each(function(c,d){a(b++,l(d),v(d))})}},N=s.require("$15","LocoWinGrid.js").init(c),O=N.splity("po-list","po-edit"),K=O[0],Q=O[1],O=Q.splitx("po-trans","po-comment"),T=O[0],S=O[1].header("Comment:"),O=T.splity("po-source","po-target"),R=O[0].header("Source text:"),P=O[1].header("Translation:");N.distribute(0.34);Q.distribute(0.8);e(a).resize(function(){N.redraw(!0);return!0});K.bind("wgRowSelect",function(a,b,c){a=q.row(b);B(a);return!0}).bind("wgRowDeselect",
139
+ function(){z();S.textarea("",!1);R.textarea("",!1).title("Source text not loaded:");P.textarea("",!1).title("Translation not loaded:");t("poSelected",[null]);return!0});return{bind:function(a,b){return e(c).bind(a,b)},load:function(a){q=a;w&&b();u()&&K.selectRow(0)},save:function(a){if(H||a)e(I).find("div.po-unsaved").removeClass("po-unsaved"),t("poSave");H=0;return q},fuzzy:function(a){return h(a)},del:function(a,c){var d=arguments.length?q.get(a,c):C;if(d){var e=y,f=q.del(d);null!=f&&(t("poDel",
140
+ [d]),t(G,[d]),u(),w&&b(),C&&C.equals(d)&&z(),q.length&&(e&&k(e),C||(f=Math.min(f,q.length-1),K.selectRow(f))))}},add:function(a,b){var c,d=q.get(a,b);d?c=q.indexOf(d):(c=q.length,d=q.add(a,b),K.addRow(M.row(c),v(d)),r(d),w&&w.add(q.indexOf(d),d.toText()),t("poAdd",[d]),t(G,[d]));y&&k("");K.selectRow(c);return d},lock:function(){n(!0)},unlock:function(){n(!1)},locked:function(){return Boolean(A)},filter:function(a){return w&&q&&q.length&&k(a,!0)},searchable:function(a){a&&(w=a,q&&b());return w&&!0},
141
+ stats:function(){return g()}}};return c}({},u,A));s.require("$1","array.js");s.require("$2","html.js");V=u.loco||{};var aa=u.ajaxurl||"/wp-admin/admin-ajax.php",U=V.conf||{},S=U.locale,M=s.require("$3","po.js").create(S),I={},T=A.getElementById("loco-poedit-inner"),G=V.t||function(c){return c};e(u).resize(function(){function c(){var c;c=T;for(var d=c.offsetTop||0;(c=c.offsetParent)&&void 0!==c;)d+=c.offsetTop||0;c=d;d=e(u).innerHeight();c=Math.max(k,d-c-a);T.style.height=String(c)+"px";return!0}var a=
142
+ 20,k=parseInt(e(T).css("min-height")||0);c();return c}());I.save=function(c){function a(){c.disabled=!1}a();H.bind("poUnsaved",function(){e(c).addClass("button-primary loco-flagged")}).bind("poSave",function(){e(c).removeClass("button-primary loco-flagged")});e(c.form).submit(function(k){var f=k.target;k.target.po.value=M.toString();c.disabled=!0;$(f,function(c){a();e("#loco-po-modified").text(c.modified);H.save(!0);var f=G("PO file saved"),b=c.filename;c=c.compiled;null!=c&&(/\D/.test(c)?W(c,G("Error"),
143
+ "error"):(f+=" "+G("and MO file compiled"),b=b.replace(/\.po$/i,".mo")));Z(f+" - "+b)},a);return Q(k)});return!0};I.download_po=I.download_mo=function(c){c.disabled=!1;c.form.action=aa;e(c).click(function(){c.form.po.value=M.toString();e(T).trigger("poSave");return!0});return!0};I.add=!S&&function(c){c.disabled=!1;e(c).click(function(a){var c=1,e;for(e="New message";M.get(e);)c=/(\d+)/.exec(e)?Math.max(c,RegExp.$1):c,e="New message "+ ++c;H.add(e);return Q(a)});return!0};I.del=!S&&function(c){c.disabled=
144
+ !1;e(c).click(function(a){H.del();return Q(a)});return!0};I.fuzzy=S&&function(c){function a(a){c.disabled=null==a;e(c)[a?"addClass":"removeClass"]("loco-inverted")}H.bind("poSelected",function(c,e){a(e&&H.locked()?e.fuzzy():null)}).bind("poFuzzy",function(c,e,d){a(H.locked()?d:null)});e(c).click(function(a){var c=!H.fuzzy();H.fuzzy(c);return Q(a)});return!0};I.sync=function(c){function a(){c.disabled=!1}a();H.bind("poUnsaved",function(){c.disabled=!0}).bind("poSave",function(){a()});e(c.form).submit(function(k){c.disabled=
145
+ !0;$(k.target,function(c){a();var d=s.require("$3","po.js").create(void 0);d.load(c.exp);var g=[],d=M.merge(d),b=d.add.length,k=d.del.length;H.load(M);if(b||k){g.push(c.pot?N(G("Merged from %s"),c.pot):G("Merged from source code"));b&&g.push(N(G("1 new string added","%s new strings added",b),b));k&&g.push(N(G("1 obsolete string removed","%s obsolete strings removed",k),k));e(T).trigger("poUnsaved",[]);if(u.console&&console.log){for(b=-1;++b<d.add.length;)console.log(" + "+d.add[b].source());for(b=
146
+ -1;++b<d.del.length;)console.log(" - "+d.del[b].source())}X()}else g.push(c.pot?N(G("Already up to date with %s"),c.pot):G("Already up to date with source code"));M.headers(c.headers||{});Z(g.join(". "))},a);return Q(k)});return!0};I.revert=function(c){H.bind("poUnsaved",function(){c.disabled=!1}).bind("poSave",function(){c.disabled=!0});e(c).click(function(a){location.reload();return Q(a)});return!0};I.help=function(){return!0};T.innerHTML="";var H=s.require("$7","poedit.js").init(T);e("#loco-nav").find("button").each(function(c,
147
+ a){var k=a.getAttribute("data-loco");I[k]&&I[k](a)||e(a).hide()});I=null;(function(c){e(c.form).submit(function(a){return Q(a)});var a=s.require("$4","dict.js").create();a.depth=10;a.translit(s.require("$5","translit.json"));H.searchable(a);c.disabled=!1;c.value="";var k=s.require("$6","LocoTextListener.js").listen(c,function(a){H.filter(a)});H.bind("poFilter",function(a,c){k.val(c)});c=a=null})(A.getElementById("loco-search"));H.bind("poUnsaved",function(){u.onbeforeunload=function(){return G("Your changes will be lost if you continue without saving")}}).bind("poSave",
148
+ function(){u.onbeforeunload=null}).bind("poUpdate",X);S?M.load(U.po||{}):M.load(U.pot||{});M.headers(U.headers);H.load(M);X();e("#wpbody-content").find("div.loco-message").each(function(c,a){Y(a,!0)})})(window,document,window.jQuery);
pub/js/lang/dummy.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Dummy translations, simply echos back as if translations all missing
3
+ */
4
+ loco = window.loco||{}, loco.t = function(){
5
+
6
+ // calc numeric index of a plural form (0-1)
7
+ function pluralIndex( n ){
8
+ return Number( n != 1 );
9
+ }
10
+
11
+ // expose public t() function
12
+ return function( msgid1, msgid2, n ){
13
+ if( null == n ){
14
+ return msgid1||'';
15
+ }
16
+ // plural operation
17
+ n = pluralIndex( n );
18
+ return n ? msgid2 || msgid1 : msgid1 || '';
19
+ };
20
+
21
+ }();
pub/js/lang/dummy.php ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * here for source code extraction until xgettext is applied to js files too
4
+ */
5
+ _x('OK','Message label');
6
+ _x('Warning','Message label');
7
+ _x('Error','Message label');
8
+ __('Unknown error');
9
+ __('PO file saved');
10
+ __('and MO file compiled');
11
+ __('Merged from %s');
12
+ __('Merged from source code');
13
+ __('Already up to date with %s');
14
+ __('Already up to date with source code');
15
+ _n('1 new string added','%s new strings added', 2 );
16
+ _n('1 obsolete string removed','%s obsolete strings removed', 2 );
17
+ __('Your changes will be lost if you continue without saving');
pub/js/lang/loco-translate-de_DE.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Loco js export: JavaScript function
3
+ * Project: loco.js conversion
4
+ * Release: Working copy
5
+ * Locale: de_DE, German
6
+ * Exported at: Sat, 04 Jan 2014 20:46:53 +0000
7
+ */
8
+ loco = window.loco||{}, loco.t = function( pairs ){
9
+
10
+ // named plural forms according to Unicode
11
+ var pluralForms = ["one","other"];
12
+
13
+ // calc numeric index of a plural form (0-1)
14
+ function pluralIndex( n ){
15
+ return Number( (n != 1) );
16
+ }
17
+
18
+ // expose public t() function
19
+ return function( msgid1, msgid2, n ){
20
+ var value = pairs[msgid1];
21
+ // singular if no multiplier
22
+ if( null == n ){
23
+ n = 1;
24
+ }
25
+ // plurals stored as objects, e.g. { one: "" }
26
+ if( value instanceof Object ){
27
+ value = value[ pluralForms[ pluralIndex(n) ] || 'one' ];
28
+ }
29
+ return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
+ };
31
+ }(
32
+ {"Error":"Fehler","Warning":"Warnung","OK":"OK","Settings saved":"Einstellungen gespeichert","New PO file":"Neue PO-Datei","You must specify a valid locale for a new PO file":"Du musst einen g\u00fcltigen Pfad f\u00fcr die PO-Datei angeben","No translatable strings found":"Keine \u00fcbersetzbaren Zeichenketten gefunden","Cannot create a PO file.":"Erstellen der PO-Datei fehlgeschlagen.","PO file already exists with locale %s":"PO-Datei existiert schon unter %s","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Datei kann nicht automatisch erstellt werden. Setze die Datei-Zugriffsrechte oder benutze Download anstatt Speichern","%s file is empty":"Datei (%s) ist leer","Run Sync to update from source code":"Benutze Sync, um von der Quelle zu aktualisieren","No strings could be extracted from source code":"Es konnten keine Zeichenketten vom Quellcode extrahiert werden","Run Sync to update from %s":"Benutze Sync, um aus %s zu aktualisieren","Source code has been modified, run Sync to update POT":"Quellcode wurde ge\u00e4ndert, benutze Sync um POT zu aktualisieren","POT has been modified since PO file was saved, run Sync to update":"POT wurde aktualisiert bevor die PO-Datei gespeichert wurde. Benutze Sync zum Aktualisieren.","Bad file path":"Falscher Dateipfad","New template":"Neues Template","New language":"Neue Sprache","%s%% translated":"%s%% \u00fcbersetzt","1 string":{"one":"1 Zeichenkette","other":"%s Zeichenketten"},"%s fuzzy":"%s undeutlich","%s untranslated":"%s nicht \u00fcbersetzt","Failed to compile MO file with built-in compiler":"Kompilieren der MO-Datei mit dem internen Kompilierer fehlgeschlagen.","Loco, Translation Management":"Loco, Translation Management","Translation":"\u00dcbersetzung","Manage translations":"\u00dcbersetzungen verwalten","Settings":"Einstellungen","File download failed":"Dateidownload ist fehlgeschlagen","Unknown language":"Unbekannte Sprache","Some files not writable":"Einige Dateien nicht schreibbar","Some files missing":"Einige Dateien fehlen","\"%s\" folder not writable":"Ordner \"%s\" nicht schreibbar","Folder not writable":"Ordner nicht schreibbar","POT file not writable":"POT-Datei nicht schreibbar","PO file not writable":"PO-Datei nicht schreibbar","MO file not writable":"MO-Datei nicht schreibbar","MO file not found":"MO-Datei nicht gefunden","User does not have permission to manage translations":"Benutzer hat keine Rechte die \u00dcbersetzungen zu verwalten","Failed to compile MO file with %s, check your settings":"Kompilieren der MO-Datei fehlgeschlagen. Bitte pr\u00fcfe Deine Einstellungen","Invalid data posted to server":"Ung\u00fcltige Daten zum Server gesendet","Package not found called %s":"Paket %s nicht gefunden","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Webserver kann Ordner \"%s\" nicht in \"%s\" erstellen. Setze die Zugriffsrechte oder erstelle den Ordner selbst.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Webserver kann keine Dateien im Ordner \"%s\" erstellen. Setze die Datei-Zugriffsrechte oder benutze Download anstatt Speichern.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"Datei %s ist vom Webserver nicht schreibbar. Setze die Datei-Zugriffsrechte oder benutze Download anstatt Speichern und speichere die Datei auf dem Server unter \"%s\/%s\" ab.","Cannot create MO file":"Erstellen der MO-Datei fehlgeschlagen.","Cannot overwrite MO file":"\u00dcberschreiben der MO-Datei fehlgeschlagen","Failed to write MO file":"","No strings could be extracted from source files":"Es konnten keine Zeichenketten aus der Quelle extrahiert werden","Unknown error":"Unbekannter Fehler","PO file saved":"PO-Datei gespeichert","and MO file compiled":"und MO-Datei kompiliert","Merged from %s":"Aus %s zusammengef\u00fchrt","Merged from source code":"Aus Quelle zusammengef\u00fchrt","Already up to date with %s":"Bereit auf dem aktuellen Stand mit %s","Already up to date with source code":"Bereit mit der Quelle auf dem aktuellen Stand","1 new string added":{"one":"1 neue Zeichenkette hinzugef\u00fcgt","other":"%s neue Zeichenketten hinzugef\u00fcgt"},"1 obsolete string removed":{"one":"1 veraltete Zeichenkette entfernt","other":"%s veraltete Zeichenketten entfernt"},"Your changes will be lost if you continue without saving":"Deine \u00c4nderungen gehen verloren, wenn du fortsetzt ohne zu Speichern","Packages":"Pakete","File check":"Dateipr\u00fcfung","File system permissions for %s":"Dateisystem-Rechte f\u00fcr %s","Back":"Zur\u00fcck","Get help":"Hilfe erhalten","Package details":"Paketdetails","Translations (PO)":"\u00dcbersetzungen (PO)","Template (POT)":"Template (POT)","File permissions":"Dateizugriffsrechte","1 language":{"one":"1 Sprache","other":"%u Sprachen"},"Updated":"Aktualisiert","Powered by":"Pr\u00e4sentiert von","Configure Loco Translate":"Konfiguriere Loco Translate","Compiling MO files":"MO-Dateien kompilieren","Use built-in MO compiler.":"Benutze internen MO-Kompilierer","Use external command:":"Benutze externes Befehlsprogramm:","Enter path to msgfmt on server":"Pfad zum msgfmt-Programm","Generate hash tables":"","Save settings":"Einstellungen speichern","Template file":"Templatedatei","Switch to...":"Wechsle zu...","never":"niemals","Save":"Speichern","Download":"Download","Sync":"Sync","Revert":"zur\u00fccksetzen","Add":"Hinzuf\u00fcgen","Del":"L\u00f6schen","Fuzzy":"Undeutlich","Filter translations":"\u00dcbersetzungen filtern","Help":"Hilfe","Initialize new translations in %s":"Initialisiere neue \u00dcbersetzung in %s","Select from common languages":"W\u00e4hle aus den Standardsprachen","or enter any language code":"oder trage den Sprach-Code ein","Start translating":"Starte \u00dcbersetzung","New version available":"Neue Version verf\u00fcgbar","Upgrade to version %s of Loco Translate":"Bitte upgrade Loco Translate auf Version %s","Select a plugin or theme to translate":"W\u00e4hle ein Plugin oder Theme zum \u00dcbersetzen","Themes":"Themes","Plugins":"Plugins","Core":"Core"}
33
+ );
pub/js/lang/loco-translate-nl_BE.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Loco js export: JavaScript function
3
+ * Project: loco.js conversion
4
+ * Release: Working copy
5
+ * Locale: nl_BE, Dutch (Belgium)
6
+ * Exported at: Sat, 04 Jan 2014 20:46:53 +0000
7
+ */
8
+ loco = window.loco||{}, loco.t = function( pairs ){
9
+
10
+ // named plural forms according to Unicode
11
+ var pluralForms = ["one","other"];
12
+
13
+ // calc numeric index of a plural form (0-1)
14
+ function pluralIndex( n ){
15
+ return Number( (n != 1) );
16
+ }
17
+
18
+ // expose public t() function
19
+ return function( msgid1, msgid2, n ){
20
+ var value = pairs[msgid1];
21
+ // singular if no multiplier
22
+ if( null == n ){
23
+ n = 1;
24
+ }
25
+ // plurals stored as objects, e.g. { one: "" }
26
+ if( value instanceof Object ){
27
+ value = value[ pluralForms[ pluralIndex(n) ] || 'one' ];
28
+ }
29
+ return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
+ };
31
+ }(
32
+ {"Error":"Fout","Warning":"Waarschuwing","OK":"","Settings saved":"","New PO file":"Nieuw PO-bestand","You must specify a valid locale for a new PO file":"Specifieer een geldige locale voor een nieuw PO-bestand","No translatable strings found":"Geen vertaalbare teksten gevonden","Cannot create a PO file.":"Kan geen PO-bestand aanmaken","PO file already exists with locale %s":"PO-bestand bestaat al in locale %s","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik download en bewaar.","%s file is empty":"Het bestand %s is leeg","Run Sync to update from source code":"Voer Sync uit om de broncode up te daten","No strings could be extracted from source code":"Er kon geen tekst uit de broncode gehaald worden","Run Sync to update from %s":"Gebruik Sync om vanuit %s up te daten","Source code has been modified, run Sync to update POT":"Broncode is veranderd. Gebruik Sync om POT up te daten","POT has been modified since PO file was saved, run Sync to update":"POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten","Bad file path":"Foute bestandslocatie","New template":"Nieuw sjabloon","New language":"Nieuwe taal","%s%% translated":"%s%% vertaald","1 string":{"one":"1 te vertalen tekst","other":"%s te vertalen teksten"},"%s fuzzy":"%s onzeker","%s untranslated":"%s onvertaald","Failed to compile MO file with built-in compiler":"","Loco, Translation Management":"Loco, vertalingsbeheer","Translation":"","Manage translations":"Beheer vertalingen","Settings":"","File download failed":"","Unknown language":"Onbekende taal","Some files not writable":"Sommige bestanden hebben geen schrijfrechten","Some files missing":"","\"%s\" folder not writable":"Map \"%s\" heeft geen schrijfrechten","Folder not writable":"","POT file not writable":"","PO file not writable":"","MO file not writable":"","MO file not found":"","User does not have permission to manage translations":"Gebruik heeft geen rechten om vertalingen te beheren","Failed to compile MO file with %s, check your settings":"","Invalid data posted to server":"Ongeldige gegevens op server","Package not found called %s":"","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak het zelf aan.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik de downloadfunctie.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"Bestand %s kan niet beschreven worden door de webserver. Bewerk de schrijfrechten of download en kopieer naar \"%s\/%s\".","Cannot create MO file":"","Cannot overwrite MO file":"","Failed to write MO file":"","No strings could be extracted from source files":"Er konden geen te vertalen teksten uit de bronbestanden gehaald worden","Unknown error":"","PO file saved":"","and MO file compiled":"","Merged from %s":"","Merged from source code":"","Already up to date with %s":"","Already up to date with source code":"","1 new string added":{"one":""},"1 obsolete string removed":{"one":""},"Your changes will be lost if you continue without saving":"","Packages":"Pakketten","File check":"","File system permissions for %s":"","Back":"","Get help":"","Package details":"Pakketdetails","Translations (PO)":"Vertalingen (PO)","Template (POT)":"Sjabloon (POT)","File permissions":"Bestandsrechten","1 language":{"one":"1 taal","other":"%u talen"},"Updated":"Ge\u00fcpdated","Powered by":"Ondersteund door","Configure Loco Translate":"","Compiling MO files":"","Use built-in MO compiler.":"","Use external command:":"","Enter path to msgfmt on server":"","Generate hash tables":"","Save settings":"","Template file":"Sjabloonbestand","Switch to...":"","never":"nooit","Save":"Opslaan","Download":"Downloaden","Sync":"Sync","Revert":"Ongedaan maken","Add":"Toevoegen","Del":"Verwijder","Fuzzy":"Onzeker","Filter translations":"Filter vertalingen","Help":"Help","Initialize new translations in %s":"Start nieuwe vertalingen in %s","Select from common languages":"Selecteer van gebruikelijke talen","or enter any language code":"of geef een taalcode op","Start translating":"Start vertalen","New version available":"Nieuwe versie beschikbaar","Upgrade to version %s of Loco Translate":"Loco Translate upgraden naar versie %s","Select a plugin or theme to translate":"Selecteer een plug-in of thema om te vertalen","Themes":"Thema's","Plugins":"Plug-ins","Core":""}
33
+ );
pub/js/lang/loco-translate-nl_NL.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Loco js export: JavaScript function
3
+ * Project: loco.js conversion
4
+ * Release: Working copy
5
+ * Locale: nl_NL, Dutch
6
+ * Exported at: Sat, 04 Jan 2014 20:46:53 +0000
7
+ */
8
+ loco = window.loco||{}, loco.t = function( pairs ){
9
+
10
+ // named plural forms according to Unicode
11
+ var pluralForms = ["one","other"];
12
+
13
+ // calc numeric index of a plural form (0-1)
14
+ function pluralIndex( n ){
15
+ return Number( (n != 1) );
16
+ }
17
+
18
+ // expose public t() function
19
+ return function( msgid1, msgid2, n ){
20
+ var value = pairs[msgid1];
21
+ // singular if no multiplier
22
+ if( null == n ){
23
+ n = 1;
24
+ }
25
+ // plurals stored as objects, e.g. { one: "" }
26
+ if( value instanceof Object ){
27
+ value = value[ pluralForms[ pluralIndex(n) ] || 'one' ];
28
+ }
29
+ return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
+ };
31
+ }(
32
+ {"Error":"Fout","Warning":"Waarschuwing","OK":"","Settings saved":"","New PO file":"Nieuw PO-bestand","You must specify a valid locale for a new PO file":"Specifieer een geldige locale voor een nieuw PO-bestand","No translatable strings found":"Geen vertaalbare teksten gevonden","Cannot create a PO file.":"Kan geen PO-bestand aanmaken","PO file already exists with locale %s":"PO-bestand bestaat al in locale %s","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik download en bewaar.","%s file is empty":"Het bestand %s is leeg","Run Sync to update from source code":"Voer Sync uit om de broncode up te daten","No strings could be extracted from source code":"Er kon geen tekst uit de broncode gehaald worden","Run Sync to update from %s":"Gebruik Sync om vanuit %s up te daten","Source code has been modified, run Sync to update POT":"Broncode is veranderd. Gebruik Sync om POT up te daten","POT has been modified since PO file was saved, run Sync to update":"POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten","Bad file path":"Foute bestandslocatie","New template":"Nieuw sjabloon","New language":"Nieuwe taal","%s%% translated":"%s%% vertaald","1 string":{"one":"1 te vertalen tekst","other":"%s te vertalen teksten"},"%s fuzzy":"%s onzeker","%s untranslated":"%s onvertaald","Failed to compile MO file with built-in compiler":"","Loco, Translation Management":"Loco, vertalingsbeheer","Translation":"","Manage translations":"Beheer vertalingen","Settings":"","File download failed":"","Unknown language":"Onbekende taal","Some files not writable":"Sommige bestanden hebben geen schrijfrechten","Some files missing":"","\"%s\" folder not writable":"Map \"%s\" heeft geen schrijfrechten","Folder not writable":"","POT file not writable":"","PO file not writable":"","MO file not writable":"","MO file not found":"","User does not have permission to manage translations":"Gebruik heeft geen rechten om vertalingen te beheren","Failed to compile MO file with %s, check your settings":"","Invalid data posted to server":"Ongeldige gegevens op server","Package not found called %s":"","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak het zelf aan.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik de downloadfunctie.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"Bestand %s kan niet beschreven worden door de webserver. Bewerk de schrijfrechten of download en kopieer naar \"%s\/%s\".","Cannot create MO file":"","Cannot overwrite MO file":"","Failed to write MO file":"","No strings could be extracted from source files":"Er konden geen te vertalen teksten uit de bronbestanden gehaald worden","Unknown error":"","PO file saved":"","and MO file compiled":"","Merged from %s":"","Merged from source code":"","Already up to date with %s":"","Already up to date with source code":"","1 new string added":{"one":""},"1 obsolete string removed":{"one":""},"Your changes will be lost if you continue without saving":"","Packages":"Pakketten","File check":"","File system permissions for %s":"","Back":"","Get help":"","Package details":"Pakketdetails","Translations (PO)":"Vertalingen (PO)","Template (POT)":"Sjabloon (POT)","File permissions":"Bestandsrechten","1 language":{"one":"1 taal","other":"%u talen"},"Updated":"Ge\u00fcpdated","Powered by":"Ondersteund door","Configure Loco Translate":"","Compiling MO files":"","Use built-in MO compiler.":"","Use external command:":"","Enter path to msgfmt on server":"","Generate hash tables":"","Save settings":"","Template file":"Sjabloonbestand","Switch to...":"","never":"nooit","Save":"Opslaan","Download":"Downloaden","Sync":"Sync","Revert":"Ongedaan maken","Add":"Toevoegen","Del":"Verwijder","Fuzzy":"Onzeker","Filter translations":"Filter vertalingen","Help":"Help","Initialize new translations in %s":"Start nieuwe vertalingen in %s","Select from common languages":"Selecteer van gebruikelijke talen","or enter any language code":"of geef een taalcode op","Start translating":"Start vertalen","New version available":"Nieuwe versie beschikbaar","Upgrade to version %s of Loco Translate":"Loco Translate upgraden naar versie %s","Select a plugin or theme to translate":"Selecteer een plug-in of thema om te vertalen","Themes":"Thema's","Plugins":"Plug-ins","Core":""}
33
+ );
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: timwhitlock
3
  Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, POEdit, productivity
4
  Requires at least: 3.5
5
  Tested up to: 3.8
6
- Stable tag: 1.3.1
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -17,10 +17,11 @@ The Loco Translate plugin provides in-browser editing of PO files used for local
17
  Features include:
18
 
19
  * POEdit style translations editor within Wordpress admin
 
20
  * Extraction of translatable strings from your source code
21
- * Create and update langauge files directly in your project
22
 
23
- Built by <a href="//twitter.com/timwhitlock">@timwhitlock</a> / <a rel="author" href="https://plus.google.com/106703751121449519322">Tim Whitlock</a>. Official [Loco](https://localise.biz/) WordPress plugin.
24
 
25
 
26
 
@@ -38,7 +39,7 @@ If you want to create new translations for a theme or plugin, follow these steps
38
  3. Find the theme or plugin in the list at *Tools > Manage Translations*
39
  4. Click `+ New language` and follow the on-screen prompts.
40
 
41
- Make sure you're familiar with the conventions of [Translating Wordpress](http://codex.wordpress.org/Translating_WordPress) before you start.
42
 
43
  Please note that this plugin doesn’t support Windows servers.
44
 
@@ -52,32 +53,33 @@ No. It's for manually entering your own translations, but we do intend to be int
52
 
53
  = Why can't it extract any translatable strings from my code? =
54
 
55
- The extraction process looks fo Wordpress translation functions with string literal arguments, such as `__('Foo')`.
56
 
57
  Using your own custom functions like `myTranslate('Foo')` won't work. Neither will using variables, such as `__( $foo )`.
58
 
59
 
60
  = Do I need to create a POT file? =
61
 
62
- There are some good reasons to, but you don't have to in order to use this plugin.
63
 
64
  Loco Translate allows you to work purely with PO files and keep them up to date with the source code without the interim step of maintaining a POT file.
65
 
66
 
67
- = Why do I get errors when I try to save files? =
68
 
69
- To be able to save PO files directly to your project, the files must be writable by the web server.
70
 
71
- You shouldn't do this in a live server, only for developing your theme or plugin on a local server.
72
 
73
- If you're unsure how to set file permission on your server, ask your systems administrator.
74
 
75
 
76
  = How do I create MO files? =
77
 
78
- If you have [Gettext](http://www.gnu.org/software/gettext/) installed on your system, Loco Translate will automatcally create a MO file when you save a PO file.
79
 
80
- Ensure that the web server is able to write the file to disk, and also ensure that the `msgfmt` program is in a common location, such as `/usr/bin/msgfmt`.
 
81
 
82
 
83
  = Does it support Windows? =
@@ -95,6 +97,12 @@ At the user end, yes you can access the interface on Windows using Internet Expl
95
 
96
  == Changelog ==
97
 
 
 
 
 
 
 
98
  = 1.3.1 =
99
  * style tweak for wp 3.8
100
  * suppressing exception when proc_open fails
@@ -144,7 +152,7 @@ At the user end, yes you can access the interface on Windows using Internet Expl
144
 
145
  == Upgrade Notice ==
146
 
147
- = 1.3.1 =
148
  * Bug fixes and improvements.
149
 
150
 
@@ -161,3 +169,4 @@ These features are on our todo list. There's no particular timeframe for any of
161
  == Credits ==
162
 
163
  * Dutch translations courtesy of [Niels Geryl](http://hetwittepaard.be)
 
3
  Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, POEdit, productivity
4
  Requires at least: 3.5
5
  Tested up to: 3.8
6
+ Stable tag: 1.4
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
17
  Features include:
18
 
19
  * POEdit style translations editor within Wordpress admin
20
+ * Create and update language files directly in your theme or plugin
21
  * Extraction of translatable strings from your source code
22
+ * Native MO file compilation without the need for Gettext on your system
23
 
24
+ Official [Loco](https://localise.biz/) WordPress plugin by <a href="//twitter.com/timwhitlock">@timwhitlock</a> / <a rel="author" href="https://plus.google.com/106703751121449519322">Tim Whitlock</a>
25
 
26
 
27
 
39
  3. Find the theme or plugin in the list at *Tools > Manage Translations*
40
  4. Click `+ New language` and follow the on-screen prompts.
41
 
42
+ A quick guide on using the plugin is [available here](https://localise.biz/help/wordpress/translate-plugin), but make sure you're familiar with the conventions of [Translating Wordpress](http://codex.wordpress.org/Translating_WordPress) before you start.
43
 
44
  Please note that this plugin doesn’t support Windows servers.
45
 
53
 
54
  = Why can't it extract any translatable strings from my code? =
55
 
56
+ The extraction process looks for Wordpress translation functions with string literal arguments, such as `__('Foo')`.
57
 
58
  Using your own custom functions like `myTranslate('Foo')` won't work. Neither will using variables, such as `__( $foo )`.
59
 
60
 
61
  = Do I need to create a POT file? =
62
 
63
+ There are some good reasons to do so, but you don't have to in order to use this plugin.
64
 
65
  Loco Translate allows you to work purely with PO files and keep them up to date with the source code without the interim step of maintaining a POT file.
66
 
67
 
68
+ = Why do I get errors when I try to save translations? =
69
 
70
+ To save PO files directly to your project, the files must be writable by the web server.
71
 
72
+ You shouldn't do this on a live server, only for developing your theme or plugin on a local server.
73
 
74
+ If you're unsure how to set file permission on your server, ask your system administrator.
75
 
76
 
77
  = How do I create MO files? =
78
 
79
+ Every time you save a PO file, Loco tries to compile a MO file in the same location. As above, ensure that the web server is able to write to disk, otherwise MO compilation will fail.
80
 
81
+ If you have [Gettext](http://www.gnu.org/software/gettext/) installed on your server you can use this instead of Loco's built-in compiler.
82
+ You can configure the path to the `msgfmt` program in the Settings tab.
83
 
84
 
85
  = Does it support Windows? =
97
 
98
  == Changelog ==
99
 
100
+ = 1.4 =
101
+ * Added native MO compiler
102
+ * Added hash generation config option
103
+ * Added direct MO download from editor
104
+ * Fixed some translations and added German
105
+
106
  = 1.3.1 =
107
  * style tweak for wp 3.8
108
  * suppressing exception when proc_open fails
152
 
153
  == Upgrade Notice ==
154
 
155
+ = 1.4 =
156
  * Bug fixes and improvements.
157
 
158
 
169
  == Credits ==
170
 
171
  * Dutch translations courtesy of [Niels Geryl](http://hetwittepaard.be)
172
+ * German translations courtesy of [Sebastian König](http://aykutmania.de)
tpl/admin-fscheck.tpl.php CHANGED
@@ -38,7 +38,7 @@ $nav = array (
38
 
39
  <p class="submit">
40
  <a class="button-primary" href="<?php Loco::h( LocoAdmin::uri() )?>"><?php Loco::h( Loco::__('Back') )?></a>
41
- <a class="button" href="http://wordpress.org/support/plugin/<?php echo Loco::NS?>" target="_blank">Get help</a>
42
  </p>
43
 
44
 
38
 
39
  <p class="submit">
40
  <a class="button-primary" href="<?php Loco::h( LocoAdmin::uri() )?>"><?php Loco::h( Loco::__('Back') )?></a>
41
+ <a class="button" href="http://wordpress.org/support/plugin/<?php echo Loco::NS?>" target="_blank"><?php Loco::h( Loco::__('Get help') )?></a>
42
  </p>
43
 
44
 
tpl/admin-list.tpl.php CHANGED
@@ -35,7 +35,7 @@
35
  <strong><?php Loco::h($name)?></strong>
36
  </li>
37
  <li><?php
38
- Loco::h( _n( '1 language', '%u languages', $n ), $n )?>
39
  </li><?php
40
  if( $mtime ):?>
41
  <li class="loco-mtime">
35
  <strong><?php Loco::h($name)?></strong>
36
  </li>
37
  <li><?php
38
+ Loco::h( Loco::_n( '1 language', '%u languages', $n ), $n )?>
39
  </li><?php
40
  if( $mtime ):?>
41
  <li class="loco-mtime">
tpl/admin-opts.tpl.php CHANGED
@@ -21,17 +21,47 @@ $nav = array (
21
  <?php isset($success) and LocoAdmin::success( $success )?>
22
 
23
  <form action="" method="post">
24
- <p>
25
- <label for="loco--which_msgfmt">
26
- <strong>Gettext msgfmt</strong><br />
27
- <?php Loco::h( Loco::__('Path to msgfmt program for compiling MO files') )?>:
28
- </label>
29
- <br />
30
- <input type="text" size="32" name="loco[which_msgfmt]" id="loco--which_msgfmt" value="<?php Loco::h($which_msgfmt)?>" />
31
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  <p class="submit">
33
  <input type="submit" class="button-primary" value="<?php Loco::h( Loco::__('Save settings') )?>" />
34
- <a class="button" href="http://wordpress.org/support/plugin/<?php echo Loco::NS?>" target="_blank">Get help</a>
35
  </p>
36
  </form>
37
 
21
  <?php isset($success) and LocoAdmin::success( $success )?>
22
 
23
  <form action="" method="post">
24
+ <table class="form-table">
25
+ <tbody>
26
+ <tr valign="top">
27
+ <th scope="row"><?php Loco::h( Loco::__('Compiling MO files') )?></th>
28
+ <td>
29
+ <fieldset>
30
+ <legend class="screen-reader-text">
31
+ <span><?php Loco::h( Loco::__('Compiling MO files') )?></span>
32
+ </legend>
33
+ <p>
34
+ <label for="loco--use-msgfmt-0">
35
+ <input type="radio" name="loco[use_msgfmt]" value="0" id="loco--use-msgfmt-0"<?php echo $use_msgfmt ? '' : ' checked';?> />
36
+ <?php Loco::h( Loco::__('Use built-in MO compiler.') )?>
37
+ </label>
38
+ </p>
39
+ <p>
40
+ <label for="loco--use-msgfmt-1">
41
+ <input type="radio" name="loco[use_msgfmt]" value="1" id="loco--use-msgfmt-1"<?php echo $use_msgfmt ? ' checked' : '';?> />
42
+ <?php Loco::h( Loco::__('Use external command:') )?>
43
+ </label>
44
+ <ul>
45
+ <li>
46
+ <input type="text" size="32" name="loco[which_msgfmt]" id="loco--which_msgfmt" value="<?php Loco::h($which_msgfmt)?>"
47
+ placeholder="<?php Loco::h( Loco::__('Enter path to msgfmt on server') ) ?>" />
48
+ </li>
49
+ </ul>
50
+ </p>
51
+ <p>
52
+ <label for="loco--gen-hash">
53
+ <input type="checkbox" name="loco[gen_hash]" value="1" id="loco--gen-hash"<?php echo $gen_hash ? ' checked' : '';?> />
54
+ <?php Loco::h( Loco::__('Generate hash tables') )?>
55
+ </label>
56
+ </p>
57
+ </fieldset>
58
+ </td>
59
+ </tr>
60
+ </tbody>
61
+ </table>
62
  <p class="submit">
63
  <input type="submit" class="button-primary" value="<?php Loco::h( Loco::__('Save settings') )?>" />
64
+ <a class="button" href="http://wordpress.org/support/plugin/<?php echo Loco::NS?>" target="_blank"><?php Loco::h( Loco::__('Get help') )?></a>
65
  </p>
66
  </form>
67
 
tpl/admin-poedit.tpl.php CHANGED
@@ -87,13 +87,24 @@ $modified or $pofiles[] = $path;
87
  <span><?php Loco::h( Loco::_x('Save','Editor button') )?></span>
88
  </button>
89
  </form>
90
- <form action="<?php echo $phpbase?>/loco-download.php" method="post">
91
  <input type="hidden" name="po" value="" />
 
92
  <input type="hidden" name="path" value="<?php Loco::h($path)?>" />
93
- <button class="button loco-download" data-loco="download" type="submit" disabled>
94
- <span><?php Loco::h( Loco::_x('Download','Editor button') )?></span>
95
  </button>
96
- </form>
 
 
 
 
 
 
 
 
 
 
97
  <form action="<?php echo $phpbase?>/loco-fail.php" method="post">
98
  <input type="hidden" name="path" value="<?php Loco::h($path)?>" />
99
  <input type="hidden" name="action" value="loco-posync" /><?php
87
  <span><?php Loco::h( Loco::_x('Save','Editor button') )?></span>
88
  </button>
89
  </form>
90
+ <form action="<?php echo $phpbase?>/loco-fail.php" method="post">
91
  <input type="hidden" name="po" value="" />
92
+ <input type="hidden" name="action" value="loco-download" />
93
  <input type="hidden" name="path" value="<?php Loco::h($path)?>" />
94
+ <button class="button loco-download" data-loco="download_po" type="submit" disabled title="<?php Loco::h( Loco::_x('Download','Editor button') )?> PO">
95
+ <span><?php echo $locale ? 'PO' : 'POT' ?></span>
96
  </button>
97
+ </form><?php
98
+ if( $locale ):?>
99
+ <form action="<?php echo $phpbase?>/loco-fail.php" method="post">
100
+ <input type="hidden" name="po" value="" />
101
+ <input type="hidden" name="action" value="loco-download" />
102
+ <input type="hidden" name="path" value="<?php Loco::h( preg_replace('/\.po$/','.mo',$path) )?>" />
103
+ <button class="button loco-download" data-loco="download_mo" type="submit" disabled title="<?php Loco::h( Loco::_x('Download','Editor button') )?> MO">
104
+ <span>MO</span>
105
+ </button>
106
+ </form><?php
107
+ endif?>
108
  <form action="<?php echo $phpbase?>/loco-fail.php" method="post">
109
  <input type="hidden" name="path" value="<?php Loco::h($path)?>" />
110
  <input type="hidden" name="action" value="loco-posync" /><?php