Loco Translate - Version 1.4.7

Version Description

  • Added Polish translations
  • Tested in WP 4.0
  • Add support for Wordpress's regionless locales
Download this release

Release Info

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

Code changes from version 1.4.6 to 1.4.7

languages/loco-translate-pl_PL.mo ADDED
Binary file
languages/loco-translate-pl_PL.po ADDED
@@ -0,0 +1,621 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: Wed Aug 06 2014 18:24:07 GMT+0200 (Środkowoeuropejski czas "
7
+ "letni)\n"
8
+ "Last-Translator: Admin <support@localise.biz>\n"
9
+ "Language-Team: \n"
10
+ "Language: Polish\n"
11
+ "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10 >= 2 && n%10<=4 "
12
+ "&&(n%100<10||n%100 >= 20)? 1 : 2)\n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=UTF-8\n"
15
+ "Content-Transfer-Encoding: 8bit\n"
16
+ "X-Poedit-SourceCharset: UTF-8\n"
17
+ "X-Poedit-Basepath: .\n"
18
+ "X-Poedit-SearchPath-0: ..\n"
19
+ "X-Poedit-KeywordsList: _:1;gettext:1;dgettext:2;ngettext:1,2;dngettext:2,3;"
20
+ "__:1;_e:1;_c:1;_n:1,2;_n_noop:1,2;_nc:1,2;__ngettext:1,2;__ngettext_noop:1,2;"
21
+ "_x:1,2c;_ex:1,2c;_nx:1,2,4c;_nx_noop:1,2,3c;_n_js:1,2;_nx_js:1,2,3c;"
22
+ "esc_attr__:1;esc_html__:1;esc_attr_e:1;esc_html_e:1;esc_attr_x:1,2c;"
23
+ "esc_html_x:1,2c;comments_number_link:2,3;t:1;st:1;trans:1;transChoice:1,2\n"
24
+ "X-Generator: Loco - https://localise.biz/\n"
25
+ "X-Loco-Target-Locale: pl_PL"
26
+
27
+ #: ../tpl/admin-poedit.tpl.php:135
28
+ msgctxt "Editor button"
29
+ msgid "Fuzzy"
30
+ msgstr "Niepewny"
31
+
32
+ #: ../tpl/admin-fscheck.tpl.php:17
33
+ #, php-format
34
+ msgid "File system permissions for %s"
35
+ msgstr "Uprawnienia systemu plików dla %s"
36
+
37
+ #: ../tpl/admin-fscheck.tpl.php:40
38
+ msgid "Back"
39
+ msgstr "Wstecz"
40
+
41
+ #: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:96
42
+ msgid "Get help"
43
+ msgstr "Pomoc"
44
+
45
+ #: ../tpl/admin-list.tpl.php:11
46
+ msgctxt "Table header"
47
+ msgid "Package details"
48
+ msgstr "Detale paczki"
49
+
50
+ #: ../tpl/admin-list.tpl.php:14
51
+ msgctxt "Table header"
52
+ msgid "Translations (PO)"
53
+ msgstr "Tłumaczenia (PO)"
54
+
55
+ #: ../tpl/admin-list.tpl.php:17
56
+ msgctxt "Table header"
57
+ msgid "Template (POT)"
58
+ msgstr "Schemat (POT)"
59
+
60
+ #: ../tpl/admin-list.tpl.php:20
61
+ msgctxt "Table header"
62
+ msgid "File permissions"
63
+ msgstr "Uprawnienia plików"
64
+
65
+ #: ../tpl/admin-list.tpl.php:40
66
+ #, php-format
67
+ msgid "Extends: %s"
68
+ msgstr "Rozszerza: %s"
69
+
70
+ #: ../tpl/admin-list.tpl.php:44
71
+ #, php-format
72
+ msgid "1 language"
73
+ msgid_plural "%u languages"
74
+ msgstr[0] "1 język"
75
+ msgstr[1] "%u języki"
76
+ msgstr[2] "%u języków"
77
+
78
+ #: ../tpl/admin-list.tpl.php:49
79
+ msgctxt "Modified time"
80
+ msgid "Updated"
81
+ msgstr "Zaktualizowano"
82
+
83
+ #: ../tpl/admin-list.tpl.php:98
84
+ msgid "OK"
85
+ msgstr "OK"
86
+
87
+ #: ../tpl/admin-nav.tpl.php:20
88
+ msgid "Powered by"
89
+ msgstr "Napędzany przez"
90
+
91
+ #: ../tpl/admin-nav.tpl.php:26
92
+ msgid "Loco may not work as expected"
93
+ msgstr "Loco może nie działać tak jak oczekujesz"
94
+
95
+ #: ../tpl/admin-opts.tpl.php:18
96
+ msgid "Configure Loco Translate"
97
+ msgstr "Konfiguruj Loco Translate"
98
+
99
+ #: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
100
+ msgid "Compiling MO files"
101
+ msgstr "Kompilowanie plików MO"
102
+
103
+ #: ../tpl/admin-opts.tpl.php:36
104
+ msgid "Use built-in MO compiler."
105
+ msgstr "Użyj wbudowanego kompilatora MO."
106
+
107
+ #: ../tpl/admin-opts.tpl.php:42
108
+ msgid "Use external command:"
109
+ msgstr "Użyj zewnętrznej komendy:"
110
+
111
+ #: ../tpl/admin-opts.tpl.php:47
112
+ msgid "Enter path to msgfmt on server"
113
+ msgstr "Wpisz ścieżkę do msgfmt na serwerze"
114
+
115
+ #: ../tpl/admin-opts.tpl.php:54
116
+ msgid "Generate hash tables"
117
+ msgstr "Generuj tablice hash"
118
+
119
+ #: ../tpl/admin-opts.tpl.php:61 ../tpl/admin-opts.tpl.php:65
120
+ msgid "Backing up PO files"
121
+ msgstr "Zrób kopię zapasową plików PO"
122
+
123
+ #: ../tpl/admin-opts.tpl.php:69
124
+ msgid "Number of backups to keep of each file:"
125
+ msgstr "Liczba kopii zapasowych każdego pliku do przechowania:"
126
+
127
+ #: ../tpl/admin-opts.tpl.php:77 ../tpl/admin-opts.tpl.php:81
128
+ msgid "Experimental features"
129
+ msgstr "Funkcje eksperymentalne"
130
+
131
+ #: ../tpl/admin-opts.tpl.php:86
132
+ msgid "Enable Wordpress core translations"
133
+ msgstr "Włącz tłumaczenie silnika Wordpress"
134
+
135
+ #: ../tpl/admin-opts.tpl.php:95
136
+ msgid "Save settings"
137
+ msgstr "Zapisz ustawienia"
138
+
139
+ #: ../tpl/admin-poedit.tpl.php:31
140
+ msgid "Template file"
141
+ msgstr "Plik schematu"
142
+
143
+ #: ../tpl/admin-poedit.tpl.php:39
144
+ msgctxt "Dropdown label"
145
+ msgid "Switch to..."
146
+ msgstr "Zmień na..."
147
+
148
+ #: ../tpl/admin-poedit.tpl.php:57
149
+ msgid "Updated"
150
+ msgstr "Zaktualizowano"
151
+
152
+ #: ../tpl/admin-poedit.tpl.php:62
153
+ msgid "never"
154
+ msgstr "nigdy"
155
+
156
+ #: ../tpl/admin-poedit.tpl.php:87
157
+ msgctxt "Editor button"
158
+ msgid "Save"
159
+ msgstr "Zapisz"
160
+
161
+ #: ../tpl/admin-poedit.tpl.php:94 ../tpl/admin-poedit.tpl.php:103
162
+ msgctxt "Editor button"
163
+ msgid "Download"
164
+ msgstr "Pobierz"
165
+
166
+ #: ../tpl/admin-poedit.tpl.php:115
167
+ msgctxt "Editor button"
168
+ msgid "Sync"
169
+ msgstr "Synchronizuj"
170
+
171
+ #: ../tpl/admin-poedit.tpl.php:120
172
+ msgctxt "Editor button"
173
+ msgid "Revert"
174
+ msgstr "Przywróć"
175
+
176
+ #: ../tpl/admin-poedit.tpl.php:125
177
+ msgctxt "Editor button"
178
+ msgid "Add"
179
+ msgstr "Dodaj"
180
+
181
+ #: ../tpl/admin-poedit.tpl.php:130
182
+ msgctxt "Editor button"
183
+ msgid "Del"
184
+ msgstr "Usuń"
185
+
186
+ #: ../tpl/admin-poedit.tpl.php:140
187
+ msgid "Filter translations"
188
+ msgstr "Filtruj tłumaczenia"
189
+
190
+ #: ../tpl/admin-poedit.tpl.php:145
191
+ msgctxt "Editor button"
192
+ msgid "Help"
193
+ msgstr "Pomoc"
194
+
195
+ #: ../tpl/admin-poinit.tpl.php:21
196
+ #, php-format
197
+ msgid "Initialize new translations in %s"
198
+ msgstr "Zainicjuj nowe tłumaczenie w %s"
199
+
200
+ #: ../tpl/admin-poinit.tpl.php:34
201
+ msgid "Select from common languages"
202
+ msgstr "Wybierz z częstych języków"
203
+
204
+ #: ../tpl/admin-poinit.tpl.php:45
205
+ msgctxt "Form label"
206
+ msgid "or enter any language code"
207
+ msgstr "lub wpisz dowolny kod języka"
208
+
209
+ #: ../tpl/admin-poinit.tpl.php:58
210
+ #, php-format
211
+ msgctxt "Form label"
212
+ msgid "create in <code>%s</code>"
213
+ msgstr "stwórz w <code>%s</code>"
214
+
215
+ #: ../tpl/admin-poinit.tpl.php:63
216
+ msgctxt "Form label"
217
+ msgid "create in global languages directory"
218
+ msgstr "stwórz w globalny, katalogu języków"
219
+
220
+ #: ../tpl/admin-poinit.tpl.php:68
221
+ msgctxt "Submit button"
222
+ msgid "Start translating"
223
+ msgstr "Zacznij tłumaczyć"
224
+
225
+ #: ../tpl/admin-root.tpl.php:18
226
+ msgid "New version available"
227
+ msgstr "Nowa wersja jest dostępna"
228
+
229
+ #: ../tpl/admin-root.tpl.php:21
230
+ #, php-format
231
+ msgid "Upgrade to version %s of Loco Translate"
232
+ msgstr "Zaktualizuj Loco Translate do wersji %s"
233
+
234
+ #: ../tpl/admin-root.tpl.php:31
235
+ msgid "Select a plugin or theme to translate"
236
+ msgstr "Wybierz wtyczkę lub motyw do tłumaczenia"
237
+
238
+ #: ../tpl/admin-root.tpl.php:40
239
+ msgctxt "Package list header"
240
+ msgid "Themes"
241
+ msgstr "Motywy"
242
+
243
+ #: ../tpl/admin-root.tpl.php:53
244
+ msgctxt "Package list header"
245
+ msgid "Plugins"
246
+ msgstr "Wtyczki"
247
+
248
+ #: ../tpl/admin-root.tpl.php:66
249
+ msgctxt "Package list header"
250
+ msgid "Core"
251
+ msgstr "Silnik"
252
+
253
+ #: ../lib/loco-admin.php:889
254
+ #, php-format
255
+ msgid "%s fuzzy"
256
+ msgstr "%s niepewnych"
257
+
258
+ #: ../lib/loco-admin.php:934
259
+ msgid "Failed to compile MO file with built-in compiler"
260
+ msgstr "Niepowodzenie kompilacji pliku MO używając wbudowanego kompilatora"
261
+
262
+ #: ../lib/loco-admin.php:1034
263
+ msgid "File download failed"
264
+ msgstr "Błąd pobierania pliku"
265
+
266
+ #: ../lib/loco-locales.php:65
267
+ msgid "Unknown language"
268
+ msgstr "Nieznany język"
269
+
270
+ #: ../lib/loco-packages.php:423 ../lib/loco-packages.php:430
271
+ msgid "Some files not writable"
272
+ msgstr "Niektóre pliki są tylko do odczytu"
273
+
274
+ #: ../lib/loco-packages.php:433
275
+ msgid "Some files missing"
276
+ msgstr "Brakujące niektóre pliki"
277
+
278
+ #: ../lib/loco-packages.php:439 ../lib/loco-packages.php:443
279
+ #, php-format
280
+ msgid "\"%s\" folder not writable"
281
+ msgstr "\"%s\" katalog jest tylko do odczytu"
282
+
283
+ #: ../lib/loco-packages.php:464
284
+ msgid "POT file not writable"
285
+ msgstr "Plik POT jest tylko do odczytu"
286
+
287
+ #: ../lib/loco-packages.php:469
288
+ msgid "PO file not writable"
289
+ msgstr "Plik PO jest tylko do odczytu"
290
+
291
+ #: ../lib/loco-packages.php:471
292
+ msgid "MO file not writable"
293
+ msgstr "Plik MO jest tylko do odczytu"
294
+
295
+ #: ../lib/loco-packages.php:471
296
+ msgid "MO file not found"
297
+ msgstr "Nie znaleziono pliku MO"
298
+
299
+ #: ../lib/loco-packages.php:476
300
+ msgid "Folder not writable"
301
+ msgstr "Katalog jest tylko do odczytu"
302
+
303
+ #: ../lib/loco-packages.php:476
304
+ msgid "Folder not found"
305
+ msgstr "Nie znaleziono katalogu"
306
+
307
+ #: ../php/loco-ajax.php:17 ../php/loco-download.php:21
308
+ msgid "User does not have permission to manage translations"
309
+ msgstr "Użytkownik nie ma uprawnień do zarządzania tłumaczeniami"
310
+
311
+ #: ../php/loco-download.php:75 ../php/loco-posave.php:121
312
+ #, php-format
313
+ msgid "Failed to compile MO file with %s, check your settings"
314
+ msgstr "Nie udało się skompilować pliku MO używając %s, sprawdź ustawienia"
315
+
316
+ #: ../php/loco-posave.php:10 ../php/loco-posync.php:9
317
+ msgid "Invalid data posted to server"
318
+ msgstr "Błędne dane wysłane do serwera"
319
+
320
+ #: ../php/loco-posave.php:23 ../php/loco-posync.php:22
321
+ #, php-format
322
+ msgid "Package not found called %s"
323
+ msgstr "Paczka o nazwie %s nie została znaleziona"
324
+
325
+ #: ../php/loco-posave.php:58
326
+ #, php-format
327
+ msgid ""
328
+ "Web server cannot create backups in \"%s\". Fix file permissions or disable "
329
+ "backups in settings"
330
+ msgstr ""
331
+ "Serwer www nie może utworzyć kopii w \"%s\". Popraw uprawnienia lub wyłącz "
332
+ "kopie zapasowe w ustawieniach"
333
+
334
+ #: ../php/loco-posave.php:66
335
+ #, php-format
336
+ msgid ""
337
+ "Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or "
338
+ "create it manually."
339
+ msgstr ""
340
+ "Serwer www nie może utworzyć katalogu \"%s\". Popraw uprawnienia lub utwórz go "
341
+ "ręcznie."
342
+
343
+ #: ../php/loco-posave.php:69
344
+ #, php-format
345
+ msgid ""
346
+ "Web server cannot create files in the \"%s\" directory. Fix file permissions "
347
+ "or use the download function."
348
+ msgstr ""
349
+ "Serwer www nie może utworzyć plików w katalogu \"%s\". Popraw uprawnienia lub "
350
+ "użyj funkcji pobierania."
351
+
352
+ #: ../php/loco-posave.php:81
353
+ #, php-format
354
+ msgid ""
355
+ "%s file is not writable by the web server. Fix file permissions or download "
356
+ "and copy to \"%s/%s\"."
357
+ msgstr ""
358
+ "%s jest tylko do odczytu dla serwera www. Popraw uprawnienia lub pobierz i "
359
+ "skopiuj do \"%s/%s\"."
360
+
361
+ #: ../php/loco-posave.php:102
362
+ msgid "Cannot create MO file"
363
+ msgstr "Nie można utworzyć pliku MO"
364
+
365
+ #: ../php/loco-posave.php:105
366
+ msgid "Cannot overwrite MO file"
367
+ msgstr "Nie można nadpisać pliku MO"
368
+
369
+ #: ../php/loco-posave.php:131
370
+ msgid "Failed to write MO file"
371
+ msgstr "Błąd zapisu pliku MO"
372
+
373
+ #: ../php/loco-posync.php:47
374
+ msgid "No source files in this package, nothing to sync"
375
+ msgstr "Brak plików źródłowych w tej paczce, nic do synchronizacji"
376
+
377
+ #: ../php/loco-posync.php:57
378
+ msgid "No strings could be extracted from source files"
379
+ msgstr "Żadne linie nie mogą być wyciągnięte z plików źródłowych"
380
+
381
+ #: ../pub/js/lang/dummy.php:8
382
+ msgid "Unknown error"
383
+ msgstr "Nieznany błąd"
384
+
385
+ #: ../pub/js/lang/dummy.php:10
386
+ msgid "PO file saved"
387
+ msgstr "Plik PO zapisany"
388
+
389
+ #: ../pub/js/lang/dummy.php:12
390
+ msgid "and MO file compiled"
391
+ msgstr "oraz plik MO skompilowany"
392
+
393
+ #: ../pub/js/lang/dummy.php:15
394
+ #, php-format
395
+ msgid "Merged from %s"
396
+ msgstr "Połączono z %s"
397
+
398
+ #: ../pub/js/lang/dummy.php:17
399
+ msgid "Merged from source code"
400
+ msgstr "Połączono z kodu źródłowego"
401
+
402
+ #: ../pub/js/lang/dummy.php:19
403
+ #, php-format
404
+ msgid "Already up to date with %s"
405
+ msgstr "Już aktualne z %s"
406
+
407
+ #: ../pub/js/lang/dummy.php:21
408
+ msgid "Already up to date with source code"
409
+ msgstr "Już aktualne z kodu źródłowego"
410
+
411
+ #: ../pub/js/lang/dummy.php:23
412
+ #, php-format
413
+ msgid "1 new string added"
414
+ msgid_plural "%s new strings added"
415
+ msgstr[0] "1 nowa linia dodana"
416
+ msgstr[1] "%s nowe linie dodano"
417
+ msgstr[2] "%s nowych linii dodano"
418
+
419
+ #: ../pub/js/lang/dummy.php:25
420
+ #, php-format
421
+ msgid "1 obsolete string removed"
422
+ msgid_plural "%s obsolete strings removed"
423
+ msgstr[0] "1 zbędna linia usunięta"
424
+ msgstr[1] "%s zbędne linie usunięte"
425
+ msgstr[2] "%s zbędnych linii usunięto"
426
+
427
+ #: ../pub/js/lang/dummy.php:27
428
+ msgid "Your changes will be lost if you continue without saving"
429
+ msgstr "Utracisz aktualne zmiany jeśli będziesz kontynuował bez zapisywania"
430
+
431
+ #. label for the window pane holding native translation
432
+ #: ../pub/js/lang/dummy.php:35
433
+ msgctxt "Editor pane"
434
+ msgid "Source text"
435
+ msgstr "Tekst źródłowy"
436
+
437
+ #. where %s is the language, e.g French translation
438
+ #: ../pub/js/lang/dummy.php:38
439
+ #, php-format
440
+ msgctxt "Editor pane"
441
+ msgid "%s translation"
442
+ msgstr "%s tłumaczenie"
443
+
444
+ #. label for the window pane holding translator comments
445
+ #: ../pub/js/lang/dummy.php:41
446
+ msgctxt "Editor pane"
447
+ msgid "Comments"
448
+ msgstr "Komentarze"
449
+
450
+ #. label for the window pane holding message context
451
+ #: ../pub/js/lang/dummy.php:44
452
+ msgctxt "Editor pane"
453
+ msgid "Context"
454
+ msgstr "Kontekst"
455
+
456
+ #: ../tpl/admin-fscheck.tpl.php:8
457
+ msgid "File check"
458
+ msgstr "Sprawdzenie plików"
459
+
460
+ #: ../lib/loco-admin.php:313
461
+ #, php-format
462
+ msgid "PO file used as template. This will be renamed to %s on first save"
463
+ msgstr ""
464
+ "Plik PO użyty jako szablon. Nazwa zostanie zmieniona na % przy pierwszym "
465
+ "zapisie"
466
+
467
+ #: ../lib/loco-admin.php:337
468
+ msgid ""
469
+ "File cannot be created automatically. Fix the file permissions or use "
470
+ "Download instead of Save"
471
+ msgstr ""
472
+ "Plik nie może być utworzony automatycznie. Napraw uprawnienia albo użyj "
473
+ "Pobierz zamiast Zapisz"
474
+
475
+ #: ../lib/loco-admin.php:346 ../lib/loco-admin.php:355
476
+ #, php-format
477
+ msgid "%s file is empty"
478
+ msgstr "Plik %s jest pusty"
479
+
480
+ #: ../lib/loco-admin.php:347 ../lib/loco-admin.php:362
481
+ msgid "Run Sync to update from source code"
482
+ msgstr "Uruchom synchronizację aby zaktualizować z kodu źródłowego"
483
+
484
+ #: ../lib/loco-admin.php:351
485
+ msgid "No strings could be extracted from source code"
486
+ msgstr "Nie można wyciągnąć żadnych linii z kodu źródłowego"
487
+
488
+ #: ../lib/loco-admin.php:358
489
+ #, php-format
490
+ msgid "Run Sync to update from %s"
491
+ msgstr "Uruchom synchronizację aby zaktualizować z %s"
492
+
493
+ #: ../lib/loco-admin.php:377
494
+ msgid "Source code has been modified, run Sync to update POT"
495
+ msgstr ""
496
+ "Kod źródłowy został zaktualizowany, uruchom synchronizację aby zaktualizować "
497
+ "plik POT"
498
+
499
+ #: ../lib/loco-admin.php:381
500
+ msgid "POT has been modified since PO file was saved, run Sync to update"
501
+ msgstr ""
502
+ "Plik POT został zmieniony od czasu zapisu pliku PO, uruchom synchronizację "
503
+ "aby zaktualizować"
504
+
505
+ #: ../lib/loco-admin.php:468
506
+ msgid "Bad file path"
507
+ msgstr "Błędna ścieżka pliku"
508
+
509
+ #: ../lib/loco-admin.php:692
510
+ #, php-format
511
+ msgid "Empty or invalid %s file"
512
+ msgstr "Pusty lub błędny plik %s"
513
+
514
+ #: ../lib/loco-admin.php:696
515
+ #, php-format
516
+ msgid "%s file has no header"
517
+ msgstr "Plik %s nie ma nagłówka"
518
+
519
+ #: ../lib/loco-admin.php:828
520
+ msgctxt "Add button"
521
+ msgid "New template"
522
+ msgstr "Nowy szablon"
523
+
524
+ #: ../lib/loco-admin.php:847
525
+ msgctxt "Add button"
526
+ msgid "New language"
527
+ msgstr "Nowy język"
528
+
529
+ #: ../lib/loco-admin.php:886
530
+ #, php-format
531
+ msgid "%s%% translated"
532
+ msgstr "%s%% przetłumaczono"
533
+
534
+ #: ../lib/loco-admin.php:886
535
+ #, php-format
536
+ msgid "1 string"
537
+ msgid_plural "%s strings"
538
+ msgstr[0] "1 linia"
539
+ msgstr[1] "%s linie"
540
+ msgstr[2] "%s linii"
541
+
542
+ #: ../lib/loco-admin.php:892
543
+ #, php-format
544
+ msgid "%s untranslated"
545
+ msgstr "%s nie przetłumaczone"
546
+
547
+ #: ../lib/loco-admin.php:977 ../tpl/admin-nav.tpl.php:21
548
+ msgid "Loco, Translation Management"
549
+ msgstr "Loco, Menadżer Tłumaczeń"
550
+
551
+ #: ../lib/loco-admin.php:978 ../lib/loco-admin.php:1009
552
+ msgid "Manage translations"
553
+ msgstr "Zarządzaj tłumaczeniami"
554
+
555
+ #: ../lib/loco-admin.php:979
556
+ msgid "Translation options"
557
+ msgstr "Opcje tłumaczeń"
558
+
559
+ #: ../lib/loco-admin.php:986
560
+ msgid "Loco Translate"
561
+ msgstr "Loco Translate"
562
+
563
+ #: ../lib/loco-admin.php:1010 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.
564
+ #: tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ..
565
+ #: tpl/admin-root.tpl.php:7
566
+ msgid "Settings"
567
+ msgstr "Ustawienia"
568
+
569
+ #: ../pub/js/lang/dummy.php:52
570
+ msgid "Translation"
571
+ msgstr "Tłumaczenie"
572
+
573
+ #: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.
574
+ #: tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
575
+ msgid "Packages"
576
+ msgstr "Paczki"
577
+
578
+ #. Translators: Bold text label in admin error messages
579
+ #: ../lib/loco-admin.php:15
580
+ msgctxt "Message label"
581
+ msgid "Error"
582
+ msgstr "Błąd"
583
+
584
+ #: ../lib/loco-admin.php:24
585
+ msgctxt "Message label"
586
+ msgid "Warning"
587
+ msgstr "Ostrzeżenie"
588
+
589
+ #: ../lib/loco-admin.php:33
590
+ msgctxt "Message label"
591
+ msgid "OK"
592
+ msgstr "OK"
593
+
594
+ #: ../lib/loco-admin.php:42
595
+ msgid "Permission denied"
596
+ msgstr "Odmowa dostępu"
597
+
598
+ #: ../lib/loco-admin.php:58
599
+ msgid "Settings saved"
600
+ msgstr "Ustawienia zapisane"
601
+
602
+ #: ../lib/loco-admin.php:133
603
+ msgid "New PO file"
604
+ msgstr "Nowy plik PO"
605
+
606
+ #: ../lib/loco-admin.php:240
607
+ msgid "You must specify a valid locale for a new PO file"
608
+ msgstr "Musisz określić właściwy region dla nowego pliku PO"
609
+
610
+ #: ../lib/loco-admin.php:265 ../lib/loco-admin.php:367
611
+ msgid "No translatable strings found"
612
+ msgstr "Brak dostępnych lini do tłumaczenia"
613
+
614
+ #: ../lib/loco-admin.php:265
615
+ msgid "Cannot create a PO file."
616
+ msgstr "Nie można utworzyć pliku PO."
617
+
618
+ #: ../lib/loco-admin.php:272
619
+ #, php-format
620
+ msgid "PO file already exists with locale %s"
621
+ msgstr "Plik PO już istnieje z regionu %s"
lib/build/gettext-compiled.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
  /**
3
  * Compiled source built from Loco core. Do not edit!
4
- * Tue, 29 Jul 2014 09:41:25 +0100
5
  */
6
- class LocoArray implements Iterator, Countable { 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 ){ if( -1 === $f ){ return 'Untranslated'; } $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_ensure_utf8( $str, $enc = false, $prefix_bom = false ){ if( false === $enc ){ $m = substr( $str, 0, 3 ); if( "\xEF\xBB\xBF" === $m ){ $str = substr( $str, 3 ); } else if( "\xFF" === $m{0} && "\xFE" === $m{1} ){ $str = substr( $str, 2 ); $enc = 'UTF-16LE'; } else if( "\xFE" === $m{0} && "\xFF" === $m{1} ){ $str = substr( $str, 2 ); $enc = 'UTF-16BE'; } else { $enc = mb_detect_encoding( $str, array('ASCII','UTF-8','Windows-1252','ISO-8859-1'), false ); if( ! $enc ){ throw new Exception('Unknown character encoding'); } } } else if( ! strcasecmp('ISO-8859-1',$enc) || ! strcasecmp('CP-1252', $enc ) ){ $enc = 'Windows-1252'; } else if( ! strcasecmp('UTF8', $enc) ){ $enc = ''; } if( $enc && $enc !== 'ASCII' && $enc !== 'UTF-8' ){ $str = iconv( $enc, 'UTF-8//TRANSLIT', $str ); if( ! $str ){ throw new Exception('Failed to ensure UTF-8 from '.$enc); } } if( $prefix_bom ){ $str = "\xEF\xBB\xBF".$str; } return $str; } function loco_parse_po( $src ){ $src = loco_ensure_utf8( $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 ){ if( empty($entry['id']) ){ continue; } if( empty($entry['str']) ){ $entry['str'] = array( array('') ); } $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; } } } if( $assets && '' === $assets[0]['source'] ){ $headers = loco_parse_po_headers( $assets[0]['target'] ); $indexed = $headers->__get('X-Loco-Lookup'); if( 'id' === $indexed || 'name' === $indexed ){ foreach( $assets as $i => $asset ){ if( isset($asset['notes']) ){ $notes = $texts = array(); foreach( explode("\n",$asset['notes']) as $line ){ 0 === strpos($line,'Source text: ') ? $texts[] = substr($line,13) : $notes[] = $line; } $assets[$i]['notes'] = implode("\n",$notes); $assets[$i]['id'] = $asset['source']; $assets[$i]['source'] = implode("\n",$texts); } } } } 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'] = $this->decodeStr( 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'] = $this->decodeStr($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" ) ){ $arr = explode( "\0", $txt ); $txt = array_shift( $arr ); if( isset($p[$i][1]) ){ foreach( $arr as $_i => $plural_txt ){ $plural_idx = $_i + 1; $p[$i][$plural_idx]['target'] = $this->decodeStr($plural_txt); } } else if( '' === implode('',$arr) ){ } else { throw new Exception('plural has no corresponding msgid_plural at '.$i); } } $r[$i]['target'] = $this->decodeStr($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]; } private function decodeStr( $str ){ $enc = mb_detect_encoding( $str, array('ASCII','UTF-8','ISO-8859-1'), false ); if( $enc && $enc !== 'ASCII' && $enc !== 'UTF-8' ){ $str = iconv( $enc, 'UTF-8', $str ); } return $str; } } 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]['notes']) and $a[] = $this->exp[$index]['notes']; isset($entry['notes']) and $a[] = $entry['notes']; $a && $this->exp[$index]['notes'] = 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'); }
1
  <?php
2
  /**
3
  * Compiled source built from Loco core. Do not edit!
4
+ * Tue, 07 Oct 2014 14:14:21 +0100
5
  */
6
+ class LocoArray implements Iterator, Countable { 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 approval', LOCO_FLAG_FUZZY => 'Fuzzy', ); return $flags; } function loco_flag( $f ){ if( -1 === $f ){ return 'Untranslated'; } $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_ensure_utf8( $str, $enc = false, $prefix_bom = false ){ if( false === $enc ){ $m = substr( $str, 0, 3 ); if( "\xEF\xBB\xBF" === $m ){ $str = substr( $str, 3 ); } else if( "\xFF" === $m{0} && "\xFE" === $m{1} ){ $str = substr( $str, 2 ); $enc = 'UTF-16LE'; } else if( "\xFE" === $m{0} && "\xFF" === $m{1} ){ $str = substr( $str, 2 ); $enc = 'UTF-16BE'; } else { $enc = mb_detect_encoding( $str, array('ASCII','UTF-8','Windows-1252','ISO-8859-1'), false ); if( ! $enc ){ throw new Exception('Unknown character encoding'); } } } else if( ! strcasecmp('ISO-8859-1',$enc) || ! strcasecmp('CP-1252', $enc ) ){ $enc = 'Windows-1252'; } else if( ! strcasecmp('UTF8', $enc) ){ $enc = ''; } if( $enc && $enc !== 'ASCII' && $enc !== 'UTF-8' ){ $str = iconv( $enc, 'UTF-8//TRANSLIT', $str ); if( ! $str ){ throw new Exception('Failed to ensure UTF-8 from '.$enc); } } if( $prefix_bom ){ $str = "\xEF\xBB\xBF".$str; } return $str; } function loco_parse_po( $src ){ $src = loco_ensure_utf8( $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 ){ if( empty($entry['id']) ){ continue; } if( empty($entry['str']) ){ $entry['str'] = array( array('') ); } $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; } } } if( $assets && '' === $assets[0]['source'] ){ $headers = loco_parse_po_headers( $assets[0]['target'] ); $indexed = $headers->__get('X-Loco-Lookup'); if( 'id' === $indexed || 'name' === $indexed ){ foreach( $assets as $i => $asset ){ if( isset($asset['notes']) ){ $notes = $texts = array(); foreach( explode("\n",$asset['notes']) as $line ){ 0 === strpos($line,'Source text: ') ? $texts[] = substr($line,13) : $notes[] = $line; } $assets[$i]['notes'] = implode("\n",$notes); $assets[$i]['id'] = $asset['source']; $assets[$i]['source'] = implode("\n",$texts); } } } } 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'] = $this->decodeStr( 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'] = $this->decodeStr($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" ) ){ $arr = explode( "\0", $txt ); $txt = array_shift( $arr ); if( isset($p[$i][1]) ){ foreach( $arr as $_i => $plural_txt ){ $plural_idx = $_i + 1; $p[$i][$plural_idx]['target'] = $this->decodeStr($plural_txt); } } else if( '' === implode('',$arr) ){ } else { throw new Exception('plural has no corresponding msgid_plural at '.$i); } } $r[$i]['target'] = $this->decodeStr($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]; } private function decodeStr( $str ){ $enc = mb_detect_encoding( $str, array('ASCII','UTF-8','ISO-8859-1'), false ); if( $enc && $enc !== 'ASCII' && $enc !== 'UTF-8' ){ $str = iconv( $enc, 'UTF-8', $str ); } return $str; } } 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]['notes']) and $a[] = $this->exp[$index]['notes']; isset($entry['notes']) and $a[] = $entry['notes']; $a && $this->exp[$index]['notes'] = 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 built from Loco core. Do not edit!
4
- * Tue, 29 Jul 2014 09:41:25 +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";}}');
1
  <?php
2
  /**
3
  * Compiled source built from Loco core. Do not edit!
4
+ * Tue, 07 Oct 2014 14:14:21 +0100
5
  */
6
+ function loco_language_country( $lang ){ static $a; if( ! isset($a) ){ $a = unserialize('a:80:{s:2:"af";s:2:"ZA";s:2:"ar";s:2:"AE";s:2:"az";s:2:"AZ";s:2:"bg";s:2:"BG";s:2:"bn";s:2:"BD";s:2:"bs";s:2:"BA";s:2:"ca";s:2:"ES";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:"RU";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:84:{s:2:"af";a:1:{s:2:"ZA";s:24:"Afrikaans (South Africa)";}s:2:"ar";a:3:{s:2:"AE";s:29:"Arabic (United Arab Emirates)";s:2:"IL";s:15:"Arabic (Israel)";s:2:"ZZ";s:6:"Arabic";}s:2:"az";a:3:{s:2:"AZ";s:24:"Azerbaijani (Azerbaijan)";s:2:"TR";s:20:"Azerbaijani (Turkey)";s:2:"ZZ";s:11:"Azerbaijani";}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:"ca";a:2:{s:2:"ES";s:15:"Catalan (Spain)";s:2:"AD";s:17:"Catalan (Andorra)";}s:2:"cs";a:1:{s:2:"CZ";s:5:"Czech";}s:2:"cy";a:2:{s:2:"GB";s:5:"Welsh";s:2:"ZZ";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:3:{s:2:"GR";s:5:"Greek";s:2:"CY";s:14:"Greek (Cyprus)";s:2:"ZZ";s:5:"Greek";}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:2:{s:2:"EE";s:8:"Estonian";s:2:"ZZ";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:2:{s:2:"FI";s:7:"Finnish";s:2:"ZZ";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:2:{s:2:"HR";s:8:"Croatian";s:2:"ZZ";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:2:{s:2:"JP";s:8:"Japanese";s:2:"ZZ";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:2:{s:2:"IN";s:15:"Kannada (India)";s:2:"ZZ";s:7:"Kannada";}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:2:{s:2:"LV";s:7:"Latvian";s:2:"ZZ";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:4:{s:2:"RU";s:17:"Ossetian (Russia)";s:2:"TR";s:17:"Ossetian (Turkey)";s:2:"GE";s:18:"Ossetian (Georgia)";s:2:"ZZ";s:17:"Ossetian; Ossetic";}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:2:{s:2:"AL";s:18:"Albanian (Albania)";s:2:"ZZ";s:8:"Albanian";}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:5:{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:"ZZ";s:7:"Swahili";}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:2:{s:2:"TH";s:15:"Thai (Thailand)";s:2:"ZZ";s:4:"Thai";}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:2:{s:2:"UA";s:19:"Ukrainian (Ukraine)";s:2:"ZZ";s:9:"Ukrainian";}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:2:{s:2:"VN";s:10:"Vietnamese";s:2:"ZZ";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:2:"eu";a:1:{s:2:"ZZ";s:6:"Basque";}s:2:"eo";a:1:{s:2:"ZZ";s:9:"Esperanto";}s:2:"fy";a:1:{s:2:"ZZ";s:15:"Western Frisian";}s:2:"gd";a:1:{s:2:"ZZ";s:23:"Gaelic; Scottish Gaelic";}}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/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.6';
12
  const CAPABILITY = 'manage_options';
13
 
14
  /* current plugin locale */
8
  /** plugin namespace */
9
  const NS = 'loco-translate';
10
 
11
+ const VERSION = '1.4.7';
12
  const CAPABILITY = 'manage_options';
13
 
14
  /* current plugin locale */
lib/loco-locales.php CHANGED
@@ -58,7 +58,8 @@ final class LocoLocale {
58
  }
59
 
60
  public function icon_class(){
61
- return 'flag flag-'.strtolower($this->region);
 
62
  }
63
 
64
  public function get_name(){
@@ -83,17 +84,22 @@ final class LocoLocale {
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
  }
@@ -140,15 +146,51 @@ final class LocoLocale {
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
 
58
  }
59
 
60
  public function icon_class(){
61
+ $cc = $this->region or $cc = self::default_region($this->lang) or $cc = 'zz';
62
+ return 'flag flag-'.strtolower($cc);
63
  }
64
 
65
  public function get_name(){
84
  public static function init( $lc, $cc ){
85
  extract( self::data() );
86
  if( ! $cc ){
87
+ if( self::is_regionless($lc) ){
88
+ // Wordpress expects this locale to be regionless
89
+ }
90
+ else {
91
+ $cc = self::default_region($lc);
92
+ }
93
  }
94
  $label = '';
95
  $locale = new LocoLocale( $lc, $cc );
96
+ // get locale name from our own list
97
  if( isset($locales[$lc]) ){
98
+ $names = self::get_names();
99
+ if( ! $cc && isset($names[$lc]) ){
100
+ $locale->label = $names[$lc];
101
  }
102
+ else if( isset($locales[$lc][$cc]) ){
103
  $locale->label = $locales[$lc][$cc];
104
  }
105
  }
146
  * @return array
147
  */
148
  public static function get_names(){
149
+ static $names = array();
150
+ if( ! $names ){
151
+ $data = self::data();
152
+ foreach( $data['locales'] as $lc => $regions ){
153
+ $no_cc = self::is_regionless($lc);
154
+ foreach( $regions as $cc => $label ){
155
+ if( 'ZZ' === $cc ){
156
+ $names[$lc] = $label;
157
+ }
158
+ else if( $cc === $no_cc ){
159
+ // already have as regionless
160
+ }
161
+ else {
162
+ $names[$lc.'_'.$cc] = $label;
163
+ }
164
+ }
165
  }
166
+ asort($names,SORT_ASC|SORT_NATURAL);
167
  }
168
  return $names;
169
+ }
170
+
171
+
172
+
173
+ /**
174
+ * Test whether a language code is considered regionless by Wordpress core.
175
+ * example: Thai is not "th_TH" but only "th"
176
+ */
177
+ public static function is_regionless( $lc ){
178
+ $data = self::data();
179
+ if( ! isset($data['locales'][$lc]['ZZ']) ){
180
+ return false;
181
+ }
182
+ // return the default region for this language if there was to be one
183
+ return key($data['locales'][$lc]);
184
+ }
185
+
186
+
187
+ /**
188
+ * Alias to loco_language_country
189
+ */
190
+ private static function default_region( $lang ){
191
+ self::data(); // <- ensure lazy load of libs
192
+ return loco_language_country( $lang );
193
+ }
194
 
195
  }
196
 
lib/test/tests/LocalesTest.php CHANGED
@@ -10,7 +10,16 @@ class LocalesTest extends PHPUnit_Framework_TestCase {
10
 
11
  public function testGetAllLocales(){
12
  $map = LocoLocale::get_names();
13
- $this->assertCount( 130, $map );
 
 
 
 
 
 
 
 
 
14
  }
15
 
16
 
@@ -25,10 +34,22 @@ class LocalesTest extends PHPUnit_Framework_TestCase {
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
 
10
 
11
  public function testGetAllLocales(){
12
  $map = LocoLocale::get_names();
13
+ $this->assertCount( 137, $map );
14
+ return $map;
15
+ }
16
+
17
+
18
+ /**
19
+ * @depends testGetAllLocales
20
+ */
21
+ public function testRegionlessLocalesInNames( array $map ){
22
+ $this->assertArrayHasKey( 'th', $map );
23
  }
24
 
25
 
34
  }
35
 
36
 
37
+ public function testLanguageResolvesToDefaultRegion(){
38
+ $locale = loco_locale_resolve('fr');
39
+ $this->assertEquals( 'French', $locale->get_name() );
40
+ $this->assertEquals( 'fr_FR', $locale->get_code() );
41
+ }
42
+
43
+
44
+ public function testRegionlessLanguageResolvesToLanguageOnly(){
45
+ $locale = loco_locale_resolve('th');
46
+ $this->assertEquals( 'Thai', $locale->get_name() );
47
+ $this->assertEquals( 'th', $locale->get_code() );
48
+ }
49
+
50
+ public function testRegionlessLocaleHasFlag(){
51
+ $locale = LocoLocale::init('th', null );
52
+ $this->assertEquals( 'flag flag-th', $locale->icon_class() );
53
  }
54
 
55
 
lib/test/tests/UtilsTest.php CHANGED
@@ -24,6 +24,9 @@ class UtilsTest extends PHPUnit_Framework_TestCase {
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
 
24
  $this->assertEquals( 'en_GB', $locale->get_code() );
25
 
26
  $locale = LocoAdmin::resolve_file_locale('/foo-ja.po');
27
+ $this->assertEquals( 'ja', $locale->get_code() );
28
+
29
+ $locale = LocoAdmin::resolve_file_locale('/foo-ja_jp.po');
30
  $this->assertEquals( 'ja_JP', $locale->get_code() );
31
  }
32
 
loco.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Loco Translate
4
  Plugin URI: http://wordpress.org/extend/plugins/loco-translate
5
  Description: Translate Wordpress plugins and themes directly in your browser
6
  Author: Tim Whitlock
7
- Version: 1.4.6
8
  Author URI: http://localise.biz/help/wordpress/translate-plugin
9
  Text Domain: loco-translate
10
  Domain Path: /languages/
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.7
8
  Author URI: http://localise.biz/help/wordpress/translate-plugin
9
  Text Domain: loco-translate
10
  Domain Path: /languages/
pub/js/lang/loco-translate-pl_PL.js ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Loco js export: JavaScript function
3
+ * Project: loco.js conversion
4
+ * Release: Working copy
5
+ * Locale: pl_PL, Polish
6
+ * Exported at: Wed, 06 Aug 2014 18:03:07 +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==1 ? 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
+ {"Fuzzy":"Niepewny","File system permissions for %s":"Uprawnienia systemu plik\u00f3w dla %s","Back":"Wstecz","Get help":"Pomoc","Package details":"Detale paczki","Translations (PO)":"T\u0142umaczenia (PO)","Template (POT)":"Schemat (POT)","File permissions":"Uprawnienia plik\u00f3w","Extends: %s":"Rozszerza: %s","1 language":{"one":"1 j\u0119zyk","few":"%u j\u0119zyki","many":"%u j\u0119zyk\u00f3w"},"Updated":"Zaktualizowano","OK":"OK","Powered by":"Nap\u0119dzany przez","Loco may not work as expected":"Loco mo\u017ce nie dzia\u0142a\u0107 tak jak oczekujesz","Configure Loco Translate":"Konfiguruj Loco Translate","Compiling MO files":"Kompilowanie plik\u00f3w MO","Use built-in MO compiler.":"U\u017cyj wbudowanego kompilatora MO.","Use external command:":"U\u017cyj zewn\u0119trznej komendy:","Enter path to msgfmt on server":"Wpisz \u015bcie\u017ck\u0119 do msgfmt na serwerze","Generate hash tables":"Generuj tablice hash","Backing up PO files":"Zr\u00f3b kopi\u0119 zapasow\u0105 plik\u00f3w PO","Number of backups to keep of each file:":"Liczba kopii zapasowych ka\u017cdego pliku do przechowania:","Experimental features":"Funkcje eksperymentalne","Enable Wordpress core translations":"W\u0142\u0105cz t\u0142umaczenie silnika Wordpress","Save settings":"Zapisz ustawienia","Template file":"Plik schematu","Switch to...":"Zmie\u0144 na...","never":"nigdy","Save":"Zapisz","Download":"Pobierz","Sync":"Synchronizuj","Revert":"Przywr\u00f3\u0107","Add":"Dodaj","Del":"Usu\u0144","Filter translations":"Filtruj t\u0142umaczenia","Help":"Pomoc","Initialize new translations in %s":"Zainicjuj nowe t\u0142umaczenie w %s","Select from common languages":"Wybierz z cz\u0119stych j\u0119zyk\u00f3w","or enter any language code":"lub wpisz dowolny kod j\u0119zyka","create in <code>%s<\/code>":"stw\u00f3rz w <code>%s<\/code>","create in global languages directory":"stw\u00f3rz w globalny, katalogu j\u0119zyk\u00f3w","Start translating":"Zacznij t\u0142umaczy\u0107","New version available":"Nowa wersja jest dost\u0119pna","Upgrade to version %s of Loco Translate":"Zaktualizuj Loco Translate do wersji %s","Select a plugin or theme to translate":"Wybierz wtyczk\u0119 lub motyw do t\u0142umaczenia","Themes":"Motywy","Plugins":"Wtyczki","Core":"Silnik","%s fuzzy":"%s niepewnych","Failed to compile MO file with built-in compiler":"Niepowodzenie kompilacji pliku MO u\u017cywaj\u0105c wbudowanego kompilatora","File download failed":"B\u0142\u0105d pobierania pliku","Unknown language":"Nieznany j\u0119zyk","Some files not writable":"Niekt\u00f3re pliki s\u0105 tylko do odczytu","Some files missing":"Brakuj\u0105ce niekt\u00f3re pliki","\"%s\" folder not writable":"\"%s\" katalog jest tylko do odczytu","POT file not writable":"Plik POT jest tylko do odczytu","PO file not writable":"Plik PO jest tylko do odczytu","MO file not writable":"Plik MO jest tylko do odczytu","MO file not found":"Nie znaleziono pliku MO","Folder not writable":"Katalog jest tylko do odczytu","Folder not found":"Nie znaleziono katalogu","User does not have permission to manage translations":"U\u017cytkownik nie ma uprawnie\u0144 do zarz\u0105dzania t\u0142umaczeniami","Failed to compile MO file with %s, check your settings":"Nie uda\u0142o si\u0119 skompilowa\u0107 pliku MO u\u017cywaj\u0105c %s, sprawd\u017a ustawienia","Invalid data posted to server":"B\u0142\u0119dne dane wys\u0142ane do serwera","Package not found called %s":"Paczka o nazwie %s nie zosta\u0142a znaleziona","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"Serwer www nie mo\u017ce utworzy\u0107 kopii w \"%s\". Popraw uprawnienia lub wy\u0142\u0105cz kopie zapasowe w ustawieniach","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Serwer www nie mo\u017ce utworzy\u0107 katalogu \"%s\". Popraw uprawnienia lub utw\u00f3rz go r\u0119cznie.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Serwer www nie mo\u017ce utworzy\u0107 plik\u00f3w w katalogu \"%s\". Popraw uprawnienia lub u\u017cyj funkcji pobierania.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"%s jest tylko do odczytu dla serwera www. Popraw uprawnienia lub pobierz i skopiuj do \"%s\/%s\".","Cannot create MO file":"Nie mo\u017cna utworzy\u0107 pliku MO","Cannot overwrite MO file":"Nie mo\u017cna nadpisa\u0107 pliku MO","Failed to write MO file":"B\u0142\u0105d zapisu pliku MO","No source files in this package, nothing to sync":"Brak plik\u00f3w \u017ar\u00f3d\u0142owych w tej paczce, nic do synchronizacji","No strings could be extracted from source files":"\u017badne linie nie mog\u0105 by\u0107 wyci\u0105gni\u0119te z plik\u00f3w \u017ar\u00f3d\u0142owych","Unknown error":"Nieznany b\u0142\u0105d","PO file saved":"Plik PO zapisany","and MO file compiled":"oraz plik MO skompilowany","Merged from %s":"Po\u0142\u0105czono z %s","Merged from source code":"Po\u0142\u0105czono z kodu \u017ar\u00f3d\u0142owego","Already up to date with %s":"Ju\u017c aktualne z %s","Already up to date with source code":"Ju\u017c aktualne z kodu \u017ar\u00f3d\u0142owego","1 new string added":{"one":"1 nowa linia dodana","few":"%s nowe linie dodano","many":"%s nowych linii dodano"},"1 obsolete string removed":{"one":"1 zb\u0119dna linia usuni\u0119ta","few":"%s zb\u0119dne linie usuni\u0119te","many":"%s zb\u0119dnych linii usuni\u0119to"},"Your changes will be lost if you continue without saving":"Utracisz aktualne zmiany je\u015bli b\u0119dziesz kontynuowa\u0142 bez zapisywania","Source text":"Tekst \u017ar\u00f3d\u0142owy","%s translation":"%s t\u0142umaczenie","Comments":"Komentarze","Context":"Kontekst","File check":"Sprawdzenie plik\u00f3w","PO file used as template. This will be renamed to %s on first save":"Plik PO u\u017cyty jako szablon. Nazwa zostanie zmieniona na % przy pierwszym zapisie","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Plik nie mo\u017ce by\u0107 utworzony automatycznie. Napraw uprawnienia albo u\u017cyj Pobierz zamiast Zapisz","%s file is empty":"Plik %s jest pusty","Run Sync to update from source code":"Uruchom synchronizacj\u0119 aby zaktualizowa\u0107 z kodu \u017ar\u00f3d\u0142owego","No strings could be extracted from source code":"Nie mo\u017cna wyci\u0105gn\u0105\u0107 \u017cadnych linii z kodu \u017ar\u00f3d\u0142owego","Run Sync to update from %s":"Uruchom synchronizacj\u0119 aby zaktualizowa\u0107 z %s","Source code has been modified, run Sync to update POT":"Kod \u017ar\u00f3d\u0142owy zosta\u0142 zaktualizowany, uruchom synchronizacj\u0119 aby zaktualizowa\u0107 plik POT","POT has been modified since PO file was saved, run Sync to update":"Plik POT zosta\u0142 zmieniony od czasu zapisu pliku PO, uruchom synchronizacj\u0119 aby zaktualizowa\u0107","Bad file path":"B\u0142\u0119dna \u015bcie\u017cka pliku","Empty or invalid %s file":"Pusty lub b\u0142\u0119dny plik %s","%s file has no header":"Plik %s nie ma nag\u0142\u00f3wka","New template":"Nowy szablon","New language":"Nowy j\u0119zyk","%s%% translated":"%s%% przet\u0142umaczono","1 string":{"one":"1 linia","few":"%s linie","many":"%s linii"},"%s untranslated":"%s nie przet\u0142umaczone","Loco, Translation Management":"Loco, Menad\u017cer T\u0142umacze\u0144","Manage translations":"Zarz\u0105dzaj t\u0142umaczeniami","Translation options":"Opcje t\u0142umacze\u0144","Loco Translate":"Loco Translate","Settings":"Ustawienia","Translation":"T\u0142umaczenie","Packages":"Paczki","Error":"B\u0142\u0105d","Warning":"Ostrze\u017cenie","Permission denied":"Odmowa dost\u0119pu","Settings saved":"Ustawienia zapisane","New PO file":"Nowy plik PO","You must specify a valid locale for a new PO file":"Musisz okre\u015bli\u0107 w\u0142a\u015bciwy region dla nowego pliku PO","No translatable strings found":"Brak dost\u0119pnych lini do t\u0142umaczenia","Cannot create a PO file.":"Nie mo\u017cna utworzy\u0107 pliku PO.","PO file already exists with locale %s":"Plik PO ju\u017c istnieje z regionu %s"}
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.1
6
- Stable tag: 1.4.6
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
@@ -22,6 +22,7 @@ Features include:
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
 
@@ -34,13 +35,23 @@ Official [Loco](https://localise.biz/) WordPress plugin by <a href="//twitter.co
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.
@@ -53,48 +64,63 @@ Please note that this plugin doesn’t support Windows servers and the editor do
53
  No. It's for manually entering your own translations, but we do intend to be integrating some automatic translation services into the plugin soon.
54
 
55
 
 
 
 
 
 
 
 
 
56
  = Why can't it extract any translatable strings from my code? =
57
 
58
  The extraction process looks for Wordpress translation functions with string literal arguments, such as `__('Foo')`.
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
 
72
- There are some good reasons to do so, but you don't have to in order to use this plugin.
73
 
74
- Loco Translate allows you to work purely with PO files and keep them up to date with the source code without the interim step of maintaining a POT file.
75
 
 
76
 
77
- = Why do I get errors when I try to save translations? =
78
 
79
- To save PO files directly to your project, the files must be writable by the web server.
80
 
81
- You shouldn't do this on a live server, only for developing your theme or plugin on a local server.
82
 
83
- If you're unsure how to set file permission on your server, ask your system administrator.
84
 
 
85
 
86
- = How do I create MO files? =
87
 
88
- Every time you save a PO file, Loco tries to compile a MO file in the same location. As above, ensure that the web server is able to write to disk, otherwise MO compilation will fail.
89
 
90
- If you have [Gettext](http://www.gnu.org/software/gettext/) installed on your server you can use this instead of Loco's built-in compiler.
91
- You can configure the path to the `msgfmt` program in the Settings tab.
92
 
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,6 +133,15 @@ Loco Translate does not support Windows versions of PHP, so if your server runni
107
 
108
  == Changelog ==
109
 
 
 
 
 
 
 
 
 
 
110
  = 1.4.6 =
111
  * Updated Swedish and Turkish translations
112
  * Added Indonesian translations
@@ -204,7 +239,7 @@ Loco Translate does not support Windows versions of PHP, so if your server runni
204
 
205
  == Upgrade Notice ==
206
 
207
- = 1.4.6 =
208
  * Bug fixes and improvements.
209
 
210
 
@@ -227,4 +262,5 @@ These features are on our todo list. There's no particular timeframe for any of
227
  * Russian translations by [Alexey Tkachenko](http://atkachenko.ru)
228
  * Indonesian translations by [Ivan Lanin](https://twitter.com/ivanlanin)
229
  * Italian translations by [ElectricFeet](http://wordpress.org/support/profile/electricfeet)
 
230
 
2
  Contributors: timwhitlock
3
  Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, POEdit, productivity
4
  Requires at least: 3.5
5
+ Tested up to: 4.0
6
+ Stable tag: 1.4.7
7
  License: GPLv2 or later
8
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
9
 
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
+ * Built-in Wordpress locale codes
26
 
27
  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>
28
 
35
  3. Go to *Loco Translate > Manage Translations* in the left-hand menu to start translating
36
 
37
 
38
+ To translate your own theme or plugin, follow these steps:
39
 
40
+ 1. Create a `languages` subdirectory in your plugin or theme's root directory
41
+ 2. Ensure this directory writable by the web server
42
  3. Find the theme or plugin in the list at *Loco Translate > Manage Translations*
43
  4. Click `+ New language` and follow the on-screen prompts.
44
 
45
+
46
+ To translate someone else’s theme into your language, follow these steps:
47
+
48
+ 1. Create the global languages directory exists at `wp-content/languages/themes`
49
+ 2. Ensure this directory writable by the web server
50
+ 3. Find the theme in the list at *Loco Translate > Manage Translations*
51
+ 4. Click `+ New language` and follow the on-screen prompts.
52
+
53
+
54
+
55
  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.
56
 
57
  Please note that this plugin doesn’t support Windows servers and the editor doesn't fully support MSIE<=8.
64
  No. It's for manually entering your own translations, but we do intend to be integrating some automatic translation services into the plugin soon.
65
 
66
 
67
+ = Why can't I see the translations appearing in my theme/plugin? =
68
+
69
+ All Loco Translate does is manage your translation process and organize your files, it does not run when people are visiting your site.
70
+
71
+ If you think Loco is saving invalid MO files or putting them in the wrong place, then open a [support ticket](http://wordpress.org/support/plugin/loco-translate),
72
+ but please see [this extended FAQ](https://wordpress.org/support/topic/faq-why-arent-my-translations-showing-up) before posting.
73
+
74
+
75
  = Why can't it extract any translatable strings from my code? =
76
 
77
  The extraction process looks for Wordpress translation functions with string literal arguments, such as `__('Foo')`.
78
 
79
  Using your own custom functions like `myTranslate('Foo')` won't work. Neither will using variables, such as `__( $foo )`.
80
 
81
+ See [more tips on localizing your theme](https://localise.biz/help/wordpress/theme-localization).
 
 
82
 
 
83
 
84
+ = Do I need to create a POT (template) file? =
85
 
86
+ If you’re not familiar with the [Gettext](https://www.gnu.org/software/gettext/) workflow and don’t plan to distribute your plugin then you might want to work without a POT file.
87
 
88
+ There are some good reasons to maintain a POT file, but Loco Translate doesn’t require it and can sync your translations directly with your source code.
89
 
 
90
 
 
91
 
92
+ = Why do I get file warnings when I try to save translations? =
93
 
94
+ To save PO files directly to your site some files and directories must be writable by the web server. If you're unsure how to manage file permissions on your server, ask your system administrator or hosting provider.
95
 
96
+ If writable directories pose a security risk then restrict translation to a development server. The file permissions are only required for editing translations and not related to viewing them.
97
 
 
98
 
99
+ = How do I create MO files? =
100
 
101
+ Every time you save a PO file Loco Translate tries to compile a MO file in the same location. As above, ensure that the web server is able to write to disk, otherwise MO compilation will fail.
102
 
 
103
 
104
+ = Why do I get a syntax error when saving and syncing? =
105
 
106
+ This error means something has gone unexpectedly wrong on your server.
107
+ See [this extended FAQ](https://wordpress.org/support/topic/faq-what-is-causing-unexpected-tokencharacter-syntax-error) for some tips on what to do.
108
 
109
 
110
  = Does it support Windows? =
111
 
112
+ You can access the interface on Windows using Internet Explorer, but version 9 or above is recommended.
113
+
114
+ Loco Translate does not support Windows versions of PHP, so if your server has a Windows operating system the plugin may not work properly.
115
+
116
+
117
+ = This is too technical; why doesn’t it just work? =
118
+
119
+ In most cases it does, but Loco Translate is not a standalone application - it runs on your server and extraneous factors occasionally cause problems. If the plugin is unable to handle a particular situation automatically then you might have to intervene, and there isn’t always a *non-technical* solution to a technical problem.
120
+
121
+ If you think there is a problem with Loco Translate you can open a [support ticket](https://wordpress.org/support/plugin/loco-translate) and provide as much relevant detail as possible.
122
+
123
+ If you have a suggestion on how to improve the experience of using Loco Translate then please [get in touch](https://localise.biz/contact).
124
 
125
 
126
 
133
 
134
  == Changelog ==
135
 
136
+ = 1.4.8 =
137
+ * Added WPLANG warning for WP4 deprecation
138
+ * Added some FAQs
139
+
140
+ = 1.4.7 =
141
+ * Added Polish translations
142
+ * Tested in WP 4.0
143
+ * Add support for Wordpress's regionless locales
144
+
145
  = 1.4.6 =
146
  * Updated Swedish and Turkish translations
147
  * Added Indonesian translations
239
 
240
  == Upgrade Notice ==
241
 
242
+ = 1.4.7 =
243
  * Bug fixes and improvements.
244
 
245
 
262
  * Russian translations by [Alexey Tkachenko](http://atkachenko.ru)
263
  * Indonesian translations by [Ivan Lanin](https://twitter.com/ivanlanin)
264
  * Italian translations by [ElectricFeet](http://wordpress.org/support/profile/electricfeet)
265
+ * Polish translations by [Jerry1333](http://www.jerry1333.net)
266