Loco Translate - Version 1.4.5

Version Description

  • Support for Domain Path tag
  • Added choice of location when language and package dirs both writable
  • Fixed bug extracting domain from file names
  • Child themes always have their own text domain and don't duplicate parent files
  • Better plural support in po file editor
  • Added experimental support for core packages
  • Tested in WP 3.9.1
  • Added Swedish translations
  • Added Russian translations
  • Added text filter clear button
Download this release

Release Info

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

Code changes from version 1.4.4 to 1.4.5

Files changed (45) hide show
  1. languages/loco-translate-de_DE.mo +0 -0
  2. languages/loco-translate-de_DE.po +159 -79
  3. languages/loco-translate-nl_BE.mo +0 -0
  4. languages/loco-translate-nl_BE.po +160 -78
  5. languages/loco-translate-nl_NL.mo +0 -0
  6. languages/loco-translate-nl_NL.po +160 -78
  7. languages/loco-translate-ru_RU.mo +0 -0
  8. languages/loco-translate-ru_RU.po +609 -0
  9. languages/loco-translate-sv_SE.mo +0 -0
  10. languages/loco-translate-sv_SE.po +606 -0
  11. languages/loco-translate-tr_TR.mo +0 -0
  12. languages/loco-translate-tr_TR.po +160 -80
  13. languages/loco-translate.pot +154 -74
  14. lib/build/gettext-compiled.php +2 -2
  15. lib/build/locales-compiled.php +2 -2
  16. lib/build/shell-compiled.php +1 -1
  17. lib/build/test.php +0 -107
  18. lib/loco-admin.php +45 -38
  19. lib/loco-boot.php +3 -1
  20. lib/loco-locales.php +66 -22
  21. lib/loco-packages.php +163 -72
  22. lib/test/bootstrap.php +45 -0
  23. lib/test/tests/CorePackageTest.php +44 -0
  24. lib/test/tests/FindFilesTest.php +41 -0
  25. lib/test/tests/GettextTest.php +82 -0
  26. lib/test/tests/LocalesTest.php +133 -0
  27. lib/test/tests/UtilsTest.php +31 -0
  28. loco.php +3 -1
  29. php/loco-posync.php +4 -0
  30. pub/css/loco-admin.css +1 -1
  31. pub/css/loco-legacy.css +5 -1
  32. pub/js/build/admin-poedit.js +148 -145
  33. pub/js/lang/dummy.php +34 -5
  34. pub/js/lang/loco-translate-de_DE.js +3 -3
  35. pub/js/lang/loco-translate-nl_BE.js +3 -3
  36. pub/js/lang/loco-translate-nl_NL.js +3 -3
  37. pub/js/lang/loco-translate-ru_RU.js +33 -0
  38. pub/js/lang/loco-translate-sv_SE.js +33 -0
  39. pub/js/lang/loco-translate-tr_TR.js +5 -5
  40. readme.txt +31 -7
  41. tpl/admin-list.tpl.php +3 -4
  42. tpl/admin-opts.tpl.php +16 -0
  43. tpl/admin-poedit.tpl.php +4 -2
  44. tpl/admin-poinit.tpl.php +18 -1
  45. tpl/admin-root.tpl.php +3 -3
languages/loco-translate-de_DE.mo CHANGED
Binary file
languages/loco-translate-de_DE.po CHANGED
@@ -3,8 +3,8 @@ 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: Wed Mar 12 2014 10:14:29 GMT+0000 (GMT)\n"
7
- "Last-Translator: Loco <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: German\n"
10
  "Plural-Forms: nplurals=2; plural=n != 1\n"
@@ -14,26 +14,78 @@ msgstr ""
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"
@@ -46,167 +98,180 @@ msgstr "Zugriff verweigert"
46
  msgid "Settings saved"
47
  msgstr "Einstellungen gespeichert"
48
 
49
- #: ../lib/loco-admin.php:132
50
  msgid "New PO file"
51
  msgstr "Neue PO-Datei"
52
 
53
- #: ../lib/loco-admin.php:244
54
  msgid "You must specify a valid locale for a new PO file"
55
  msgstr "Du musst einen gültigen Pfad für die PO-Datei angeben"
56
 
57
- #: ../lib/loco-admin.php:269 ../lib/loco-admin.php:371
58
  msgid "No translatable strings found"
59
  msgstr "Keine übersetzbaren Zeichenketten gefunden"
60
 
61
- #: ../lib/loco-admin.php:269
62
  msgid "Cannot create a PO file."
63
  msgstr "Erstellen der PO-Datei fehlgeschlagen."
64
 
65
- #: ../lib/loco-admin.php:276
 
66
  msgid "PO file already exists with locale %s"
67
  msgstr "PO-Datei existiert schon unter %s"
68
 
69
- #: ../lib/loco-admin.php:317
 
70
  msgid "PO file used as template. This will be renamed to %s on first save"
71
  msgstr ""
72
  "PO-Datei wird als Template verwendet. Dies wird in %s beim ersten Speichern "
73
  "umbenannt."
74
 
75
- #: ../lib/loco-admin.php:341
76
  msgid ""
77
- "File cannot be created automatically. Fix the file permissions or use Download "
78
- "instead of Save"
79
  msgstr ""
80
  "Datei kann nicht automatisch erstellt werden. Setze die Datei-Zugriffsrechte "
81
  "oder benutze Download anstatt Speichern"
82
 
83
- #: ../lib/loco-admin.php:350 ../lib/loco-admin.php:359
 
84
  msgid "%s file is empty"
85
  msgstr "Datei (%s) ist leer"
86
 
87
- #: ../lib/loco-admin.php:351 ../lib/loco-admin.php:366
88
  msgid "Run Sync to update from source code"
89
  msgstr "Benutze Sync, um von der Quelle zu aktualisieren"
90
 
91
- #: ../lib/loco-admin.php:355
92
  msgid "No strings could be extracted from source code"
93
  msgstr "Es konnten keine Zeichenketten vom Quellcode extrahiert werden"
94
 
95
- #: ../lib/loco-admin.php:362
 
96
  msgid "Run Sync to update from %s"
97
  msgstr "Benutze Sync, um aus %s zu aktualisieren"
98
 
99
- #: ../lib/loco-admin.php:381
100
  msgid "Source code has been modified, run Sync to update POT"
101
  msgstr "Quellcode wurde geändert, benutze Sync um POT zu aktualisieren"
102
 
103
- #: ../lib/loco-admin.php:385
104
  msgid "POT has been modified since PO file was saved, run Sync to update"
105
  msgstr ""
106
- "POT wurde aktualisiert bevor die PO-Datei gespeichert wurde. Benutze Sync zum "
107
- "Aktualisieren."
108
 
109
- #: ../lib/loco-admin.php:472
110
  msgid "Bad file path"
111
  msgstr "Falscher Dateipfad"
112
 
113
- #: ../lib/loco-admin.php:686
 
114
  msgid "Empty or invalid %s file"
115
  msgstr "Leere oder ungültige %s-Datei"
116
 
117
- #: ../lib/loco-admin.php:690
 
118
  msgid "%s file has no header"
119
  msgstr "%s-Datei hat keinen Header"
120
 
121
- #: ../lib/loco-admin.php:821
122
  msgctxt "Add button"
123
  msgid "New template"
124
  msgstr "Neues Template"
125
 
126
- #: ../lib/loco-admin.php:840
127
  msgctxt "Add button"
128
  msgid "New language"
129
  msgstr "Neue Sprache"
130
 
131
- #: ../lib/loco-admin.php:879
 
132
  msgid "%s%% translated"
133
  msgstr "%s%% übersetzt"
134
 
135
- #: ../lib/loco-admin.php:879
 
136
  msgid "1 string"
137
  msgid_plural "%s strings"
138
  msgstr[0] "1 Zeichenkette"
139
  msgstr[1] "%s Zeichenketten"
140
 
141
- #: ../lib/loco-admin.php:882
 
142
  msgid "%s fuzzy"
143
  msgstr "%s undeutlich"
144
 
145
- #: ../lib/loco-admin.php:885
 
146
  msgid "%s untranslated"
147
  msgstr "%s nicht übersetzt"
148
 
149
- #: ../lib/loco-admin.php:927
150
  msgid "Failed to compile MO file with built-in compiler"
151
  msgstr "Kompilieren der MO-Datei mit dem internen Kompilierer fehlgeschlagen."
152
 
153
- #: ../lib/loco-admin.php:970 ../tpl/admin-nav.tpl.php:21
154
  msgid "Loco, Translation Management"
155
  msgstr "Loco, Translation Management"
156
 
157
- #: ../lib/loco-admin.php:971 ../lib/loco-admin.php:1002
158
  msgid "Manage translations"
159
  msgstr "Übersetzungen verwalten"
160
 
161
- #: ../lib/loco-admin.php:972
162
  msgid "Translation options"
163
  msgstr "Übersetzungsoptionen"
164
 
165
- #: ../lib/loco-admin.php:979
166
  msgid "Loco Translate"
167
  msgstr "Loco Translate"
168
 
169
- #: ../lib/loco-admin.php:1003 ../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
 
 
170
  msgid "Settings"
171
  msgstr "Einstellungen"
172
 
173
- #: ../lib/loco-admin.php:1027
174
  msgid "File download failed"
175
  msgstr "Dateidownload ist fehlgeschlagen"
176
 
177
- #: ../lib/loco-locales.php:70
178
  msgid "Unknown language"
179
  msgstr "Unbekannte Sprache"
180
 
181
- #: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
182
  msgid "Some files not writable"
183
  msgstr "Einige Dateien nicht schreibbar"
184
 
185
- #: ../lib/loco-packages.php:384
186
  msgid "Some files missing"
187
  msgstr "Einige Dateien fehlen"
188
 
189
- #: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
 
190
  msgid "\"%s\" folder not writable"
191
  msgstr "Ordner \"%s\" nicht schreibbar"
192
 
193
- #: ../lib/loco-packages.php:408
194
  msgid "POT file not writable"
195
  msgstr "POT-Datei nicht schreibbar"
196
 
197
- #: ../lib/loco-packages.php:413
198
  msgid "PO file not writable"
199
  msgstr "PO-Datei nicht schreibbar"
200
 
201
- #: ../lib/loco-packages.php:415
202
  msgid "MO file not writable"
203
  msgstr "MO-Datei nicht schreibbar"
204
 
205
- #: ../lib/loco-packages.php:415
206
  msgid "MO file not found"
207
  msgstr "MO-Datei nicht gefunden"
208
 
209
- #: ../lib/loco-packages.php:426
210
  msgid "Folder not writable"
211
  msgstr "Ordner nicht schreibbar"
212
 
@@ -215,6 +280,7 @@ msgid "User does not have permission to manage translations"
215
  msgstr "Benutzer hat keine Rechte die Übersetzungen zu verwalten"
216
 
217
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
 
218
  msgid "Failed to compile MO file with %s, check your settings"
219
  msgstr "Kompilieren der MO-Datei fehlgeschlagen. Bitte prüfe Deine Einstellungen"
220
 
@@ -223,41 +289,46 @@ msgid "Invalid data posted to server"
223
  msgstr "Ungültige Daten zum Server gesendet"
224
 
225
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
 
226
  msgid "Package not found called %s"
227
  msgstr "Paket %s nicht gefunden"
228
 
229
  #: ../php/loco-posave.php:58
 
230
  msgid ""
231
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
232
  "backups in settings"
233
  msgstr ""
234
- "Webserver kann keine Sicherungen in \"%s\" anlegen. Setze die Datei-Zugriffrechte "
235
- "oder deaktiviere die Sicherungen in den Einstellungen"
236
 
237
  #: ../php/loco-posave.php:66
 
238
  msgid ""
239
- "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
240
- "it manually."
241
  msgstr ""
242
  "Webserver kann Ordner \"%s\" nicht in \"%s\" erstellen. Setze die Zugriffsrechte "
243
  "oder erstelle den Ordner selbst."
244
 
245
  #: ../php/loco-posave.php:69
 
246
  msgid ""
247
- "Web server cannot create files in the \"%s\" directory. Fix file permissions or "
248
- "use the download function."
249
  msgstr ""
250
  "Webserver kann keine Dateien im Ordner \"%s\" erstellen. Setze die Datei-"
251
  "Zugriffsrechte oder benutze Download anstatt Speichern."
252
 
253
  #: ../php/loco-posave.php:81
 
254
  msgid ""
255
- "%s file is not writable by the web server. Fix file permissions or download and "
256
- "copy to \"%s/%s\"."
257
  msgstr ""
258
  "Datei %s ist vom Webserver nicht schreibbar. Setze die Datei-Zugriffsrechte "
259
- "oder benutze Download anstatt Speichern und speichere die Datei auf dem Server "
260
- "unter \"%s/%s\" ab."
261
 
262
  #: ../php/loco-posave.php:102
263
  msgid "Cannot create MO file"
@@ -271,59 +342,64 @@ msgstr "Überschreiben der MO-Datei fehlgeschlagen"
271
  msgid "Failed to write MO file"
272
  msgstr "Fehler beim Schreiben der MO-Datei"
273
 
274
- #: ../php/loco-posync.php:53
275
  msgid "No strings could be extracted from source files"
276
  msgstr "Es konnten keine Zeichenketten aus der Quelle extrahiert werden"
277
 
278
- #: ../pub/js/lang/dummy.php:8
279
  msgid "Unknown error"
280
  msgstr "Unbekannter Fehler"
281
 
282
- #: ../pub/js/lang/dummy.php:9
283
  msgid "PO file saved"
284
  msgstr "PO-Datei gespeichert"
285
 
286
- #: ../pub/js/lang/dummy.php:10
287
  msgid "and MO file compiled"
288
  msgstr "und MO-Datei kompiliert"
289
 
290
- #: ../pub/js/lang/dummy.php:11
 
291
  msgid "Merged from %s"
292
  msgstr "Aus %s zusammengeführt"
293
 
294
- #: ../pub/js/lang/dummy.php:12
295
  msgid "Merged from source code"
296
  msgstr "Aus Quelle zusammengeführt"
297
 
298
- #: ../pub/js/lang/dummy.php:13
 
299
  msgid "Already up to date with %s"
300
  msgstr "Bereits auf dem aktuellen Stand mit %s"
301
 
302
- #: ../pub/js/lang/dummy.php:14
303
  msgid "Already up to date with source code"
304
  msgstr "Bereits mit der Quelle auf dem aktuellen Stand"
305
 
306
- #: ../pub/js/lang/dummy.php:15
 
307
  msgid "1 new string added"
308
  msgid_plural "%s new strings added"
309
  msgstr[0] "1 neue Zeichenkette hinzugefügt"
310
  msgstr[1] "%s neue Zeichenketten hinzugefügt"
311
 
312
- #: ../pub/js/lang/dummy.php:16
 
313
  msgid "1 obsolete string removed"
314
  msgid_plural "%s obsolete strings removed"
315
  msgstr[0] "1 veraltete Zeichenkette entfernt"
316
  msgstr[1] "%s veraltete Zeichenketten entfernt"
317
 
318
- #: ../pub/js/lang/dummy.php:17
319
  msgid "Your changes will be lost if you continue without saving"
320
  msgstr "Deine Änderungen gehen verloren, wenn du fortsetzt ohne zu Speichern"
321
 
322
- #: ../pub/js/lang/dummy.php:23
323
  msgid "Translation"
324
  msgstr "Übersetzung"
325
 
326
- #: ../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
 
327
  msgid "Packages"
328
  msgstr "Pakete"
329
 
@@ -332,6 +408,7 @@ msgid "File check"
332
  msgstr "Dateiprüfung"
333
 
334
  #: ../tpl/admin-fscheck.tpl.php:17
 
335
  msgid "File system permissions for %s"
336
  msgstr "Dateisystem-Rechte für %s"
337
 
@@ -339,7 +416,7 @@ msgstr "Dateisystem-Rechte für %s"
339
  msgid "Back"
340
  msgstr "Zurück"
341
 
342
- #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:80
343
  msgid "Get help"
344
  msgstr "Hilfe erhalten"
345
 
@@ -364,6 +441,7 @@ msgid "File permissions"
364
  msgstr "Dateizugriffsrechte"
365
 
366
  #: ../tpl/admin-list.tpl.php:43
 
367
  msgid "1 language"
368
  msgid_plural "%u languages"
369
  msgstr[0] "1 Sprache"
@@ -374,7 +452,7 @@ msgctxt "Modified time"
374
  msgid "Updated"
375
  msgstr "Aktualisiert"
376
 
377
- #: ../tpl/admin-list.tpl.php:98
378
  msgid "OK"
379
  msgstr "OK"
380
 
@@ -418,7 +496,7 @@ msgstr "PO-Datei sichern"
418
  msgid "Number of backups to keep of each file:"
419
  msgstr "Anzahl der Sicherungen pro Datei"
420
 
421
- #: ../tpl/admin-opts.tpl.php:79
422
  msgid "Save settings"
423
  msgstr "Einstellungen speichern"
424
 
@@ -484,6 +562,7 @@ msgid "Help"
484
  msgstr "Hilfe"
485
 
486
  #: ../tpl/admin-poinit.tpl.php:21
 
487
  msgid "Initialize new translations in %s"
488
  msgstr "Initialisiere neue Übersetzung in %s"
489
 
@@ -496,7 +575,7 @@ msgctxt "Form label"
496
  msgid "or enter any language code"
497
  msgstr "oder trage den Sprach-Code ein"
498
 
499
- #: ../tpl/admin-poinit.tpl.php:51
500
  msgctxt "Submit button"
501
  msgid "Start translating"
502
  msgstr "Starte Übersetzung"
@@ -506,6 +585,7 @@ msgid "New version available"
506
  msgstr "Neue Version verfügbar"
507
 
508
  #: ../tpl/admin-root.tpl.php:21
 
509
  msgid "Upgrade to version %s of Loco Translate"
510
  msgstr "Bitte upgrade Loco Translate auf Version %s"
511
 
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: Mon Jun 09 2014 17:13:27 GMT+0100 (BST)\n"
7
+ "Last-Translator: Tim <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: German\n"
10
  "Plural-Forms: nplurals=2; plural=n != 1\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;"
18
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
19
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
20
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
21
+ "esc_html_x:1,2c;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
+ #: ../lib/loco-packages.php:476
26
+ msgid "Folder not found"
27
+ msgstr ""
28
+
29
+ #: ../php/loco-posync.php:47
30
+ msgid "No source files in this package, nothing to sync"
31
+ msgstr ""
32
+
33
+ #. label for the window pane holding native translation
34
+ #: ../pub/js/lang/dummy.php:25
35
+ msgctxt "Editor pane"
36
+ msgid "Source text"
37
+ msgstr ""
38
+
39
+ #. where %s is the language, e.g French translation
40
+ #: ../pub/js/lang/dummy.php:27
41
+ #, php-format
42
+ msgctxt "Editor pane"
43
+ msgid "%s translation"
44
+ msgstr ""
45
+
46
+ #. label for the window pane holding translator comments
47
+ #: ../pub/js/lang/dummy.php:29
48
+ msgctxt "Editor pane"
49
+ msgid "Comments"
50
+ msgstr ""
51
+
52
+ #. label for the window pane holding message context
53
+ #: ../pub/js/lang/dummy.php:31
54
+ msgctxt "Editor pane"
55
+ msgid "Context"
56
+ msgstr ""
57
+
58
+ #: ../tpl/admin-opts.tpl.php:77 ../tpl/admin-opts.tpl.php:81
59
+ msgid "Experimental features"
60
+ msgstr ""
61
+
62
+ #: ../tpl/admin-opts.tpl.php:86
63
+ msgid "Enable Wordpress core translations"
64
+ msgstr ""
65
+
66
+ #: ../tpl/admin-poinit.tpl.php:58
67
+ #, php-format
68
+ msgctxt "Form label"
69
+ msgid "create in <code>%s</code>"
70
+ msgstr ""
71
+
72
+ #: ../tpl/admin-poinit.tpl.php:63
73
+ msgctxt "Form label"
74
+ msgid "create in global languages directory"
75
+ msgstr ""
76
+
77
  #. Translators: Bold text label in admin error messages
78
+ #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:8
79
  msgctxt "Message label"
80
  msgid "Error"
81
  msgstr "Fehler"
82
 
83
+ #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:7
84
  msgctxt "Message label"
85
  msgid "Warning"
86
  msgstr "Warnung"
87
 
88
+ #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:6
89
  msgctxt "Message label"
90
  msgid "OK"
91
  msgstr "OK"
98
  msgid "Settings saved"
99
  msgstr "Einstellungen gespeichert"
100
 
101
+ #: ../lib/loco-admin.php:133
102
  msgid "New PO file"
103
  msgstr "Neue PO-Datei"
104
 
105
+ #: ../lib/loco-admin.php:240
106
  msgid "You must specify a valid locale for a new PO file"
107
  msgstr "Du musst einen gültigen Pfad für die PO-Datei angeben"
108
 
109
+ #: ../lib/loco-admin.php:265 ../lib/loco-admin.php:367
110
  msgid "No translatable strings found"
111
  msgstr "Keine übersetzbaren Zeichenketten gefunden"
112
 
113
+ #: ../lib/loco-admin.php:265
114
  msgid "Cannot create a PO file."
115
  msgstr "Erstellen der PO-Datei fehlgeschlagen."
116
 
117
+ #: ../lib/loco-admin.php:272
118
+ #, php-format
119
  msgid "PO file already exists with locale %s"
120
  msgstr "PO-Datei existiert schon unter %s"
121
 
122
+ #: ../lib/loco-admin.php:313
123
+ #, php-format
124
  msgid "PO file used as template. This will be renamed to %s on first save"
125
  msgstr ""
126
  "PO-Datei wird als Template verwendet. Dies wird in %s beim ersten Speichern "
127
  "umbenannt."
128
 
129
+ #: ../lib/loco-admin.php:337
130
  msgid ""
131
+ "File cannot be created automatically. Fix the file permissions or use "
132
+ "Download instead of Save"
133
  msgstr ""
134
  "Datei kann nicht automatisch erstellt werden. Setze die Datei-Zugriffsrechte "
135
  "oder benutze Download anstatt Speichern"
136
 
137
+ #: ../lib/loco-admin.php:346 ../lib/loco-admin.php:355
138
+ #, php-format
139
  msgid "%s file is empty"
140
  msgstr "Datei (%s) ist leer"
141
 
142
+ #: ../lib/loco-admin.php:347 ../lib/loco-admin.php:362
143
  msgid "Run Sync to update from source code"
144
  msgstr "Benutze Sync, um von der Quelle zu aktualisieren"
145
 
146
+ #: ../lib/loco-admin.php:351
147
  msgid "No strings could be extracted from source code"
148
  msgstr "Es konnten keine Zeichenketten vom Quellcode extrahiert werden"
149
 
150
+ #: ../lib/loco-admin.php:358
151
+ #, php-format
152
  msgid "Run Sync to update from %s"
153
  msgstr "Benutze Sync, um aus %s zu aktualisieren"
154
 
155
+ #: ../lib/loco-admin.php:377
156
  msgid "Source code has been modified, run Sync to update POT"
157
  msgstr "Quellcode wurde geändert, benutze Sync um POT zu aktualisieren"
158
 
159
+ #: ../lib/loco-admin.php:381
160
  msgid "POT has been modified since PO file was saved, run Sync to update"
161
  msgstr ""
162
+ "POT wurde aktualisiert bevor die PO-Datei gespeichert wurde. Benutze Sync "
163
+ "zum Aktualisieren."
164
 
165
+ #: ../lib/loco-admin.php:468
166
  msgid "Bad file path"
167
  msgstr "Falscher Dateipfad"
168
 
169
+ #: ../lib/loco-admin.php:692
170
+ #, php-format
171
  msgid "Empty or invalid %s file"
172
  msgstr "Leere oder ungültige %s-Datei"
173
 
174
+ #: ../lib/loco-admin.php:696
175
+ #, php-format
176
  msgid "%s file has no header"
177
  msgstr "%s-Datei hat keinen Header"
178
 
179
+ #: ../lib/loco-admin.php:828
180
  msgctxt "Add button"
181
  msgid "New template"
182
  msgstr "Neues Template"
183
 
184
+ #: ../lib/loco-admin.php:847
185
  msgctxt "Add button"
186
  msgid "New language"
187
  msgstr "Neue Sprache"
188
 
189
+ #: ../lib/loco-admin.php:886
190
+ #, php-format
191
  msgid "%s%% translated"
192
  msgstr "%s%% übersetzt"
193
 
194
+ #: ../lib/loco-admin.php:886
195
+ #, php-format
196
  msgid "1 string"
197
  msgid_plural "%s strings"
198
  msgstr[0] "1 Zeichenkette"
199
  msgstr[1] "%s Zeichenketten"
200
 
201
+ #: ../lib/loco-admin.php:889
202
+ #, php-format
203
  msgid "%s fuzzy"
204
  msgstr "%s undeutlich"
205
 
206
+ #: ../lib/loco-admin.php:892
207
+ #, php-format
208
  msgid "%s untranslated"
209
  msgstr "%s nicht übersetzt"
210
 
211
+ #: ../lib/loco-admin.php:934
212
  msgid "Failed to compile MO file with built-in compiler"
213
  msgstr "Kompilieren der MO-Datei mit dem internen Kompilierer fehlgeschlagen."
214
 
215
+ #: ../lib/loco-admin.php:977 ../tpl/admin-nav.tpl.php:21
216
  msgid "Loco, Translation Management"
217
  msgstr "Loco, Translation Management"
218
 
219
+ #: ../lib/loco-admin.php:978 ../lib/loco-admin.php:1009
220
  msgid "Manage translations"
221
  msgstr "Übersetzungen verwalten"
222
 
223
+ #: ../lib/loco-admin.php:979
224
  msgid "Translation options"
225
  msgstr "Übersetzungsoptionen"
226
 
227
+ #: ../lib/loco-admin.php:986
228
  msgid "Loco Translate"
229
  msgstr "Loco Translate"
230
 
231
+ #: ../lib/loco-admin.php:1010 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.
232
+ #: tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ..
233
+ #: tpl/admin-root.tpl.php:7
234
  msgid "Settings"
235
  msgstr "Einstellungen"
236
 
237
+ #: ../lib/loco-admin.php:1034
238
  msgid "File download failed"
239
  msgstr "Dateidownload ist fehlgeschlagen"
240
 
241
+ #: ../lib/loco-locales.php:65
242
  msgid "Unknown language"
243
  msgstr "Unbekannte Sprache"
244
 
245
+ #: ../lib/loco-packages.php:423 ../lib/loco-packages.php:430
246
  msgid "Some files not writable"
247
  msgstr "Einige Dateien nicht schreibbar"
248
 
249
+ #: ../lib/loco-packages.php:433
250
  msgid "Some files missing"
251
  msgstr "Einige Dateien fehlen"
252
 
253
+ #: ../lib/loco-packages.php:439 ../lib/loco-packages.php:443
254
+ #, php-format
255
  msgid "\"%s\" folder not writable"
256
  msgstr "Ordner \"%s\" nicht schreibbar"
257
 
258
+ #: ../lib/loco-packages.php:464
259
  msgid "POT file not writable"
260
  msgstr "POT-Datei nicht schreibbar"
261
 
262
+ #: ../lib/loco-packages.php:469
263
  msgid "PO file not writable"
264
  msgstr "PO-Datei nicht schreibbar"
265
 
266
+ #: ../lib/loco-packages.php:471
267
  msgid "MO file not writable"
268
  msgstr "MO-Datei nicht schreibbar"
269
 
270
+ #: ../lib/loco-packages.php:471
271
  msgid "MO file not found"
272
  msgstr "MO-Datei nicht gefunden"
273
 
274
+ #: ../lib/loco-packages.php:476
275
  msgid "Folder not writable"
276
  msgstr "Ordner nicht schreibbar"
277
 
280
  msgstr "Benutzer hat keine Rechte die Übersetzungen zu verwalten"
281
 
282
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
283
+ #, php-format
284
  msgid "Failed to compile MO file with %s, check your settings"
285
  msgstr "Kompilieren der MO-Datei fehlgeschlagen. Bitte prüfe Deine Einstellungen"
286
 
289
  msgstr "Ungültige Daten zum Server gesendet"
290
 
291
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
292
+ #, php-format
293
  msgid "Package not found called %s"
294
  msgstr "Paket %s nicht gefunden"
295
 
296
  #: ../php/loco-posave.php:58
297
+ #, php-format
298
  msgid ""
299
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
300
  "backups in settings"
301
  msgstr ""
302
+ "Webserver kann keine Sicherungen in \"%s\" anlegen. Setze die Datei-"
303
+ "Zugriffrechte oder deaktiviere die Sicherungen in den Einstellungen"
304
 
305
  #: ../php/loco-posave.php:66
306
+ #, php-format
307
  msgid ""
308
+ "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or "
309
+ "create it manually."
310
  msgstr ""
311
  "Webserver kann Ordner \"%s\" nicht in \"%s\" erstellen. Setze die Zugriffsrechte "
312
  "oder erstelle den Ordner selbst."
313
 
314
  #: ../php/loco-posave.php:69
315
+ #, php-format
316
  msgid ""
317
+ "Web server cannot create files in the \"%s\" directory. Fix file permissions "
318
+ "or use the download function."
319
  msgstr ""
320
  "Webserver kann keine Dateien im Ordner \"%s\" erstellen. Setze die Datei-"
321
  "Zugriffsrechte oder benutze Download anstatt Speichern."
322
 
323
  #: ../php/loco-posave.php:81
324
+ #, php-format
325
  msgid ""
326
+ "%s file is not writable by the web server. Fix file permissions or download "
327
+ "and copy to \"%s/%s\"."
328
  msgstr ""
329
  "Datei %s ist vom Webserver nicht schreibbar. Setze die Datei-Zugriffsrechte "
330
+ "oder benutze Download anstatt Speichern und speichere die Datei auf dem "
331
+ "Server unter \"%s/%s\" ab."
332
 
333
  #: ../php/loco-posave.php:102
334
  msgid "Cannot create MO file"
342
  msgid "Failed to write MO file"
343
  msgstr "Fehler beim Schreiben der MO-Datei"
344
 
345
+ #: ../php/loco-posync.php:57
346
  msgid "No strings could be extracted from source files"
347
  msgstr "Es konnten keine Zeichenketten aus der Quelle extrahiert werden"
348
 
349
+ #: ../pub/js/lang/dummy.php:9
350
  msgid "Unknown error"
351
  msgstr "Unbekannter Fehler"
352
 
353
+ #: ../pub/js/lang/dummy.php:10
354
  msgid "PO file saved"
355
  msgstr "PO-Datei gespeichert"
356
 
357
+ #: ../pub/js/lang/dummy.php:11
358
  msgid "and MO file compiled"
359
  msgstr "und MO-Datei kompiliert"
360
 
361
+ #: ../pub/js/lang/dummy.php:12
362
+ #, php-format
363
  msgid "Merged from %s"
364
  msgstr "Aus %s zusammengeführt"
365
 
366
+ #: ../pub/js/lang/dummy.php:13
367
  msgid "Merged from source code"
368
  msgstr "Aus Quelle zusammengeführt"
369
 
370
+ #: ../pub/js/lang/dummy.php:14
371
+ #, php-format
372
  msgid "Already up to date with %s"
373
  msgstr "Bereits auf dem aktuellen Stand mit %s"
374
 
375
+ #: ../pub/js/lang/dummy.php:15
376
  msgid "Already up to date with source code"
377
  msgstr "Bereits mit der Quelle auf dem aktuellen Stand"
378
 
379
+ #: ../pub/js/lang/dummy.php:16
380
+ #, php-format
381
  msgid "1 new string added"
382
  msgid_plural "%s new strings added"
383
  msgstr[0] "1 neue Zeichenkette hinzugefügt"
384
  msgstr[1] "%s neue Zeichenketten hinzugefügt"
385
 
386
+ #: ../pub/js/lang/dummy.php:17
387
+ #, php-format
388
  msgid "1 obsolete string removed"
389
  msgid_plural "%s obsolete strings removed"
390
  msgstr[0] "1 veraltete Zeichenkette entfernt"
391
  msgstr[1] "%s veraltete Zeichenketten entfernt"
392
 
393
+ #: ../pub/js/lang/dummy.php:18
394
  msgid "Your changes will be lost if you continue without saving"
395
  msgstr "Deine Änderungen gehen verloren, wenn du fortsetzt ohne zu Speichern"
396
 
397
+ #: ../pub/js/lang/dummy.php:37
398
  msgid "Translation"
399
  msgstr "Übersetzung"
400
 
401
+ #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.
402
+ #: tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
403
  msgid "Packages"
404
  msgstr "Pakete"
405
 
408
  msgstr "Dateiprüfung"
409
 
410
  #: ../tpl/admin-fscheck.tpl.php:17
411
+ #, php-format
412
  msgid "File system permissions for %s"
413
  msgstr "Dateisystem-Rechte für %s"
414
 
416
  msgid "Back"
417
  msgstr "Zurück"
418
 
419
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:96
420
  msgid "Get help"
421
  msgstr "Hilfe erhalten"
422
 
441
  msgstr "Dateizugriffsrechte"
442
 
443
  #: ../tpl/admin-list.tpl.php:43
444
+ #, php-format
445
  msgid "1 language"
446
  msgid_plural "%u languages"
447
  msgstr[0] "1 Sprache"
452
  msgid "Updated"
453
  msgstr "Aktualisiert"
454
 
455
+ #: ../tpl/admin-list.tpl.php:97
456
  msgid "OK"
457
  msgstr "OK"
458
 
496
  msgid "Number of backups to keep of each file:"
497
  msgstr "Anzahl der Sicherungen pro Datei"
498
 
499
+ #: ../tpl/admin-opts.tpl.php:95
500
  msgid "Save settings"
501
  msgstr "Einstellungen speichern"
502
 
562
  msgstr "Hilfe"
563
 
564
  #: ../tpl/admin-poinit.tpl.php:21
565
+ #, php-format
566
  msgid "Initialize new translations in %s"
567
  msgstr "Initialisiere neue Übersetzung in %s"
568
 
575
  msgid "or enter any language code"
576
  msgstr "oder trage den Sprach-Code ein"
577
 
578
+ #: ../tpl/admin-poinit.tpl.php:68
579
  msgctxt "Submit button"
580
  msgid "Start translating"
581
  msgstr "Starte Übersetzung"
585
  msgstr "Neue Version verfügbar"
586
 
587
  #: ../tpl/admin-root.tpl.php:21
588
+ #, php-format
589
  msgid "Upgrade to version %s of Loco Translate"
590
  msgstr "Bitte upgrade Loco Translate auf Version %s"
591
 
languages/loco-translate-nl_BE.mo CHANGED
Binary file
languages/loco-translate-nl_BE.po CHANGED
@@ -3,8 +3,8 @@ 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: Wed Mar 12 2014 10:15:01 GMT+0000 (GMT)\n"
7
- "Last-Translator: Loco <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Dutch (Belgium)\n"
10
  "Plural-Forms: nplurals=2; plural=n != 1\n"
@@ -14,11 +14,11 @@ msgstr ""
14
  "X-Poedit-SourceCharset: UTF-8\n"
15
  "X-Loco-Target-Locale: nl_BE\n"
16
  "X-Generator: Loco - https://localise.biz/\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-Poedit-Basepath: .\n"
23
  "X-Poedit-SearchPath-0: .."
24
 
@@ -30,71 +30,83 @@ msgstr ""
30
  msgid "Settings saved"
31
  msgstr ""
32
 
33
- #: ../lib/loco-admin.php:317
 
34
  msgid "PO file used as template. This will be renamed to %s on first save"
35
  msgstr ""
36
 
37
- #: ../lib/loco-admin.php:686
 
38
  msgid "Empty or invalid %s file"
39
  msgstr ""
40
 
41
- #: ../lib/loco-admin.php:690
 
42
  msgid "%s file has no header"
43
  msgstr ""
44
 
45
- #: ../lib/loco-admin.php:927
46
  msgid "Failed to compile MO file with built-in compiler"
47
  msgstr ""
48
 
49
- #: ../lib/loco-admin.php:972
50
  msgid "Translation options"
51
  msgstr ""
52
 
53
- #: ../lib/loco-admin.php:979
54
  msgid "Loco Translate"
55
  msgstr ""
56
 
57
- #: ../lib/loco-admin.php:1003 ../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
 
 
58
  msgid "Settings"
59
  msgstr ""
60
 
61
- #: ../lib/loco-admin.php:1027
62
  msgid "File download failed"
63
  msgstr ""
64
 
65
- #: ../lib/loco-packages.php:384
66
  msgid "Some files missing"
67
  msgstr ""
68
 
69
- #: ../lib/loco-packages.php:408
70
  msgid "POT file not writable"
71
  msgstr ""
72
 
73
- #: ../lib/loco-packages.php:413
74
  msgid "PO file not writable"
75
  msgstr ""
76
 
77
- #: ../lib/loco-packages.php:415
78
  msgid "MO file not writable"
79
  msgstr ""
80
 
81
- #: ../lib/loco-packages.php:415
82
  msgid "MO file not found"
83
  msgstr ""
84
 
85
- #: ../lib/loco-packages.php:426
86
  msgid "Folder not writable"
87
  msgstr ""
88
 
 
 
 
 
89
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
 
90
  msgid "Failed to compile MO file with %s, check your settings"
91
  msgstr ""
92
 
93
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
 
94
  msgid "Package not found called %s"
95
  msgstr ""
96
 
97
  #: ../php/loco-posave.php:58
 
98
  msgid ""
99
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
100
  "backups in settings"
@@ -112,51 +124,84 @@ msgstr ""
112
  msgid "Failed to write MO file"
113
  msgstr ""
114
 
115
- #: ../pub/js/lang/dummy.php:8
116
- msgid "Unknown error"
117
  msgstr ""
118
 
119
  #: ../pub/js/lang/dummy.php:9
120
- msgid "PO file saved"
121
  msgstr ""
122
 
123
  #: ../pub/js/lang/dummy.php:10
124
- msgid "and MO file compiled"
125
  msgstr ""
126
 
127
  #: ../pub/js/lang/dummy.php:11
128
- msgid "Merged from %s"
129
  msgstr ""
130
 
131
  #: ../pub/js/lang/dummy.php:12
132
- msgid "Merged from source code"
 
133
  msgstr ""
134
 
135
  #: ../pub/js/lang/dummy.php:13
136
- msgid "Already up to date with %s"
137
  msgstr ""
138
 
139
  #: ../pub/js/lang/dummy.php:14
140
- msgid "Already up to date with source code"
 
141
  msgstr ""
142
 
143
  #: ../pub/js/lang/dummy.php:15
 
 
 
 
 
144
  msgid "1 new string added"
145
  msgid_plural "%s new strings added"
146
  msgstr[0] ""
147
  msgstr[1] ""
148
 
149
- #: ../pub/js/lang/dummy.php:16
 
150
  msgid "1 obsolete string removed"
151
  msgid_plural "%s obsolete strings removed"
152
  msgstr[0] ""
153
  msgstr[1] ""
154
 
155
- #: ../pub/js/lang/dummy.php:17
156
  msgid "Your changes will be lost if you continue without saving"
157
  msgstr ""
158
 
159
- #: ../pub/js/lang/dummy.php:23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  msgid "Translation"
161
  msgstr ""
162
 
@@ -165,6 +210,7 @@ msgid "File check"
165
  msgstr ""
166
 
167
  #: ../tpl/admin-fscheck.tpl.php:17
 
168
  msgid "File system permissions for %s"
169
  msgstr ""
170
 
@@ -172,11 +218,11 @@ msgstr ""
172
  msgid "Back"
173
  msgstr ""
174
 
175
- #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:80
176
  msgid "Get help"
177
  msgstr ""
178
 
179
- #: ../tpl/admin-list.tpl.php:98
180
  msgid "OK"
181
  msgstr ""
182
 
@@ -216,7 +262,15 @@ msgstr ""
216
  msgid "Number of backups to keep of each file:"
217
  msgstr ""
218
 
219
- #: ../tpl/admin-opts.tpl.php:79
 
 
 
 
 
 
 
 
220
  msgid "Save settings"
221
  msgstr ""
222
 
@@ -225,128 +279,149 @@ msgctxt "Dropdown label"
225
  msgid "Switch to..."
226
  msgstr ""
227
 
 
 
 
 
 
 
 
 
 
 
 
228
  #: ../tpl/admin-root.tpl.php:66
229
  msgctxt "Package list header"
230
  msgid "Core"
231
  msgstr ""
232
 
233
  #. Translators: Bold text label in admin error messages
234
- #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
235
  msgctxt "Message label"
236
  msgid "Error"
237
  msgstr "Fout"
238
 
239
- #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:6
240
  msgctxt "Message label"
241
  msgid "Warning"
242
  msgstr "Waarschuwing"
243
 
244
- #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:5
245
  msgctxt "Message label"
246
  msgid "OK"
247
  msgstr "OK"
248
 
249
- #: ../lib/loco-admin.php:132
250
  msgid "New PO file"
251
  msgstr "Nieuw PO-bestand"
252
 
253
- #: ../lib/loco-admin.php:244
254
  msgid "You must specify a valid locale for a new PO file"
255
  msgstr "Specifieer een geldige locale voor een nieuw PO-bestand"
256
 
257
- #: ../lib/loco-admin.php:269 ../lib/loco-admin.php:371
258
  msgid "No translatable strings found"
259
  msgstr "Geen vertaalbare teksten gevonden"
260
 
261
- #: ../lib/loco-admin.php:269
262
  msgid "Cannot create a PO file."
263
  msgstr "Kan geen PO-bestand aanmaken"
264
 
265
- #: ../lib/loco-admin.php:276
 
266
  msgid "PO file already exists with locale %s"
267
  msgstr "PO-bestand bestaat al in locale %s"
268
 
269
- #: ../lib/loco-admin.php:341
270
  msgid ""
271
- "File cannot be created automatically. Fix the file permissions or use Download "
272
- "instead of Save"
273
  msgstr ""
274
- "Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik "
275
- "download en bewaar."
276
 
277
- #: ../lib/loco-admin.php:350 ../lib/loco-admin.php:359
 
278
  msgid "%s file is empty"
279
  msgstr "Het bestand %s is leeg"
280
 
281
- #: ../lib/loco-admin.php:351 ../lib/loco-admin.php:366
282
  msgid "Run Sync to update from source code"
283
  msgstr "Voer Sync uit om de broncode up te daten"
284
 
285
- #: ../lib/loco-admin.php:355
286
  msgid "No strings could be extracted from source code"
287
  msgstr "Er kon geen tekst uit de broncode gehaald worden"
288
 
289
- #: ../lib/loco-admin.php:362
 
290
  msgid "Run Sync to update from %s"
291
  msgstr "Gebruik Sync om vanuit %s up te daten"
292
 
293
- #: ../lib/loco-admin.php:381
294
  msgid "Source code has been modified, run Sync to update POT"
295
  msgstr "Broncode is veranderd. Gebruik Sync om POT up te daten"
296
 
297
- #: ../lib/loco-admin.php:385
298
  msgid "POT has been modified since PO file was saved, run Sync to update"
299
- msgstr "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten"
 
 
300
 
301
- #: ../lib/loco-admin.php:472
302
  msgid "Bad file path"
303
  msgstr "Foute bestandslocatie"
304
 
305
- #: ../lib/loco-admin.php:821
306
  msgctxt "Add button"
307
  msgid "New template"
308
  msgstr "Nieuw sjabloon"
309
 
310
- #: ../lib/loco-admin.php:840
311
  msgctxt "Add button"
312
  msgid "New language"
313
  msgstr "Nieuwe taal"
314
 
315
- #: ../lib/loco-admin.php:879
 
316
  msgid "%s%% translated"
317
  msgstr "%s%% vertaald"
318
 
319
- #: ../lib/loco-admin.php:879
 
320
  msgid "1 string"
321
  msgid_plural "%s strings"
322
  msgstr[0] "1 te vertalen tekst"
323
  msgstr[1] "%s te vertalen teksten"
324
 
325
- #: ../lib/loco-admin.php:882
 
326
  msgid "%s fuzzy"
327
  msgstr "%s onzeker"
328
 
329
- #: ../lib/loco-admin.php:885
 
330
  msgid "%s untranslated"
331
  msgstr "%s onvertaald"
332
 
333
- #: ../lib/loco-admin.php:970 ../tpl/admin-nav.tpl.php:21
334
  msgid "Loco, Translation Management"
335
  msgstr "Loco, vertalingsbeheer"
336
 
337
- #: ../lib/loco-admin.php:971 ../lib/loco-admin.php:1002
338
  msgid "Manage translations"
339
  msgstr "Beheer vertalingen"
340
 
341
- #: ../lib/loco-locales.php:70
342
  msgid "Unknown language"
343
  msgstr "Onbekende taal"
344
 
345
- #: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
346
  msgid "Some files not writable"
347
  msgstr "Sommige bestanden hebben geen schrijfrechten"
348
 
349
- #: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
 
350
  msgid "\"%s\" folder not writable"
351
  msgstr "Map \"%s\" heeft geen schrijfrechten"
352
 
@@ -359,34 +434,38 @@ msgid "Invalid data posted to server"
359
  msgstr "Ongeldige gegevens op server"
360
 
361
  #: ../php/loco-posave.php:66
 
362
  msgid ""
363
- "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
364
- "it manually."
365
  msgstr ""
366
  "Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak "
367
  "het zelf aan."
368
 
369
  #: ../php/loco-posave.php:69
 
370
  msgid ""
371
- "Web server cannot create files in the \"%s\" directory. Fix file permissions or "
372
- "use the download function."
373
  msgstr ""
374
- "Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik "
375
- "de downloadfunctie."
376
 
377
  #: ../php/loco-posave.php:81
 
378
  msgid ""
379
- "%s file is not writable by the web server. Fix file permissions or download and "
380
- "copy to \"%s/%s\"."
381
  msgstr ""
382
  "Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
383
  "schrijfrechten of download en kopieer naar \"%s/%s\"."
384
 
385
- #: ../php/loco-posync.php:53
386
  msgid "No strings could be extracted from source files"
387
  msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
388
 
389
- #: ../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
 
390
  msgid "Packages"
391
  msgstr "Pakketten"
392
 
@@ -411,6 +490,7 @@ msgid "File permissions"
411
  msgstr "Bestandsrechten"
412
 
413
  #: ../tpl/admin-list.tpl.php:43
 
414
  msgid "1 language"
415
  msgid_plural "%u languages"
416
  msgstr[0] "1 taal"
@@ -482,6 +562,7 @@ msgid "Help"
482
  msgstr "Help"
483
 
484
  #: ../tpl/admin-poinit.tpl.php:21
 
485
  msgid "Initialize new translations in %s"
486
  msgstr "Start nieuwe vertalingen in %s"
487
 
@@ -494,7 +575,7 @@ msgctxt "Form label"
494
  msgid "or enter any language code"
495
  msgstr "of geef een taalcode op"
496
 
497
- #: ../tpl/admin-poinit.tpl.php:51
498
  msgctxt "Submit button"
499
  msgid "Start translating"
500
  msgstr "Start vertalen"
@@ -504,6 +585,7 @@ msgid "New version available"
504
  msgstr "Nieuwe versie beschikbaar"
505
 
506
  #: ../tpl/admin-root.tpl.php:21
 
507
  msgid "Upgrade to version %s of Loco Translate"
508
  msgstr "Loco Translate upgraden naar versie %s"
509
 
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: Mon Jun 09 2014 17:13:31 GMT+0100 (BST)\n"
7
+ "Last-Translator: Tim <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Dutch (Belgium)\n"
10
  "Plural-Forms: nplurals=2; plural=n != 1\n"
14
  "X-Poedit-SourceCharset: UTF-8\n"
15
  "X-Loco-Target-Locale: nl_BE\n"
16
  "X-Generator: Loco - https://localise.biz/\n"
17
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
18
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
19
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
20
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
21
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
22
  "X-Poedit-Basepath: .\n"
23
  "X-Poedit-SearchPath-0: .."
24
 
30
  msgid "Settings saved"
31
  msgstr ""
32
 
33
+ #: ../lib/loco-admin.php:313
34
+ #, php-format
35
  msgid "PO file used as template. This will be renamed to %s on first save"
36
  msgstr ""
37
 
38
+ #: ../lib/loco-admin.php:692
39
+ #, php-format
40
  msgid "Empty or invalid %s file"
41
  msgstr ""
42
 
43
+ #: ../lib/loco-admin.php:696
44
+ #, php-format
45
  msgid "%s file has no header"
46
  msgstr ""
47
 
48
+ #: ../lib/loco-admin.php:934
49
  msgid "Failed to compile MO file with built-in compiler"
50
  msgstr ""
51
 
52
+ #: ../lib/loco-admin.php:979
53
  msgid "Translation options"
54
  msgstr ""
55
 
56
+ #: ../lib/loco-admin.php:986
57
  msgid "Loco Translate"
58
  msgstr ""
59
 
60
+ #: ../lib/loco-admin.php:1010 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.
61
+ #: tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ..
62
+ #: tpl/admin-root.tpl.php:7
63
  msgid "Settings"
64
  msgstr ""
65
 
66
+ #: ../lib/loco-admin.php:1034
67
  msgid "File download failed"
68
  msgstr ""
69
 
70
+ #: ../lib/loco-packages.php:433
71
  msgid "Some files missing"
72
  msgstr ""
73
 
74
+ #: ../lib/loco-packages.php:464
75
  msgid "POT file not writable"
76
  msgstr ""
77
 
78
+ #: ../lib/loco-packages.php:469
79
  msgid "PO file not writable"
80
  msgstr ""
81
 
82
+ #: ../lib/loco-packages.php:471
83
  msgid "MO file not writable"
84
  msgstr ""
85
 
86
+ #: ../lib/loco-packages.php:471
87
  msgid "MO file not found"
88
  msgstr ""
89
 
90
+ #: ../lib/loco-packages.php:476
91
  msgid "Folder not writable"
92
  msgstr ""
93
 
94
+ #: ../lib/loco-packages.php:476
95
+ msgid "Folder not found"
96
+ msgstr ""
97
+
98
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
99
+ #, php-format
100
  msgid "Failed to compile MO file with %s, check your settings"
101
  msgstr ""
102
 
103
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
104
+ #, php-format
105
  msgid "Package not found called %s"
106
  msgstr ""
107
 
108
  #: ../php/loco-posave.php:58
109
+ #, php-format
110
  msgid ""
111
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
112
  "backups in settings"
124
  msgid "Failed to write MO file"
125
  msgstr ""
126
 
127
+ #: ../php/loco-posync.php:47
128
+ msgid "No source files in this package, nothing to sync"
129
  msgstr ""
130
 
131
  #: ../pub/js/lang/dummy.php:9
132
+ msgid "Unknown error"
133
  msgstr ""
134
 
135
  #: ../pub/js/lang/dummy.php:10
136
+ msgid "PO file saved"
137
  msgstr ""
138
 
139
  #: ../pub/js/lang/dummy.php:11
140
+ msgid "and MO file compiled"
141
  msgstr ""
142
 
143
  #: ../pub/js/lang/dummy.php:12
144
+ #, php-format
145
+ msgid "Merged from %s"
146
  msgstr ""
147
 
148
  #: ../pub/js/lang/dummy.php:13
149
+ msgid "Merged from source code"
150
  msgstr ""
151
 
152
  #: ../pub/js/lang/dummy.php:14
153
+ #, php-format
154
+ msgid "Already up to date with %s"
155
  msgstr ""
156
 
157
  #: ../pub/js/lang/dummy.php:15
158
+ msgid "Already up to date with source code"
159
+ msgstr ""
160
+
161
+ #: ../pub/js/lang/dummy.php:16
162
+ #, php-format
163
  msgid "1 new string added"
164
  msgid_plural "%s new strings added"
165
  msgstr[0] ""
166
  msgstr[1] ""
167
 
168
+ #: ../pub/js/lang/dummy.php:17
169
+ #, php-format
170
  msgid "1 obsolete string removed"
171
  msgid_plural "%s obsolete strings removed"
172
  msgstr[0] ""
173
  msgstr[1] ""
174
 
175
+ #: ../pub/js/lang/dummy.php:18
176
  msgid "Your changes will be lost if you continue without saving"
177
  msgstr ""
178
 
179
+ #. label for the window pane holding native translation
180
+ #: ../pub/js/lang/dummy.php:25
181
+ msgctxt "Editor pane"
182
+ msgid "Source text"
183
+ msgstr ""
184
+
185
+ #. where %s is the language, e.g French translation
186
+ #: ../pub/js/lang/dummy.php:27
187
+ #, php-format
188
+ msgctxt "Editor pane"
189
+ msgid "%s translation"
190
+ msgstr ""
191
+
192
+ #. label for the window pane holding translator comments
193
+ #: ../pub/js/lang/dummy.php:29
194
+ msgctxt "Editor pane"
195
+ msgid "Comments"
196
+ msgstr ""
197
+
198
+ #. label for the window pane holding message context
199
+ #: ../pub/js/lang/dummy.php:31
200
+ msgctxt "Editor pane"
201
+ msgid "Context"
202
+ msgstr ""
203
+
204
+ #: ../pub/js/lang/dummy.php:37
205
  msgid "Translation"
206
  msgstr ""
207
 
210
  msgstr ""
211
 
212
  #: ../tpl/admin-fscheck.tpl.php:17
213
+ #, php-format
214
  msgid "File system permissions for %s"
215
  msgstr ""
216
 
218
  msgid "Back"
219
  msgstr ""
220
 
221
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:96
222
  msgid "Get help"
223
  msgstr ""
224
 
225
+ #: ../tpl/admin-list.tpl.php:97
226
  msgid "OK"
227
  msgstr ""
228
 
262
  msgid "Number of backups to keep of each file:"
263
  msgstr ""
264
 
265
+ #: ../tpl/admin-opts.tpl.php:77 ../tpl/admin-opts.tpl.php:81
266
+ msgid "Experimental features"
267
+ msgstr ""
268
+
269
+ #: ../tpl/admin-opts.tpl.php:86
270
+ msgid "Enable Wordpress core translations"
271
+ msgstr ""
272
+
273
+ #: ../tpl/admin-opts.tpl.php:95
274
  msgid "Save settings"
275
  msgstr ""
276
 
279
  msgid "Switch to..."
280
  msgstr ""
281
 
282
+ #: ../tpl/admin-poinit.tpl.php:58
283
+ #, php-format
284
+ msgctxt "Form label"
285
+ msgid "create in <code>%s</code>"
286
+ msgstr ""
287
+
288
+ #: ../tpl/admin-poinit.tpl.php:63
289
+ msgctxt "Form label"
290
+ msgid "create in global languages directory"
291
+ msgstr ""
292
+
293
  #: ../tpl/admin-root.tpl.php:66
294
  msgctxt "Package list header"
295
  msgid "Core"
296
  msgstr ""
297
 
298
  #. Translators: Bold text label in admin error messages
299
+ #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:8
300
  msgctxt "Message label"
301
  msgid "Error"
302
  msgstr "Fout"
303
 
304
+ #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:7
305
  msgctxt "Message label"
306
  msgid "Warning"
307
  msgstr "Waarschuwing"
308
 
309
+ #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:6
310
  msgctxt "Message label"
311
  msgid "OK"
312
  msgstr "OK"
313
 
314
+ #: ../lib/loco-admin.php:133
315
  msgid "New PO file"
316
  msgstr "Nieuw PO-bestand"
317
 
318
+ #: ../lib/loco-admin.php:240
319
  msgid "You must specify a valid locale for a new PO file"
320
  msgstr "Specifieer een geldige locale voor een nieuw PO-bestand"
321
 
322
+ #: ../lib/loco-admin.php:265 ../lib/loco-admin.php:367
323
  msgid "No translatable strings found"
324
  msgstr "Geen vertaalbare teksten gevonden"
325
 
326
+ #: ../lib/loco-admin.php:265
327
  msgid "Cannot create a PO file."
328
  msgstr "Kan geen PO-bestand aanmaken"
329
 
330
+ #: ../lib/loco-admin.php:272
331
+ #, php-format
332
  msgid "PO file already exists with locale %s"
333
  msgstr "PO-bestand bestaat al in locale %s"
334
 
335
+ #: ../lib/loco-admin.php:337
336
  msgid ""
337
+ "File cannot be created automatically. Fix the file permissions or use "
338
+ "Download instead of Save"
339
  msgstr ""
340
+ "Bestand kan niet automatisch aangemaakt worden. Verander de rechten of "
341
+ "gebruik download en bewaar."
342
 
343
+ #: ../lib/loco-admin.php:346 ../lib/loco-admin.php:355
344
+ #, php-format
345
  msgid "%s file is empty"
346
  msgstr "Het bestand %s is leeg"
347
 
348
+ #: ../lib/loco-admin.php:347 ../lib/loco-admin.php:362
349
  msgid "Run Sync to update from source code"
350
  msgstr "Voer Sync uit om de broncode up te daten"
351
 
352
+ #: ../lib/loco-admin.php:351
353
  msgid "No strings could be extracted from source code"
354
  msgstr "Er kon geen tekst uit de broncode gehaald worden"
355
 
356
+ #: ../lib/loco-admin.php:358
357
+ #, php-format
358
  msgid "Run Sync to update from %s"
359
  msgstr "Gebruik Sync om vanuit %s up te daten"
360
 
361
+ #: ../lib/loco-admin.php:377
362
  msgid "Source code has been modified, run Sync to update POT"
363
  msgstr "Broncode is veranderd. Gebruik Sync om POT up te daten"
364
 
365
+ #: ../lib/loco-admin.php:381
366
  msgid "POT has been modified since PO file was saved, run Sync to update"
367
+ msgstr ""
368
+ "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te "
369
+ "daten"
370
 
371
+ #: ../lib/loco-admin.php:468
372
  msgid "Bad file path"
373
  msgstr "Foute bestandslocatie"
374
 
375
+ #: ../lib/loco-admin.php:828
376
  msgctxt "Add button"
377
  msgid "New template"
378
  msgstr "Nieuw sjabloon"
379
 
380
+ #: ../lib/loco-admin.php:847
381
  msgctxt "Add button"
382
  msgid "New language"
383
  msgstr "Nieuwe taal"
384
 
385
+ #: ../lib/loco-admin.php:886
386
+ #, php-format
387
  msgid "%s%% translated"
388
  msgstr "%s%% vertaald"
389
 
390
+ #: ../lib/loco-admin.php:886
391
+ #, php-format
392
  msgid "1 string"
393
  msgid_plural "%s strings"
394
  msgstr[0] "1 te vertalen tekst"
395
  msgstr[1] "%s te vertalen teksten"
396
 
397
+ #: ../lib/loco-admin.php:889
398
+ #, php-format
399
  msgid "%s fuzzy"
400
  msgstr "%s onzeker"
401
 
402
+ #: ../lib/loco-admin.php:892
403
+ #, php-format
404
  msgid "%s untranslated"
405
  msgstr "%s onvertaald"
406
 
407
+ #: ../lib/loco-admin.php:977 ../tpl/admin-nav.tpl.php:21
408
  msgid "Loco, Translation Management"
409
  msgstr "Loco, vertalingsbeheer"
410
 
411
+ #: ../lib/loco-admin.php:978 ../lib/loco-admin.php:1009
412
  msgid "Manage translations"
413
  msgstr "Beheer vertalingen"
414
 
415
+ #: ../lib/loco-locales.php:65
416
  msgid "Unknown language"
417
  msgstr "Onbekende taal"
418
 
419
+ #: ../lib/loco-packages.php:423 ../lib/loco-packages.php:430
420
  msgid "Some files not writable"
421
  msgstr "Sommige bestanden hebben geen schrijfrechten"
422
 
423
+ #: ../lib/loco-packages.php:439 ../lib/loco-packages.php:443
424
+ #, php-format
425
  msgid "\"%s\" folder not writable"
426
  msgstr "Map \"%s\" heeft geen schrijfrechten"
427
 
434
  msgstr "Ongeldige gegevens op server"
435
 
436
  #: ../php/loco-posave.php:66
437
+ #, php-format
438
  msgid ""
439
+ "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or "
440
+ "create it manually."
441
  msgstr ""
442
  "Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak "
443
  "het zelf aan."
444
 
445
  #: ../php/loco-posave.php:69
446
+ #, php-format
447
  msgid ""
448
+ "Web server cannot create files in the \"%s\" directory. Fix file permissions "
449
+ "or use the download function."
450
  msgstr ""
451
+ "Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of "
452
+ "gebruik de downloadfunctie."
453
 
454
  #: ../php/loco-posave.php:81
455
+ #, php-format
456
  msgid ""
457
+ "%s file is not writable by the web server. Fix file permissions or download "
458
+ "and copy to \"%s/%s\"."
459
  msgstr ""
460
  "Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
461
  "schrijfrechten of download en kopieer naar \"%s/%s\"."
462
 
463
+ #: ../php/loco-posync.php:57
464
  msgid "No strings could be extracted from source files"
465
  msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
466
 
467
+ #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.
468
+ #: tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
469
  msgid "Packages"
470
  msgstr "Pakketten"
471
 
490
  msgstr "Bestandsrechten"
491
 
492
  #: ../tpl/admin-list.tpl.php:43
493
+ #, php-format
494
  msgid "1 language"
495
  msgid_plural "%u languages"
496
  msgstr[0] "1 taal"
562
  msgstr "Help"
563
 
564
  #: ../tpl/admin-poinit.tpl.php:21
565
+ #, php-format
566
  msgid "Initialize new translations in %s"
567
  msgstr "Start nieuwe vertalingen in %s"
568
 
575
  msgid "or enter any language code"
576
  msgstr "of geef een taalcode op"
577
 
578
+ #: ../tpl/admin-poinit.tpl.php:68
579
  msgctxt "Submit button"
580
  msgid "Start translating"
581
  msgstr "Start vertalen"
585
  msgstr "Nieuwe versie beschikbaar"
586
 
587
  #: ../tpl/admin-root.tpl.php:21
588
+ #, php-format
589
  msgid "Upgrade to version %s of Loco Translate"
590
  msgstr "Loco Translate upgraden naar versie %s"
591
 
languages/loco-translate-nl_NL.mo CHANGED
Binary file
languages/loco-translate-nl_NL.po CHANGED
@@ -3,8 +3,8 @@ 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: Wed Mar 12 2014 10:15:04 GMT+0000 (GMT)\n"
7
- "Last-Translator: Loco <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Dutch\n"
10
  "Plural-Forms: nplurals=2; plural=n != 1\n"
@@ -14,11 +14,11 @@ msgstr ""
14
  "X-Poedit-SourceCharset: UTF-8\n"
15
  "X-Loco-Target-Locale: nl_NL\n"
16
  "X-Generator: Loco - https://localise.biz/\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-Poedit-Basepath: .\n"
23
  "X-Poedit-SearchPath-0: .."
24
 
@@ -30,71 +30,83 @@ msgstr ""
30
  msgid "Settings saved"
31
  msgstr ""
32
 
33
- #: ../lib/loco-admin.php:317
 
34
  msgid "PO file used as template. This will be renamed to %s on first save"
35
  msgstr ""
36
 
37
- #: ../lib/loco-admin.php:686
 
38
  msgid "Empty or invalid %s file"
39
  msgstr ""
40
 
41
- #: ../lib/loco-admin.php:690
 
42
  msgid "%s file has no header"
43
  msgstr ""
44
 
45
- #: ../lib/loco-admin.php:927
46
  msgid "Failed to compile MO file with built-in compiler"
47
  msgstr ""
48
 
49
- #: ../lib/loco-admin.php:972
50
  msgid "Translation options"
51
  msgstr ""
52
 
53
- #: ../lib/loco-admin.php:979
54
  msgid "Loco Translate"
55
  msgstr ""
56
 
57
- #: ../lib/loco-admin.php:1003 ../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
 
 
58
  msgid "Settings"
59
  msgstr ""
60
 
61
- #: ../lib/loco-admin.php:1027
62
  msgid "File download failed"
63
  msgstr ""
64
 
65
- #: ../lib/loco-packages.php:384
66
  msgid "Some files missing"
67
  msgstr ""
68
 
69
- #: ../lib/loco-packages.php:408
70
  msgid "POT file not writable"
71
  msgstr ""
72
 
73
- #: ../lib/loco-packages.php:413
74
  msgid "PO file not writable"
75
  msgstr ""
76
 
77
- #: ../lib/loco-packages.php:415
78
  msgid "MO file not writable"
79
  msgstr ""
80
 
81
- #: ../lib/loco-packages.php:415
82
  msgid "MO file not found"
83
  msgstr ""
84
 
85
- #: ../lib/loco-packages.php:426
86
  msgid "Folder not writable"
87
  msgstr ""
88
 
 
 
 
 
89
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
 
90
  msgid "Failed to compile MO file with %s, check your settings"
91
  msgstr ""
92
 
93
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
 
94
  msgid "Package not found called %s"
95
  msgstr ""
96
 
97
  #: ../php/loco-posave.php:58
 
98
  msgid ""
99
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
100
  "backups in settings"
@@ -112,51 +124,84 @@ msgstr ""
112
  msgid "Failed to write MO file"
113
  msgstr ""
114
 
115
- #: ../pub/js/lang/dummy.php:8
116
- msgid "Unknown error"
117
  msgstr ""
118
 
119
  #: ../pub/js/lang/dummy.php:9
120
- msgid "PO file saved"
121
  msgstr ""
122
 
123
  #: ../pub/js/lang/dummy.php:10
124
- msgid "and MO file compiled"
125
  msgstr ""
126
 
127
  #: ../pub/js/lang/dummy.php:11
128
- msgid "Merged from %s"
129
  msgstr ""
130
 
131
  #: ../pub/js/lang/dummy.php:12
132
- msgid "Merged from source code"
 
133
  msgstr ""
134
 
135
  #: ../pub/js/lang/dummy.php:13
136
- msgid "Already up to date with %s"
137
  msgstr ""
138
 
139
  #: ../pub/js/lang/dummy.php:14
140
- msgid "Already up to date with source code"
 
141
  msgstr ""
142
 
143
  #: ../pub/js/lang/dummy.php:15
 
 
 
 
 
144
  msgid "1 new string added"
145
  msgid_plural "%s new strings added"
146
  msgstr[0] ""
147
  msgstr[1] ""
148
 
149
- #: ../pub/js/lang/dummy.php:16
 
150
  msgid "1 obsolete string removed"
151
  msgid_plural "%s obsolete strings removed"
152
  msgstr[0] ""
153
  msgstr[1] ""
154
 
155
- #: ../pub/js/lang/dummy.php:17
156
  msgid "Your changes will be lost if you continue without saving"
157
  msgstr ""
158
 
159
- #: ../pub/js/lang/dummy.php:23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  msgid "Translation"
161
  msgstr ""
162
 
@@ -165,6 +210,7 @@ msgid "File check"
165
  msgstr ""
166
 
167
  #: ../tpl/admin-fscheck.tpl.php:17
 
168
  msgid "File system permissions for %s"
169
  msgstr ""
170
 
@@ -172,11 +218,11 @@ msgstr ""
172
  msgid "Back"
173
  msgstr ""
174
 
175
- #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:80
176
  msgid "Get help"
177
  msgstr ""
178
 
179
- #: ../tpl/admin-list.tpl.php:98
180
  msgid "OK"
181
  msgstr ""
182
 
@@ -216,7 +262,15 @@ msgstr ""
216
  msgid "Number of backups to keep of each file:"
217
  msgstr ""
218
 
219
- #: ../tpl/admin-opts.tpl.php:79
 
 
 
 
 
 
 
 
220
  msgid "Save settings"
221
  msgstr ""
222
 
@@ -225,128 +279,149 @@ msgctxt "Dropdown label"
225
  msgid "Switch to..."
226
  msgstr ""
227
 
 
 
 
 
 
 
 
 
 
 
 
228
  #: ../tpl/admin-root.tpl.php:66
229
  msgctxt "Package list header"
230
  msgid "Core"
231
  msgstr ""
232
 
233
  #. Translators: Bold text label in admin error messages
234
- #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
235
  msgctxt "Message label"
236
  msgid "Error"
237
  msgstr "Fout"
238
 
239
- #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:6
240
  msgctxt "Message label"
241
  msgid "Warning"
242
  msgstr "Waarschuwing"
243
 
244
- #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:5
245
  msgctxt "Message label"
246
  msgid "OK"
247
  msgstr "OK"
248
 
249
- #: ../lib/loco-admin.php:132
250
  msgid "New PO file"
251
  msgstr "Nieuw PO-bestand"
252
 
253
- #: ../lib/loco-admin.php:244
254
  msgid "You must specify a valid locale for a new PO file"
255
  msgstr "Specifieer een geldige locale voor een nieuw PO-bestand"
256
 
257
- #: ../lib/loco-admin.php:269 ../lib/loco-admin.php:371
258
  msgid "No translatable strings found"
259
  msgstr "Geen vertaalbare teksten gevonden"
260
 
261
- #: ../lib/loco-admin.php:269
262
  msgid "Cannot create a PO file."
263
  msgstr "Kan geen PO-bestand aanmaken"
264
 
265
- #: ../lib/loco-admin.php:276
 
266
  msgid "PO file already exists with locale %s"
267
  msgstr "PO-bestand bestaat al in locale %s"
268
 
269
- #: ../lib/loco-admin.php:341
270
  msgid ""
271
- "File cannot be created automatically. Fix the file permissions or use Download "
272
- "instead of Save"
273
  msgstr ""
274
- "Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik "
275
- "download en bewaar."
276
 
277
- #: ../lib/loco-admin.php:350 ../lib/loco-admin.php:359
 
278
  msgid "%s file is empty"
279
  msgstr "Het bestand %s is leeg"
280
 
281
- #: ../lib/loco-admin.php:351 ../lib/loco-admin.php:366
282
  msgid "Run Sync to update from source code"
283
  msgstr "Voer Sync uit om de broncode up te daten"
284
 
285
- #: ../lib/loco-admin.php:355
286
  msgid "No strings could be extracted from source code"
287
  msgstr "Er kon geen tekst uit de broncode gehaald worden"
288
 
289
- #: ../lib/loco-admin.php:362
 
290
  msgid "Run Sync to update from %s"
291
  msgstr "Gebruik Sync om vanuit %s up te daten"
292
 
293
- #: ../lib/loco-admin.php:381
294
  msgid "Source code has been modified, run Sync to update POT"
295
  msgstr "Broncode is veranderd. Gebruik Sync om POT up te daten"
296
 
297
- #: ../lib/loco-admin.php:385
298
  msgid "POT has been modified since PO file was saved, run Sync to update"
299
- msgstr "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten"
 
 
300
 
301
- #: ../lib/loco-admin.php:472
302
  msgid "Bad file path"
303
  msgstr "Foute bestandslocatie"
304
 
305
- #: ../lib/loco-admin.php:821
306
  msgctxt "Add button"
307
  msgid "New template"
308
  msgstr "Nieuw sjabloon"
309
 
310
- #: ../lib/loco-admin.php:840
311
  msgctxt "Add button"
312
  msgid "New language"
313
  msgstr "Nieuwe taal"
314
 
315
- #: ../lib/loco-admin.php:879
 
316
  msgid "%s%% translated"
317
  msgstr "%s%% vertaald"
318
 
319
- #: ../lib/loco-admin.php:879
 
320
  msgid "1 string"
321
  msgid_plural "%s strings"
322
  msgstr[0] "1 te vertalen tekst"
323
  msgstr[1] "%s te vertalen teksten"
324
 
325
- #: ../lib/loco-admin.php:882
 
326
  msgid "%s fuzzy"
327
  msgstr "%s onzeker"
328
 
329
- #: ../lib/loco-admin.php:885
 
330
  msgid "%s untranslated"
331
  msgstr "%s onvertaald"
332
 
333
- #: ../lib/loco-admin.php:970 ../tpl/admin-nav.tpl.php:21
334
  msgid "Loco, Translation Management"
335
  msgstr "Loco, vertalingsbeheer"
336
 
337
- #: ../lib/loco-admin.php:971 ../lib/loco-admin.php:1002
338
  msgid "Manage translations"
339
  msgstr "Beheer vertalingen"
340
 
341
- #: ../lib/loco-locales.php:70
342
  msgid "Unknown language"
343
  msgstr "Onbekende taal"
344
 
345
- #: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
346
  msgid "Some files not writable"
347
  msgstr "Sommige bestanden hebben geen schrijfrechten"
348
 
349
- #: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
 
350
  msgid "\"%s\" folder not writable"
351
  msgstr "Map \"%s\" heeft geen schrijfrechten"
352
 
@@ -359,34 +434,38 @@ msgid "Invalid data posted to server"
359
  msgstr "Ongeldige gegevens op server"
360
 
361
  #: ../php/loco-posave.php:66
 
362
  msgid ""
363
- "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
364
- "it manually."
365
  msgstr ""
366
  "Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak "
367
  "het zelf aan."
368
 
369
  #: ../php/loco-posave.php:69
 
370
  msgid ""
371
- "Web server cannot create files in the \"%s\" directory. Fix file permissions or "
372
- "use the download function."
373
  msgstr ""
374
- "Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik "
375
- "de downloadfunctie."
376
 
377
  #: ../php/loco-posave.php:81
 
378
  msgid ""
379
- "%s file is not writable by the web server. Fix file permissions or download and "
380
- "copy to \"%s/%s\"."
381
  msgstr ""
382
  "Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
383
  "schrijfrechten of download en kopieer naar \"%s/%s\"."
384
 
385
- #: ../php/loco-posync.php:53
386
  msgid "No strings could be extracted from source files"
387
  msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
388
 
389
- #: ../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
 
390
  msgid "Packages"
391
  msgstr "Pakketten"
392
 
@@ -411,6 +490,7 @@ msgid "File permissions"
411
  msgstr "Bestandsrechten"
412
 
413
  #: ../tpl/admin-list.tpl.php:43
 
414
  msgid "1 language"
415
  msgid_plural "%u languages"
416
  msgstr[0] "1 taal"
@@ -482,6 +562,7 @@ msgid "Help"
482
  msgstr "Help"
483
 
484
  #: ../tpl/admin-poinit.tpl.php:21
 
485
  msgid "Initialize new translations in %s"
486
  msgstr "Start nieuwe vertalingen in %s"
487
 
@@ -494,7 +575,7 @@ msgctxt "Form label"
494
  msgid "or enter any language code"
495
  msgstr "of geef een taalcode op"
496
 
497
- #: ../tpl/admin-poinit.tpl.php:51
498
  msgctxt "Submit button"
499
  msgid "Start translating"
500
  msgstr "Start vertalen"
@@ -504,6 +585,7 @@ msgid "New version available"
504
  msgstr "Nieuwe versie beschikbaar"
505
 
506
  #: ../tpl/admin-root.tpl.php:21
 
507
  msgid "Upgrade to version %s of Loco Translate"
508
  msgstr "Loco Translate upgraden naar versie %s"
509
 
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: Mon Jun 09 2014 17:13:35 GMT+0100 (BST)\n"
7
+ "Last-Translator: Tim <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Dutch\n"
10
  "Plural-Forms: nplurals=2; plural=n != 1\n"
14
  "X-Poedit-SourceCharset: UTF-8\n"
15
  "X-Loco-Target-Locale: nl_NL\n"
16
  "X-Generator: Loco - https://localise.biz/\n"
17
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
18
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
19
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
20
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
21
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
22
  "X-Poedit-Basepath: .\n"
23
  "X-Poedit-SearchPath-0: .."
24
 
30
  msgid "Settings saved"
31
  msgstr ""
32
 
33
+ #: ../lib/loco-admin.php:313
34
+ #, php-format
35
  msgid "PO file used as template. This will be renamed to %s on first save"
36
  msgstr ""
37
 
38
+ #: ../lib/loco-admin.php:692
39
+ #, php-format
40
  msgid "Empty or invalid %s file"
41
  msgstr ""
42
 
43
+ #: ../lib/loco-admin.php:696
44
+ #, php-format
45
  msgid "%s file has no header"
46
  msgstr ""
47
 
48
+ #: ../lib/loco-admin.php:934
49
  msgid "Failed to compile MO file with built-in compiler"
50
  msgstr ""
51
 
52
+ #: ../lib/loco-admin.php:979
53
  msgid "Translation options"
54
  msgstr ""
55
 
56
+ #: ../lib/loco-admin.php:986
57
  msgid "Loco Translate"
58
  msgstr ""
59
 
60
+ #: ../lib/loco-admin.php:1010 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.
61
+ #: tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ..
62
+ #: tpl/admin-root.tpl.php:7
63
  msgid "Settings"
64
  msgstr ""
65
 
66
+ #: ../lib/loco-admin.php:1034
67
  msgid "File download failed"
68
  msgstr ""
69
 
70
+ #: ../lib/loco-packages.php:433
71
  msgid "Some files missing"
72
  msgstr ""
73
 
74
+ #: ../lib/loco-packages.php:464
75
  msgid "POT file not writable"
76
  msgstr ""
77
 
78
+ #: ../lib/loco-packages.php:469
79
  msgid "PO file not writable"
80
  msgstr ""
81
 
82
+ #: ../lib/loco-packages.php:471
83
  msgid "MO file not writable"
84
  msgstr ""
85
 
86
+ #: ../lib/loco-packages.php:471
87
  msgid "MO file not found"
88
  msgstr ""
89
 
90
+ #: ../lib/loco-packages.php:476
91
  msgid "Folder not writable"
92
  msgstr ""
93
 
94
+ #: ../lib/loco-packages.php:476
95
+ msgid "Folder not found"
96
+ msgstr ""
97
+
98
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
99
+ #, php-format
100
  msgid "Failed to compile MO file with %s, check your settings"
101
  msgstr ""
102
 
103
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
104
+ #, php-format
105
  msgid "Package not found called %s"
106
  msgstr ""
107
 
108
  #: ../php/loco-posave.php:58
109
+ #, php-format
110
  msgid ""
111
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
112
  "backups in settings"
124
  msgid "Failed to write MO file"
125
  msgstr ""
126
 
127
+ #: ../php/loco-posync.php:47
128
+ msgid "No source files in this package, nothing to sync"
129
  msgstr ""
130
 
131
  #: ../pub/js/lang/dummy.php:9
132
+ msgid "Unknown error"
133
  msgstr ""
134
 
135
  #: ../pub/js/lang/dummy.php:10
136
+ msgid "PO file saved"
137
  msgstr ""
138
 
139
  #: ../pub/js/lang/dummy.php:11
140
+ msgid "and MO file compiled"
141
  msgstr ""
142
 
143
  #: ../pub/js/lang/dummy.php:12
144
+ #, php-format
145
+ msgid "Merged from %s"
146
  msgstr ""
147
 
148
  #: ../pub/js/lang/dummy.php:13
149
+ msgid "Merged from source code"
150
  msgstr ""
151
 
152
  #: ../pub/js/lang/dummy.php:14
153
+ #, php-format
154
+ msgid "Already up to date with %s"
155
  msgstr ""
156
 
157
  #: ../pub/js/lang/dummy.php:15
158
+ msgid "Already up to date with source code"
159
+ msgstr ""
160
+
161
+ #: ../pub/js/lang/dummy.php:16
162
+ #, php-format
163
  msgid "1 new string added"
164
  msgid_plural "%s new strings added"
165
  msgstr[0] ""
166
  msgstr[1] ""
167
 
168
+ #: ../pub/js/lang/dummy.php:17
169
+ #, php-format
170
  msgid "1 obsolete string removed"
171
  msgid_plural "%s obsolete strings removed"
172
  msgstr[0] ""
173
  msgstr[1] ""
174
 
175
+ #: ../pub/js/lang/dummy.php:18
176
  msgid "Your changes will be lost if you continue without saving"
177
  msgstr ""
178
 
179
+ #. label for the window pane holding native translation
180
+ #: ../pub/js/lang/dummy.php:25
181
+ msgctxt "Editor pane"
182
+ msgid "Source text"
183
+ msgstr ""
184
+
185
+ #. where %s is the language, e.g French translation
186
+ #: ../pub/js/lang/dummy.php:27
187
+ #, php-format
188
+ msgctxt "Editor pane"
189
+ msgid "%s translation"
190
+ msgstr ""
191
+
192
+ #. label for the window pane holding translator comments
193
+ #: ../pub/js/lang/dummy.php:29
194
+ msgctxt "Editor pane"
195
+ msgid "Comments"
196
+ msgstr ""
197
+
198
+ #. label for the window pane holding message context
199
+ #: ../pub/js/lang/dummy.php:31
200
+ msgctxt "Editor pane"
201
+ msgid "Context"
202
+ msgstr ""
203
+
204
+ #: ../pub/js/lang/dummy.php:37
205
  msgid "Translation"
206
  msgstr ""
207
 
210
  msgstr ""
211
 
212
  #: ../tpl/admin-fscheck.tpl.php:17
213
+ #, php-format
214
  msgid "File system permissions for %s"
215
  msgstr ""
216
 
218
  msgid "Back"
219
  msgstr ""
220
 
221
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:96
222
  msgid "Get help"
223
  msgstr ""
224
 
225
+ #: ../tpl/admin-list.tpl.php:97
226
  msgid "OK"
227
  msgstr ""
228
 
262
  msgid "Number of backups to keep of each file:"
263
  msgstr ""
264
 
265
+ #: ../tpl/admin-opts.tpl.php:77 ../tpl/admin-opts.tpl.php:81
266
+ msgid "Experimental features"
267
+ msgstr ""
268
+
269
+ #: ../tpl/admin-opts.tpl.php:86
270
+ msgid "Enable Wordpress core translations"
271
+ msgstr ""
272
+
273
+ #: ../tpl/admin-opts.tpl.php:95
274
  msgid "Save settings"
275
  msgstr ""
276
 
279
  msgid "Switch to..."
280
  msgstr ""
281
 
282
+ #: ../tpl/admin-poinit.tpl.php:58
283
+ #, php-format
284
+ msgctxt "Form label"
285
+ msgid "create in <code>%s</code>"
286
+ msgstr ""
287
+
288
+ #: ../tpl/admin-poinit.tpl.php:63
289
+ msgctxt "Form label"
290
+ msgid "create in global languages directory"
291
+ msgstr ""
292
+
293
  #: ../tpl/admin-root.tpl.php:66
294
  msgctxt "Package list header"
295
  msgid "Core"
296
  msgstr ""
297
 
298
  #. Translators: Bold text label in admin error messages
299
+ #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:8
300
  msgctxt "Message label"
301
  msgid "Error"
302
  msgstr "Fout"
303
 
304
+ #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:7
305
  msgctxt "Message label"
306
  msgid "Warning"
307
  msgstr "Waarschuwing"
308
 
309
+ #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:6
310
  msgctxt "Message label"
311
  msgid "OK"
312
  msgstr "OK"
313
 
314
+ #: ../lib/loco-admin.php:133
315
  msgid "New PO file"
316
  msgstr "Nieuw PO-bestand"
317
 
318
+ #: ../lib/loco-admin.php:240
319
  msgid "You must specify a valid locale for a new PO file"
320
  msgstr "Specifieer een geldige locale voor een nieuw PO-bestand"
321
 
322
+ #: ../lib/loco-admin.php:265 ../lib/loco-admin.php:367
323
  msgid "No translatable strings found"
324
  msgstr "Geen vertaalbare teksten gevonden"
325
 
326
+ #: ../lib/loco-admin.php:265
327
  msgid "Cannot create a PO file."
328
  msgstr "Kan geen PO-bestand aanmaken"
329
 
330
+ #: ../lib/loco-admin.php:272
331
+ #, php-format
332
  msgid "PO file already exists with locale %s"
333
  msgstr "PO-bestand bestaat al in locale %s"
334
 
335
+ #: ../lib/loco-admin.php:337
336
  msgid ""
337
+ "File cannot be created automatically. Fix the file permissions or use "
338
+ "Download instead of Save"
339
  msgstr ""
340
+ "Bestand kan niet automatisch aangemaakt worden. Verander de rechten of "
341
+ "gebruik download en bewaar."
342
 
343
+ #: ../lib/loco-admin.php:346 ../lib/loco-admin.php:355
344
+ #, php-format
345
  msgid "%s file is empty"
346
  msgstr "Het bestand %s is leeg"
347
 
348
+ #: ../lib/loco-admin.php:347 ../lib/loco-admin.php:362
349
  msgid "Run Sync to update from source code"
350
  msgstr "Voer Sync uit om de broncode up te daten"
351
 
352
+ #: ../lib/loco-admin.php:351
353
  msgid "No strings could be extracted from source code"
354
  msgstr "Er kon geen tekst uit de broncode gehaald worden"
355
 
356
+ #: ../lib/loco-admin.php:358
357
+ #, php-format
358
  msgid "Run Sync to update from %s"
359
  msgstr "Gebruik Sync om vanuit %s up te daten"
360
 
361
+ #: ../lib/loco-admin.php:377
362
  msgid "Source code has been modified, run Sync to update POT"
363
  msgstr "Broncode is veranderd. Gebruik Sync om POT up te daten"
364
 
365
+ #: ../lib/loco-admin.php:381
366
  msgid "POT has been modified since PO file was saved, run Sync to update"
367
+ msgstr ""
368
+ "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te "
369
+ "daten"
370
 
371
+ #: ../lib/loco-admin.php:468
372
  msgid "Bad file path"
373
  msgstr "Foute bestandslocatie"
374
 
375
+ #: ../lib/loco-admin.php:828
376
  msgctxt "Add button"
377
  msgid "New template"
378
  msgstr "Nieuw sjabloon"
379
 
380
+ #: ../lib/loco-admin.php:847
381
  msgctxt "Add button"
382
  msgid "New language"
383
  msgstr "Nieuwe taal"
384
 
385
+ #: ../lib/loco-admin.php:886
386
+ #, php-format
387
  msgid "%s%% translated"
388
  msgstr "%s%% vertaald"
389
 
390
+ #: ../lib/loco-admin.php:886
391
+ #, php-format
392
  msgid "1 string"
393
  msgid_plural "%s strings"
394
  msgstr[0] "1 te vertalen tekst"
395
  msgstr[1] "%s te vertalen teksten"
396
 
397
+ #: ../lib/loco-admin.php:889
398
+ #, php-format
399
  msgid "%s fuzzy"
400
  msgstr "%s onzeker"
401
 
402
+ #: ../lib/loco-admin.php:892
403
+ #, php-format
404
  msgid "%s untranslated"
405
  msgstr "%s onvertaald"
406
 
407
+ #: ../lib/loco-admin.php:977 ../tpl/admin-nav.tpl.php:21
408
  msgid "Loco, Translation Management"
409
  msgstr "Loco, vertalingsbeheer"
410
 
411
+ #: ../lib/loco-admin.php:978 ../lib/loco-admin.php:1009
412
  msgid "Manage translations"
413
  msgstr "Beheer vertalingen"
414
 
415
+ #: ../lib/loco-locales.php:65
416
  msgid "Unknown language"
417
  msgstr "Onbekende taal"
418
 
419
+ #: ../lib/loco-packages.php:423 ../lib/loco-packages.php:430
420
  msgid "Some files not writable"
421
  msgstr "Sommige bestanden hebben geen schrijfrechten"
422
 
423
+ #: ../lib/loco-packages.php:439 ../lib/loco-packages.php:443
424
+ #, php-format
425
  msgid "\"%s\" folder not writable"
426
  msgstr "Map \"%s\" heeft geen schrijfrechten"
427
 
434
  msgstr "Ongeldige gegevens op server"
435
 
436
  #: ../php/loco-posave.php:66
437
+ #, php-format
438
  msgid ""
439
+ "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or "
440
+ "create it manually."
441
  msgstr ""
442
  "Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak "
443
  "het zelf aan."
444
 
445
  #: ../php/loco-posave.php:69
446
+ #, php-format
447
  msgid ""
448
+ "Web server cannot create files in the \"%s\" directory. Fix file permissions "
449
+ "or use the download function."
450
  msgstr ""
451
+ "Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of "
452
+ "gebruik de downloadfunctie."
453
 
454
  #: ../php/loco-posave.php:81
455
+ #, php-format
456
  msgid ""
457
+ "%s file is not writable by the web server. Fix file permissions or download "
458
+ "and copy to \"%s/%s\"."
459
  msgstr ""
460
  "Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
461
  "schrijfrechten of download en kopieer naar \"%s/%s\"."
462
 
463
+ #: ../php/loco-posync.php:57
464
  msgid "No strings could be extracted from source files"
465
  msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
466
 
467
+ #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.
468
+ #: tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
469
  msgid "Packages"
470
  msgstr "Pakketten"
471
 
490
  msgstr "Bestandsrechten"
491
 
492
  #: ../tpl/admin-list.tpl.php:43
493
+ #, php-format
494
  msgid "1 language"
495
  msgid_plural "%u languages"
496
  msgstr[0] "1 taal"
562
  msgstr "Help"
563
 
564
  #: ../tpl/admin-poinit.tpl.php:21
565
+ #, php-format
566
  msgid "Initialize new translations in %s"
567
  msgstr "Start nieuwe vertalingen in %s"
568
 
575
  msgid "or enter any language code"
576
  msgstr "of geef een taalcode op"
577
 
578
+ #: ../tpl/admin-poinit.tpl.php:68
579
  msgctxt "Submit button"
580
  msgid "Start translating"
581
  msgstr "Start vertalen"
585
  msgstr "Nieuwe versie beschikbaar"
586
 
587
  #: ../tpl/admin-root.tpl.php:21
588
+ #, php-format
589
  msgid "Upgrade to version %s of Loco Translate"
590
  msgstr "Loco Translate upgraden naar versie %s"
591
 
languages/loco-translate-ru_RU.mo ADDED
Binary file
languages/loco-translate-ru_RU.po ADDED
@@ -0,0 +1,609 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: Mon Jun 09 2014 17:13:38 GMT+0100 (BST)\n"
7
+ "Last-Translator: Tim <support@localise.biz>\n"
8
+ "Language-Team: \n"
9
+ "Language: Russian\n"
10
+ "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && "
11
+ "n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)\n"
12
+ "MIME-Version: 1.0\n"
13
+ "Content-Type: text/plain; charset=UTF-8\n"
14
+ "Content-Transfer-Encoding: 8bit\n"
15
+ "X-Poedit-SourceCharset: UTF-8\n"
16
+ "X-Poedit-Basepath: .\n"
17
+ "X-Poedit-SearchPath-0: ..\n"
18
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
19
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
20
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
21
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
22
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
23
+ "X-Generator: Loco - https://localise.biz/\n"
24
+ "X-Loco-Target-Locale: ru_RU"
25
+
26
+ #: ../lib/loco-packages.php:476
27
+ msgid "Folder not found"
28
+ msgstr ""
29
+
30
+ #: ../php/loco-posync.php:47
31
+ msgid "No source files in this package, nothing to sync"
32
+ msgstr ""
33
+
34
+ #: ../pub/js/lang/dummy.php:19
35
+ #, php-format
36
+ msgid "Already up to date with %s"
37
+ msgstr ""
38
+
39
+ #: ../pub/js/lang/dummy.php:21
40
+ msgid "Already up to date with source code"
41
+ msgstr ""
42
+
43
+ #. label for the window pane holding native translation
44
+ #: ../pub/js/lang/dummy.php:35
45
+ msgctxt "Editor pane"
46
+ msgid "Source text"
47
+ msgstr ""
48
+
49
+ #. where %s is the language, e.g French translation
50
+ #: ../pub/js/lang/dummy.php:38
51
+ #, php-format
52
+ msgctxt "Editor pane"
53
+ msgid "%s translation"
54
+ msgstr ""
55
+
56
+ #. label for the window pane holding translator comments
57
+ #: ../pub/js/lang/dummy.php:41
58
+ msgctxt "Editor pane"
59
+ msgid "Comments"
60
+ msgstr ""
61
+
62
+ #. label for the window pane holding message context
63
+ #: ../pub/js/lang/dummy.php:44
64
+ msgctxt "Editor pane"
65
+ msgid "Context"
66
+ msgstr ""
67
+
68
+ #: ../tpl/admin-opts.tpl.php:69
69
+ msgid "Number of backups to keep of each file:"
70
+ msgstr ""
71
+
72
+ #: ../tpl/admin-opts.tpl.php:77 ../tpl/admin-opts.tpl.php:81
73
+ msgid "Experimental features"
74
+ msgstr ""
75
+
76
+ #: ../tpl/admin-opts.tpl.php:86
77
+ msgid "Enable Wordpress core translations"
78
+ msgstr ""
79
+
80
+ #: ../tpl/admin-poinit.tpl.php:58
81
+ #, php-format
82
+ msgctxt "Form label"
83
+ msgid "create in <code>%s</code>"
84
+ msgstr ""
85
+
86
+ #: ../tpl/admin-poinit.tpl.php:63
87
+ msgctxt "Form label"
88
+ msgid "create in global languages directory"
89
+ msgstr ""
90
+
91
+ #. Translators: Bold text label in admin error messages
92
+ #: ../lib/loco-admin.php:15
93
+ msgctxt "Message label"
94
+ msgid "Error"
95
+ msgstr "Ошибка"
96
+
97
+ #: ../lib/loco-admin.php:24
98
+ msgctxt "Message label"
99
+ msgid "Warning"
100
+ msgstr "Предупреждение"
101
+
102
+ #: ../lib/loco-admin.php:33
103
+ msgctxt "Message label"
104
+ msgid "OK"
105
+ msgstr "ОК"
106
+
107
+ #: ../lib/loco-admin.php:42
108
+ msgid "Permission denied"
109
+ msgstr "Доступ невозможен"
110
+
111
+ #: ../lib/loco-admin.php:58
112
+ msgid "Settings saved"
113
+ msgstr "Установки сохранены"
114
+
115
+ #: ../lib/loco-admin.php:133
116
+ msgid "New PO file"
117
+ msgstr "Новый РО файл"
118
+
119
+ #: ../lib/loco-admin.php:240
120
+ msgid "You must specify a valid locale for a new PO file"
121
+ msgstr "Укажите правильную локаль для нового РО файла"
122
+
123
+ #: ../lib/loco-admin.php:265 ../lib/loco-admin.php:367
124
+ msgid "No translatable strings found"
125
+ msgstr "Не обнаружено строк для перевода"
126
+
127
+ #: ../lib/loco-admin.php:265
128
+ msgid "Cannot create a PO file."
129
+ msgstr "Невозможно создать РО файл"
130
+
131
+ #: ../lib/loco-admin.php:272
132
+ #, php-format
133
+ msgid "PO file already exists with locale %s"
134
+ msgstr "PO файл уже существует в локали %s"
135
+
136
+ #: ../lib/loco-admin.php:313
137
+ #, php-format
138
+ msgid "PO file used as template. This will be renamed to %s on first save"
139
+ msgstr ""
140
+ "PO файл используется как шаблон. Он будет переименован в %s при первом "
141
+ "сохраннии."
142
+
143
+ #: ../lib/loco-admin.php:337
144
+ msgid ""
145
+ "File cannot be created automatically. Fix the file permissions or use "
146
+ "Download instead of Save"
147
+ msgstr ""
148
+ "Файл не может быть создан автоматически. Исправьте права доступа, или "
149
+ "используйте Загрузить вместо Сохранить"
150
+
151
+ #: ../lib/loco-admin.php:346 ../lib/loco-admin.php:355
152
+ #, php-format
153
+ msgid "%s file is empty"
154
+ msgstr "%s файл пуст"
155
+
156
+ #: ../lib/loco-admin.php:347 ../lib/loco-admin.php:362
157
+ msgid "Run Sync to update from source code"
158
+ msgstr "Выполните Синхронизацию для обновления из исходного кода"
159
+
160
+ #: ../lib/loco-admin.php:351
161
+ msgid "No strings could be extracted from source code"
162
+ msgstr "Нет строк для извлечения из исходного кода"
163
+
164
+ #: ../lib/loco-admin.php:358
165
+ #, php-format
166
+ msgid "Run Sync to update from %s"
167
+ msgstr "Выполните Синхронизацию для обновления из "
168
+
169
+ #: ../lib/loco-admin.php:377
170
+ msgid "Source code has been modified, run Sync to update POT"
171
+ msgstr "Исходный код был изменён. Выполните Синхронизацию для обновления РОТ"
172
+
173
+ #: ../lib/loco-admin.php:381
174
+ msgid "POT has been modified since PO file was saved, run Sync to update"
175
+ msgstr "РОТ был изменён после сохранения РО. Выполните Синхронизацию для обновления"
176
+
177
+ #: ../lib/loco-admin.php:468
178
+ msgid "Bad file path"
179
+ msgstr "Неправильный путь к файлу"
180
+
181
+ #: ../lib/loco-admin.php:692
182
+ #, php-format
183
+ msgid "Empty or invalid %s file"
184
+ msgstr "Пустой, или поврежденный %s файл"
185
+
186
+ #: ../lib/loco-admin.php:696
187
+ #, php-format
188
+ msgid "%s file has no header"
189
+ msgstr "%s файл без заголовка"
190
+
191
+ #: ../lib/loco-admin.php:828
192
+ msgctxt "Add button"
193
+ msgid "New template"
194
+ msgstr "Новый шаблон"
195
+
196
+ #: ../lib/loco-admin.php:847
197
+ msgctxt "Add button"
198
+ msgid "New language"
199
+ msgstr "Новый язык"
200
+
201
+ #: ../lib/loco-admin.php:886
202
+ #, php-format
203
+ msgid "%s%% translated"
204
+ msgstr "%s%% переведено"
205
+
206
+ #: ../lib/loco-admin.php:886
207
+ #, php-format
208
+ msgid "1 string"
209
+ msgid_plural "%s strings"
210
+ msgstr[0] "1 строка"
211
+ msgstr[1] "%s строк(и)"
212
+
213
+ #: ../lib/loco-admin.php:889
214
+ #, php-format
215
+ msgid "%s fuzzy"
216
+ msgstr "неточный перевод"
217
+
218
+ #: ../lib/loco-admin.php:892
219
+ #, php-format
220
+ msgid "%s untranslated"
221
+ msgstr "%s не переведено"
222
+
223
+ #: ../lib/loco-admin.php:934
224
+ msgid "Failed to compile MO file with built-in compiler"
225
+ msgstr "Ошибка компиляции МО файла встроенным компилятором"
226
+
227
+ #: ../lib/loco-admin.php:977 ../tpl/admin-nav.tpl.php:21
228
+ msgid "Loco, Translation Management"
229
+ msgstr "Loco, управление переводами"
230
+
231
+ #: ../lib/loco-admin.php:978 ../lib/loco-admin.php:1009
232
+ msgid "Manage translations"
233
+ msgstr "Управление переводами"
234
+
235
+ #: ../lib/loco-admin.php:979
236
+ msgid "Translation options"
237
+ msgstr "Опции перевода"
238
+
239
+ #: ../lib/loco-admin.php:986
240
+ msgid "Loco Translate"
241
+ msgstr "Переводчик Loco"
242
+
243
+ #: ../lib/loco-admin.php:1010 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.
244
+ #: tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ..
245
+ #: tpl/admin-root.tpl.php:7
246
+ msgid "Settings"
247
+ msgstr "Установки"
248
+
249
+ #: ../lib/loco-admin.php:1034
250
+ msgid "File download failed"
251
+ msgstr "Ошибка загрузки файла"
252
+
253
+ #: ../lib/loco-locales.php:65
254
+ msgid "Unknown language"
255
+ msgstr "Неизвестный язык"
256
+
257
+ #: ../lib/loco-packages.php:423 ../lib/loco-packages.php:430
258
+ msgid "Some files not writable"
259
+ msgstr "Некоторые файлы недоступны для записи"
260
+
261
+ #: ../lib/loco-packages.php:433
262
+ msgid "Some files missing"
263
+ msgstr "Некоторые файлы с ошибками, или отсутствуют"
264
+
265
+ #: ../lib/loco-packages.php:439 ../lib/loco-packages.php:443
266
+ #, php-format
267
+ msgid "\"%s\" folder not writable"
268
+ msgstr "\"%s\" каталог недоступен для записи"
269
+
270
+ #: ../lib/loco-packages.php:464
271
+ msgid "POT file not writable"
272
+ msgstr "РОТ файл недоступен для записи"
273
+
274
+ #: ../lib/loco-packages.php:469
275
+ msgid "PO file not writable"
276
+ msgstr "РО файл недоступен для записи"
277
+
278
+ #: ../lib/loco-packages.php:471
279
+ msgid "MO file not writable"
280
+ msgstr "МО файл недоступен для записи"
281
+
282
+ #: ../lib/loco-packages.php:471
283
+ msgid "MO file not found"
284
+ msgstr "МО файл не найден"
285
+
286
+ #: ../lib/loco-packages.php:476
287
+ msgid "Folder not writable"
288
+ msgstr "Каталог недоступен для записи"
289
+
290
+ #: ../php/loco-ajax.php:17 ../php/loco-download.php:21
291
+ msgid "User does not have permission to manage translations"
292
+ msgstr "У пользователя недостаточно прав для управления переводами"
293
+
294
+ #: ../php/loco-download.php:75 ../php/loco-posave.php:121
295
+ #, php-format
296
+ msgid "Failed to compile MO file with %s, check your settings"
297
+ msgstr "Ошибка компилирования МО файла с %s . Проверьте настройки"
298
+
299
+ #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
300
+ msgid "Invalid data posted to server"
301
+ msgstr "На сервер отправлены неверные данные"
302
+
303
+ #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
304
+ #, php-format
305
+ msgid "Package not found called %s"
306
+ msgstr "Не найден пакет с именем "
307
+
308
+ #: ../php/loco-posave.php:58
309
+ #, php-format
310
+ msgid ""
311
+ "Web server cannot create backups in \"%s\". Fix file permissions or disable "
312
+ "backups in settings"
313
+ msgstr ""
314
+ "Web сервер не может создать резервную копию в \"%s\". Исправьте права доступа, "
315
+ "или отключите функцию резервирования в настройках"
316
+
317
+ #: ../php/loco-posave.php:66
318
+ #, php-format
319
+ msgid ""
320
+ "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or "
321
+ "create it manually."
322
+ msgstr ""
323
+ "Web сервер не может создать \"%s\" каталог в \"%s\". Исправьте права доступа, "
324
+ "или создайте каталог вручную"
325
+
326
+ #: ../php/loco-posave.php:69
327
+ #, php-format
328
+ msgid ""
329
+ "Web server cannot create files in the \"%s\" directory. Fix file permissions "
330
+ "or use the download function."
331
+ msgstr ""
332
+ "Web сервер не может создать файлы в каталоге \"%s\" . Иправьте права доступа, "
333
+ "или используйте функцию загрузки."
334
+
335
+ #: ../php/loco-posave.php:81
336
+ #, php-format
337
+ msgid ""
338
+ "%s file is not writable by the web server. Fix file permissions or download "
339
+ "and copy to \"%s/%s\"."
340
+ msgstr ""
341
+ "%s файл не может быть записан на сервер. Исправьте права доступа или "
342
+ "загрузите и скопируйте \"%s/%s\"."
343
+
344
+ #: ../php/loco-posave.php:102
345
+ msgid "Cannot create MO file"
346
+ msgstr "Невозможно создать МО файл"
347
+
348
+ #: ../php/loco-posave.php:105
349
+ msgid "Cannot overwrite MO file"
350
+ msgstr "Невозможно перезаписать МО файл"
351
+
352
+ #: ../php/loco-posave.php:131
353
+ msgid "Failed to write MO file"
354
+ msgstr "Ошибка записи МО файла"
355
+
356
+ #: ../php/loco-posync.php:57
357
+ msgid "No strings could be extracted from source files"
358
+ msgstr "Нет строк для обработки из исходного кода"
359
+
360
+ #: ../pub/js/lang/dummy.php:8
361
+ msgid "Unknown error"
362
+ msgstr "Неизвестная ошибка"
363
+
364
+ #: ../pub/js/lang/dummy.php:10
365
+ msgid "PO file saved"
366
+ msgstr "РО файл сохранён"
367
+
368
+ #: ../pub/js/lang/dummy.php:12
369
+ msgid "and MO file compiled"
370
+ msgstr "и МО файл скомпилирован"
371
+
372
+ #: ../pub/js/lang/dummy.php:15
373
+ #, php-format
374
+ msgid "Merged from %s"
375
+ msgstr "Объединено с %s"
376
+
377
+ #: ../pub/js/lang/dummy.php:17
378
+ msgid "Merged from source code"
379
+ msgstr "Объединено с исходным кодом"
380
+
381
+ #: ../pub/js/lang/dummy.php:23
382
+ #, php-format
383
+ msgid "1 new string added"
384
+ msgid_plural "%s new strings added"
385
+ msgstr[0] "1 новая строка добавлена"
386
+ msgstr[1] "%s новых строки добавлено"
387
+
388
+ #: ../pub/js/lang/dummy.php:25
389
+ #, php-format
390
+ msgid "1 obsolete string removed"
391
+ msgid_plural "%s obsolete strings removed"
392
+ msgstr[0] "1строка удалена"
393
+ msgstr[1] "%s строки удалено"
394
+
395
+ #: ../pub/js/lang/dummy.php:27
396
+ msgid "Your changes will be lost if you continue without saving"
397
+ msgstr "Изменения будут потеряны, если Вы не сохранитесь"
398
+
399
+ #: ../pub/js/lang/dummy.php:52
400
+ msgid "Translation"
401
+ msgstr "Перевод"
402
+
403
+ #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.
404
+ #: tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
405
+ msgid "Packages"
406
+ msgstr "Пакеты переводов"
407
+
408
+ #: ../tpl/admin-fscheck.tpl.php:8
409
+ msgid "File check"
410
+ msgstr "Проверка файла"
411
+
412
+ #: ../tpl/admin-fscheck.tpl.php:17
413
+ #, php-format
414
+ msgid "File system permissions for %s"
415
+ msgstr "Права доступа файловой системы для "
416
+
417
+ #: ../tpl/admin-fscheck.tpl.php:40
418
+ msgid "Back"
419
+ msgstr "Назад"
420
+
421
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:96
422
+ msgid "Get help"
423
+ msgstr "Помощь"
424
+
425
+ #: ../tpl/admin-list.tpl.php:11
426
+ msgctxt "Table header"
427
+ msgid "Package details"
428
+ msgstr ""
429
+ "Детали пакета\n"
430
+ "\n"
431
+
432
+ #: ../tpl/admin-list.tpl.php:14
433
+ msgctxt "Table header"
434
+ msgid "Translations (PO)"
435
+ msgstr "Переводы (РО)\n"
436
+
437
+ #: ../tpl/admin-list.tpl.php:17
438
+ msgctxt "Table header"
439
+ msgid "Template (POT)"
440
+ msgstr "Шаблоны (РОТ)\n"
441
+
442
+ #: ../tpl/admin-list.tpl.php:20
443
+ msgctxt "Table header"
444
+ msgid "File permissions"
445
+ msgstr "Права доступа к файлу"
446
+
447
+ #: ../tpl/admin-list.tpl.php:43
448
+ #, php-format
449
+ msgid "1 language"
450
+ msgid_plural "%u languages"
451
+ msgstr[0] "1 язык"
452
+ msgstr[1] "%u языка(ов)"
453
+
454
+ #: ../tpl/admin-list.tpl.php:48
455
+ msgctxt "Modified time"
456
+ msgid "Updated"
457
+ msgstr "Обновлённый"
458
+
459
+ #: ../tpl/admin-list.tpl.php:97
460
+ msgid "OK"
461
+ msgstr "ОК"
462
+
463
+ #: ../tpl/admin-nav.tpl.php:20
464
+ msgid "Powered by"
465
+ msgstr "Представлено"
466
+
467
+ #: ../tpl/admin-nav.tpl.php:26
468
+ msgid "Loco may not work as expected"
469
+ msgstr "Плагин Loco может не работать, как ожидалось"
470
+
471
+ #: ../tpl/admin-opts.tpl.php:18
472
+ msgid "Configure Loco Translate"
473
+ msgstr "Настройка Loco"
474
+
475
+ #: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
476
+ msgid "Compiling MO files"
477
+ msgstr "Комптляция МО файлов"
478
+
479
+ #: ../tpl/admin-opts.tpl.php:36
480
+ msgid "Use built-in MO compiler."
481
+ msgstr "Использовать встроенный МО компилятор"
482
+
483
+ #: ../tpl/admin-opts.tpl.php:42
484
+ msgid "Use external command:"
485
+ msgstr "Использовать внешнюю программу:"
486
+
487
+ #: ../tpl/admin-opts.tpl.php:47
488
+ msgid "Enter path to msgfmt on server"
489
+ msgstr "Путь к msgfmt на сервере"
490
+
491
+ #: ../tpl/admin-opts.tpl.php:54
492
+ msgid "Generate hash tables"
493
+ msgstr "Генерировать hash таблицы"
494
+
495
+ #: ../tpl/admin-opts.tpl.php:61 ../tpl/admin-opts.tpl.php:65
496
+ msgid "Backing up PO files"
497
+ msgstr "Резервное копирование РО файлов"
498
+
499
+ #: ../tpl/admin-opts.tpl.php:95
500
+ msgid "Save settings"
501
+ msgstr "Сохранить установки"
502
+
503
+ #: ../tpl/admin-poedit.tpl.php:31
504
+ msgid "Template file"
505
+ msgstr "Файл шаблона"
506
+
507
+ #: ../tpl/admin-poedit.tpl.php:39
508
+ msgctxt "Dropdown label"
509
+ msgid "Switch to..."
510
+ msgstr "Переключиться на..."
511
+
512
+ #: ../tpl/admin-poedit.tpl.php:57
513
+ msgid "Updated"
514
+ msgstr "Обновлено"
515
+
516
+ #: ../tpl/admin-poedit.tpl.php:62
517
+ msgid "never"
518
+ msgstr "никогда"
519
+
520
+ #: ../tpl/admin-poedit.tpl.php:87
521
+ msgctxt "Editor button"
522
+ msgid "Save"
523
+ msgstr "Сохранить"
524
+
525
+ #: ../tpl/admin-poedit.tpl.php:94 ../tpl/admin-poedit.tpl.php:103
526
+ msgctxt "Editor button"
527
+ msgid "Download"
528
+ msgstr "Загрузить"
529
+
530
+ #: ../tpl/admin-poedit.tpl.php:115
531
+ msgctxt "Editor button"
532
+ msgid "Sync"
533
+ msgstr "Синхронизация"
534
+
535
+ #: ../tpl/admin-poedit.tpl.php:120
536
+ msgctxt "Editor button"
537
+ msgid "Revert"
538
+ msgstr "Вернуться"
539
+
540
+ #: ../tpl/admin-poedit.tpl.php:125
541
+ msgctxt "Editor button"
542
+ msgid "Add"
543
+ msgstr "Добавить"
544
+
545
+ #: ../tpl/admin-poedit.tpl.php:130
546
+ msgctxt "Editor button"
547
+ msgid "Del"
548
+ msgstr "Удалить"
549
+
550
+ #: ../tpl/admin-poedit.tpl.php:135
551
+ msgctxt "Editor button"
552
+ msgid "Fuzzy"
553
+ msgstr "отметить, как неточный перевод"
554
+
555
+ #: ../tpl/admin-poedit.tpl.php:140
556
+ msgid "Filter translations"
557
+ msgstr "Поиск фразы по фильтру"
558
+
559
+ #: ../tpl/admin-poedit.tpl.php:145
560
+ msgctxt "Editor button"
561
+ msgid "Help"
562
+ msgstr "Помощь"
563
+
564
+ #: ../tpl/admin-poinit.tpl.php:21
565
+ #, php-format
566
+ msgid "Initialize new translations in %s"
567
+ msgstr "Начать новый перевод %s"
568
+
569
+ #: ../tpl/admin-poinit.tpl.php:34
570
+ msgid "Select from common languages"
571
+ msgstr "Выбрать язык из списка"
572
+
573
+ #: ../tpl/admin-poinit.tpl.php:45
574
+ msgctxt "Form label"
575
+ msgid "or enter any language code"
576
+ msgstr "или ввести код языка"
577
+
578
+ #: ../tpl/admin-poinit.tpl.php:68
579
+ msgctxt "Submit button"
580
+ msgid "Start translating"
581
+ msgstr "Начать перевод"
582
+
583
+ #: ../tpl/admin-root.tpl.php:18
584
+ msgid "New version available"
585
+ msgstr "Доступна новая версия"
586
+
587
+ #: ../tpl/admin-root.tpl.php:21
588
+ #, php-format
589
+ msgid "Upgrade to version %s of Loco Translate"
590
+ msgstr "Обновить Loco Translate до версии %s"
591
+
592
+ #: ../tpl/admin-root.tpl.php:31
593
+ msgid "Select a plugin or theme to translate"
594
+ msgstr "Выбрать плагин или тему для перевода "
595
+
596
+ #: ../tpl/admin-root.tpl.php:40
597
+ msgctxt "Package list header"
598
+ msgid "Themes"
599
+ msgstr "Темы"
600
+
601
+ #: ../tpl/admin-root.tpl.php:53
602
+ msgctxt "Package list header"
603
+ msgid "Plugins"
604
+ msgstr "Плагины"
605
+
606
+ #: ../tpl/admin-root.tpl.php:66
607
+ msgctxt "Package list header"
608
+ msgid "Core"
609
+ msgstr "Ядро"
languages/loco-translate-sv_SE.mo ADDED
Binary file
languages/loco-translate-sv_SE.po ADDED
@@ -0,0 +1,606 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: Mon Jun 09 2014 17:13:41 GMT+0100 (BST)\n"
7
+ "Last-Translator: Tim <support@localise.biz>\n"
8
+ "Language-Team: \n"
9
+ "Language: Swedish\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-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
17
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
18
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
19
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
20
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
21
+ "X-Generator: Loco - https://localise.biz/\n"
22
+ "X-Loco-Target-Locale: sv_SE\n"
23
+ "X-Poedit-SearchPath-0: .."
24
+
25
+ #. label for the window pane holding native translation
26
+ #: ../pub/js/lang/dummy.php:25
27
+ msgctxt "Editor pane"
28
+ msgid "Source text"
29
+ msgstr ""
30
+
31
+ #. where %s is the language, e.g French translation
32
+ #: ../pub/js/lang/dummy.php:27
33
+ #, php-format
34
+ msgctxt "Editor pane"
35
+ msgid "%s translation"
36
+ msgstr ""
37
+
38
+ #. label for the window pane holding translator comments
39
+ #: ../pub/js/lang/dummy.php:29
40
+ msgctxt "Editor pane"
41
+ msgid "Comments"
42
+ msgstr ""
43
+
44
+ #. label for the window pane holding message context
45
+ #: ../pub/js/lang/dummy.php:31
46
+ msgctxt "Editor pane"
47
+ msgid "Context"
48
+ msgstr ""
49
+
50
+ #: ../tpl/admin-poinit.tpl.php:58
51
+ #, php-format
52
+ msgctxt "Form label"
53
+ msgid "create in <code>%s</code>"
54
+ msgstr ""
55
+
56
+ #. Translators: Bold text label in admin error messages
57
+ #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:8
58
+ msgctxt "Message label"
59
+ msgid "Error"
60
+ msgstr "Fel"
61
+
62
+ #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:7
63
+ msgctxt "Message label"
64
+ msgid "Warning"
65
+ msgstr "Varning"
66
+
67
+ #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:6
68
+ msgctxt "Message label"
69
+ msgid "OK"
70
+ msgstr "OK"
71
+
72
+ #: ../lib/loco-admin.php:42
73
+ msgid "Permission denied"
74
+ msgstr "Behörighet saknas"
75
+
76
+ #: ../lib/loco-admin.php:58
77
+ msgid "Settings saved"
78
+ msgstr "Inställningar sparade"
79
+
80
+ #: ../lib/loco-admin.php:133
81
+ msgid "New PO file"
82
+ msgstr "Ny PO-fil"
83
+
84
+ #: ../lib/loco-admin.php:240
85
+ msgid "You must specify a valid locale for a new PO file"
86
+ msgstr "Du måste ange en giltig landskod för en ny PO-fil"
87
+
88
+ #: ../lib/loco-admin.php:265 ../lib/loco-admin.php:367
89
+ msgid "No translatable strings found"
90
+ msgstr "Inga översättbara strängar hittades"
91
+
92
+ #: ../lib/loco-admin.php:265
93
+ msgid "Cannot create a PO file."
94
+ msgstr "Kunde ej skapa en PO-fil."
95
+
96
+ #: ../lib/loco-admin.php:272
97
+ #, php-format
98
+ msgid "PO file already exists with locale %s"
99
+ msgstr "PO-fil finns redan med landskod %s"
100
+
101
+ #: ../lib/loco-admin.php:313
102
+ #, php-format
103
+ msgid "PO file used as template. This will be renamed to %s on first save"
104
+ msgstr ""
105
+ "PO-fil används som mall. Den kommer att byta namn till %s när du väljer att "
106
+ "spara"
107
+
108
+ #: ../lib/loco-admin.php:337
109
+ msgid ""
110
+ "File cannot be created automatically. Fix the file permissions or use "
111
+ "Download instead of Save"
112
+ msgstr ""
113
+ "Fil kunde ej skapas automatiskt. Ändra filrättigheter eller använd Ladda ner "
114
+ "istället för Spara"
115
+
116
+ #: ../lib/loco-admin.php:346 ../lib/loco-admin.php:355
117
+ #, php-format
118
+ msgid "%s file is empty"
119
+ msgstr "%s-filen är tom"
120
+
121
+ #: ../lib/loco-admin.php:347 ../lib/loco-admin.php:362
122
+ msgid "Run Sync to update from source code"
123
+ msgstr "Använd Synka för att uppdatera från källkoden"
124
+
125
+ #: ../lib/loco-admin.php:351
126
+ msgid "No strings could be extracted from source code"
127
+ msgstr "Inga strängar kunde hittas från källkoden"
128
+
129
+ #: ../lib/loco-admin.php:358
130
+ #, php-format
131
+ msgid "Run Sync to update from %s"
132
+ msgstr "Använd Synka för att uppdatera från %s"
133
+
134
+ #: ../lib/loco-admin.php:377
135
+ msgid "Source code has been modified, run Sync to update POT"
136
+ msgstr "Källkod har ändrats, använd Synka för att uppdatera POT"
137
+
138
+ #: ../lib/loco-admin.php:381
139
+ msgid "POT has been modified since PO file was saved, run Sync to update"
140
+ msgstr "POT har ändrats sedan PO-filen sparades, använd Synka för att uppdatera"
141
+
142
+ #: ../lib/loco-admin.php:468
143
+ msgid "Bad file path"
144
+ msgstr "Ogiltig sökväg"
145
+
146
+ #: ../lib/loco-admin.php:692
147
+ #, php-format
148
+ msgid "Empty or invalid %s file"
149
+ msgstr "Tom eller ogiltigt %s-fil"
150
+
151
+ #: ../lib/loco-admin.php:696
152
+ #, php-format
153
+ msgid "%s file has no header"
154
+ msgstr "%s-filen saknar header"
155
+
156
+ #: ../lib/loco-admin.php:828
157
+ msgctxt "Add button"
158
+ msgid "New template"
159
+ msgstr "Ny mall"
160
+
161
+ #: ../lib/loco-admin.php:847
162
+ msgctxt "Add button"
163
+ msgid "New language"
164
+ msgstr "Nytt språk"
165
+
166
+ #: ../lib/loco-admin.php:886
167
+ #, php-format
168
+ msgid "%s%% translated"
169
+ msgstr "%s%% översatt"
170
+
171
+ #: ../lib/loco-admin.php:886
172
+ #, php-format
173
+ msgid "1 string"
174
+ msgid_plural "%s strings"
175
+ msgstr[0] "1 sträng"
176
+ msgstr[1] "%s strängar"
177
+
178
+ #: ../lib/loco-admin.php:889
179
+ #, php-format
180
+ msgid "%s fuzzy"
181
+ msgstr "%s oklar"
182
+
183
+ #: ../lib/loco-admin.php:892
184
+ #, php-format
185
+ msgid "%s untranslated"
186
+ msgstr "%s ej översatta"
187
+
188
+ #: ../lib/loco-admin.php:934
189
+ msgid "Failed to compile MO file with built-in compiler"
190
+ msgstr "Det gick ej att sammanställa MO-fil med inbyggd kompilator"
191
+
192
+ #: ../lib/loco-admin.php:977 ../tpl/admin-nav.tpl.php:21
193
+ msgid "Loco, Translation Management"
194
+ msgstr "Loco, Translation Management"
195
+
196
+ #: ../lib/loco-admin.php:978 ../lib/loco-admin.php:1009
197
+ msgid "Manage translations"
198
+ msgstr "Språkfiler"
199
+
200
+ #: ../lib/loco-admin.php:979
201
+ msgid "Translation options"
202
+ msgstr "Inställningar"
203
+
204
+ #: ../lib/loco-admin.php:986
205
+ msgid "Loco Translate"
206
+ msgstr "Översättningar"
207
+
208
+ #: ../lib/loco-admin.php:1010 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.
209
+ #: tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ..
210
+ #: tpl/admin-root.tpl.php:7
211
+ msgid "Settings"
212
+ msgstr "Inställningar"
213
+
214
+ #: ../lib/loco-admin.php:1034
215
+ msgid "File download failed"
216
+ msgstr "Nedladdning misslyckades"
217
+
218
+ #: ../lib/loco-locales.php:65
219
+ msgid "Unknown language"
220
+ msgstr "Okänt språk"
221
+
222
+ #: ../lib/loco-packages.php:423 ../lib/loco-packages.php:430
223
+ msgid "Some files not writable"
224
+ msgstr "Vissa filer är ej skrivbara"
225
+
226
+ #: ../lib/loco-packages.php:433
227
+ msgid "Some files missing"
228
+ msgstr "Vissa filer saknas"
229
+
230
+ #: ../lib/loco-packages.php:439 ../lib/loco-packages.php:443
231
+ #, php-format
232
+ msgid "\"%s\" folder not writable"
233
+ msgstr "Mappen \"%s\" är ej skrivbar"
234
+
235
+ #: ../lib/loco-packages.php:464
236
+ msgid "POT file not writable"
237
+ msgstr "POT-filen är ej skrivbar"
238
+
239
+ #: ../lib/loco-packages.php:469
240
+ msgid "PO file not writable"
241
+ msgstr "PO-filen är ej skrivbar"
242
+
243
+ #: ../lib/loco-packages.php:471
244
+ msgid "MO file not writable"
245
+ msgstr "MO-filen är ej skrivbar"
246
+
247
+ #: ../lib/loco-packages.php:471
248
+ msgid "MO file not found"
249
+ msgstr "MO-fil hittades ej"
250
+
251
+ #: ../lib/loco-packages.php:476
252
+ msgid "Folder not writable"
253
+ msgstr "Mappen är ej skrivbar"
254
+
255
+ #: ../lib/loco-packages.php:476
256
+ msgid "Folder not found"
257
+ msgstr "Mappen hittades ej"
258
+
259
+ #: ../php/loco-ajax.php:17 ../php/loco-download.php:21
260
+ msgid "User does not have permission to manage translations"
261
+ msgstr "Användaren saknar behörighet att hantera översättningar"
262
+
263
+ #: ../php/loco-download.php:75 ../php/loco-posave.php:121
264
+ #, php-format
265
+ msgid "Failed to compile MO file with %s, check your settings"
266
+ msgstr "Det gick ej sammanställa MO-filen med %s , kontrollera dina inställningar"
267
+
268
+ #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
269
+ msgid "Invalid data posted to server"
270
+ msgstr "Ogiltig data skickades till servern"
271
+
272
+ #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
273
+ #, php-format
274
+ msgid "Package not found called %s"
275
+ msgstr "Paket %s ej hittat"
276
+
277
+ #: ../php/loco-posave.php:58
278
+ #, php-format
279
+ msgid ""
280
+ "Web server cannot create backups in \"%s\". Fix file permissions or disable "
281
+ "backups in settings"
282
+ msgstr ""
283
+ "Webbservern kunde ej skapa säkerhetskopior i \"%s\". Ändra filrättigheter "
284
+ "eller inaktivera säkerhetskopior i inställningarna"
285
+
286
+ #: ../php/loco-posave.php:66
287
+ #, php-format
288
+ msgid ""
289
+ "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or "
290
+ "create it manually."
291
+ msgstr ""
292
+ "Webbservern kunde ej skapa mappen \"%s\" i \"%s\". Ändra filrättigheter eller "
293
+ "skapa den manuellt."
294
+
295
+ #: ../php/loco-posave.php:69
296
+ #, php-format
297
+ msgid ""
298
+ "Web server cannot create files in the \"%s\" directory. Fix file permissions "
299
+ "or use the download function."
300
+ msgstr ""
301
+ "Webbservern kunde ej skapa filer i mappen \"%s\". Ändra filrättigheter eller "
302
+ "använd nedladdningsfunktionen."
303
+
304
+ #: ../php/loco-posave.php:81
305
+ #, php-format
306
+ msgid ""
307
+ "%s file is not writable by the web server. Fix file permissions or download "
308
+ "and copy to \"%s/%s\"."
309
+ msgstr ""
310
+ "%s-filen är ej skrivbar av webbservern. Ändra filrättigheter eller ladda ner "
311
+ "och kopiera till \"%s/%s\"."
312
+
313
+ #: ../php/loco-posave.php:102
314
+ msgid "Cannot create MO file"
315
+ msgstr "Kunde ej skapa MO-fil"
316
+
317
+ #: ../php/loco-posave.php:105
318
+ msgid "Cannot overwrite MO file"
319
+ msgstr "Kunde ej skriva över MO-fil"
320
+
321
+ #: ../php/loco-posave.php:131
322
+ msgid "Failed to write MO file"
323
+ msgstr "Kunde ej skapa MO-fil"
324
+
325
+ #: ../php/loco-posync.php:47
326
+ msgid "No source files in this package, nothing to sync"
327
+ msgstr "Inga källfiler hittades till denna språkfil, ingenting att synkronisera"
328
+
329
+ #: ../php/loco-posync.php:57
330
+ msgid "No strings could be extracted from source files"
331
+ msgstr "Inga strängar kunde hittas från källfiler"
332
+
333
+ #: ../pub/js/lang/dummy.php:9
334
+ msgid "Unknown error"
335
+ msgstr "Okänt fel"
336
+
337
+ #: ../pub/js/lang/dummy.php:10
338
+ msgid "PO file saved"
339
+ msgstr "PO-fil sparad"
340
+
341
+ #: ../pub/js/lang/dummy.php:11
342
+ msgid "and MO file compiled"
343
+ msgstr "och MO-fil sammanställd"
344
+
345
+ #: ../pub/js/lang/dummy.php:12
346
+ #, php-format
347
+ msgid "Merged from %s"
348
+ msgstr "Sammanslagen från %s"
349
+
350
+ #: ../pub/js/lang/dummy.php:13
351
+ msgid "Merged from source code"
352
+ msgstr "Sammanslagen från källkod"
353
+
354
+ #: ../pub/js/lang/dummy.php:14
355
+ #, php-format
356
+ msgid "Already up to date with %s"
357
+ msgstr "Redan aktuell med %s"
358
+
359
+ #: ../pub/js/lang/dummy.php:15
360
+ msgid "Already up to date with source code"
361
+ msgstr "Redan aktuell med källkod"
362
+
363
+ #: ../pub/js/lang/dummy.php:16
364
+ #, php-format
365
+ msgid "1 new string added"
366
+ msgid_plural "%s new strings added"
367
+ msgstr[0] "1 ny sträng tillagd"
368
+ msgstr[1] "%s nya strängar tillagda"
369
+
370
+ #: ../pub/js/lang/dummy.php:17
371
+ #, php-format
372
+ msgid "1 obsolete string removed"
373
+ msgid_plural "%s obsolete strings removed"
374
+ msgstr[0] "1 föråldrad sträng togs bort"
375
+ msgstr[1] "%s föråldrade strängar togs bort"
376
+
377
+ #: ../pub/js/lang/dummy.php:18
378
+ msgid "Your changes will be lost if you continue without saving"
379
+ msgstr "Dina ändringar kommer att gå förlorade om du fortsätter utan att spara"
380
+
381
+ #: ../pub/js/lang/dummy.php:37
382
+ msgid "Translation"
383
+ msgstr "Översättning"
384
+
385
+ #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.
386
+ #: tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
387
+ msgid "Packages"
388
+ msgstr "Språkfiler"
389
+
390
+ #: ../tpl/admin-fscheck.tpl.php:8
391
+ msgid "File check"
392
+ msgstr "Filrättigheter"
393
+
394
+ #: ../tpl/admin-fscheck.tpl.php:17
395
+ #, php-format
396
+ msgid "File system permissions for %s"
397
+ msgstr "Filsystem rättigheter för %s"
398
+
399
+ #: ../tpl/admin-fscheck.tpl.php:40
400
+ msgid "Back"
401
+ msgstr "Tillbaka"
402
+
403
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:96
404
+ msgid "Get help"
405
+ msgstr "Hjälp"
406
+
407
+ #: ../tpl/admin-list.tpl.php:11
408
+ msgctxt "Table header"
409
+ msgid "Package details"
410
+ msgstr "Beskrivning"
411
+
412
+ #: ../tpl/admin-list.tpl.php:14
413
+ msgctxt "Table header"
414
+ msgid "Translations (PO)"
415
+ msgstr "Översättningar (PO)"
416
+
417
+ #: ../tpl/admin-list.tpl.php:17
418
+ msgctxt "Table header"
419
+ msgid "Template (POT)"
420
+ msgstr "Mall (POT)"
421
+
422
+ #: ../tpl/admin-list.tpl.php:20
423
+ msgctxt "Table header"
424
+ msgid "File permissions"
425
+ msgstr "Filrättigheter"
426
+
427
+ #: ../tpl/admin-list.tpl.php:43
428
+ #, php-format
429
+ msgid "1 language"
430
+ msgid_plural "%u languages"
431
+ msgstr[0] "1 språk"
432
+ msgstr[1] "%u språk"
433
+
434
+ #: ../tpl/admin-list.tpl.php:48
435
+ msgctxt "Modified time"
436
+ msgid "Updated"
437
+ msgstr "Senast sparad"
438
+
439
+ #: ../tpl/admin-list.tpl.php:97
440
+ msgid "OK"
441
+ msgstr "OK"
442
+
443
+ #: ../tpl/admin-nav.tpl.php:20
444
+ msgid "Powered by"
445
+ msgstr "Drivs av"
446
+
447
+ #: ../tpl/admin-nav.tpl.php:26
448
+ msgid "Loco may not work as expected"
449
+ msgstr "Loco kanske ej fungerar som väntat"
450
+
451
+ #: ../tpl/admin-opts.tpl.php:18
452
+ msgid "Configure Loco Translate"
453
+ msgstr "Konfigurera Loco Translate"
454
+
455
+ #: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
456
+ msgid "Compiling MO files"
457
+ msgstr "Sammanställa MO-filer"
458
+
459
+ #: ../tpl/admin-opts.tpl.php:36
460
+ msgid "Use built-in MO compiler."
461
+ msgstr "Använd inbyggd MO-kompilator."
462
+
463
+ #: ../tpl/admin-opts.tpl.php:42
464
+ msgid "Use external command:"
465
+ msgstr "Använd externt kommando:"
466
+
467
+ #: ../tpl/admin-opts.tpl.php:47
468
+ msgid "Enter path to msgfmt on server"
469
+ msgstr "Skriv in sökväg till msgfmt på servern"
470
+
471
+ #: ../tpl/admin-opts.tpl.php:54
472
+ msgid "Generate hash tables"
473
+ msgstr "Generera hashtabeller"
474
+
475
+ #: ../tpl/admin-opts.tpl.php:61 ../tpl/admin-opts.tpl.php:65
476
+ msgid "Backing up PO files"
477
+ msgstr "Säkerhetskopiera PO-filer"
478
+
479
+ #: ../tpl/admin-opts.tpl.php:69
480
+ msgid "Number of backups to keep of each file:"
481
+ msgstr "Antal säkerhetskopior att behålla för varje fil:"
482
+
483
+ #: ../tpl/admin-opts.tpl.php:77 ../tpl/admin-opts.tpl.php:81
484
+ msgid "Experimental features"
485
+ msgstr "Experimentella funktioner"
486
+
487
+ #: ../tpl/admin-opts.tpl.php:86
488
+ msgid "Enable Wordpress core translations"
489
+ msgstr "Aktivera Wordpress översättningar"
490
+
491
+ #: ../tpl/admin-opts.tpl.php:95
492
+ msgid "Save settings"
493
+ msgstr "Spara inställningar"
494
+
495
+ #: ../tpl/admin-poedit.tpl.php:31
496
+ msgid "Template file"
497
+ msgstr "Mallfil"
498
+
499
+ #: ../tpl/admin-poedit.tpl.php:39
500
+ msgctxt "Dropdown label"
501
+ msgid "Switch to..."
502
+ msgstr "Växla till..."
503
+
504
+ #: ../tpl/admin-poedit.tpl.php:57
505
+ msgid "Updated"
506
+ msgstr "Uppdaterad"
507
+
508
+ #: ../tpl/admin-poedit.tpl.php:62
509
+ msgid "never"
510
+ msgstr "aldrig"
511
+
512
+ #: ../tpl/admin-poedit.tpl.php:87
513
+ msgctxt "Editor button"
514
+ msgid "Save"
515
+ msgstr "Spara"
516
+
517
+ #: ../tpl/admin-poedit.tpl.php:94 ../tpl/admin-poedit.tpl.php:103
518
+ msgctxt "Editor button"
519
+ msgid "Download"
520
+ msgstr "Ladda ner"
521
+
522
+ #: ../tpl/admin-poedit.tpl.php:115
523
+ msgctxt "Editor button"
524
+ msgid "Sync"
525
+ msgstr "Synka"
526
+
527
+ #: ../tpl/admin-poedit.tpl.php:120
528
+ msgctxt "Editor button"
529
+ msgid "Revert"
530
+ msgstr "Återgå"
531
+
532
+ #: ../tpl/admin-poedit.tpl.php:125
533
+ msgctxt "Editor button"
534
+ msgid "Add"
535
+ msgstr "Lägg till"
536
+
537
+ #: ../tpl/admin-poedit.tpl.php:130
538
+ msgctxt "Editor button"
539
+ msgid "Del"
540
+ msgstr "Radera"
541
+
542
+ #: ../tpl/admin-poedit.tpl.php:135
543
+ msgctxt "Editor button"
544
+ msgid "Fuzzy"
545
+ msgstr "Oklar"
546
+
547
+ #: ../tpl/admin-poedit.tpl.php:139
548
+ msgid "Filter translations"
549
+ msgstr "Sök översättningar"
550
+
551
+ #: ../tpl/admin-poedit.tpl.php:143
552
+ msgctxt "Editor button"
553
+ msgid "Help"
554
+ msgstr "Hjälp"
555
+
556
+ #: ../tpl/admin-poinit.tpl.php:21
557
+ #, php-format
558
+ msgid "Initialize new translations in %s"
559
+ msgstr "Skapa nya översättningar i %s"
560
+
561
+ #: ../tpl/admin-poinit.tpl.php:34
562
+ msgid "Select from common languages"
563
+ msgstr "Välj bland vanliga språk"
564
+
565
+ #: ../tpl/admin-poinit.tpl.php:45
566
+ msgctxt "Form label"
567
+ msgid "or enter any language code"
568
+ msgstr "eller skriv valfri landskod"
569
+
570
+ #: ../tpl/admin-poinit.tpl.php:63
571
+ msgctxt "Form label"
572
+ msgid "create in global languages directory"
573
+ msgstr "skapa i den globala språk katalogen"
574
+
575
+ #: ../tpl/admin-poinit.tpl.php:68
576
+ msgctxt "Submit button"
577
+ msgid "Start translating"
578
+ msgstr "Börja översätta"
579
+
580
+ #: ../tpl/admin-root.tpl.php:18
581
+ msgid "New version available"
582
+ msgstr "Ny version tillgänglig"
583
+
584
+ #: ../tpl/admin-root.tpl.php:21
585
+ #, php-format
586
+ msgid "Upgrade to version %s of Loco Translate"
587
+ msgstr "Uppdatera till version %s av Loco Translate"
588
+
589
+ #: ../tpl/admin-root.tpl.php:31
590
+ msgid "Select a plugin or theme to translate"
591
+ msgstr "Välj ett tillägg eller tema att översätta"
592
+
593
+ #: ../tpl/admin-root.tpl.php:40
594
+ msgctxt "Package list header"
595
+ msgid "Themes"
596
+ msgstr "Teman"
597
+
598
+ #: ../tpl/admin-root.tpl.php:53
599
+ msgctxt "Package list header"
600
+ msgid "Plugins"
601
+ msgstr "Tillägg"
602
+
603
+ #: ../tpl/admin-root.tpl.php:66
604
+ msgctxt "Package list header"
605
+ msgid "Core"
606
+ msgstr "Wordpress"
languages/loco-translate-tr_TR.mo CHANGED
Binary file
languages/loco-translate-tr_TR.po CHANGED
@@ -3,22 +3,22 @@ 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: Wed Mar 12 2014 10:15:08 GMT+0000 (GMT)\n"
7
- "Last-Translator: Loco <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Turkish\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: tr_TR"
24
 
@@ -26,32 +26,69 @@ msgstr ""
26
  msgid "Permission denied"
27
  msgstr ""
28
 
29
- #: ../lib/loco-admin.php:317
 
30
  msgid "PO file used as template. This will be renamed to %s on first save"
31
  msgstr ""
32
 
33
- #: ../lib/loco-admin.php:686
 
34
  msgid "Empty or invalid %s file"
35
  msgstr ""
36
 
37
- #: ../lib/loco-admin.php:690
 
38
  msgid "%s file has no header"
39
  msgstr ""
40
 
41
- #: ../lib/loco-admin.php:972
42
  msgid "Translation options"
43
  msgstr ""
44
 
45
- #: ../lib/loco-admin.php:979
46
  msgid "Loco Translate"
47
  msgstr ""
48
 
 
 
 
 
49
  #: ../php/loco-posave.php:58
 
50
  msgid ""
51
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
52
  "backups in settings"
53
  msgstr ""
54
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
55
  #: ../tpl/admin-nav.tpl.php:26
56
  msgid "Loco may not work as expected"
57
  msgstr ""
@@ -64,18 +101,37 @@ msgstr ""
64
  msgid "Number of backups to keep of each file:"
65
  msgstr ""
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  #. Translators: Bold text label in admin error messages
68
- #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
69
  msgctxt "Message label"
70
  msgid "Error"
71
  msgstr "Hata"
72
 
73
- #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:6
74
  msgctxt "Message label"
75
  msgid "Warning"
76
  msgstr "Uyarı"
77
 
78
- #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:5
79
  msgctxt "Message label"
80
  msgid "OK"
81
  msgstr "TAMAM"
@@ -84,145 +140,155 @@ msgstr "TAMAM"
84
  msgid "Settings saved"
85
  msgstr "Ayarlar saklandı"
86
 
87
- #: ../lib/loco-admin.php:132
88
  msgid "New PO file"
89
  msgstr "Yeni PO Dosyası"
90
 
91
- #: ../lib/loco-admin.php:244
92
  msgid "You must specify a valid locale for a new PO file"
93
  msgstr "Yeni PO dosyası için geçerli bir locale değeri belirtmek zorundasınız"
94
 
95
- #: ../lib/loco-admin.php:269 ../lib/loco-admin.php:371
96
  msgid "No translatable strings found"
97
  msgstr "Çevrilebilir cümle bulunamadı"
98
 
99
- #: ../lib/loco-admin.php:269
100
  msgid "Cannot create a PO file."
101
  msgstr "Bir PO dosyası oluşturulamıyor."
102
 
103
- #: ../lib/loco-admin.php:276
 
104
  msgid "PO file already exists with locale %s"
105
  msgstr "PO dosyası %s locale değeri ile zaten mevcut"
106
 
107
- #: ../lib/loco-admin.php:341
108
  msgid ""
109
- "File cannot be created automatically. Fix the file permissions or use Download "
110
- "instead of Save"
111
  msgstr ""
112
  "Dosya otomatik olarak oluşturulamıyor. Dosya izinlerini tamir edin ya da "
113
  "Saklama yerine İndirin."
114
 
115
- #: ../lib/loco-admin.php:350 ../lib/loco-admin.php:359
 
116
  msgid "%s file is empty"
117
  msgstr "%s dosyası boş"
118
 
119
- #: ../lib/loco-admin.php:351 ../lib/loco-admin.php:366
120
  msgid "Run Sync to update from source code"
121
  msgstr "Kaynak dosyasından güncelleme için Senkr. çalıştır"
122
 
123
- #: ../lib/loco-admin.php:355
124
  msgid "No strings could be extracted from source code"
125
  msgstr "Kaynak kodundan herhangi cümle çıkarılamadı"
126
 
127
- #: ../lib/loco-admin.php:362
 
128
  msgid "Run Sync to update from %s"
129
  msgstr "%s üzerinden güncelleme için Senkr. çalıştır"
130
 
131
- #: ../lib/loco-admin.php:381
132
  msgid "Source code has been modified, run Sync to update POT"
133
  msgstr "Kaynak dosyası değiştirilmiş, POT güncellemesi için Senkr. çalıştırın"
134
 
135
- #: ../lib/loco-admin.php:385
136
  msgid "POT has been modified since PO file was saved, run Sync to update"
137
  msgstr ""
138
- "PO dosyası en son saklandığından beri POT değişikliğe uğramış, güncelleme için "
139
- "Senkr. çalıştırın."
140
 
141
- #: ../lib/loco-admin.php:472
142
  msgid "Bad file path"
143
  msgstr "Uygun olmayan dosya yolu"
144
 
145
- #: ../lib/loco-admin.php:821
146
  msgctxt "Add button"
147
  msgid "New template"
148
  msgstr "Yeni şablon"
149
 
150
- #: ../lib/loco-admin.php:840
151
  msgctxt "Add button"
152
  msgid "New language"
153
  msgstr "Yeni dil"
154
 
155
- #: ../lib/loco-admin.php:879
 
156
  msgid "%s%% translated"
157
  msgstr "%s%% çevrildi"
158
 
159
- #: ../lib/loco-admin.php:879
 
160
  msgid "1 string"
161
  msgid_plural "%s strings"
162
  msgstr[0] "1 cümle"
163
  msgstr[1] "%s cümle"
164
 
165
- #: ../lib/loco-admin.php:882
 
166
  msgid "%s fuzzy"
167
  msgstr "%s bulanık"
168
 
169
- #: ../lib/loco-admin.php:885
 
170
  msgid "%s untranslated"
171
  msgstr "%s çevrilmemiş"
172
 
173
- #: ../lib/loco-admin.php:927
174
  msgid "Failed to compile MO file with built-in compiler"
175
  msgstr "Dahili derleyici ile MO derlemesinde hata"
176
 
177
- #: ../lib/loco-admin.php:970 ../tpl/admin-nav.tpl.php:21
178
  msgid "Loco, Translation Management"
179
  msgstr "Loco, Çevri Yönetimi"
180
 
181
- #: ../lib/loco-admin.php:971 ../lib/loco-admin.php:1002
182
  msgid "Manage translations"
183
  msgstr "Çevrileri Yönet"
184
 
185
- #: ../lib/loco-admin.php:1003 ../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
 
 
186
  msgid "Settings"
187
  msgstr "Ayarlar"
188
 
189
- #: ../lib/loco-admin.php:1027
190
  msgid "File download failed"
191
  msgstr "Dosya indirme hatası"
192
 
193
- #: ../lib/loco-locales.php:70
194
  msgid "Unknown language"
195
  msgstr "Bilinmeyen dil"
196
 
197
- #: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
198
  msgid "Some files not writable"
199
  msgstr "Bazı dosyalar yazılabilir değil"
200
 
201
- #: ../lib/loco-packages.php:384
202
  msgid "Some files missing"
203
  msgstr "Bazı dosyalar eksik"
204
 
205
- #: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
 
206
  msgid "\"%s\" folder not writable"
207
  msgstr "\"%s\" dizini yazılabilir değil"
208
 
209
- #: ../lib/loco-packages.php:408
210
  msgid "POT file not writable"
211
  msgstr "POT dosyası yazılabilir değil"
212
 
213
- #: ../lib/loco-packages.php:413
214
  msgid "PO file not writable"
215
  msgstr "PO dosyası yazılabilir değil"
216
 
217
- #: ../lib/loco-packages.php:415
218
  msgid "MO file not writable"
219
  msgstr "MO dosyası yazılabilir değil"
220
 
221
- #: ../lib/loco-packages.php:415
222
  msgid "MO file not found"
223
  msgstr "MO dosyası bulunamadı"
224
 
225
- #: ../lib/loco-packages.php:426
226
  msgid "Folder not writable"
227
  msgstr "Dizin yazılabilir değil"
228
 
@@ -231,6 +297,7 @@ msgid "User does not have permission to manage translations"
231
  msgstr "Kullanıcı çevrileri yönetmeye yetkili değil"
232
 
233
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
 
234
  msgid "Failed to compile MO file with %s, check your settings"
235
  msgstr "%s ile MO dosyası derlemede hata, ayarlarınızı denetleyin"
236
 
@@ -239,32 +306,36 @@ msgid "Invalid data posted to server"
239
  msgstr "Sunucuya gönderili veri geçersiz"
240
 
241
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
 
242
  msgid "Package not found called %s"
243
  msgstr "%s isimli paket bulunamadı"
244
 
245
  #: ../php/loco-posave.php:66
 
246
  msgid ""
247
- "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
248
- "it manually."
249
  msgstr ""
250
- "Web sunucusu \"%s\" dizini oluşturamıyor \"%s\" içinde. Dosya izinlerini tamir edin "
251
- "ya da elle oluşturun."
252
 
253
  #: ../php/loco-posave.php:69
 
254
  msgid ""
255
- "Web server cannot create files in the \"%s\" directory. Fix file permissions or "
256
- "use the download function."
257
  msgstr ""
258
  "Web sunucusu \"%s\" dizini içinde dosya oluşturamıyor. Dosya izinlerini tamir "
259
  "edin ya da indirme fonksiyonunu kullanın."
260
 
261
  #: ../php/loco-posave.php:81
 
262
  msgid ""
263
- "%s file is not writable by the web server. Fix file permissions or download and "
264
- "copy to \"%s/%s\"."
265
  msgstr ""
266
- "%s dosyası web sunucu tarafından yazılamaz durumda. Dosya izinlerini tamir edin "
267
- "ya da indirip \"%s/%s\" yoluna kopyalayın."
268
 
269
  #: ../php/loco-posave.php:102
270
  msgid "Cannot create MO file"
@@ -278,59 +349,64 @@ msgstr "MO dosyası üzerine yazılamıyor"
278
  msgid "Failed to write MO file"
279
  msgstr "MO dosyası yazmada hata"
280
 
281
- #: ../php/loco-posync.php:53
282
  msgid "No strings could be extracted from source files"
283
  msgstr "Kaynak dosyalarından herhangi cümle çıkartılamadı"
284
 
285
- #: ../pub/js/lang/dummy.php:8
286
  msgid "Unknown error"
287
  msgstr "Bilinmeyen hata"
288
 
289
- #: ../pub/js/lang/dummy.php:9
290
  msgid "PO file saved"
291
  msgstr "PO dosyası saklandı"
292
 
293
- #: ../pub/js/lang/dummy.php:10
294
  msgid "and MO file compiled"
295
  msgstr "ve MO dosyası derlendi"
296
 
297
- #: ../pub/js/lang/dummy.php:11
 
298
  msgid "Merged from %s"
299
  msgstr "%s üzerinden birleştirildi"
300
 
301
- #: ../pub/js/lang/dummy.php:12
302
  msgid "Merged from source code"
303
  msgstr "Kaynak kodtan birleştirildi"
304
 
305
- #: ../pub/js/lang/dummy.php:13
 
306
  msgid "Already up to date with %s"
307
  msgstr "%s ile zaten güncel"
308
 
309
- #: ../pub/js/lang/dummy.php:14
310
  msgid "Already up to date with source code"
311
  msgstr "Kaynak kod ile zaten güncel"
312
 
313
- #: ../pub/js/lang/dummy.php:15
 
314
  msgid "1 new string added"
315
  msgid_plural "%s new strings added"
316
  msgstr[0] "1 yeni cümle eklendi"
317
  msgstr[1] "%s yeni cümle eklendi"
318
 
319
- #: ../pub/js/lang/dummy.php:16
 
320
  msgid "1 obsolete string removed"
321
  msgid_plural "%s obsolete strings removed"
322
  msgstr[0] "1 kullanımdışı cümle kaldırıldı"
323
  msgstr[1] "%s kullanımdışı cümle kaldırıldı"
324
 
325
- #: ../pub/js/lang/dummy.php:17
326
  msgid "Your changes will be lost if you continue without saving"
327
  msgstr "Saklamadan devam ederseniz değişiklikleriniz kaybolacak"
328
 
329
- #: ../pub/js/lang/dummy.php:23
330
  msgid "Translation"
331
  msgstr "Çevri"
332
 
333
- #: ../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
 
334
  msgid "Packages"
335
  msgstr "Paketler"
336
 
@@ -339,6 +415,7 @@ msgid "File check"
339
  msgstr "Dosya denetimi"
340
 
341
  #: ../tpl/admin-fscheck.tpl.php:17
 
342
  msgid "File system permissions for %s"
343
  msgstr "%s için dosya sistemi izinleri"
344
 
@@ -346,7 +423,7 @@ msgstr "%s için dosya sistemi izinleri"
346
  msgid "Back"
347
  msgstr "Geri"
348
 
349
- #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:80
350
  msgid "Get help"
351
  msgstr "Yardım al"
352
 
@@ -371,6 +448,7 @@ msgid "File permissions"
371
  msgstr "Dosya izinleri"
372
 
373
  #: ../tpl/admin-list.tpl.php:43
 
374
  msgid "1 language"
375
  msgid_plural "%u languages"
376
  msgstr[0] "1 dil"
@@ -381,7 +459,7 @@ msgctxt "Modified time"
381
  msgid "Updated"
382
  msgstr "Güncellenme"
383
 
384
- #: ../tpl/admin-list.tpl.php:98
385
  msgid "OK"
386
  msgstr "TAMAM"
387
 
@@ -413,7 +491,7 @@ msgstr "Sunucudaki msgfmt'ye yol gir"
413
  msgid "Generate hash tables"
414
  msgstr "Hash tabloları üret"
415
 
416
- #: ../tpl/admin-opts.tpl.php:79
417
  msgid "Save settings"
418
  msgstr "Ayarları sakla"
419
 
@@ -479,6 +557,7 @@ msgid "Help"
479
  msgstr "Yardım"
480
 
481
  #: ../tpl/admin-poinit.tpl.php:21
 
482
  msgid "Initialize new translations in %s"
483
  msgstr "%s için yeni çevriler başlat"
484
 
@@ -491,7 +570,7 @@ msgctxt "Form label"
491
  msgid "or enter any language code"
492
  msgstr "veya herhangi dil kodu gir"
493
 
494
- #: ../tpl/admin-poinit.tpl.php:51
495
  msgctxt "Submit button"
496
  msgid "Start translating"
497
  msgstr "Çevriye Başla"
@@ -501,6 +580,7 @@ msgid "New version available"
501
  msgstr "Yeni versiyon mevcut"
502
 
503
  #: ../tpl/admin-root.tpl.php:21
 
504
  msgid "Upgrade to version %s of Loco Translate"
505
  msgstr "Loco Translate'in %s versiyonuna yükselt"
506
 
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: Mon Jun 09 2014 17:13:45 GMT+0100 (BST)\n"
7
+ "Last-Translator: Tim <support@localise.biz>\n"
8
  "Language-Team: \n"
9
  "Language: Turkish\n"
10
+ "Plural-Forms: nplurals=1; plural=0\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;"
18
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
19
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
20
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
21
+ "esc_html_x:1,2c;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: tr_TR"
24
 
26
  msgid "Permission denied"
27
  msgstr ""
28
 
29
+ #: ../lib/loco-admin.php:313
30
+ #, php-format
31
  msgid "PO file used as template. This will be renamed to %s on first save"
32
  msgstr ""
33
 
34
+ #: ../lib/loco-admin.php:692
35
+ #, php-format
36
  msgid "Empty or invalid %s file"
37
  msgstr ""
38
 
39
+ #: ../lib/loco-admin.php:696
40
+ #, php-format
41
  msgid "%s file has no header"
42
  msgstr ""
43
 
44
+ #: ../lib/loco-admin.php:979
45
  msgid "Translation options"
46
  msgstr ""
47
 
48
+ #: ../lib/loco-admin.php:986
49
  msgid "Loco Translate"
50
  msgstr ""
51
 
52
+ #: ../lib/loco-packages.php:476
53
+ msgid "Folder not found"
54
+ msgstr ""
55
+
56
  #: ../php/loco-posave.php:58
57
+ #, php-format
58
  msgid ""
59
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
60
  "backups in settings"
61
  msgstr ""
62
 
63
+ #: ../php/loco-posync.php:47
64
+ msgid "No source files in this package, nothing to sync"
65
+ msgstr ""
66
+
67
+ #. label for the window pane holding native translation
68
+ #: ../pub/js/lang/dummy.php:25
69
+ msgctxt "Editor pane"
70
+ msgid "Source text"
71
+ msgstr ""
72
+
73
+ #. where %s is the language, e.g French translation
74
+ #: ../pub/js/lang/dummy.php:27
75
+ #, php-format
76
+ msgctxt "Editor pane"
77
+ msgid "%s translation"
78
+ msgstr ""
79
+
80
+ #. label for the window pane holding translator comments
81
+ #: ../pub/js/lang/dummy.php:29
82
+ msgctxt "Editor pane"
83
+ msgid "Comments"
84
+ msgstr ""
85
+
86
+ #. label for the window pane holding message context
87
+ #: ../pub/js/lang/dummy.php:31
88
+ msgctxt "Editor pane"
89
+ msgid "Context"
90
+ msgstr ""
91
+
92
  #: ../tpl/admin-nav.tpl.php:26
93
  msgid "Loco may not work as expected"
94
  msgstr ""
101
  msgid "Number of backups to keep of each file:"
102
  msgstr ""
103
 
104
+ #: ../tpl/admin-opts.tpl.php:77 ../tpl/admin-opts.tpl.php:81
105
+ msgid "Experimental features"
106
+ msgstr ""
107
+
108
+ #: ../tpl/admin-opts.tpl.php:86
109
+ msgid "Enable Wordpress core translations"
110
+ msgstr ""
111
+
112
+ #: ../tpl/admin-poinit.tpl.php:58
113
+ #, php-format
114
+ msgctxt "Form label"
115
+ msgid "create in <code>%s</code>"
116
+ msgstr ""
117
+
118
+ #: ../tpl/admin-poinit.tpl.php:63
119
+ msgctxt "Form label"
120
+ msgid "create in global languages directory"
121
+ msgstr ""
122
+
123
  #. Translators: Bold text label in admin error messages
124
+ #: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:8
125
  msgctxt "Message label"
126
  msgid "Error"
127
  msgstr "Hata"
128
 
129
+ #: ../lib/loco-admin.php:24 ../pub/js/lang/dummy.php:7
130
  msgctxt "Message label"
131
  msgid "Warning"
132
  msgstr "Uyarı"
133
 
134
+ #: ../lib/loco-admin.php:33 ../pub/js/lang/dummy.php:6
135
  msgctxt "Message label"
136
  msgid "OK"
137
  msgstr "TAMAM"
140
  msgid "Settings saved"
141
  msgstr "Ayarlar saklandı"
142
 
143
+ #: ../lib/loco-admin.php:133
144
  msgid "New PO file"
145
  msgstr "Yeni PO Dosyası"
146
 
147
+ #: ../lib/loco-admin.php:240
148
  msgid "You must specify a valid locale for a new PO file"
149
  msgstr "Yeni PO dosyası için geçerli bir locale değeri belirtmek zorundasınız"
150
 
151
+ #: ../lib/loco-admin.php:265 ../lib/loco-admin.php:367
152
  msgid "No translatable strings found"
153
  msgstr "Çevrilebilir cümle bulunamadı"
154
 
155
+ #: ../lib/loco-admin.php:265
156
  msgid "Cannot create a PO file."
157
  msgstr "Bir PO dosyası oluşturulamıyor."
158
 
159
+ #: ../lib/loco-admin.php:272
160
+ #, php-format
161
  msgid "PO file already exists with locale %s"
162
  msgstr "PO dosyası %s locale değeri ile zaten mevcut"
163
 
164
+ #: ../lib/loco-admin.php:337
165
  msgid ""
166
+ "File cannot be created automatically. Fix the file permissions or use "
167
+ "Download instead of Save"
168
  msgstr ""
169
  "Dosya otomatik olarak oluşturulamıyor. Dosya izinlerini tamir edin ya da "
170
  "Saklama yerine İndirin."
171
 
172
+ #: ../lib/loco-admin.php:346 ../lib/loco-admin.php:355
173
+ #, php-format
174
  msgid "%s file is empty"
175
  msgstr "%s dosyası boş"
176
 
177
+ #: ../lib/loco-admin.php:347 ../lib/loco-admin.php:362
178
  msgid "Run Sync to update from source code"
179
  msgstr "Kaynak dosyasından güncelleme için Senkr. çalıştır"
180
 
181
+ #: ../lib/loco-admin.php:351
182
  msgid "No strings could be extracted from source code"
183
  msgstr "Kaynak kodundan herhangi cümle çıkarılamadı"
184
 
185
+ #: ../lib/loco-admin.php:358
186
+ #, php-format
187
  msgid "Run Sync to update from %s"
188
  msgstr "%s üzerinden güncelleme için Senkr. çalıştır"
189
 
190
+ #: ../lib/loco-admin.php:377
191
  msgid "Source code has been modified, run Sync to update POT"
192
  msgstr "Kaynak dosyası değiştirilmiş, POT güncellemesi için Senkr. çalıştırın"
193
 
194
+ #: ../lib/loco-admin.php:381
195
  msgid "POT has been modified since PO file was saved, run Sync to update"
196
  msgstr ""
197
+ "PO dosyası en son saklandığından beri POT değişikliğe uğramış, güncelleme "
198
+ "için Senkr. çalıştırın."
199
 
200
+ #: ../lib/loco-admin.php:468
201
  msgid "Bad file path"
202
  msgstr "Uygun olmayan dosya yolu"
203
 
204
+ #: ../lib/loco-admin.php:828
205
  msgctxt "Add button"
206
  msgid "New template"
207
  msgstr "Yeni şablon"
208
 
209
+ #: ../lib/loco-admin.php:847
210
  msgctxt "Add button"
211
  msgid "New language"
212
  msgstr "Yeni dil"
213
 
214
+ #: ../lib/loco-admin.php:886
215
+ #, php-format
216
  msgid "%s%% translated"
217
  msgstr "%s%% çevrildi"
218
 
219
+ #: ../lib/loco-admin.php:886
220
+ #, php-format
221
  msgid "1 string"
222
  msgid_plural "%s strings"
223
  msgstr[0] "1 cümle"
224
  msgstr[1] "%s cümle"
225
 
226
+ #: ../lib/loco-admin.php:889
227
+ #, php-format
228
  msgid "%s fuzzy"
229
  msgstr "%s bulanık"
230
 
231
+ #: ../lib/loco-admin.php:892
232
+ #, php-format
233
  msgid "%s untranslated"
234
  msgstr "%s çevrilmemiş"
235
 
236
+ #: ../lib/loco-admin.php:934
237
  msgid "Failed to compile MO file with built-in compiler"
238
  msgstr "Dahili derleyici ile MO derlemesinde hata"
239
 
240
+ #: ../lib/loco-admin.php:977 ../tpl/admin-nav.tpl.php:21
241
  msgid "Loco, Translation Management"
242
  msgstr "Loco, Çevri Yönetimi"
243
 
244
+ #: ../lib/loco-admin.php:978 ../lib/loco-admin.php:1009
245
  msgid "Manage translations"
246
  msgstr "Çevrileri Yönet"
247
 
248
+ #: ../lib/loco-admin.php:1010 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.
249
+ #: tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ..
250
+ #: tpl/admin-root.tpl.php:7
251
  msgid "Settings"
252
  msgstr "Ayarlar"
253
 
254
+ #: ../lib/loco-admin.php:1034
255
  msgid "File download failed"
256
  msgstr "Dosya indirme hatası"
257
 
258
+ #: ../lib/loco-locales.php:65
259
  msgid "Unknown language"
260
  msgstr "Bilinmeyen dil"
261
 
262
+ #: ../lib/loco-packages.php:423 ../lib/loco-packages.php:430
263
  msgid "Some files not writable"
264
  msgstr "Bazı dosyalar yazılabilir değil"
265
 
266
+ #: ../lib/loco-packages.php:433
267
  msgid "Some files missing"
268
  msgstr "Bazı dosyalar eksik"
269
 
270
+ #: ../lib/loco-packages.php:439 ../lib/loco-packages.php:443
271
+ #, php-format
272
  msgid "\"%s\" folder not writable"
273
  msgstr "\"%s\" dizini yazılabilir değil"
274
 
275
+ #: ../lib/loco-packages.php:464
276
  msgid "POT file not writable"
277
  msgstr "POT dosyası yazılabilir değil"
278
 
279
+ #: ../lib/loco-packages.php:469
280
  msgid "PO file not writable"
281
  msgstr "PO dosyası yazılabilir değil"
282
 
283
+ #: ../lib/loco-packages.php:471
284
  msgid "MO file not writable"
285
  msgstr "MO dosyası yazılabilir değil"
286
 
287
+ #: ../lib/loco-packages.php:471
288
  msgid "MO file not found"
289
  msgstr "MO dosyası bulunamadı"
290
 
291
+ #: ../lib/loco-packages.php:476
292
  msgid "Folder not writable"
293
  msgstr "Dizin yazılabilir değil"
294
 
297
  msgstr "Kullanıcı çevrileri yönetmeye yetkili değil"
298
 
299
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
300
+ #, php-format
301
  msgid "Failed to compile MO file with %s, check your settings"
302
  msgstr "%s ile MO dosyası derlemede hata, ayarlarınızı denetleyin"
303
 
306
  msgstr "Sunucuya gönderili veri geçersiz"
307
 
308
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
309
+ #, php-format
310
  msgid "Package not found called %s"
311
  msgstr "%s isimli paket bulunamadı"
312
 
313
  #: ../php/loco-posave.php:66
314
+ #, php-format
315
  msgid ""
316
+ "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or "
317
+ "create it manually."
318
  msgstr ""
319
+ "Web sunucusu \"%s\" dizini oluşturamıyor \"%s\" içinde. Dosya izinlerini tamir "
320
+ "edin ya da elle oluşturun."
321
 
322
  #: ../php/loco-posave.php:69
323
+ #, php-format
324
  msgid ""
325
+ "Web server cannot create files in the \"%s\" directory. Fix file permissions "
326
+ "or use the download function."
327
  msgstr ""
328
  "Web sunucusu \"%s\" dizini içinde dosya oluşturamıyor. Dosya izinlerini tamir "
329
  "edin ya da indirme fonksiyonunu kullanın."
330
 
331
  #: ../php/loco-posave.php:81
332
+ #, php-format
333
  msgid ""
334
+ "%s file is not writable by the web server. Fix file permissions or download "
335
+ "and copy to \"%s/%s\"."
336
  msgstr ""
337
+ "%s dosyası web sunucu tarafından yazılamaz durumda. Dosya izinlerini tamir "
338
+ "edin ya da indirip \"%s/%s\" yoluna kopyalayın."
339
 
340
  #: ../php/loco-posave.php:102
341
  msgid "Cannot create MO file"
349
  msgid "Failed to write MO file"
350
  msgstr "MO dosyası yazmada hata"
351
 
352
+ #: ../php/loco-posync.php:57
353
  msgid "No strings could be extracted from source files"
354
  msgstr "Kaynak dosyalarından herhangi cümle çıkartılamadı"
355
 
356
+ #: ../pub/js/lang/dummy.php:9
357
  msgid "Unknown error"
358
  msgstr "Bilinmeyen hata"
359
 
360
+ #: ../pub/js/lang/dummy.php:10
361
  msgid "PO file saved"
362
  msgstr "PO dosyası saklandı"
363
 
364
+ #: ../pub/js/lang/dummy.php:11
365
  msgid "and MO file compiled"
366
  msgstr "ve MO dosyası derlendi"
367
 
368
+ #: ../pub/js/lang/dummy.php:12
369
+ #, php-format
370
  msgid "Merged from %s"
371
  msgstr "%s üzerinden birleştirildi"
372
 
373
+ #: ../pub/js/lang/dummy.php:13
374
  msgid "Merged from source code"
375
  msgstr "Kaynak kodtan birleştirildi"
376
 
377
+ #: ../pub/js/lang/dummy.php:14
378
+ #, php-format
379
  msgid "Already up to date with %s"
380
  msgstr "%s ile zaten güncel"
381
 
382
+ #: ../pub/js/lang/dummy.php:15
383
  msgid "Already up to date with source code"
384
  msgstr "Kaynak kod ile zaten güncel"
385
 
386
+ #: ../pub/js/lang/dummy.php:16
387
+ #, php-format
388
  msgid "1 new string added"
389
  msgid_plural "%s new strings added"
390
  msgstr[0] "1 yeni cümle eklendi"
391
  msgstr[1] "%s yeni cümle eklendi"
392
 
393
+ #: ../pub/js/lang/dummy.php:17
394
+ #, php-format
395
  msgid "1 obsolete string removed"
396
  msgid_plural "%s obsolete strings removed"
397
  msgstr[0] "1 kullanımdışı cümle kaldırıldı"
398
  msgstr[1] "%s kullanımdışı cümle kaldırıldı"
399
 
400
+ #: ../pub/js/lang/dummy.php:18
401
  msgid "Your changes will be lost if you continue without saving"
402
  msgstr "Saklamadan devam ederseniz değişiklikleriniz kaybolacak"
403
 
404
+ #: ../pub/js/lang/dummy.php:37
405
  msgid "Translation"
406
  msgstr "Çevri"
407
 
408
+ #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.
409
+ #: tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
410
  msgid "Packages"
411
  msgstr "Paketler"
412
 
415
  msgstr "Dosya denetimi"
416
 
417
  #: ../tpl/admin-fscheck.tpl.php:17
418
+ #, php-format
419
  msgid "File system permissions for %s"
420
  msgstr "%s için dosya sistemi izinleri"
421
 
423
  msgid "Back"
424
  msgstr "Geri"
425
 
426
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:96
427
  msgid "Get help"
428
  msgstr "Yardım al"
429
 
448
  msgstr "Dosya izinleri"
449
 
450
  #: ../tpl/admin-list.tpl.php:43
451
+ #, php-format
452
  msgid "1 language"
453
  msgid_plural "%u languages"
454
  msgstr[0] "1 dil"
459
  msgid "Updated"
460
  msgstr "Güncellenme"
461
 
462
+ #: ../tpl/admin-list.tpl.php:97
463
  msgid "OK"
464
  msgstr "TAMAM"
465
 
491
  msgid "Generate hash tables"
492
  msgstr "Hash tabloları üret"
493
 
494
+ #: ../tpl/admin-opts.tpl.php:95
495
  msgid "Save settings"
496
  msgstr "Ayarları sakla"
497
 
557
  msgstr "Yardım"
558
 
559
  #: ../tpl/admin-poinit.tpl.php:21
560
+ #, php-format
561
  msgid "Initialize new translations in %s"
562
  msgstr "%s için yeni çevriler başlat"
563
 
570
  msgid "or enter any language code"
571
  msgstr "veya herhangi dil kodu gir"
572
 
573
+ #: ../tpl/admin-poinit.tpl.php:68
574
  msgctxt "Submit button"
575
  msgid "Start translating"
576
  msgstr "Çevriye Başla"
580
  msgstr "Yeni versiyon mevcut"
581
 
582
  #: ../tpl/admin-root.tpl.php:21
583
+ #, php-format
584
  msgid "Upgrade to version %s of Loco Translate"
585
  msgstr "Loco Translate'in %s versiyonuna yükselt"
586
 
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: Thu Jan 02 2014 17:30:57 GMT+0000 (GMT)\n"
8
- "POT-Revision-Date: Wed Mar 12 2014 10:14:57 GMT+0000 (GMT)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
@@ -17,25 +17,25 @@ msgstr ""
17
  "X-Poedit-SourceCharset: UTF-8\n"
18
  "X-Poedit-Basepath: .\n"
19
  "X-Poedit-SearchPath-0: ..\n"
20
- "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;__:1;"
21
- "_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;_x:1,2c;"
22
- "_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;esc_attr__:1;"
23
- "esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;esc_html_x:1,2c;"
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 ""
@@ -48,169 +48,187 @@ msgstr ""
48
  msgid "Settings saved"
49
  msgstr ""
50
 
51
- #: ../lib/loco-admin.php:132
52
  msgid "New PO file"
53
  msgstr ""
54
 
55
- #: ../lib/loco-admin.php:244
56
  msgid "You must specify a valid locale for a new PO file"
57
  msgstr ""
58
 
59
- #: ../lib/loco-admin.php:269 ../lib/loco-admin.php:371
60
  msgid "No translatable strings found"
61
  msgstr ""
62
 
63
- #: ../lib/loco-admin.php:269
64
  msgid "Cannot create a PO file."
65
  msgstr ""
66
 
67
- #: ../lib/loco-admin.php:276
 
68
  msgid "PO file already exists with locale %s"
69
  msgstr ""
70
 
71
- #: ../lib/loco-admin.php:317
 
72
  msgid "PO file used as template. This will be renamed to %s on first save"
73
  msgstr ""
74
 
75
- #: ../lib/loco-admin.php:341
76
  msgid ""
77
- "File cannot be created automatically. Fix the file permissions or use Download "
78
- "instead of Save"
79
  msgstr ""
80
 
81
- #: ../lib/loco-admin.php:350 ../lib/loco-admin.php:359
 
82
  msgid "%s file is empty"
83
  msgstr ""
84
 
85
- #: ../lib/loco-admin.php:351 ../lib/loco-admin.php:366
86
  msgid "Run Sync to update from source code"
87
  msgstr ""
88
 
89
- #: ../lib/loco-admin.php:355
90
  msgid "No strings could be extracted from source code"
91
  msgstr ""
92
 
93
- #: ../lib/loco-admin.php:362
 
94
  msgid "Run Sync to update from %s"
95
  msgstr ""
96
 
97
- #: ../lib/loco-admin.php:381
98
  msgid "Source code has been modified, run Sync to update POT"
99
  msgstr ""
100
 
101
- #: ../lib/loco-admin.php:385
102
  msgid "POT has been modified since PO file was saved, run Sync to update"
103
  msgstr ""
104
 
105
- #: ../lib/loco-admin.php:472
106
  msgid "Bad file path"
107
  msgstr ""
108
 
109
- #: ../lib/loco-admin.php:686
 
110
  msgid "Empty or invalid %s file"
111
  msgstr ""
112
 
113
- #: ../lib/loco-admin.php:690
 
114
  msgid "%s file has no header"
115
  msgstr ""
116
 
117
- #: ../lib/loco-admin.php:821
118
  msgctxt "Add button"
119
  msgid "New template"
120
  msgstr ""
121
 
122
- #: ../lib/loco-admin.php:840
123
  msgctxt "Add button"
124
  msgid "New language"
125
  msgstr ""
126
 
127
- #: ../lib/loco-admin.php:879
 
128
  msgid "%s%% translated"
129
  msgstr ""
130
 
131
- #: ../lib/loco-admin.php:879
 
132
  msgid "1 string"
133
  msgid_plural "%s strings"
134
  msgstr[0] ""
135
  msgstr[1] ""
136
 
137
- #: ../lib/loco-admin.php:882
 
138
  msgid "%s fuzzy"
139
  msgstr ""
140
 
141
- #: ../lib/loco-admin.php:885
 
142
  msgid "%s untranslated"
143
  msgstr ""
144
 
145
- #: ../lib/loco-admin.php:927
146
  msgid "Failed to compile MO file with built-in compiler"
147
  msgstr ""
148
 
149
- #: ../lib/loco-admin.php:970 ../tpl/admin-nav.tpl.php:21
150
  msgid "Loco, Translation Management"
151
  msgstr ""
152
 
153
- #: ../lib/loco-admin.php:971 ../lib/loco-admin.php:1002
154
  msgid "Manage translations"
155
  msgstr ""
156
 
157
- #: ../lib/loco-admin.php:972
158
  msgid "Translation options"
159
  msgstr ""
160
 
161
- #: ../lib/loco-admin.php:979
162
  msgid "Loco Translate"
163
  msgstr ""
164
 
165
- #: ../lib/loco-admin.php:1003 ../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
 
 
166
  msgid "Settings"
167
  msgstr ""
168
 
169
- #: ../lib/loco-admin.php:1027
170
  msgid "File download failed"
171
  msgstr ""
172
 
173
- #: ../lib/loco-locales.php:70
174
  msgid "Unknown language"
175
  msgstr ""
176
 
177
- #: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
178
  msgid "Some files not writable"
179
  msgstr ""
180
 
181
- #: ../lib/loco-packages.php:384
182
  msgid "Some files missing"
183
  msgstr ""
184
 
185
- #: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
 
186
  msgid "\"%s\" folder not writable"
187
  msgstr ""
188
 
189
- #: ../lib/loco-packages.php:408
190
  msgid "POT file not writable"
191
  msgstr ""
192
 
193
- #: ../lib/loco-packages.php:413
194
  msgid "PO file not writable"
195
  msgstr ""
196
 
197
- #: ../lib/loco-packages.php:415
198
  msgid "MO file not writable"
199
  msgstr ""
200
 
201
- #: ../lib/loco-packages.php:415
202
  msgid "MO file not found"
203
  msgstr ""
204
 
205
- #: ../lib/loco-packages.php:426
206
  msgid "Folder not writable"
207
  msgstr ""
208
 
 
 
 
 
209
  #: ../php/loco-ajax.php:17 ../php/loco-download.php:21
210
  msgid "User does not have permission to manage translations"
211
  msgstr ""
212
 
213
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
 
214
  msgid "Failed to compile MO file with %s, check your settings"
215
  msgstr ""
216
 
@@ -219,31 +237,36 @@ msgid "Invalid data posted to server"
219
  msgstr ""
220
 
221
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
 
222
  msgid "Package not found called %s"
223
  msgstr ""
224
 
225
  #: ../php/loco-posave.php:58
 
226
  msgid ""
227
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
228
  "backups in settings"
229
  msgstr ""
230
 
231
  #: ../php/loco-posave.php:66
 
232
  msgid ""
233
- "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
234
- "it manually."
235
  msgstr ""
236
 
237
  #: ../php/loco-posave.php:69
 
238
  msgid ""
239
- "Web server cannot create files in the \"%s\" directory. Fix file permissions or "
240
- "use the download function."
241
  msgstr ""
242
 
243
  #: ../php/loco-posave.php:81
 
244
  msgid ""
245
- "%s file is not writable by the web server. Fix file permissions or download and "
246
- "copy to \"%s/%s\"."
247
  msgstr ""
248
 
249
  #: ../php/loco-posave.php:102
@@ -258,7 +281,11 @@ msgstr ""
258
  msgid "Failed to write MO file"
259
  msgstr ""
260
 
261
- #: ../php/loco-posync.php:53
 
 
 
 
262
  msgid "No strings could be extracted from source files"
263
  msgstr ""
264
 
@@ -266,51 +293,81 @@ msgstr ""
266
  msgid "Unknown error"
267
  msgstr ""
268
 
269
- #: ../pub/js/lang/dummy.php:9
270
  msgid "PO file saved"
271
  msgstr ""
272
 
273
- #: ../pub/js/lang/dummy.php:10
274
  msgid "and MO file compiled"
275
  msgstr ""
276
 
277
- #: ../pub/js/lang/dummy.php:11
 
278
  msgid "Merged from %s"
279
  msgstr ""
280
 
281
- #: ../pub/js/lang/dummy.php:12
282
  msgid "Merged from source code"
283
  msgstr ""
284
 
285
- #: ../pub/js/lang/dummy.php:13
 
286
  msgid "Already up to date with %s"
287
  msgstr ""
288
 
289
- #: ../pub/js/lang/dummy.php:14
290
  msgid "Already up to date with source code"
291
  msgstr ""
292
 
293
- #: ../pub/js/lang/dummy.php:15
 
294
  msgid "1 new string added"
295
  msgid_plural "%s new strings added"
296
  msgstr[0] ""
297
  msgstr[1] ""
298
 
299
- #: ../pub/js/lang/dummy.php:16
 
300
  msgid "1 obsolete string removed"
301
  msgid_plural "%s obsolete strings removed"
302
  msgstr[0] ""
303
  msgstr[1] ""
304
 
305
- #: ../pub/js/lang/dummy.php:17
306
  msgid "Your changes will be lost if you continue without saving"
307
  msgstr ""
308
 
309
- #: ../pub/js/lang/dummy.php:23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
310
  msgid "Translation"
311
  msgstr ""
312
 
313
- #: ../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
 
314
  msgid "Packages"
315
  msgstr ""
316
 
@@ -319,6 +376,7 @@ msgid "File check"
319
  msgstr ""
320
 
321
  #: ../tpl/admin-fscheck.tpl.php:17
 
322
  msgid "File system permissions for %s"
323
  msgstr ""
324
 
@@ -326,7 +384,7 @@ msgstr ""
326
  msgid "Back"
327
  msgstr ""
328
 
329
- #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:80
330
  msgid "Get help"
331
  msgstr ""
332
 
@@ -351,6 +409,7 @@ msgid "File permissions"
351
  msgstr ""
352
 
353
  #: ../tpl/admin-list.tpl.php:43
 
354
  msgid "1 language"
355
  msgid_plural "%u languages"
356
  msgstr[0] ""
@@ -361,7 +420,7 @@ msgctxt "Modified time"
361
  msgid "Updated"
362
  msgstr ""
363
 
364
- #: ../tpl/admin-list.tpl.php:98
365
  msgid "OK"
366
  msgstr ""
367
 
@@ -405,7 +464,15 @@ msgstr ""
405
  msgid "Number of backups to keep of each file:"
406
  msgstr ""
407
 
408
- #: ../tpl/admin-opts.tpl.php:79
 
 
 
 
 
 
 
 
409
  msgid "Save settings"
410
  msgstr ""
411
 
@@ -461,16 +528,17 @@ msgctxt "Editor button"
461
  msgid "Fuzzy"
462
  msgstr ""
463
 
464
- #: ../tpl/admin-poedit.tpl.php:139
465
  msgid "Filter translations"
466
  msgstr ""
467
 
468
- #: ../tpl/admin-poedit.tpl.php:143
469
  msgctxt "Editor button"
470
  msgid "Help"
471
  msgstr ""
472
 
473
  #: ../tpl/admin-poinit.tpl.php:21
 
474
  msgid "Initialize new translations in %s"
475
  msgstr ""
476
 
@@ -483,7 +551,18 @@ msgctxt "Form label"
483
  msgid "or enter any language code"
484
  msgstr ""
485
 
486
- #: ../tpl/admin-poinit.tpl.php:51
 
 
 
 
 
 
 
 
 
 
 
487
  msgctxt "Submit button"
488
  msgid "Start translating"
489
  msgstr ""
@@ -493,6 +572,7 @@ msgid "New version available"
493
  msgstr ""
494
 
495
  #: ../tpl/admin-root.tpl.php:21
 
496
  msgid "Upgrade to version %s of Loco Translate"
497
  msgstr ""
498
 
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: Wed May 21 2014 10:56:01 GMT+0100 (BST)\n"
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
  "Last-Translator: \n"
11
  "Language-Team: \n"
17
  "X-Poedit-SourceCharset: UTF-8\n"
18
  "X-Poedit-Basepath: .\n"
19
  "X-Poedit-SearchPath-0: ..\n"
20
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
21
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
22
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
23
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
24
+ "esc_html_x:1,2c;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 ""
48
  msgid "Settings saved"
49
  msgstr ""
50
 
51
+ #: ../lib/loco-admin.php:133
52
  msgid "New PO file"
53
  msgstr ""
54
 
55
+ #: ../lib/loco-admin.php:240
56
  msgid "You must specify a valid locale for a new PO file"
57
  msgstr ""
58
 
59
+ #: ../lib/loco-admin.php:265 ../lib/loco-admin.php:367
60
  msgid "No translatable strings found"
61
  msgstr ""
62
 
63
+ #: ../lib/loco-admin.php:265
64
  msgid "Cannot create a PO file."
65
  msgstr ""
66
 
67
+ #: ../lib/loco-admin.php:272
68
+ #, php-format
69
  msgid "PO file already exists with locale %s"
70
  msgstr ""
71
 
72
+ #: ../lib/loco-admin.php:313
73
+ #, php-format
74
  msgid "PO file used as template. This will be renamed to %s on first save"
75
  msgstr ""
76
 
77
+ #: ../lib/loco-admin.php:337
78
  msgid ""
79
+ "File cannot be created automatically. Fix the file permissions or use "
80
+ "Download instead of Save"
81
  msgstr ""
82
 
83
+ #: ../lib/loco-admin.php:346 ../lib/loco-admin.php:355
84
+ #, php-format
85
  msgid "%s file is empty"
86
  msgstr ""
87
 
88
+ #: ../lib/loco-admin.php:347 ../lib/loco-admin.php:362
89
  msgid "Run Sync to update from source code"
90
  msgstr ""
91
 
92
+ #: ../lib/loco-admin.php:351
93
  msgid "No strings could be extracted from source code"
94
  msgstr ""
95
 
96
+ #: ../lib/loco-admin.php:358
97
+ #, php-format
98
  msgid "Run Sync to update from %s"
99
  msgstr ""
100
 
101
+ #: ../lib/loco-admin.php:377
102
  msgid "Source code has been modified, run Sync to update POT"
103
  msgstr ""
104
 
105
+ #: ../lib/loco-admin.php:381
106
  msgid "POT has been modified since PO file was saved, run Sync to update"
107
  msgstr ""
108
 
109
+ #: ../lib/loco-admin.php:468
110
  msgid "Bad file path"
111
  msgstr ""
112
 
113
+ #: ../lib/loco-admin.php:692
114
+ #, php-format
115
  msgid "Empty or invalid %s file"
116
  msgstr ""
117
 
118
+ #: ../lib/loco-admin.php:696
119
+ #, php-format
120
  msgid "%s file has no header"
121
  msgstr ""
122
 
123
+ #: ../lib/loco-admin.php:828
124
  msgctxt "Add button"
125
  msgid "New template"
126
  msgstr ""
127
 
128
+ #: ../lib/loco-admin.php:847
129
  msgctxt "Add button"
130
  msgid "New language"
131
  msgstr ""
132
 
133
+ #: ../lib/loco-admin.php:886
134
+ #, php-format
135
  msgid "%s%% translated"
136
  msgstr ""
137
 
138
+ #: ../lib/loco-admin.php:886
139
+ #, php-format
140
  msgid "1 string"
141
  msgid_plural "%s strings"
142
  msgstr[0] ""
143
  msgstr[1] ""
144
 
145
+ #: ../lib/loco-admin.php:889
146
+ #, php-format
147
  msgid "%s fuzzy"
148
  msgstr ""
149
 
150
+ #: ../lib/loco-admin.php:892
151
+ #, php-format
152
  msgid "%s untranslated"
153
  msgstr ""
154
 
155
+ #: ../lib/loco-admin.php:934
156
  msgid "Failed to compile MO file with built-in compiler"
157
  msgstr ""
158
 
159
+ #: ../lib/loco-admin.php:977 ../tpl/admin-nav.tpl.php:21
160
  msgid "Loco, Translation Management"
161
  msgstr ""
162
 
163
+ #: ../lib/loco-admin.php:978 ../lib/loco-admin.php:1009
164
  msgid "Manage translations"
165
  msgstr ""
166
 
167
+ #: ../lib/loco-admin.php:979
168
  msgid "Translation options"
169
  msgstr ""
170
 
171
+ #: ../lib/loco-admin.php:986
172
  msgid "Loco Translate"
173
  msgstr ""
174
 
175
+ #: ../lib/loco-admin.php:1010 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.
176
+ #: tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ..
177
+ #: /tpl/admin-root.tpl.php:7
178
  msgid "Settings"
179
  msgstr ""
180
 
181
+ #: ../lib/loco-admin.php:1034
182
  msgid "File download failed"
183
  msgstr ""
184
 
185
+ #: ../lib/loco-locales.php:65
186
  msgid "Unknown language"
187
  msgstr ""
188
 
189
+ #: ../lib/loco-packages.php:423 ../lib/loco-packages.php:430
190
  msgid "Some files not writable"
191
  msgstr ""
192
 
193
+ #: ../lib/loco-packages.php:433
194
  msgid "Some files missing"
195
  msgstr ""
196
 
197
+ #: ../lib/loco-packages.php:439 ../lib/loco-packages.php:443
198
+ #, php-format
199
  msgid "\"%s\" folder not writable"
200
  msgstr ""
201
 
202
+ #: ../lib/loco-packages.php:464
203
  msgid "POT file not writable"
204
  msgstr ""
205
 
206
+ #: ../lib/loco-packages.php:469
207
  msgid "PO file not writable"
208
  msgstr ""
209
 
210
+ #: ../lib/loco-packages.php:471
211
  msgid "MO file not writable"
212
  msgstr ""
213
 
214
+ #: ../lib/loco-packages.php:471
215
  msgid "MO file not found"
216
  msgstr ""
217
 
218
+ #: ../lib/loco-packages.php:476
219
  msgid "Folder not writable"
220
  msgstr ""
221
 
222
+ #: ../lib/loco-packages.php:476
223
+ msgid "Folder not found"
224
+ msgstr ""
225
+
226
  #: ../php/loco-ajax.php:17 ../php/loco-download.php:21
227
  msgid "User does not have permission to manage translations"
228
  msgstr ""
229
 
230
  #: ../php/loco-download.php:75 ../php/loco-posave.php:121
231
+ #, php-format
232
  msgid "Failed to compile MO file with %s, check your settings"
233
  msgstr ""
234
 
237
  msgstr ""
238
 
239
  #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
240
+ #, php-format
241
  msgid "Package not found called %s"
242
  msgstr ""
243
 
244
  #: ../php/loco-posave.php:58
245
+ #, php-format
246
  msgid ""
247
  "Web server cannot create backups in \"%s\". Fix file permissions or disable "
248
  "backups in settings"
249
  msgstr ""
250
 
251
  #: ../php/loco-posave.php:66
252
+ #, php-format
253
  msgid ""
254
+ "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or "
255
+ "create it manually."
256
  msgstr ""
257
 
258
  #: ../php/loco-posave.php:69
259
+ #, php-format
260
  msgid ""
261
+ "Web server cannot create files in the \"%s\" directory. Fix file permissions "
262
+ "or use the download function."
263
  msgstr ""
264
 
265
  #: ../php/loco-posave.php:81
266
+ #, php-format
267
  msgid ""
268
+ "%s file is not writable by the web server. Fix file permissions or download "
269
+ "and copy to \"%s/%s\"."
270
  msgstr ""
271
 
272
  #: ../php/loco-posave.php:102
281
  msgid "Failed to write MO file"
282
  msgstr ""
283
 
284
+ #: ../php/loco-posync.php:47
285
+ msgid "No source files in this package, nothing to sync"
286
+ msgstr ""
287
+
288
+ #: ../php/loco-posync.php:57
289
  msgid "No strings could be extracted from source files"
290
  msgstr ""
291
 
293
  msgid "Unknown error"
294
  msgstr ""
295
 
296
+ #: ../pub/js/lang/dummy.php:10
297
  msgid "PO file saved"
298
  msgstr ""
299
 
300
+ #: ../pub/js/lang/dummy.php:12
301
  msgid "and MO file compiled"
302
  msgstr ""
303
 
304
+ #: ../pub/js/lang/dummy.php:15
305
+ #, php-format
306
  msgid "Merged from %s"
307
  msgstr ""
308
 
309
+ #: ../pub/js/lang/dummy.php:17
310
  msgid "Merged from source code"
311
  msgstr ""
312
 
313
+ #: ../pub/js/lang/dummy.php:19
314
+ #, php-format
315
  msgid "Already up to date with %s"
316
  msgstr ""
317
 
318
+ #: ../pub/js/lang/dummy.php:21
319
  msgid "Already up to date with source code"
320
  msgstr ""
321
 
322
+ #: ../pub/js/lang/dummy.php:23
323
+ #, php-format
324
  msgid "1 new string added"
325
  msgid_plural "%s new strings added"
326
  msgstr[0] ""
327
  msgstr[1] ""
328
 
329
+ #: ../pub/js/lang/dummy.php:25
330
+ #, php-format
331
  msgid "1 obsolete string removed"
332
  msgid_plural "%s obsolete strings removed"
333
  msgstr[0] ""
334
  msgstr[1] ""
335
 
336
+ #: ../pub/js/lang/dummy.php:27
337
  msgid "Your changes will be lost if you continue without saving"
338
  msgstr ""
339
 
340
+ #. label for the window pane holding native translation
341
+ #: ../pub/js/lang/dummy.php:35
342
+ msgctxt "Editor pane"
343
+ msgid "Source text"
344
+ msgstr ""
345
+
346
+ #. where %s is the language, e.g French translation
347
+ #: ../pub/js/lang/dummy.php:38
348
+ #, php-format
349
+ msgctxt "Editor pane"
350
+ msgid "%s translation"
351
+ msgstr ""
352
+
353
+ #. label for the window pane holding translator comments
354
+ #: ../pub/js/lang/dummy.php:41
355
+ msgctxt "Editor pane"
356
+ msgid "Comments"
357
+ msgstr ""
358
+
359
+ #. label for the window pane holding message context
360
+ #: ../pub/js/lang/dummy.php:44
361
+ msgctxt "Editor pane"
362
+ msgid "Context"
363
+ msgstr ""
364
+
365
+ #: ../pub/js/lang/dummy.php:52
366
  msgid "Translation"
367
  msgstr ""
368
 
369
+ #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.
370
+ #: tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
371
  msgid "Packages"
372
  msgstr ""
373
 
376
  msgstr ""
377
 
378
  #: ../tpl/admin-fscheck.tpl.php:17
379
+ #, php-format
380
  msgid "File system permissions for %s"
381
  msgstr ""
382
 
384
  msgid "Back"
385
  msgstr ""
386
 
387
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:96
388
  msgid "Get help"
389
  msgstr ""
390
 
409
  msgstr ""
410
 
411
  #: ../tpl/admin-list.tpl.php:43
412
+ #, php-format
413
  msgid "1 language"
414
  msgid_plural "%u languages"
415
  msgstr[0] ""
420
  msgid "Updated"
421
  msgstr ""
422
 
423
+ #: ../tpl/admin-list.tpl.php:97
424
  msgid "OK"
425
  msgstr ""
426
 
464
  msgid "Number of backups to keep of each file:"
465
  msgstr ""
466
 
467
+ #: ../tpl/admin-opts.tpl.php:77 ../tpl/admin-opts.tpl.php:81
468
+ msgid "Experimental features"
469
+ msgstr ""
470
+
471
+ #: ../tpl/admin-opts.tpl.php:86
472
+ msgid "Enable Wordpress core translations"
473
+ msgstr ""
474
+
475
+ #: ../tpl/admin-opts.tpl.php:95
476
  msgid "Save settings"
477
  msgstr ""
478
 
528
  msgid "Fuzzy"
529
  msgstr ""
530
 
531
+ #: ../tpl/admin-poedit.tpl.php:140
532
  msgid "Filter translations"
533
  msgstr ""
534
 
535
+ #: ../tpl/admin-poedit.tpl.php:145
536
  msgctxt "Editor button"
537
  msgid "Help"
538
  msgstr ""
539
 
540
  #: ../tpl/admin-poinit.tpl.php:21
541
+ #, php-format
542
  msgid "Initialize new translations in %s"
543
  msgstr ""
544
 
551
  msgid "or enter any language code"
552
  msgstr ""
553
 
554
+ #: ../tpl/admin-poinit.tpl.php:58
555
+ #, php-format
556
+ msgctxt "Form label"
557
+ msgid "create in <code>%s</code>"
558
+ msgstr ""
559
+
560
+ #: ../tpl/admin-poinit.tpl.php:63
561
+ msgctxt "Form label"
562
+ msgid "create in global languages directory"
563
+ msgstr ""
564
+
565
+ #: ../tpl/admin-poinit.tpl.php:68
566
  msgctxt "Submit button"
567
  msgid "Start translating"
568
  msgstr ""
572
  msgstr ""
573
 
574
  #: ../tpl/admin-root.tpl.php:21
575
+ #, php-format
576
  msgid "Upgrade to version %s of Loco Translate"
577
  msgstr ""
578
 
lib/build/gettext-compiled.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
  * Compiled source build from Loco core.
4
- * Mon, 10 Mar 2014 11:48:38 +0000
5
  */
6
- 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; } class LocoMoParser { private $bin; private $be; private $n; private $o; private $t; private $v; public function __construct( $bin ){ $this->bin = $bin; } public function getAt( $idx ){ $offset = $this->targetOffset(); $offset += ( $idx * 8 ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false === strpos( $txt, "\0") ){ return $txt; } return explode( "\0", $txt ); } public function parse(){ $sourceOffset = $this->sourceOffset(); $targetOffset = $this->targetOffset(); $r = array(); $p = array(); $i = 0; $offset = $sourceOffset; while( $offset < $targetOffset ){ $r[$i] = array( 'id' => '', 'source' => '', 'target' => '' ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $src = $this->bytes( $idx, $len ); $eot = strpos( $src, "\x04" ); if( false !== $eot ){ $r[$i]['context'] = substr($src, 0, $eot ); $src = substr( $src, $eot+1 ); } $nul = strpos( $src, "\0" ); if( false !== $nul ){ $p[$i][1] = array( 'id' => '', 'source' => substr($src, $nul+1 ), 'target' => '', 'parent' => $i, 'plural' => 1 ); $src = substr( $src, 0, $nul ); } $r[$i++]['source'] = $src; $offset += 8; } $t = $i; $offset = $targetOffset; for( $i = 0; $i < $t; $i++ ){ $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false !== strpos( $txt, "\0" ) ){ if( ! isset($p[$i][1]) ){ throw new Exception('Encountered translated plural without msgid_plural'); } $arr = explode( "\0", $txt ); $txt = array_shift( $arr ); foreach( $arr as $_i => $plural_txt ){ $plural_idx = $_i + 1; $p[$i][$plural_idx]['target'] = $plural_txt; } } $r[$i]['target'] = $txt; $offset += 8; } foreach( $p as $parent_id => $plurals ){ foreach( $plurals as $plural_idx => $msg ){ if( 1 < $plural_idx ){ $msg['source'] = $plurals[1]['source'].' (plural '.$plural_idx.')'; } $msg['parent'] = $parent_id; $msg['plural'] = $plural_idx; $r[] = $msg; } } return $r; } public function isBigendian(){ while( is_null($this->be) ){ $str = $this->words( 0, 2 ); $arr = unpack('V', $str); if( 0x950412de === $arr[1] ){ $this->be = false; break; } if( 0xde120495 === $arr[1] ){ $this->be = true; break; } throw new Exception('Invalid MO format'); } return $this->be; } public function version(){ if( is_null($this->v) ){ $this->v = $this->integerWord(1); } return $this->v; } public function count(){ if( is_null($this->n) ){ $this->n = $this->integerWord(2); } return $this->n; } public function sourceOffset(){ if( is_null($this->o) ){ $this->o = $this->integerWord(3); } return $this->o; } public function targetOffset(){ if( is_null($this->t) ){ $this->t = $this->integerWord(4); } return $this->t; } public function getHashTable(){ $s = $this->integerWord(5); $h = $this->integerWord(6); return $this->bytes( $h, $s * 4 ); } private function bytes( $offset, $length ){ return substr( $this->bin, $offset, $length ); } private function words( $offset, $length ){ return $this->bytes( $offset * 4, $length * 4 ); } private function integerWord( $offset ){ return $this->integerAt( $offset * 4 ); } private function integerAt( $offset ){ $str = $this->bytes( $offset, 4 ); $fmt = $this->isBigendian() ? 'N' : 'V'; $arr = unpack( $fmt, $str ); if( ! isset($arr[1]) || ! is_int($arr[1]) ){ throw new Exception('Failed to read 32 bit integer at byte '.$offset); } return $arr[1]; } } function loco_parse_mo( $src ){ $mo = new LocoMoParser($src); return $mo->parse(); } final class PHPTokens implements Iterator { private $tokens; private $i; private $skip_tokens = array(); private $skip_strings = array(); private $literal_tokens = array(); public function __construct( array $tokens ){ $this->tokens = $tokens; $this->rewind(); } public function literal(){ foreach( func_get_args() as $t ){ $this->literal_tokens[ $t ] = 1; } return $this; } 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 export(){ $arr = array(); foreach( $this as $tok ){ $arr[] = $tok; } return $arr; } 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 if( isset($this->literal_tokens[$tok[0]]) ){ return $tok[1]; } 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: 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' => 'Loco', 'Language' => 'English', 'Plural-Forms' => 'nplurals=2; plural=(n!=1);', '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); } else { return 0; } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2, got '.$this->size); } } 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'); }
1
  <?php
2
  /**
3
  * Compiled source build from Loco core.
4
+ * Mon, 09 Jun 2014 17:41:06 +0100
5
  */
6
+ 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 ); } } function loco_sniff_printf( $str ){ return (bool) preg_match('/%(?:\d\$)?(?:\+|-)?[ 0]?-?\d*(?:\.\d+)?[bcdeEfFgGosuxX]/', $str ); } 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_reference_id( $refs, &$_id ){ if( false === ( $n = strpos($refs,'loco:') ) ){ $_id = ''; return $refs; } $_id = substr($refs, $n+5, 24 ); $refs = substr_replace( $refs, '', $n, 29 ); return trim( $refs ); } 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]), ); $parse_printf = true; if( isset($entry['ctxt'][0]) ){ $asset['context'] = implode('',$entry['ctxt'][0]); } if( isset($entry['#'][' ']) ){ $asset['comment'] = implode("\n", $entry['#'][' '] ); } if( isset($entry['#']['.']) ){ $asset['notes'] = implode("\n", $entry['#']['.'] ); } if( isset($entry['#'][':']) ){ if( $refs = implode( "\n", $entry['#'][':'] ) ) { if( $refs = loco_parse_reference_id( $refs, $_id ) ){ $asset['refs'] = $refs; } if( $_id ){ $asset['_id'] = $_id; } } } if( isset($entry['#'][',']) ){ foreach( $entry['#'][','] as $flag ){ if( preg_match('/((?:no-)?\w+)-format/', $flag, $r ) ){ $parse_printf = false; if( 'no-' === substr($r[1],0,3) ){ $asset['format'] = false; } else { $asset['format'] = $r[1]; } } else if( $flag = loco_po_parse_flag($flag) ){ $asset['flag'] = $flag; break; } } } if( $parse_printf ){ if( $asset['source'] && loco_sniff_printf( $asset['source'] ) ){ $asset['format'] = 'c'; $parse_printf = false; } } $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 ){ $plural = array ( 'id' => '', 'source' => '', 'target' => isset($entry['str'][$idx]) ? implode('',$entry['str'][$idx]) : '', 'plural' => $idx, 'parent' => $pidx, ); if( 1 === $idx ){ $plural['source'] = isset($entry['id_plural'][0]) ? implode('',$entry['id_plural'][0]) : ''; } if( $parse_printf ){ if( $plural['source'] && loco_sniff_printf( $plural['source'] ) ){ $assets[$pidx]['format'] = 'c'; $parse_printf = false; } } $assets[] = $plural; } } } 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; } class LocoMoParser { private $bin; private $be; private $n; private $o; private $t; private $v; public function __construct( $bin ){ $this->bin = $bin; } public function getAt( $idx ){ $offset = $this->targetOffset(); $offset += ( $idx * 8 ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false === strpos( $txt, "\0") ){ return $txt; } return explode( "\0", $txt ); } public function parse(){ $sourceOffset = $this->sourceOffset(); $targetOffset = $this->targetOffset(); $r = array(); $p = array(); $i = 0; $offset = $sourceOffset; while( $offset < $targetOffset ){ $r[$i] = array( 'id' => '', 'source' => '', 'target' => '' ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $src = $this->bytes( $idx, $len ); $eot = strpos( $src, "\x04" ); if( false !== $eot ){ $r[$i]['context'] = substr($src, 0, $eot ); $src = substr( $src, $eot+1 ); } $nul = strpos( $src, "\0" ); if( false !== $nul ){ $p[$i][1] = array( 'id' => '', 'source' => substr($src, $nul+1 ), 'target' => '', 'parent' => $i, 'plural' => 1 ); $src = substr( $src, 0, $nul ); } $r[$i++]['source'] = $src; $offset += 8; } $t = $i; $offset = $targetOffset; for( $i = 0; $i < $t; $i++ ){ $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false !== strpos( $txt, "\0" ) ){ if( ! isset($p[$i][1]) ){ throw new Exception('Encountered translated plural without msgid_plural'); } $arr = explode( "\0", $txt ); $txt = array_shift( $arr ); foreach( $arr as $_i => $plural_txt ){ $plural_idx = $_i + 1; $p[$i][$plural_idx]['target'] = $plural_txt; } } $r[$i]['target'] = $txt; $offset += 8; } foreach( $p as $parent_id => $plurals ){ foreach( $plurals as $plural_idx => $msg ){ if( 1 < $plural_idx ){ $msg['source'] = $plurals[1]['source'].' (plural '.$plural_idx.')'; } $msg['parent'] = $parent_id; $msg['plural'] = $plural_idx; $r[] = $msg; } } return $r; } public function isBigendian(){ while( is_null($this->be) ){ $str = $this->words( 0, 2 ); $arr = unpack('V', $str); if( 0x950412de === $arr[1] ){ $this->be = false; break; } if( 0xde120495 === $arr[1] ){ $this->be = true; break; } throw new Exception('Invalid MO format'); } return $this->be; } public function version(){ if( is_null($this->v) ){ $this->v = $this->integerWord(1); } return $this->v; } public function count(){ if( is_null($this->n) ){ $this->n = $this->integerWord(2); } return $this->n; } public function sourceOffset(){ if( is_null($this->o) ){ $this->o = $this->integerWord(3); } return $this->o; } public function targetOffset(){ if( is_null($this->t) ){ $this->t = $this->integerWord(4); } return $this->t; } public function getHashTable(){ $s = $this->integerWord(5); $h = $this->integerWord(6); return $this->bytes( $h, $s * 4 ); } private function bytes( $offset, $length ){ return substr( $this->bin, $offset, $length ); } private function words( $offset, $length ){ return $this->bytes( $offset * 4, $length * 4 ); } private function integerWord( $offset ){ return $this->integerAt( $offset * 4 ); } private function integerAt( $offset ){ $str = $this->bytes( $offset, 4 ); $fmt = $this->isBigendian() ? 'N' : 'V'; $arr = unpack( $fmt, $str ); if( ! isset($arr[1]) || ! is_int($arr[1]) ){ throw new Exception('Failed to read 32 bit integer at byte '.$offset); } return $arr[1]; } } function loco_parse_mo( $src ){ $mo = new LocoMoParser($src); return $mo->parse(); } final class PHPTokens implements Iterator { private $tokens; private $i; private $skip_tokens = array(); private $skip_strings = array(); private $literal_tokens = array(); public function __construct( array $tokens ){ $this->tokens = $tokens; $this->rewind(); } public function literal(){ foreach( func_get_args() as $t ){ $this->literal_tokens[ $t ] = 1; } return $this; } 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 export(){ $arr = array(); foreach( $this as $tok ){ $arr[] = $tok; } return $arr; } public function advance(){ $this->next(); return $this->current(); } public function pop(){ $tok = array_pop( $this->tokens ); $this->rewind(); return $tok; } public function shift(){ $tok = array_shift( $this->tokens); $this->rewind(); return $tok; } public function rewind(){ $this->i = ( false === reset($this->tokens) ? null : key($this->tokens) ); } public function valid(){ while( isset($this->i) ){ $tok = $this->tokens[$this->i]; if( is_array($tok) ){ if( isset($this->skip_tokens[$tok[0]]) ){ $this->next(); } else { return true; } } else if( isset($this->skip_strings[$tok]) ){ $this->next(); } else { return true; } } return false; } public function key(){ return $this->i; } public function next(){ $this->i = ( false === next($this->tokens) ? null : key($this->tokens) ); } public function current(){ if( ! $this->valid() ){ return false; } $tok = $this->tokens[$this->i]; if( is_array($tok) && isset($this->literal_tokens[$tok[0]]) ){ return $tok[1]; } return $tok; } public function __toString(){ $s = ''; foreach( $this as $token ){ $s .= is_array($token) ? $token[1] : $token; } return $s; } } 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: 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; } $parse_printf = true; if( $comment ){ if( preg_match('/xgettext:\s*((?:no-)?\w+)-format/', $comment, $r ) ){ if( 'no-' === substr($r[1],0,3) ){ $entry['format'] = false; } else { $entry['format'] = $r[1]; } $comment = str_replace( $r[0], '', $comment ); $parse_printf = false; } $entry['notes'] = loco_parse_comment($comment); } if( $parse_printf && loco_sniff_printf( $msgid ) ){ $entry['format'] = 'php'; $parse_printf = false; } 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, ); if( $parse_printf && loco_sniff_printf( $msgid_plural ) ){ $this->exp[$index]['format'] = 'php'; } $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' => 'Loco', 'Language' => 'English', 'Plural-Forms' => 'nplurals=2; plural=(n!=1);', '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); } else { return 0; } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2, got '.$this->size); } } 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
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
  * Compiled source build from Loco core.
4
- * Mon, 10 Mar 2014 11:48:38 +0000
5
  */
6
- 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_TH";s:15:"Thai (Thailand)";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)";}');
1
  <?php
2
  /**
3
  * Compiled source build from Loco core.
4
+ * Mon, 09 Jun 2014 18:07:29 +0100
5
  */
6
+ function loco_language_country( $lang ){ static $a; if( ! isset($a) ){ $a = unserialize('a:79:{s:2:"af";s:2:"ZA";s:2:"ar";s:2:"IL";s:2:"az";s:2:"TR";s:2:"bg";s:2:"BG";s:2:"bn";s:2:"BD";s:2:"bs";s:2:"BA";s:2:"cs";s:2:"CZ";s:2:"cy";s:2:"GB";s:2:"da";s:2:"DK";s:2:"de";s:2:"DE";s:2:"el";s:2:"GR";s:2:"en";s:2:"GB";s:2:"es";s:2:"ES";s:2:"et";s:2:"EE";s:2:"fa";s:2:"AF";s:2:"fi";s:2:"FI";s:2:"fo";s:2:"FO";s:2:"fr";s:2:"FR";s:2:"ga";s:2:"IE";s:2:"gl";s:2:"ES";s:2:"gn";s:2:"PY";s:2:"he";s:2:"IL";s:2:"hi";s:2:"IN";s:2:"hr";s:2:"HR";s:2:"ht";s:2:"HT";s:2:"hu";s:2:"HU";s:2:"hy";s:2:"AM";s:2:"id";s:2:"ID";s:2:"is";s:2:"IS";s:2:"it";s:2:"IT";s:2:"ja";s:2:"JP";s:2:"jv";s:2:"ID";s:2:"ka";s:2:"GE";s:2:"kk";s:2:"KZ";s:2:"kn";s:2:"IN";s:2:"ko";s:2:"KR";s:2:"lb";s:2:"LU";s:2:"li";s:2:"NL";s:2:"lo";s:2:"LA";s:2:"lt";s:2:"LT";s:2:"lv";s:2:"LV";s:2:"mg";s:2:"MG";s:2:"ms";s:2:"MY";s:2:"mt";s:2:"MT";s:2:"my";s:2:"MM";s:2:"nb";s:2:"NO";s:2:"ne";s:2:"NP";s:2:"nl";s:2:"NL";s:2:"nn";s:2:"NO";s:2:"no";s:2:"NO";s:2:"os";s:2:"TR";s:2:"pa";s:2:"IN";s:2:"pl";s:2:"PL";s:2:"pt";s:2:"PT";s:2:"ro";s:2:"RO";s:2:"ru";s:2:"RU";s:2:"sa";s:2:"IN";s:2:"sc";s:2:"IT";s:2:"sd";s:2:"PK";s:2:"si";s:2:"LK";s:2:"sk";s:2:"SK";s:2:"sl";s:2:"SI";s:2:"so";s:2:"SO";s:2:"sq";s:2:"AL";s:2:"sr";s:2:"RS";s:2:"su";s:2:"ID";s:2:"sv";s:2:"SE";s:2:"sw";s:2:"KE";s:2:"ta";s:2:"IN";s:2:"te";s:2:"IN";s:2:"tg";s:2:"TJ";s:2:"th";s:2:"TH";s:2:"tr";s:2:"TR";s:2:"ug";s:2:"CN";s:2:"uk";s:2:"UA";s:2:"ur";s:2:"IN";s:2:"uz";s:2:"UZ";s:2:"vi";s:2:"VN";s:2:"zh";s:2:"CN";}'); } if( isset($a[$lang]) ){ return $a[$lang]; } return ''; } return unserialize('a:3:{s:7:"locales";a:79:{s:2:"af";a:1:{s:2:"ZA";s:24:"Afrikaans (South Africa)";}s:2:"ar";a:2:{s:2:"IL";s:15:"Arabic (Israel)";s:2:"AE";s:29:"Arabic (United Arab Emirates)";}s:2:"az";a:1:{s:2:"TR";s:20:"Azerbaijani (Turkey)";}s:2:"bg";a:1:{s:2:"BG";s:9:"Bulgarian";}s:2:"bn";a:1:{s:2:"BD";s:20:"Bengali (Bangladesh)";}s:2:"bs";a:1:{s:2:"BA";s:30:"Bosnian (Bosnia & Herzegovina)";}s:2:"cs";a:1:{s:2:"CZ";s:5:"Czech";}s:2:"cy";a:1:{s:2:"GB";s:5:"Welsh";}s:2:"da";a:1:{s:2:"DK";s:6:"Danish";}s:2:"de";a:3:{s:2:"DE";s:6:"German";s:2:"CH";s:20:"German (Switzerland)";s:2:"AT";s:16:"German (Austria)";}s:2:"el";a:2:{s:2:"GR";s:5:"Greek";s:2:"CY";s:14:"Greek (Cyprus)";}s:2:"en";a:11:{s:2:"GB";s:12:"English (UK)";s:2:"IE";s:17:"English (Ireland)";s:2:"US";s:13:"English (USA)";s:2:"CA";s:16:"English (Canada)";s:2:"AU";s:19:"English (Australia)";s:2:"NZ";s:21:"English (New Zealand)";s:2:"HK";s:19:"English (Hong Kong)";s:2:"SG";s:19:"English (Singapore)";s:2:"AE";s:30:"English (United Arab Emirates)";s:2:"ZA";s:22:"English (South Africa)";s:2:"IN";s:15:"English (India)";}s:2:"es";a:19:{s:2:"ES";s:7:"Spanish";s:2:"MX";s:16:"Spanish (Mexico)";s:2:"AR";s:19:"Spanish (Argentina)";s:2:"BO";s:17:"Spanish (Bolivia)";s:2:"CL";s:15:"Spanish (Chile)";s:2:"CO";s:18:"Spanish (Colombia)";s:2:"CR";s:20:"Spanish (Costa Rica)";s:2:"CU";s:14:"Spanish (Cuba)";s:2:"DO";s:28:"Spanish (Dominican Republic)";s:2:"EC";s:17:"Spanish (Ecuador)";s:2:"SV";s:21:"Spanish (El Salvador)";s:2:"GT";s:19:"Spanish (Guatemala)";s:2:"HN";s:18:"Spanish (Honduras)";s:2:"NI";s:19:"Spanish (Nicaragua)";s:2:"PA";s:16:"Spanish (Panama)";s:2:"PY";s:18:"Spanish (Paraguay)";s:2:"PE";s:14:"Spanish (Peru)";s:2:"UY";s:17:"Spanish (Uruguay)";s:2:"VE";s:19:"Spanish (Venezuela)";}s:2:"et";a:1:{s:2:"EE";s:8:"Estonian";}s:2:"fa";a:2:{s:2:"AF";s:21:"Persian (Afghanistan)";s:2:"IR";s:14:"Persian (Iran)";}s:2:"fi";a:1:{s:2:"FI";s:7:"Finnish";}s:2:"fo";a:2:{s:2:"FO";s:23:"Faroese (Faroe Islands)";s:2:"DK";s:17:"Faroese (Denmark)";}s:2:"fr";a:5:{s:2:"FR";s:6:"French";s:2:"CH";s:20:"French (Switzerland)";s:2:"BE";s:16:"French (Belgium)";s:2:"HT";s:14:"French (Haiti)";s:2:"CA";s:15:"French (Canada)";}s:2:"ga";a:1:{s:2:"IE";s:15:"Irish (Ireland)";}s:2:"gl";a:1:{s:2:"ES";s:16:"Galician (Spain)";}s:2:"gn";a:1:{s:2:"PY";s:18:"Guarani (Paraguay)";}s:2:"he";a:1:{s:2:"IL";s:15:"Hebrew (Israel)";}s:2:"hi";a:1:{s:2:"IN";s:13:"Hindi (India)";}s:2:"hr";a:1:{s:2:"HR";s:8:"Croatian";}s:2:"ht";a:1:{s:2:"HT";s:14:"Haitian Creole";}s:2:"hu";a:1:{s:2:"HU";s:9:"Hungarian";}s:2:"hy";a:1:{s:2:"AM";s:8:"Armenian";}s:2:"id";a:1:{s:2:"ID";s:10:"Indonesian";}s:2:"is";a:1:{s:2:"IS";s:9:"Icelandic";}s:2:"it";a:2:{s:2:"IT";s:7:"Italian";s:2:"CH";s:21:"Italian (Switzerland)";}s:2:"ja";a:1:{s:2:"JP";s:8:"Japanese";}s:2:"jv";a:1:{s:2:"ID";s:20:"Javanese (Indonesia)";}s:2:"ka";a:1:{s:2:"GE";s:8:"Georgian";}s:2:"kk";a:1:{s:2:"KZ";s:6:"Kazakh";}s:2:"kn";a:1:{s:2:"IN";s:15:"Kannada (India)";}s:2:"ko";a:1:{s:2:"KR";s:6:"Korean";}s:2:"lb";a:1:{s:2:"LU";s:13:"Luxembourgish";}s:2:"li";a:1:{s:2:"NL";s:24:"Limburgish (Netherlands)";}s:2:"lo";a:1:{s:2:"LA";s:10:"Lao (Laos)";}s:2:"lt";a:1:{s:2:"LT";s:10:"Lithuanian";}s:2:"lv";a:1:{s:2:"LV";s:7:"Latvian";}s:2:"mg";a:1:{s:2:"MG";s:21:"Malagasy (Madagascar)";}s:2:"ms";a:1:{s:2:"MY";s:16:"Malay (Malaysia)";}s:2:"mt";a:1:{s:2:"MT";s:7:"Maltese";}s:2:"my";a:1:{s:2:"MM";s:17:"Burmese (Myanmar)";}s:2:"nb";a:1:{s:2:"NO";s:7:"Bokmål";}s:2:"ne";a:1:{s:2:"NP";s:6:"Nepali";}s:2:"nl";a:2:{s:2:"NL";s:5:"Dutch";s:2:"BE";s:15:"Dutch (Belgium)";}s:2:"nn";a:1:{s:2:"NO";s:7:"Nynorsk";}s:2:"no";a:1:{s:2:"NO";s:9:"Norwegian";}s:2:"os";a:3:{s:2:"TR";s:17:"Ossetian (Turkey)";s:2:"RU";s:17:"Ossetian (Russia)";s:2:"GE";s:18:"Ossetian (Georgia)";}s:2:"pa";a:1:{s:2:"IN";s:15:"Punjabi (India)";}s:2:"pl";a:1:{s:2:"PL";s:6:"Polish";}s:2:"pt";a:2:{s:2:"PT";s:10:"Portuguese";s:2:"BR";s:19:"Portuguese (Brazil)";}s:2:"ro";a:1:{s:2:"RO";s:8:"Romanian";}s:2:"ru";a:2:{s:2:"RU";s:7:"Russian";s:2:"UA";s:17:"Russian (Ukraine)";}s:2:"sa";a:1:{s:2:"IN";s:16:"Sanskrit (India)";}s:2:"sc";a:1:{s:2:"IT";s:17:"Sardinian (Italy)";}s:2:"sd";a:1:{s:2:"PK";s:17:"Sindhi (Pakistan)";}s:2:"si";a:1:{s:2:"LK";s:19:"Sinhala (Sri Lanka)";}s:2:"sk";a:1:{s:2:"SK";s:6:"Slovak";}s:2:"sl";a:1:{s:2:"SI";s:9:"Slovenian";}s:2:"so";a:1:{s:2:"SO";s:6:"Somali";}s:2:"sq";a:1:{s:2:"AL";s:18:"Albanian (Albania)";}s:2:"sr";a:1:{s:2:"RS";s:7:"Serbian";}s:2:"su";a:1:{s:2:"ID";s:21:"Sundanese (Indonesia)";}s:2:"sv";a:1:{s:2:"SE";s:7:"Swedish";}s:2:"sw";a:4:{s:2:"KE";s:15:"Swahili (Kenya)";s:2:"UG";s:16:"Swahili (Uganda)";s:2:"TZ";s:18:"Swahili (Tanzania)";s:2:"KM";s:17:"Swahili (Comoros)";}s:2:"ta";a:2:{s:2:"IN";s:13:"Tamil (India)";s:2:"LK";s:17:"Tamil (Sri Lanka)";}s:2:"te";a:1:{s:2:"IN";s:14:"Telugu (India)";}s:2:"tg";a:1:{s:2:"TJ";s:18:"Tajik (Tajikistan)";}s:2:"th";a:1:{s:2:"TH";s:15:"Thai (Thailand)";}s:2:"tr";a:1:{s:2:"TR";s:7:"Turkish";}s:2:"ug";a:1:{s:2:"CN";s:14:"Uyghur (China)";}s:2:"uk";a:1:{s:2:"UA";s:19:"Ukrainian (Ukraine)";}s:2:"ur";a:2:{s:2:"IN";s:12:"Urdu (India)";s:2:"PK";s:15:"Urdu (Pakistan)";}s:2:"uz";a:1:{s:2:"UZ";s:18:"Uzbek (Uzbekistan)";}s:2:"vi";a:1:{s:2:"VN";s:10:"Vietnamese";}s:2:"zh";a:3:{s:2:"CN";s:7:"Chinese";s:2:"HK";s:19:"Chinese (Hong Kong)";s:2:"TW";s:16:"Chinese (Taiwan)";}}s:5:"langs";a:185:{s:2:"ab";a:3:{i:0;s:9:"Abkhazian";i:1;s:0:"";i:2;a:0:{}}s:2:"aa";a:3:{i:0;s:4:"Afar";i:1;s:0:"";i:2;a:0:{}}s:2:"af";a:3:{i:0;s:9:"Afrikaans";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ak";a:3:{i:0;s:4:"Akan";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"sq";a:3:{i:0;s:8:"Albanian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"am";a:3:{i:0;s:7:"Amharic";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ar";a:3:{i:0;s:6:"Arabic";i:1;s:95:"n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100 >= 3 && n%100<=10 ? 3 : n%100 >= 11 && n%100<=99 ? 4 : 5";i:2;a:6:{i:0;s:4:"zero";i:1;s:3:"one";i:2;s:3:"two";i:3;s:3:"few";i:4;s:4:"many";i:5;s:5:"other";}}s:2:"an";a:3:{i:0;s:9:"Aragonese";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"hy";a:3:{i:0;s:8:"Armenian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"as";a:3:{i:0;s:8:"Assamese";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"av";a:3:{i:0;s:6:"Avaric";i:1;s:0:"";i:2;a:0:{}}s:2:"ae";a:3:{i:0;s:7:"Avestan";i:1;s:0:"";i:2;a:0:{}}s:2:"ay";a:3:{i:0;s:6:"Aymara";i:1;s:0:"";i:2;a:0:{}}s:2:"az";a:3:{i:0;s:11:"Azerbaijani";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"bm";a:3:{i:0;s:7:"Bambara";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"ba";a:3:{i:0;s:7:"Bashkir";i:1;s:0:"";i:2;a:0:{}}s:2:"eu";a:3:{i:0;s:6:"Basque";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"be";a:3:{i:0;s:10:"Belarusian";i:1;s:82:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:4:"many";}}s:2:"bn";a:3:{i:0;s:7:"Bengali";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"bh";a:3:{i:0;s:6:"Bihari";i:1;s:28:"( n >= 0 && n <= 1 ) ? 0 : 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"bi";a:3:{i:0;s:7:"Bislama";i:1;s:0:"";i:2;a:0:{}}s:2:"bs";a:3:{i:0;s:7:"Bosnian";i:1;s:82:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}s:2:"br";a:3:{i:0;s:6:"Breton";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"bg";a:3:{i:0;s:9:"Bulgarian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"my";a:3:{i:0;s:7:"Burmese";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"ca";a:3:{i:0;s:18:"Catalan; Valencian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ch";a:3:{i:0;s:8:"Chamorro";i:1;s:0:"";i:2;a:0:{}}s:2:"ce";a:3:{i:0;s:7:"Chechen";i:1;s:0:"";i:2;a:0:{}}s:2:"ny";a:3:{i:0;s:23:"Chichewa; Chewa; Nyanja";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"zh";a:3:{i:0;s:7:"Chinese";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"cu";a:3:{i:0;s:64:"Church Slavic; Old Slavonic; Church Slavonic; Old Bulgarian; Old";i:1;s:0:"";i:2;a:0:{}}s:2:"cv";a:3:{i:0;s:7:"Chuvash";i:1;s:0:"";i:2;a:0:{}}s:2:"kw";a:3:{i:0;s:7:"Cornish";i:1;s:27:"n == 1 ? 0 : n == 2 ? 1 : 2";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:5:"other";}}s:2:"co";a:3:{i:0;s:8:"Corsican";i:1;s:0:"";i:2;a:0:{}}s:2:"cr";a:3:{i:0;s:4:"Cree";i:1;s:0:"";i:2;a:0:{}}s:2:"hr";a:3:{i:0;s:8:"Croatian";i:1;s:80:"n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}s:2:"cs";a:3:{i:0;s:5:"Czech";i:1;s:45:"( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}s:2:"da";a:3:{i:0;s:6:"Danish";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"dv";a:3:{i:0;s:26:"Divehi; Dhivehi; Maldivian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"nl";a:3:{i:0;s:14:"Dutch; Flemish";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"dz";a:3:{i:0;s:8:"Dzongkha";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"en";a:3:{i:0;s:7:"English";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"eo";a:3:{i:0;s:9:"Esperanto";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"et";a:3:{i:0;s:8:"Estonian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ee";a:3:{i:0;s:3:"Ewe";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"fo";a:3:{i:0;s:7:"Faroese";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"fj";a:3:{i:0;s:6:"Fijian";i:1;s:0:"";i:2;a:0:{}}s:2:"fi";a:3:{i:0;s:7:"Finnish";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"fr";a:3:{i:0;s:6:"French";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ff";a:3:{i:0;s:5:"Fulah";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"gd";a:3:{i:0;s:23:"Gaelic; Scottish Gaelic";i:1;s:26:"n < 2 ? 0 : n == 2 ? 1 : 2";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:5:"other";}}s:2:"gl";a:3:{i:0;s:8:"Galician";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"lg";a:3:{i:0;s:5:"Ganda";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ka";a:3:{i:0;s:8:"Georgian";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"de";a:3:{i:0;s:6:"German";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"el";a:3:{i:0;s:5:"Greek";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"gn";a:3:{i:0;s:7:"Guarani";i:1;s:0:"";i:2;a:0:{}}s:2:"gu";a:3:{i:0;s:8:"Gujarati";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ht";a:3:{i:0;s:23:"Haitian; Haitian Creole";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ha";a:3:{i:0;s:5:"Hausa";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"he";a:3:{i:0;s:6:"Hebrew";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"hz";a:3:{i:0;s:6:"Herero";i:1;s:0:"";i:2;a:0:{}}s:2:"hi";a:3:{i:0;s:5:"Hindi";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ho";a:3:{i:0;s:9:"Hiri Motu";i:1;s:0:"";i:2;a:0:{}}s:2:"hu";a:3:{i:0;s:9:"Hungarian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"is";a:3:{i:0;s:9:"Icelandic";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"io";a:3:{i:0;s:3:"Ido";i:1;s:0:"";i:2;a:0:{}}s:2:"ig";a:3:{i:0;s:4:"Igbo";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"id";a:3:{i:0;s:10:"Indonesian";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"ia";a:3:{i:0;s:58:"Interlingua (International Auxiliary Language Association)";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ie";a:3:{i:0;s:11:"Interlingue";i:1;s:0:"";i:2;a:0:{}}s:2:"iu";a:3:{i:0;s:9:"Inuktitut";i:1;s:27:"n == 1 ? 0 : n == 2 ? 1 : 2";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:5:"other";}}s:2:"ik";a:3:{i:0;s:7:"Inupiaq";i:1;s:0:"";i:2;a:0:{}}s:2:"ga";a:3:{i:0;s:5:"Irish";i:1;s:44:"n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4";i:2;a:5:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:4:"many";i:4;s:5:"other";}}s:2:"it";a:3:{i:0;s:7:"Italian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ja";a:3:{i:0;s:8:"Japanese";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"jv";a:3:{i:0;s:8:"Javanese";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"kl";a:3:{i:0;s:24:"Kalaallisut; Greenlandic";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"kn";a:3:{i:0;s:7:"Kannada";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"kr";a:3:{i:0;s:6:"Kanuri";i:1;s:0:"";i:2;a:0:{}}s:2:"ks";a:3:{i:0;s:8:"Kashmiri";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"kk";a:3:{i:0;s:6:"Kazakh";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"km";a:3:{i:0;s:5:"Khmer";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"ki";a:3:{i:0;s:14:"Kikuyu; Gikuyu";i:1;s:0:"";i:2;a:0:{}}s:2:"rw";a:3:{i:0;s:11:"Kinyarwanda";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ky";a:3:{i:0;s:7:"Kirghiz";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"kv";a:3:{i:0;s:4:"Komi";i:1;s:0:"";i:2;a:0:{}}s:2:"kg";a:3:{i:0;s:5:"Kongo";i:1;s:0:"";i:2;a:0:{}}s:2:"ko";a:3:{i:0;s:6:"Korean";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"kj";a:3:{i:0;s:18:"Kuanyama; Kwanyama";i:1;s:0:"";i:2;a:0:{}}s:2:"ku";a:3:{i:0;s:7:"Kurdish";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"lo";a:3:{i:0;s:3:"Lao";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"la";a:3:{i:0;s:5:"Latin";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"lv";a:3:{i:0;s:7:"Latvian";i:1;s:49:"n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2";i:2;a:3:{i:0;s:3:"one";i:1;s:5:"other";i:2;s:4:"zero";}}s:2:"li";a:3:{i:0;s:32:"Limburgan; Limburger; Limburgish";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ln";a:3:{i:0;s:7:"Lingala";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"lt";a:3:{i:0;s:10:"Lithuanian";i:1;s:71:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}s:2:"lu";a:3:{i:0;s:12:"Luba-Katanga";i:1;s:0:"";i:2;a:0:{}}s:2:"lb";a:3:{i:0;s:28:"Luxembourgish; Letzeburgesch";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"mk";a:3:{i:0;s:10:"Macedonian";i:1;s:40:"( n % 10 == 1 && n % 100 != 11 ) ? 0 : 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"mg";a:3:{i:0;s:8:"Malagasy";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ms";a:3:{i:0;s:5:"Malay";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"ml";a:3:{i:0;s:9:"Malayalam";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"mt";a:3:{i:0;s:7:"Maltese";i:1;s:75:"(n==1 ? 0 : n==0||( n%100>1 && n%100<11)? 1 :(n%100>10 && n%100<20)? 2 : 3)";i:2;a:4:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:4:"many";i:3;s:5:"other";}}s:2:"gv";a:3:{i:0;s:4:"Manx";i:1;s:43:"n%10==1 ? 0 : n%10==2 ? 1 : n%20==0 ? 2 : 3";i:2;a:4:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:5:"other";}}s:2:"mi";a:3:{i:0;s:5:"Maori";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"mr";a:3:{i:0;s:7:"Marathi";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"mh";a:3:{i:0;s:11:"Marshallese";i:1;s:0:"";i:2;a:0:{}}s:2:"mo";a:3:{i:0;s:9:"Moldavian";i:1;s:50:"n == 1 ? 0 : n % 100 >= 1 && n % 100 <= 19 ? 1 : 2";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}s:2:"mn";a:3:{i:0;s:9:"Mongolian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"na";a:3:{i:0;s:5:"Nauru";i:1;s:0:"";i:2;a:0:{}}s:2:"nv";a:3:{i:0;s:14:"Navajo; Navaho";i:1;s:0:"";i:2;a:0:{}}s:2:"nd";a:3:{i:0;s:29:"Ndebele, North; North Ndebele";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"nr";a:3:{i:0;s:29:"Ndebele, South; South Ndebele";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"ng";a:3:{i:0;s:6:"Ndonga";i:1;s:0:"";i:2;a:0:{}}s:2:"ne";a:3:{i:0;s:6:"Nepali";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"se";a:3:{i:0;s:13:"Northern Sami";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"no";a:3:{i:0;s:9:"Norwegian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"nb";a:3:{i:0;s:17:"Norwegian Bokmål";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"nn";a:3:{i:0;s:17:"Norwegian Nynorsk";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"oc";a:3:{i:0;s:31:"Occitan (post 1500); Provençal";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"oj";a:3:{i:0;s:6:"Ojibwa";i:1;s:0:"";i:2;a:0:{}}s:2:"or";a:3:{i:0;s:5:"Oriya";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"om";a:3:{i:0;s:5:"Oromo";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"os";a:3:{i:0;s:17:"Ossetian; Ossetic";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"pi";a:3:{i:0;s:4:"Pali";i:1;s:0:"";i:2;a:0:{}}s:2:"pa";a:3:{i:0;s:16:"Panjabi; Punjabi";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"fa";a:3:{i:0;s:7:"Persian";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"pl";a:3:{i:0;s:6:"Polish";i:1;s:66:"(n==1 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:4:"many";}}s:2:"pt";a:3:{i:0;s:10:"Portuguese";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ps";a:3:{i:0;s:6:"Pushto";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"qu";a:3:{i:0;s:7:"Quechua";i:1;s:0:"";i:2;a:0:{}}s:2:"rm";a:3:{i:0;s:13:"Raeto-Romance";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ro";a:3:{i:0;s:8:"Romanian";i:1;s:56:"(n==1 ? 0 :(((n%100>19)||(( n%100==0)&&(n!=0)))? 2 : 1))";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}s:2:"rn";a:3:{i:0;s:5:"Rundi";i:1;s:0:"";i:2;a:0:{}}s:2:"ru";a:3:{i:0;s:7:"Russian";i:1;s:82:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:4:"many";}}s:2:"sm";a:3:{i:0;s:6:"Samoan";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"sg";a:3:{i:0;s:5:"Sango";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"sa";a:3:{i:0;s:8:"Sanskrit";i:1;s:0:"";i:2;a:0:{}}s:2:"sc";a:3:{i:0;s:9:"Sardinian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"sr";a:3:{i:0;s:7:"Serbian";i:1;s:82:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}s:2:"sn";a:3:{i:0;s:5:"Shona";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ii";a:3:{i:0;s:10:"Sichuan Yi";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"sd";a:3:{i:0;s:6:"Sindhi";i:1;s:0:"";i:2;a:0:{}}s:2:"si";a:3:{i:0;s:18:"Sinhala; Sinhalese";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"sk";a:3:{i:0;s:6:"Slovak";i:1;s:45:"( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:5:"other";}}s:2:"sl";a:3:{i:0;s:9:"Slovenian";i:1;s:56:"n%100==1 ? 0 : n%100==2 ? 1 : n%100==3||n%100==4 ? 2 : 3";i:2;a:4:{i:0;s:3:"one";i:1;s:3:"two";i:2;s:3:"few";i:3;s:5:"other";}}s:2:"so";a:3:{i:0;s:6:"Somali";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"st";a:3:{i:0;s:15:"Sotho, Southern";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"es";a:3:{i:0;s:7:"Spanish";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"su";a:3:{i:0;s:9:"Sundanese";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"sw";a:3:{i:0;s:7:"Swahili";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ss";a:3:{i:0;s:5:"Swati";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"sv";a:3:{i:0;s:7:"Swedish";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"tl";a:3:{i:0;s:7:"Tagalog";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ty";a:3:{i:0;s:8:"Tahitian";i:1;s:0:"";i:2;a:0:{}}s:2:"tg";a:3:{i:0;s:5:"Tajik";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ta";a:3:{i:0;s:5:"Tamil";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"tt";a:3:{i:0;s:5:"Tatar";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"te";a:3:{i:0;s:6:"Telugu";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"th";a:3:{i:0;s:4:"Thai";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"bo";a:3:{i:0;s:7:"Tibetan";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"ti";a:3:{i:0;s:8:"Tigrinya";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"to";a:3:{i:0;s:21:"Tonga (Tonga Islands)";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"ts";a:3:{i:0;s:6:"Tsonga";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"tn";a:3:{i:0;s:6:"Tswana";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"tr";a:3:{i:0;s:7:"Turkish";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"tk";a:3:{i:0;s:7:"Turkmen";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"tw";a:3:{i:0;s:3:"Twi";i:1;s:0:"";i:2;a:0:{}}s:2:"ug";a:3:{i:0;s:14:"Uighur; Uyghur";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"uk";a:3:{i:0;s:9:"Ukrainian";i:1;s:82:"(n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2)";i:2;a:3:{i:0;s:3:"one";i:1;s:3:"few";i:2;s:4:"many";}}s:2:"ur";a:3:{i:0;s:4:"Urdu";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"uz";a:3:{i:0;s:5:"Uzbek";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"ve";a:3:{i:0;s:5:"Venda";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"vi";a:3:{i:0;s:10:"Vietnamese";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"vo";a:3:{i:0;s:8:"Volapük";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"wa";a:3:{i:0;s:7:"Walloon";i:1;s:5:"n > 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"cy";a:3:{i:0;s:5:"Welsh";i:1;s:56:"n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n==3 ? 3 : n==6 ? 4 : 5";i:2;a:6:{i:0;s:4:"zero";i:1;s:3:"one";i:2;s:3:"two";i:3;s:3:"few";i:4;s:4:"many";i:5;s:5:"other";}}s:2:"fy";a:3:{i:0;s:15:"Western Frisian";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"wo";a:3:{i:0;s:5:"Wolof";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"xh";a:3:{i:0;s:5:"Xhosa";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"yi";a:3:{i:0;s:7:"Yiddish";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}s:2:"yo";a:3:{i:0;s:6:"Yoruba";i:1;s:1:"0";i:2;a:1:{i:0;s:5:"other";}}s:2:"za";a:3:{i:0;s:14:"Zhuang; Chuang";i:1;s:0:"";i:2;a:0:{}}s:2:"zu";a:3:{i:0;s:4:"Zulu";i:1;s:6:"n != 1";i:2;a:2:{i:0;s:3:"one";i:1;s:5:"other";}}}s:7:"regions";a:249:{s:2:"AF";s:11:"Afghanistan";s:2:"AX";s:14:"Åland Islands";s:2:"AL";s:7:"Albania";s:2:"DZ";s:7:"Algeria";s:2:"AS";s:14:"American Samoa";s:2:"AD";s:7:"Andorra";s:2:"AO";s:6:"Angola";s:2:"AI";s:8:"Anguilla";s:2:"AQ";s:10:"Antarctica";s:2:"AG";s:19:"Antigua and Barbuda";s:2:"AR";s:9:"Argentina";s:2:"AM";s:7:"Armenia";s:2:"AW";s:5:"Aruba";s:2:"AU";s:9:"Australia";s:2:"AT";s:7:"Austria";s:2:"AZ";s:10:"Azerbaijan";s:2:"BS";s:7:"Bahamas";s:2:"BH";s:7:"Bahrain";s:2:"BD";s:10:"Bangladesh";s:2:"BB";s:8:"Barbados";s:2:"BY";s:7:"Belarus";s:2:"BE";s:7:"Belgium";s:2:"BZ";s:6:"Belize";s:2:"BJ";s:5:"Benin";s:2:"BM";s:7:"Bermuda";s:2:"BT";s:6:"Bhutan";s:2:"BO";s:31:"Bolivia, Plurinational State of";s:2:"BQ";s:32:"Bonaire, Sint Eustatius and Saba";s:2:"BA";s:22:"Bosnia and Herzegovina";s:2:"BW";s:8:"Botswana";s:2:"BV";s:13:"Bouvet Island";s:2:"BR";s:6:"Brazil";s:2:"IO";s:30:"British Indian Ocean Territory";s:2:"BN";s:17:"Brunei Darussalam";s:2:"BG";s:8:"Bulgaria";s:2:"BF";s:12:"Burkina Faso";s:2:"BI";s:7:"Burundi";s:2:"KH";s:8:"Cambodia";s:2:"CM";s:8:"Cameroon";s:2:"CA";s:6:"Canada";s:2:"CV";s:10:"Cape Verde";s:2:"KY";s:14:"Cayman Islands";s:2:"CF";s:24:"Central African Republic";s:2:"TD";s:4:"Chad";s:2:"CL";s:5:"Chile";s:2:"CN";s:5:"China";s:2:"CX";s:16:"Christmas Island";s:2:"CC";s:23:"Cocos (Keeling) Islands";s:2:"CO";s:8:"Colombia";s:2:"KM";s:7:"Comoros";s:2:"CG";s:5:"Congo";s:2:"CD";s:37:"Congo, The Democratic Republic of The";s:2:"CK";s:12:"Cook Islands";s:2:"CR";s:10:"Costa Rica";s:2:"CI";s:14:"Côte D\'Ivoire";s:2:"HR";s:7:"Croatia";s:2:"CU";s:4:"Cuba";s:2:"CW";s:8:"Curaçao";s:2:"CY";s:6:"Cyprus";s:2:"CZ";s:14:"Czech Republic";s:2:"DK";s:7:"Denmark";s:2:"DJ";s:8:"Djibouti";s:2:"DM";s:8:"Dominica";s:2:"DO";s:18:"Dominican Republic";s:2:"EC";s:7:"Ecuador";s:2:"EG";s:5:"Egypt";s:2:"SV";s:11:"El Salvador";s:2:"GQ";s:17:"Equatorial Guinea";s:2:"ER";s:7:"Eritrea";s:2:"EE";s:7:"Estonia";s:2:"ET";s:8:"Ethiopia";s:2:"FK";s:27:"Falkland Islands (Malvinas)";s:2:"FO";s:13:"Faroe Islands";s:2:"FJ";s:4:"Fiji";s:2:"FI";s:7:"Finland";s:2:"FR";s:6:"France";s:2:"GF";s:13:"French Guiana";s:2:"PF";s:16:"French Polynesia";s:2:"TF";s:27:"French Southern Territories";s:2:"GA";s:5:"Gabon";s:2:"GM";s:6:"Gambia";s:2:"GE";s:7:"Georgia";s:2:"DE";s:7:"Germany";s:2:"GH";s:5:"Ghana";s:2:"GI";s:9:"Gibraltar";s:2:"GR";s:6:"Greece";s:2:"GL";s:9:"Greenland";s:2:"GD";s:7:"Grenada";s:2:"GP";s:10:"Guadeloupe";s:2:"GU";s:4:"Guam";s:2:"GT";s:9:"Guatemala";s:2:"GG";s:8:"Guernsey";s:2:"GN";s:6:"Guinea";s:2:"GW";s:13:"Guinea-Bissau";s:2:"GY";s:6:"Guyana";s:2:"HT";s:5:"Haiti";s:2:"HM";s:33:"Heard Island and Mcdonald Islands";s:2:"VA";s:29:"Holy See (Vatican City State)";s:2:"HN";s:8:"Honduras";s:2:"HK";s:9:"Hong Kong";s:2:"HU";s:7:"Hungary";s:2:"IS";s:7:"Iceland";s:2:"IN";s:5:"India";s:2:"ID";s:9:"Indonesia";s:2:"IR";s:25:"Iran, Islamic Republic of";s:2:"IQ";s:4:"Iraq";s:2:"IE";s:7:"Ireland";s:2:"IM";s:11:"Isle of Man";s:2:"IL";s:6:"Israel";s:2:"IT";s:5:"Italy";s:2:"JM";s:7:"Jamaica";s:2:"JP";s:5:"Japan";s:2:"JE";s:6:"Jersey";s:2:"JO";s:6:"Jordan";s:2:"KZ";s:10:"Kazakhstan";s:2:"KE";s:5:"Kenya";s:2:"KI";s:8:"Kiribati";s:2:"KP";s:38:"Korea, Democratic People\'s Republic of";s:2:"KR";s:18:"Korea, Republic of";s:2:"KW";s:6:"Kuwait";s:2:"KG";s:10:"Kyrgyzstan";s:2:"LA";s:32:"Lao People\'s Democratic Republic";s:2:"LV";s:6:"Latvia";s:2:"LB";s:7:"Lebanon";s:2:"LS";s:7:"Lesotho";s:2:"LR";s:7:"Liberia";s:2:"LY";s:5:"Libya";s:2:"LI";s:13:"Liechtenstein";s:2:"LT";s:9:"Lithuania";s:2:"LU";s:10:"Luxembourg";s:2:"MO";s:5:"Macao";s:2:"MK";s:42:"Macedonia, The Former Yugoslav Republic of";s:2:"MG";s:10:"Madagascar";s:2:"MW";s:6:"Malawi";s:2:"MY";s:8:"Malaysia";s:2:"MV";s:8:"Maldives";s:2:"ML";s:4:"Mali";s:2:"MT";s:5:"Malta";s:2:"MH";s:16:"Marshall Islands";s:2:"MQ";s:10:"Martinique";s:2:"MR";s:10:"Mauritania";s:2:"MU";s:9:"Mauritius";s:2:"YT";s:7:"Mayotte";s:2:"MX";s:6:"Mexico";s:2:"FM";s:31:"Micronesia, Federated States of";s:2:"MD";s:20:"Moldova, Republic of";s:2:"MC";s:6:"Monaco";s:2:"MN";s:8:"Mongolia";s:2:"ME";s:10:"Montenegro";s:2:"MS";s:10:"Montserrat";s:2:"MA";s:7:"Morocco";s:2:"MZ";s:10:"Mozambique";s:2:"MM";s:7:"Myanmar";s:2:"NA";s:7:"Namibia";s:2:"NR";s:5:"Nauru";s:2:"NP";s:5:"Nepal";s:2:"NL";s:11:"Netherlands";s:2:"NC";s:13:"New Caledonia";s:2:"NZ";s:11:"New Zealand";s:2:"NI";s:9:"Nicaragua";s:2:"NE";s:5:"Niger";s:2:"NG";s:7:"Nigeria";s:2:"NU";s:4:"Niue";s:2:"NF";s:14:"Norfolk Island";s:2:"MP";s:24:"Northern Mariana Islands";s:2:"NO";s:6:"Norway";s:2:"OM";s:4:"Oman";s:2:"PK";s:8:"Pakistan";s:2:"PW";s:5:"Palau";s:2:"PS";s:31:"Palestinian Territory, Occupied";s:2:"PA";s:6:"Panama";s:2:"PG";s:16:"Papua New Guinea";s:2:"PY";s:8:"Paraguay";s:2:"PE";s:4:"Peru";s:2:"PH";s:11:"Philippines";s:2:"PN";s:8:"Pitcairn";s:2:"PL";s:6:"Poland";s:2:"PT";s:8:"Portugal";s:2:"PR";s:11:"Puerto Rico";s:2:"QA";s:5:"Qatar";s:2:"RE";s:8:"Réunion";s:2:"RO";s:7:"Romania";s:2:"RU";s:18:"Russian Federation";s:2:"RW";s:6:"Rwanda";s:2:"BL";s:17:"Saint Barthélemy";s:2:"SH";s:44:"Saint Helena, Ascension and Tristan Da Cunha";s:2:"KN";s:21:"Saint Kitts and Nevis";s:2:"LC";s:11:"Saint Lucia";s:2:"MF";s:26:"Saint Martin (French Part)";s:2:"PM";s:25:"Saint Pierre and Miquelon";s:2:"VC";s:32:"Saint Vincent and The Grenadines";s:2:"WS";s:5:"Samoa";s:2:"SM";s:10:"San Marino";s:2:"ST";s:21:"Sao Tome and Principe";s:2:"SA";s:12:"Saudi Arabia";s:2:"SN";s:7:"Senegal";s:2:"RS";s:6:"Serbia";s:2:"SC";s:10:"Seychelles";s:2:"SL";s:12:"Sierra Leone";s:2:"SG";s:9:"Singapore";s:2:"SX";s:25:"Sint Maarten (Dutch Part)";s:2:"SK";s:8:"Slovakia";s:2:"SI";s:8:"Slovenia";s:2:"SB";s:15:"Solomon Islands";s:2:"SO";s:7:"Somalia";s:2:"ZA";s:12:"South Africa";s:2:"GS";s:44:"South Georgia and The South Sandwich Islands";s:2:"SS";s:11:"South Sudan";s:2:"ES";s:5:"Spain";s:2:"LK";s:9:"Sri Lanka";s:2:"SD";s:5:"Sudan";s:2:"SR";s:8:"Suriname";s:2:"SJ";s:22:"Svalbard and Jan Mayen";s:2:"SZ";s:9:"Swaziland";s:2:"SE";s:6:"Sweden";s:2:"CH";s:11:"Switzerland";s:2:"SY";s:20:"Syrian Arab Republic";s:2:"TW";s:25:"Taiwan, Province of China";s:2:"TJ";s:10:"Tajikistan";s:2:"TZ";s:28:"Tanzania, United Republic of";s:2:"TH";s:8:"Thailand";s:2:"TL";s:11:"Timor-Leste";s:2:"TG";s:4:"Togo";s:2:"TK";s:7:"Tokelau";s:2:"TO";s:5:"Tonga";s:2:"TT";s:19:"Trinidad and Tobago";s:2:"TN";s:7:"Tunisia";s:2:"TR";s:6:"Turkey";s:2:"TM";s:12:"Turkmenistan";s:2:"TC";s:24:"Turks and Caicos Islands";s:2:"TV";s:6:"Tuvalu";s:2:"UG";s:6:"Uganda";s:2:"UA";s:7:"Ukraine";s:2:"AE";s:20:"United Arab Emirates";s:2:"GB";s:14:"United Kingdom";s:2:"US";s:13:"United States";s:2:"UM";s:36:"United States Minor Outlying Islands";s:2:"UY";s:7:"Uruguay";s:2:"UZ";s:10:"Uzbekistan";s:2:"VU";s:7:"Vanuatu";s:2:"VE";s:33:"Venezuela, Bolivarian Republic of";s:2:"VN";s:8:"Viet Nam";s:2:"VG";s:23:"Virgin Islands, British";s:2:"VI";s:20:"Virgin Islands, U.S.";s:2:"WF";s:17:"Wallis and Futuna";s:2:"EH";s:14:"Western Sahara";s:2:"YE";s:5:"Yemen";s:2:"ZM";s:6:"Zambia";s:2:"ZW";s:8:"Zimbabwe";}}');
lib/build/shell-compiled.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
  * Compiled source build from Loco core.
4
- * Mon, 10 Mar 2014 11:48:38 +0000
5
  */
6
  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 ''; }
1
  <?php
2
  /**
3
  * Compiled source build from Loco core.
4
+ * Mon, 09 Jun 2014 17:41:06 +0100
5
  */
6
  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 DELETED
@@ -1,107 +0,0 @@
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
- * Test plural forms
85
- */
86
- public function testPluralForms(){
87
- // English - two forms
88
- $locale = LocoLocale::init('en','GB');
89
- extract( $locale->export() );
90
- $this->assertEquals( 2, $nplurals );
91
- // Chinese - one form
92
- $locale = LocoLocale::init('zh','TW');
93
- extract( $locale->export() );
94
- $this->assertEquals( 1, $nplurals );
95
- // Polish - three forms
96
- $locale = LocoLocale::init('pl','PL');
97
- extract( $locale->export() );
98
- $this->assertEquals( 3, $nplurals );
99
- // Arabic - six forms
100
- $locale = LocoLocale::init('ar','AE');
101
- extract( $locale->export() );
102
- $this->assertEquals( 6, $nplurals );
103
- }
104
-
105
- }
106
-
107
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/loco-admin.php CHANGED
@@ -53,7 +53,7 @@ abstract class LocoAdmin {
53
  current_user_can(Loco::CAPABILITY) or self::forbid();
54
  // update applicaion settings if posted
55
  if( isset($_POST['loco']) && is_array( $update = $_POST['loco'] ) ){
56
- $update += array( 'gen_hash' => '0' );
57
  $args = Loco::config( $update );
58
  $args['success'] = Loco::__('Settings saved');
59
  }
@@ -98,7 +98,6 @@ abstract class LocoAdmin {
98
  // Establish best/intended location for new POT file
99
  $dir = $package->lang_dir( $domain );
100
  $pot_path = $dir.'/'.$domain.'.pot';
101
- // extract from all PHP source files
102
  $export = self::xgettext( $package, $dir );
103
  self::render_poeditor( $package, $pot_path, $export );
104
  break;
@@ -109,11 +108,12 @@ abstract class LocoAdmin {
109
  //
110
  if( isset($_GET['msginit']) ){
111
  $domain = $_GET['msginit'];
 
112
  // handle PO file creation if locale is set
113
  if( isset($_GET['custom-locale']) ){
114
  try {
115
  $locale = $_GET['custom-locale'] or $locale = $_GET['common-locale'];
116
- $po_path = self::msginit( $package, $domain, $locale, $export, $head );
117
  if( $po_path ){
118
  self::render_poeditor( $package, $po_path, $export, $head );
119
  break;
@@ -124,15 +124,16 @@ abstract class LocoAdmin {
124
  self::error( $Ex->getMessage() );
125
  }
126
  }
127
- // else do a dry run to pre-empt failures
128
- else {
129
- $dummy = self::msginit( $package, $domain, 'en', $export, $head );
130
- }
131
- // else render msginit start screen
 
132
  $title = Loco::__('New PO file');
133
- $locales = loco_require('build/locales-compiled');
134
  Loco::enqueue_scripts( 'build/admin-common', 'build/admin-poinit');
135
- Loco::render('admin-poinit', compact('package','domain','title','locales') );
136
  break;
137
  }
138
 
@@ -176,22 +177,17 @@ abstract class LocoAdmin {
176
  $package = LocoPackage::get( $plugin_file, 'plugin' ) and
177
  $plugins[] = $package;
178
  }
179
- // pick up remaining items under WP_LANG_DIR
180
  $core = array();
181
- /*
182
- $cores = array (
183
- //'admin-network' => 'Network',
184
- 'admin' => 'Admin Network',
185
- 'continents-cities' => 'Timezones',
186
- 'ms' => 'Multisite',
187
- '' => 'Other',
188
- );
189
- foreach( $cores as $domain => $name ){
190
- if( $package = LocoPackage::get_core( $domain, $name ) ){
191
- $core[] = self::init_package_args( $package, 'core' );
192
  }
193
  }
194
- */
195
  // order most active packges first in each set
196
  $args = array (
197
  'themes' => LocoPackage::sort_modified( $themes ),
@@ -236,7 +232,7 @@ abstract class LocoAdmin {
236
  * Initialize a new PO file from a locale code
237
  * @return string path where PO file will be saved to
238
  */
239
- private static function msginit( LocoPackage $package, $domain = '', $code, &$export, &$head ){
240
  $head = null;
241
  $export = array();
242
  $locale = $code ? loco_locale_resolve($code) : null;
@@ -245,7 +241,7 @@ abstract class LocoAdmin {
245
  }
246
 
247
  // default PO file location
248
- $po_path = $package->create_po_path( $locale, $domain );
249
  $po_dir = dirname( $po_path );
250
  $po_name = basename( $po_path );
251
 
@@ -254,9 +250,9 @@ abstract class LocoAdmin {
254
  $pot = self::parse_po_with_headers( $pot_path, $head );
255
  if( $pot && ! ( 1 === count($pot) && '' === $pot[0]['source'] ) ){
256
  $export = $pot;
257
- // override default PO location if POT location is writable
258
  $pot_dir = dirname( $pot_path );
259
- if( is_writable($pot_dir) ){
 
260
  $po_dir = $pot_dir;
261
  }
262
  }
@@ -273,7 +269,7 @@ abstract class LocoAdmin {
273
  // check for PO conflict as this is msginit, not a sync.
274
  $po_path = $po_dir.'/'.$po_name;
275
  if( file_exists($po_path) ){
276
- throw new Exception( sprintf(Loco::__('PO file already exists with locale %s'), $po_code ) );
277
  }
278
 
279
  // return path, export and head set as references
@@ -634,14 +630,24 @@ abstract class LocoAdmin {
634
  class_exists('LocoPHPExtractor') or loco_require('build/gettext-compiled');
635
  $extractor = new LocoPHPExtractor;
636
  $export = array();
637
- foreach( $package->get_source_dirs() as $dir ){
638
- $fileref = loco_relative_path( $relative_to, $dir );
639
- foreach( self::find_php($dir) as $path ){
640
- $source = file_get_contents($path) and
641
- $tokens = token_get_all($source) and
642
- $export = $extractor->extract( $tokens, str_replace( $dir, $fileref, $path ) );
 
 
 
643
  }
644
  }
 
 
 
 
 
 
 
645
  return $export;
646
  }
647
 
@@ -723,9 +729,10 @@ abstract class LocoAdmin {
723
 
724
 
725
  /**
726
- * Resolve a PO file path or file name to TextDomain
727
- * @param string e.g. "blah/mytheme-fr_FR.po" or "myplugin.pot"
728
- * @return string e.g. "mytheme"
 
729
  */
730
  public static function resolve_file_domain( $path ){
731
  extract( pathinfo($path) );
@@ -736,7 +743,7 @@ abstract class LocoAdmin {
736
  return $filename;
737
  }
738
  if( $domain = preg_replace('/[a-z]{2}(_[A-Z]{2})?$/', '', $filename ) ){
739
- return ltrim( $domain, '-' );
740
  }
741
  // empty domain means file name is probably just a locale
742
  return '';
53
  current_user_can(Loco::CAPABILITY) or self::forbid();
54
  // update applicaion settings if posted
55
  if( isset($_POST['loco']) && is_array( $update = $_POST['loco'] ) ){
56
+ $update += array( 'gen_hash' => '0', 'enable_core' => '0' );
57
  $args = Loco::config( $update );
58
  $args['success'] = Loco::__('Settings saved');
59
  }
98
  // Establish best/intended location for new POT file
99
  $dir = $package->lang_dir( $domain );
100
  $pot_path = $dir.'/'.$domain.'.pot';
 
101
  $export = self::xgettext( $package, $dir );
102
  self::render_poeditor( $package, $pot_path, $export );
103
  break;
108
  //
109
  if( isset($_GET['msginit']) ){
110
  $domain = $_GET['msginit'];
111
+ $force_global = isset($_GET['gforce']) ? (bool) $_GET['gforce'] : null;
112
  // handle PO file creation if locale is set
113
  if( isset($_GET['custom-locale']) ){
114
  try {
115
  $locale = $_GET['custom-locale'] or $locale = $_GET['common-locale'];
116
+ $po_path = self::msginit( $package, $domain, $locale, $export, $head, $force_global );
117
  if( $po_path ){
118
  self::render_poeditor( $package, $po_path, $export, $head );
119
  break;
124
  self::error( $Ex->getMessage() );
125
  }
126
  }
127
+ // else do a dry run to pre-empt failures and allow manual alteration of target path
128
+ $path = self::msginit( $package, $domain, 'en', $export, $head, $force_global );
129
+ // get alternative location options
130
+ $pdir = $package->lang_dir( $domain, true );
131
+ $gdir = $package->global_lang_dir();
132
+ // render msginit start screen
133
  $title = Loco::__('New PO file');
134
+ $locales = LocoLocale::get_names();
135
  Loco::enqueue_scripts( 'build/admin-common', 'build/admin-poinit');
136
+ Loco::render('admin-poinit', compact('package','domain','title','locales','path','pdir','gdir') );
137
  break;
138
  }
139
 
177
  $package = LocoPackage::get( $plugin_file, 'plugin' ) and
178
  $plugins[] = $package;
179
  }
180
+ // @var array $core
181
  $core = array();
182
+ $conf = Loco::config();
183
+ if( ! empty($conf['enable_core']) ){
184
+ foreach( LocoPackage::get_core_packages() as $package ){
185
+ // if package has no PO or POT we skip it because core packages have no source
186
+ if( $package->get_po() || $package->get_pot() ){
187
+ $core[] = $package;
188
+ }
 
 
 
 
189
  }
190
  }
 
191
  // order most active packges first in each set
192
  $args = array (
193
  'themes' => LocoPackage::sort_modified( $themes ),
232
  * Initialize a new PO file from a locale code
233
  * @return string path where PO file will be saved to
234
  */
235
+ private static function msginit( LocoPackage $package, $domain = '', $code, &$export, &$head, $force_global = null ){
236
  $head = null;
237
  $export = array();
238
  $locale = $code ? loco_locale_resolve($code) : null;
241
  }
242
 
243
  // default PO file location
244
+ $po_path = $package->create_po_path( $locale, $domain, $force_global );
245
  $po_dir = dirname( $po_path );
246
  $po_name = basename( $po_path );
247
 
250
  $pot = self::parse_po_with_headers( $pot_path, $head );
251
  if( $pot && ! ( 1 === count($pot) && '' === $pot[0]['source'] ) ){
252
  $export = $pot;
 
253
  $pot_dir = dirname( $pot_path );
254
+ // override default PO location if POT location is writable and getting best location
255
+ if( is_writable($pot_dir) && is_null($force_global) ){
256
  $po_dir = $pot_dir;
257
  }
258
  }
269
  // check for PO conflict as this is msginit, not a sync.
270
  $po_path = $po_dir.'/'.$po_name;
271
  if( file_exists($po_path) ){
272
+ throw new Exception( sprintf(Loco::__('PO file already exists with locale %s'), $locale->get_code() ) );
273
  }
274
 
275
  // return path, export and head set as references
630
  class_exists('LocoPHPExtractor') or loco_require('build/gettext-compiled');
631
  $extractor = new LocoPHPExtractor;
632
  $export = array();
633
+ // extract from PHP sources, as long as source locations exist
634
+ if( $srcdirs = $package->get_source_dirs() ){
635
+ foreach( $srcdirs as $dir ){
636
+ $fileref = loco_relative_path( $relative_to, $dir );
637
+ foreach( self::find_php($dir) as $path ){
638
+ $source = file_get_contents($path) and
639
+ $tokens = token_get_all($source) and
640
+ $export = $extractor->extract( $tokens, str_replace( $dir, $fileref, $path ) );
641
+ }
642
  }
643
  }
644
+ // else use an existing PO file (should be used for core only)
645
+ else if( $po = $package->get_po() ){
646
+ foreach( $po as $code => $path ){
647
+ $export = self::parse_po( $path );
648
+ break;
649
+ }
650
+ }
651
  return $export;
652
  }
653
 
729
 
730
 
731
  /**
732
+ * Resolve a PO file path or file name to TextDomain.
733
+ * Note that this does not parse the file to read any data, it just extracts from filename
734
+ * @param string e.g. "path/to/foo-fr_FR.po" or "foo.pot"
735
+ * @return string e.g. "foo"
736
  */
737
  public static function resolve_file_domain( $path ){
738
  extract( pathinfo($path) );
743
  return $filename;
744
  }
745
  if( $domain = preg_replace('/[a-z]{2}(_[A-Z]{2})?$/', '', $filename ) ){
746
+ return trim( $domain, '-' );
747
  }
748
  // empty domain means file name is probably just a locale
749
  return '';
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.4.4';
12
  const CAPABILITY = 'manage_options';
13
 
14
  /* current plugin locale */
@@ -294,6 +294,8 @@ abstract class Loco {
294
  'gen_hash' => '0',
295
  // number of backups to keep of PO and MO files
296
  'num_backups' => '1',
 
 
297
  );
298
  foreach( $conf as $key => $val ){
299
  $conf[$key] = get_option( Loco::NS.'-'.$key);
8
  /** plugin namespace */
9
  const NS = 'loco-translate';
10
 
11
+ const VERSION = '1.4.5';
12
  const CAPABILITY = 'manage_options';
13
 
14
  /* current plugin locale */
294
  'gen_hash' => '0',
295
  // number of backups to keep of PO and MO files
296
  'num_backups' => '1',
297
+ // whether to enable core package translation
298
+ 'enable_core' => '0',
299
  );
300
  foreach( $conf as $key => $val ){
301
  $conf[$key] = get_option( Loco::NS.'-'.$key);
lib/loco-locales.php CHANGED
@@ -32,20 +32,15 @@ final class LocoLocale {
32
  private $lang;
33
  private $region;
34
  private $label;
 
35
  private $nplurals = 2;
36
- private $pluraleq = '(n != 1)';
37
 
38
  private function __construct( $lc, $cc ){
39
- $lc and $this->lang = $lc;
40
- $cc and $this->region = $cc;
41
  }
42
 
43
- private function __import( $lc, $cc, array $raw ){
44
- $this->lang = $lc;
45
- $this->region = $cc;
46
- list( $this->label, $this->nplurals, $this->pluraleq ) = $raw;
47
- }
48
-
49
  public function export(){
50
  return get_object_vars($this);
51
  }
@@ -67,7 +62,7 @@ final class LocoLocale {
67
  }
68
 
69
  public function get_name(){
70
- return is_null($this->label) ? Loco::__('Unknown language') : $this->label;
71
  }
72
 
73
  public function equal_to( LocoLocale $locale ){
@@ -79,33 +74,82 @@ final class LocoLocale {
79
  $cc = preg_quote( $this->region, $delimiter );
80
  return $lc.'(?:[\-_]'.$cc.')?';
81
  }
82
-
83
-
 
84
  /**
85
  * @return LocoLocale
86
  */
87
  public static function init( $lc, $cc ){
88
- // pre-compiled locale data
89
- static $plurals = array ( 'n != 1', 'n > 1', 'n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2', '( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2', 'n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2', 'n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2', 'n == 1 ? 0 : n == 0 || ( n % 100 > 1 && n % 100 < 11 ) ? 1 : ( n % 100 > 10 && n % 100 < 20 ) ? 2 : 3', 'n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2', 'n == 1 ? 0 : ( n == 0 || ( n % 100 > 0 && n % 100 < 20 ) ) ? 1 : 2', 'n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0', 0, 'n % 10 != 1 || n % 100 == 11', 'n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5', '( n == 1 ) ? 0 : ( n == 2 ) ? 1 : ( n != 8 && n != 11 ) ? 2 : 3', 'n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4', 'n != 0', ),
90
- $locales = array ( 'en' => array ( 'GB' => array ( 'English (UK)', 2, 0, ), 'IE' => array ( 'English (Ireland)', 2, 0, ), 'US' => array ( 'English (USA)', 2, 0, ), 'CA' => array ( 'English (Canada)', 2, 0, ), 'AU' => array ( 'English (Australia)', 2, 0, ), 'NZ' => array ( 'English (New Zealand)', 2, 0, ), 'HK' => array ( 'English (Hong Kong)', 2, 0, ), 'SG' => array ( 'English (Singapore)', 2, 0, ), 'AE' => array ( 'English (United Arab Emirates)', 2, 0, ), 'ZA' => array ( 'English (South Africa)', 2, 0, ), 'IN' => array ( 'English (India)', 2, 0, ), ), 'fr' => array ( 'FR' => array ( 'French', 2, 1, ), 'CH' => array ( 'French (Switzerland)', 2, 1, ), 'BE' => array ( 'French (Belgium)', 2, 1, ), 'HT' => array ( 'French (Haiti)', 2, 1, ), 'CA' => array ( 'French (Canada)', 2, 1, ), ), 'it' => array ( 'IT' => array ( 'Italian', 2, 0, ), 'CH' => array ( 'Italian (Switzerland)', 2, 0, ), ), 'de' => array ( 'DE' => array ( 'German', 2, 0, ), 'CH' => array ( 'German (Switzerland)', 2, 0, ), 'AT' => array ( 'German (Austria)', 2, 0, ), ), 'es' => array ( 'ES' => array ( 'Spanish', 2, 0, ), 'MX' => array ( 'Spanish (Mexico)', 2, 0, ), 'AR' => array ( 'Spanish (Argentina)', 2, 0, ), 'BO' => array ( 'Spanish (Bolivia)', 2, 0, ), 'CL' => array ( 'Spanish (Chile)', 2, 0, ), 'CO' => array ( 'Spanish (Colombia)', 2, 0, ), 'CR' => array ( 'Spanish (Costa Rica)', 2, 0, ), 'CU' => array ( 'Spanish (Cuba)', 2, 0, ), 'DO' => array ( 'Spanish (Dominican Republic)', 2, 0, ), 'EC' => array ( 'Spanish (Ecuador)', 2, 0, ), 'SV' => array ( 'Spanish (El Salvador)', 2, 0, ), 'GT' => array ( 'Spanish (Guatemala)', 2, 0, ), 'HN' => array ( 'Spanish (Honduras)', 2, 0, ), 'NI' => array ( 'Spanish (Nicaragua)', 2, 0, ), 'PA' => array ( 'Spanish (Panama)', 2, 0, ), 'PY' => array ( 'Spanish (Paraguay)', 2, 0, ), 'PE' => array ( 'Spanish (Peru)', 2, 0, ), 'UY' => array ( 'Spanish (Uruguay)', 2, 0, ), 'VE' => array ( 'Spanish (Venezuela)', 2, 0, ), ), 'pt' => array ( 'PT' => array ( 'Portuguese', 2, 0, ), 'BR' => array ( 'Portuguese (Brazil)', 2, 0, ), ), 'ru' => array ( 'RU' => array ( 'Russian', 3, 2, ), 'UA' => array ( 'Russian (Ukraine)', 3, 2, ), ), 'sv' => array ( 'SE' => array ( 'Swedish', 2, 0, ), ), 'no' => array ( 'NO' => array ( 'Norwegian', 2, 0, ), ), 'da' => array ( 'DK' => array ( 'Danish', 2, 0, ), ), 'fi' => array ( 'FI' => array ( 'Finnish', 2, 0, ), ), 'bg' => array ( 'BG' => array ( 'Bulgarian', 2, 0, ), ), 'cs' => array ( 'CZ' => array ( 'Czech', 3, 3, ), ), 'et' => array ( 'EE' => array ( 'Estonian', 2, 0, ), ), 'el' => array ( 'GR' => array ( 'Greek', 2, 0, ), 'CY' => array ( 'Greek (Cyprus)', 2, 0, ), ), 'hu' => array ( 'HU' => array ( 'Hungarian', 2, 0, ), ), 'lv' => array ( 'LV' => array ( 'Latvian', 3, 4, ), ), 'lt' => array ( 'LT' => array ( 'Lithuanian', 3, 5, ), ), 'lb' => array ( 'LU' => array ( 'Luxembourgish', 2, 0, ), ), 'mt' => array ( 'MT' => array ( 'Maltese', 4, 6, ), ), 'nl' => array ( 'NL' => array ( 'Dutch', 2, 0, ), 'BE' => array ( 'Dutch (Belgium)', 2, 0, ), ), 'pl' => array ( 'PL' => array ( 'Polish', 3, 7, ), ), 'ro' => array ( 'RO' => array ( 'Romanian', 3, 8, ), ), 'sk' => array ( 'SK' => array ( 'Slovak', 3, 3, ), ), 'sl' => array ( 'SI' => array ( 'Slovenian', 4, 9, ), ), 'ht' => array ( 'HT' => array ( 'Haitian Creole', 2, 0, ), ), 'gn' => array ( 'PY' => array ( 'Guarani (Paraguay)', 2, 0, ), ), 'ja' => array ( 'JP' => array ( 'Japanese', 1, 10, ), ), 'zh' => array ( 'CN' => array ( 'Chinese', 1, 10, ), 'HK' => array ( 'Chinese (Hong Kong)', 1, 10, ), 'TW' => array ( 'Chinese (Taiwan)', 1, 10, ), ), 'af' => array ( 'ZA' => array ( 'Afrikaans (South Africa)', 2, 0, ), ), 'hr' => array ( 'HR' => array ( 'Croatian', 3, 2, ), ), 'is' => array ( 'IS' => array ( 'Icelandic', 2, 11, ), ), 'he' => array ( 'IL' => array ( 'Hebrew (Israel)', 2, 0, ), ), 'ar' => array ( 'IL' => array ( 'Arabic (Israel)', 6, 12, ), 'AE' => array ( 'Arabic (United Arab Emirates)', 6, 12, ), ), 'hi' => array ( 'IN' => array ( 'Hindi (India)', 2, 0, ), ), 'sr' => array ( 'RS' => array ( 'Serbian', 3, 2, ), ), 'tr' => array ( 'TR' => array ( 'Turkish', 2, 1, ), ), 'ko' => array ( 'KR' => array ( 'Korean', 1, 10, ), ), 'cy' => array ( 'GB' => array ( 'Welsh', 4, 13, ), ), 'ms' => array ( 'MY' => array ( 'Malay (Malaysia)', 1, 10, ), ), 'az' => array ( 'TR' => array ( 'Azerbaijani (Turkey)', 2, 0, ), ), 'bn' => array ( 'BD' => array ( 'Bengali (Bangladesh)', 2, 0, ), ), 'bs' => array ( 'BA' => array ( 'Bosnian (Bosnia & Herzegovina)', 3, 2, ), ), 'fa' => array ( 'AF' => array ( 'Persian (Afghanistan)', 1, 10, ), 'IR' => array ( 'Persian (Iran)', 1, 10, ), ), 'fo' => array ( 'FO' => array ( 'Faroese (Faroe Islands)', 2, 0, ), 'DK' => array ( 'Faroese (Denmark)', 2, 0, ), ), 'ga' => array ( 'IE' => array ( 'Irish (Ireland)', 5, 14, ), ), 'gl' => array ( 'ES' => array ( 'Galician (Spain)', 2, 0, ), ), 'hy' => array ( 'AM' => array ( 'Armenian', 2, 0, ), ), 'id' => array ( 'ID' => array ( 'Indonesian', 1, 10, ), ), 'jv' => array ( 'ID' => array ( 'Javanese (Indonesia)', 2, 15, ), ), 'ka' => array ( 'GE' => array ( 'Georgian', 1, 10, ), ), 'kk' => array ( 'KZ' => array ( 'Kazakh', 1, 10, ), ), 'kn' => array ( 'IN' => array ( 'Kannada (India)', 2, 0, ), ), 'li' => array ( 'NL' => array ( 'Limburgish (Netherlands)', 2, 0, ), ), 'lo' => array ( 'LA' => array ( 'Lao (Laos)', 1, 10, ), ), 'mg' => array ( 'MG' => array ( 'Malagasy (Madagascar)', 2, 1, ), ), 'my' => array ( 'MM' => array ( 'Burmese (Myanmar)', 1, 10, ), ), 'nb' => array ( 'NO' => array ( 'Bokmål', 2, 0, ), ), 'nn' => array ( 'NO' => array ( 'Nynorsk', 2, 0, ), ), 'ne' => array ( 'NP' => array ( 'Nepali', 2, 0, ), ), 'os' => array ( 'TR' => array ( 'Ossetian (Turkey)', 2, 0, ), 'RU' => array ( 'Ossetian (Russia)', 2, 0, ), 'GE' => array ( 'Ossetian (Georgia)', 2, 0, ), ), 'pa' => array ( 'IN' => array ( 'Punjabi (India)', 2, 0, ), ), 'uk' => array ( 'UA' => array ( 'Ukrainian (Ukraine)', 3, 2, ), ), 'sa' => array ( 'IN' => array ( 'Sanskrit (India)', 2, 0, ), ), 'sd' => array ( 'PK' => array ( 'Sindhi (Pakistan)', 2, 0, ), ), 'si' => array ( 'LK' => array ( 'Sinhala (Sri Lanka)', 2, 0, ), ), 'so' => array ( 'SO' => array ( 'Somali', 2, 0, ), ), 'sq' => array ( 'AL' => array ( 'Albanian (Albania)', 2, 0, ), ), 'sc' => array ( 'IT' => array ( 'Sardinian (Italy)', 2, 0, ), ), 'su' => array ( 'ID' => array ( 'Sundanese (Indonesia)', 1, 10, ), ), 'sw' => array ( 'KE' => array ( 'Swahili (Kenya)', 2, 0, ), 'UG' => array ( 'Swahili (Uganda)', 2, 0, ), 'TZ' => array ( 'Swahili (Tanzania)', 2, 0, ), 'KM' => array ( 'Swahili (Comoros)', 2, 0, ), ), 'ta' => array ( 'IN' => array ( 'Tamil (India)', 2, 0, ), 'LK' => array ( 'Tamil (Sri Lanka)', 2, 0, ), ), 'te' => array ( 'IN' => array ( 'Telugu (India)', 2, 0, ), ), 'th' => array ( 'TH' => array ( 'Thai (Thailand)', 1, 10, ), ), 'tg' => array ( 'TJ' => array ( 'Tajik (Tajikistan)', 2, 1, ), ), 'ug' => array ( 'CN' => array ( 'Uyghur (China)', 1, 10, ), ), 'ur' => array ( 'IN' => array ( 'Urdu (India)', 2, 0, ), 'PK' => array ( 'Urdu (Pakistan)', 2, 0, ), ), 'uz' => array ( 'UZ' => array ( 'Uzbek (Uzbekistan)', 2, 1, ), ), 'vi' => array ( 'VN' => array ( 'Vietnamese', 1, 10, ), ), );
91
- // end pre-compiled locale data
 
92
  $locale = new LocoLocale( $lc, $cc );
 
93
  if( isset($locales[$lc]) ){
94
  if( ! $cc ){
95
  $cc = key( $locales[$lc] );
 
96
  }
97
  if( isset($locales[$lc][$cc]) ){
98
- // get raw locale format: [ name, nplurals, plural ] e.g: [ 'English (UK)', 2, 0 ]
99
- $raw = $locales[$lc][$cc];
100
- // swap plural equation index with reusable value
101
- $raw[2] = $plurals[ $raw[2] ];
102
- // construct locale object from raw data
103
- $locale->__import( $lc, $cc, $raw );
 
 
 
 
 
 
 
 
 
 
 
 
 
104
  }
 
105
  }
106
  return $locale;
107
  }
108
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
109
  }
110
 
111
 
32
  private $lang;
33
  private $region;
34
  private $label;
35
+ private $plurals = array('one','other');
36
  private $nplurals = 2;
37
+ private $pluraleq = 'n != 1';
38
 
39
  private function __construct( $lc, $cc ){
40
+ $lc and $this->lang = strtolower($lc);
41
+ $cc and $this->region = strtoupper($cc);
42
  }
43
 
 
 
 
 
 
 
44
  public function export(){
45
  return get_object_vars($this);
46
  }
62
  }
63
 
64
  public function get_name(){
65
+ return empty($this->label) ? Loco::__('Unknown language') : $this->label;
66
  }
67
 
68
  public function equal_to( LocoLocale $locale ){
74
  $cc = preg_quote( $this->region, $delimiter );
75
  return $lc.'(?:[\-_]'.$cc.')?';
76
  }
77
+
78
+
79
+
80
  /**
81
  * @return LocoLocale
82
  */
83
  public static function init( $lc, $cc ){
84
+ extract( self::data() );
85
+ if( ! $cc ){
86
+ $cc = loco_language_country($lc);
87
+ }
88
+ $label = '';
89
  $locale = new LocoLocale( $lc, $cc );
90
+ // attempt to use a common locale combination
91
  if( isset($locales[$lc]) ){
92
  if( ! $cc ){
93
  $cc = key( $locales[$lc] );
94
+ $locale->region = $cc;
95
  }
96
  if( isset($locales[$lc][$cc]) ){
97
+ $locale->label = $locales[$lc][$cc];
98
+ }
99
+ }
100
+ // get plural rules from iso 639 language and set label if common locale wasn't known
101
+ if( isset($langs[$lc]) ){
102
+ list( $label, $pluraleq, $plurals ) = $langs[$lc];
103
+ $locale->pluraleq = $pluraleq;
104
+ $locale->plurals = $plurals;
105
+ $locale->nplurals = count( $plurals );
106
+ }
107
+ // get country just for label if not already applied from common locale combo
108
+ if( ! $locale->label ){
109
+ if( $cc ){
110
+ if( isset($regions[$cc]) ){
111
+ $label = $label ? $label.' ('.$regions[$cc].')' : $regions[$cc];
112
+ }
113
+ else {
114
+ $label = $label ? $label.' ('.$cc.')' : '';
115
+ }
116
  }
117
+ $locale->label = $label;
118
  }
119
  return $locale;
120
  }
121
 
122
+
123
+
124
+ /**
125
+ * @return array
126
+ */
127
+ private static function data(){
128
+ static $data;
129
+ if( ! isset($data) ){
130
+ // this must be the first include of this file to ensure it returns
131
+ $data = loco_require('build/locales-compiled');
132
+ }
133
+ return $data;
134
+ }
135
+
136
+
137
+
138
+ /**
139
+ * Get names of all common locales indexed by xx_YY code
140
+ * @return array
141
+ */
142
+ public static function get_names(){
143
+ $names = array();
144
+ $data = self::data();
145
+ foreach( $data['locales'] as $lc => $regions ){
146
+ foreach( $regions as $cc => $label ){
147
+ $names[$lc.'_'.$cc] = $label;
148
+ }
149
+ }
150
+ return $names;
151
+ }
152
+
153
  }
154
 
155
 
lib/loco-packages.php CHANGED
@@ -3,7 +3,7 @@
3
  * Object representing a theme, plugin or domain within core code.
4
  * Packages are identified uniquely by a type (e.g. "theme") and internal wordpress name, e.g. "loco-translate".
5
  */
6
- class LocoPackage {
7
 
8
  /**
9
  * Internal identifier, could be name, or path, or anything in future
@@ -16,6 +16,12 @@ class LocoPackage {
16
  * @var string
17
  */
18
  private $domain;
 
 
 
 
 
 
19
 
20
  /**
21
  * Nice descriptive name, e.g. "Loco Translate"
@@ -70,29 +76,49 @@ class LocoPackage {
70
  */
71
  private $_meta;
72
 
 
 
 
 
 
 
 
73
  /**
74
  * Construct package from name, root and domain
75
  */
76
- protected function __construct( $name_or_path, $domain, $name ){
77
  $this->handle = $name_or_path;
78
  $this->domain = $domain;
79
  $this->name = $name or $this->name = $domain;
 
 
 
80
  }
81
 
82
  /**
83
  * Get default system languages directory
84
  */
85
- protected function _lang_dir(){
86
  return WP_LANG_DIR;
87
- }
88
-
89
-
90
  /**
91
- * Get package type, defaults to 'core'
92
- */
93
- public function get_type(){
94
- return 'core';
95
- }
 
 
 
 
 
 
 
 
 
 
96
 
97
  /**
98
  * Get identifying pair of arguments for fetching this object
@@ -252,11 +278,14 @@ class LocoPackage {
252
  /**
253
  * Get most likely intended language folder
254
  */
255
- public function lang_dir( $domain = '' ){
256
  $dirs = array();
257
  // check location of POT in domain
258
  foreach( $this->pot as $d => $path ){
259
  if( ! $domain || $d === $domain ){
 
 
 
260
  $path = dirname($path);
261
  if( is_writable($path) ){
262
  return $path;
@@ -268,6 +297,9 @@ class LocoPackage {
268
  foreach( $this->po as $d => $paths ){
269
  if( ! $domain || $d === $domain ){
270
  foreach( $paths as $path ){
 
 
 
271
  $path = dirname($path);
272
  if( is_writable($path) ){
273
  return $path;
@@ -278,7 +310,10 @@ class LocoPackage {
278
  }
279
  // check languages subfolder of all source file locations
280
  foreach( $this->src as $path ){
281
- $pref = $path.'/languages';
 
 
 
282
  if( is_writable($pref) ){
283
  return $pref;
284
  }
@@ -293,11 +328,13 @@ class LocoPackage {
293
  }
294
  }
295
  // check global languages location
296
- $path = $this->_lang_dir();
297
- if( is_writable($path) ){
298
- return $path;
 
 
 
299
  }
300
- $dirs[] = $path;
301
  // failed to get writable directory, so we'll just return the highest priority
302
  return array_shift( $dirs );
303
  }
@@ -306,21 +343,33 @@ class LocoPackage {
306
  /**
307
  * Build name of PO file for given or default domain
308
  */
309
- public function create_po_path( LocoLocale $locale, $domain = '' ){
310
  if( ! $domain ){
311
  $domain = $this->get_domain();
312
  }
313
- $dir = $this->lang_dir( $domain );
 
 
 
 
 
 
 
 
 
 
 
 
314
  $name = $locale->get_code().'.po';
315
  // only prefix with text domain for plugins and files in global lang directory
316
- if( 'plugin' === $this->get_type() || 0 === strpos( $dir, $this->_lang_dir() ) ){
317
  $prefix = $domain.'-';
318
  }
319
  else {
320
  $prefix = '';
321
  }
322
  // if PO files exist, copy their naming format and use location if writable
323
- if( ! empty($this->po[$domain]) ){
324
  foreach( $this->po[$domain] as $code => $path ){
325
  $info = pathinfo( $path );
326
  $prefix = str_replace( $code.'.'.$info['extension'], '', $info['basename'] );
@@ -402,6 +451,13 @@ class LocoPackage {
402
  */
403
  public function get_permission_errors(){
404
  $dirs = array();
 
 
 
 
 
 
 
405
  $paths = array();
406
  foreach( $this->pot as $path ){
407
  $dirs[ dirname($path) ] = 1;
@@ -415,15 +471,9 @@ class LocoPackage {
415
  $paths[$path] = file_exists($path) ? ( is_writeable($path) ? '' : Loco::__('MO file not writable') ) : Loco::__('MO file not found');
416
  }
417
  }
418
- if( ! isset($path) ){
419
- $base = $this->get_root();
420
- $dirs[ $base ] = 1;
421
- $dirs[ $base.'/languages' ] = 1;
422
- }
423
- $dirs[ $this->lang_dir() ] = 1;
424
- $dirs[ $this->_lang_dir() ] = 1;
425
  foreach( array_keys($dirs) as $dir ){
426
- $paths[$dir] = is_writable($dir) ? '' : Loco::__('Folder not writable');
427
  }
428
  ksort( $paths );
429
  return $paths;
@@ -527,6 +577,7 @@ class LocoPackage {
527
  'stats' => loco_po_stats( $export ),
528
  'length' => count( $export ),
529
  'locale' => loco_locale_resolve($code),
 
530
  );
531
  }
532
  catch( Exception $Ex ){
@@ -578,8 +629,9 @@ class LocoPackage {
578
  $theme = wp_get_theme( $handle );
579
  if( $theme && $theme->exists() ){
580
  $name = $theme->get('Name');
581
- $domain = $theme->get('TextDomain');
582
- $package = new LocoThemePackage( $handle, $domain, $name );
 
583
  $root = $theme->get_theme_root().'/'.$handle;
584
  $package->add_source( $root );
585
  // add PO and POT under theme root
@@ -592,31 +644,11 @@ class LocoPackage {
592
  }
593
  // find additional theme PO under WP_LANG_DIR/themes unless a child theme
594
  $package->add_lang_dir( WP_LANG_DIR.'/themes', $domain );
595
- // child theme inherits parent template translations
596
- while( $parent = $theme->get_template() ){
597
- if( $parent === $handle ){
598
- // circular reference
599
- break;
600
  }
601
- $parent = LocoPackage::get( $parent, 'theme' );
602
- if( ! $parent ){
603
- // parent missing
604
- break;
605
- }
606
- // indicate that theme is a child
607
- $package->inherit( $parent );
608
- if( $domain && $domain !== $parent->domain ){
609
- // child specifies its own domain and will have to call load_child_theme_textdomain
610
- }
611
- else if( ! empty($package->po) || ! empty($package->pot) ){
612
- // child has its own language files and domain will be picked up when get_domain called
613
- $package->get_domain();
614
- }
615
- else {
616
- // else should child inherit parent domain?
617
- $package->domain = $parent->get_domain();
618
- }
619
- break;
620
  }
621
  return $package;
622
  }
@@ -632,7 +664,7 @@ class LocoPackage {
632
  if( isset($plugins[$handle]) && is_array($plugins[$handle]) ){
633
  $plugin = $plugins[$handle];
634
  $domain = $plugin['TextDomain'] or $domain = str_replace('/','-',dirname($handle));
635
- $package = new LocoPluginPackage( $handle, $domain, $plugin['Name'] );
636
  $root = WP_PLUGIN_DIR.'/'.dirname($handle);
637
  $package->add_source( $root );
638
  // add PO and POT under plugin root
@@ -648,24 +680,52 @@ class LocoPackage {
648
  return $package;
649
  }
650
  }
651
-
652
-
653
  /**
654
  * construct a core package object from name
 
655
  */
656
  private static function get_core( $handle ){
657
- /*
658
- $files = LocoAdmin::pop_lang_dir($domain);
659
- if( $files['po'] || $files['pot'] ){
660
- $package = new LocoPackage( $domain, $handle );
661
- $package->add_po( $files );
662
- //
663
- Loco::cache( $key, $package );
664
- return $package;
 
 
 
 
 
 
 
 
 
 
 
 
 
665
  }
666
- */
667
  }
668
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
669
 
670
 
671
  /**
@@ -730,11 +790,14 @@ class LocoPackage {
730
  */
731
  class LocoThemePackage extends LocoPackage {
732
  private $parent;
733
- protected function _lang_dir(){
734
  return WP_LANG_DIR.'/themes';
735
  }
736
- protected function inherit( LocoThemePackage $parent ){
737
- $this->parent = $parent->get_handle();
 
 
 
738
  }
739
  protected function is_child(){
740
  return ! empty($this->parent);
@@ -755,6 +818,23 @@ class LocoThemePackage extends LocoPackage {
755
  }
756
  return $meta;
757
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
758
  public function get_pot( $domain = '' ){
759
  if( ( $parent = $this->get_parent() ) && ( $pot = $parent->get_pot($domain) ) ){
760
  return $pot;
@@ -771,7 +851,7 @@ class LocoThemePackage extends LocoPackage {
771
  * Extended package class for plugins
772
  */
773
  class LocoPluginPackage extends LocoPackage {
774
- protected function _lang_dir(){
775
  return WP_LANG_DIR.'/plugins';
776
  }
777
  public function get_type(){
@@ -779,3 +859,14 @@ class LocoPluginPackage extends LocoPackage {
779
  }
780
  }
781
 
 
 
 
 
 
 
 
 
 
 
 
3
  * Object representing a theme, plugin or domain within core code.
4
  * Packages are identified uniquely by a type (e.g. "theme") and internal wordpress name, e.g. "loco-translate".
5
  */
6
+ abstract class LocoPackage {
7
 
8
  /**
9
  * Internal identifier, could be name, or path, or anything in future
16
  * @var string
17
  */
18
  private $domain;
19
+
20
+ /**
21
+ * Default domain path relative to package root, e.g. "/languages"
22
+ * @var string
23
+ */
24
+ protected $domainpath = '/languages';
25
 
26
  /**
27
  * Nice descriptive name, e.g. "Loco Translate"
76
  */
77
  private $_meta;
78
 
79
+ /**
80
+ * Get package subclass type
81
+ * @return string theme, plugin or core
82
+ */
83
+ abstract public function get_type();
84
+
85
+
86
  /**
87
  * Construct package from name, root and domain
88
  */
89
+ protected function __construct( $name_or_path, $domain, $name, $dpath = '' ){
90
  $this->handle = $name_or_path;
91
  $this->domain = $domain;
92
  $this->name = $name or $this->name = $domain;
93
+ if( $dpath ){
94
+ $this->domainpath = '/'.trim($dpath,'/');
95
+ }
96
  }
97
 
98
  /**
99
  * Get default system languages directory
100
  */
101
+ public function global_lang_dir(){
102
  return WP_LANG_DIR;
103
+ }
104
+
105
+
106
  /**
107
+ * Test if provided path is under global lang dir
108
+ */
109
+ public function is_global_path($path){
110
+ return 0 === strpos( $path, $this->global_lang_dir() );
111
+ }
112
+
113
+
114
+ /**
115
+ * Test if package has a writable global lang dir
116
+ */
117
+ public function is_global_writable(){
118
+ $dir = $this->global_lang_dir();
119
+ return $dir && is_dir($dir) && is_writable( $dir );
120
+ }
121
+
122
 
123
  /**
124
  * Get identifying pair of arguments for fetching this object
278
  /**
279
  * Get most likely intended language folder
280
  */
281
+ public function lang_dir( $domain = '', $skip_global = false ){
282
  $dirs = array();
283
  // check location of POT in domain
284
  foreach( $this->pot as $d => $path ){
285
  if( ! $domain || $d === $domain ){
286
+ if( $skip_global && $this->is_global_path($path) ){
287
+ continue;
288
+ }
289
  $path = dirname($path);
290
  if( is_writable($path) ){
291
  return $path;
297
  foreach( $this->po as $d => $paths ){
298
  if( ! $domain || $d === $domain ){
299
  foreach( $paths as $path ){
300
+ if( $skip_global && $this->is_global_path($path) ){
301
+ continue;
302
+ }
303
  $path = dirname($path);
304
  if( is_writable($path) ){
305
  return $path;
310
  }
311
  // check languages subfolder of all source file locations
312
  foreach( $this->src as $path ){
313
+ if( $skip_global && $this->is_global_path($path) ){
314
+ continue;
315
+ }
316
+ $pref = $path.$this->domainpath;
317
  if( is_writable($pref) ){
318
  return $pref;
319
  }
328
  }
329
  }
330
  // check global languages location
331
+ if( ! $skip_global ){
332
+ $path = $this->global_lang_dir();
333
+ if( is_writable($path) ){
334
+ return $path;
335
+ }
336
+ $dirs[] = $path;
337
  }
 
338
  // failed to get writable directory, so we'll just return the highest priority
339
  return array_shift( $dirs );
340
  }
343
  /**
344
  * Build name of PO file for given or default domain
345
  */
346
+ public function create_po_path( LocoLocale $locale, $domain = '', $force_global = null ){
347
  if( ! $domain ){
348
  $domain = $this->get_domain();
349
  }
350
+ // get best directory
351
+ if( is_null($force_global) ){
352
+ $dir = $this->lang_dir( $domain );
353
+ $force_global = $this->is_global_path( $dir );
354
+ }
355
+ // else use global directory by force
356
+ else if( $force_global ){
357
+ $dir = $this->global_lang_dir();
358
+ }
359
+ // else use best, but skipping global directory
360
+ else {
361
+ $dir = $this->lang_dir( $domain, true );
362
+ }
363
  $name = $locale->get_code().'.po';
364
  // only prefix with text domain for plugins and files in global lang directory
365
+ if( 'plugin' === $this->get_type() || $force_global ){
366
  $prefix = $domain.'-';
367
  }
368
  else {
369
  $prefix = '';
370
  }
371
  // if PO files exist, copy their naming format and use location if writable
372
+ if( is_null($force_global) && ! empty($this->po[$domain]) ){
373
  foreach( $this->po[$domain] as $code => $path ){
374
  $info = pathinfo( $path );
375
  $prefix = str_replace( $code.'.'.$info['extension'], '', $info['basename'] );
451
  */
452
  public function get_permission_errors(){
453
  $dirs = array();
454
+ // add common directories
455
+ $base = $this->get_root();
456
+ $dirs[ $base ] = 1;
457
+ $dirs[ $base.$this->domainpath ] = 1;
458
+ $dirs[ $this->lang_dir() ] = 1;
459
+ $dirs[ $this->global_lang_dir() ] = 1;
460
+ // add and check files, collecting additional directories along the way
461
  $paths = array();
462
  foreach( $this->pot as $path ){
463
  $dirs[ dirname($path) ] = 1;
471
  $paths[$path] = file_exists($path) ? ( is_writeable($path) ? '' : Loco::__('MO file not writable') ) : Loco::__('MO file not found');
472
  }
473
  }
474
+ // run directory checks and sort final list alphabetically
 
 
 
 
 
 
475
  foreach( array_keys($dirs) as $dir ){
476
+ $paths[$dir] = is_writable($dir) ? '' : ( is_dir($dir) ? Loco::__('Folder not writable') : Loco::__('Folder not found') );
477
  }
478
  ksort( $paths );
479
  return $paths;
577
  'stats' => loco_po_stats( $export ),
578
  'length' => count( $export ),
579
  'locale' => loco_locale_resolve($code),
580
+ 'projid' => trim( $headers->{'project-id-version'} ),
581
  );
582
  }
583
  catch( Exception $Ex ){
629
  $theme = wp_get_theme( $handle );
630
  if( $theme && $theme->exists() ){
631
  $name = $theme->get('Name');
632
+ $domain = $theme->get('TextDomain') or $domain = $handle;
633
+ // create theme package with text domain defaulting to template name
634
+ $package = new LocoThemePackage( $handle, $domain, $name, $theme->get('DomainPath') );
635
  $root = $theme->get_theme_root().'/'.$handle;
636
  $package->add_source( $root );
637
  // add PO and POT under theme root
644
  }
645
  // find additional theme PO under WP_LANG_DIR/themes unless a child theme
646
  $package->add_lang_dir( WP_LANG_DIR.'/themes', $domain );
647
+ // child theme inherits parent, but keeps its own domain
648
+ if( $parent = $theme->get_template() ){
649
+ if( $parent !== $handle ){
650
+ $package->inherit( $parent );
 
651
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
652
  }
653
  return $package;
654
  }
664
  if( isset($plugins[$handle]) && is_array($plugins[$handle]) ){
665
  $plugin = $plugins[$handle];
666
  $domain = $plugin['TextDomain'] or $domain = str_replace('/','-',dirname($handle));
667
+ $package = new LocoPluginPackage( $handle, $domain, $plugin['Name'], $plugin['DomainPath'] );
668
  $root = WP_PLUGIN_DIR.'/'.dirname($handle);
669
  $package->add_source( $root );
670
  // add PO and POT under plugin root
680
  return $package;
681
  }
682
  }
683
+
684
+
685
  /**
686
  * construct a core package object from name
687
+ * @return LocoPackage
688
  */
689
  private static function get_core( $handle ){
690
+ static $grouped;
691
+ if( ! isset($grouped) ){
692
+ $grouped = array();
693
+ foreach( LocoAdmin::find_grouped( WP_LANG_DIR.'/*{.po,.pot}', GLOB_NOSORT|GLOB_BRACE ) as $ext => $files ){
694
+ foreach( $files as $path ){
695
+ $domain = LocoAdmin::resolve_file_domain( $path );
696
+ $grouped[ $domain ][ $ext ][] = $path;
697
+ }
698
+ }
699
+ }
700
+ $domain = $handle or $domain = 'default';
701
+ $package = new LocoCorePackage( $handle, $domain, '' );
702
+ if( isset($grouped[$handle]) ){
703
+ $package->add_po( $grouped[$handle], $domain );
704
+ // get name from po file
705
+ $meta = $package->meta();
706
+ foreach( $meta['po'] as $pmeta ){
707
+ if( $pmeta['projid'] ){
708
+ $package->name = $pmeta['projid'];
709
+ }
710
+ }
711
  }
712
+ return $package;
713
  }
714
+
715
+
716
+
717
+ /**
718
+ * Get all core pseudo packages
719
+ */
720
+ public static function get_core_packages(){
721
+ static $names = array( '', 'admin', 'admin-network', 'continents-cities', 'ms' );
722
+ $packages = array();
723
+ foreach( $names as $handle ){
724
+ $packages[$handle] = self::get( $handle, 'core' );
725
+ }
726
+ return $packages;
727
+ }
728
+
729
 
730
 
731
  /**
790
  */
791
  class LocoThemePackage extends LocoPackage {
792
  private $parent;
793
+ public function global_lang_dir(){
794
  return WP_LANG_DIR.'/themes';
795
  }
796
+ protected function inherit( $template ){
797
+ $parent = wp_get_theme( $template );
798
+ if( $parent && $parent->exists() ){
799
+ $this->parent = $template;
800
+ }
801
  }
802
  protected function is_child(){
803
  return ! empty($this->parent);
818
  }
819
  return $meta;
820
  }
821
+ public function check_permissions(){
822
+ parent::check_permissions();
823
+ if( $parent = $this->get_parent() ){
824
+ $parent->check_permissions();
825
+ }
826
+ }
827
+ public function get_permission_errors(){
828
+ $paths = parent::get_permission_errors();
829
+ // check parent theme if exists
830
+ if( $parent = $this->get_parent() ){
831
+ // recurse if child theme uses same domain as parent
832
+ if( $this->get_domain() === $parent->get_domain() ){
833
+ $paths += $parent->get_permission_errors( true );
834
+ }
835
+ }
836
+ return $paths;
837
+ }
838
  public function get_pot( $domain = '' ){
839
  if( ( $parent = $this->get_parent() ) && ( $pot = $parent->get_pot($domain) ) ){
840
  return $pot;
851
  * Extended package class for plugins
852
  */
853
  class LocoPluginPackage extends LocoPackage {
854
+ public function global_lang_dir(){
855
  return WP_LANG_DIR.'/plugins';
856
  }
857
  public function get_type(){
859
  }
860
  }
861
 
862
+
863
+ /**
864
+ * Extended package class for core pseudo packages
865
+ */
866
+ class LocoCorePackage extends LocoPackage {
867
+ protected $domainpath = '';
868
+ public function get_type(){
869
+ return 'core';
870
+ }
871
+ }
872
+
lib/test/bootstrap.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Unit test bootstrapper.
4
+ * This is nothing close to an accurate simulation of Wordpress environment, it's just for testing utils.
5
+ * @usage phpunit --bootstrap bootstrap.php tests
6
+ */
7
+
8
+ define('WP_CONTENT_DIR', realpath(__DIR__.'/../../../..') );
9
+ WP_CONTENT_DIR or die("Can't find WP_CONTENT_DIR\n");
10
+
11
+ define('WP_LANG_DIR', WP_CONTENT_DIR.'/languages' );
12
+
13
+ function is_admin(){
14
+ return false;
15
+ }
16
+
17
+ function esc_html( $text ){
18
+ return htmlspecialchars( $text, ENT_COMPAT, 'UTF-8' );
19
+ }
20
+
21
+ function add_action(){
22
+ // noop
23
+ }
24
+
25
+ function add_filter(){
26
+ // noop
27
+ }
28
+
29
+ function apply_filters( $hook, $value = null ){
30
+ return $value;
31
+ }
32
+
33
+ function get_locale(){
34
+ return 'en_US';
35
+ }
36
+
37
+ function __($t){
38
+ return $t;
39
+ }
40
+
41
+ define('WP_DEBUG', true );
42
+
43
+ require __DIR__.'/../../loco.php';
44
+
45
+ loco_require( 'loco-boot','loco-admin','loco-locales','loco-packages','build/gettext-compiled','build/shell-compiled' );
lib/test/tests/CorePackageTest.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * @group package
4
+ * @group core
5
+ */
6
+ class CorePackageTest extends PHPUnit_Framework_TestCase {
7
+
8
+
9
+ public function testGetCorePackage(){
10
+ $package = LocoPackage::get( 'continents-cities', 'core' );
11
+ $this->assertInstanceOf( 'LocoPackage', $package );
12
+ $this->assertEquals( 'core', $package->get_type() );
13
+ $this->assertEquals( 'Continents & Cities', $package->get_name() );
14
+ $this->assertEquals( 'continents-cities', $package->get_domain() );
15
+ $this->assertEmpty( $package->get_source_dirs() );
16
+ }
17
+
18
+
19
+ public function testGetCoreDefaultPackage(){
20
+ $package = LocoPackage::get( '', 'core' );
21
+ $this->assertEquals( 'core', $package->get_type() );
22
+ $this->assertEquals( 'Development', $package->get_name() );
23
+ $this->assertEquals( 'default', $package->get_domain() );
24
+ $this->assertEmpty( $package->get_source_dirs() );
25
+ }
26
+
27
+
28
+
29
+ public function testGetCorePackages(){
30
+ $packages = LocoPackage::get_core_packages();
31
+ $this->assertCount( 5, $packages );
32
+ $this->assertArrayHasKey( '', $packages );
33
+ $this->assertArrayHasKey( 'ms', $packages );
34
+ $this->assertArrayHasKey( 'admin', $packages );
35
+ $this->assertArrayHasKey( 'admin-network', $packages );
36
+ $this->assertArrayHasKey( 'continents-cities', $packages );
37
+ }
38
+
39
+
40
+
41
+
42
+
43
+
44
+ }
lib/test/tests/FindFilesTest.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Test admin class file finding utils.
4
+ * tests require that twentyfourteen theme is in the expected location
5
+ *
6
+ * @group files
7
+ */
8
+ class FileFilesTest extends PHPUnit_Framework_TestCase {
9
+
10
+
11
+
12
+ public function testFindPo(){
13
+ $files = LocoAdmin::find_po( WP_LANG_DIR );
14
+ $this->assertInternalType('array', $files );
15
+ $this->assertArrayHasKey('po', $files );
16
+ $this->assertArrayHasKey('pot', $files );
17
+ }
18
+
19
+
20
+ public function testFindPot(){
21
+ $files = LocoAdmin::find_pot( WP_CONTENT_DIR.'/themes/twentyfourteen' );
22
+ $this->assertInternalType('array', $files );
23
+ $this->assertContains( WP_CONTENT_DIR.'/themes/twentyfourteen/languages/twentyfourteen.pot', $files );
24
+ }
25
+
26
+
27
+ public function testFindPhp(){
28
+ $files = LocoAdmin::find_php( WP_CONTENT_DIR.'/themes/twentyfourteen' );
29
+ $this->assertInternalType('array', $files );
30
+ $this->assertContains( WP_CONTENT_DIR.'/themes/twentyfourteen/functions.php', $files );
31
+ }
32
+
33
+
34
+ public function testFindGrouped(){
35
+ $pattern = WP_CONTENT_DIR.'/themes/twentyfourteen/languages/*{.po,.pot}';
36
+ $files = LocoAdmin::find_grouped( $pattern, GLOB_NOSORT|GLOB_BRACE );
37
+ $this->assertStringEndsWith('twentyfourteen.pot', $files['pot'][0] );
38
+ }
39
+
40
+
41
+ }
lib/test/tests/GettextTest.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Test built gettext libs.
4
+ *
5
+ * @group gettext
6
+ * @group built
7
+ */
8
+ class GettextTest extends PHPUnit_Framework_TestCase {
9
+
10
+
11
+ public function testParsePO(){
12
+ $popath = __DIR__.'/../../../languages/loco-translate-de_DE.po';
13
+ $this->assertFileExists( $popath );
14
+ $posrc = file_get_contents($popath);
15
+ $po = loco_parse_po( $posrc );
16
+ // test header as guaranteed first string
17
+ $head = $po[0];
18
+ $this->assertEquals( '', $head['source'] );
19
+ $head = loco_parse_po_headers( $head['target'] );
20
+ /* @var $head LocoArray */
21
+ $this->assertEquals( 'Loco Translate', $head->__get('Project-Id-Version'), 'Failed to extract Project-Id-Version' );
22
+ $this->assertEquals( 'German', $head->language, 'Failed to extract Language header' );
23
+ return $po;
24
+ }
25
+
26
+
27
+ /**
28
+ * Test native MO writer
29
+ * @depends testParsePO
30
+ */
31
+ public function testNativeMsgfmt( array $po ){
32
+ $bin = loco_msgfmt( $po );
33
+ $this->assertStringStartsWith( "\xDE\x12\x04\x95\0\0\0\0", $bin, 'Bad magic number encoding' );
34
+ $this->assertStringEndsWith( "\0", $bin, 'Bad mo file ending' );
35
+ }
36
+
37
+
38
+
39
+ /**
40
+ * Test shell msgfmt MO writer
41
+ */
42
+ public function testShellMsgfmt(){
43
+ // test finding of executable
44
+ $cmd = loco_find_executable('msgfmt');
45
+ $this->assertStringEndsWith('/msgfmt', $cmd );
46
+ define( 'WHICH_MSGFMT', $cmd );
47
+ // test shell compile via temp file
48
+ $popath = realpath( __DIR__.'/../../../languages/loco-translate-de_DE.po' );
49
+ $mopath = tempnam( sys_get_temp_dir(), 'loco-mo-' );
50
+ register_shutdown_function('unlink', $mopath );
51
+ $this->assertEquals( $mopath, loco_compile_mo_file( $popath, $mopath ), 'Failed to compile MO' );
52
+ $bin = file_get_contents( $mopath );
53
+ $this->assertStringEndsWith( "\0", $bin, 'Bad mo file ending' );
54
+ }
55
+
56
+
57
+
58
+ /**
59
+ * Test xgettext style tring extraction
60
+ */
61
+ public function testLocoPHPExtractor(){
62
+ $source = file_get_contents( __DIR__.'/../../../pub/js/lang/dummy.php' );
63
+ $tokens = token_get_all($source);
64
+ $extractor = new LocoPHPExtractor;
65
+ $export = $extractor->extract( $tokens, 'test.php' );
66
+ // should have got 15 messages, 2 of which pluralized
67
+ $this->assertCount( 17, $export );
68
+ // check first message on line 8, "Unknown error"
69
+ $this->assertEquals( 'Unknown error', $export[0]['source'] );
70
+ // reference should be intact with line number
71
+ $this->assertContains('test.php:8', $export[0]['refs'] );
72
+ // first message should not have included the file header comment not intended to go with it
73
+ $this->assertEmpty( $export[0]['notes'], 'Comment block should not have been extracted' );
74
+ // third item should auto-detect its php-format flag
75
+ $this->assertEquals( 'php', $export[3]['format'] );
76
+ }
77
+
78
+
79
+ }
80
+
81
+
82
+
lib/test/tests/LocalesTest.php ADDED
@@ -0,0 +1,133 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Test built locale libs.
4
+ *
5
+ * @group locales
6
+ * @group built
7
+ */
8
+ class LocalesTest extends PHPUnit_Framework_TestCase {
9
+
10
+
11
+ public function testGetAllLocales(){
12
+ $map = LocoLocale::get_names();
13
+ $this->assertCount( 130, $map );
14
+ }
15
+
16
+
17
+ public function testKnownLocaleResolves(){
18
+ $locale = loco_locale_resolve('en_GB');
19
+ $this->assertInstanceOf('LocoLocale', $locale );
20
+ $this->assertEquals( 'English (UK)', $locale->get_name() );
21
+ $this->assertEquals( 'en_GB', $locale->get_code() );
22
+ // assert plurals
23
+ $data = $locale->export();
24
+ $this->assertEquals( 2, $data['nplurals'] );
25
+ }
26
+
27
+
28
+ public function testLanguageOnlyResolves(){
29
+ $locale = loco_locale_resolve('en_GB');
30
+ $this->assertEquals( 'English (UK)', $locale->get_name() );
31
+ $this->assertEquals( 'en_GB', $locale->get_code() );
32
+ }
33
+
34
+
35
+ public function testUnknownLocaleWithValidLanguageAndRegionAllowed(){
36
+ $locale = loco_locale_resolve('pl_CY');
37
+ $this->assertInstanceOf('LocoLocale', $locale );
38
+ $this->assertEquals( 'pl_CY', $locale->get_code() );
39
+ $this->assertEquals( 'Polish (Cyprus)', $locale->get_name() );
40
+ }
41
+
42
+
43
+ public function testUnkownRegionWithValidLanguageAllowed(){
44
+ $locale = loco_locale_resolve('en_FF');
45
+ $this->assertInstanceOf('LocoLocale', $locale );
46
+ $this->assertEquals( 'en_FF', $locale->get_code() );
47
+ $this->assertEquals( 'English (FF)', $locale->get_name() );
48
+ }
49
+
50
+
51
+ public function testUnknownLanguageWithValidRegionAllowed(){
52
+ $locale = loco_locale_resolve('zz_GB');
53
+ $this->assertInstanceOf('LocoLocale', $locale );
54
+ $this->assertEquals( 'zz_GB', $locale->get_code() );
55
+ $this->assertEquals( 'United Kingdom', $locale->get_name() );
56
+ }
57
+
58
+
59
+ public function testUnknownAndUnknownRegionAllowed(){
60
+ $locale = loco_locale_resolve('zz_ZZ');
61
+ $this->assertInstanceOf('LocoLocale', $locale );
62
+ $this->assertEquals( 'zz_ZZ', $locale->get_code() );
63
+ $this->assertEquals( 'Unknown language', $locale->get_name() );
64
+ }
65
+
66
+
67
+
68
+ public function testPrefixedLocaleResolve(){
69
+ $locale = loco_locale_resolve( '--en_GB' );
70
+ $this->assertInstanceOf('LocoLocale', $locale );
71
+ $this->assertEquals( 'English (UK)', $locale->get_name() );
72
+ $this->assertEquals( 'en_GB', $locale->get_code() );
73
+ return $locale;
74
+ }
75
+
76
+
77
+ public function testLocaleEquality(){
78
+ $locale = LocoLocale::init('en','GB');
79
+ $other = LocoLocale::init('en','');
80
+ $this->assertTrue( $locale->equal_to($other), $locale.' is not the same locale as '.$other );
81
+ }
82
+
83
+
84
+ public function testLocaleGrep(){
85
+ $locale = LocoLocale::init('en','GB');
86
+ $pattern = '/'.$locale->preg().'/';
87
+ $this->assertTrue( (bool) preg_match($pattern, '--en_GB' ) );
88
+ }
89
+
90
+
91
+ public function testPluralFormCounts(){
92
+ // English - two forms
93
+ $locale = LocoLocale::init('en','GB');
94
+ extract( $locale->export() );
95
+ $this->assertEquals( 2, $nplurals );
96
+ // Chinese - one form
97
+ $locale = LocoLocale::init('zh','TW');
98
+ extract( $locale->export() );
99
+ $this->assertEquals( 1, $nplurals );
100
+ // Polish - three forms
101
+ $locale = LocoLocale::init('pl','PL');
102
+ extract( $locale->export() );
103
+ $this->assertEquals( 3, $nplurals );
104
+ // Arabic - six forms
105
+ $locale = LocoLocale::init('ar','AE');
106
+ extract( $locale->export() );
107
+ $this->assertEquals( 6, $nplurals );
108
+ }
109
+
110
+
111
+ public function testPluralFormArrays(){
112
+ // English - two forms
113
+ $locale = LocoLocale::init('en','GB');
114
+ extract( $locale->export() );
115
+ $this->assertCount( 2, $plurals );
116
+ // Chinese - one form
117
+ $locale = LocoLocale::init('zh','TW');
118
+ extract( $locale->export() );
119
+ $this->assertCount( 1, $plurals );
120
+ // Polish - three forms
121
+ $locale = LocoLocale::init('pl','PL');
122
+ extract( $locale->export() );
123
+ $this->assertCount( 3, $plurals );
124
+ // Arabic - six forms
125
+ $locale = LocoLocale::init('ar','AE');
126
+ extract( $locale->export() );
127
+ $this->assertCount( 6, $plurals );
128
+ }
129
+
130
+
131
+
132
+
133
+ }
lib/test/tests/UtilsTest.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Test misc utils
4
+ *
5
+ * @group utils
6
+ */
7
+ class UtilsTest extends PHPUnit_Framework_TestCase {
8
+
9
+
10
+ public function test_resolve_file_domain(){
11
+ $domain = LocoAdmin::resolve_file_domain( '/foo.pot' );
12
+ $this->assertEquals( 'foo', $domain );
13
+
14
+ $domain = LocoAdmin::resolve_file_domain( '/foo-en_GB.po' );
15
+ $this->assertEquals( 'foo', $domain );
16
+
17
+ $domain = LocoAdmin::resolve_file_domain( '/foo-en.po' );
18
+ $this->assertEquals( 'foo', $domain );
19
+ }
20
+
21
+
22
+ public function test_resolve_file_locale(){
23
+ $locale = LocoAdmin::resolve_file_locale('/foo-en.po');
24
+ $this->assertEquals( 'en_GB', $locale->get_code() );
25
+
26
+ $locale = LocoAdmin::resolve_file_locale('/foo-ja.po');
27
+ $this->assertEquals( 'ja_JP', $locale->get_code() );
28
+ }
29
+
30
+
31
+ }
loco.php CHANGED
@@ -4,8 +4,10 @@ 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.4.4
8
  Author URI: http://localise.biz/help/wordpress/translate-plugin
 
 
9
  */
10
 
11
 
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.5
8
  Author URI: http://localise.biz/help/wordpress/translate-plugin
9
+ Text Domain: loco-translate
10
+ Domain Path: /languages/
11
  */
12
 
13
 
php/loco-posync.php CHANGED
@@ -43,6 +43,10 @@
43
  }
44
 
45
  // Extract from sources by default
 
 
 
 
46
  $relative_to = dirname($path);
47
  //$relative_to = $pot_path ? dirname($pot_path) : $package->get_root();
48
  if( $exp = LocoAdmin::xgettext( $package, $relative_to ) ){
43
  }
44
 
45
  // Extract from sources by default
46
+ if( ! $package->get_source_dirs() ){
47
+ throw new Exception( Loco::__('No source files in this package, nothing to sync') );
48
+ }
49
+
50
  $relative_to = dirname($path);
51
  //$relative_to = $pot_path ? dirname($pot_path) : $package->get_root();
52
  if( $exp = LocoAdmin::xgettext( $package, $relative_to ) ){
pub/css/loco-admin.css CHANGED
@@ -1 +1 @@
1
- .wrap a.nav-tab-active{cursor:text}.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-error>*:before,.wrap .loco-warning>*: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-message p:before,.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-warning>*: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}.error a.dismiss:before,.updated a.dismiss:before{display:none}.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}
1
+ .wrap a.nav-tab-active{cursor:text}.wrap #loco-poedit .wg-cell,.wrap #loco-poedit .wg-cell div{position:relative;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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: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.7em;margin-left:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-o-text-overflow:ellipsis;-ms-text-overflow:ellipsis}.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{-webkit-box-shadow:inset 0 0 10px #3875d7;-moz-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{-webkit-box-shadow:inset 0 0 10px #c00;-moz-box-shadow:inset 0 0 10px #c00;box-shadow:inset 0 0 10px #c00}.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;-webkit-border-radius:0.2em 0.2em 0 0;-moz-border-radius:0.2em 0.2em 0 0;-ms-border-radius:0.2em 0.2em 0 0;-o-border-radius:0.2em 0.2em 0 0;border-radius:0.2em 0.2em 0 0;background-color:#f3f7fd}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a:hover{background-color:#fff}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a.active{background-color:#3875d7;color:#fff}.wrap #loco-poedit .wg-split>div>.has-nav>.wg-body{margin-top:0px}@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:3.4em}.wrap #loco-poedit #po-source>.wg-body>.has-title>.wg-content{clear:none}.wrap #loco-poedit #po-source p.notes{font-style:italic;color:#999;margin:0 0 0.5em 0;font-size:0.85em;line-height:1.2em}.wrap #loco-poedit #po-source>.wg-body>.has-title>h2{min-width:4.5em}.wrap #loco-poedit .is-table .wg-td{font-size:13px}.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-error>*:before,.wrap .loco-warning>*:before{content:"\e62e"}.wrap .loco-edit-pot>*:before{content:"\e61e"}.wrap .loco-clearable>a:before{content:"\e615"}@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-lists>h2:before{display:inline-block;font-family:dashicons;opacity:0.5}.wrap .loco-list{margin:10px 0}.wrap .loco-message p:before,.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-warning>*: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}.error a.dismiss:before,.updated a.dismiss:before{display:none}.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;float:left;clear:none;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 form.loco-right{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;font-size:14px;line-height:normal}.loco-clearable{display:inline-block;vertical-align:middle;position:relative}.loco-clearable a.clear{top:0;right:0;outline:none;padding:1em 0.5em;position:absolute;font-size:1em;line-height:normal;text-decoration:none}.loco-clearable a.clear:before{font-family:loco;vertical-align:middle;padding:0;color:#999}.loco-clearable a.clear:hover:before{color:#333}.loco-clearable a.clear span{display:none}.loco-clearable ::-ms-clear{display:none}.loco-fscheck .loco-list{margin-bottom:20px}
pub/css/loco-legacy.css CHANGED
@@ -11,4 +11,8 @@
11
 
12
  #adminmenu .toplevel_page_loco-translate.wp-has-current-submenu .wp-menu-image {
13
  background-position: 2px -28px;
14
- }
 
 
 
 
11
 
12
  #adminmenu .toplevel_page_loco-translate.wp-has-current-submenu .wp-menu-image {
13
  background-position: 2px -28px;
14
+ }
15
+
16
+ .wrap.loco-lists > h2:before {
17
+ display: none !important;
18
+ }
pub/js/build/admin-poedit.js CHANGED
@@ -1,148 +1,151 @@
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",
77
- "\u018c":"\u018c","\u00e9":"e","\u00e8":"e","\u0115":"e","\u00ea":"e","\u1ebf":"e","\u1ec1":"e","\u1ec5":"e","\u1ec3":"e","\u011b":"e","\u00eb":"e","\u1ebd":"e","\u0117":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u0113":"e","\u1e17":"e","\u1e15":"e","\u1ebb":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u1e19":"e","\u1e1b":"e","\u0247":"\u0247","\u01dd":"\u01dd","\u1e1f":"f","\ua77c":"f","\u0192":"\u0192","\u01f5":"g","\u011f":"g","\u011d":"g","\u01e7":"g","\u0121":"g","\u0123":"g",
78
- "\u1e21":"g","\ua7a1":"g","\u01e5":"\u01e5","\ua77f":"\ua77f","\u01a3":"\u01a3","\u0125":"h","\u021f":"h","\u1e27":"h","\u1e23":"h","\u1e29":"h","\u1e25":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\ua7f8":"h","\u0195":"\u0195","\u2c68":"\u2c68","\u2c76":"\u2c76","\ua727":"\ua727","\u00ed":"i","\u00ec":"i","\u012d":"i","\u00ee":"i","\u01d0":"i","\u00ef":"i","\u1e2f":"i","\u0129":"i","\u012f":"i","\u012b":"i","\u1ec9":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u1e2d":"i","\u0133":"i","\ud835\udea4":"i",
79
- "\u2c7c":"j","\u0135":"j","\u01f0":"j","\u0249":"\u0249","\u1e31":"k","\u01e9":"k","\u0137":"k","\ua7a3":"k","\u1e33":"k","\u1e35":"k","\u0199":"\u0199","\u2c6a":"\u2c6a","\ua741":"\ua741","\ua743":"\ua743","\ua745":"\ua745","\u013a":"l","\u013e":"l","\u013c":"l","\u1e37":"l","\u1e39":"l","\u1e3d":"l","\u1e3b":"l","\u0142":"l","\u0140":"l","\u01c9":"l","\u01c8":"l","\u1efb":"l","\ua747":"\ua747","\ua749":"\ua749","\u019a":"\u019a","\u2c61":"\u2c61","\ua781":"\ua781","\u1e3f":"m","\u1e41":"m","\u1e43":"m",
80
- "\u0144":"n","\u01f9":"n","\u0148":"n","\u00f1":"n","\u1e45":"n","\u0146":"n","\ua7a5":"n","\u1e47":"n","\u1e4b":"n","\u1e49":"n","\u01cc":"n","\u01cb":"n","\u019e":"\u019e","\ua791":"\ua791","\u014b":"\u014b","\u00ba":"o","\u00f3":"o","\u00f2":"o","\u014f":"o","\u00f4":"o","\u1ed1":"o","\u1ed3":"o","\u1ed7":"o","\u1ed5":"o","\u01d2":"o","\u00f6":"o","\u022b":"o","\u0151":"o","\u00f5":"o","\u1e4d":"o","\u1e4f":"o","\u022d":"o","\u022f":"o","\u0231":"o","\u00f8":"o","\u01ff":"o","\u01eb":"o","\u01ed":"o",
81
- "\u014d":"o","\u1e53":"o","\u1e51":"o","\u1ecf":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edb":"o","\u1edd":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u0153":"o","\ua7f9":"o","\ua74f":"o","\ua74d":"\ua74d","\ua74b":"\ua74b","\u0223":"\u0223","\u1e55":"p","\u1e57":"p","\ua751":"\ua751","\u01a5":"\u01a5","\ua753":"\ua753","\ua755":"\ua755","\u0239":"q","\ua757":"\ua757","\ua759":"\ua759","\u024b":"\u024b","\u0155":"r","\u0159":"r","\u1e59":"r","\u0157":"r","\ua7a7":"r",
82
- "\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u1e5f":"r","\ua783":"r","\ua75b":"\ua75b","\u024d":"\u024d","\ua75d":"\ua75d","\u015b":"s","\u1e65":"s","\u015d":"s","\u0161":"s","\u1e67":"s","\u1e61":"s","\u015f":"s","\ua7a9":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u017f":"s","\ua785":"s","\u1e9b":"s","\u00df":"s","\u023f":"\u023f","\u0165":"t","\u1e97":"t","\u1e6b":"t","\u0163":"t","\u1e6d":"t","\u021b":"t","\u1e71":"t","\u1e6f":"t","\ua787":"t","\u01be":"t","\ua729":"t","\u0167":"\u0167",
83
- "\u2c66":"\u2c66","\u01ad":"\u01ad","\u00fa":"u","\u00f9":"u","\u016d":"u","\u00fb":"u","\u01d4":"u","\u016f":"u","\u00fc":"u","\u01d8":"u","\u01dc":"u","\u01da":"u","\u01d6":"u","\u0171":"u","\u0169":"u","\u1e79":"u","\u0173":"u","\u016b":"u","\u1e7b":"u","\u1ee7":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1ee9":"u","\u1eeb":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u1e77":"u","\u1e75":"u","\u2c7d":"v","\u1e7d":"v","\u1e7f":"v","\ua761":"v","\ua75f":"\ua75f","\u1efd":"\u1efd",
84
- "\u1e83":"w","\u1e81":"w","\u0175":"w","\u1e98":"w","\u1e85":"w","\u1e87":"w","\u1e89":"w","\u2c73":"\u2c73","\u1e8d":"x","\u1e8b":"x","\u00fd":"y","\u1ef3":"y","\u0177":"y","\u1e99":"y","\u00ff":"y","\u1ef9":"y","\u1e8f":"y","\u0233":"y","\u1ef7":"y","\u1ef5":"y","\u024f":"\u024f","\u01b4":"\u01b4","\u1eff":"\u1eff","\u021d":"\u021d","\u017a":"z","\u1e91":"z","\u017e":"z","\u017c":"z","\u1e93":"z","\u1e95":"z","\u018d":"z","\u01b6":"\u01b6","\u0225":"\u0225","\u0240":"\u0240","\u2c6c":"\u2c6c","\ua763":"\ua763",
85
- "\u01b9":"\u01b9","\u00fe":"\u00fe","\ua765":"\ua765","\ua767":"\ua767","\u01bf":"\u01bf","\ua769":"\ua769","\ua76b":"\ua76b","\ua76d":"\ua76d","\ua76f":"\ua76f","\ua770":"\ua76f","\ua72b":"\ua72b","\ua72d":"\ua72d","\ua72f":"\ua72f","\u01a8":"\u01a8","\u01bd":"\u01bd","\u0185":"\u0185","\u0242":"\u0242","\ua723":"\ua723","\ua78c":"\ua78c","\ua725":"\ua725","\ud835\udec2":"a","\ud835\udefc":"a","\ud835\udf36":"a","\ud835\udf70":"a","\ud835\udfaa":"a","\ud835\udea8":"a","\ud835\udee2":"a","\ud835\udf1c":"a",
86
- "\ud835\udf56":"a","\ud835\udf90":"a","\u1f00":"a","\u1f04":"a","\u1f84":"a","\u1f8c":"a","\u1f02":"a","\u1f82":"a","\u1f8a":"a","\u1f06":"a","\u1f86":"a","\u1f8e":"a","\u1f80":"a","\u1f88":"a","\u1f01":"a","\u1f05":"a","\u1f85":"a","\u1f8d":"a","\u1f03":"a","\u1f83":"a","\u1f8b":"a","\u1f07":"a","\u1f87":"a","\u1f8f":"a","\u1f81":"a","\u1f89":"a","\u03ac":"a","\u1f71":"a","\u1fb4":"a","\u1f70":"a","\u1fb2":"a","\u1fb0":"a","\u1fb6":"a","\u1fb7":"a","\u1fb1":"a","\u1fb3":"a","\u1fbc":"a","\u03d0":"b",
87
- "\ud835\udec3":"b","\ud835\udefd":"b","\ud835\udf37":"b","\ud835\udf71":"b","\ud835\udfab":"b","\ud835\udea9":"b","\ud835\udee3":"b","\ud835\udf1d":"b","\ud835\udf57":"b","\ud835\udf91":"b","\u1d5d":"b","\u1d66":"b","\u213d":"g","\ud835\udec4":"g","\ud835\udefe":"g","\ud835\udf38":"g","\ud835\udf72":"g","\ud835\udfac":"g","\u213e":"g","\ud835\udeaa":"g","\ud835\udee4":"g","\ud835\udf1e":"g","\ud835\udf58":"g","\ud835\udf92":"g","\u1d5e":"g","\u1d67":"g","\ud835\udec5":"d","\ud835\udeff":"d","\ud835\udf39":"d",
88
- "\ud835\udf73":"d","\ud835\udfad":"d","\ud835\udeab":"d","\ud835\udee5":"d","\ud835\udf1f":"d","\ud835\udf59":"d","\ud835\udf93":"d","\u1d5f":"d","\u03f5":"e","\ud835\udec6":"e","\ud835\udedc":"e","\ud835\udf00":"e","\ud835\udf16":"e","\ud835\udf3a":"e","\ud835\udf50":"e","\ud835\udf74":"e","\ud835\udf8a":"e","\ud835\udfae":"e","\ud835\udfc4":"e","\ud835\udeac":"e","\ud835\udee6":"e","\ud835\udf20":"e","\ud835\udf5a":"e","\ud835\udf94":"e","\u1f10":"e","\u1f14":"e","\u1f12":"e","\u1f11":"e","\u1f15":"e",
89
- "\u1f13":"e","\u03ad":"e","\u1f73":"e","\u1f72":"e","\u03dd":"\u03dd","\u0377":"\u0377","\u03db":"\u03db","\ud835\udec7":"z","\ud835\udf01":"z","\ud835\udf3b":"z","\ud835\udf75":"z","\ud835\udfaf":"z","\ud835\udead":"z","\ud835\udee7":"z","\ud835\udf21":"z","\ud835\udf5b":"z","\ud835\udf95":"z","\u0371":"\u0371","\ud835\udec8":"h","\ud835\udf02":"h","\ud835\udf3c":"h","\ud835\udf76":"h","\ud835\udfb0":"h","\ud835\udeae":"h","\ud835\udee8":"h","\ud835\udf22":"h","\ud835\udf5c":"h","\ud835\udf96":"h",
90
- "\u1f20":"h","\u1f24":"h","\u1f94":"h","\u1f9c":"h","\u1f22":"h","\u1f92":"h","\u1f9a":"h","\u1f26":"h","\u1f96":"h","\u1f9e":"h","\u1f90":"h","\u1f98":"h","\u1f21":"h","\u1f25":"h","\u1f95":"h","\u1f9d":"h","\u1f23":"h","\u1f93":"h","\u1f9b":"h","\u1f27":"h","\u1f97":"h","\u1f9f":"h","\u1f91":"h","\u1f99":"h","\u03ae":"h","\u1f75":"h","\u1fc4":"h","\u1f74":"h","\u1fc2":"h","\u1fc6":"h","\u1fc7":"h","\u1fc3":"h","\u1fcc":"h","\u03d1":"u","\ud835\udec9":"u","\ud835\udedd":"u","\ud835\udf03":"u","\ud835\udf17":"u",
91
- "\ud835\udf3d":"u","\ud835\udf51":"u","\ud835\udf77":"u","\ud835\udf8b":"u","\ud835\udfb1":"u","\ud835\udfc5":"u","\ud835\udeaf":"u","\ud835\udeb9":"u","\ud835\udee9":"u","\ud835\udef3":"u","\ud835\udf23":"u","\ud835\udf2d":"u","\ud835\udf5d":"u","\ud835\udf67":"u","\ud835\udf97":"u","\ud835\udfa1":"u","\u1dbf":"u","\u1fbe":"i","\u037a":"i","\ud835\udeca":"i","\ud835\udf04":"i","\ud835\udf3e":"i","\ud835\udf78":"i","\ud835\udfb2":"i","\ud835\udeb0":"i","\ud835\udeea":"i","\ud835\udf24":"i","\ud835\udf5e":"i",
92
- "\ud835\udf98":"i","\u1f30":"i","\u1f34":"i","\u1f32":"i","\u1f36":"i","\u1f31":"i","\u1f35":"i","\u1f33":"i","\u1f37":"i","\u03af":"i","\u1f77":"i","\u1f76":"i","\u1fd0":"i","\u1fd6":"i","\u03ca":"i","\u0390":"i","\u1fd3":"i","\u1fd2":"i","\u1fd7":"i","\u1fd1":"i","\u03f0":"k","\ud835\udecb":"k","\ud835\udede":"k","\ud835\udf05":"k","\ud835\udf18":"k","\ud835\udf3f":"k","\ud835\udf52":"k","\ud835\udf79":"k","\ud835\udf8c":"k","\ud835\udfb3":"k","\ud835\udfc6":"k","\ud835\udeb1":"k","\ud835\udeeb":"k",
93
- "\ud835\udf25":"k","\ud835\udf5f":"k","\ud835\udf99":"k","\u03d7":"k","\ud835\udecc":"l","\ud835\udf06":"l","\ud835\udf40":"l","\ud835\udf7a":"l","\ud835\udfb4":"l","\ud835\udeb2":"l","\ud835\udeec":"l","\ud835\udf26":"l","\ud835\udf60":"l","\ud835\udf9a":"l","\u00b5":"m","\ud835\udecd":"m","\ud835\udf07":"m","\ud835\udf41":"m","\ud835\udf7b":"m","\ud835\udfb5":"m","\ud835\udeb3":"m","\ud835\udeed":"m","\ud835\udf27":"m","\ud835\udf61":"m","\ud835\udf9b":"m","\u3382":"m","\u338c":"m","\u338d":"m",
94
- "\u3395":"m","\u339b":"m","\u33b2":"m","\u33b6":"m","\u33bc":"m","\ud835\udece":"n","\ud835\udf08":"n","\ud835\udf42":"n","\ud835\udf7c":"n","\ud835\udfb6":"n","\ud835\udeb4":"n","\ud835\udeee":"n","\ud835\udf28":"n","\ud835\udf62":"n","\ud835\udf9c":"n","\ud835\udecf":"j","\ud835\udf09":"j","\ud835\udf43":"j","\ud835\udf7d":"j","\ud835\udfb7":"j","\ud835\udeb5":"j","\ud835\udeef":"j","\ud835\udf29":"j","\ud835\udf63":"j","\ud835\udf9d":"j","\ud835\uded0":"o","\ud835\udf0a":"o","\ud835\udf44":"o",
95
- "\ud835\udf7e":"o","\ud835\udfb8":"o","\ud835\udeb6":"o","\ud835\udef0":"o","\ud835\udf2a":"o","\ud835\udf64":"o","\ud835\udf9e":"o","\u1f40":"o","\u1f44":"o","\u1f42":"o","\u1f41":"o","\u1f45":"o","\u1f43":"o","\u03cc":"o","\u1f79":"o","\u1f78":"o","\u03d6":"p","\u213c":"p","\ud835\uded1":"p","\ud835\udee1":"p","\ud835\udf0b":"p","\ud835\udf1b":"p","\ud835\udf45":"p","\ud835\udf55":"p","\ud835\udf7f":"p","\ud835\udf8f":"p","\ud835\udfb9":"p","\ud835\udfc9":"p","\u213f":"p","\ud835\udeb7":"p","\ud835\udef1":"p",
96
- "\ud835\udf2b":"p","\ud835\udf65":"p","\ud835\udf9f":"p","\u03fb":"\u03fb","\u03df":"\u03df","\u03d9":"\u03d9","\u03f1":"r","\ud835\uded2":"r","\ud835\udee0":"r","\ud835\udf0c":"r","\ud835\udf1a":"r","\ud835\udf46":"r","\ud835\udf54":"r","\ud835\udf80":"r","\ud835\udf8e":"r","\ud835\udfba":"r","\ud835\udfc8":"r","\ud835\udeb8":"r","\ud835\udef2":"r","\ud835\udf2c":"r","\ud835\udf66":"r","\ud835\udfa0":"r","\u1d68":"r","\u1fe4":"r","\u1fe5":"r","\u03f2":"s","\ud835\uded3":"s","\ud835\uded4":"s","\ud835\udf0d":"s",
97
- "\ud835\udf0e":"s","\ud835\udf47":"s","\ud835\udf48":"s","\ud835\udf81":"s","\ud835\udf82":"s","\ud835\udfbb":"s","\ud835\udfbc":"s","\ud835\udeba":"s","\ud835\udef4":"s","\ud835\udf2e":"s","\ud835\udf68":"s","\ud835\udfa2":"s","\u037c":"\u037c","\u037b":"\u037b","\u037d":"\u037d","\ud835\uded5":"t","\ud835\udf0f":"t","\ud835\udf49":"t","\ud835\udf83":"t","\ud835\udfbd":"t","\ud835\udebb":"t","\ud835\udef5":"t","\ud835\udf2f":"t","\ud835\udf69":"t","\ud835\udfa3":"t","\ud835\uded6":"y","\ud835\udf10":"y",
98
- "\ud835\udf4a":"y","\ud835\udf84":"y","\ud835\udfbe":"y","\u03d2":"y","\ud835\udebc":"y","\ud835\udef6":"y","\ud835\udf30":"y","\ud835\udf6a":"y","\ud835\udfa4":"y","\u1f50":"y","\u1f54":"y","\u1f52":"y","\u1f56":"y","\u1f51":"y","\u1f55":"y","\u1f53":"y","\u1f57":"y","\u03cd":"y","\u1f7b":"y","\u03d3":"y","\u1f7a":"y","\u1fe0":"y","\u1fe6":"y","\u03cb":"y","\u03d4":"y","\u03b0":"y","\u1fe3":"y","\u1fe2":"y","\u1fe7":"y","\u1fe1":"y","\u03d5":"f","\ud835\uded7":"f","\ud835\udedf":"f","\ud835\udf11":"f",
99
- "\ud835\udf19":"f","\ud835\udf4b":"f","\ud835\udf53":"f","\ud835\udf85":"f","\ud835\udf8d":"f","\ud835\udfbf":"f","\ud835\udfc7":"f","\ud835\udebd":"f","\ud835\udef7":"f","\ud835\udf31":"f","\ud835\udf6b":"f","\ud835\udfa5":"f","\u1d60":"f","\u1d69":"f","\ud835\uded8":"x","\ud835\udf12":"x","\ud835\udf4c":"x","\ud835\udf86":"x","\ud835\udfc0":"x","\ud835\udebe":"x","\ud835\udef8":"x","\ud835\udf32":"x","\ud835\udf6c":"x","\ud835\udfa6":"x","\u1d61":"x","\u1d6a":"x","\ud835\uded9":"c","\ud835\udf13":"c",
100
- "\ud835\udf4d":"c","\ud835\udf87":"c","\ud835\udfc1":"c","\ud835\udebf":"c","\ud835\udef9":"c","\ud835\udf33":"c","\ud835\udf6d":"c","\ud835\udfa7":"c","\ud835\udeda":"v","\ud835\udf14":"v","\ud835\udf4e":"v","\ud835\udf88":"v","\ud835\udfc2":"v","\ud835\udec0":"v","\ud835\udefa":"v","\ud835\udf34":"v","\ud835\udf6e":"v","\ud835\udfa8":"v","\u1f60":"v","\u1f64":"v","\u1fa4":"v","\u1fac":"v","\u1f62":"v","\u1fa2":"v","\u1faa":"v","\u1f66":"v","\u1fa6":"v","\u1fae":"v","\u1fa0":"v","\u1fa8":"v","\u1f61":"v",
101
- "\u1f65":"v","\u1fa5":"v","\u1fad":"v","\u1f63":"v","\u1fa3":"v","\u1fab":"v","\u1f67":"v","\u1fa7":"v","\u1faf":"v","\u1fa1":"v","\u1fa9":"v","\u03ce":"v","\u1f7d":"v","\u1ff4":"v","\u1f7c":"v","\u1ff2":"v","\u1ff6":"v","\u1ff7":"v","\u1ff3":"v","\u1ffc":"v","\u03e1":"\u03e1","\u0373":"\u0373","\u03f8":"\u03f8","\u2df6":"f","\u04d1":"f","\u04d3":"f","\u04d9":"\u04d9","\u04db":"\u04d9","\u04d5":"\u04d5","\u2de0":"\u0431","\u0431":"\u0431","\u2de1":"d","\u2de2":"u","\u0491":"u","\u0493":"\u0493","\u04fb":"\u04fb",
102
- "\u0495":"\u0495","\u04f7":"\u04f7","\u2de3":"l","\u0501":"\u0501","\ua681":"\ua681","\u0452":"\u0452","\ua663":"\ua663","\u0503":"\u0503","\u0453":"\u0503","\u0499":"\u0499","\u2df7":"t","\u0450":"t","\u0451":"t","\u04d7":"t","\ua674":"\u0454","\u0454":"\u0454","\u2de4":"\u0436","\u0436":"\u0436","\u04c2":"\u0436","\ua685":"\ua685","\u04dd":"\ua685","\u0497":"\u0497","\u2de5":"p","\ua641":"\ua641","\u0505":"\u0505","\u0511":"\u0511","\u04df":"\u0511","\ua643":"\ua643","\u0455":"\u0455","\ua645":"\ua645",
103
- "\u04e1":"\u04e1","\ua689":"\ua689","\u0507":"\u0507","\ua683":"\ua683","\ua675":"b","\u045d":"b","\u04e3":"b","\u048b":"\u048b","\u04e5":"\u048b","\u0456":"\u0456","\ua647":"\ua647","\u0457":"\ua647","\ua676":"\ua647","\u0458":"\u0458","\u2df8":"\ua649","\ua649":"\ua649","\u2de6":"r","\u049b":"\u049b","\u04c4":"\u04c4","\u04a1":"\u04a1","\u049f":"\u049f","\u049d":"\u049d","\u051f":"\u051f","\u051b":"\u051b","\u2de7":"k","\u04c6":"\u04c6","\u0513":"\u0513","\u0521":"\u0521","\u0459":"\u0459","\ua665":"\ua665",
104
- "\u0509":"\u0509","\u0515":"\u0515","\u2de8":"v","\u04ce":"\u04ce","\ua667":"\ua667","\u2de9":"y","\u1d78":"y","\u04ca":"\u04ca","\u04a3":"\u04a3","\u04c8":"\u04c8","\u0523":"\u0523","\u04a5":"\u04a5","\u045a":"\u045a","\u050b":"\u050b","\u2dea":"j","\ua669":"j","\ua66b":"j","\ua66d":"j","\ua66e":"j","\u04e7":"j","\u04e9":"\u04e9","\u04eb":"\u04e9","\u2deb":"g","\u0525":"\u0525","\u04a7":"\u04a7","\u0481":"\u0481","\u2dec":"h","\u048f":"\u048f","\u0517":"\u0517","\u2ded":"c","\u2df5":"c","\u050d":"\u050d",
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&&(r(d),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);
 
 
 
1
+ (function(u,D,d,W){function R(c){var a=0,d,f=[].slice.call(arguments,1);return c.replace(/%(s|u|%)/g,function(e,c){if("%"===c)return"%";d=f[a++];return String(d)||""})}function S(c){c.stopPropagation();c.preventDefault();return!1}function da(c,a){function k(){f();e=setTimeout(function(){d(c).fadeOut(1E3,a)},g)}function f(){e&&clearTimeout(e);e=null}var e,g=5E3;k();d(c).mouseenter(f).mouseleave(k)}function Z(c,a){function k(a){d(c).remove();d(u).triggerHandler("resize");return a&&S(a)}d('<a class="dismiss" href="#">&times;</a>').appendTo(c).click(k);
2
+ a||da(c,k)}function X(c,a,k,f){var e="loco-js-"+k;k=D.getElementById(e)||d('<div id="'+e+'" class="loco-message '+(f||k)+'"></div>').insertBefore(d("#loco-poedit"));c=d(D.createElement("p")).text(c);a=d(D.createElement("strong")).text(a+": ");c.prepend(a).appendTo(d(k).html(""));d(u).triggerHandler("resize");Z(k);d("div.loco-warning").remove()}function $(c){return X(c,F("OK"),"updated loco-success")}function Y(){var c=G.stats(),a=c.t,k=c.f,f=c.u,a=R(F("1 string","%s strings",a),a),e=[];U&&(a=R(F("%s%% translated"),
3
+ c.p.replace("%",""))+", "+a,k&&e.push(R(F("%s fuzzy"),k)),f&&e.push(R(F("%s untranslated"),f)),e.length&&(a+=" ("+e.join(", ")+")"));d("#loco-po-status").text(a)}function aa(c,a,k){function f(e,c,b){b=b||F("Unknown error");X(b,F("Error"),"error");k&&k(e,c,b)}return d.ajax({url:ba,type:c.method,data:d(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 t=function(){var c={};return{register:function(a,d){c[a]=d},require:function(a,
4
+ d){var f=c[a];if(!f)throw Error('CommonJS error: failed to require("'+d+'")');return f}}}();t.register("$1",function(c,a,d){Array.prototype.indexOf||(Array.prototype.indexOf=function(c){if(null==this)throw new TypeError;var a,g=Object(this),b=g.length>>>0;if(0===b)return-1;a=0;1<arguments.length&&(a=Number(arguments[1]),a!=a?a=0:0!=a&&Infinity!=a&&-Infinity!=a&&(a=(0<a||-1)*Math.floor(Math.abs(a))));if(a>=b)return-1;for(a=0<=a?a:Math.max(b-Math.abs(a),0);a<b;a++)if(a in g&&g[a]===c)return a;return-1});
5
+ return c}({},u,D));t.register("$16",function(c,a,d){function f(q){b||a._gat&&(b=_gat._createTracker(e,"loco"));if(b){var p=q.shift();b[p].apply(b,q)}else g&&g.push(q);return c}var e,g,b;c._init=function(b){if(e=b.code){g=a._gaq||(a._gaq=[]);g.push(["_setAccount",e]);g.push(["_trackPageview"]);g.push(["_setDomainName",b.host]);b=d.createElement("script");b.type="text/javascript";b.async=!0;b.src=("https:"==d.location.protocol?"https://ssl":"http://www")+".google-analytics.com/ga.js";var p=d.getElementsByTagName("script")[0];
6
+ p.parentNode.insertBefore(b,p)}return c};c.event=function(b,a,c,e){return f(["_trackEvent",b||"",a||"",c||"",e||0])};c.page=function(b,a){return f(["_trackPageview",{page:b||location.pathname+location.hash,title:a||d.title}])};return c}({},u,D));t.register("$17",function(c,a,d){function f(b,q){if(e)e[b](q);else a.ga&&ga(b,q);return c}var e,g;c._init=function(b){b.code&&(function(b,a,c,e,h,s,n){b.GoogleAnalyticsObject=h;b[h]=b[h]||function(){(b[h].q=b[h].q||[]).push(arguments)};b[h].l=1*new Date;s=
7
+ a.createElement(c);n=a.getElementsByTagName(c)[0];s.async=1;s.src=e;n.parentNode.insertBefore(s,n)}(a,d,"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){e=b}));return c};c.event=function(b,a,c,e){return f("send",{hitType:"event",eventCategory:b||"",eventAction:a||"",eventLabel:c||"",eventValue:Number(e||0)})};c.page=function(b,a){var c={hitType:"pageview",page:b||location.pathname+location.hash,
8
+ title:a||d.title};c.location=location.protocol+"//"+location.hostname+c.page;g&&f("set",{referrer:g});g=c.location;return f("send",c)};c.reset=function(){g=location.href;f("set",{page:location.pathname+location.hash,title:d.title,location:g});return c};return c}({},u,D));t.register("$8",function(c,a,k){function f(b,a){d(b).click(function(b){e&&e.event(a,"click",this.getAttribute("href")||"");return!0});b=null;return c}var e,g=location.hostname;c.init=function(b){!e&&b&&(g=b.host||(b.host=g),e=b.legacy?
9
+ t.require("$16","legacy.js"):t.require("$17","universal.js"),e._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(){e&&e.page.apply(e,arguments);return c};c.event=function(){e&&e.event.apply(e,arguments);return c};c.reset=
10
+ function(){e&&e.reset&&e.reset();return c};return c}({},u,D));t.register("$22",function(c,a,k){function f(b,a,c,e,f){function h(){m&&clearTimeout(m);v&&v.fadeOut(400,function(){d(this).remove();v=null});return!1}function s(){n();-1!==e&&(m=setTimeout(h,e||2E3));v.unbind("mouseleave");v.mouseenter(n)}function n(){m&&clearTimeout(m);m=null;v.unbind("mouseenter");v.mouseleave(s)}var m;g||(g=k.createElement("div"),g.id="growls",k.body.appendChild(g));var v=d('<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>');
11
+ v.find("p").text(b||"Empty message");a?v.find("small").text(a):v.find("small").remove();if(f.length){f.push({label:"Cancel",callback:h,css:"cancel"});var w,I=d('<form action="#" class="dialog"></form>');a=function(b,a){w=d('<input type="button" value="'+a.label+'" class="butt '+(a.css||"")+'" />');w.click(function(b){"function"===typeof a.callback&&a.callback(b,{close:h})});I.append(w);return w};for(b=0;b<f.length;b++)a(b,f[b]);v.append(I)}d(g).prepend(v.hide().fadeIn(400));v.find("a").click(h);s()}
12
+ var e,g;c.init=function(){if(!e)return e=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){e(b);return c};c.alert=function(b,c,g,d,B){try{return f(b,c||"",g||"alert",d||4E3,B||[]),!0}catch(h){return b+="\n\n--\n"+(h.message||h),e.call(a,b),!1}};c.success=function(b,a,e){return c.alert(b,a,"success",e||2E3)};c.dialog=function(b,a,e,g){return c.alert(b,a,g||"alert",-1,e)};c.login=function(b,a,e,g){c.dialog(a||"You're not logged in",
13
+ e||"Please log in to continue",[{label:g||"Log in",callback:function(a,h){location.assign(b||"/session/auth/login?r="+encodeURIComponent(location.href))}}])};return c}({},u,D));t.register("$19",function(c,a,k){function f(b){return 27===b.keyCode&&s&&n?(H(),b.preventDefault(),!1):!0}function e(h){if(s){var c=Math.max(b.height(),q.outerHeight(!0));c&&r.css("height",c+"px");h&&(l=d(a).innerWidth(),z(A))}return!0}function g(b){b?(B.show(),p.addClass("has-title")):(B.hide(),p.removeClass("has-title"))}
14
+ var b,q,p,r,B,h,s=!1,n=!1,m=!1,v,w,I,l,A,y=c.init=function(){if(!b){b=d('<div id="overlay"></div>');q=d('<div class="overlay-frame"></div>');p=d('<div class="overlay-container"></div>');B=d('<div class="overlay-title"><span class="title">Untitled</span></div>');h=d('<a class="overlay-close" href="#"><span>x</span></a>');r=d('<div class="overlay-bg"></div>');b.append(q.append(p)).append(r).prependTo(k.body);d(k).bind("keydown",f);d(a).resize(e);I=p.outerWidth(!0)-p.width()+(q.innerWidth()-q.width());
15
+ p.outerHeight(!0);p.outerHeight(!1);q.innerHeight();q.height();l=d(a).innerWidth();v=parseInt(p.css("width"));if(!v||isNaN(v))v=p.width();w=parseInt(p.css("height"));if(!w||isNaN(w))w=p.height();B.append(h.hide()).hide().prependTo(q);b.hide()}return b},z=c.width=function(h){y();if(null===h)q.css("width",""),p.css("width","");else{h=h||v||640;x=h+I;A=h;var a=l;x>a?(x=a,h=x-I,b.addClass("spill")):b.removeClass("spill");q.css("width",x+"px");p.css("width",h+"px")}return c};c.autoSize=function(){y();
16
+ e();var b=v||0;p.children().each(function(h,a){b=Math.max(b,d(a).outerWidth(!0))});z(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 p.html(b)};c.append=function(b){y();b instanceof jQuery||(b=d(b));p.append(b);return c};var H=c.close=function(h){if(s){var a=function(){y().hide();d(k.body).removeClass("has-overlay");s=!1;p.html("");s=null;b.trigger("overlayClosed",[c])};null==h&&(h=300);h?b.fadeOut(h,a):a()}return c};c.title=
17
+ function(b){y();m=b||"";B.find("span.title").text(m);null!=b?g(!0):n||g(!1);return c};c.enableClose=function(){y();n=!0;h.unbind("click").bind("click",function(b){H();return!1});g(!0);h.show();return c};c.disableClose=function(){y();n=!1;h.hide();s&&m||g(!1);return c};c.open=function(){y();p.html("");z(v);b.attr("class","");d(k.body).addClass("has-overlay");y().show();s=!0;e();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,D));t.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(a){if(!a)return"";a=a.split("?");a[0]=a[0].replace(/(\.[a-z0-9]{1,4})?$/i,".json");return a.join("?")};c.errorData=function(a,c,b){var q,p;b=a.responseText;c=a.status;if(!b&&0===c)return null;try{q=
19
+ d.parseJSON(b)||{}}catch(r){q={},p=f[a.status]||r.message||r}p||(p=q.statusText||a.statusText||f[c]||"Unknown Error");q.error=p;return q};c.ajax=function(e,g,b,q){function p(){b&&b()}function f(b){b.alert&&alert(b.alert);var c=b.success;c&&t.require("$22","growl.js").success.apply(this,c.push?c:[c]);c=q||d(k.body);c.trigger("locoAjaxSuccess",[b]);var e=b.events;if(e&&e.length)for(var m,g=t.require("$8","ga.js");m=e.shift();)c.trigger(m,[b]),g.event("ajax",m);b.modal&&t.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;p();return!0}function B(b,a,e){401===b.status?(t.require("$22","growl.js").login(),p()):(a=c.errorData(b,a,e),null!=a&&(e=a.error,"function"===typeof g&&!1===g(null,e,b.status)?p():a&&a.data&&!f(a.data)||(alert(e||"Unknown error"),p())))}e.error=B;e.success=function(b,a,c){if(!b||"object"!==typeof b)return B(c,"unknown");b.status&&alert(b.statusText||"Unknown error");"function"===typeof g&&!1===
21
+ g(b&&b.data?b.data:b)?p():b&&b.data?f(b.data):p()};-1!==e.url.indexOf(".json")&&(e.dataType="json");d.ajax(e)};return c}({},u,D));t.register("$10",function(c,a,k){function f(b,a){g.autoSize();var c=g.init();t.require("$2","html.js").init(c);c.find("[data-script]").each(function(b,c){c=d(c);for(var e=-1,l,s=c.attr("data-script").split(" ");++e<s.length;)l=s[e],q[l]?q[l](c,a||{}):alert("Unknown script "+l)});c.trigger("locoModalLoaded",[g,b||"",a||{}]);var e,m=c.find("form")[0];if(m)a:for(c=0;c<m.elements.length;c++)switch(e=
22
+ m.elements[c],e.type){case "text":case "email":case "textarea":d(e).focus();break a}}function e(b){var a=d(b.currentTarget),c=a.attr("data-modal");if("close"===c){r();var e=a.attr("href");if(e&&-1!==e.indexOf("#!"))return!0}else{var q="submit"===b.type,f=a.attr("title")||a.attr("data-title"),e=a.attr("href")||a.attr("action"),w=q?a.serialize():"",a=q?a.attr("method"):"get";p(e,f,a,w);c||(c=e.split("/").slice(1,4).join("-"));c="modal "+c;g.width(null).css(c).autoSize()}b.stopPropagation();b.preventDefault();
23
+ return!1}var g=t.require("$19","overlay.js"),b=t.require("$8","ga.js"),q={},p=c.load=function(a,h,e,q){g.open().title("Loading ..").disableClose().css("modal").html('<div class="overlay-placeholder"></div>');var m=t.require("$18","http.js");e={type:e||"get",data:q||"",url:m.jsonLink(a)};m.ajax(e,function(c,e,q){var l=c&&c.html;if(!l)return c=d('<h3 class="error"></h3>').text(e||"Unknown error"),g.enableClose().title("Error "+q||"?").html("").append(c),!1;h=c.title||h||"Untitled";g.enableClose().title(h).html(l);
24
+ f(a,c.js);b.page(a,h);g.init().one("overlayClosed",function(){b.reset()});return!0});return c},r=c.close=function(){g.close();return c};c.initLink=function(b){b.click(e)};c.initForm=function(b){d(b).submit(e)};c.replace=function(b){var a=b&&b.html,c=b&&b.url,e=b&&b.title;c?(p(c,e),b=b&&b.css||c.split("/").slice(1,4).join("-"),g.width(null).css(" modal "+b).autoSize()):a&&(g.open().html(a),e&&g.enableClose().title(e),f("",b&&b.js))};c.find=function(b){return g.init().find(b)};c.script=function(b,a){if(a){if("function"!==
25
+ typeof a.run)throw Error(b+" macro has no run function");q[b]=a.run;return c}return q[b]};return c}({},u,D));t.register("$12",function(c,a,k){function f(b){b.stopPropagation();b.preventDefault();return!1}function e(b,a,c){if(c=c||b.getElement(a))c.unbind().mouseup(function(c){c.stopPropagation();b.selectIndex(a,!0);return!1}).mouseover(function(){d(this).addClass("over");b.hover=a;return!0}).mouseout(function(){d(this).removeClass("over");b.hover=-1;return!0}),c=null;return b}function g(b){if(b){var a=
26
+ this,c=b[0];a.id=c.id||"";a.name=c.name||"";a.prefix=c.getAttribute("data-prefix");a.defaultIcon=c.getAttribute("data-icon")||"jshide";var e=c.selectedIndex,g=[],h,s,n;for(s=0;s<c.options.length;s++)h=c.options[s],n=h.disabled,h=d(h),g.push([h.val(),h.text(),h.attr("data-icon")||"",n]);a.hidden=d('<input type="hidden" name="'+a.name+'" value="" />').appendTo(c.form);a.list=d('<ul class="clearfix"></ul>');a.icon=d('<span class="icon"> </span>');a.selection=d('<span class="label"></span>');a.handle=
27
+ d('<a class="handle" href="#"></a>').attr("tabindex",b.attr("tabindex")||"").append(a.icon).append(a.selection);a.wrapper=d("<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();h=g.shift();)a.addOption.apply(a,h);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
+ d(k.body).mouseup(function(b){return a.onRelease(b)}).keydown(function(b){return a.onGlobalKeydown(b)});a.close();a.selectIndex(e)}}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 f=this.options.length,h=d("<span></span>").addClass(c||
32
+ "jshide"),s=d('<span class="label"></span>').text(a||b),h=d("<li></li>").append(h).append(s).appendTo(this.list);h.attr("data-option",f);this.options[f]={value:b,text:a,icon:c};this.index[b]=f;this.length=f+1;g?this.disableIndex(f):e(this,f,h);return f};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 e(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(d('<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],e=this.options[c];e&&(e.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,D));t.register("$20",function(c,a,d){function f(b){e&&(b=g[b]||b);return b}var e=navigator.msPointerEnabled,g={touchstart:"MSPointerDown",touchmove:"MSPointerMove",touchend:"MSPointerUp"};c.bind=function(b,a,e){b=f(b);a.addEventListener&&a.addEventListener(b,
36
+ e,!1);return c};c.unbind=function(b,a,e){b=f(b);a.removeEventListener&&a.removeEventListener(b,e,!1);return c};return c}({},u,D));t.register("$13",function(c,a,k){function f(){q&&clearTimeout(q);q=null}function e(b){b.preventDefault();b.stopPropagation();return!1}var g,b,q,p=100,r=100,B=!1,h=!1,s;c.delays=function(b,a){p=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 m(){g||(g=d('<div id="tipholder"></div>').appendTo(k.body));
37
+ return g}function v(){f();y?q=setTimeout(w,y):w()}function w(){f();B||h||l()}function I(){f();b&&(b.stop(),b.remove());var a=n.offset();b=H.clone();m().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();m().css("left",c+"px").css("top",a+"px");b.mouseenter(function(){B=!0;return!1}).mouseleave(function(){B=!1;v();return!0});Boolean(b.find("form").length|
38
+ b.find("a").length)||b.click(A);n.trigger("tooltipOpen",[b])}function l(){function a(){c.kill()}b?b.fadeOut(500,a):a();n.trigger("tooltipClose",[b])}function A(){!1!==n.triggerHandler("click")&&C&&(location.href=C);return!1}var y=Number(n.attr("data-hide-delay")||r),z=Number(n.attr("data-show-delay")||p),H=n.find("div.tooltip"),E=n.attr("title");if(!H.length){if(!E)return;H=d('<div class="tooltip"></div>').append(d('<label class="tip"></label>').text(E));n.hasClass("hastip-top")&&H.addClass("tooltip-top");
39
+ n.hasClass("hastip-right")&&H.addClass("tooltip-right");n.prepend(H)}E&&(n.attr("data-title")&&H.children("label.tip").text(E),n.attr("data-title",E),n.attr("title",""));var C=n.attr("href");"#"===C&&(C="");E=t.require("$20","touch.js").bind("touchstart",n[0],e).bind("touchmove",n[0],e).bind("touchend",n[0],function(b){setTimeout(A,300);return e(b)});null==s&&(s=!1,E.bind("touchstart",a,function(){return s=!0}).bind("touchend",a,function(){setTimeout(function(){s=!1},300);return!0}));n.mouseover(function(){s||
40
+ (h=!0,f(),b?I():z?q=setTimeout(I,z):I());return!0}).mouseout(function(){s||(h=!1,v());return!0});C&&n.click(function(){h=!1;l();return!0})};return c}({},u,D));t.register("$2",function(c,a,k){var f=a.ieVersion;c.ie=function(b){return b?f<=b:f};var e=c.init=function(b){b?b instanceof jQuery||(b=d(b)):b=d(k.body);var a=t.require("$8","ga.js"),g=t.require("$9","forms.js"),r=t.require("$10","LocoModal.js"),B=t.require("$11","LocoAutoComplete.js"),h=t.require("$12","LocoSelector.js"),s=t.require("$13",
41
+ "tooltip.js");b.find("form").each(function(b,a){var c=d(a);f&&10>f&&g.placeholders(c);a.getAttribute("data-modal")?r.initForm(a):a.action&&0!==a.action.indexOf("#")&&!a.target&&g.jsonify(a);c.hasClass("hasreveal")&&g.revealify(c);c.find("input.button").each(function(b,a){g.linkify(a)});c.find("input.auto-comp").each(function(b,a){B.init(a)});c.find("select.selector").each(function(b,a){h.create(d(a))})});b.find("a").each(function(b,h){-1!==h.className.indexOf("hastip")&&s.init(d(h));if(-1!==h.href.indexOf("/modal/")||
42
+ h.getAttribute("data-modal"))r.initLink(d(h));else{a.link(h);var g=h.getAttribute("data-ajax-target");g&&(g=d("#"+g),d(h).click(function(b){b.preventDefault();g.addClass("loading");d.get(h.href,function(b){b=c.$(b).replaceAll(g);e(b);b.trigger("locoAhah")});return!1}))}});g=r=B=b=null;return c};c.$=function(b){return d(a.innerShiv?innerShiv(b,!1):b)};d.fn._html=function(b){return null!=b?(b=this.html(a.innerShiv?innerShiv(b,!1):b),e(this),b):j.html()};d.fn.macro=function(b,a){if("function"!==typeof b.run)throw Error("macro has no run function");
43
+ b.run(this,a||{});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||"")};var g=c.plain=function(b,a){if("BR"===b.tagName)a.push("");else for(var c=-1,e=b.childNodes.length,d;++c<e;)d=b.childNodes[c],3===d.nodeType?a.push(d.nodeValue):1===d.nodeType?g(d,a):a.push("??")};return c}({},u,D));t.register("$6",function(c,a,k){var f=t.require("$2","html.js").ie()?["keyup","paste"]:["input"];c.listen=function(a,c){function b(){n[h?
44
+ "show":"hide"]()}function q(){a.value!==h&&(r&&clearTimeout(r),h=a.value,s&&a.setAttribute("size",h.length||1),b(),r=setTimeout(function(){c(h)},k))}function p(){q();return!0}a=a instanceof jQuery?a[0]:a;for(var r,k=150,h=a.value,s=1===Number(a.size),n=d('<a href="#clear" tabindex="-1" class="icon clear"><span>clear</span></a>').click(function(b){a.value="";q();return!1}),m=-1,v=d(a);++m<f.length;)v.bind(f[m],p);v.after(n);b();m=v=null;return{delay:function(b){k=b},ping:q,val:function(c){if(null==
45
+ c)return h;r&&clearTimeout(r);a.value=h=c;b()}}};return c}({},u,D));t.register("$4",function(c,a,d){function f(){var a,c;this.clear=function(){this.length=0;a={};c=[]};this.getTree=function(){return a};this.getData=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;
46
+ 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,d,f,r,k,h,s=this.normalize(c);d=this.getData();var n=d.length;d.push(a);for(this.length++;++b<s.length;)if(d=s[b],!this.stopped(d)){f=this.getTree();r=Math.min(d.length,this.depth)||d.length;for(k=0;k<r;k++)h=d.charAt(k),f=f[h]||(f[h]={});d=f[" "]||(f[" "]=[]);d.push(n)}return this};a.find=function(a,c){function b(a,c){var h,e,d;
47
+ for(s in a)if(d=a[s]," "===s)for(h in d)n=d[h],e=m[n]||(m[n]={length:0,words:{}}),e.length+=e.words[c]?0:1,e.words[c]=1+(e.words[c]||0);else b(d,c)}var d=-1,f,r,k,h,s,n,m={},v=[],w=this.normalize(a),I=this.getData();a:for(;++d<w.length;){f=w[d];r=this.getTree();k=Math.min(f.length,this.depth)||f.length;for(h=0;h<k;h++){s=f.charAt(h);if(!r[s])continue a;r=r[s]}b(r,f)}for(n in m)this.matchall&&m[n].length<w.length||v.push(I[n]);c&&(c.query=a,c.words=w);return v};a.normalize=function(a){for(var c=-1,
48
+ b={},d=[],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]||(d.push(a),b[a]=!0);return d};a.stopped=function(a){return 1===a.length};a.split=function(a){return a.split(/\s+/)};a.strip=function(a){return a.replace(this.nonword,"")};a=null;return c}({},u,D));t.register("$11",function(c,a,k){function f(a){this.url="/auto/"+a+".json?q=";this.dead={}}function e(){this.dict=t.require("$4","dict.js").create()}c.init=function(a){function b(){if("hint"!==
49
+ E){var b=z.val()&&!(N&&N.val())&&null==A&&!w;ca[b?"addClass":"removeClass"]("error")}}function c(){L.show();var b=z.outerWidth(!1),a=z.outerHeight(!1),h=z.css("margin-top");h&&(h=parseInt(h),isNaN(h)||(a+=h));b-=2;L.css("top",a+"px").css("width",b+"px");w=!0}function p(){L.hide();w=!1}function r(){L.html("");p();v=0;y=A=null}function k(a){r();var l;for(l=0;l<a.length;l++){var e=l,n=a[l],y=d('<span class="label"></span>').text(n.label),g=d('<div class="auto-comp-result"></div>'),f=void 0;for(f in n)g.attr("data-"+
50
+ f,n[f]);n.icon&&g.append(d("<span></span>").attr("class",n.icon));g.append(y);h(e,g)}(v=a.length)?(I&&c(),s(0)):(s(null),b())}function h(b,a){L.append(a);a.click(function(c){c.stopPropagation();s(b,a);m();return!1});return a}function s(b,a){y&&(y.removeClass("selected"),y=null);A=null;null==b?N&&N.val(""):(a||(a=L.find("div.auto-comp-result").eq(b)),a.length&&(a.addClass("selected"),A=b,y=a))}function n(b){if(v){var a=v-1;null==A?b=0<b?0:a:(b=A+b,0>b?b=a:b>a&&(b=0));return s(b)}}function m(){if(null==
51
+ A)u.val(""),N&&N.val("");else{var a=L.find("div.auto-comp-result").eq(A),c=a.attr("data-value"),l=a.attr("data-label");N&&N.val(c);u.val(l);p();a=a.clone();r();h(0,a);v=1;s(0,a);b();a.trigger("locoAutocomp",[c,l,a])}}var v=0,w=!1,I=!1,l=a.form,A=null,y=null,z=d(a),H=z.attr("name"),E=z.attr("data-mode"),C=z.attr("data-provider"),N="hint"!==E&&d('<input type="hidden" value="" name="'+H+'" />').appendTo(l),ca=d('<div class="auto-comp-wrap"></div>').replaceAll(z),L=d('<div class="auto-comp-drop"></div>');
52
+ C&&(C=new f(C));N&&z.attr("name","_"+H);z.attr("autocomplete","off");ca.append(z).append(L);p();z.focus(function(b){I=!0;1<v&&c()}).blur(function(a){I=!1;b()}).keydown(function(b){function a(){b.preventDefault();b.stopPropagation();return!1}switch(b.keyCode){case 27:w&&(b.stopPropagation(),p(),z.blur());break;case 40:v&&(w?n(1):c());break;case 38:w&&n(-1);break;case 13:if(w)return m(),a();if(!A&&"hint"!==E)return a()}return!0});var u=t.require("$6","LocoTextListener.js").listen(z,function(b){C&&C.fetch(b,
53
+ k)});(l=z.attr("data-pre"))&&(l=d.parseJSON(l))&&l.value&&l.label?(k([l]),m()):!a.value||N&&N.val()||!C||C.fetch(a.value,function(b){k(b);m()});return{$:z,clear:r,reset:function(){r();z.val("");N&&N.val("");u.ping()},preload:function(b){v&&r();C=new e;var a,c;for(a in b)c=b[a],C.add(c)},mode:function(b){E=b}}};f.prototype.fetch=function(a,b){if(!a)return b&&b([]),this;var c,e=this.dead;for(c in e)if(0===a.indexOf(c))return b&&b([]),this;c={dataType:"json",url:this.url+encodeURIComponent(a)};t.require("$18",
54
+ "http.js").ajax(c,function(c){var d=c&&c.results;d&&(b&&c.query&&c.query===a&&b(c.results),d.length||(e[a]=0));return!0});return this};e.prototype.add=function(a){var b=a.fulltext||a.label||a.value;b&&this.dict.add(a,b)};e.prototype.fetch=function(a,b){if(!a)return b&&b([]),this;var c=this.dict.find(a);b(c)};return c}({},u,D));t.register("$9",function(c,a,k){function f(b){function a(){b.value===f&&(b.value="",e.removeClass("placeheld"));return!0}function c(){""===b.value&&(b.value=f,e.addClass("placeheld"));
55
+ return!0}var e=d(b);if(!e.hasClass("auto-comp")){var f=e.attr("placeholder");if(f)return e.focus(a).blur(c),c(),{kill:function(){a();e.unbind("focus",a).unbind("blur",c)}}}}var e=c.enable=function(b){function e(b,a){a.getAttribute("data-was-disabled")||(a.disabled=!1)}b.find(".button").removeClass("loading");b.find("input").each(e);b.find("select").each(e);b.find("textarea").each(e);a.attachEvent&&b.hasClass("has-placeholders")&&c.placeholders(b)},g=c.disable=function(b){function a(b,c){c.disabled?
56
+ c.setAttribute("data-was-disabled","true"):c.disabled=!0}b.find(".button").addClass("loading");b.find("input").each(a);b.find("select").each(a);b.find("textarea").each(a)};c.jsonify=function(b,c,f){b instanceof jQuery||(b=d(b));b.disable||(d.fn.disable=function(){g(this);return this},d.fn.enable=function(){e(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));
57
+ return!0});b.submit(function(h){if(h&&h.isDefaultPrevented&&h.isDefaultPrevented()||f&&!1===f(h))return!1;var e=a.tinyMCE;e&&b.find("textarea.editor").each(function(a,b){var c=e.get(b.id);c&&c.save()});var d=b.serialize();k&&(d&&(d+="&"),d+=k,k="");b.disable();var g=t.require("$18","http.js"),d={url:g.jsonLink(b.attr("action")),type:b.attr("method"),data:d};g.ajax(d,c,function(){b.enable()},b);h.preventDefault();h.stopPropagation();return!1});if(b.hasClass("autopost")){var B,h=Number(b.attr("data-autopost-delay")||
58
+ 500);b.find('input[type="checkbox"]').change(function(){B&&clearTimeout(B);B=setTimeout(function(){b.submit()},h);return!0})}};c.revealify=function(a){a.find("div[data-reveal-if]").each(function(c,e){function f(a){var b;w=w||a.target;if("."===m)b=Boolean(w&&w[k]);else if("="===m){var c,h;b=d(w.form).serializeArray();for(h in b)b[h].name===n&&(c=b[h].value);b=k===c}if(b!==s)if(s=b,a)g[s?"slideDown":"slideUp"](200);else g[s?"show":"hide"]();return!0}var g=d(e),h=/^([_\w\-\[\]]+)(\.|=)(.+)$/.exec(g.attr("data-reveal-if"));
59
+ if(h){var s,n=h[1],m=h[2],k=h[3],h=a[0][n];h.length||(h=[h]);var w;for(c=0;c<h.length;c++)w=h[c],f(),d(w).change(f).removeClass("jshide");h=h=w=null}});a=null};c.linkify=function(a){var c=a.getAttribute("data-icon");if(c){var e=d(a),f=d("<a> </a>");f.attr("href",a.form.action);f.attr("class",e.attr("class"));f.attr("tabindex",e.attr("tabindex"));e.attr("tabindex","-1");f.text(e.val());c&&d("<span></span>").prependTo(f).addClass(c);e.hide().after(f);f.click(function(a){e.click();return!1})}};c.placeholders=
60
+ function(a){var c,e=[];a.find("input[placeholder]").each(function(a,b){"password"!==b.type&&(c=f(b))&&e.push(c)});e.length&&(a.submit(function(){for(var a in e)e[a].kill()}),a.addClass("has-placeholders"),c=i=null)};return c}({},u,D));t.register("$14",function(c,a,d){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,
61
+ c){if(null==c)return this.keys[a];var b=this.keys[a],d=this.ords[c];if(c!==b){if(null!=d)throw Error("Clash with item at ["+d+"]");this.keys[a]=c;delete this.ords[b];this.ords[c]=a}return a};a.indexOf=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);
62
+ 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,D));t.register("$3",function(c,a,d){function f(a){return{"Project-Id-Version":"PACKAGE VERSION","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"}}
63
+ function e(a,b){var c=a||"";b&&(c+="\x00"+b);return c}function g(){return t.require("$14","collection.js").init()}function b(a){return a.replace(/(["\\])/g,"\\$1").replace(/\n/g,"\\n")}function q(a){this.head={};this.headers(f(this.now()));this.locale(a);this.length=0;this.rows=g()}function p(a,b){this._id="";this.src=[a||""];this.msg=[b||""];this.xcmt=this.cmt=this.ref="";this.status=0}c.create=function(a){return new q(a)};var r=c.quote=function(a){if(!a)return'""';for(var c=a.split(/(?:\r\n|\n|\r)/g),
64
+ e=c.length-1,d=[],f=-1,g;++f<c.length;){a=c[f];for(e&&e!==f&&(a+="\n");a&&a.charAt(77);){for(g=77;--g;)if(-1!==" \n\r.?!,;:-".indexOf(a.charAt(g))){g++;break}g||(g=77);d.push(b(a.substr(0,g)));a=a.substr(g)}a&&d.push(b(a))}d[1]&&d.unshift("");return'"'+d.join('"\n"')+'"'},B=c.wrap=function(a,b,c){if(0!==c){null==c&&(c=79);for(var d=c+1,e=a.split(/(?:\r\n|\n|\r)/g),f=[],g=-1,l;++g<e.length;){for(a=e[g];a&&a.charAt(d);){for(l=c;--l;)if(-1!==" \n\r.?!,;:-".indexOf(a.charAt(l))){l++;break}l||(l=d);f.push(a.substr(0,
65
+ l));a=a.substr(l)}a&&f.push(a)}a=f}else a=a.split(/(?:\r\n|\n|\r)/g);return b+a.join("\n"+b)};a=q.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")+
66
+ "; plural="+(c.pluraleq||"n!=1"),a["X-Loco-Target-Locale"]=(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",plurals:["one","other"],pluraleg:[1,0],nplurals:2,pluraleq:"n == 1 ? 0 : 1",
67
+ label:"English"};this.loc.toString=function(){return this.lang+"_"+this.region};return this};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=e(a,b);return this.rows.get(c)};a.indexOf=function(a){null==
68
+ a.idx&&(a.idx=this.rows.indexOf(a.hash()));return a.idx};a.del=function(a){a=this.indexOf(a);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 p||(a=new p(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=
69
+ function(a){for(var b=-1,c,d,e,f,g=[],l=[],A=[],y=[];++b<a.length;)if(c=a[b],null==c.parent){if(d=c.source||c.id,e=c.context,d||e)f=new p(d,c.target||""),f._id=c._id,e&&f.context(e),c.flag&&f.flag(c.flag,!0),c.comment&&f.comment(c.comment),c.notes&&f.notes(c.notes),c.refs&&f.refs(c.refs),null!==c.format&&f.format(c.format),c.message=f,f.translation()?f.fuzzy()?A.push(f):l.push(f):y.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 "+
70
+ d);1===c.plural&&f.plural(d);f.translate(c.target||"",c.plural)}catch(z){}d=[y,A,l];for(b=0;3>b;b++)for(c=d[b],a=-1;++a<c.length;)try{this.add(c[a])}catch(k){}return this};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,f){try{(b=c.get(a))?(b.ref=f.ref,b.fmt=f.fmt):(b=f,e.add.push(b)),b.idx=d.add(a,b)}catch(l){}});this.rows=d;this.length=d.length;return e};a.row=function(a){return this.rows[a]};a.toString=
71
+ function(){var a,b=[],c=[],d=this.headers(),e=!this.loc;for(a in d)c.push(a+": "+d[a]);c=new p("",c.join("\n"));e&&(c.comment("Loco Gettext template"),c.fuzzy(!0));b.push(c.toString());b.push("");this.rows.each(function(a,c){a&&(b.push(c.toString(e)),b.push(""))});return b.join("\n")};a=p.prototype;a.hash=function(){return e(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,
72
+ 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};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.notes=function(a){if(null==a)return this.xcmt;
73
+ this.xcmt=a||"";return this};a.refs=function(a){if(null==a)return this.ref;this.ref=a||"";return this};a.format=function(a){if(null==a)return this.fmt;this.fmt=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 b,c=[];this.cmt&&c.push(B(this.cmt,"# ",0));this.xcmt&&c.push(B(this.xcmt,"#. ",0));b=this.ref;this._id&&(b+=(b?" ":"")+"loco:"+this._id);b&&/\S/.test(b)&&c.push(B(b,"#: ",79));!a&&this.fuzzy()&&c.push("#, fuzzy");
74
+ this.fmt?c.push("#, "+this.fmt+"-format"):null!=this.fmt&&c.push("#, no-c-format");this.src[2]&&c.push("msgctxt "+r(this.src[2]));c.push("msgid "+r(this.src[0]));if(null==this.src[1])c.push("msgstr "+r(a?"":this.msg[0]));else for(b=-1,c.push("msgid_plural "+r(this.src[1]));++b<this.msg.length;)c.push("msgstr["+b+"] "+r(a?"":this.msg[b]));return c.join("\n")};a.toText=function(){return this.src.join(" ")+" "+this.msg.join(" ")};a.weight=function(){var a=0;this.translation()||(a+=2);this.fuzzy()&&(a+=
75
+ 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,D));t.register("$5",{"\u0131":"i","\u03b1":"a","\u03b2":"b","\u03c8":"c","\u03b4":"d","\u03b5":"e","\u03c6":"f","\u03b3":"g","\u03b7":"h","\u03b9":"i","\u03be":"j","\u03ba":"k","\u03bb":"l",
76
+ "\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","\u043c":"v","\u0446":"w","\u0447":"x","\u043d":"y","\u044f":"z",
77
+ "\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","\ua735":"a","\ua737":"a","\ua739":"a","\ua73b":"a","\ua73d":"a",
78
+ "\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","\u018c":"\u018c","\u00e9":"e","\u00e8":"e","\u0115":"e","\u00ea":"e",
79
+ "\u1ebf":"e","\u1ec1":"e","\u1ec5":"e","\u1ec3":"e","\u011b":"e","\u00eb":"e","\u1ebd":"e","\u0117":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u0113":"e","\u1e17":"e","\u1e15":"e","\u1ebb":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u1e19":"e","\u1e1b":"e","\u0247":"\u0247","\u01dd":"\u01dd","\u1e1f":"f","\ua77c":"f","\u0192":"\u0192","\u01f5":"g","\u011f":"g","\u011d":"g","\u01e7":"g","\u0121":"g","\u0123":"g","\u1e21":"g","\ua7a1":"g","\u01e5":"\u01e5","\ua77f":"\ua77f","\u01a3":"\u01a3",
80
+ "\u0125":"h","\u021f":"h","\u1e27":"h","\u1e23":"h","\u1e29":"h","\u1e25":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\ua7f8":"h","\u0195":"\u0195","\u2c68":"\u2c68","\u2c76":"\u2c76","\ua727":"\ua727","\u00ed":"i","\u00ec":"i","\u012d":"i","\u00ee":"i","\u01d0":"i","\u00ef":"i","\u1e2f":"i","\u0129":"i","\u012f":"i","\u012b":"i","\u1ec9":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u1e2d":"i","\u0133":"i","\ud835\udea4":"i","\u2c7c":"j","\u0135":"j","\u01f0":"j","\u0249":"\u0249","\u1e31":"k","\u01e9":"k",
81
+ "\u0137":"k","\ua7a3":"k","\u1e33":"k","\u1e35":"k","\u0199":"\u0199","\u2c6a":"\u2c6a","\ua741":"\ua741","\ua743":"\ua743","\ua745":"\ua745","\u013a":"l","\u013e":"l","\u013c":"l","\u1e37":"l","\u1e39":"l","\u1e3d":"l","\u1e3b":"l","\u0142":"l","\u0140":"l","\u01c9":"l","\u01c8":"l","\u1efb":"l","\ua747":"\ua747","\ua749":"\ua749","\u019a":"\u019a","\u2c61":"\u2c61","\ua781":"\ua781","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0144":"n","\u01f9":"n","\u0148":"n","\u00f1":"n","\u1e45":"n","\u0146":"n",
82
+ "\ua7a5":"n","\u1e47":"n","\u1e4b":"n","\u1e49":"n","\u01cc":"n","\u01cb":"n","\u019e":"\u019e","\ua791":"\ua791","\u014b":"\u014b","\u00ba":"o","\u00f3":"o","\u00f2":"o","\u014f":"o","\u00f4":"o","\u1ed1":"o","\u1ed3":"o","\u1ed7":"o","\u1ed5":"o","\u01d2":"o","\u00f6":"o","\u022b":"o","\u0151":"o","\u00f5":"o","\u1e4d":"o","\u1e4f":"o","\u022d":"o","\u022f":"o","\u0231":"o","\u00f8":"o","\u01ff":"o","\u01eb":"o","\u01ed":"o","\u014d":"o","\u1e53":"o","\u1e51":"o","\u1ecf":"o","\u020d":"o","\u020f":"o",
83
+ "\u01a1":"o","\u1edb":"o","\u1edd":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u0153":"o","\ua7f9":"o","\ua74f":"o","\ua74d":"\ua74d","\ua74b":"\ua74b","\u0223":"\u0223","\u1e55":"p","\u1e57":"p","\ua751":"\ua751","\u01a5":"\u01a5","\ua753":"\ua753","\ua755":"\ua755","\u0239":"q","\ua757":"\ua757","\ua759":"\ua759","\u024b":"\u024b","\u0155":"r","\u0159":"r","\u1e59":"r","\u0157":"r","\ua7a7":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u1e5f":"r","\ua783":"r",
84
+ "\ua75b":"\ua75b","\u024d":"\u024d","\ua75d":"\ua75d","\u015b":"s","\u1e65":"s","\u015d":"s","\u0161":"s","\u1e67":"s","\u1e61":"s","\u015f":"s","\ua7a9":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u017f":"s","\ua785":"s","\u1e9b":"s","\u00df":"s","\u023f":"\u023f","\u0165":"t","\u1e97":"t","\u1e6b":"t","\u0163":"t","\u1e6d":"t","\u021b":"t","\u1e71":"t","\u1e6f":"t","\ua787":"t","\u01be":"t","\ua729":"t","\u0167":"\u0167","\u2c66":"\u2c66","\u01ad":"\u01ad","\u00fa":"u","\u00f9":"u","\u016d":"u",
85
+ "\u00fb":"u","\u01d4":"u","\u016f":"u","\u00fc":"u","\u01d8":"u","\u01dc":"u","\u01da":"u","\u01d6":"u","\u0171":"u","\u0169":"u","\u1e79":"u","\u0173":"u","\u016b":"u","\u1e7b":"u","\u1ee7":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1ee9":"u","\u1eeb":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u1e77":"u","\u1e75":"u","\u2c7d":"v","\u1e7d":"v","\u1e7f":"v","\ua761":"v","\ua75f":"\ua75f","\u1efd":"\u1efd","\u1e83":"w","\u1e81":"w","\u0175":"w","\u1e98":"w","\u1e85":"w",
86
+ "\u1e87":"w","\u1e89":"w","\u2c73":"\u2c73","\u1e8d":"x","\u1e8b":"x","\u00fd":"y","\u1ef3":"y","\u0177":"y","\u1e99":"y","\u00ff":"y","\u1ef9":"y","\u1e8f":"y","\u0233":"y","\u1ef7":"y","\u1ef5":"y","\u024f":"\u024f","\u01b4":"\u01b4","\u1eff":"\u1eff","\u021d":"\u021d","\u017a":"z","\u1e91":"z","\u017e":"z","\u017c":"z","\u1e93":"z","\u1e95":"z","\u018d":"z","\u01b6":"\u01b6","\u0225":"\u0225","\u0240":"\u0240","\u2c6c":"\u2c6c","\ua763":"\ua763","\u01b9":"\u01b9","\u00fe":"\u00fe","\ua765":"\ua765",
87
+ "\ua767":"\ua767","\u01bf":"\u01bf","\ua769":"\ua769","\ua76b":"\ua76b","\ua76d":"\ua76d","\ua76f":"\ua76f","\ua770":"\ua76f","\ua72b":"\ua72b","\ua72d":"\ua72d","\ua72f":"\ua72f","\u01a8":"\u01a8","\u01bd":"\u01bd","\u0185":"\u0185","\u0242":"\u0242","\ua723":"\ua723","\ua78c":"\ua78c","\ua725":"\ua725","\ud835\udec2":"a","\ud835\udefc":"a","\ud835\udf36":"a","\ud835\udf70":"a","\ud835\udfaa":"a","\ud835\udea8":"a","\ud835\udee2":"a","\ud835\udf1c":"a","\ud835\udf56":"a","\ud835\udf90":"a","\u1f00":"a",
88
+ "\u1f04":"a","\u1f84":"a","\u1f8c":"a","\u1f02":"a","\u1f82":"a","\u1f8a":"a","\u1f06":"a","\u1f86":"a","\u1f8e":"a","\u1f80":"a","\u1f88":"a","\u1f01":"a","\u1f05":"a","\u1f85":"a","\u1f8d":"a","\u1f03":"a","\u1f83":"a","\u1f8b":"a","\u1f07":"a","\u1f87":"a","\u1f8f":"a","\u1f81":"a","\u1f89":"a","\u03ac":"a","\u1f71":"a","\u1fb4":"a","\u1f70":"a","\u1fb2":"a","\u1fb0":"a","\u1fb6":"a","\u1fb7":"a","\u1fb1":"a","\u1fb3":"a","\u1fbc":"a","\u03d0":"b","\ud835\udec3":"b","\ud835\udefd":"b","\ud835\udf37":"b",
89
+ "\ud835\udf71":"b","\ud835\udfab":"b","\ud835\udea9":"b","\ud835\udee3":"b","\ud835\udf1d":"b","\ud835\udf57":"b","\ud835\udf91":"b","\u1d5d":"b","\u1d66":"b","\u213d":"g","\ud835\udec4":"g","\ud835\udefe":"g","\ud835\udf38":"g","\ud835\udf72":"g","\ud835\udfac":"g","\u213e":"g","\ud835\udeaa":"g","\ud835\udee4":"g","\ud835\udf1e":"g","\ud835\udf58":"g","\ud835\udf92":"g","\u1d5e":"g","\u1d67":"g","\ud835\udec5":"d","\ud835\udeff":"d","\ud835\udf39":"d","\ud835\udf73":"d","\ud835\udfad":"d","\ud835\udeab":"d",
90
+ "\ud835\udee5":"d","\ud835\udf1f":"d","\ud835\udf59":"d","\ud835\udf93":"d","\u1d5f":"d","\u03f5":"e","\ud835\udec6":"e","\ud835\udedc":"e","\ud835\udf00":"e","\ud835\udf16":"e","\ud835\udf3a":"e","\ud835\udf50":"e","\ud835\udf74":"e","\ud835\udf8a":"e","\ud835\udfae":"e","\ud835\udfc4":"e","\ud835\udeac":"e","\ud835\udee6":"e","\ud835\udf20":"e","\ud835\udf5a":"e","\ud835\udf94":"e","\u1f10":"e","\u1f14":"e","\u1f12":"e","\u1f11":"e","\u1f15":"e","\u1f13":"e","\u03ad":"e","\u1f73":"e","\u1f72":"e",
91
+ "\u03dd":"\u03dd","\u0377":"\u0377","\u03db":"\u03db","\ud835\udec7":"z","\ud835\udf01":"z","\ud835\udf3b":"z","\ud835\udf75":"z","\ud835\udfaf":"z","\ud835\udead":"z","\ud835\udee7":"z","\ud835\udf21":"z","\ud835\udf5b":"z","\ud835\udf95":"z","\u0371":"\u0371","\ud835\udec8":"h","\ud835\udf02":"h","\ud835\udf3c":"h","\ud835\udf76":"h","\ud835\udfb0":"h","\ud835\udeae":"h","\ud835\udee8":"h","\ud835\udf22":"h","\ud835\udf5c":"h","\ud835\udf96":"h","\u1f20":"h","\u1f24":"h","\u1f94":"h","\u1f9c":"h",
92
+ "\u1f22":"h","\u1f92":"h","\u1f9a":"h","\u1f26":"h","\u1f96":"h","\u1f9e":"h","\u1f90":"h","\u1f98":"h","\u1f21":"h","\u1f25":"h","\u1f95":"h","\u1f9d":"h","\u1f23":"h","\u1f93":"h","\u1f9b":"h","\u1f27":"h","\u1f97":"h","\u1f9f":"h","\u1f91":"h","\u1f99":"h","\u03ae":"h","\u1f75":"h","\u1fc4":"h","\u1f74":"h","\u1fc2":"h","\u1fc6":"h","\u1fc7":"h","\u1fc3":"h","\u1fcc":"h","\u03d1":"u","\ud835\udec9":"u","\ud835\udedd":"u","\ud835\udf03":"u","\ud835\udf17":"u","\ud835\udf3d":"u","\ud835\udf51":"u",
93
+ "\ud835\udf77":"u","\ud835\udf8b":"u","\ud835\udfb1":"u","\ud835\udfc5":"u","\ud835\udeaf":"u","\ud835\udeb9":"u","\ud835\udee9":"u","\ud835\udef3":"u","\ud835\udf23":"u","\ud835\udf2d":"u","\ud835\udf5d":"u","\ud835\udf67":"u","\ud835\udf97":"u","\ud835\udfa1":"u","\u1dbf":"u","\u1fbe":"i","\u037a":"i","\ud835\udeca":"i","\ud835\udf04":"i","\ud835\udf3e":"i","\ud835\udf78":"i","\ud835\udfb2":"i","\ud835\udeb0":"i","\ud835\udeea":"i","\ud835\udf24":"i","\ud835\udf5e":"i","\ud835\udf98":"i","\u1f30":"i",
94
+ "\u1f34":"i","\u1f32":"i","\u1f36":"i","\u1f31":"i","\u1f35":"i","\u1f33":"i","\u1f37":"i","\u03af":"i","\u1f77":"i","\u1f76":"i","\u1fd0":"i","\u1fd6":"i","\u03ca":"i","\u0390":"i","\u1fd3":"i","\u1fd2":"i","\u1fd7":"i","\u1fd1":"i","\u03f0":"k","\ud835\udecb":"k","\ud835\udede":"k","\ud835\udf05":"k","\ud835\udf18":"k","\ud835\udf3f":"k","\ud835\udf52":"k","\ud835\udf79":"k","\ud835\udf8c":"k","\ud835\udfb3":"k","\ud835\udfc6":"k","\ud835\udeb1":"k","\ud835\udeeb":"k","\ud835\udf25":"k","\ud835\udf5f":"k",
95
+ "\ud835\udf99":"k","\u03d7":"k","\ud835\udecc":"l","\ud835\udf06":"l","\ud835\udf40":"l","\ud835\udf7a":"l","\ud835\udfb4":"l","\ud835\udeb2":"l","\ud835\udeec":"l","\ud835\udf26":"l","\ud835\udf60":"l","\ud835\udf9a":"l","\u00b5":"m","\ud835\udecd":"m","\ud835\udf07":"m","\ud835\udf41":"m","\ud835\udf7b":"m","\ud835\udfb5":"m","\ud835\udeb3":"m","\ud835\udeed":"m","\ud835\udf27":"m","\ud835\udf61":"m","\ud835\udf9b":"m","\u3382":"m","\u338c":"m","\u338d":"m","\u3395":"m","\u339b":"m","\u33b2":"m",
96
+ "\u33b6":"m","\u33bc":"m","\ud835\udece":"n","\ud835\udf08":"n","\ud835\udf42":"n","\ud835\udf7c":"n","\ud835\udfb6":"n","\ud835\udeb4":"n","\ud835\udeee":"n","\ud835\udf28":"n","\ud835\udf62":"n","\ud835\udf9c":"n","\ud835\udecf":"j","\ud835\udf09":"j","\ud835\udf43":"j","\ud835\udf7d":"j","\ud835\udfb7":"j","\ud835\udeb5":"j","\ud835\udeef":"j","\ud835\udf29":"j","\ud835\udf63":"j","\ud835\udf9d":"j","\ud835\uded0":"o","\ud835\udf0a":"o","\ud835\udf44":"o","\ud835\udf7e":"o","\ud835\udfb8":"o",
97
+ "\ud835\udeb6":"o","\ud835\udef0":"o","\ud835\udf2a":"o","\ud835\udf64":"o","\ud835\udf9e":"o","\u1f40":"o","\u1f44":"o","\u1f42":"o","\u1f41":"o","\u1f45":"o","\u1f43":"o","\u03cc":"o","\u1f79":"o","\u1f78":"o","\u03d6":"p","\u213c":"p","\ud835\uded1":"p","\ud835\udee1":"p","\ud835\udf0b":"p","\ud835\udf1b":"p","\ud835\udf45":"p","\ud835\udf55":"p","\ud835\udf7f":"p","\ud835\udf8f":"p","\ud835\udfb9":"p","\ud835\udfc9":"p","\u213f":"p","\ud835\udeb7":"p","\ud835\udef1":"p","\ud835\udf2b":"p","\ud835\udf65":"p",
98
+ "\ud835\udf9f":"p","\u03fb":"\u03fb","\u03df":"\u03df","\u03d9":"\u03d9","\u03f1":"r","\ud835\uded2":"r","\ud835\udee0":"r","\ud835\udf0c":"r","\ud835\udf1a":"r","\ud835\udf46":"r","\ud835\udf54":"r","\ud835\udf80":"r","\ud835\udf8e":"r","\ud835\udfba":"r","\ud835\udfc8":"r","\ud835\udeb8":"r","\ud835\udef2":"r","\ud835\udf2c":"r","\ud835\udf66":"r","\ud835\udfa0":"r","\u1d68":"r","\u1fe4":"r","\u1fe5":"r","\u03f2":"s","\ud835\uded3":"s","\ud835\uded4":"s","\ud835\udf0d":"s","\ud835\udf0e":"s","\ud835\udf47":"s",
99
+ "\ud835\udf48":"s","\ud835\udf81":"s","\ud835\udf82":"s","\ud835\udfbb":"s","\ud835\udfbc":"s","\ud835\udeba":"s","\ud835\udef4":"s","\ud835\udf2e":"s","\ud835\udf68":"s","\ud835\udfa2":"s","\u037c":"\u037c","\u037b":"\u037b","\u037d":"\u037d","\ud835\uded5":"t","\ud835\udf0f":"t","\ud835\udf49":"t","\ud835\udf83":"t","\ud835\udfbd":"t","\ud835\udebb":"t","\ud835\udef5":"t","\ud835\udf2f":"t","\ud835\udf69":"t","\ud835\udfa3":"t","\ud835\uded6":"y","\ud835\udf10":"y","\ud835\udf4a":"y","\ud835\udf84":"y",
100
+ "\ud835\udfbe":"y","\u03d2":"y","\ud835\udebc":"y","\ud835\udef6":"y","\ud835\udf30":"y","\ud835\udf6a":"y","\ud835\udfa4":"y","\u1f50":"y","\u1f54":"y","\u1f52":"y","\u1f56":"y","\u1f51":"y","\u1f55":"y","\u1f53":"y","\u1f57":"y","\u03cd":"y","\u1f7b":"y","\u03d3":"y","\u1f7a":"y","\u1fe0":"y","\u1fe6":"y","\u03cb":"y","\u03d4":"y","\u03b0":"y","\u1fe3":"y","\u1fe2":"y","\u1fe7":"y","\u1fe1":"y","\u03d5":"f","\ud835\uded7":"f","\ud835\udedf":"f","\ud835\udf11":"f","\ud835\udf19":"f","\ud835\udf4b":"f",
101
+ "\ud835\udf53":"f","\ud835\udf85":"f","\ud835\udf8d":"f","\ud835\udfbf":"f","\ud835\udfc7":"f","\ud835\udebd":"f","\ud835\udef7":"f","\ud835\udf31":"f","\ud835\udf6b":"f","\ud835\udfa5":"f","\u1d60":"f","\u1d69":"f","\ud835\uded8":"x","\ud835\udf12":"x","\ud835\udf4c":"x","\ud835\udf86":"x","\ud835\udfc0":"x","\ud835\udebe":"x","\ud835\udef8":"x","\ud835\udf32":"x","\ud835\udf6c":"x","\ud835\udfa6":"x","\u1d61":"x","\u1d6a":"x","\ud835\uded9":"c","\ud835\udf13":"c","\ud835\udf4d":"c","\ud835\udf87":"c",
102
+ "\ud835\udfc1":"c","\ud835\udebf":"c","\ud835\udef9":"c","\ud835\udf33":"c","\ud835\udf6d":"c","\ud835\udfa7":"c","\ud835\udeda":"v","\ud835\udf14":"v","\ud835\udf4e":"v","\ud835\udf88":"v","\ud835\udfc2":"v","\ud835\udec0":"v","\ud835\udefa":"v","\ud835\udf34":"v","\ud835\udf6e":"v","\ud835\udfa8":"v","\u1f60":"v","\u1f64":"v","\u1fa4":"v","\u1fac":"v","\u1f62":"v","\u1fa2":"v","\u1faa":"v","\u1f66":"v","\u1fa6":"v","\u1fae":"v","\u1fa0":"v","\u1fa8":"v","\u1f61":"v","\u1f65":"v","\u1fa5":"v","\u1fad":"v",
103
+ "\u1f63":"v","\u1fa3":"v","\u1fab":"v","\u1f67":"v","\u1fa7":"v","\u1faf":"v","\u1fa1":"v","\u1fa9":"v","\u03ce":"v","\u1f7d":"v","\u1ff4":"v","\u1f7c":"v","\u1ff2":"v","\u1ff6":"v","\u1ff7":"v","\u1ff3":"v","\u1ffc":"v","\u03e1":"\u03e1","\u0373":"\u0373","\u03f8":"\u03f8","\u2df6":"f","\u04d1":"f","\u04d3":"f","\u04d9":"\u04d9","\u04db":"\u04d9","\u04d5":"\u04d5","\u2de0":"\u0431","\u0431":"\u0431","\u2de1":"d","\u2de2":"u","\u0491":"u","\u0493":"\u0493","\u04fb":"\u04fb","\u0495":"\u0495","\u04f7":"\u04f7",
104
+ "\u2de3":"l","\u0501":"\u0501","\ua681":"\ua681","\u0452":"\u0452","\ua663":"\ua663","\u0503":"\u0503","\u0453":"\u0503","\u0499":"\u0499","\u2df7":"t","\u0450":"t","\u0451":"t","\u04d7":"t","\ua674":"\u0454","\u0454":"\u0454","\u2de4":"\u0436","\u0436":"\u0436","\u04c2":"\u0436","\ua685":"\ua685","\u04dd":"\ua685","\u0497":"\u0497","\u2de5":"p","\ua641":"\ua641","\u0505":"\u0505","\u0511":"\u0511","\u04df":"\u0511","\ua643":"\ua643","\u0455":"\u0455","\ua645":"\ua645","\u04e1":"\u04e1","\ua689":"\ua689",
105
+ "\u0507":"\u0507","\ua683":"\ua683","\ua675":"b","\u045d":"b","\u04e3":"b","\u048b":"\u048b","\u04e5":"\u048b","\u0456":"\u0456","\ua647":"\ua647","\u0457":"\ua647","\ua676":"\ua647","\u0458":"\u0458","\u2df8":"\ua649","\ua649":"\ua649","\u2de6":"r","\u049b":"\u049b","\u04c4":"\u04c4","\u04a1":"\u04a1","\u049f":"\u049f","\u049d":"\u049d","\u051f":"\u051f","\u051b":"\u051b","\u2de7":"k","\u04c6":"\u04c6","\u0513":"\u0513","\u0521":"\u0521","\u0459":"\u0459","\ua665":"\ua665","\u0509":"\u0509","\u0515":"\u0515",
106
+ "\u2de8":"v","\u04ce":"\u04ce","\ua667":"\ua667","\u2de9":"y","\u1d78":"y","\u04ca":"\u04ca","\u04a3":"\u04a3","\u04c8":"\u04c8","\u0523":"\u0523","\u04a5":"\u04a5","\u045a":"\u045a","\u050b":"\u050b","\u2dea":"j","\ua669":"j","\ua66b":"j","\ua66d":"j","\ua66e":"j","\u04e7":"j","\u04e9":"\u04e9","\u04eb":"\u04e9","\u2deb":"g","\u0525":"\u0525","\u04a7":"\u04a7","\u0481":"\u0481","\u2dec":"h","\u048f":"\u048f","\u0517":"\u0517","\u2ded":"c","\u2df5":"c","\u050d":"\u050d","\u04ab":"\u04ab","\u2dee":"n",
107
+ "\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","\u047d":"\u047d","\u047b":"\u047b",
108
+ "\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","\ua653":"\ua653","\u044d":"\u044d",
109
+ "\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","\u04a9":"\u04a9","\u051d":"\u051d",
110
+ "\u04cf":"\u04cf"});t.register("$23",function(c,a,d){var f=a.requestAnimationFrame,e=a.cancelAnimationFrame,g=0;if(!f||!e)for(var b in{ms:1,moz:1,webkit:1,o:1})if(f=a[b+"RequestAnimationFrame"])if(e=a[b+"CancelAnimationFrame"]||a[b+"CancelRequestAnimationFrame"])break;f&&e||(f=function(b){var c=q();timeToCall=Math.max(0,16-(c-g));nextTime=c+timeToCall;timerId=a.setTimeout(function(){b(nextTime)},timeToCall);g=nextTime;return timerId},e=function(a){clearTimeout(a)});var q=Date.now||function(){return(new Date).getTime()};
111
+ c.loop=function(a,b){function c(){g=f(c,b);a(d++)}var d=0,g;c();return{stop:function(){g&&e(g);g=null}}};return c}({},u,D));t.register("$21",function(c,a,d){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 e(a){a.preventDefault();a.stopPropagation();return!1}var g,b=!!a.navigator.msPointerEnabled,q=b?"MSPointerDown":"touchstart",p=b?"MSPointerMove":
112
+ "touchmove",r=b?"MSPointerUp":"touchend";c.ok=function(a){null==g&&(g="function"===typeof d.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 d(b){a.removeEventListener(b,f[b],!1)}var f={};f[q]=function(a){B(a,function(c,d){d.type=q;b(a,d,g)});c(p);c(r);return!0};f[r]=function(a){d(p);d(r);B(a,function(c,d){d.type=r;b(a,d,g)});return!0};f[p]=function(a){B(a,function(c,d){d.type=p;b(a,d,g)});return e(a)};
113
+ c(q);var g={kill:function(){d(q);d(p);d(r);a=g=b=null}};return g};c.swiper=function(a,c,d){function f(b){a.addEventListener(b,z[b],!1)}function g(b){a.removeEventListener(b,z[b],!1)}function k(){l&&l.stop();l=null}var l,A,y,z={},H=[],E=[],C=[];z[q]=function(b){A=!1;k();var c=h();B(b,function(a,b){H[a]=c;E[a]=b.clientX;C[a]=b.clientY});y=a.scrollLeft;return!0};z[r]=function(a){B(a,function(a,b){var d=h()-H[a],e=E[a]-b.clientX,d=Math.abs(e)/d;c(d,e?0>e?-1:1:0)});y=null;return!0};z[p]=function(b){var c,
114
+ d;null==y||B(b,function(a,b){c=E[a]-b.clientX;d=C[a]-b.clientY});if(d&&Math.abs(d)>Math.abs(c))return A=!0;c&&(A=!0,a.scrollLeft=Math.max(0,y+c));return e(b)};if(!b||d)f(q),f(p),f(r),b&&(a.className+=" mstouch");return{kill:function(){g(q);g(p);g(r);k()},swiped:function(){return A},ms:function(){return b},snap:function(c){b&&!d&&(a.style["-ms-scroll-snap-points-x"]="snapInterval(0px,"+c+"px)",a.style["-ms-scroll-snap-type"]="mandatory",a.style["-ms-scroll-chaining"]="none")},scroll:function(b,c,d){k();
115
+ var e=a.scrollLeft,f=b>e?1:-1,g=Math[1===f?"min":"max"],y=Math.round(16*c*f);return l=t.require("$23","fps.js").loop(function(c){c&&(e=Math.max(0,g(b,e+y)),a.scrollLeft=e,b===e&&(k(),d&&d(e)))},a)}}};c.start=function(a,b){return f(a,q,b,!1)};c.move=function(a,b){return f(a,p,b,!1)};c.end=function(a,b){return f(a,r,b,!1)};var B=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||[];++d<e.length;)c(d,e[d])},h=Date.now||
116
+ function(){return(new Date).getTime()};return c}({},u,D));t.register("$15",function(c,a,k){function f(a,b){var c=[].slice.call(arguments,2);return function(d){return a.apply(b,[d].concat(c))}}function e(a,b){var c=a.id,d=c&&w[c],e=d&&d.parent();if(!d||!e)return null;var f=(c=e.dir===v)?"X":"Y",c=c?B: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 g(a,b){function c(){d(k).unbind("mousemove",f);u=null;return!0}
117
+ function f(a){u?u.move(a):c();return!0}if(u)return!0;u=e(a.target,a);if(!u)return!0;d(k).one("mouseup",c).mousemove(f);return r(a)}function b(a,b){var c=b.type;"touchmove"===c?u&&u.move(b):"touchstart"===c?u=e(a.target,b):"touchend"===c&&u&&(u=null)}function q(a){var b=d(a.target).closest("div.wg-tr"),c=b.length&&b.closest("div.is-table");(c=c&&w[c.attr("id")])&&c.selectRow(Number(b.attr("data-row")));return r(a)}function p(a){var b=a.keyCode;return 40===b?(this.nextRow(1),r(a)):38===b?(this.nextRow(-1),
118
+ r(a)):!0}function r(a){a.stopPropagation();a.preventDefault();return!1}function B(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!==e&&(e=c,d(a).trigger("wgChange",[c]));return!0}var c=m.ie()?["keyup","paste"]:["input"],e=a.innerHTML,f=e;return d(a).attr("contenteditable","true").focus(function(){for(var e=
119
+ d(a),f=-1;++f<c.length;)e.bind(c[f],b);return!0}).blur(function(){for(var g=d(a),h=-1;++h<c.length;)g.unbind(c[h]);b();f!==e&&d(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"];w[a.id]=this;this.clear()}var m=t.require("$2","html.js"),v=1,w={},u=!1;c.init=function(a){var c=new n(a);c.restyle().redraw();c.root=!0;t.require("$21","touch.js").ok(function(c){c.dragger(a,b)});d(a).mousedown(g);return c};a=n.prototype;a.each=function(a){for(var b=
120
+ -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){d.fn[a].apply(d(this.el),b);return this};a.parent=function(){return this.pid&&w[this.pid]};a.splitx=function(){return this._split(v,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,f=b.length,g=1/(e+f),h=0;if(e)throw Error("Todo: implement re-split");
121
+ for(;++c<f;){d=m.el();this.body.appendChild(d);for(var k=d,q=b[c],p=q,r=1;w[q];)q=p+"-"+ ++r;k.id=q;d=new n(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 w[b.id];this.cells=[];this.length=0;this.nav&&this.el.removeChild(this.nav);this.nav=null;this.body&&(this.field&&m.ie()&&(d(this.body).triggerHandler("blur"),this.field=null),this.table&&(this.table=
122
+ null),this.el.removeChild(this.body));this.body=this.el.appendChild(m.el("","wg-body"));return this};a.resize=function(a,b){if(!b&&(b=this.cells[1],!b))return;var c=b.index,e=d(this.el)[this.dir===v?"width":"height"](),f=this.cells[c+1],c=this.cells[c-1];pad=(b.body||b.el.firstChild).offsetTop||0;max=(f?f.pos*e:e)-pad;min=c?c.pos*e:0;b.pos=Math.min(max,Math.max(min,a))/e;(e=this.parent())&&e.table?e.redraw():this.redraw();return this};a.distribute=function(){for(var a,b=0;b<arguments.length;)a=Math.max(0,
123
+ 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(" ");return this};a.redraw=function(){if(this.body){var a=
124
+ 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,e=1,f=2===this.dir?"height":"width";0<=--a;)b=this.cells[a],this.nav?c=1:(b.fixed&&(b.pos=b.fixed/d(this.el)[f]()),c=e-b.pos,e=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=d(c.body).width(),e=c.body.firstChild,c=e.childNodes;e.style.width=a+"px";for(var a=
125
+ b.length,f=1;0<=--a;)e=b.cells[a],c[a].style.width=String(100*(f-e.pos))+"%",f=e.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(m.el("","wg-content"));"string"===typeof a?d(this.body)._html(a):this.append(a);this.redraw();return this};a.textarea=function(a,b){var c=m.txt(a);this.contents(c);(this.field=b)&&s(this.body);this.restyle();return this};a.rtl=function(){this.bodyAtt("dir",
126
+ "RTL");return this};a.ltr=function(){this.bodyAtt("dir","LTR");return this};a.bodyAtt=function(a,b){if(this.body)return null!=b&&this.body.setAttribute(a,b),this.body.getAttribute(a)};a.append=function(a){a.nodeType?m.init(this.body.appendChild(a)):m.init(d(a).appendTo(this.body));return this};a.prepend=function(a){var b=this.body;if(a.nodeType){var c=b.firstChild;m.init(c?b.insertBefore(a,c):b.appendChild(a))}else m.init(d(a).prependTo(b));return this};a.header=function(a,b){if(!arguments.length)return this.el.getElementsByTagName("h2")[0];
127
+ 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};a.title=function(a){this.t?this.t.nodeValue=a||"":this.header(a);return this.t};a.tabulate=function(a){var b=this.id,c=[],e=[];rows=this.splity(b+"-thead",b+"-body");thead=rows[0];tbody=rows[1];thead.css.push("wg-thead");tbody.css.push("wg-tbody");a.eachCol(function(a,d){c.push(b+"-col"+a);e.push(d)});for(var g=-1,k,n=m.el("","wg-cols"),
128
+ r=thead._split(v,c);++g<r.length;)k=r[g],k.header(e[g]),n.appendChild(m.el("","wg-col "+(0===g?"":"not-")+"first"));tbody.contents(n);a.eachRow(function(a,b,c){tbody._addRow(b,c)});d(tbody.el).mousedown(q);this.lock();this.table=a;this.restyle().redraw();k=thead.cells[0];tbody.fixed=h(k.body,k.el)||20;this.resize(tbody.fixed);d(n).attr("tabindex","-1").keydown(f(p,this));return n};a.lock=function(){this.body.className+=" locked";return this};a.addRow=function(a,b){this.table&&this.cells[1]&&this.cells[1]._addRow(a,
129
+ 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(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])):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}};
130
+ a.nextRow=function(a,b){for(var c=this.trow;!1===this.selectRow(c+=a,b););};a.selectRow=function(a,b){var c=this.table&&this.table.row(a);if(!c)return null;var e=this.tr(a);if(e.length){var e=d(e),f=this.cells[1],g=f.body,h=d(g.firstChild);if(h.hasClass("filtered")&&!e.hasClass("filtered"))return!1;null!==this.trow&&d(this.tr(this.trow)).removeClass("selected");e.addClass("selected");this.trow=a;if(!b){var k=g.scrollTop;h.focus();k&&(g.scrollTop=k)}f.scrollTo(e[0],!0);h.trigger("wgRowSelect",[a,c])}return this};
131
+ a.deselectRow=function(){if(this.table){var a=d(this.cells[1].body.firstChild),b=this.trow;a.find("div.selected").removeClass("selected");this.row=null;a.trigger("wgRowDeselect",[b])}};a.filterRows=function(a){var b=-1,c;c=d(this.cells[1].body.firstChild);if(!a)return c.removeClass("filtered"),this;for(c.addClass("filtered").find("div.filtered").removeClass("filtered");++b<a.length;)c=a[b],c=this.tr(c),c.length&&d(c).addClass("filtered");return this};a.scrollTo=function(a,b){var c;c=this.body.scrollTop;
132
+ var e=h(a,this.body);if(c>e)c=e;else{var f=this.body.clientHeight,e=e+d(a).outerHeight();if(f+c<e)c=e-f;else return}b?this.body.scrollTop=c:d(this.body).stop(!0).animate({scrollTop:c},250)};a.navigize=function(a){function b(a,c){e=a.show();f=c.addClass("active");a.trigger("wgTabSelect",[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 e,f,g=d(c.nav).click(function(a){var g=d(a.target),h=g.data("tab");if(h){var k=f;e&&e.hide();
133
+ k&&k.removeClass("active");b(h,g).children().focus();c.redraw();return r(a)}});c.each(function(c,f){f.pos=0;var h=d(f.el).data("index",c),k=d('<a href="#'+f.id+'"></a>').data("tab",h).text(a[c]).appendTo(g);e?h&&h.hide():b(h,k)});c.lock();c.restyle().redraw();g=null;return c};a=null;return c}({},u,D));t.register("$7",function(c,a,k){function f(a){var c=[],b=k.createElement("p");b.innerHTML=a;t.require("$2","html.js").plain(b,c);return c.join("\n")}c.init=function(c){function g(){var a=l.length,b=
134
+ 0,c=0,d=0;l.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(){A.clear();l.each(function(a,b,c){A.add(c,b.toText())});y="";z=l.length}function k(a,b){var c,d={};if(y===a)return z||0;if(!l.length)return 0;if(a){if(y&&!z&&0===a.indexOf(y))return 0;c=A.find(a,d);d.words.length||(a="")}y=a;z=c?c.length:l.length;J.filterRows(c);d=C?l.indexOf(C):-1;if(-1===d||c&&-1===c.indexOf(d))c?c.length?J.selectRow(c[0],!0):J.deselectRow():
135
+ J.selectRow(0,!0);b||m("poFilter",[y,z]);return z}function p(a){if(!a)return["",""];var b=[a.source()||"",a.translation()||""];(a=a.context())&&(b[0]+=" [ "+a+" ]");return b}function r(a){if(a=a||C){var b=l.indexOf(a),b=J.tr(b),c=b[0].className.replace(/\s*po-[a-z]+/g,""),c=c+(" "+h(a)+" po-unsaved");d(b).attr("class",c);m("poUnsaved",[++G])}}function u(a,b){b=b||C;if(!b)return null;var c=b.fuzzy();null!=a&&c!=a&&(b.fuzzy(a),m("poFuzzy",[b,a]),m(F,[b]),r(b));return c}function h(a){var b=[];a&&(a.fuzzy()&&
136
+ b.push("po-fuzzy"),a.translation()||b.push("po-empty"),a.comment()&&b.push("po-comment"));return b.join(" ")}function s(a,b){var c=p(a)[b||0],e=l.indexOf(a),e=J.td(e,b);c&&/\S/.test(c)?d(e).text(c.replace("\n"," ")):d(e).html("&nbsp;")}function n(a){a!==H&&(E=(H=a)?l.lock(E):l.unlock()||E,m("poLock",[a,E]),C&&D(C))}function m(a,b){return d(c).trigger(a,b||[])}function v(){if(l&&l.row){y&&(y="",z=l.length,m("poFilter",[y,z]));var a;J.table&&(a=L?L.parentNode.scrollTop:0,J.clear());L=J.tabulate(K);
137
+ a&&(L.parentNode.scrollTop=a);m("poLoad");(a=l.locale())?(E=a,n(!0)):n(!1);return!!l.length}J.clear().header("Error").contents("Invalid PO")}function w(){O.unbind().clear();P.unbind().clear();Q.unbind();C&&(m("poDeselected",[C]),C=null)}function D(a){function c(){var d=E&&E.lang&&"en"!==E.lang&&E.label;P.title(d?d+" translation:":"Translation:");if(q){var e=[],k=E.plurals||["Single","Other"],l=t.require("$14","collection.js").init();for(a.each(function(a,b){e.push(k[a]||"Form "+a);l.add("plural-"+
138
+ a,b)});(d=e.length)<E.nplurals;)e.push(k[d]||"Form "+l.length),l.add("plural-"+d,"");T=P.splitx.apply(P,l.keys);P.each(function(a,b){b.textarea(l[a],h)});P.navigize(e).bind("wgTabSelect",function(a,b){g=b})}else P.textarea(a.translation(),h);P.bind("wgChange",function(b,c){var d=f(c);a.translate(d,g);0===g&&s(a,1);a.fuzzy()?u(!1,a):r(a)}).bind("wgChanged",function(c){A&&b();m(F,[a])})}function e(){P.title("Context:");P.textarea(a.context(),!0);P.bind("wgChange",function(b,c){var d=f(c);a.context(d);
139
+ a.source();s(a,0);r(a)}).bind("wgChanged",function(){l.reIndex(a);A&&b();m(F,[a])})}w();C=a;Q.textarea(a.comment(),!0).bind("wgChange",function(b,c){var d=f(c);a.comment(d);m("poComment",[a,d]);r(a)});var g=0,h=H,k=!H,n=a.source()||"",q=a.plural()||"",p=a.notes();(function(){var c,e=O;q?(c=O.splity(O.id+"-singular",O.id+"-plural"),e=c[0],c=c[1],e.header("Single:").textarea(n,k),c.header("Plural:").textarea(q,k),O.lock()):O.textarea(n,k);O.title("Source text:");p&&e.prepend(d('<p class="notes"></p>').text(p));
140
+ k&&O.bind("wgChange",function(b,c){var d=f(c);O.id+"-plural"===b.target.parentNode.id?a.plural(d):(a.source(d),s(a,0));r(a)}).bind("wgChanged",function(c){O.id+"-plural"===c.target.parentNode.id||l.reIndex(a);A&&b();m(F,[a])})})();h?c():e();m("poSelected",[a]);data=null}var l,A,y,z,H,E,C,G=0,F="poUpdate",L,K={row:function(a){return p(l.row(a))},eachCol:function(a){a(0,"Source text");a(1,"Translation")},eachRow:function(a){var b=0;l.each(function(c,d){a(b++,p(d),h(d))})}},M=t.require("$15","LocoWinGrid.js").init(c),
141
+ T=M.splity("po-list","po-edit"),J=T[0],R=T[1],T=R.splitx("po-trans","po-comment"),S=T[0],Q=T[1].header("Comments:"),T=S.splity("po-source","po-target"),O=T[0].header("Source text:"),P=T[1].header("Translation:");M.distribute(0.34);R.distribute(0.8);d(a).resize(function(){M.redraw(!0);return!0});J.bind("wgRowSelect",function(a,b,c){a=l.row(b);D(a);return!0}).bind("wgRowDeselect",function(){w();Q.textarea("",!1);O.textarea("",!1).title("Source text not loaded:");P.textarea("",!1).title("Translation not loaded:");
142
+ m("poSelected",[null]);return!0});return{bind:function(a,b){return d(c).bind(a,b)},load:function(a){l=a;A&&b();v()&&J.selectRow(0)},save:function(a){if(G||a)d(L).find("div.po-unsaved").removeClass("po-unsaved"),m("poSave");G=0;return l},fuzzy:function(a){return u(a)},del:function(a,c){var d=arguments.length?l.get(a,c):C;if(d){var e=y,f=l.del(d);null!=f&&(r(d),m("poDel",[d]),m(F,[d]),v(),A&&b(),C&&C.equals(d)&&w(),l.length&&(e&&k(e),C||(f=Math.min(f,l.length-1),J.selectRow(f))))}},add:function(a,b){var c,
143
+ d=l.get(a,b);d?c=l.indexOf(d):(c=l.length,d=l.add(a,b),J.addRow(K.row(c),h(d)),r(d),A&&A.add(l.indexOf(d),d.toText()),m("poAdd",[d]),m(F,[d]));y&&k("");J.selectRow(c);return d},lock:function(){n(!0)},unlock:function(){n(!1)},locked:function(){return Boolean(H)},filter:function(a){return A&&l&&l.length&&k(a,!0)},searchable:function(a){a&&(A=a,l&&b());return A&&!0},stats:function(){return g()}}};return c}({},u,D));t.require("$1","array.js");t.require("$2","html.js");W=u.loco||{};var ba=u.ajaxurl||"/wp-admin/admin-ajax.php",
144
+ V=W.conf||{},U=V.locale,M=t.require("$3","po.js").create(U),K={},Q=D.getElementById("loco-poedit-inner"),F=W.t||function(c){return c};d(u).resize(function(){function c(){var c;c=Q;for(var e=c.offsetTop||0;(c=c.offsetParent)&&void 0!==c;)e+=c.offsetTop||0;c=e;e=d(u).innerHeight();c=Math.max(k,e-c-a);Q.style.height=String(c)+"px";return!0}var a=20,k=parseInt(d(Q).css("min-height")||0);c();return c}());K.save=function(c){function a(){c.disabled=!1}a();G.bind("poUnsaved",function(){d(c).addClass("button-primary loco-flagged")}).bind("poSave",
145
+ function(){d(c).removeClass("button-primary loco-flagged")});d(c.form).submit(function(k){var f=k.target;k.target.po.value=M.toString();c.disabled=!0;aa(f,function(c){a();d("#loco-po-modified").text(c.modified);G.save(!0);var f=F("PO file saved"),b=c.filename;c=c.compiled;null!=c&&(/\D/.test(c)?X(c,F("Error"),"error"):(f+=" "+F("and MO file compiled"),b=b.replace(/\.po$/i,".mo")));$(f+" - "+b)},a);return S(k)});return!0};K.download_po=K.download_mo=function(c){c.disabled=!1;c.form.action=ba;d(c).click(function(){c.form.po.value=
146
+ M.toString();d(Q).trigger("poSave");return!0});return!0};K.add=!U&&function(c){c.disabled=!1;d(c).click(function(a){var c=1,d;for(d="New message";M.get(d);)c=/(\d+)/.exec(d)?Math.max(c,RegExp.$1):c,d="New message "+ ++c;G.add(d);return S(a)});return!0};K.del=!U&&function(c){c.disabled=!1;d(c).click(function(a){G.del();return S(a)});return!0};K.fuzzy=U&&function(c){function a(a){c.disabled=null==a;d(c)[a?"addClass":"removeClass"]("loco-inverted")}G.bind("poSelected",function(c,d){a(d&&G.locked()?d.fuzzy():
147
+ null)}).bind("poFuzzy",function(c,d,e){a(G.locked()?e:null)});d(c).click(function(a){var c=!G.fuzzy();G.fuzzy(c);return S(a)});return!0};K.sync=function(c){function a(){c.disabled=!1}a();G.bind("poUnsaved",function(){c.disabled=!0}).bind("poSave",function(){a()});d(c.form).submit(function(k){c.disabled=!0;aa(k.target,function(c){a();var e=t.require("$3","po.js").create(void 0);e.load(c.exp);var g=[],e=M.merge(e),b=e.add.length,k=e.del.length;G.load(M);if(b||k){g.push(c.pot?R(F("Merged from %s"),c.pot):
148
+ F("Merged from source code"));b&&g.push(R(F("1 new string added","%s new strings added",b),b));k&&g.push(R(F("1 obsolete string removed","%s obsolete strings removed",k),k));d(Q).trigger("poUnsaved",[]);if(u.console&&console.log){for(b=-1;++b<e.add.length;)console.log(" + "+e.add[b].source());for(b=-1;++b<e.del.length;)console.log(" - "+e.del[b].source())}Y()}else g.push(c.pot?R(F("Already up to date with %s"),c.pot):F("Already up to date with source code"));M.headers(c.headers||{});$(g.join(". "));
149
+ d(Q).trigger("poMerge",[c])},a);return S(k)});return!0};K.revert=function(c){G.bind("poUnsaved",function(){c.disabled=!1}).bind("poSave",function(){c.disabled=!0});d(c).click(function(a){location.reload();return S(a)});return!0};K.help=function(){return!0};Q.innerHTML="";var G=t.require("$7","poedit.js").init(Q);d("#loco-nav").find("button").each(function(c,a){var k=a.getAttribute("data-loco");K[k]&&K[k](a)||d(a).hide()});K=null;(function(c){d(c.form).submit(function(a){return S(a)});var a=t.require("$4",
150
+ "dict.js").create();a.depth=10;a.translit(t.require("$5","translit.json"));G.searchable(a);c.disabled=!1;c.value="";var k=t.require("$6","LocoTextListener.js").listen(c,function(a){G.filter(a)});G.bind("poFilter",function(a,c){k.val(c)}).bind("poMerge",function(a,c){var d=k.val();d&&G.filter(d)});c=a=null})(D.getElementById("loco-search"));G.bind("poUnsaved",function(){u.onbeforeunload=function(){return F("Your changes will be lost if you continue without saving")}}).bind("poSave",function(){u.onbeforeunload=
151
+ null}).bind("poUpdate",Y);U?M.load(V.po||{}):M.load(V.pot||{});M.headers(V.headers);G.load(M);Y();d("#wpbody-content").find("div.loco-message").each(function(c,a){Z(a,!0)})})(window,document,window.jQuery);
pub/js/lang/dummy.php CHANGED
@@ -2,22 +2,51 @@
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');
18
 
19
 
20
  /**
21
- * Legacy translations, removed from front end but don't want to lose in case reinstated
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  */
23
- __('Translation');
 
 
2
  /**
3
  * Here for source code extraction until xgettext is applied to js files too
4
  */
5
+
6
+ // immediately preceeding comment block is extracted. this won't be.
7
+ //
8
  __('Unknown error');
9
+
10
  __('PO file saved');
11
+
12
  __('and MO file compiled');
13
+
14
+ /* Translators: where %s is the path to a POT file */
15
  __('Merged from %s');
16
+
17
  __('Merged from source code');
18
+
19
  __('Already up to date with %s');
20
+
21
  __('Already up to date with source code');
22
+
23
  _n('1 new string added','%s new strings added', 2 );
24
+
25
  _n('1 obsolete string removed','%s obsolete strings removed', 2 );
26
+
27
  __('Your changes will be lost if you continue without saving');
28
 
29
 
30
  /**
31
+ * These items aren't ready for translation in source code yet because they come from Loco core, but they will be eventually
32
+ */
33
+
34
+ // label for the window pane holding native translation
35
+ _x('Source text','Editor pane');
36
+
37
+ // where %s is the language, e.g French translation
38
+ _x('%s translation','Editor pane');
39
+
40
+ // label for the window pane holding translator comments
41
+ _x('Comments','Editor pane');
42
+
43
+ // label for the window pane holding message context
44
+ _x('Context','Editor pane');
45
+
46
+
47
+ /**
48
+ * Legacy translations, removed from front end but don't want to lose in case reinstated
49
  */
50
+
51
+ //
52
+ __('Translation');
pub/js/lang/loco-translate-de_DE.js CHANGED
@@ -3,11 +3,11 @@
3
  * Project: loco.js conversion
4
  * Release: Working copy
5
  * Locale: de_DE, German
6
- * Exported at: Wed, 12 Mar 2014 10:16:48 +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)
@@ -29,5 +29,5 @@ loco = window.loco||{}, loco.t = function( pairs ){
29
  return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
  };
31
  }(
32
- {"Error":"Fehler","Warning":"Warnung","OK":"OK","Permission denied":"Zugriff verweigert","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","PO file used as template. This will be renamed to %s on first save":"PO-Datei wird als Template verwendet. Dies wird in %s beim ersten Speichern umbenannt.","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","Empty or invalid %s file":"Leere oder ung\u00fcltige %s-Datei","%s file has no header":"%s-Datei hat keinen Header","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","Manage translations":"\u00dcbersetzungen verwalten","Translation options":"\u00dcbersetzungsoptionen","Loco Translate":"Loco Translate","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","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","Folder not writable":"Ordner nicht schreibbar","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 backups in \"%s\". Fix file permissions or disable backups in settings":"Webserver kann keine Sicherungen in \"%s\" anlegen. Setze die Datei-Zugriffrechte oder deaktiviere die Sicherungen in den Einstellungen","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":"Fehler beim Schreiben der MO-Datei","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":"Bereits auf dem aktuellen Stand mit %s","Already up to date with source code":"Bereits 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","Translation":"\u00dcbersetzung","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","Loco may not work as expected":"Loco scheint nicht, wie erwartet, zu arbeiten","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":"Erzeuge Hashtabellen","Backing up PO files":"PO-Datei sichern","Number of backups to keep of each file:":"Anzahl der Sicherungen pro Datei","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
  );
3
  * Project: loco.js conversion
4
  * Release: Working copy
5
  * Locale: de_DE, German
6
+ * Exported at: Mon, 09 Jun 2014 18:07:30 +0100
7
  */
8
  loco = window.loco||{}, loco.t = function( pairs ){
9
 
10
+ // named plural forms
11
  var pluralForms = ["one","other"];
12
 
13
  // calc numeric index of a plural form (0-1)
29
  return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
  };
31
  }(
32
+ {"Folder not found":"","No source files in this package, nothing to sync":"","Source text":"","%s translation":"","Comments":"","Context":"","Experimental features":"","Enable Wordpress core translations":"","create in <code>%s<\/code>":"","create in global languages directory":"","Error":"Fehler","Warning":"Warnung","OK":"OK","Permission denied":"Zugriff verweigert","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","PO file used as template. This will be renamed to %s on first save":"PO-Datei wird als Template verwendet. Dies wird in %s beim ersten Speichern umbenannt.","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","Empty or invalid %s file":"Leere oder ung\u00fcltige %s-Datei","%s file has no header":"%s-Datei hat keinen Header","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","Manage translations":"\u00dcbersetzungen verwalten","Translation options":"\u00dcbersetzungsoptionen","Loco Translate":"Loco Translate","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","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","Folder not writable":"Ordner nicht schreibbar","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 backups in \"%s\". Fix file permissions or disable backups in settings":"Webserver kann keine Sicherungen in \"%s\" anlegen. Setze die Datei-Zugriffrechte oder deaktiviere die Sicherungen in den Einstellungen","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":"Fehler beim Schreiben der MO-Datei","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":"Bereits auf dem aktuellen Stand mit %s","Already up to date with source code":"Bereits 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","Translation":"\u00dcbersetzung","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","Loco may not work as expected":"Loco scheint nicht, wie erwartet, zu arbeiten","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":"Erzeuge Hashtabellen","Backing up PO files":"PO-Datei sichern","Number of backups to keep of each file:":"Anzahl der Sicherungen pro Datei","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 CHANGED
@@ -3,11 +3,11 @@
3
  * Project: loco.js conversion
4
  * Release: Working copy
5
  * Locale: nl_BE, Dutch (Belgium)
6
- * Exported at: Wed, 12 Mar 2014 10:16:48 +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)
@@ -29,5 +29,5 @@ loco = window.loco||{}, loco.t = function( pairs ){
29
  return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
  };
31
  }(
32
- {"Permission denied":"","Settings saved":"","PO file used as template. This will be renamed to %s on first save":"","Empty or invalid %s file":"","%s file has no header":"","Failed to compile MO file with built-in compiler":"","Translation options":"","Loco Translate":"","Settings":"","File download failed":"","Some files missing":"","POT file not writable":"","PO file not writable":"","MO file not writable":"","MO file not found":"","Folder not writable":"","Failed to compile MO file with %s, check your settings":"","Package not found called %s":"","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","Cannot create MO file":"","Cannot overwrite MO file":"","Failed to write MO file":"","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":"","Translation":"","File check":"","File system permissions for %s":"","Back":"","Get help":"","OK":"OK","Loco may not work as expected":"","Configure Loco Translate":"","Compiling MO files":"","Use built-in MO compiler.":"","Use external command:":"","Enter path to msgfmt on server":"","Generate hash tables":"","Backing up PO files":"","Number of backups to keep of each file:":"","Save settings":"","Switch to...":"","Core":"","Error":"Fout","Warning":"Waarschuwing","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","Loco, Translation Management":"Loco, vertalingsbeheer","Manage translations":"Beheer vertalingen","Unknown language":"Onbekende taal","Some files not writable":"Sommige bestanden hebben geen schrijfrechten","\"%s\" folder not writable":"Map \"%s\" heeft geen schrijfrechten","User does not have permission to manage translations":"Gebruik heeft geen rechten om vertalingen te beheren","Invalid data posted to server":"Ongeldige gegevens op server","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\".","No strings could be extracted from source files":"Er konden geen te vertalen teksten uit de bronbestanden gehaald worden","Packages":"Pakketten","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","Template file":"Sjabloonbestand","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"}
33
  );
3
  * Project: loco.js conversion
4
  * Release: Working copy
5
  * Locale: nl_BE, Dutch (Belgium)
6
+ * Exported at: Mon, 09 Jun 2014 18:07:30 +0100
7
  */
8
  loco = window.loco||{}, loco.t = function( pairs ){
9
 
10
+ // named plural forms
11
  var pluralForms = ["one","other"];
12
 
13
  // calc numeric index of a plural form (0-1)
29
  return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
  };
31
  }(
32
+ {"Permission denied":"","Settings saved":"","PO file used as template. This will be renamed to %s on first save":"","Empty or invalid %s file":"","%s file has no header":"","Failed to compile MO file with built-in compiler":"","Translation options":"","Loco Translate":"","Settings":"","File download failed":"","Some files missing":"","POT file not writable":"","PO file not writable":"","MO file not writable":"","MO file not found":"","Folder not writable":"","Folder not found":"","Failed to compile MO file with %s, check your settings":"","Package not found called %s":"","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","Cannot create MO file":"","Cannot overwrite MO file":"","Failed to write MO file":"","No source files in this package, nothing to sync":"","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":"","other":""},"1 obsolete string removed":{"one":"","other":""},"Your changes will be lost if you continue without saving":"","Source text":"","%s translation":"","Comments":"","Context":"","Translation":"","File check":"","File system permissions for %s":"","Back":"","Get help":"","OK":"OK","Loco may not work as expected":"","Configure Loco Translate":"","Compiling MO files":"","Use built-in MO compiler.":"","Use external command:":"","Enter path to msgfmt on server":"","Generate hash tables":"","Backing up PO files":"","Number of backups to keep of each file:":"","Experimental features":"","Enable Wordpress core translations":"","Save settings":"","Switch to...":"","create in <code>%s<\/code>":"","create in global languages directory":"","Core":"","Error":"Fout","Warning":"Waarschuwing","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","Loco, Translation Management":"Loco, vertalingsbeheer","Manage translations":"Beheer vertalingen","Unknown language":"Onbekende taal","Some files not writable":"Sommige bestanden hebben geen schrijfrechten","\"%s\" folder not writable":"Map \"%s\" heeft geen schrijfrechten","User does not have permission to manage translations":"Gebruik heeft geen rechten om vertalingen te beheren","Invalid data posted to server":"Ongeldige gegevens op server","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\".","No strings could be extracted from source files":"Er konden geen te vertalen teksten uit de bronbestanden gehaald worden","Packages":"Pakketten","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","Template file":"Sjabloonbestand","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"}
33
  );
pub/js/lang/loco-translate-nl_NL.js CHANGED
@@ -3,11 +3,11 @@
3
  * Project: loco.js conversion
4
  * Release: Working copy
5
  * Locale: nl_NL, Dutch
6
- * Exported at: Wed, 12 Mar 2014 10:16:48 +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)
@@ -29,5 +29,5 @@ loco = window.loco||{}, loco.t = function( pairs ){
29
  return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
  };
31
  }(
32
- {"Permission denied":"","Settings saved":"","PO file used as template. This will be renamed to %s on first save":"","Empty or invalid %s file":"","%s file has no header":"","Failed to compile MO file with built-in compiler":"","Translation options":"","Loco Translate":"","Settings":"","File download failed":"","Some files missing":"","POT file not writable":"","PO file not writable":"","MO file not writable":"","MO file not found":"","Folder not writable":"","Failed to compile MO file with %s, check your settings":"","Package not found called %s":"","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","Cannot create MO file":"","Cannot overwrite MO file":"","Failed to write MO file":"","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":"","Translation":"","File check":"","File system permissions for %s":"","Back":"","Get help":"","OK":"OK","Loco may not work as expected":"","Configure Loco Translate":"","Compiling MO files":"","Use built-in MO compiler.":"","Use external command:":"","Enter path to msgfmt on server":"","Generate hash tables":"","Backing up PO files":"","Number of backups to keep of each file:":"","Save settings":"","Switch to...":"","Core":"","Error":"Fout","Warning":"Waarschuwing","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","Loco, Translation Management":"Loco, vertalingsbeheer","Manage translations":"Beheer vertalingen","Unknown language":"Onbekende taal","Some files not writable":"Sommige bestanden hebben geen schrijfrechten","\"%s\" folder not writable":"Map \"%s\" heeft geen schrijfrechten","User does not have permission to manage translations":"Gebruik heeft geen rechten om vertalingen te beheren","Invalid data posted to server":"Ongeldige gegevens op server","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\".","No strings could be extracted from source files":"Er konden geen te vertalen teksten uit de bronbestanden gehaald worden","Packages":"Pakketten","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","Template file":"Sjabloonbestand","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"}
33
  );
3
  * Project: loco.js conversion
4
  * Release: Working copy
5
  * Locale: nl_NL, Dutch
6
+ * Exported at: Mon, 09 Jun 2014 18:07:31 +0100
7
  */
8
  loco = window.loco||{}, loco.t = function( pairs ){
9
 
10
+ // named plural forms
11
  var pluralForms = ["one","other"];
12
 
13
  // calc numeric index of a plural form (0-1)
29
  return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
  };
31
  }(
32
+ {"Permission denied":"","Settings saved":"","PO file used as template. This will be renamed to %s on first save":"","Empty or invalid %s file":"","%s file has no header":"","Failed to compile MO file with built-in compiler":"","Translation options":"","Loco Translate":"","Settings":"","File download failed":"","Some files missing":"","POT file not writable":"","PO file not writable":"","MO file not writable":"","MO file not found":"","Folder not writable":"","Folder not found":"","Failed to compile MO file with %s, check your settings":"","Package not found called %s":"","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","Cannot create MO file":"","Cannot overwrite MO file":"","Failed to write MO file":"","No source files in this package, nothing to sync":"","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":"","other":""},"1 obsolete string removed":{"one":"","other":""},"Your changes will be lost if you continue without saving":"","Source text":"","%s translation":"","Comments":"","Context":"","Translation":"","File check":"","File system permissions for %s":"","Back":"","Get help":"","OK":"OK","Loco may not work as expected":"","Configure Loco Translate":"","Compiling MO files":"","Use built-in MO compiler.":"","Use external command:":"","Enter path to msgfmt on server":"","Generate hash tables":"","Backing up PO files":"","Number of backups to keep of each file:":"","Experimental features":"","Enable Wordpress core translations":"","Save settings":"","Switch to...":"","create in <code>%s<\/code>":"","create in global languages directory":"","Core":"","Error":"Fout","Warning":"Waarschuwing","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","Loco, Translation Management":"Loco, vertalingsbeheer","Manage translations":"Beheer vertalingen","Unknown language":"Onbekende taal","Some files not writable":"Sommige bestanden hebben geen schrijfrechten","\"%s\" folder not writable":"Map \"%s\" heeft geen schrijfrechten","User does not have permission to manage translations":"Gebruik heeft geen rechten om vertalingen te beheren","Invalid data posted to server":"Ongeldige gegevens op server","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\".","No strings could be extracted from source files":"Er konden geen te vertalen teksten uit de bronbestanden gehaald worden","Packages":"Pakketten","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","Template file":"Sjabloonbestand","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"}
33
  );
pub/js/lang/loco-translate-ru_RU.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Loco js export: JavaScript function
3
+ * Project: loco.js conversion
4
+ * Release: Working copy
5
+ * Locale: ru_RU, Russian
6
+ * Exported at: Mon, 09 Jun 2014 18:07:31 +0100
7
+ */
8
+ loco = window.loco||{}, loco.t = function( pairs ){
9
+
10
+ // named plural forms
11
+ var pluralForms = ["one","few","many"];
12
+
13
+ // calc numeric index of a plural form (0-2)
14
+ function pluralIndex( n ){
15
+ return Number( (n%10==1 && n%100!=11 ? 0 : n%10 >= 2 && n%10<=4 &&(n%100<10||n%100 >= 20)? 1 : 2) );
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
+ {"Folder not found":"","No source files in this package, nothing to sync":"","Already up to date with %s":"","Already up to date with source code":"","Source text":"","%s translation":"","Comments":"","Context":"","Number of backups to keep of each file:":"","Experimental features":"","Enable Wordpress core translations":"","create in <code>%s<\/code>":"","create in global languages directory":"","Error":"\u041e\u0448\u0438\u0431\u043a\u0430","Warning":"\u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435","OK":"\u041e\u041a","Permission denied":"\u0414\u043e\u0441\u0442\u0443\u043f \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d","Settings saved":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b","New PO file":"\u041d\u043e\u0432\u044b\u0439 \u0420\u041e \u0444\u0430\u0439\u043b","You must specify a valid locale for a new PO file":"\u0423\u043a\u0430\u0436\u0438\u0442\u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0443\u044e \u043b\u043e\u043a\u0430\u043b\u044c \u0434\u043b\u044f \u043d\u043e\u0432\u043e\u0433\u043e \u0420\u041e \u0444\u0430\u0439\u043b\u0430","No translatable strings found":"\u041d\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u043e \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430","Cannot create a PO file.":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0420\u041e \u0444\u0430\u0439\u043b","PO file already exists with locale %s":"PO \u0444\u0430\u0439\u043b \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u043b\u043e\u043a\u0430\u043b\u0438 %s","PO file used as template. This will be renamed to %s on first save":"PO \u0444\u0430\u0439\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0448\u0430\u0431\u043b\u043e\u043d. \u041e\u043d \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d \u0432 %s \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u043d\u0438\u0438.","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"\u0424\u0430\u0439\u043b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u0418\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c","%s file is empty":"%s \u0444\u0430\u0439\u043b \u043f\u0443\u0441\u0442","Run Sync to update from source code":"\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430","No strings could be extracted from source code":"\u041d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430","Run Sync to update from %s":"\u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0437 ","Source code has been modified, run Sync to update POT":"\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0420\u041e\u0422","POT has been modified since PO file was saved, run Sync to update":"\u0420\u041e\u0422 \u0431\u044b\u043b \u0438\u0437\u043c\u0435\u043d\u0451\u043d \u043f\u043e\u0441\u043b\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0420\u041e. \u0412\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u043b\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f","Bad file path":"\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0443\u0442\u044c \u043a \u0444\u0430\u0439\u043b\u0443","Empty or invalid %s file":"\u041f\u0443\u0441\u0442\u043e\u0439, \u0438\u043b\u0438 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d\u043d\u044b\u0439 %s \u0444\u0430\u0439\u043b","%s file has no header":"%s \u0444\u0430\u0439\u043b \u0431\u0435\u0437 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430","New template":"\u041d\u043e\u0432\u044b\u0439 \u0448\u0430\u0431\u043b\u043e\u043d","New language":"\u041d\u043e\u0432\u044b\u0439 \u044f\u0437\u044b\u043a","%s%% translated":"%s%% \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043e","1 string":{"one":"1 \u0441\u0442\u0440\u043e\u043a\u0430","few":"%s \u0441\u0442\u0440\u043e\u043a(\u0438)","many":null},"%s fuzzy":"\u043d\u0435\u0442\u043e\u0447\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434","%s untranslated":"%s \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043d\u043e","Failed to compile MO file with built-in compiler":"\u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u041c\u041e \u0444\u0430\u0439\u043b\u0430 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c","Loco, Translation Management":"Loco, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430\u043c\u0438","Manage translations":"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430\u043c\u0438","Translation options":"\u041e\u043f\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430","Loco Translate":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a Loco","Settings":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438","File download failed":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0430\u0439\u043b\u0430","Unknown language":"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 \u044f\u0437\u044b\u043a","Some files not writable":"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438","Some files missing":"\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0430\u0439\u043b\u044b \u0441 \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438, \u0438\u043b\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442","\"%s\" folder not writable":"\"%s\" \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438","POT file not writable":"\u0420\u041e\u0422 \u0444\u0430\u0439\u043b \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438","PO file not writable":"\u0420\u041e \u0444\u0430\u0439\u043b \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438","MO file not writable":"\u041c\u041e \u0444\u0430\u0439\u043b \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438","MO file not found":"\u041c\u041e \u0444\u0430\u0439\u043b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d","Folder not writable":"\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438","User does not have permission to manage translations":"\u0423 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430\u043c\u0438","Failed to compile MO file with %s, check your settings":"\u041e\u0448\u0438\u0431\u043a\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u041c\u041e \u0444\u0430\u0439\u043b\u0430 \u0441 %s . \u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","Invalid data posted to server":"\u041d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u044b \u043d\u0435\u0432\u0435\u0440\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435","Package not found called %s":"\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d \u043f\u0430\u043a\u0435\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c ","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"Web \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u0443\u044e \u043a\u043e\u043f\u0438\u044e \u0432 \"%s\". \u0418\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Web \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \"%s\" \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432 \"%s\". \u0418\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u0432\u0440\u0443\u0447\u043d\u0443\u044e","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Web \u0441\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0435 \"%s\" . \u0418\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"%s \u0444\u0430\u0439\u043b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440. \u0418\u0441\u043f\u0440\u0430\u0432\u044c\u0442\u0435 \u043f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0438\u043b\u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u0435 \u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \"%s\/%s\".","Cannot create MO file":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u041c\u041e \u0444\u0430\u0439\u043b","Cannot overwrite MO file":"\u041d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u041c\u041e \u0444\u0430\u0439\u043b","Failed to write MO file":"\u041e\u0448\u0438\u0431\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u0438 \u041c\u041e \u0444\u0430\u0439\u043b\u0430","No strings could be extracted from source files":"\u041d\u0435\u0442 \u0441\u0442\u0440\u043e\u043a \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430","Unknown error":"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430","PO file saved":"\u0420\u041e \u0444\u0430\u0439\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0451\u043d","and MO file compiled":"\u0438 \u041c\u041e \u0444\u0430\u0439\u043b \u0441\u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u043e\u0432\u0430\u043d","Merged from %s":"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043e \u0441 %s","Merged from source code":"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0435\u043d\u043e \u0441 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c","1 new string added":{"one":"1 \u043d\u043e\u0432\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430","few":"%s \u043d\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043e","many":null},"1 obsolete string removed":{"one":"1\u0441\u0442\u0440\u043e\u043a\u0430 \u0443\u0434\u0430\u043b\u0435\u043d\u0430","few":"%s \u0441\u0442\u0440\u043e\u043a\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u043e","many":null},"Your changes will be lost if you continue without saving":"\u0418\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u044b, \u0435\u0441\u043b\u0438 \u0412\u044b \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0435\u0441\u044c","Translation":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434","Packages":"\u041f\u0430\u043a\u0435\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u0432","File check":"\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0444\u0430\u0439\u043b\u0430","File system permissions for %s":"\u041f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043b\u044f ","Back":"\u041d\u0430\u0437\u0430\u0434","Get help":"\u041f\u043e\u043c\u043e\u0449\u044c","Package details":"\u0414\u0435\u0442\u0430\u043b\u0438 \u043f\u0430\u043a\u0435\u0442\u0430\n\n","Translations (PO)":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434\u044b (\u0420\u041e)\n","Template (POT)":"\u0428\u0430\u0431\u043b\u043e\u043d\u044b (\u0420\u041e\u0422)\n","File permissions":"\u041f\u0440\u0430\u0432\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0444\u0430\u0439\u043b\u0443","1 language":{"one":"1 \u044f\u0437\u044b\u043a","few":"%u \u044f\u0437\u044b\u043a\u0430(\u043e\u0432)","many":null},"Updated":"\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u043e","Powered by":"\u041f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e","Loco may not work as expected":"\u041f\u043b\u0430\u0433\u0438\u043d Loco \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u043a\u0430\u043a \u043e\u0436\u0438\u0434\u0430\u043b\u043e\u0441\u044c","Configure Loco Translate":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 Loco","Compiling MO files":"\u041a\u043e\u043c\u043f\u0442\u043b\u044f\u0446\u0438\u044f \u041c\u041e \u0444\u0430\u0439\u043b\u043e\u0432","Use built-in MO compiler.":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u041c\u041e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440","Use external command:":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443:","Enter path to msgfmt on server":"\u041f\u0443\u0442\u044c \u043a msgfmt \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435","Generate hash tables":"\u0413\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c hash \u0442\u0430\u0431\u043b\u0438\u0446\u044b","Backing up PO files":"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0435 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0420\u041e \u0444\u0430\u0439\u043b\u043e\u0432","Save settings":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438","Template file":"\u0424\u0430\u0439\u043b \u0448\u0430\u0431\u043b\u043e\u043d\u0430","Switch to...":"\u041f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430...","never":"\u043d\u0438\u043a\u043e\u0433\u0434\u0430","Save":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c","Download":"\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c","Sync":"\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u044f","Revert":"\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f","Add":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c","Del":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c","Fuzzy":"\u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u043a\u0430\u043a \u043d\u0435\u0442\u043e\u0447\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434","Filter translations":"\u041f\u043e\u0438\u0441\u043a \u0444\u0440\u0430\u0437\u044b \u043f\u043e \u0444\u0438\u043b\u044c\u0442\u0440\u0443","Help":"\u041f\u043e\u043c\u043e\u0449\u044c","Initialize new translations in %s":"\u041d\u0430\u0447\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 %s","Select from common languages":"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u044f\u0437\u044b\u043a \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430","or enter any language code":"\u0438\u043b\u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u043a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430","Start translating":"\u041d\u0430\u0447\u0430\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434","New version available":"\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f","Upgrade to version %s of Loco Translate":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c Loco Translate \u0434\u043e \u0432\u0435\u0440\u0441\u0438\u0438 %s","Select a plugin or theme to translate":"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0438\u043b\u0438 \u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 ","Themes":"\u0422\u0435\u043c\u044b","Plugins":"\u041f\u043b\u0430\u0433\u0438\u043d\u044b","Core":"\u042f\u0434\u0440\u043e"}
33
+ );
pub/js/lang/loco-translate-sv_SE.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Loco js export: JavaScript function
3
+ * Project: loco.js conversion
4
+ * Release: Working copy
5
+ * Locale: sv_SE, Swedish
6
+ * Exported at: Mon, 09 Jun 2014 18:07:31 +0100
7
+ */
8
+ loco = window.loco||{}, loco.t = function( pairs ){
9
+
10
+ // named plural forms
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
+ {"Source text":"","%s translation":"","Comments":"","Context":"","create in <code>%s<\/code>":"","Error":"Fel","Warning":"Varning","OK":"OK","Permission denied":"Beh\u00f6righet saknas","Settings saved":"Inst\u00e4llningar sparade","New PO file":"Ny PO-fil","You must specify a valid locale for a new PO file":"Du m\u00e5ste ange en giltig landskod f\u00f6r en ny PO-fil","No translatable strings found":"Inga \u00f6vers\u00e4ttbara str\u00e4ngar hittades","Cannot create a PO file.":"Kunde ej skapa en PO-fil.","PO file already exists with locale %s":"PO-fil finns redan med landskod %s","PO file used as template. This will be renamed to %s on first save":"PO-fil anv\u00e4nds som mall. Den kommer att byta namn till %s n\u00e4r du v\u00e4ljer att spara","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Fil kunde ej skapas automatiskt. \u00c4ndra filr\u00e4ttigheter eller anv\u00e4nd Ladda ner ist\u00e4llet f\u00f6r Spara","%s file is empty":"%s-filen \u00e4r tom","Run Sync to update from source code":"Anv\u00e4nd Synka f\u00f6r att uppdatera fr\u00e5n k\u00e4llkoden","No strings could be extracted from source code":"Inga str\u00e4ngar kunde hittas fr\u00e5n k\u00e4llkoden","Run Sync to update from %s":"Anv\u00e4nd Synka f\u00f6r att uppdatera fr\u00e5n %s","Source code has been modified, run Sync to update POT":"K\u00e4llkod har \u00e4ndrats, anv\u00e4nd Synka f\u00f6r att uppdatera POT","POT has been modified since PO file was saved, run Sync to update":"POT har \u00e4ndrats sedan PO-filen sparades, anv\u00e4nd Synka f\u00f6r att uppdatera","Bad file path":"Ogiltig s\u00f6kv\u00e4g","Empty or invalid %s file":"Tom eller ogiltigt %s-fil","%s file has no header":"%s-filen saknar header","New template":"Ny mall","New language":"Nytt spr\u00e5k","%s%% translated":"%s%% \u00f6versatt","1 string":{"one":"1 str\u00e4ng","other":"%s str\u00e4ngar"},"%s fuzzy":"%s oklar","%s untranslated":"%s ej \u00f6versatta","Failed to compile MO file with built-in compiler":"Det gick ej att sammanst\u00e4lla MO-fil med inbyggd kompilator","Loco, Translation Management":"Loco, Translation Management","Manage translations":"Spr\u00e5kfiler","Translation options":"Inst\u00e4llningar","Loco Translate":"\u00d6vers\u00e4ttningar","Settings":"Inst\u00e4llningar","File download failed":"Nedladdning misslyckades","Unknown language":"Ok\u00e4nt spr\u00e5k","Some files not writable":"Vissa filer \u00e4r ej skrivbara","Some files missing":"Vissa filer saknas","\"%s\" folder not writable":"Mappen \"%s\" \u00e4r ej skrivbar","POT file not writable":"POT-filen \u00e4r ej skrivbar","PO file not writable":"PO-filen \u00e4r ej skrivbar","MO file not writable":"MO-filen \u00e4r ej skrivbar","MO file not found":"MO-fil hittades ej","Folder not writable":"Mappen \u00e4r ej skrivbar","Folder not found":"Mappen hittades ej","User does not have permission to manage translations":"Anv\u00e4ndaren saknar beh\u00f6righet att hantera \u00f6vers\u00e4ttningar","Failed to compile MO file with %s, check your settings":"Det gick ej sammanst\u00e4lla MO-filen med %s , kontrollera dina inst\u00e4llningar","Invalid data posted to server":"Ogiltig data skickades till servern","Package not found called %s":"Paket %s ej hittat","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"Webbservern kunde ej skapa s\u00e4kerhetskopior i \"%s\". \u00c4ndra filr\u00e4ttigheter eller inaktivera s\u00e4kerhetskopior i inst\u00e4llningarna","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Webbservern kunde ej skapa mappen \"%s\" i \"%s\". \u00c4ndra filr\u00e4ttigheter eller skapa den manuellt.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Webbservern kunde ej skapa filer i mappen \"%s\". \u00c4ndra filr\u00e4ttigheter eller anv\u00e4nd nedladdningsfunktionen.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"%s-filen \u00e4r ej skrivbar av webbservern. \u00c4ndra filr\u00e4ttigheter eller ladda ner och kopiera till \"%s\/%s\".","Cannot create MO file":"Kunde ej skapa MO-fil","Cannot overwrite MO file":"Kunde ej skriva \u00f6ver MO-fil","Failed to write MO file":"Kunde ej skapa MO-fil","No source files in this package, nothing to sync":"Inga k\u00e4llfiler hittades till denna spr\u00e5kfil, ingenting att synkronisera","No strings could be extracted from source files":"Inga str\u00e4ngar kunde hittas fr\u00e5n k\u00e4llfiler","Unknown error":"Ok\u00e4nt fel","PO file saved":"PO-fil sparad","and MO file compiled":"och MO-fil sammanst\u00e4lld","Merged from %s":"Sammanslagen fr\u00e5n %s","Merged from source code":"Sammanslagen fr\u00e5n k\u00e4llkod","Already up to date with %s":"Redan aktuell med %s","Already up to date with source code":"Redan aktuell med k\u00e4llkod","1 new string added":{"one":"1 ny str\u00e4ng tillagd","other":"%s nya str\u00e4ngar tillagda"},"1 obsolete string removed":{"one":"1 f\u00f6r\u00e5ldrad str\u00e4ng togs bort","other":"%s f\u00f6r\u00e5ldrade str\u00e4ngar togs bort"},"Your changes will be lost if you continue without saving":"Dina \u00e4ndringar kommer att g\u00e5 f\u00f6rlorade om du forts\u00e4tter utan att spara","Translation":"\u00d6vers\u00e4ttning","Packages":"Spr\u00e5kfiler","File check":"Filr\u00e4ttigheter","File system permissions for %s":"Filsystem r\u00e4ttigheter f\u00f6r %s","Back":"Tillbaka","Get help":"Hj\u00e4lp","Package details":"Beskrivning","Translations (PO)":"\u00d6vers\u00e4ttningar (PO)","Template (POT)":"Mall (POT)","File permissions":"Filr\u00e4ttigheter","1 language":{"one":"1 spr\u00e5k","other":"%u spr\u00e5k"},"Updated":"Uppdaterad","Powered by":"Drivs av","Loco may not work as expected":"Loco kanske ej fungerar som v\u00e4ntat","Configure Loco Translate":"Konfigurera Loco Translate","Compiling MO files":"Sammanst\u00e4lla MO-filer","Use built-in MO compiler.":"Anv\u00e4nd inbyggd MO-kompilator.","Use external command:":"Anv\u00e4nd externt kommando:","Enter path to msgfmt on server":"Skriv in s\u00f6kv\u00e4g till msgfmt p\u00e5 servern","Generate hash tables":"Generera hashtabeller","Backing up PO files":"S\u00e4kerhetskopiera PO-filer","Number of backups to keep of each file:":"Antal s\u00e4kerhetskopior att beh\u00e5lla f\u00f6r varje fil:","Experimental features":"Experimentella funktioner","Enable Wordpress core translations":"Aktivera Wordpress \u00f6vers\u00e4ttningar","Save settings":"Spara inst\u00e4llningar","Template file":"Mallfil","Switch to...":"V\u00e4xla till...","never":"aldrig","Save":"Spara","Download":"Ladda ner","Sync":"Synka","Revert":"\u00c5terg\u00e5","Add":"L\u00e4gg till","Del":"Radera","Fuzzy":"Oklar","Filter translations":"S\u00f6k \u00f6vers\u00e4ttningar","Help":"Hj\u00e4lp","Initialize new translations in %s":"Skapa nya \u00f6vers\u00e4ttningar i %s","Select from common languages":"V\u00e4lj bland vanliga spr\u00e5k","or enter any language code":"eller skriv valfri landskod","create in global languages directory":"skapa i den globala spr\u00e5k katalogen","Start translating":"B\u00f6rja \u00f6vers\u00e4tta","New version available":"Ny version tillg\u00e4nglig","Upgrade to version %s of Loco Translate":"Uppdatera till version %s av Loco Translate","Select a plugin or theme to translate":"V\u00e4lj ett till\u00e4gg eller tema att \u00f6vers\u00e4tta","Themes":"Teman","Plugins":"Till\u00e4gg","Core":"Wordpress"}
33
+ );
pub/js/lang/loco-translate-tr_TR.js CHANGED
@@ -3,16 +3,16 @@
3
  * Project: loco.js conversion
4
  * Release: Working copy
5
  * Locale: tr_TR, Turkish
6
- * Exported at: Wed, 12 Mar 2014 10:16:48 +0000
7
  */
8
  loco = window.loco||{}, loco.t = function( pairs ){
9
 
10
- // named plural forms according to Unicode
11
  var pluralForms = ["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
@@ -29,5 +29,5 @@ loco = window.loco||{}, loco.t = function( pairs ){
29
  return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
  };
31
  }(
32
- {"Permission denied":"","PO file used as template. This will be renamed to %s on first save":"","Empty or invalid %s file":"","%s file has no header":"","Translation options":"","Loco Translate":"","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","Loco may not work as expected":"","Backing up PO files":"","Number of backups to keep of each file:":"","Error":"Hata","Warning":"Uyar\u0131","OK":"TAMAM","Settings saved":"Ayarlar sakland\u0131","New PO file":"Yeni PO Dosyas\u0131","You must specify a valid locale for a new PO file":"Yeni PO dosyas\u0131 i\u00e7in ge\u00e7erli bir locale de\u011feri belirtmek zorundas\u0131n\u0131z","No translatable strings found":"\u00c7evrilebilir c\u00fcmle bulunamad\u0131","Cannot create a PO file.":"Bir PO dosyas\u0131 olu\u015fturulam\u0131yor.","PO file already exists with locale %s":"PO dosyas\u0131 %s locale de\u011feri ile zaten mevcut","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Dosya otomatik olarak olu\u015fturulam\u0131yor. Dosya izinlerini tamir edin ya da Saklama yerine \u0130ndirin.","%s file is empty":"%s dosyas\u0131 bo\u015f","Run Sync to update from source code":"Kaynak dosyas\u0131ndan g\u00fcncelleme i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r","No strings could be extracted from source code":"Kaynak kodundan herhangi c\u00fcmle \u00e7\u0131kar\u0131lamad\u0131","Run Sync to update from %s":"%s \u00fczerinden g\u00fcncelleme i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r","Source code has been modified, run Sync to update POT":"Kaynak dosyas\u0131 de\u011fi\u015ftirilmi\u015f, POT g\u00fcncellemesi i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r\u0131n","POT has been modified since PO file was saved, run Sync to update":"PO dosyas\u0131 en son sakland\u0131\u011f\u0131ndan beri POT de\u011fi\u015fikli\u011fe u\u011fram\u0131\u015f, g\u00fcncelleme i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r\u0131n.","Bad file path":"Uygun olmayan dosya yolu","New template":"Yeni \u015fablon","New language":"Yeni dil","%s%% translated":"%s%% \u00e7evrildi","1 string":{"other":"1 c\u00fcmle"},"%s fuzzy":"%s bulan\u0131k","%s untranslated":"%s \u00e7evrilmemi\u015f","Failed to compile MO file with built-in compiler":"Dahili derleyici ile MO derlemesinde hata","Loco, Translation Management":"Loco, \u00c7evri Y\u00f6netimi","Manage translations":"\u00c7evrileri Y\u00f6net","Settings":"Ayarlar","File download failed":"Dosya indirme hatas\u0131","Unknown language":"Bilinmeyen dil","Some files not writable":"Baz\u0131 dosyalar yaz\u0131labilir de\u011fil","Some files missing":"Baz\u0131 dosyalar eksik","\"%s\" folder not writable":"\"%s\" dizini yaz\u0131labilir de\u011fil","POT file not writable":"POT dosyas\u0131 yaz\u0131labilir de\u011fil","PO file not writable":"PO dosyas\u0131 yaz\u0131labilir de\u011fil","MO file not writable":"MO dosyas\u0131 yaz\u0131labilir de\u011fil","MO file not found":"MO dosyas\u0131 bulunamad\u0131","Folder not writable":"Dizin yaz\u0131labilir de\u011fil","User does not have permission to manage translations":"Kullan\u0131c\u0131 \u00e7evrileri y\u00f6netmeye yetkili de\u011fil","Failed to compile MO file with %s, check your settings":"%s ile MO dosyas\u0131 derlemede hata, ayarlar\u0131n\u0131z\u0131 denetleyin","Invalid data posted to server":"Sunucuya g\u00f6nderili veri ge\u00e7ersiz","Package not found called %s":"%s isimli paket bulunamad\u0131","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Web sunucusu \"%s\" dizini olu\u015fturam\u0131yor \"%s\" i\u00e7inde. Dosya izinlerini tamir edin ya da elle olu\u015fturun.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Web sunucusu \"%s\" dizini i\u00e7inde dosya olu\u015fturam\u0131yor. Dosya izinlerini tamir edin ya da indirme fonksiyonunu kullan\u0131n.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"%s dosyas\u0131 web sunucu taraf\u0131ndan yaz\u0131lamaz durumda. Dosya izinlerini tamir edin ya da indirip \"%s\/%s\" yoluna kopyalay\u0131n.","Cannot create MO file":"MO dosyas\u0131 olu\u015fturulam\u0131yor","Cannot overwrite MO file":"MO dosyas\u0131 \u00fczerine yaz\u0131lam\u0131yor","Failed to write MO file":"MO dosyas\u0131 yazmada hata","No strings could be extracted from source files":"Kaynak dosyalar\u0131ndan herhangi c\u00fcmle \u00e7\u0131kart\u0131lamad\u0131","Unknown error":"Bilinmeyen hata","PO file saved":"PO dosyas\u0131 sakland\u0131","and MO file compiled":"ve MO dosyas\u0131 derlendi","Merged from %s":"%s \u00fczerinden birle\u015ftirildi","Merged from source code":"Kaynak kodtan birle\u015ftirildi","Already up to date with %s":"%s ile zaten g\u00fcncel","Already up to date with source code":"Kaynak kod ile zaten g\u00fcncel","1 new string added":{"other":"1 yeni c\u00fcmle eklendi"},"1 obsolete string removed":{"other":"1 kullan\u0131md\u0131\u015f\u0131 c\u00fcmle kald\u0131r\u0131ld\u0131"},"Your changes will be lost if you continue without saving":"Saklamadan devam ederseniz de\u011fi\u015fiklikleriniz kaybolacak","Translation":"\u00c7evri","Packages":"Paketler","File check":"Dosya denetimi","File system permissions for %s":"%s i\u00e7in dosya sistemi izinleri","Back":"Geri","Get help":"Yard\u0131m al","Package details":"Paket detaylar\u0131","Translations (PO)":"\u00c7evriler (PO)","Template (POT)":"\u015eablon (POT)","File permissions":"Dosya izinleri","1 language":{"other":"1 dil"},"Updated":"G\u00fcncel","Powered by":"Destekleyici:","Configure Loco Translate":"Loco Translate'i konfig\u00fcre et","Compiling MO files":"MO dosyalar\u0131 derleme","Use built-in MO compiler.":"Dahili MO derleyici kullan.","Use external command:":"Harici komut kullan:","Enter path to msgfmt on server":"Sunucudaki msgfmt'ye yol gir","Generate hash tables":"Hash tablolar\u0131 \u00fcret","Save settings":"Ayarlar\u0131 sakla","Template file":"\u015eablon dosyas\u0131","Switch to...":"Ge\u00e7:","never":"asla","Save":"Sakla","Download":"\u0130ndir","Sync":"Senkr.","Revert":"S\u0131f\u0131rla","Add":"Ekle","Del":"Sil","Fuzzy":"Bulan\u0131k","Filter translations":"\u00c7evrileri filtrele","Help":"Yard\u0131m","Initialize new translations in %s":"%s i\u00e7in yeni \u00e7evriler ba\u015flat","Select from common languages":"Yayg\u0131n diller aras\u0131ndan se\u00e7","or enter any language code":"veya herhangi dil kodu gir","Start translating":"\u00c7evriye Ba\u015fla","New version available":"Yeni versiyon mevcut","Upgrade to version %s of Loco Translate":"Loco Translate'in %s versiyonuna y\u00fckselt","Select a plugin or theme to translate":"\u00c7evirisini yapmak i\u00e7in bir eklenti ya da tema se\u00e7","Themes":"Temalar","Plugins":"Eklentiler","Core":"\u00c7ekirdek"}
33
  );
3
  * Project: loco.js conversion
4
  * Release: Working copy
5
  * Locale: tr_TR, Turkish
6
+ * Exported at: Mon, 09 Jun 2014 18:07:31 +0100
7
  */
8
  loco = window.loco||{}, loco.t = function( pairs ){
9
 
10
+ // named plural forms
11
  var pluralForms = ["other"];
12
 
13
+ // calc numeric index of a plural form (0-0)
14
  function pluralIndex( n ){
15
+ return Number( 0 );
16
  }
17
 
18
  // expose public t() function
29
  return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
30
  };
31
  }(
32
+ {"Permission denied":"","PO file used as template. This will be renamed to %s on first save":"","Empty or invalid %s file":"","%s file has no header":"","Translation options":"","Loco Translate":"","Folder not found":"","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","No source files in this package, nothing to sync":"","Source text":"","%s translation":"","Comments":"","Context":"","Loco may not work as expected":"","Backing up PO files":"","Number of backups to keep of each file:":"","Experimental features":"","Enable Wordpress core translations":"","create in <code>%s<\/code>":"","create in global languages directory":"","Error":"Hata","Warning":"Uyar\u0131","OK":"TAMAM","Settings saved":"Ayarlar sakland\u0131","New PO file":"Yeni PO Dosyas\u0131","You must specify a valid locale for a new PO file":"Yeni PO dosyas\u0131 i\u00e7in ge\u00e7erli bir locale de\u011feri belirtmek zorundas\u0131n\u0131z","No translatable strings found":"\u00c7evrilebilir c\u00fcmle bulunamad\u0131","Cannot create a PO file.":"Bir PO dosyas\u0131 olu\u015fturulam\u0131yor.","PO file already exists with locale %s":"PO dosyas\u0131 %s locale de\u011feri ile zaten mevcut","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Dosya otomatik olarak olu\u015fturulam\u0131yor. Dosya izinlerini tamir edin ya da Saklama yerine \u0130ndirin.","%s file is empty":"%s dosyas\u0131 bo\u015f","Run Sync to update from source code":"Kaynak dosyas\u0131ndan g\u00fcncelleme i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r","No strings could be extracted from source code":"Kaynak kodundan herhangi c\u00fcmle \u00e7\u0131kar\u0131lamad\u0131","Run Sync to update from %s":"%s \u00fczerinden g\u00fcncelleme i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r","Source code has been modified, run Sync to update POT":"Kaynak dosyas\u0131 de\u011fi\u015ftirilmi\u015f, POT g\u00fcncellemesi i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r\u0131n","POT has been modified since PO file was saved, run Sync to update":"PO dosyas\u0131 en son sakland\u0131\u011f\u0131ndan beri POT de\u011fi\u015fikli\u011fe u\u011fram\u0131\u015f, g\u00fcncelleme i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r\u0131n.","Bad file path":"Uygun olmayan dosya yolu","New template":"Yeni \u015fablon","New language":"Yeni dil","%s%% translated":"%s%% \u00e7evrildi","1 string":{"other":"1 c\u00fcmle"},"%s fuzzy":"%s bulan\u0131k","%s untranslated":"%s \u00e7evrilmemi\u015f","Failed to compile MO file with built-in compiler":"Dahili derleyici ile MO derlemesinde hata","Loco, Translation Management":"Loco, \u00c7evri Y\u00f6netimi","Manage translations":"\u00c7evrileri Y\u00f6net","Settings":"Ayarlar","File download failed":"Dosya indirme hatas\u0131","Unknown language":"Bilinmeyen dil","Some files not writable":"Baz\u0131 dosyalar yaz\u0131labilir de\u011fil","Some files missing":"Baz\u0131 dosyalar eksik","\"%s\" folder not writable":"\"%s\" dizini yaz\u0131labilir de\u011fil","POT file not writable":"POT dosyas\u0131 yaz\u0131labilir de\u011fil","PO file not writable":"PO dosyas\u0131 yaz\u0131labilir de\u011fil","MO file not writable":"MO dosyas\u0131 yaz\u0131labilir de\u011fil","MO file not found":"MO dosyas\u0131 bulunamad\u0131","Folder not writable":"Dizin yaz\u0131labilir de\u011fil","User does not have permission to manage translations":"Kullan\u0131c\u0131 \u00e7evrileri y\u00f6netmeye yetkili de\u011fil","Failed to compile MO file with %s, check your settings":"%s ile MO dosyas\u0131 derlemede hata, ayarlar\u0131n\u0131z\u0131 denetleyin","Invalid data posted to server":"Sunucuya g\u00f6nderili veri ge\u00e7ersiz","Package not found called %s":"%s isimli paket bulunamad\u0131","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Web sunucusu \"%s\" dizini olu\u015fturam\u0131yor \"%s\" i\u00e7inde. Dosya izinlerini tamir edin ya da elle olu\u015fturun.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Web sunucusu \"%s\" dizini i\u00e7inde dosya olu\u015fturam\u0131yor. Dosya izinlerini tamir edin ya da indirme fonksiyonunu kullan\u0131n.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"%s dosyas\u0131 web sunucu taraf\u0131ndan yaz\u0131lamaz durumda. Dosya izinlerini tamir edin ya da indirip \"%s\/%s\" yoluna kopyalay\u0131n.","Cannot create MO file":"MO dosyas\u0131 olu\u015fturulam\u0131yor","Cannot overwrite MO file":"MO dosyas\u0131 \u00fczerine yaz\u0131lam\u0131yor","Failed to write MO file":"MO dosyas\u0131 yazmada hata","No strings could be extracted from source files":"Kaynak dosyalar\u0131ndan herhangi c\u00fcmle \u00e7\u0131kart\u0131lamad\u0131","Unknown error":"Bilinmeyen hata","PO file saved":"PO dosyas\u0131 sakland\u0131","and MO file compiled":"ve MO dosyas\u0131 derlendi","Merged from %s":"%s \u00fczerinden birle\u015ftirildi","Merged from source code":"Kaynak kodtan birle\u015ftirildi","Already up to date with %s":"%s ile zaten g\u00fcncel","Already up to date with source code":"Kaynak kod ile zaten g\u00fcncel","1 new string added":{"other":"1 yeni c\u00fcmle eklendi"},"1 obsolete string removed":{"other":"1 kullan\u0131md\u0131\u015f\u0131 c\u00fcmle kald\u0131r\u0131ld\u0131"},"Your changes will be lost if you continue without saving":"Saklamadan devam ederseniz de\u011fi\u015fiklikleriniz kaybolacak","Translation":"\u00c7evri","Packages":"Paketler","File check":"Dosya denetimi","File system permissions for %s":"%s i\u00e7in dosya sistemi izinleri","Back":"Geri","Get help":"Yard\u0131m al","Package details":"Paket detaylar\u0131","Translations (PO)":"\u00c7evriler (PO)","Template (POT)":"\u015eablon (POT)","File permissions":"Dosya izinleri","1 language":{"other":"1 dil"},"Updated":"G\u00fcncel","Powered by":"Destekleyici:","Configure Loco Translate":"Loco Translate'i konfig\u00fcre et","Compiling MO files":"MO dosyalar\u0131 derleme","Use built-in MO compiler.":"Dahili MO derleyici kullan.","Use external command:":"Harici komut kullan:","Enter path to msgfmt on server":"Sunucudaki msgfmt'ye yol gir","Generate hash tables":"Hash tablolar\u0131 \u00fcret","Save settings":"Ayarlar\u0131 sakla","Template file":"\u015eablon dosyas\u0131","Switch to...":"Ge\u00e7:","never":"asla","Save":"Sakla","Download":"\u0130ndir","Sync":"Senkr.","Revert":"S\u0131f\u0131rla","Add":"Ekle","Del":"Sil","Fuzzy":"Bulan\u0131k","Filter translations":"\u00c7evrileri filtrele","Help":"Yard\u0131m","Initialize new translations in %s":"%s i\u00e7in yeni \u00e7evriler ba\u015flat","Select from common languages":"Yayg\u0131n diller aras\u0131ndan se\u00e7","or enter any language code":"veya herhangi dil kodu gir","Start translating":"\u00c7evriye Ba\u015fla","New version available":"Yeni versiyon mevcut","Upgrade to version %s of Loco Translate":"Loco Translate'in %s versiyonuna y\u00fckselt","Select a plugin or theme to translate":"\u00c7evirisini yapmak i\u00e7in bir eklenti ya da tema se\u00e7","Themes":"Temalar","Plugins":"Eklentiler","Core":"\u00c7ekirdek"}
33
  );
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: timwhitlock
3
  Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, POEdit, productivity
4
  Requires at least: 3.5
5
- Tested up to: 3.9
6
- Stable tag: 1.4.4
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -20,6 +20,8 @@ Features include:
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
 
@@ -29,19 +31,19 @@ Official [Loco](https://localise.biz/) WordPress plugin by <a href="//twitter.co
29
 
30
  1. Unzip all files to the `/wp-content/plugins/loco-translate` directory
31
  2. Log into Wordpress admin and activate the 'Loco Translate' plugin through the 'Plugins' menu
32
- 3. Go to *Tools > Manage Translations* in the left-hand menu to start translating
33
 
34
 
35
  If you want to create new translations for a theme or plugin, follow these steps:
36
 
37
  1. Create a `languages` directory in your plugin or theme's root directory
38
  2. Make the new directory writable by the web server
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
 
46
 
47
  == Frequently Asked Questions ==
@@ -57,6 +59,13 @@ The extraction process looks for Wordpress translation functions with string lit
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
 
@@ -84,7 +93,8 @@ You can configure the path to the `msgfmt` program in the Settings tab.
84
 
85
  = Does it support Windows? =
86
 
87
- At the user end, yes you can access the interface on Windows using Internet Explorer. But Loco Translate does not support Windows versions of PHP, so if your server running Wordpress has a Windows operating system the back end won’t work.
 
88
 
89
 
90
 
@@ -97,6 +107,18 @@ At the user end, yes you can access the interface on Windows using Internet Expl
97
 
98
  == Changelog ==
99
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  = 1.4.4 =
101
  * Fixed bug in prefixing new PO files with text domain based on existing files
102
  * Language file updates
@@ -175,7 +197,7 @@ At the user end, yes you can access the interface on Windows using Internet Expl
175
 
176
  == Upgrade Notice ==
177
 
178
- = 1.4.4 =
179
  * Bug fixes and improvements.
180
 
181
 
@@ -194,4 +216,6 @@ These features are on our todo list. There's no particular timeframe for any of
194
  * Dutch translations courtesy of [Niels Geryl](http://hetwittepaard.be)
195
  * German translations courtesy of [Sebastian König](http://aykutmania.de)
196
  * Turkish translations courtesy of [Abdullah Pazarbaşı](http://abdullahpazarbasi.com)
 
 
197
 
2
  Contributors: timwhitlock
3
  Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, POEdit, productivity
4
  Requires at least: 3.5
5
+ Tested up to: 3.9.1
6
+ Stable tag: 1.4.5
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
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
+ * Support for PO features including comments, references and plural forms
24
+ * Configurable PO file backups
25
 
26
  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>
27
 
31
 
32
  1. Unzip all files to the `/wp-content/plugins/loco-translate` directory
33
  2. Log into Wordpress admin and activate the 'Loco Translate' plugin through the 'Plugins' menu
34
+ 3. Go to *Loco Translate > Manage Translations* in the left-hand menu to start translating
35
 
36
 
37
  If you want to create new translations for a theme or plugin, follow these steps:
38
 
39
  1. Create a `languages` directory in your plugin or theme's root directory
40
  2. Make the new directory writable by the web server
41
+ 3. Find the theme or plugin in the list at *Loco Translate > Manage Translations*
42
  4. Click `+ New language` and follow the on-screen prompts.
43
 
44
  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.
45
 
46
+ Please note that this plugin doesn’t support Windows servers and the editor doesn't fully support MSIE<=8.
47
 
48
 
49
  == Frequently Asked Questions ==
59
 
60
  Using your own custom functions like `myTranslate('Foo')` won't work. Neither will using variables, such as `__( $foo )`.
61
 
62
+ = Why can't I see the translations appearing in my theme/plugin? =
63
+
64
+ All Loco Translate does is manage your translation process and organize your files. There is more to localizing your theme or plugin than just creating the files.
65
+
66
+ Make sure you're familiar with the conventions of [translating Wordpress](http://codex.wordpress.org/Translating_WordPress) and if you think Loco is saving invalid files or putting them in the wrong place, then open a [support ticket](http://wordpress.org/support/plugin/loco-translate).
67
+
68
+
69
 
70
  = Do I need to create a POT file? =
71
 
93
 
94
  = Does it support Windows? =
95
 
96
+ You can access the interface on Windows using Internet Explorer, but version 9 or above is recommended.
97
+ Loco Translate does not support Windows versions of PHP, so if your server running Wordpress has a Windows operating system the back end may not work properly.
98
 
99
 
100
 
107
 
108
  == Changelog ==
109
 
110
+ = 1.4.5 =
111
+ * Support for Domain Path tag
112
+ * Added choice of location when language and package dirs both writable
113
+ * Fixed bug extracting domain from file names
114
+ * Child themes always have their own text domain and don't duplicate parent files
115
+ * Better plural support in po file editor
116
+ * Added experimental support for core packages
117
+ * Tested in WP 3.9.1
118
+ * Added Swedish translations
119
+ * Added Russian translations
120
+ * Added text filter clear button
121
+
122
  = 1.4.4 =
123
  * Fixed bug in prefixing new PO files with text domain based on existing files
124
  * Language file updates
197
 
198
  == Upgrade Notice ==
199
 
200
+ = 1.4.5 =
201
  * Bug fixes and improvements.
202
 
203
 
216
  * Dutch translations courtesy of [Niels Geryl](http://hetwittepaard.be)
217
  * German translations courtesy of [Sebastian König](http://aykutmania.de)
218
  * Turkish translations courtesy of [Abdullah Pazarbaşı](http://abdullahpazarbasi.com)
219
+ * Swedish translations courtesy of [Jimmy Malmqvist](http://jimmymalmqvist.com)
220
+ * Russian translations courtesy of [Alexey Tkachenko](http://atkachenko.ru)
221
 
tpl/admin-list.tpl.php CHANGED
@@ -32,7 +32,7 @@
32
  <td>
33
  <ul class="loco-details">
34
  <li title="<?php Loco::h($domain)?>">
35
- <strong><?php Loco::h($name)?></strong>
36
  </li><?php
37
  if( isset($parent) ):?>
38
  <li>
@@ -65,7 +65,7 @@
65
  ?>
66
  <li class="loco-edit-po">
67
  <?php echo LocoAdmin::edit_link( $package, $po_path, $label, $po_locale->icon_class() )?>
68
- <small class="loco-progress">
69
  <?php echo $po_stats['p']?>%
70
  </small>
71
  </li><?php
@@ -82,12 +82,11 @@
82
  <?php echo LocoAdmin::edit_link( $package, $pot_path )?>
83
  </li><?php
84
  endforeach;
85
- // else no POT file
86
  else:?>
87
  <li class="loco-add">
88
  <?php echo LocoAdmin::xgettext_link( $package )?>
89
  </li><?php
90
- endif;?>
91
  </ul>
92
  </td>
93
  <td>
32
  <td>
33
  <ul class="loco-details">
34
  <li title="<?php Loco::h($domain)?>">
35
+ <strong><?php Loco::h($package->get_name())?></strong>
36
  </li><?php
37
  if( isset($parent) ):?>
38
  <li>
65
  ?>
66
  <li class="loco-edit-po">
67
  <?php echo LocoAdmin::edit_link( $package, $po_path, $label, $po_locale->icon_class() )?>
68
+ <small class="loco-progress" title="<?php echo $po_stats['p']?>">
69
  <?php echo $po_stats['p']?>%
70
  </small>
71
  </li><?php
82
  <?php echo LocoAdmin::edit_link( $package, $pot_path )?>
83
  </li><?php
84
  endforeach;
 
85
  else:?>
86
  <li class="loco-add">
87
  <?php echo LocoAdmin::xgettext_link( $package )?>
88
  </li><?php
89
+ endif?>
90
  </ul>
91
  </td>
92
  <td>
tpl/admin-opts.tpl.php CHANGED
@@ -73,6 +73,22 @@ $nav = array (
73
  </fieldset>
74
  </td>
75
  </tr>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  </tbody>
77
  </table>
78
  <p class="submit">
73
  </fieldset>
74
  </td>
75
  </tr>
76
+ <tr valign="top">
77
+ <th scope="row"><?php Loco::h( Loco::__('Experimental features') )?></th>
78
+ <td>
79
+ <fieldset>
80
+ <legend class="screen-reader-text">
81
+ <span><?php Loco::h( Loco::__('Experimental features') )?></span>
82
+ </legend>
83
+ <p>
84
+ <label for="loco--enable-core">
85
+ <input type="checkbox" name="loco[enable_core]" value="1" id="loco--enable-core"<?php echo $enable_core ? ' checked' : '';?> />
86
+ <?php Loco::h( Loco::__('Enable Wordpress core translations') )?>
87
+ </label>
88
+ </p>
89
+ </fieldset>
90
+ </td>
91
+ </tr>
92
  </tbody>
93
  </table>
94
  <p class="submit">
tpl/admin-poedit.tpl.php CHANGED
@@ -136,9 +136,11 @@ $modified or $pofiles[] = $path;
136
  </button>
137
  </form>
138
  <form action="<?php echo $phpbase?>/loco-fail.php" id="loco-filter">
139
- <input type="text" maxlength="100" name="q" id="loco-search" placeholder="<?php Loco::h(Loco::__('Filter translations'))?>" autocomplete="off" disabled />
 
 
140
  </form>
141
- <form action="http://wordpress.org/support/plugin/<?php echo Loco::NS?>" target="_blank">
142
  <button class="button loco-help" data-loco="help" type="submit">
143
  <span><?php Loco::h( Loco::_x('Help','Editor button') )?></span>
144
  </button>
136
  </button>
137
  </form>
138
  <form action="<?php echo $phpbase?>/loco-fail.php" id="loco-filter">
139
+ <div class="loco-clearable">
140
+ <input type="text" maxlength="100" name="q" id="loco-search" placeholder="<?php Loco::h(Loco::__('Filter translations'))?>" autocomplete="off" disabled />
141
+ </div>
142
  </form>
143
+ <form action="http://wordpress.org/support/plugin/<?php echo Loco::NS?>" target="_blank" class="loco-right">
144
  <button class="button loco-help" data-loco="help" type="submit">
145
  <span><?php Loco::h( Loco::_x('Help','Editor button') )?></span>
146
  </button>
tpl/admin-poinit.tpl.php CHANGED
@@ -46,7 +46,24 @@ $argpair = $package->get_query();
46
  <br />
47
  </label>
48
  <input type="text" maxlength="5" size="5" pattern="^[a-zA-Z]{2}([\-_][a-zA-Z]{2})?$" name="custom-locale" for="f-loco-locale" placeholder="xx_XX" />
49
- </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  <p class="submit">
51
  <input type="submit" value="<?php Loco::h( Loco::_x('Start translating','Submit button') )?>" class="button button-primary button-large" />
52
  </p>
46
  <br />
47
  </label>
48
  <input type="text" maxlength="5" size="5" pattern="^[a-zA-Z]{2}([\-_][a-zA-Z]{2})?$" name="custom-locale" for="f-loco-locale" placeholder="xx_XX" />
49
+ </p><?php
50
+ // provide location choice if package and global dirs are both writable
51
+ if( is_writeable($pdir) && is_writable($gdir) ):
52
+ $is_global = $package->is_global_path( $path );
53
+ $pdir = LocoAdmin::trim_path( $pdir );
54
+ ?>
55
+ <p>
56
+ <label>
57
+ <input type="radio" name="gforce" value="0"<?php print( $is_global ? '' : ' checked') ?> />
58
+ <?php echo sprintf( Loco::_x('create in <code>%s</code>','Form label' ), $pdir )?>
59
+ </label>
60
+ <br />
61
+ <label>
62
+ <input type="radio" name="gforce" value="1"<?php print( $is_global ? ' checked' : '') ?> />
63
+ <?php Loco::h( Loco::_x('create in global languages directory','Form label') )?>
64
+ </label>
65
+ </p><?php
66
+ endif?>
67
  <p class="submit">
68
  <input type="submit" value="<?php Loco::h( Loco::_x('Start translating','Submit button') )?>" class="button button-primary button-large" />
69
  </p>
tpl/admin-root.tpl.php CHANGED
@@ -36,7 +36,7 @@ $nav = array (
36
  //
37
  if( $themes ):?>
38
  <div class="icon32 icon-appearance"><br /></div>
39
- <h2>
40
  <?php Loco::h( Loco::_x('Themes','Package list header') )?>
41
  </h2>
42
  <div class="loco-list loco-list-themes">
@@ -49,7 +49,7 @@ $nav = array (
49
  //
50
  if( $plugins ):?>
51
  <div class="icon32 icon-plugins"><br /></div>
52
- <h2>
53
  <?php Loco::h( Loco::_x('Plugins','Package list header') )?>
54
  </h2>
55
  <div class="loco-list loco-list-plugins">
@@ -62,7 +62,7 @@ $nav = array (
62
  //
63
  if( $core ):?>
64
  <div class="icon32 icon-generic"><br /></div>
65
- <h2>
66
  <?php Loco::h( Loco::_x('Core','Package list header') )?>
67
  </h2>
68
  <div class="loco-list loco-list-core">
36
  //
37
  if( $themes ):?>
38
  <div class="icon32 icon-appearance"><br /></div>
39
+ <h2 class="dashicons-admin-appearance">
40
  <?php Loco::h( Loco::_x('Themes','Package list header') )?>
41
  </h2>
42
  <div class="loco-list loco-list-themes">
49
  //
50
  if( $plugins ):?>
51
  <div class="icon32 icon-plugins"><br /></div>
52
+ <h2 class="dashicons-admin-plugins">
53
  <?php Loco::h( Loco::_x('Plugins','Package list header') )?>
54
  </h2>
55
  <div class="loco-list loco-list-plugins">
62
  //
63
  if( $core ):?>
64
  <div class="icon32 icon-generic"><br /></div>
65
+ <h2 class="dashicons-wordpress">
66
  <?php Loco::h( Loco::_x('Core','Package list header') )?>
67
  </h2>
68
  <div class="loco-list loco-list-core">