Version Description
- Child themes use parent text domains
- MO files parsed when PO files missing
- Handle incorrect usage of PO files as templates
- Nicer top-level menu with dashicons icon
- Added IE<=8 warning
Download this release
Release Info
Developer | timwhitlock |
Plugin | Loco Translate |
Version | 1.4.3 |
Comparing to | |
See all releases |
Code changes from version 1.4.2 to 1.4.3
- languages/loco-translate-de_DE.mo +0 -0
- languages/loco-translate-de_DE.po +70 -46
- languages/loco-translate-nl_BE.mo +0 -0
- languages/loco-translate-nl_BE.po +235 -197
- languages/loco-translate-nl_NL.mo +0 -0
- languages/loco-translate-nl_NL.po +235 -197
- languages/loco-translate-tr_TR.mo +0 -0
- languages/loco-translate-tr_TR.po +70 -46
- languages/loco-translate.pot +67 -43
- lib/build/gettext-compiled.php +3 -4
- lib/build/locales-compiled.php +3 -4
- lib/build/shell-compiled.php +2 -3
- lib/build/test.php +22 -0
- lib/loco-admin.php +163 -47
- lib/loco-locales.php +2 -2
- lib/loco-packages.php +204 -22
- loco.php +1 -1
- php/loco-posync.php +1 -1
- pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/_import-poedit-lib.scssc +0 -0
- pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/_import-poedit.scssc +0 -0
- pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/_loco-admin-poedit-lib.scssc +0 -0
- pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/loco-admin-poedit-lib.scssc +0 -0
- pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/loco-admin.scssc +0 -0
- pub/.sass-cache/4ed6af75c0f3919286ece718623a9966a7c474a9/_import-poedit.scssc +0 -0
- pub/css/loco-admin.css +1 -1
- pub/css/loco-legacy.css +14 -0
- pub/img/wp/menu.png +0 -0
- pub/js/admin-poinit.js +0 -15
- pub/js/build/admin-common.js +1 -0
- pub/js/build/admin-poinit.js +1 -0
- pub/js/lang/dummy.php +7 -1
- pub/js/lang/loco-translate-de_DE.js +3 -3
- pub/js/lang/loco-translate-nl_BE.js +3 -3
- pub/js/lang/loco-translate-nl_NL.js +3 -3
- pub/js/lang/loco-translate-tr_TR.js +33 -0
- readme.txt +10 -3
- tpl/admin-fscheck.tpl.php +2 -2
- tpl/admin-list.tpl.php +7 -2
- tpl/admin-nav.tpl.php +18 -15
- tpl/admin-opts.tpl.php +1 -1
- tpl/admin-poedit.tpl.php +3 -3
- tpl/admin-poinit.tpl.php +1 -1
- tpl/admin-root.tpl.php +1 -1
languages/loco-translate-de_DE.mo
CHANGED
Binary file
|
languages/loco-translate-de_DE.po
CHANGED
@@ -3,11 +3,11 @@ 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:
|
7 |
-
"Last-Translator: admin <
|
8 |
"Language-Team: \n"
|
9 |
"Language: German\n"
|
10 |
-
"Plural-Forms: nplurals=2; plural=
|
11 |
"MIME-Version: 1.0\n"
|
12 |
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -38,31 +38,39 @@ msgctxt "Message label"
|
|
38 |
msgid "OK"
|
39 |
msgstr "OK"
|
40 |
|
41 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
42 |
msgid "Settings saved"
|
43 |
msgstr "Einstellungen gespeichert"
|
44 |
|
45 |
-
#: ../lib/loco-admin.php:
|
46 |
msgid "New PO file"
|
47 |
msgstr "Neue PO-Datei"
|
48 |
|
49 |
-
#: ../lib/loco-admin.php:
|
50 |
msgid "You must specify a valid locale for a new PO file"
|
51 |
msgstr "Du musst einen gültigen Pfad für die PO-Datei angeben"
|
52 |
|
53 |
-
#: ../lib/loco-admin.php:
|
54 |
msgid "No translatable strings found"
|
55 |
msgstr "Keine übersetzbaren Zeichenketten gefunden"
|
56 |
|
57 |
-
#: ../lib/loco-admin.php:
|
58 |
msgid "Cannot create a PO file."
|
59 |
msgstr "Erstellen der PO-Datei fehlgeschlagen."
|
60 |
|
61 |
-
#: ../lib/loco-admin.php:
|
62 |
msgid "PO file already exists with locale %s"
|
63 |
msgstr "PO-Datei existiert schon unter %s"
|
64 |
|
65 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
66 |
msgid ""
|
67 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
68 |
"instead of Save"
|
@@ -70,85 +78,97 @@ msgstr ""
|
|
70 |
"Datei kann nicht automatisch erstellt werden. Setze die Datei-Zugriffsrechte "
|
71 |
"oder benutze Download anstatt Speichern"
|
72 |
|
73 |
-
#: ../lib/loco-admin.php:
|
74 |
msgid "%s file is empty"
|
75 |
msgstr "Datei (%s) ist leer"
|
76 |
|
77 |
-
#: ../lib/loco-admin.php:
|
78 |
msgid "Run Sync to update from source code"
|
79 |
msgstr "Benutze Sync, um von der Quelle zu aktualisieren"
|
80 |
|
81 |
-
#: ../lib/loco-admin.php:
|
82 |
msgid "No strings could be extracted from source code"
|
83 |
msgstr "Es konnten keine Zeichenketten vom Quellcode extrahiert werden"
|
84 |
|
85 |
-
#: ../lib/loco-admin.php:
|
86 |
msgid "Run Sync to update from %s"
|
87 |
msgstr "Benutze Sync, um aus %s zu aktualisieren"
|
88 |
|
89 |
-
#: ../lib/loco-admin.php:
|
90 |
msgid "Source code has been modified, run Sync to update POT"
|
91 |
msgstr "Quellcode wurde geändert, benutze Sync um POT zu aktualisieren"
|
92 |
|
93 |
-
#: ../lib/loco-admin.php:
|
94 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
95 |
msgstr ""
|
96 |
"POT wurde aktualisiert bevor die PO-Datei gespeichert wurde. Benutze Sync zum "
|
97 |
"Aktualisieren."
|
98 |
|
99 |
-
#: ../lib/loco-admin.php:
|
100 |
msgid "Bad file path"
|
101 |
msgstr "Falscher Dateipfad"
|
102 |
|
103 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
msgctxt "Add button"
|
105 |
msgid "New template"
|
106 |
msgstr "Neues Template"
|
107 |
|
108 |
-
#: ../lib/loco-admin.php:
|
109 |
msgctxt "Add button"
|
110 |
msgid "New language"
|
111 |
msgstr "Neue Sprache"
|
112 |
|
113 |
-
#: ../lib/loco-admin.php:
|
114 |
msgid "%s%% translated"
|
115 |
msgstr "%s%% übersetzt"
|
116 |
|
117 |
-
#: ../lib/loco-admin.php:
|
118 |
msgid "1 string"
|
119 |
msgid_plural "%s strings"
|
120 |
msgstr[0] "1 Zeichenkette"
|
121 |
msgstr[1] "%s Zeichenketten"
|
122 |
|
123 |
-
#: ../lib/loco-admin.php:
|
124 |
msgid "%s fuzzy"
|
125 |
msgstr "%s undeutlich"
|
126 |
|
127 |
-
#: ../lib/loco-admin.php:
|
128 |
msgid "%s untranslated"
|
129 |
msgstr "%s nicht übersetzt"
|
130 |
|
131 |
-
#: ../lib/loco-admin.php:
|
132 |
msgid "Failed to compile MO file with built-in compiler"
|
133 |
msgstr "Kompilieren der MO-Datei mit dem internen Kompilierer fehlgeschlagen."
|
134 |
|
135 |
-
#: ../lib/loco-admin.php:
|
136 |
msgid "Loco, Translation Management"
|
137 |
msgstr "Loco, Translation Management"
|
138 |
|
139 |
-
#: ../lib/loco-admin.php:
|
140 |
-
msgid "Translation"
|
141 |
-
msgstr "Übersetzung"
|
142 |
-
|
143 |
-
#: ../lib/loco-admin.php:872 ../lib/loco-admin.php:883
|
144 |
msgid "Manage translations"
|
145 |
msgstr "Übersetzungen verwalten"
|
146 |
|
147 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
msgid "Settings"
|
149 |
msgstr "Einstellungen"
|
150 |
|
151 |
-
#: ../lib/loco-admin.php:
|
152 |
msgid "File download failed"
|
153 |
msgstr "Dateidownload ist fehlgeschlagen"
|
154 |
|
@@ -156,38 +176,38 @@ msgstr "Dateidownload ist fehlgeschlagen"
|
|
156 |
msgid "Unknown language"
|
157 |
msgstr "Unbekannte Sprache"
|
158 |
|
159 |
-
#: ../lib/loco-packages.php:
|
160 |
msgid "Some files not writable"
|
161 |
msgstr "Einige Dateien nicht schreibbar"
|
162 |
|
163 |
-
#: ../lib/loco-packages.php:
|
164 |
msgid "Some files missing"
|
165 |
msgstr "Einige Dateien fehlen"
|
166 |
|
167 |
-
#: ../lib/loco-packages.php:
|
168 |
msgid "\"%s\" folder not writable"
|
169 |
msgstr "Ordner \"%s\" nicht schreibbar"
|
170 |
|
171 |
-
#: ../lib/loco-packages.php:
|
172 |
-
msgid "Folder not writable"
|
173 |
-
msgstr "Ordner nicht schreibbar"
|
174 |
-
|
175 |
-
#: ../lib/loco-packages.php:301
|
176 |
msgid "POT file not writable"
|
177 |
msgstr "POT-Datei nicht schreibbar"
|
178 |
|
179 |
-
#: ../lib/loco-packages.php:
|
180 |
msgid "PO file not writable"
|
181 |
msgstr "PO-Datei nicht schreibbar"
|
182 |
|
183 |
-
#: ../lib/loco-packages.php:
|
184 |
msgid "MO file not writable"
|
185 |
msgstr "MO-Datei nicht schreibbar"
|
186 |
|
187 |
-
#: ../lib/loco-packages.php:
|
188 |
msgid "MO file not found"
|
189 |
msgstr "MO-Datei nicht gefunden"
|
190 |
|
|
|
|
|
|
|
|
|
191 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
192 |
msgid "User does not have permission to manage translations"
|
193 |
msgstr "Benutzer hat keine Rechte die Übersetzungen zu verwalten"
|
@@ -295,6 +315,10 @@ msgstr[1] "%s veraltete Zeichenketten entfernt"
|
|
295 |
msgid "Your changes will be lost if you continue without saving"
|
296 |
msgstr "Deine Änderungen gehen verloren, wenn du fortsetzt ohne zu Speichern"
|
297 |
|
|
|
|
|
|
|
|
|
298 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
299 |
msgid "Packages"
|
300 |
msgstr "Pakete"
|
@@ -335,18 +359,18 @@ msgctxt "Table header"
|
|
335 |
msgid "File permissions"
|
336 |
msgstr "Dateizugriffsrechte"
|
337 |
|
338 |
-
#: ../tpl/admin-list.tpl.php:
|
339 |
msgid "1 language"
|
340 |
msgid_plural "%u languages"
|
341 |
msgstr[0] "1 Sprache"
|
342 |
msgstr[1] "%u Sprachen"
|
343 |
|
344 |
-
#: ../tpl/admin-list.tpl.php:
|
345 |
msgctxt "Modified time"
|
346 |
msgid "Updated"
|
347 |
msgstr "Aktualisiert"
|
348 |
|
349 |
-
#: ../tpl/admin-list.tpl.php:
|
350 |
msgid "OK"
|
351 |
msgstr "OK"
|
352 |
|
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: Sun Mar 09 2014 14:55:38 GMT+0000 (GMT)\n"
|
7 |
+
"Last-Translator: admin <r-admin@timwhitlock.info>\n"
|
8 |
"Language-Team: \n"
|
9 |
"Language: German\n"
|
10 |
+
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
11 |
"MIME-Version: 1.0\n"
|
12 |
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
"Content-Transfer-Encoding: 8bit\n"
|
38 |
msgid "OK"
|
39 |
msgstr "OK"
|
40 |
|
41 |
+
#: ../lib/loco-admin.php:42
|
42 |
+
msgid "Permission denied"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: ../lib/loco-admin.php:58
|
46 |
msgid "Settings saved"
|
47 |
msgstr "Einstellungen gespeichert"
|
48 |
|
49 |
+
#: ../lib/loco-admin.php:131
|
50 |
msgid "New PO file"
|
51 |
msgstr "Neue PO-Datei"
|
52 |
|
53 |
+
#: ../lib/loco-admin.php:242
|
54 |
msgid "You must specify a valid locale for a new PO file"
|
55 |
msgstr "Du musst einen gültigen Pfad für die PO-Datei angeben"
|
56 |
|
57 |
+
#: ../lib/loco-admin.php:268 ../lib/loco-admin.php:370
|
58 |
msgid "No translatable strings found"
|
59 |
msgstr "Keine übersetzbaren Zeichenketten gefunden"
|
60 |
|
61 |
+
#: ../lib/loco-admin.php:268
|
62 |
msgid "Cannot create a PO file."
|
63 |
msgstr "Erstellen der PO-Datei fehlgeschlagen."
|
64 |
|
65 |
+
#: ../lib/loco-admin.php:275
|
66 |
msgid "PO file already exists with locale %s"
|
67 |
msgstr "PO-Datei existiert schon unter %s"
|
68 |
|
69 |
+
#: ../lib/loco-admin.php:316
|
70 |
+
msgid "PO file used as template. This will be renamed to %s on first save"
|
71 |
+
msgstr ""
|
72 |
+
|
73 |
+
#: ../lib/loco-admin.php:340
|
74 |
msgid ""
|
75 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
76 |
"instead of Save"
|
78 |
"Datei kann nicht automatisch erstellt werden. Setze die Datei-Zugriffsrechte "
|
79 |
"oder benutze Download anstatt Speichern"
|
80 |
|
81 |
+
#: ../lib/loco-admin.php:349 ../lib/loco-admin.php:358
|
82 |
msgid "%s file is empty"
|
83 |
msgstr "Datei (%s) ist leer"
|
84 |
|
85 |
+
#: ../lib/loco-admin.php:350 ../lib/loco-admin.php:365
|
86 |
msgid "Run Sync to update from source code"
|
87 |
msgstr "Benutze Sync, um von der Quelle zu aktualisieren"
|
88 |
|
89 |
+
#: ../lib/loco-admin.php:354
|
90 |
msgid "No strings could be extracted from source code"
|
91 |
msgstr "Es konnten keine Zeichenketten vom Quellcode extrahiert werden"
|
92 |
|
93 |
+
#: ../lib/loco-admin.php:361
|
94 |
msgid "Run Sync to update from %s"
|
95 |
msgstr "Benutze Sync, um aus %s zu aktualisieren"
|
96 |
|
97 |
+
#: ../lib/loco-admin.php:380
|
98 |
msgid "Source code has been modified, run Sync to update POT"
|
99 |
msgstr "Quellcode wurde geändert, benutze Sync um POT zu aktualisieren"
|
100 |
|
101 |
+
#: ../lib/loco-admin.php:384
|
102 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
103 |
msgstr ""
|
104 |
"POT wurde aktualisiert bevor die PO-Datei gespeichert wurde. Benutze Sync zum "
|
105 |
"Aktualisieren."
|
106 |
|
107 |
+
#: ../lib/loco-admin.php:471
|
108 |
msgid "Bad file path"
|
109 |
msgstr "Falscher Dateipfad"
|
110 |
|
111 |
+
#: ../lib/loco-admin.php:685
|
112 |
+
msgid "Empty or invalid %s file"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: ../lib/loco-admin.php:689
|
116 |
+
msgid "%s file has no header"
|
117 |
+
msgstr ""
|
118 |
+
|
119 |
+
#: ../lib/loco-admin.php:820
|
120 |
msgctxt "Add button"
|
121 |
msgid "New template"
|
122 |
msgstr "Neues Template"
|
123 |
|
124 |
+
#: ../lib/loco-admin.php:839
|
125 |
msgctxt "Add button"
|
126 |
msgid "New language"
|
127 |
msgstr "Neue Sprache"
|
128 |
|
129 |
+
#: ../lib/loco-admin.php:878
|
130 |
msgid "%s%% translated"
|
131 |
msgstr "%s%% übersetzt"
|
132 |
|
133 |
+
#: ../lib/loco-admin.php:878
|
134 |
msgid "1 string"
|
135 |
msgid_plural "%s strings"
|
136 |
msgstr[0] "1 Zeichenkette"
|
137 |
msgstr[1] "%s Zeichenketten"
|
138 |
|
139 |
+
#: ../lib/loco-admin.php:881
|
140 |
msgid "%s fuzzy"
|
141 |
msgstr "%s undeutlich"
|
142 |
|
143 |
+
#: ../lib/loco-admin.php:884
|
144 |
msgid "%s untranslated"
|
145 |
msgstr "%s nicht übersetzt"
|
146 |
|
147 |
+
#: ../lib/loco-admin.php:926
|
148 |
msgid "Failed to compile MO file with built-in compiler"
|
149 |
msgstr "Kompilieren der MO-Datei mit dem internen Kompilierer fehlgeschlagen."
|
150 |
|
151 |
+
#: ../lib/loco-admin.php:965 ../tpl/admin-nav.tpl.php:21
|
152 |
msgid "Loco, Translation Management"
|
153 |
msgstr "Loco, Translation Management"
|
154 |
|
155 |
+
#: ../lib/loco-admin.php:966 ../lib/loco-admin.php:996
|
|
|
|
|
|
|
|
|
156 |
msgid "Manage translations"
|
157 |
msgstr "Übersetzungen verwalten"
|
158 |
|
159 |
+
#: ../lib/loco-admin.php:967
|
160 |
+
msgid "Translation options"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#: ../lib/loco-admin.php:973
|
164 |
+
msgid "Loco Translate"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: ../lib/loco-admin.php:997 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
|
168 |
msgid "Settings"
|
169 |
msgstr "Einstellungen"
|
170 |
|
171 |
+
#: ../lib/loco-admin.php:1021
|
172 |
msgid "File download failed"
|
173 |
msgstr "Dateidownload ist fehlgeschlagen"
|
174 |
|
176 |
msgid "Unknown language"
|
177 |
msgstr "Unbekannte Sprache"
|
178 |
|
179 |
+
#: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
|
180 |
msgid "Some files not writable"
|
181 |
msgstr "Einige Dateien nicht schreibbar"
|
182 |
|
183 |
+
#: ../lib/loco-packages.php:384
|
184 |
msgid "Some files missing"
|
185 |
msgstr "Einige Dateien fehlen"
|
186 |
|
187 |
+
#: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
|
188 |
msgid "\"%s\" folder not writable"
|
189 |
msgstr "Ordner \"%s\" nicht schreibbar"
|
190 |
|
191 |
+
#: ../lib/loco-packages.php:408
|
|
|
|
|
|
|
|
|
192 |
msgid "POT file not writable"
|
193 |
msgstr "POT-Datei nicht schreibbar"
|
194 |
|
195 |
+
#: ../lib/loco-packages.php:413
|
196 |
msgid "PO file not writable"
|
197 |
msgstr "PO-Datei nicht schreibbar"
|
198 |
|
199 |
+
#: ../lib/loco-packages.php:415
|
200 |
msgid "MO file not writable"
|
201 |
msgstr "MO-Datei nicht schreibbar"
|
202 |
|
203 |
+
#: ../lib/loco-packages.php:415
|
204 |
msgid "MO file not found"
|
205 |
msgstr "MO-Datei nicht gefunden"
|
206 |
|
207 |
+
#: ../lib/loco-packages.php:426
|
208 |
+
msgid "Folder not writable"
|
209 |
+
msgstr "Ordner nicht schreibbar"
|
210 |
+
|
211 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
212 |
msgid "User does not have permission to manage translations"
|
213 |
msgstr "Benutzer hat keine Rechte die Übersetzungen zu verwalten"
|
315 |
msgid "Your changes will be lost if you continue without saving"
|
316 |
msgstr "Deine Änderungen gehen verloren, wenn du fortsetzt ohne zu Speichern"
|
317 |
|
318 |
+
#: ../pub/js/lang/dummy.php:23
|
319 |
+
msgid "Translation"
|
320 |
+
msgstr "Übersetzung"
|
321 |
+
|
322 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
323 |
msgid "Packages"
|
324 |
msgstr "Pakete"
|
359 |
msgid "File permissions"
|
360 |
msgstr "Dateizugriffsrechte"
|
361 |
|
362 |
+
#: ../tpl/admin-list.tpl.php:43
|
363 |
msgid "1 language"
|
364 |
msgid_plural "%u languages"
|
365 |
msgstr[0] "1 Sprache"
|
366 |
msgstr[1] "%u Sprachen"
|
367 |
|
368 |
+
#: ../tpl/admin-list.tpl.php:48
|
369 |
msgctxt "Modified time"
|
370 |
msgid "Updated"
|
371 |
msgstr "Aktualisiert"
|
372 |
|
373 |
+
#: ../tpl/admin-list.tpl.php:98
|
374 |
msgid "OK"
|
375 |
msgstr "OK"
|
376 |
|
languages/loco-translate-nl_BE.mo
CHANGED
Binary file
|
languages/loco-translate-nl_BE.po
CHANGED
@@ -3,11 +3,11 @@ 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:
|
7 |
-
"Last-Translator: admin <
|
8 |
"Language-Team: \n"
|
9 |
"Language: Dutch (Belgium)\n"
|
10 |
-
"Plural-Forms: nplurals=2; plural=
|
11 |
"MIME-Version: 1.0\n"
|
12 |
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -22,172 +22,6 @@ msgstr ""
|
|
22 |
"X-Poedit-Basepath: .\n"
|
23 |
"X-Poedit-SearchPath-0: .."
|
24 |
|
25 |
-
#: ../lib/loco-admin.php:47
|
26 |
-
msgid "Settings saved"
|
27 |
-
msgstr ""
|
28 |
-
|
29 |
-
#: ../lib/loco-admin.php:838
|
30 |
-
msgid "Failed to compile MO file with built-in compiler"
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: ../lib/loco-admin.php:869
|
34 |
-
msgid "Translation"
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
#: ../lib/loco-admin.php:884 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
|
38 |
-
msgid "Settings"
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: ../lib/loco-admin.php:908
|
42 |
-
msgid "File download failed"
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: ../lib/loco-packages.php:249
|
46 |
-
msgid "Some files missing"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: ../lib/loco-packages.php:266
|
50 |
-
msgid "Folder not writable"
|
51 |
-
msgstr ""
|
52 |
-
|
53 |
-
#: ../lib/loco-packages.php:268
|
54 |
-
msgid "POT file not writable"
|
55 |
-
msgstr ""
|
56 |
-
|
57 |
-
#: ../lib/loco-packages.php:272
|
58 |
-
msgid "PO file not writable"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
#: ../lib/loco-packages.php:274
|
62 |
-
msgid "MO file not writable"
|
63 |
-
msgstr ""
|
64 |
-
|
65 |
-
#: ../lib/loco-packages.php:274
|
66 |
-
msgid "MO file not found"
|
67 |
-
msgstr ""
|
68 |
-
|
69 |
-
#: ../php/loco-download.php:68 ../php/loco-posave.php:88
|
70 |
-
msgid "Failed to compile MO file with %s, check your settings"
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: ../php/loco-posave.php:23 ../php/loco-posync.php:22
|
74 |
-
msgid "Package not found called %s"
|
75 |
-
msgstr ""
|
76 |
-
|
77 |
-
#: ../php/loco-posave.php:69
|
78 |
-
msgid "Cannot create MO file"
|
79 |
-
msgstr ""
|
80 |
-
|
81 |
-
#: ../php/loco-posave.php:72
|
82 |
-
msgid "Cannot overwrite MO file"
|
83 |
-
msgstr ""
|
84 |
-
|
85 |
-
#: ../php/loco-posave.php:98
|
86 |
-
msgid "Failed to write MO file"
|
87 |
-
msgstr ""
|
88 |
-
|
89 |
-
#: ../pub/js/lang/dummy.php:8
|
90 |
-
msgid "Unknown error"
|
91 |
-
msgstr ""
|
92 |
-
|
93 |
-
#: ../pub/js/lang/dummy.php:9
|
94 |
-
msgid "PO file saved"
|
95 |
-
msgstr ""
|
96 |
-
|
97 |
-
#: ../pub/js/lang/dummy.php:10
|
98 |
-
msgid "and MO file compiled"
|
99 |
-
msgstr ""
|
100 |
-
|
101 |
-
#: ../pub/js/lang/dummy.php:11
|
102 |
-
msgid "Merged from %s"
|
103 |
-
msgstr ""
|
104 |
-
|
105 |
-
#: ../pub/js/lang/dummy.php:12
|
106 |
-
msgid "Merged from source code"
|
107 |
-
msgstr ""
|
108 |
-
|
109 |
-
#: ../pub/js/lang/dummy.php:13
|
110 |
-
msgid "Already up to date with %s"
|
111 |
-
msgstr ""
|
112 |
-
|
113 |
-
#: ../pub/js/lang/dummy.php:14
|
114 |
-
msgid "Already up to date with source code"
|
115 |
-
msgstr ""
|
116 |
-
|
117 |
-
#: ../pub/js/lang/dummy.php:15
|
118 |
-
msgid "1 new string added"
|
119 |
-
msgid_plural "%s new strings added"
|
120 |
-
msgstr[0] ""
|
121 |
-
msgstr[1] ""
|
122 |
-
|
123 |
-
#: ../pub/js/lang/dummy.php:16
|
124 |
-
msgid "1 obsolete string removed"
|
125 |
-
msgid_plural "%s obsolete strings removed"
|
126 |
-
msgstr[0] ""
|
127 |
-
msgstr[1] ""
|
128 |
-
|
129 |
-
#: ../pub/js/lang/dummy.php:17
|
130 |
-
msgid "Your changes will be lost if you continue without saving"
|
131 |
-
msgstr ""
|
132 |
-
|
133 |
-
#: ../tpl/admin-fscheck.tpl.php:8
|
134 |
-
msgid "File check"
|
135 |
-
msgstr ""
|
136 |
-
|
137 |
-
#: ../tpl/admin-fscheck.tpl.php:17
|
138 |
-
msgid "File system permissions for %s"
|
139 |
-
msgstr ""
|
140 |
-
|
141 |
-
#: ../tpl/admin-fscheck.tpl.php:40
|
142 |
-
msgid "Back"
|
143 |
-
msgstr ""
|
144 |
-
|
145 |
-
#: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:64
|
146 |
-
msgid "Get help"
|
147 |
-
msgstr ""
|
148 |
-
|
149 |
-
#: ../tpl/admin-list.tpl.php:93
|
150 |
-
msgid "OK"
|
151 |
-
msgstr ""
|
152 |
-
|
153 |
-
#: ../tpl/admin-opts.tpl.php:18
|
154 |
-
msgid "Configure Loco Translate"
|
155 |
-
msgstr ""
|
156 |
-
|
157 |
-
#: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
|
158 |
-
msgid "Compiling MO files"
|
159 |
-
msgstr ""
|
160 |
-
|
161 |
-
#: ../tpl/admin-opts.tpl.php:36
|
162 |
-
msgid "Use built-in MO compiler."
|
163 |
-
msgstr ""
|
164 |
-
|
165 |
-
#: ../tpl/admin-opts.tpl.php:42
|
166 |
-
msgid "Use external command:"
|
167 |
-
msgstr ""
|
168 |
-
|
169 |
-
#: ../tpl/admin-opts.tpl.php:47
|
170 |
-
msgid "Enter path to msgfmt on server"
|
171 |
-
msgstr ""
|
172 |
-
|
173 |
-
#: ../tpl/admin-opts.tpl.php:54
|
174 |
-
msgid "Generate hash tables"
|
175 |
-
msgstr ""
|
176 |
-
|
177 |
-
#: ../tpl/admin-opts.tpl.php:63
|
178 |
-
msgid "Save settings"
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
#: ../tpl/admin-poedit.tpl.php:39
|
182 |
-
msgctxt "Dropdown label"
|
183 |
-
msgid "Switch to..."
|
184 |
-
msgstr ""
|
185 |
-
|
186 |
-
#: ../tpl/admin-root.tpl.php:66
|
187 |
-
msgctxt "Package list header"
|
188 |
-
msgid "Core"
|
189 |
-
msgstr ""
|
190 |
-
|
191 |
#. Translators: Bold text label in admin error messages
|
192 |
#: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
|
193 |
msgctxt "Message label"
|
@@ -204,27 +38,39 @@ msgctxt "Message label"
|
|
204 |
msgid "OK"
|
205 |
msgstr "OK"
|
206 |
|
207 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
msgid "New PO file"
|
209 |
msgstr "Nieuw PO-bestand"
|
210 |
|
211 |
-
#: ../lib/loco-admin.php:
|
212 |
msgid "You must specify a valid locale for a new PO file"
|
213 |
msgstr "Specifieer een geldige locale voor een nieuw PO-bestand"
|
214 |
|
215 |
-
#: ../lib/loco-admin.php:
|
216 |
msgid "No translatable strings found"
|
217 |
msgstr "Geen vertaalbare teksten gevonden"
|
218 |
|
219 |
-
#: ../lib/loco-admin.php:
|
220 |
msgid "Cannot create a PO file."
|
221 |
msgstr "Kan geen PO-bestand aanmaken"
|
222 |
|
223 |
-
#: ../lib/loco-admin.php:
|
224 |
msgid "PO file already exists with locale %s"
|
225 |
msgstr "PO-bestand bestaat al in locale %s"
|
226 |
|
227 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
228 |
msgid ""
|
229 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
230 |
"instead of Save"
|
@@ -232,91 +78,157 @@ msgstr ""
|
|
232 |
"Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik "
|
233 |
"download en bewaar."
|
234 |
|
235 |
-
#: ../lib/loco-admin.php:
|
236 |
msgid "%s file is empty"
|
237 |
msgstr "Het bestand %s is leeg"
|
238 |
|
239 |
-
#: ../lib/loco-admin.php:
|
240 |
msgid "Run Sync to update from source code"
|
241 |
msgstr "Voer Sync uit om de broncode up te daten"
|
242 |
|
243 |
-
#: ../lib/loco-admin.php:
|
244 |
msgid "No strings could be extracted from source code"
|
245 |
msgstr "Er kon geen tekst uit de broncode gehaald worden"
|
246 |
|
247 |
-
#: ../lib/loco-admin.php:
|
248 |
msgid "Run Sync to update from %s"
|
249 |
msgstr "Gebruik Sync om vanuit %s up te daten"
|
250 |
|
251 |
-
#: ../lib/loco-admin.php:
|
252 |
msgid "Source code has been modified, run Sync to update POT"
|
253 |
msgstr "Broncode is veranderd. Gebruik Sync om POT up te daten"
|
254 |
|
255 |
-
#: ../lib/loco-admin.php:
|
256 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
257 |
msgstr "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten"
|
258 |
|
259 |
-
#: ../lib/loco-admin.php:
|
260 |
msgid "Bad file path"
|
261 |
msgstr "Foute bestandslocatie"
|
262 |
|
263 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
msgctxt "Add button"
|
265 |
msgid "New template"
|
266 |
msgstr "Nieuw sjabloon"
|
267 |
|
268 |
-
#: ../lib/loco-admin.php:
|
269 |
msgctxt "Add button"
|
270 |
msgid "New language"
|
271 |
msgstr "Nieuwe taal"
|
272 |
|
273 |
-
#: ../lib/loco-admin.php:
|
274 |
msgid "%s%% translated"
|
275 |
msgstr "%s%% vertaald"
|
276 |
|
277 |
-
#: ../lib/loco-admin.php:
|
278 |
msgid "1 string"
|
279 |
msgid_plural "%s strings"
|
280 |
msgstr[0] "1 te vertalen tekst"
|
281 |
msgstr[1] "%s te vertalen teksten"
|
282 |
|
283 |
-
#: ../lib/loco-admin.php:
|
284 |
msgid "%s fuzzy"
|
285 |
msgstr "%s onzeker"
|
286 |
|
287 |
-
#: ../lib/loco-admin.php:
|
288 |
msgid "%s untranslated"
|
289 |
msgstr "%s onvertaald"
|
290 |
|
291 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
292 |
msgid "Loco, Translation Management"
|
293 |
msgstr "Loco, vertalingsbeheer"
|
294 |
|
295 |
-
#: ../lib/loco-admin.php:
|
296 |
msgid "Manage translations"
|
297 |
msgstr "Beheer vertalingen"
|
298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
#: ../lib/loco-locales.php:70
|
300 |
msgid "Unknown language"
|
301 |
msgstr "Onbekende taal"
|
302 |
|
303 |
-
#: ../lib/loco-packages.php:
|
304 |
msgid "Some files not writable"
|
305 |
msgstr "Sommige bestanden hebben geen schrijfrechten"
|
306 |
|
307 |
-
#: ../lib/loco-packages.php:
|
|
|
|
|
|
|
|
|
308 |
msgid "\"%s\" folder not writable"
|
309 |
msgstr "Map \"%s\" heeft geen schrijfrechten"
|
310 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
312 |
msgid "User does not have permission to manage translations"
|
313 |
msgstr "Gebruik heeft geen rechten om vertalingen te beheren"
|
314 |
|
|
|
|
|
|
|
|
|
315 |
#: ../php/loco-posave.php:10 ../php/loco-posync.php:9
|
316 |
msgid "Invalid data posted to server"
|
317 |
msgstr "Ongeldige gegevens op server"
|
318 |
|
319 |
-
#: ../php/loco-posave.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
320 |
msgid ""
|
321 |
"Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
|
322 |
"it manually."
|
@@ -324,7 +236,7 @@ msgstr ""
|
|
324 |
"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak "
|
325 |
"het zelf aan."
|
326 |
|
327 |
-
#: ../php/loco-posave.php:
|
328 |
msgid ""
|
329 |
"Web server cannot create files in the \"%s\" directory. Fix file permissions or "
|
330 |
"use the download function."
|
@@ -332,7 +244,7 @@ msgstr ""
|
|
332 |
"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik "
|
333 |
"de downloadfunctie."
|
334 |
|
335 |
-
#: ../php/loco-posave.php:
|
336 |
msgid ""
|
337 |
"%s file is not writable by the web server. Fix file permissions or download and "
|
338 |
"copy to \"%s/%s\"."
|
@@ -340,14 +252,90 @@ msgstr ""
|
|
340 |
"Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
|
341 |
"schrijfrechten of download en kopieer naar \"%s/%s\"."
|
342 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
343 |
#: ../php/loco-posync.php:53
|
344 |
msgid "No strings could be extracted from source files"
|
345 |
msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
|
346 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
347 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
348 |
msgid "Packages"
|
349 |
msgstr "Pakketten"
|
350 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
351 |
#: ../tpl/admin-list.tpl.php:11
|
352 |
msgctxt "Table header"
|
353 |
msgid "Package details"
|
@@ -368,25 +356,70 @@ msgctxt "Table header"
|
|
368 |
msgid "File permissions"
|
369 |
msgstr "Bestandsrechten"
|
370 |
|
371 |
-
#: ../tpl/admin-list.tpl.php:
|
372 |
msgid "1 language"
|
373 |
msgid_plural "%u languages"
|
374 |
msgstr[0] "1 taal"
|
375 |
msgstr[1] "%u talen"
|
376 |
|
377 |
-
#: ../tpl/admin-list.tpl.php:
|
378 |
msgctxt "Modified time"
|
379 |
msgid "Updated"
|
380 |
msgstr "Geüpdated"
|
381 |
|
|
|
|
|
|
|
|
|
382 |
#: ../tpl/admin-nav.tpl.php:20
|
383 |
msgid "Powered by"
|
384 |
msgstr "Ondersteund door"
|
385 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
386 |
#: ../tpl/admin-poedit.tpl.php:31
|
387 |
msgid "Template file"
|
388 |
msgstr "Sjabloonbestand"
|
389 |
|
|
|
|
|
|
|
|
|
|
|
390 |
#: ../tpl/admin-poedit.tpl.php:57
|
391 |
msgid "Updated"
|
392 |
msgstr "Geüpdated"
|
@@ -478,3 +511,8 @@ msgstr "Thema's"
|
|
478 |
msgctxt "Package list header"
|
479 |
msgid "Plugins"
|
480 |
msgstr "Plug-ins"
|
|
|
|
|
|
|
|
|
|
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: Sun Mar 09 2014 14:55:43 GMT+0000 (GMT)\n"
|
7 |
+
"Last-Translator: admin <r-admin@timwhitlock.info>\n"
|
8 |
"Language-Team: \n"
|
9 |
"Language: Dutch (Belgium)\n"
|
10 |
+
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
11 |
"MIME-Version: 1.0\n"
|
12 |
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
"Content-Transfer-Encoding: 8bit\n"
|
22 |
"X-Poedit-Basepath: .\n"
|
23 |
"X-Poedit-SearchPath-0: .."
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
#. Translators: Bold text label in admin error messages
|
26 |
#: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
|
27 |
msgctxt "Message label"
|
38 |
msgid "OK"
|
39 |
msgstr "OK"
|
40 |
|
41 |
+
#: ../lib/loco-admin.php:42
|
42 |
+
msgid "Permission denied"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: ../lib/loco-admin.php:58
|
46 |
+
msgid "Settings saved"
|
47 |
+
msgstr ""
|
48 |
+
|
49 |
+
#: ../lib/loco-admin.php:131
|
50 |
msgid "New PO file"
|
51 |
msgstr "Nieuw PO-bestand"
|
52 |
|
53 |
+
#: ../lib/loco-admin.php:242
|
54 |
msgid "You must specify a valid locale for a new PO file"
|
55 |
msgstr "Specifieer een geldige locale voor een nieuw PO-bestand"
|
56 |
|
57 |
+
#: ../lib/loco-admin.php:268 ../lib/loco-admin.php:370
|
58 |
msgid "No translatable strings found"
|
59 |
msgstr "Geen vertaalbare teksten gevonden"
|
60 |
|
61 |
+
#: ../lib/loco-admin.php:268
|
62 |
msgid "Cannot create a PO file."
|
63 |
msgstr "Kan geen PO-bestand aanmaken"
|
64 |
|
65 |
+
#: ../lib/loco-admin.php:275
|
66 |
msgid "PO file already exists with locale %s"
|
67 |
msgstr "PO-bestand bestaat al in locale %s"
|
68 |
|
69 |
+
#: ../lib/loco-admin.php:316
|
70 |
+
msgid "PO file used as template. This will be renamed to %s on first save"
|
71 |
+
msgstr ""
|
72 |
+
|
73 |
+
#: ../lib/loco-admin.php:340
|
74 |
msgid ""
|
75 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
76 |
"instead of Save"
|
78 |
"Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik "
|
79 |
"download en bewaar."
|
80 |
|
81 |
+
#: ../lib/loco-admin.php:349 ../lib/loco-admin.php:358
|
82 |
msgid "%s file is empty"
|
83 |
msgstr "Het bestand %s is leeg"
|
84 |
|
85 |
+
#: ../lib/loco-admin.php:350 ../lib/loco-admin.php:365
|
86 |
msgid "Run Sync to update from source code"
|
87 |
msgstr "Voer Sync uit om de broncode up te daten"
|
88 |
|
89 |
+
#: ../lib/loco-admin.php:354
|
90 |
msgid "No strings could be extracted from source code"
|
91 |
msgstr "Er kon geen tekst uit de broncode gehaald worden"
|
92 |
|
93 |
+
#: ../lib/loco-admin.php:361
|
94 |
msgid "Run Sync to update from %s"
|
95 |
msgstr "Gebruik Sync om vanuit %s up te daten"
|
96 |
|
97 |
+
#: ../lib/loco-admin.php:380
|
98 |
msgid "Source code has been modified, run Sync to update POT"
|
99 |
msgstr "Broncode is veranderd. Gebruik Sync om POT up te daten"
|
100 |
|
101 |
+
#: ../lib/loco-admin.php:384
|
102 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
103 |
msgstr "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten"
|
104 |
|
105 |
+
#: ../lib/loco-admin.php:471
|
106 |
msgid "Bad file path"
|
107 |
msgstr "Foute bestandslocatie"
|
108 |
|
109 |
+
#: ../lib/loco-admin.php:685
|
110 |
+
msgid "Empty or invalid %s file"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: ../lib/loco-admin.php:689
|
114 |
+
msgid "%s file has no header"
|
115 |
+
msgstr ""
|
116 |
+
|
117 |
+
#: ../lib/loco-admin.php:820
|
118 |
msgctxt "Add button"
|
119 |
msgid "New template"
|
120 |
msgstr "Nieuw sjabloon"
|
121 |
|
122 |
+
#: ../lib/loco-admin.php:839
|
123 |
msgctxt "Add button"
|
124 |
msgid "New language"
|
125 |
msgstr "Nieuwe taal"
|
126 |
|
127 |
+
#: ../lib/loco-admin.php:878
|
128 |
msgid "%s%% translated"
|
129 |
msgstr "%s%% vertaald"
|
130 |
|
131 |
+
#: ../lib/loco-admin.php:878
|
132 |
msgid "1 string"
|
133 |
msgid_plural "%s strings"
|
134 |
msgstr[0] "1 te vertalen tekst"
|
135 |
msgstr[1] "%s te vertalen teksten"
|
136 |
|
137 |
+
#: ../lib/loco-admin.php:881
|
138 |
msgid "%s fuzzy"
|
139 |
msgstr "%s onzeker"
|
140 |
|
141 |
+
#: ../lib/loco-admin.php:884
|
142 |
msgid "%s untranslated"
|
143 |
msgstr "%s onvertaald"
|
144 |
|
145 |
+
#: ../lib/loco-admin.php:926
|
146 |
+
msgid "Failed to compile MO file with built-in compiler"
|
147 |
+
msgstr ""
|
148 |
+
|
149 |
+
#: ../lib/loco-admin.php:965 ../tpl/admin-nav.tpl.php:21
|
150 |
msgid "Loco, Translation Management"
|
151 |
msgstr "Loco, vertalingsbeheer"
|
152 |
|
153 |
+
#: ../lib/loco-admin.php:966 ../lib/loco-admin.php:996
|
154 |
msgid "Manage translations"
|
155 |
msgstr "Beheer vertalingen"
|
156 |
|
157 |
+
#: ../lib/loco-admin.php:967
|
158 |
+
msgid "Translation options"
|
159 |
+
msgstr ""
|
160 |
+
|
161 |
+
#: ../lib/loco-admin.php:973
|
162 |
+
msgid "Loco Translate"
|
163 |
+
msgstr ""
|
164 |
+
|
165 |
+
#: ../lib/loco-admin.php:997 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
|
166 |
+
msgid "Settings"
|
167 |
+
msgstr ""
|
168 |
+
|
169 |
+
#: ../lib/loco-admin.php:1021
|
170 |
+
msgid "File download failed"
|
171 |
+
msgstr ""
|
172 |
+
|
173 |
#: ../lib/loco-locales.php:70
|
174 |
msgid "Unknown language"
|
175 |
msgstr "Onbekende taal"
|
176 |
|
177 |
+
#: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
|
178 |
msgid "Some files not writable"
|
179 |
msgstr "Sommige bestanden hebben geen schrijfrechten"
|
180 |
|
181 |
+
#: ../lib/loco-packages.php:384
|
182 |
+
msgid "Some files missing"
|
183 |
+
msgstr ""
|
184 |
+
|
185 |
+
#: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
|
186 |
msgid "\"%s\" folder not writable"
|
187 |
msgstr "Map \"%s\" heeft geen schrijfrechten"
|
188 |
|
189 |
+
#: ../lib/loco-packages.php:408
|
190 |
+
msgid "POT file not writable"
|
191 |
+
msgstr ""
|
192 |
+
|
193 |
+
#: ../lib/loco-packages.php:413
|
194 |
+
msgid "PO file not writable"
|
195 |
+
msgstr ""
|
196 |
+
|
197 |
+
#: ../lib/loco-packages.php:415
|
198 |
+
msgid "MO file not writable"
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: ../lib/loco-packages.php:415
|
202 |
+
msgid "MO file not found"
|
203 |
+
msgstr ""
|
204 |
+
|
205 |
+
#: ../lib/loco-packages.php:426
|
206 |
+
msgid "Folder not writable"
|
207 |
+
msgstr ""
|
208 |
+
|
209 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
210 |
msgid "User does not have permission to manage translations"
|
211 |
msgstr "Gebruik heeft geen rechten om vertalingen te beheren"
|
212 |
|
213 |
+
#: ../php/loco-download.php:75 ../php/loco-posave.php:121
|
214 |
+
msgid "Failed to compile MO file with %s, check your settings"
|
215 |
+
msgstr ""
|
216 |
+
|
217 |
#: ../php/loco-posave.php:10 ../php/loco-posync.php:9
|
218 |
msgid "Invalid data posted to server"
|
219 |
msgstr "Ongeldige gegevens op server"
|
220 |
|
221 |
+
#: ../php/loco-posave.php:23 ../php/loco-posync.php:22
|
222 |
+
msgid "Package not found called %s"
|
223 |
+
msgstr ""
|
224 |
+
|
225 |
+
#: ../php/loco-posave.php:58
|
226 |
+
msgid ""
|
227 |
+
"Web server cannot create backups in \"%s\". Fix file permissions or disable "
|
228 |
+
"backups in settings"
|
229 |
+
msgstr ""
|
230 |
+
|
231 |
+
#: ../php/loco-posave.php:66
|
232 |
msgid ""
|
233 |
"Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
|
234 |
"it manually."
|
236 |
"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak "
|
237 |
"het zelf aan."
|
238 |
|
239 |
+
#: ../php/loco-posave.php:69
|
240 |
msgid ""
|
241 |
"Web server cannot create files in the \"%s\" directory. Fix file permissions or "
|
242 |
"use the download function."
|
244 |
"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik "
|
245 |
"de downloadfunctie."
|
246 |
|
247 |
+
#: ../php/loco-posave.php:81
|
248 |
msgid ""
|
249 |
"%s file is not writable by the web server. Fix file permissions or download and "
|
250 |
"copy to \"%s/%s\"."
|
252 |
"Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
|
253 |
"schrijfrechten of download en kopieer naar \"%s/%s\"."
|
254 |
|
255 |
+
#: ../php/loco-posave.php:102
|
256 |
+
msgid "Cannot create MO file"
|
257 |
+
msgstr ""
|
258 |
+
|
259 |
+
#: ../php/loco-posave.php:105
|
260 |
+
msgid "Cannot overwrite MO file"
|
261 |
+
msgstr ""
|
262 |
+
|
263 |
+
#: ../php/loco-posave.php:131
|
264 |
+
msgid "Failed to write MO file"
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
#: ../php/loco-posync.php:53
|
268 |
msgid "No strings could be extracted from source files"
|
269 |
msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
|
270 |
|
271 |
+
#: ../pub/js/lang/dummy.php:8
|
272 |
+
msgid "Unknown error"
|
273 |
+
msgstr ""
|
274 |
+
|
275 |
+
#: ../pub/js/lang/dummy.php:9
|
276 |
+
msgid "PO file saved"
|
277 |
+
msgstr ""
|
278 |
+
|
279 |
+
#: ../pub/js/lang/dummy.php:10
|
280 |
+
msgid "and MO file compiled"
|
281 |
+
msgstr ""
|
282 |
+
|
283 |
+
#: ../pub/js/lang/dummy.php:11
|
284 |
+
msgid "Merged from %s"
|
285 |
+
msgstr ""
|
286 |
+
|
287 |
+
#: ../pub/js/lang/dummy.php:12
|
288 |
+
msgid "Merged from source code"
|
289 |
+
msgstr ""
|
290 |
+
|
291 |
+
#: ../pub/js/lang/dummy.php:13
|
292 |
+
msgid "Already up to date with %s"
|
293 |
+
msgstr ""
|
294 |
+
|
295 |
+
#: ../pub/js/lang/dummy.php:14
|
296 |
+
msgid "Already up to date with source code"
|
297 |
+
msgstr ""
|
298 |
+
|
299 |
+
#: ../pub/js/lang/dummy.php:15
|
300 |
+
msgid "1 new string added"
|
301 |
+
msgid_plural "%s new strings added"
|
302 |
+
msgstr[0] ""
|
303 |
+
msgstr[1] ""
|
304 |
+
|
305 |
+
#: ../pub/js/lang/dummy.php:16
|
306 |
+
msgid "1 obsolete string removed"
|
307 |
+
msgid_plural "%s obsolete strings removed"
|
308 |
+
msgstr[0] ""
|
309 |
+
msgstr[1] ""
|
310 |
+
|
311 |
+
#: ../pub/js/lang/dummy.php:17
|
312 |
+
msgid "Your changes will be lost if you continue without saving"
|
313 |
+
msgstr ""
|
314 |
+
|
315 |
+
#: ../pub/js/lang/dummy.php:23
|
316 |
+
msgid "Translation"
|
317 |
+
msgstr ""
|
318 |
+
|
319 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
320 |
msgid "Packages"
|
321 |
msgstr "Pakketten"
|
322 |
|
323 |
+
#: ../tpl/admin-fscheck.tpl.php:8
|
324 |
+
msgid "File check"
|
325 |
+
msgstr ""
|
326 |
+
|
327 |
+
#: ../tpl/admin-fscheck.tpl.php:17
|
328 |
+
msgid "File system permissions for %s"
|
329 |
+
msgstr ""
|
330 |
+
|
331 |
+
#: ../tpl/admin-fscheck.tpl.php:40
|
332 |
+
msgid "Back"
|
333 |
+
msgstr ""
|
334 |
+
|
335 |
+
#: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:80
|
336 |
+
msgid "Get help"
|
337 |
+
msgstr ""
|
338 |
+
|
339 |
#: ../tpl/admin-list.tpl.php:11
|
340 |
msgctxt "Table header"
|
341 |
msgid "Package details"
|
356 |
msgid "File permissions"
|
357 |
msgstr "Bestandsrechten"
|
358 |
|
359 |
+
#: ../tpl/admin-list.tpl.php:43
|
360 |
msgid "1 language"
|
361 |
msgid_plural "%u languages"
|
362 |
msgstr[0] "1 taal"
|
363 |
msgstr[1] "%u talen"
|
364 |
|
365 |
+
#: ../tpl/admin-list.tpl.php:48
|
366 |
msgctxt "Modified time"
|
367 |
msgid "Updated"
|
368 |
msgstr "Geüpdated"
|
369 |
|
370 |
+
#: ../tpl/admin-list.tpl.php:98
|
371 |
+
msgid "OK"
|
372 |
+
msgstr ""
|
373 |
+
|
374 |
#: ../tpl/admin-nav.tpl.php:20
|
375 |
msgid "Powered by"
|
376 |
msgstr "Ondersteund door"
|
377 |
|
378 |
+
#: ../tpl/admin-opts.tpl.php:18
|
379 |
+
msgid "Configure Loco Translate"
|
380 |
+
msgstr ""
|
381 |
+
|
382 |
+
#: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
|
383 |
+
msgid "Compiling MO files"
|
384 |
+
msgstr ""
|
385 |
+
|
386 |
+
#: ../tpl/admin-opts.tpl.php:36
|
387 |
+
msgid "Use built-in MO compiler."
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: ../tpl/admin-opts.tpl.php:42
|
391 |
+
msgid "Use external command:"
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: ../tpl/admin-opts.tpl.php:47
|
395 |
+
msgid "Enter path to msgfmt on server"
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: ../tpl/admin-opts.tpl.php:54
|
399 |
+
msgid "Generate hash tables"
|
400 |
+
msgstr ""
|
401 |
+
|
402 |
+
#: ../tpl/admin-opts.tpl.php:61 ../tpl/admin-opts.tpl.php:65
|
403 |
+
msgid "Backing up PO files"
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
#: ../tpl/admin-opts.tpl.php:69
|
407 |
+
msgid "Number of backups to keep of each file:"
|
408 |
+
msgstr ""
|
409 |
+
|
410 |
+
#: ../tpl/admin-opts.tpl.php:79
|
411 |
+
msgid "Save settings"
|
412 |
+
msgstr ""
|
413 |
+
|
414 |
#: ../tpl/admin-poedit.tpl.php:31
|
415 |
msgid "Template file"
|
416 |
msgstr "Sjabloonbestand"
|
417 |
|
418 |
+
#: ../tpl/admin-poedit.tpl.php:39
|
419 |
+
msgctxt "Dropdown label"
|
420 |
+
msgid "Switch to..."
|
421 |
+
msgstr ""
|
422 |
+
|
423 |
#: ../tpl/admin-poedit.tpl.php:57
|
424 |
msgid "Updated"
|
425 |
msgstr "Geüpdated"
|
511 |
msgctxt "Package list header"
|
512 |
msgid "Plugins"
|
513 |
msgstr "Plug-ins"
|
514 |
+
|
515 |
+
#: ../tpl/admin-root.tpl.php:66
|
516 |
+
msgctxt "Package list header"
|
517 |
+
msgid "Core"
|
518 |
+
msgstr ""
|
languages/loco-translate-nl_NL.mo
CHANGED
Binary file
|
languages/loco-translate-nl_NL.po
CHANGED
@@ -3,11 +3,11 @@ 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:
|
7 |
-
"Last-Translator: admin <
|
8 |
"Language-Team: \n"
|
9 |
"Language: Dutch\n"
|
10 |
-
"Plural-Forms: nplurals=2; plural=
|
11 |
"MIME-Version: 1.0\n"
|
12 |
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -22,172 +22,6 @@ msgstr ""
|
|
22 |
"X-Poedit-Basepath: .\n"
|
23 |
"X-Poedit-SearchPath-0: .."
|
24 |
|
25 |
-
#: ../lib/loco-admin.php:47
|
26 |
-
msgid "Settings saved"
|
27 |
-
msgstr ""
|
28 |
-
|
29 |
-
#: ../lib/loco-admin.php:838
|
30 |
-
msgid "Failed to compile MO file with built-in compiler"
|
31 |
-
msgstr ""
|
32 |
-
|
33 |
-
#: ../lib/loco-admin.php:869
|
34 |
-
msgid "Translation"
|
35 |
-
msgstr ""
|
36 |
-
|
37 |
-
#: ../lib/loco-admin.php:884 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
|
38 |
-
msgid "Settings"
|
39 |
-
msgstr ""
|
40 |
-
|
41 |
-
#: ../lib/loco-admin.php:908
|
42 |
-
msgid "File download failed"
|
43 |
-
msgstr ""
|
44 |
-
|
45 |
-
#: ../lib/loco-packages.php:249
|
46 |
-
msgid "Some files missing"
|
47 |
-
msgstr ""
|
48 |
-
|
49 |
-
#: ../lib/loco-packages.php:266
|
50 |
-
msgid "Folder not writable"
|
51 |
-
msgstr ""
|
52 |
-
|
53 |
-
#: ../lib/loco-packages.php:268
|
54 |
-
msgid "POT file not writable"
|
55 |
-
msgstr ""
|
56 |
-
|
57 |
-
#: ../lib/loco-packages.php:272
|
58 |
-
msgid "PO file not writable"
|
59 |
-
msgstr ""
|
60 |
-
|
61 |
-
#: ../lib/loco-packages.php:274
|
62 |
-
msgid "MO file not writable"
|
63 |
-
msgstr ""
|
64 |
-
|
65 |
-
#: ../lib/loco-packages.php:274
|
66 |
-
msgid "MO file not found"
|
67 |
-
msgstr ""
|
68 |
-
|
69 |
-
#: ../php/loco-download.php:68 ../php/loco-posave.php:88
|
70 |
-
msgid "Failed to compile MO file with %s, check your settings"
|
71 |
-
msgstr ""
|
72 |
-
|
73 |
-
#: ../php/loco-posave.php:23 ../php/loco-posync.php:22
|
74 |
-
msgid "Package not found called %s"
|
75 |
-
msgstr ""
|
76 |
-
|
77 |
-
#: ../php/loco-posave.php:69
|
78 |
-
msgid "Cannot create MO file"
|
79 |
-
msgstr ""
|
80 |
-
|
81 |
-
#: ../php/loco-posave.php:72
|
82 |
-
msgid "Cannot overwrite MO file"
|
83 |
-
msgstr ""
|
84 |
-
|
85 |
-
#: ../php/loco-posave.php:98
|
86 |
-
msgid "Failed to write MO file"
|
87 |
-
msgstr ""
|
88 |
-
|
89 |
-
#: ../pub/js/lang/dummy.php:8
|
90 |
-
msgid "Unknown error"
|
91 |
-
msgstr ""
|
92 |
-
|
93 |
-
#: ../pub/js/lang/dummy.php:9
|
94 |
-
msgid "PO file saved"
|
95 |
-
msgstr ""
|
96 |
-
|
97 |
-
#: ../pub/js/lang/dummy.php:10
|
98 |
-
msgid "and MO file compiled"
|
99 |
-
msgstr ""
|
100 |
-
|
101 |
-
#: ../pub/js/lang/dummy.php:11
|
102 |
-
msgid "Merged from %s"
|
103 |
-
msgstr ""
|
104 |
-
|
105 |
-
#: ../pub/js/lang/dummy.php:12
|
106 |
-
msgid "Merged from source code"
|
107 |
-
msgstr ""
|
108 |
-
|
109 |
-
#: ../pub/js/lang/dummy.php:13
|
110 |
-
msgid "Already up to date with %s"
|
111 |
-
msgstr ""
|
112 |
-
|
113 |
-
#: ../pub/js/lang/dummy.php:14
|
114 |
-
msgid "Already up to date with source code"
|
115 |
-
msgstr ""
|
116 |
-
|
117 |
-
#: ../pub/js/lang/dummy.php:15
|
118 |
-
msgid "1 new string added"
|
119 |
-
msgid_plural "%s new strings added"
|
120 |
-
msgstr[0] ""
|
121 |
-
msgstr[1] ""
|
122 |
-
|
123 |
-
#: ../pub/js/lang/dummy.php:16
|
124 |
-
msgid "1 obsolete string removed"
|
125 |
-
msgid_plural "%s obsolete strings removed"
|
126 |
-
msgstr[0] ""
|
127 |
-
msgstr[1] ""
|
128 |
-
|
129 |
-
#: ../pub/js/lang/dummy.php:17
|
130 |
-
msgid "Your changes will be lost if you continue without saving"
|
131 |
-
msgstr ""
|
132 |
-
|
133 |
-
#: ../tpl/admin-fscheck.tpl.php:8
|
134 |
-
msgid "File check"
|
135 |
-
msgstr ""
|
136 |
-
|
137 |
-
#: ../tpl/admin-fscheck.tpl.php:17
|
138 |
-
msgid "File system permissions for %s"
|
139 |
-
msgstr ""
|
140 |
-
|
141 |
-
#: ../tpl/admin-fscheck.tpl.php:40
|
142 |
-
msgid "Back"
|
143 |
-
msgstr ""
|
144 |
-
|
145 |
-
#: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:64
|
146 |
-
msgid "Get help"
|
147 |
-
msgstr ""
|
148 |
-
|
149 |
-
#: ../tpl/admin-list.tpl.php:93
|
150 |
-
msgid "OK"
|
151 |
-
msgstr ""
|
152 |
-
|
153 |
-
#: ../tpl/admin-opts.tpl.php:18
|
154 |
-
msgid "Configure Loco Translate"
|
155 |
-
msgstr ""
|
156 |
-
|
157 |
-
#: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
|
158 |
-
msgid "Compiling MO files"
|
159 |
-
msgstr ""
|
160 |
-
|
161 |
-
#: ../tpl/admin-opts.tpl.php:36
|
162 |
-
msgid "Use built-in MO compiler."
|
163 |
-
msgstr ""
|
164 |
-
|
165 |
-
#: ../tpl/admin-opts.tpl.php:42
|
166 |
-
msgid "Use external command:"
|
167 |
-
msgstr ""
|
168 |
-
|
169 |
-
#: ../tpl/admin-opts.tpl.php:47
|
170 |
-
msgid "Enter path to msgfmt on server"
|
171 |
-
msgstr ""
|
172 |
-
|
173 |
-
#: ../tpl/admin-opts.tpl.php:54
|
174 |
-
msgid "Generate hash tables"
|
175 |
-
msgstr ""
|
176 |
-
|
177 |
-
#: ../tpl/admin-opts.tpl.php:63
|
178 |
-
msgid "Save settings"
|
179 |
-
msgstr ""
|
180 |
-
|
181 |
-
#: ../tpl/admin-poedit.tpl.php:39
|
182 |
-
msgctxt "Dropdown label"
|
183 |
-
msgid "Switch to..."
|
184 |
-
msgstr ""
|
185 |
-
|
186 |
-
#: ../tpl/admin-root.tpl.php:66
|
187 |
-
msgctxt "Package list header"
|
188 |
-
msgid "Core"
|
189 |
-
msgstr ""
|
190 |
-
|
191 |
#. Translators: Bold text label in admin error messages
|
192 |
#: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
|
193 |
msgctxt "Message label"
|
@@ -204,27 +38,39 @@ msgctxt "Message label"
|
|
204 |
msgid "OK"
|
205 |
msgstr "OK"
|
206 |
|
207 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
msgid "New PO file"
|
209 |
msgstr "Nieuw PO-bestand"
|
210 |
|
211 |
-
#: ../lib/loco-admin.php:
|
212 |
msgid "You must specify a valid locale for a new PO file"
|
213 |
msgstr "Specifieer een geldige locale voor een nieuw PO-bestand"
|
214 |
|
215 |
-
#: ../lib/loco-admin.php:
|
216 |
msgid "No translatable strings found"
|
217 |
msgstr "Geen vertaalbare teksten gevonden"
|
218 |
|
219 |
-
#: ../lib/loco-admin.php:
|
220 |
msgid "Cannot create a PO file."
|
221 |
msgstr "Kan geen PO-bestand aanmaken"
|
222 |
|
223 |
-
#: ../lib/loco-admin.php:
|
224 |
msgid "PO file already exists with locale %s"
|
225 |
msgstr "PO-bestand bestaat al in locale %s"
|
226 |
|
227 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
228 |
msgid ""
|
229 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
230 |
"instead of Save"
|
@@ -232,91 +78,157 @@ msgstr ""
|
|
232 |
"Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik "
|
233 |
"download en bewaar."
|
234 |
|
235 |
-
#: ../lib/loco-admin.php:
|
236 |
msgid "%s file is empty"
|
237 |
msgstr "Het bestand %s is leeg"
|
238 |
|
239 |
-
#: ../lib/loco-admin.php:
|
240 |
msgid "Run Sync to update from source code"
|
241 |
msgstr "Voer Sync uit om de broncode up te daten"
|
242 |
|
243 |
-
#: ../lib/loco-admin.php:
|
244 |
msgid "No strings could be extracted from source code"
|
245 |
msgstr "Er kon geen tekst uit de broncode gehaald worden"
|
246 |
|
247 |
-
#: ../lib/loco-admin.php:
|
248 |
msgid "Run Sync to update from %s"
|
249 |
msgstr "Gebruik Sync om vanuit %s up te daten"
|
250 |
|
251 |
-
#: ../lib/loco-admin.php:
|
252 |
msgid "Source code has been modified, run Sync to update POT"
|
253 |
msgstr "Broncode is veranderd. Gebruik Sync om POT up te daten"
|
254 |
|
255 |
-
#: ../lib/loco-admin.php:
|
256 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
257 |
msgstr "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten"
|
258 |
|
259 |
-
#: ../lib/loco-admin.php:
|
260 |
msgid "Bad file path"
|
261 |
msgstr "Foute bestandslocatie"
|
262 |
|
263 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
msgctxt "Add button"
|
265 |
msgid "New template"
|
266 |
msgstr "Nieuw sjabloon"
|
267 |
|
268 |
-
#: ../lib/loco-admin.php:
|
269 |
msgctxt "Add button"
|
270 |
msgid "New language"
|
271 |
msgstr "Nieuwe taal"
|
272 |
|
273 |
-
#: ../lib/loco-admin.php:
|
274 |
msgid "%s%% translated"
|
275 |
msgstr "%s%% vertaald"
|
276 |
|
277 |
-
#: ../lib/loco-admin.php:
|
278 |
msgid "1 string"
|
279 |
msgid_plural "%s strings"
|
280 |
msgstr[0] "1 te vertalen tekst"
|
281 |
msgstr[1] "%s te vertalen teksten"
|
282 |
|
283 |
-
#: ../lib/loco-admin.php:
|
284 |
msgid "%s fuzzy"
|
285 |
msgstr "%s onzeker"
|
286 |
|
287 |
-
#: ../lib/loco-admin.php:
|
288 |
msgid "%s untranslated"
|
289 |
msgstr "%s onvertaald"
|
290 |
|
291 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
292 |
msgid "Loco, Translation Management"
|
293 |
msgstr "Loco, vertalingsbeheer"
|
294 |
|
295 |
-
#: ../lib/loco-admin.php:
|
296 |
msgid "Manage translations"
|
297 |
msgstr "Beheer vertalingen"
|
298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
#: ../lib/loco-locales.php:70
|
300 |
msgid "Unknown language"
|
301 |
msgstr "Onbekende taal"
|
302 |
|
303 |
-
#: ../lib/loco-packages.php:
|
304 |
msgid "Some files not writable"
|
305 |
msgstr "Sommige bestanden hebben geen schrijfrechten"
|
306 |
|
307 |
-
#: ../lib/loco-packages.php:
|
|
|
|
|
|
|
|
|
308 |
msgid "\"%s\" folder not writable"
|
309 |
msgstr "Map \"%s\" heeft geen schrijfrechten"
|
310 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
312 |
msgid "User does not have permission to manage translations"
|
313 |
msgstr "Gebruik heeft geen rechten om vertalingen te beheren"
|
314 |
|
|
|
|
|
|
|
|
|
315 |
#: ../php/loco-posave.php:10 ../php/loco-posync.php:9
|
316 |
msgid "Invalid data posted to server"
|
317 |
msgstr "Ongeldige gegevens op server"
|
318 |
|
319 |
-
#: ../php/loco-posave.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
320 |
msgid ""
|
321 |
"Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
|
322 |
"it manually."
|
@@ -324,7 +236,7 @@ msgstr ""
|
|
324 |
"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak "
|
325 |
"het zelf aan."
|
326 |
|
327 |
-
#: ../php/loco-posave.php:
|
328 |
msgid ""
|
329 |
"Web server cannot create files in the \"%s\" directory. Fix file permissions or "
|
330 |
"use the download function."
|
@@ -332,7 +244,7 @@ msgstr ""
|
|
332 |
"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik "
|
333 |
"de downloadfunctie."
|
334 |
|
335 |
-
#: ../php/loco-posave.php:
|
336 |
msgid ""
|
337 |
"%s file is not writable by the web server. Fix file permissions or download and "
|
338 |
"copy to \"%s/%s\"."
|
@@ -340,14 +252,90 @@ msgstr ""
|
|
340 |
"Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
|
341 |
"schrijfrechten of download en kopieer naar \"%s/%s\"."
|
342 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
343 |
#: ../php/loco-posync.php:53
|
344 |
msgid "No strings could be extracted from source files"
|
345 |
msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
|
346 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
347 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
348 |
msgid "Packages"
|
349 |
msgstr "Pakketten"
|
350 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
351 |
#: ../tpl/admin-list.tpl.php:11
|
352 |
msgctxt "Table header"
|
353 |
msgid "Package details"
|
@@ -368,25 +356,70 @@ msgctxt "Table header"
|
|
368 |
msgid "File permissions"
|
369 |
msgstr "Bestandsrechten"
|
370 |
|
371 |
-
#: ../tpl/admin-list.tpl.php:
|
372 |
msgid "1 language"
|
373 |
msgid_plural "%u languages"
|
374 |
msgstr[0] "1 taal"
|
375 |
msgstr[1] "%u talen"
|
376 |
|
377 |
-
#: ../tpl/admin-list.tpl.php:
|
378 |
msgctxt "Modified time"
|
379 |
msgid "Updated"
|
380 |
msgstr "Geüpdated"
|
381 |
|
|
|
|
|
|
|
|
|
382 |
#: ../tpl/admin-nav.tpl.php:20
|
383 |
msgid "Powered by"
|
384 |
msgstr "Ondersteund door"
|
385 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
386 |
#: ../tpl/admin-poedit.tpl.php:31
|
387 |
msgid "Template file"
|
388 |
msgstr "Sjabloonbestand"
|
389 |
|
|
|
|
|
|
|
|
|
|
|
390 |
#: ../tpl/admin-poedit.tpl.php:57
|
391 |
msgid "Updated"
|
392 |
msgstr "Geüpdated"
|
@@ -478,3 +511,8 @@ msgstr "Thema's"
|
|
478 |
msgctxt "Package list header"
|
479 |
msgid "Plugins"
|
480 |
msgstr "Plug-ins"
|
|
|
|
|
|
|
|
|
|
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: Sun Mar 09 2014 14:55:48 GMT+0000 (GMT)\n"
|
7 |
+
"Last-Translator: admin <r-admin@timwhitlock.info>\n"
|
8 |
"Language-Team: \n"
|
9 |
"Language: Dutch\n"
|
10 |
+
"Plural-Forms: nplurals=2; plural=n != 1\n"
|
11 |
"MIME-Version: 1.0\n"
|
12 |
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
"Content-Transfer-Encoding: 8bit\n"
|
22 |
"X-Poedit-Basepath: .\n"
|
23 |
"X-Poedit-SearchPath-0: .."
|
24 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
#. Translators: Bold text label in admin error messages
|
26 |
#: ../lib/loco-admin.php:15 ../pub/js/lang/dummy.php:7
|
27 |
msgctxt "Message label"
|
38 |
msgid "OK"
|
39 |
msgstr "OK"
|
40 |
|
41 |
+
#: ../lib/loco-admin.php:42
|
42 |
+
msgid "Permission denied"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: ../lib/loco-admin.php:58
|
46 |
+
msgid "Settings saved"
|
47 |
+
msgstr ""
|
48 |
+
|
49 |
+
#: ../lib/loco-admin.php:131
|
50 |
msgid "New PO file"
|
51 |
msgstr "Nieuw PO-bestand"
|
52 |
|
53 |
+
#: ../lib/loco-admin.php:242
|
54 |
msgid "You must specify a valid locale for a new PO file"
|
55 |
msgstr "Specifieer een geldige locale voor een nieuw PO-bestand"
|
56 |
|
57 |
+
#: ../lib/loco-admin.php:268 ../lib/loco-admin.php:370
|
58 |
msgid "No translatable strings found"
|
59 |
msgstr "Geen vertaalbare teksten gevonden"
|
60 |
|
61 |
+
#: ../lib/loco-admin.php:268
|
62 |
msgid "Cannot create a PO file."
|
63 |
msgstr "Kan geen PO-bestand aanmaken"
|
64 |
|
65 |
+
#: ../lib/loco-admin.php:275
|
66 |
msgid "PO file already exists with locale %s"
|
67 |
msgstr "PO-bestand bestaat al in locale %s"
|
68 |
|
69 |
+
#: ../lib/loco-admin.php:316
|
70 |
+
msgid "PO file used as template. This will be renamed to %s on first save"
|
71 |
+
msgstr ""
|
72 |
+
|
73 |
+
#: ../lib/loco-admin.php:340
|
74 |
msgid ""
|
75 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
76 |
"instead of Save"
|
78 |
"Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik "
|
79 |
"download en bewaar."
|
80 |
|
81 |
+
#: ../lib/loco-admin.php:349 ../lib/loco-admin.php:358
|
82 |
msgid "%s file is empty"
|
83 |
msgstr "Het bestand %s is leeg"
|
84 |
|
85 |
+
#: ../lib/loco-admin.php:350 ../lib/loco-admin.php:365
|
86 |
msgid "Run Sync to update from source code"
|
87 |
msgstr "Voer Sync uit om de broncode up te daten"
|
88 |
|
89 |
+
#: ../lib/loco-admin.php:354
|
90 |
msgid "No strings could be extracted from source code"
|
91 |
msgstr "Er kon geen tekst uit de broncode gehaald worden"
|
92 |
|
93 |
+
#: ../lib/loco-admin.php:361
|
94 |
msgid "Run Sync to update from %s"
|
95 |
msgstr "Gebruik Sync om vanuit %s up te daten"
|
96 |
|
97 |
+
#: ../lib/loco-admin.php:380
|
98 |
msgid "Source code has been modified, run Sync to update POT"
|
99 |
msgstr "Broncode is veranderd. Gebruik Sync om POT up te daten"
|
100 |
|
101 |
+
#: ../lib/loco-admin.php:384
|
102 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
103 |
msgstr "POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten"
|
104 |
|
105 |
+
#: ../lib/loco-admin.php:471
|
106 |
msgid "Bad file path"
|
107 |
msgstr "Foute bestandslocatie"
|
108 |
|
109 |
+
#: ../lib/loco-admin.php:685
|
110 |
+
msgid "Empty or invalid %s file"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: ../lib/loco-admin.php:689
|
114 |
+
msgid "%s file has no header"
|
115 |
+
msgstr ""
|
116 |
+
|
117 |
+
#: ../lib/loco-admin.php:820
|
118 |
msgctxt "Add button"
|
119 |
msgid "New template"
|
120 |
msgstr "Nieuw sjabloon"
|
121 |
|
122 |
+
#: ../lib/loco-admin.php:839
|
123 |
msgctxt "Add button"
|
124 |
msgid "New language"
|
125 |
msgstr "Nieuwe taal"
|
126 |
|
127 |
+
#: ../lib/loco-admin.php:878
|
128 |
msgid "%s%% translated"
|
129 |
msgstr "%s%% vertaald"
|
130 |
|
131 |
+
#: ../lib/loco-admin.php:878
|
132 |
msgid "1 string"
|
133 |
msgid_plural "%s strings"
|
134 |
msgstr[0] "1 te vertalen tekst"
|
135 |
msgstr[1] "%s te vertalen teksten"
|
136 |
|
137 |
+
#: ../lib/loco-admin.php:881
|
138 |
msgid "%s fuzzy"
|
139 |
msgstr "%s onzeker"
|
140 |
|
141 |
+
#: ../lib/loco-admin.php:884
|
142 |
msgid "%s untranslated"
|
143 |
msgstr "%s onvertaald"
|
144 |
|
145 |
+
#: ../lib/loco-admin.php:926
|
146 |
+
msgid "Failed to compile MO file with built-in compiler"
|
147 |
+
msgstr ""
|
148 |
+
|
149 |
+
#: ../lib/loco-admin.php:965 ../tpl/admin-nav.tpl.php:21
|
150 |
msgid "Loco, Translation Management"
|
151 |
msgstr "Loco, vertalingsbeheer"
|
152 |
|
153 |
+
#: ../lib/loco-admin.php:966 ../lib/loco-admin.php:996
|
154 |
msgid "Manage translations"
|
155 |
msgstr "Beheer vertalingen"
|
156 |
|
157 |
+
#: ../lib/loco-admin.php:967
|
158 |
+
msgid "Translation options"
|
159 |
+
msgstr ""
|
160 |
+
|
161 |
+
#: ../lib/loco-admin.php:973
|
162 |
+
msgid "Loco Translate"
|
163 |
+
msgstr ""
|
164 |
+
|
165 |
+
#: ../lib/loco-admin.php:997 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
|
166 |
+
msgid "Settings"
|
167 |
+
msgstr ""
|
168 |
+
|
169 |
+
#: ../lib/loco-admin.php:1021
|
170 |
+
msgid "File download failed"
|
171 |
+
msgstr ""
|
172 |
+
|
173 |
#: ../lib/loco-locales.php:70
|
174 |
msgid "Unknown language"
|
175 |
msgstr "Onbekende taal"
|
176 |
|
177 |
+
#: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
|
178 |
msgid "Some files not writable"
|
179 |
msgstr "Sommige bestanden hebben geen schrijfrechten"
|
180 |
|
181 |
+
#: ../lib/loco-packages.php:384
|
182 |
+
msgid "Some files missing"
|
183 |
+
msgstr ""
|
184 |
+
|
185 |
+
#: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
|
186 |
msgid "\"%s\" folder not writable"
|
187 |
msgstr "Map \"%s\" heeft geen schrijfrechten"
|
188 |
|
189 |
+
#: ../lib/loco-packages.php:408
|
190 |
+
msgid "POT file not writable"
|
191 |
+
msgstr ""
|
192 |
+
|
193 |
+
#: ../lib/loco-packages.php:413
|
194 |
+
msgid "PO file not writable"
|
195 |
+
msgstr ""
|
196 |
+
|
197 |
+
#: ../lib/loco-packages.php:415
|
198 |
+
msgid "MO file not writable"
|
199 |
+
msgstr ""
|
200 |
+
|
201 |
+
#: ../lib/loco-packages.php:415
|
202 |
+
msgid "MO file not found"
|
203 |
+
msgstr ""
|
204 |
+
|
205 |
+
#: ../lib/loco-packages.php:426
|
206 |
+
msgid "Folder not writable"
|
207 |
+
msgstr ""
|
208 |
+
|
209 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
210 |
msgid "User does not have permission to manage translations"
|
211 |
msgstr "Gebruik heeft geen rechten om vertalingen te beheren"
|
212 |
|
213 |
+
#: ../php/loco-download.php:75 ../php/loco-posave.php:121
|
214 |
+
msgid "Failed to compile MO file with %s, check your settings"
|
215 |
+
msgstr ""
|
216 |
+
|
217 |
#: ../php/loco-posave.php:10 ../php/loco-posync.php:9
|
218 |
msgid "Invalid data posted to server"
|
219 |
msgstr "Ongeldige gegevens op server"
|
220 |
|
221 |
+
#: ../php/loco-posave.php:23 ../php/loco-posync.php:22
|
222 |
+
msgid "Package not found called %s"
|
223 |
+
msgstr ""
|
224 |
+
|
225 |
+
#: ../php/loco-posave.php:58
|
226 |
+
msgid ""
|
227 |
+
"Web server cannot create backups in \"%s\". Fix file permissions or disable "
|
228 |
+
"backups in settings"
|
229 |
+
msgstr ""
|
230 |
+
|
231 |
+
#: ../php/loco-posave.php:66
|
232 |
msgid ""
|
233 |
"Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create "
|
234 |
"it manually."
|
236 |
"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak "
|
237 |
"het zelf aan."
|
238 |
|
239 |
+
#: ../php/loco-posave.php:69
|
240 |
msgid ""
|
241 |
"Web server cannot create files in the \"%s\" directory. Fix file permissions or "
|
242 |
"use the download function."
|
244 |
"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik "
|
245 |
"de downloadfunctie."
|
246 |
|
247 |
+
#: ../php/loco-posave.php:81
|
248 |
msgid ""
|
249 |
"%s file is not writable by the web server. Fix file permissions or download and "
|
250 |
"copy to \"%s/%s\"."
|
252 |
"Bestand %s kan niet beschreven worden door de webserver. Bewerk de "
|
253 |
"schrijfrechten of download en kopieer naar \"%s/%s\"."
|
254 |
|
255 |
+
#: ../php/loco-posave.php:102
|
256 |
+
msgid "Cannot create MO file"
|
257 |
+
msgstr ""
|
258 |
+
|
259 |
+
#: ../php/loco-posave.php:105
|
260 |
+
msgid "Cannot overwrite MO file"
|
261 |
+
msgstr ""
|
262 |
+
|
263 |
+
#: ../php/loco-posave.php:131
|
264 |
+
msgid "Failed to write MO file"
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
#: ../php/loco-posync.php:53
|
268 |
msgid "No strings could be extracted from source files"
|
269 |
msgstr "Er konden geen te vertalen teksten uit de bronbestanden gehaald worden"
|
270 |
|
271 |
+
#: ../pub/js/lang/dummy.php:8
|
272 |
+
msgid "Unknown error"
|
273 |
+
msgstr ""
|
274 |
+
|
275 |
+
#: ../pub/js/lang/dummy.php:9
|
276 |
+
msgid "PO file saved"
|
277 |
+
msgstr ""
|
278 |
+
|
279 |
+
#: ../pub/js/lang/dummy.php:10
|
280 |
+
msgid "and MO file compiled"
|
281 |
+
msgstr ""
|
282 |
+
|
283 |
+
#: ../pub/js/lang/dummy.php:11
|
284 |
+
msgid "Merged from %s"
|
285 |
+
msgstr ""
|
286 |
+
|
287 |
+
#: ../pub/js/lang/dummy.php:12
|
288 |
+
msgid "Merged from source code"
|
289 |
+
msgstr ""
|
290 |
+
|
291 |
+
#: ../pub/js/lang/dummy.php:13
|
292 |
+
msgid "Already up to date with %s"
|
293 |
+
msgstr ""
|
294 |
+
|
295 |
+
#: ../pub/js/lang/dummy.php:14
|
296 |
+
msgid "Already up to date with source code"
|
297 |
+
msgstr ""
|
298 |
+
|
299 |
+
#: ../pub/js/lang/dummy.php:15
|
300 |
+
msgid "1 new string added"
|
301 |
+
msgid_plural "%s new strings added"
|
302 |
+
msgstr[0] ""
|
303 |
+
msgstr[1] ""
|
304 |
+
|
305 |
+
#: ../pub/js/lang/dummy.php:16
|
306 |
+
msgid "1 obsolete string removed"
|
307 |
+
msgid_plural "%s obsolete strings removed"
|
308 |
+
msgstr[0] ""
|
309 |
+
msgstr[1] ""
|
310 |
+
|
311 |
+
#: ../pub/js/lang/dummy.php:17
|
312 |
+
msgid "Your changes will be lost if you continue without saving"
|
313 |
+
msgstr ""
|
314 |
+
|
315 |
+
#: ../pub/js/lang/dummy.php:23
|
316 |
+
msgid "Translation"
|
317 |
+
msgstr ""
|
318 |
+
|
319 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
320 |
msgid "Packages"
|
321 |
msgstr "Pakketten"
|
322 |
|
323 |
+
#: ../tpl/admin-fscheck.tpl.php:8
|
324 |
+
msgid "File check"
|
325 |
+
msgstr ""
|
326 |
+
|
327 |
+
#: ../tpl/admin-fscheck.tpl.php:17
|
328 |
+
msgid "File system permissions for %s"
|
329 |
+
msgstr ""
|
330 |
+
|
331 |
+
#: ../tpl/admin-fscheck.tpl.php:40
|
332 |
+
msgid "Back"
|
333 |
+
msgstr ""
|
334 |
+
|
335 |
+
#: ../tpl/admin-fscheck.tpl.php:41 ../tpl/admin-opts.tpl.php:80
|
336 |
+
msgid "Get help"
|
337 |
+
msgstr ""
|
338 |
+
|
339 |
#: ../tpl/admin-list.tpl.php:11
|
340 |
msgctxt "Table header"
|
341 |
msgid "Package details"
|
356 |
msgid "File permissions"
|
357 |
msgstr "Bestandsrechten"
|
358 |
|
359 |
+
#: ../tpl/admin-list.tpl.php:43
|
360 |
msgid "1 language"
|
361 |
msgid_plural "%u languages"
|
362 |
msgstr[0] "1 taal"
|
363 |
msgstr[1] "%u talen"
|
364 |
|
365 |
+
#: ../tpl/admin-list.tpl.php:48
|
366 |
msgctxt "Modified time"
|
367 |
msgid "Updated"
|
368 |
msgstr "Geüpdated"
|
369 |
|
370 |
+
#: ../tpl/admin-list.tpl.php:98
|
371 |
+
msgid "OK"
|
372 |
+
msgstr ""
|
373 |
+
|
374 |
#: ../tpl/admin-nav.tpl.php:20
|
375 |
msgid "Powered by"
|
376 |
msgstr "Ondersteund door"
|
377 |
|
378 |
+
#: ../tpl/admin-opts.tpl.php:18
|
379 |
+
msgid "Configure Loco Translate"
|
380 |
+
msgstr ""
|
381 |
+
|
382 |
+
#: ../tpl/admin-opts.tpl.php:27 ../tpl/admin-opts.tpl.php:31
|
383 |
+
msgid "Compiling MO files"
|
384 |
+
msgstr ""
|
385 |
+
|
386 |
+
#: ../tpl/admin-opts.tpl.php:36
|
387 |
+
msgid "Use built-in MO compiler."
|
388 |
+
msgstr ""
|
389 |
+
|
390 |
+
#: ../tpl/admin-opts.tpl.php:42
|
391 |
+
msgid "Use external command:"
|
392 |
+
msgstr ""
|
393 |
+
|
394 |
+
#: ../tpl/admin-opts.tpl.php:47
|
395 |
+
msgid "Enter path to msgfmt on server"
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: ../tpl/admin-opts.tpl.php:54
|
399 |
+
msgid "Generate hash tables"
|
400 |
+
msgstr ""
|
401 |
+
|
402 |
+
#: ../tpl/admin-opts.tpl.php:61 ../tpl/admin-opts.tpl.php:65
|
403 |
+
msgid "Backing up PO files"
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
#: ../tpl/admin-opts.tpl.php:69
|
407 |
+
msgid "Number of backups to keep of each file:"
|
408 |
+
msgstr ""
|
409 |
+
|
410 |
+
#: ../tpl/admin-opts.tpl.php:79
|
411 |
+
msgid "Save settings"
|
412 |
+
msgstr ""
|
413 |
+
|
414 |
#: ../tpl/admin-poedit.tpl.php:31
|
415 |
msgid "Template file"
|
416 |
msgstr "Sjabloonbestand"
|
417 |
|
418 |
+
#: ../tpl/admin-poedit.tpl.php:39
|
419 |
+
msgctxt "Dropdown label"
|
420 |
+
msgid "Switch to..."
|
421 |
+
msgstr ""
|
422 |
+
|
423 |
#: ../tpl/admin-poedit.tpl.php:57
|
424 |
msgid "Updated"
|
425 |
msgstr "Geüpdated"
|
511 |
msgctxt "Package list header"
|
512 |
msgid "Plugins"
|
513 |
msgstr "Plug-ins"
|
514 |
+
|
515 |
+
#: ../tpl/admin-root.tpl.php:66
|
516 |
+
msgctxt "Package list header"
|
517 |
+
msgid "Core"
|
518 |
+
msgstr ""
|
languages/loco-translate-tr_TR.mo
CHANGED
Binary file
|
languages/loco-translate-tr_TR.po
CHANGED
@@ -3,11 +3,11 @@ 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:
|
7 |
-
"Last-Translator: admin <
|
8 |
"Language-Team: \n"
|
9 |
"Language: Turkish\n"
|
10 |
-
"Plural-Forms: nplurals=2; plural=
|
11 |
"MIME-Version: 1.0\n"
|
12 |
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -38,31 +38,39 @@ msgctxt "Message label"
|
|
38 |
msgid "OK"
|
39 |
msgstr "TAMAM"
|
40 |
|
41 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
42 |
msgid "Settings saved"
|
43 |
msgstr "Ayarlar saklandı"
|
44 |
|
45 |
-
#: ../lib/loco-admin.php:
|
46 |
msgid "New PO file"
|
47 |
msgstr "Yeni PO Dosyası"
|
48 |
|
49 |
-
#: ../lib/loco-admin.php:
|
50 |
msgid "You must specify a valid locale for a new PO file"
|
51 |
msgstr "Yeni PO dosyası için geçerli bir locale değeri belirtmek zorundasınız"
|
52 |
|
53 |
-
#: ../lib/loco-admin.php:
|
54 |
msgid "No translatable strings found"
|
55 |
msgstr "Çevrilebilir cümle bulunamadı"
|
56 |
|
57 |
-
#: ../lib/loco-admin.php:
|
58 |
msgid "Cannot create a PO file."
|
59 |
msgstr "Bir PO dosyası oluşturulamıyor."
|
60 |
|
61 |
-
#: ../lib/loco-admin.php:
|
62 |
msgid "PO file already exists with locale %s"
|
63 |
msgstr "PO dosyası %s locale değeri ile zaten mevcut"
|
64 |
|
65 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
66 |
msgid ""
|
67 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
68 |
"instead of Save"
|
@@ -70,85 +78,97 @@ msgstr ""
|
|
70 |
"Dosya otomatik olarak oluşturulamıyor. Dosya izinlerini tamir edin ya da "
|
71 |
"Saklama yerine İndirin."
|
72 |
|
73 |
-
#: ../lib/loco-admin.php:
|
74 |
msgid "%s file is empty"
|
75 |
msgstr "%s dosyası boş"
|
76 |
|
77 |
-
#: ../lib/loco-admin.php:
|
78 |
msgid "Run Sync to update from source code"
|
79 |
msgstr "Kaynak dosyasından güncelleme için Senkr. çalıştır"
|
80 |
|
81 |
-
#: ../lib/loco-admin.php:
|
82 |
msgid "No strings could be extracted from source code"
|
83 |
msgstr "Kaynak kodundan herhangi cümle çıkarılamadı"
|
84 |
|
85 |
-
#: ../lib/loco-admin.php:
|
86 |
msgid "Run Sync to update from %s"
|
87 |
msgstr "%s üzerinden güncelleme için Senkr. çalıştır"
|
88 |
|
89 |
-
#: ../lib/loco-admin.php:
|
90 |
msgid "Source code has been modified, run Sync to update POT"
|
91 |
msgstr "Kaynak dosyası değiştirilmiş, POT güncellemesi için Senkr. çalıştırın"
|
92 |
|
93 |
-
#: ../lib/loco-admin.php:
|
94 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
95 |
msgstr ""
|
96 |
"PO dosyası en son saklandığından beri POT değişikliğe uğramış, güncelleme için "
|
97 |
"Senkr. çalıştırın."
|
98 |
|
99 |
-
#: ../lib/loco-admin.php:
|
100 |
msgid "Bad file path"
|
101 |
msgstr "Uygun olmayan dosya yolu"
|
102 |
|
103 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
msgctxt "Add button"
|
105 |
msgid "New template"
|
106 |
msgstr "Yeni şablon"
|
107 |
|
108 |
-
#: ../lib/loco-admin.php:
|
109 |
msgctxt "Add button"
|
110 |
msgid "New language"
|
111 |
msgstr "Yeni dil"
|
112 |
|
113 |
-
#: ../lib/loco-admin.php:
|
114 |
msgid "%s%% translated"
|
115 |
msgstr "%s%% çevrildi"
|
116 |
|
117 |
-
#: ../lib/loco-admin.php:
|
118 |
msgid "1 string"
|
119 |
msgid_plural "%s strings"
|
120 |
msgstr[0] "1 cümle"
|
121 |
msgstr[1] "%s cümle"
|
122 |
|
123 |
-
#: ../lib/loco-admin.php:
|
124 |
msgid "%s fuzzy"
|
125 |
msgstr "%s bulanık"
|
126 |
|
127 |
-
#: ../lib/loco-admin.php:
|
128 |
msgid "%s untranslated"
|
129 |
msgstr "%s çevrilmemiş"
|
130 |
|
131 |
-
#: ../lib/loco-admin.php:
|
132 |
msgid "Failed to compile MO file with built-in compiler"
|
133 |
msgstr "Dahili derleyici ile MO derlemesinde hata"
|
134 |
|
135 |
-
#: ../lib/loco-admin.php:
|
136 |
msgid "Loco, Translation Management"
|
137 |
msgstr "Loco, Çevri Yönetimi"
|
138 |
|
139 |
-
#: ../lib/loco-admin.php:
|
140 |
-
msgid "Translation"
|
141 |
-
msgstr "Çevri"
|
142 |
-
|
143 |
-
#: ../lib/loco-admin.php:872 ../lib/loco-admin.php:883
|
144 |
msgid "Manage translations"
|
145 |
msgstr "Çevrileri Yönet"
|
146 |
|
147 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
148 |
msgid "Settings"
|
149 |
msgstr "Ayarlar"
|
150 |
|
151 |
-
#: ../lib/loco-admin.php:
|
152 |
msgid "File download failed"
|
153 |
msgstr "Dosya indirme hatası"
|
154 |
|
@@ -156,38 +176,38 @@ msgstr "Dosya indirme hatası"
|
|
156 |
msgid "Unknown language"
|
157 |
msgstr "Bilinmeyen dil"
|
158 |
|
159 |
-
#: ../lib/loco-packages.php:
|
160 |
msgid "Some files not writable"
|
161 |
msgstr "Bazı dosyalar yazılabilir değil"
|
162 |
|
163 |
-
#: ../lib/loco-packages.php:
|
164 |
msgid "Some files missing"
|
165 |
msgstr "Bazı dosyalar eksik"
|
166 |
|
167 |
-
#: ../lib/loco-packages.php:
|
168 |
msgid "\"%s\" folder not writable"
|
169 |
msgstr "\"%s\" dizini yazılabilir değil"
|
170 |
|
171 |
-
#: ../lib/loco-packages.php:
|
172 |
-
msgid "Folder not writable"
|
173 |
-
msgstr "Dizin yazılabilir değil"
|
174 |
-
|
175 |
-
#: ../lib/loco-packages.php:301
|
176 |
msgid "POT file not writable"
|
177 |
msgstr "POT dosyası yazılabilir değil"
|
178 |
|
179 |
-
#: ../lib/loco-packages.php:
|
180 |
msgid "PO file not writable"
|
181 |
msgstr "PO dosyası yazılabilir değil"
|
182 |
|
183 |
-
#: ../lib/loco-packages.php:
|
184 |
msgid "MO file not writable"
|
185 |
msgstr "MO dosyası yazılabilir değil"
|
186 |
|
187 |
-
#: ../lib/loco-packages.php:
|
188 |
msgid "MO file not found"
|
189 |
msgstr "MO dosyası bulunamadı"
|
190 |
|
|
|
|
|
|
|
|
|
191 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
192 |
msgid "User does not have permission to manage translations"
|
193 |
msgstr "Kullanıcı çevrileri yönetmeye yetkili değil"
|
@@ -294,6 +314,10 @@ msgstr[1] "%s kullanımdışı cümle kaldırıldı"
|
|
294 |
msgid "Your changes will be lost if you continue without saving"
|
295 |
msgstr "Saklamadan devam ederseniz değişiklikleriniz kaybolacak"
|
296 |
|
|
|
|
|
|
|
|
|
297 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
298 |
msgid "Packages"
|
299 |
msgstr "Paketler"
|
@@ -334,18 +358,18 @@ msgctxt "Table header"
|
|
334 |
msgid "File permissions"
|
335 |
msgstr "Dosya izinleri"
|
336 |
|
337 |
-
#: ../tpl/admin-list.tpl.php:
|
338 |
msgid "1 language"
|
339 |
msgid_plural "%u languages"
|
340 |
msgstr[0] "1 dil"
|
341 |
msgstr[1] "%u dil"
|
342 |
|
343 |
-
#: ../tpl/admin-list.tpl.php:
|
344 |
msgctxt "Modified time"
|
345 |
msgid "Updated"
|
346 |
msgstr "Güncellenme"
|
347 |
|
348 |
-
#: ../tpl/admin-list.tpl.php:
|
349 |
msgid "OK"
|
350 |
msgstr "TAMAM"
|
351 |
|
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: Sun Mar 09 2014 14:56:01 GMT+0000 (GMT)\n"
|
7 |
+
"Last-Translator: admin <r-admin@timwhitlock.info>\n"
|
8 |
"Language-Team: \n"
|
9 |
"Language: Turkish\n"
|
10 |
+
"Plural-Forms: nplurals=2; plural=n > 1\n"
|
11 |
"MIME-Version: 1.0\n"
|
12 |
"Content-Type: text/plain; charset=UTF-8\n"
|
13 |
"Content-Transfer-Encoding: 8bit\n"
|
38 |
msgid "OK"
|
39 |
msgstr "TAMAM"
|
40 |
|
41 |
+
#: ../lib/loco-admin.php:42
|
42 |
+
msgid "Permission denied"
|
43 |
+
msgstr ""
|
44 |
+
|
45 |
+
#: ../lib/loco-admin.php:58
|
46 |
msgid "Settings saved"
|
47 |
msgstr "Ayarlar saklandı"
|
48 |
|
49 |
+
#: ../lib/loco-admin.php:131
|
50 |
msgid "New PO file"
|
51 |
msgstr "Yeni PO Dosyası"
|
52 |
|
53 |
+
#: ../lib/loco-admin.php:242
|
54 |
msgid "You must specify a valid locale for a new PO file"
|
55 |
msgstr "Yeni PO dosyası için geçerli bir locale değeri belirtmek zorundasınız"
|
56 |
|
57 |
+
#: ../lib/loco-admin.php:268 ../lib/loco-admin.php:370
|
58 |
msgid "No translatable strings found"
|
59 |
msgstr "Çevrilebilir cümle bulunamadı"
|
60 |
|
61 |
+
#: ../lib/loco-admin.php:268
|
62 |
msgid "Cannot create a PO file."
|
63 |
msgstr "Bir PO dosyası oluşturulamıyor."
|
64 |
|
65 |
+
#: ../lib/loco-admin.php:275
|
66 |
msgid "PO file already exists with locale %s"
|
67 |
msgstr "PO dosyası %s locale değeri ile zaten mevcut"
|
68 |
|
69 |
+
#: ../lib/loco-admin.php:316
|
70 |
+
msgid "PO file used as template. This will be renamed to %s on first save"
|
71 |
+
msgstr ""
|
72 |
+
|
73 |
+
#: ../lib/loco-admin.php:340
|
74 |
msgid ""
|
75 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
76 |
"instead of Save"
|
78 |
"Dosya otomatik olarak oluşturulamıyor. Dosya izinlerini tamir edin ya da "
|
79 |
"Saklama yerine İndirin."
|
80 |
|
81 |
+
#: ../lib/loco-admin.php:349 ../lib/loco-admin.php:358
|
82 |
msgid "%s file is empty"
|
83 |
msgstr "%s dosyası boş"
|
84 |
|
85 |
+
#: ../lib/loco-admin.php:350 ../lib/loco-admin.php:365
|
86 |
msgid "Run Sync to update from source code"
|
87 |
msgstr "Kaynak dosyasından güncelleme için Senkr. çalıştır"
|
88 |
|
89 |
+
#: ../lib/loco-admin.php:354
|
90 |
msgid "No strings could be extracted from source code"
|
91 |
msgstr "Kaynak kodundan herhangi cümle çıkarılamadı"
|
92 |
|
93 |
+
#: ../lib/loco-admin.php:361
|
94 |
msgid "Run Sync to update from %s"
|
95 |
msgstr "%s üzerinden güncelleme için Senkr. çalıştır"
|
96 |
|
97 |
+
#: ../lib/loco-admin.php:380
|
98 |
msgid "Source code has been modified, run Sync to update POT"
|
99 |
msgstr "Kaynak dosyası değiştirilmiş, POT güncellemesi için Senkr. çalıştırın"
|
100 |
|
101 |
+
#: ../lib/loco-admin.php:384
|
102 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
103 |
msgstr ""
|
104 |
"PO dosyası en son saklandığından beri POT değişikliğe uğramış, güncelleme için "
|
105 |
"Senkr. çalıştırın."
|
106 |
|
107 |
+
#: ../lib/loco-admin.php:471
|
108 |
msgid "Bad file path"
|
109 |
msgstr "Uygun olmayan dosya yolu"
|
110 |
|
111 |
+
#: ../lib/loco-admin.php:685
|
112 |
+
msgid "Empty or invalid %s file"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: ../lib/loco-admin.php:689
|
116 |
+
msgid "%s file has no header"
|
117 |
+
msgstr ""
|
118 |
+
|
119 |
+
#: ../lib/loco-admin.php:820
|
120 |
msgctxt "Add button"
|
121 |
msgid "New template"
|
122 |
msgstr "Yeni şablon"
|
123 |
|
124 |
+
#: ../lib/loco-admin.php:839
|
125 |
msgctxt "Add button"
|
126 |
msgid "New language"
|
127 |
msgstr "Yeni dil"
|
128 |
|
129 |
+
#: ../lib/loco-admin.php:878
|
130 |
msgid "%s%% translated"
|
131 |
msgstr "%s%% çevrildi"
|
132 |
|
133 |
+
#: ../lib/loco-admin.php:878
|
134 |
msgid "1 string"
|
135 |
msgid_plural "%s strings"
|
136 |
msgstr[0] "1 cümle"
|
137 |
msgstr[1] "%s cümle"
|
138 |
|
139 |
+
#: ../lib/loco-admin.php:881
|
140 |
msgid "%s fuzzy"
|
141 |
msgstr "%s bulanık"
|
142 |
|
143 |
+
#: ../lib/loco-admin.php:884
|
144 |
msgid "%s untranslated"
|
145 |
msgstr "%s çevrilmemiş"
|
146 |
|
147 |
+
#: ../lib/loco-admin.php:926
|
148 |
msgid "Failed to compile MO file with built-in compiler"
|
149 |
msgstr "Dahili derleyici ile MO derlemesinde hata"
|
150 |
|
151 |
+
#: ../lib/loco-admin.php:965 ../tpl/admin-nav.tpl.php:21
|
152 |
msgid "Loco, Translation Management"
|
153 |
msgstr "Loco, Çevri Yönetimi"
|
154 |
|
155 |
+
#: ../lib/loco-admin.php:966 ../lib/loco-admin.php:996
|
|
|
|
|
|
|
|
|
156 |
msgid "Manage translations"
|
157 |
msgstr "Çevrileri Yönet"
|
158 |
|
159 |
+
#: ../lib/loco-admin.php:967
|
160 |
+
msgid "Translation options"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#: ../lib/loco-admin.php:973
|
164 |
+
msgid "Loco Translate"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: ../lib/loco-admin.php:997 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
|
168 |
msgid "Settings"
|
169 |
msgstr "Ayarlar"
|
170 |
|
171 |
+
#: ../lib/loco-admin.php:1021
|
172 |
msgid "File download failed"
|
173 |
msgstr "Dosya indirme hatası"
|
174 |
|
176 |
msgid "Unknown language"
|
177 |
msgstr "Bilinmeyen dil"
|
178 |
|
179 |
+
#: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
|
180 |
msgid "Some files not writable"
|
181 |
msgstr "Bazı dosyalar yazılabilir değil"
|
182 |
|
183 |
+
#: ../lib/loco-packages.php:384
|
184 |
msgid "Some files missing"
|
185 |
msgstr "Bazı dosyalar eksik"
|
186 |
|
187 |
+
#: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
|
188 |
msgid "\"%s\" folder not writable"
|
189 |
msgstr "\"%s\" dizini yazılabilir değil"
|
190 |
|
191 |
+
#: ../lib/loco-packages.php:408
|
|
|
|
|
|
|
|
|
192 |
msgid "POT file not writable"
|
193 |
msgstr "POT dosyası yazılabilir değil"
|
194 |
|
195 |
+
#: ../lib/loco-packages.php:413
|
196 |
msgid "PO file not writable"
|
197 |
msgstr "PO dosyası yazılabilir değil"
|
198 |
|
199 |
+
#: ../lib/loco-packages.php:415
|
200 |
msgid "MO file not writable"
|
201 |
msgstr "MO dosyası yazılabilir değil"
|
202 |
|
203 |
+
#: ../lib/loco-packages.php:415
|
204 |
msgid "MO file not found"
|
205 |
msgstr "MO dosyası bulunamadı"
|
206 |
|
207 |
+
#: ../lib/loco-packages.php:426
|
208 |
+
msgid "Folder not writable"
|
209 |
+
msgstr "Dizin yazılabilir değil"
|
210 |
+
|
211 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
212 |
msgid "User does not have permission to manage translations"
|
213 |
msgstr "Kullanıcı çevrileri yönetmeye yetkili değil"
|
314 |
msgid "Your changes will be lost if you continue without saving"
|
315 |
msgstr "Saklamadan devam ederseniz değişiklikleriniz kaybolacak"
|
316 |
|
317 |
+
#: ../pub/js/lang/dummy.php:23
|
318 |
+
msgid "Translation"
|
319 |
+
msgstr "Çevri"
|
320 |
+
|
321 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
322 |
msgid "Packages"
|
323 |
msgstr "Paketler"
|
358 |
msgid "File permissions"
|
359 |
msgstr "Dosya izinleri"
|
360 |
|
361 |
+
#: ../tpl/admin-list.tpl.php:43
|
362 |
msgid "1 language"
|
363 |
msgid_plural "%u languages"
|
364 |
msgstr[0] "1 dil"
|
365 |
msgstr[1] "%u dil"
|
366 |
|
367 |
+
#: ../tpl/admin-list.tpl.php:48
|
368 |
msgctxt "Modified time"
|
369 |
msgid "Updated"
|
370 |
msgstr "Güncellenme"
|
371 |
|
372 |
+
#: ../tpl/admin-list.tpl.php:98
|
373 |
msgid "OK"
|
374 |
msgstr "TAMAM"
|
375 |
|
languages/loco-translate.pot
CHANGED
@@ -5,7 +5,7 @@ msgstr ""
|
|
5 |
"Project-Id-Version: Loco Translate\n"
|
6 |
"Report-Msgid-Bugs-To: \n"
|
7 |
"POT-Creation-Date: Thu Jan 02 2014 17:30:57 GMT+0000 (GMT)\n"
|
8 |
-
"POT-Revision-Date:
|
9 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
10 |
"Last-Translator: \n"
|
11 |
"Language-Team: \n"
|
@@ -40,113 +40,133 @@ msgctxt "Message label"
|
|
40 |
msgid "OK"
|
41 |
msgstr ""
|
42 |
|
43 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
44 |
msgid "Settings saved"
|
45 |
msgstr ""
|
46 |
|
47 |
-
#: ../lib/loco-admin.php:
|
48 |
msgid "New PO file"
|
49 |
msgstr ""
|
50 |
|
51 |
-
#: ../lib/loco-admin.php:
|
52 |
msgid "You must specify a valid locale for a new PO file"
|
53 |
msgstr ""
|
54 |
|
55 |
-
#: ../lib/loco-admin.php:
|
56 |
msgid "No translatable strings found"
|
57 |
msgstr ""
|
58 |
|
59 |
-
#: ../lib/loco-admin.php:
|
60 |
msgid "Cannot create a PO file."
|
61 |
msgstr ""
|
62 |
|
63 |
-
#: ../lib/loco-admin.php:
|
64 |
msgid "PO file already exists with locale %s"
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
68 |
msgid ""
|
69 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
70 |
"instead of Save"
|
71 |
msgstr ""
|
72 |
|
73 |
-
#: ../lib/loco-admin.php:
|
74 |
msgid "%s file is empty"
|
75 |
msgstr ""
|
76 |
|
77 |
-
#: ../lib/loco-admin.php:
|
78 |
msgid "Run Sync to update from source code"
|
79 |
msgstr ""
|
80 |
|
81 |
-
#: ../lib/loco-admin.php:
|
82 |
msgid "No strings could be extracted from source code"
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: ../lib/loco-admin.php:
|
86 |
msgid "Run Sync to update from %s"
|
87 |
msgstr ""
|
88 |
|
89 |
-
#: ../lib/loco-admin.php:
|
90 |
msgid "Source code has been modified, run Sync to update POT"
|
91 |
msgstr ""
|
92 |
|
93 |
-
#: ../lib/loco-admin.php:
|
94 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
95 |
msgstr ""
|
96 |
|
97 |
-
#: ../lib/loco-admin.php:
|
98 |
msgid "Bad file path"
|
99 |
msgstr ""
|
100 |
|
101 |
-
#: ../lib/loco-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
102 |
msgctxt "Add button"
|
103 |
msgid "New template"
|
104 |
msgstr ""
|
105 |
|
106 |
-
#: ../lib/loco-admin.php:
|
107 |
msgctxt "Add button"
|
108 |
msgid "New language"
|
109 |
msgstr ""
|
110 |
|
111 |
-
#: ../lib/loco-admin.php:
|
112 |
msgid "%s%% translated"
|
113 |
msgstr ""
|
114 |
|
115 |
-
#: ../lib/loco-admin.php:
|
116 |
msgid "1 string"
|
117 |
msgid_plural "%s strings"
|
118 |
msgstr[0] ""
|
119 |
msgstr[1] ""
|
120 |
|
121 |
-
#: ../lib/loco-admin.php:
|
122 |
msgid "%s fuzzy"
|
123 |
msgstr ""
|
124 |
|
125 |
-
#: ../lib/loco-admin.php:
|
126 |
msgid "%s untranslated"
|
127 |
msgstr ""
|
128 |
|
129 |
-
#: ../lib/loco-admin.php:
|
130 |
msgid "Failed to compile MO file with built-in compiler"
|
131 |
msgstr ""
|
132 |
|
133 |
-
#: ../lib/loco-admin.php:
|
134 |
msgid "Loco, Translation Management"
|
135 |
msgstr ""
|
136 |
|
137 |
-
#: ../lib/loco-admin.php:
|
138 |
-
msgid "
|
139 |
msgstr ""
|
140 |
|
141 |
-
#: ../lib/loco-admin.php:
|
142 |
-
msgid "
|
|
|
|
|
|
|
|
|
143 |
msgstr ""
|
144 |
|
145 |
-
#: ../lib/loco-admin.php:
|
146 |
msgid "Settings"
|
147 |
msgstr ""
|
148 |
|
149 |
-
#: ../lib/loco-admin.php:
|
150 |
msgid "File download failed"
|
151 |
msgstr ""
|
152 |
|
@@ -154,38 +174,38 @@ msgstr ""
|
|
154 |
msgid "Unknown language"
|
155 |
msgstr ""
|
156 |
|
157 |
-
#: ../lib/loco-packages.php:
|
158 |
msgid "Some files not writable"
|
159 |
msgstr ""
|
160 |
|
161 |
-
#: ../lib/loco-packages.php:
|
162 |
msgid "Some files missing"
|
163 |
msgstr ""
|
164 |
|
165 |
-
#: ../lib/loco-packages.php:
|
166 |
msgid "\"%s\" folder not writable"
|
167 |
msgstr ""
|
168 |
|
169 |
-
#: ../lib/loco-packages.php:
|
170 |
-
msgid "Folder not writable"
|
171 |
-
msgstr ""
|
172 |
-
|
173 |
-
#: ../lib/loco-packages.php:301
|
174 |
msgid "POT file not writable"
|
175 |
msgstr ""
|
176 |
|
177 |
-
#: ../lib/loco-packages.php:
|
178 |
msgid "PO file not writable"
|
179 |
msgstr ""
|
180 |
|
181 |
-
#: ../lib/loco-packages.php:
|
182 |
msgid "MO file not writable"
|
183 |
msgstr ""
|
184 |
|
185 |
-
#: ../lib/loco-packages.php:
|
186 |
msgid "MO file not found"
|
187 |
msgstr ""
|
188 |
|
|
|
|
|
|
|
|
|
189 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
190 |
msgid "User does not have permission to manage translations"
|
191 |
msgstr ""
|
@@ -286,6 +306,10 @@ msgstr[1] ""
|
|
286 |
msgid "Your changes will be lost if you continue without saving"
|
287 |
msgstr ""
|
288 |
|
|
|
|
|
|
|
|
|
289 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
290 |
msgid "Packages"
|
291 |
msgstr ""
|
@@ -326,18 +350,18 @@ msgctxt "Table header"
|
|
326 |
msgid "File permissions"
|
327 |
msgstr ""
|
328 |
|
329 |
-
#: ../tpl/admin-list.tpl.php:
|
330 |
msgid "1 language"
|
331 |
msgid_plural "%u languages"
|
332 |
msgstr[0] ""
|
333 |
msgstr[1] ""
|
334 |
|
335 |
-
#: ../tpl/admin-list.tpl.php:
|
336 |
msgctxt "Modified time"
|
337 |
msgid "Updated"
|
338 |
msgstr ""
|
339 |
|
340 |
-
#: ../tpl/admin-list.tpl.php:
|
341 |
msgid "OK"
|
342 |
msgstr ""
|
343 |
|
5 |
"Project-Id-Version: Loco Translate\n"
|
6 |
"Report-Msgid-Bugs-To: \n"
|
7 |
"POT-Creation-Date: Thu Jan 02 2014 17:30:57 GMT+0000 (GMT)\n"
|
8 |
+
"POT-Revision-Date: Sun Mar 09 2014 14:55:31 GMT+0000 (GMT)\n"
|
9 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
10 |
"Last-Translator: \n"
|
11 |
"Language-Team: \n"
|
40 |
msgid "OK"
|
41 |
msgstr ""
|
42 |
|
43 |
+
#: ../lib/loco-admin.php:42
|
44 |
+
msgid "Permission denied"
|
45 |
+
msgstr ""
|
46 |
+
|
47 |
+
#: ../lib/loco-admin.php:58
|
48 |
msgid "Settings saved"
|
49 |
msgstr ""
|
50 |
|
51 |
+
#: ../lib/loco-admin.php:131
|
52 |
msgid "New PO file"
|
53 |
msgstr ""
|
54 |
|
55 |
+
#: ../lib/loco-admin.php:242
|
56 |
msgid "You must specify a valid locale for a new PO file"
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: ../lib/loco-admin.php:268 ../lib/loco-admin.php:370
|
60 |
msgid "No translatable strings found"
|
61 |
msgstr ""
|
62 |
|
63 |
+
#: ../lib/loco-admin.php:268
|
64 |
msgid "Cannot create a PO file."
|
65 |
msgstr ""
|
66 |
|
67 |
+
#: ../lib/loco-admin.php:275
|
68 |
msgid "PO file already exists with locale %s"
|
69 |
msgstr ""
|
70 |
|
71 |
+
#: ../lib/loco-admin.php:316
|
72 |
+
msgid "PO file used as template. This will be renamed to %s on first save"
|
73 |
+
msgstr ""
|
74 |
+
|
75 |
+
#: ../lib/loco-admin.php:340
|
76 |
msgid ""
|
77 |
"File cannot be created automatically. Fix the file permissions or use Download "
|
78 |
"instead of Save"
|
79 |
msgstr ""
|
80 |
|
81 |
+
#: ../lib/loco-admin.php:349 ../lib/loco-admin.php:358
|
82 |
msgid "%s file is empty"
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: ../lib/loco-admin.php:350 ../lib/loco-admin.php:365
|
86 |
msgid "Run Sync to update from source code"
|
87 |
msgstr ""
|
88 |
|
89 |
+
#: ../lib/loco-admin.php:354
|
90 |
msgid "No strings could be extracted from source code"
|
91 |
msgstr ""
|
92 |
|
93 |
+
#: ../lib/loco-admin.php:361
|
94 |
msgid "Run Sync to update from %s"
|
95 |
msgstr ""
|
96 |
|
97 |
+
#: ../lib/loco-admin.php:380
|
98 |
msgid "Source code has been modified, run Sync to update POT"
|
99 |
msgstr ""
|
100 |
|
101 |
+
#: ../lib/loco-admin.php:384
|
102 |
msgid "POT has been modified since PO file was saved, run Sync to update"
|
103 |
msgstr ""
|
104 |
|
105 |
+
#: ../lib/loco-admin.php:471
|
106 |
msgid "Bad file path"
|
107 |
msgstr ""
|
108 |
|
109 |
+
#: ../lib/loco-admin.php:685
|
110 |
+
msgid "Empty or invalid %s file"
|
111 |
+
msgstr ""
|
112 |
+
|
113 |
+
#: ../lib/loco-admin.php:689
|
114 |
+
msgid "%s file has no header"
|
115 |
+
msgstr ""
|
116 |
+
|
117 |
+
#: ../lib/loco-admin.php:820
|
118 |
msgctxt "Add button"
|
119 |
msgid "New template"
|
120 |
msgstr ""
|
121 |
|
122 |
+
#: ../lib/loco-admin.php:839
|
123 |
msgctxt "Add button"
|
124 |
msgid "New language"
|
125 |
msgstr ""
|
126 |
|
127 |
+
#: ../lib/loco-admin.php:878
|
128 |
msgid "%s%% translated"
|
129 |
msgstr ""
|
130 |
|
131 |
+
#: ../lib/loco-admin.php:878
|
132 |
msgid "1 string"
|
133 |
msgid_plural "%s strings"
|
134 |
msgstr[0] ""
|
135 |
msgstr[1] ""
|
136 |
|
137 |
+
#: ../lib/loco-admin.php:881
|
138 |
msgid "%s fuzzy"
|
139 |
msgstr ""
|
140 |
|
141 |
+
#: ../lib/loco-admin.php:884
|
142 |
msgid "%s untranslated"
|
143 |
msgstr ""
|
144 |
|
145 |
+
#: ../lib/loco-admin.php:926
|
146 |
msgid "Failed to compile MO file with built-in compiler"
|
147 |
msgstr ""
|
148 |
|
149 |
+
#: ../lib/loco-admin.php:965 ../tpl/admin-nav.tpl.php:21
|
150 |
msgid "Loco, Translation Management"
|
151 |
msgstr ""
|
152 |
|
153 |
+
#: ../lib/loco-admin.php:966 ../lib/loco-admin.php:996
|
154 |
+
msgid "Manage translations"
|
155 |
msgstr ""
|
156 |
|
157 |
+
#: ../lib/loco-admin.php:967
|
158 |
+
msgid "Translation options"
|
159 |
+
msgstr ""
|
160 |
+
|
161 |
+
#: ../lib/loco-admin.php:973
|
162 |
+
msgid "Loco Translate"
|
163 |
msgstr ""
|
164 |
|
165 |
+
#: ../lib/loco-admin.php:997 ../tpl/admin-fscheck.tpl.php:7 ../tpl/admin-opts.tpl.php:7 ../tpl/admin-poedit.tpl.php:8 ../tpl/admin-poinit.tpl.php:8 ../tpl/admin-root.tpl.php:7
|
166 |
msgid "Settings"
|
167 |
msgstr ""
|
168 |
|
169 |
+
#: ../lib/loco-admin.php:1021
|
170 |
msgid "File download failed"
|
171 |
msgstr ""
|
172 |
|
174 |
msgid "Unknown language"
|
175 |
msgstr ""
|
176 |
|
177 |
+
#: ../lib/loco-packages.php:374 ../lib/loco-packages.php:381
|
178 |
msgid "Some files not writable"
|
179 |
msgstr ""
|
180 |
|
181 |
+
#: ../lib/loco-packages.php:384
|
182 |
msgid "Some files missing"
|
183 |
msgstr ""
|
184 |
|
185 |
+
#: ../lib/loco-packages.php:390 ../lib/loco-packages.php:394
|
186 |
msgid "\"%s\" folder not writable"
|
187 |
msgstr ""
|
188 |
|
189 |
+
#: ../lib/loco-packages.php:408
|
|
|
|
|
|
|
|
|
190 |
msgid "POT file not writable"
|
191 |
msgstr ""
|
192 |
|
193 |
+
#: ../lib/loco-packages.php:413
|
194 |
msgid "PO file not writable"
|
195 |
msgstr ""
|
196 |
|
197 |
+
#: ../lib/loco-packages.php:415
|
198 |
msgid "MO file not writable"
|
199 |
msgstr ""
|
200 |
|
201 |
+
#: ../lib/loco-packages.php:415
|
202 |
msgid "MO file not found"
|
203 |
msgstr ""
|
204 |
|
205 |
+
#: ../lib/loco-packages.php:426
|
206 |
+
msgid "Folder not writable"
|
207 |
+
msgstr ""
|
208 |
+
|
209 |
#: ../php/loco-ajax.php:17 ../php/loco-download.php:21
|
210 |
msgid "User does not have permission to manage translations"
|
211 |
msgstr ""
|
306 |
msgid "Your changes will be lost if you continue without saving"
|
307 |
msgstr ""
|
308 |
|
309 |
+
#: ../pub/js/lang/dummy.php:23
|
310 |
+
msgid "Translation"
|
311 |
+
msgstr ""
|
312 |
+
|
313 |
#: ../tpl/admin-fscheck.tpl.php:6 ../tpl/admin-opts.tpl.php:6 ../tpl/admin-poedit.tpl.php:6 ../tpl/admin-poinit.tpl.php:6 ../tpl/admin-root.tpl.php:6
|
314 |
msgid "Packages"
|
315 |
msgstr ""
|
350 |
msgid "File permissions"
|
351 |
msgstr ""
|
352 |
|
353 |
+
#: ../tpl/admin-list.tpl.php:43
|
354 |
msgid "1 language"
|
355 |
msgid_plural "%u languages"
|
356 |
msgstr[0] ""
|
357 |
msgstr[1] ""
|
358 |
|
359 |
+
#: ../tpl/admin-list.tpl.php:48
|
360 |
msgctxt "Modified time"
|
361 |
msgid "Updated"
|
362 |
msgstr ""
|
363 |
|
364 |
+
#: ../tpl/admin-list.tpl.php:98
|
365 |
msgid "OK"
|
366 |
msgstr ""
|
367 |
|
lib/build/gettext-compiled.php
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Compiled source
|
4 |
-
*
|
5 |
-
* @date Mon, 20 Jan 2014 00:44:35 +0000
|
6 |
*/
|
7 |
-
class LocoArray implements Iterator { private $i; private $length; private $keys; private $vals; private $index; public function __construct( array $data = array() ){ $this->keys = array_keys( $data ); $this->vals = array_values( $data ); $this->index = array_flip( array_map( 'strtolower', $this->keys ) ); $this->length = count( $this->keys ); $this->rewind(); } public function add( $key, $val ){ $k = strtolower($key); if( isset($this->index[$k]) ){ $this->keys[ $this->index[$k] ] = $key; $this->vals[ $this->index[$k] ] = $val; } else { $this->index[$k] = $this->length++; $this->keys[] = $key; $this->vals[] = $val; } return $this; } public function to_array(){ return array_combine( $this->keys, $this->vals ); } function __toString(){ $pairs = array(); foreach( $this->keys as $i => $key ){ $pairs[] = trim($key).': '.$this->vals[$i]; } return implode("\n", $pairs ); } public function count(){ return $this->length; } public function trimmed( $prop ){ return trim( $this->__get($prop) ); } public function has( $key ){ return isset( $this->index[ strtolower($key) ] ); } public function __get( $key ){ $key = strtolower( $key ); return isset($this->index[$key]) ? $this->vals[ $this->index[$key] ] : null; } public function rewind(){ $this->i = reset( $this->index ); } public function key(){ return is_int($this->i) ? $this->keys[$this->i] : null; } public function current(){ return is_int($this->i) ? $this->vals[$this->i] : null; } public function valid(){ return is_int($this->i); } public function next(){ $this->i = next( $this->index ); } } define( 'LOCO_FLAG_OK', 0 ); define( 'LOCO_FLAG_ERROR', 1 ); define( 'LOCO_FLAG_REVIEW', 2 ); define( 'LOCO_FLAG_PENDING', 3 ); define( 'LOCO_FLAG_FUZZY', 4 ); function loco_flags(){ static $flags = array ( LOCO_FLAG_OK => 'Translated', LOCO_FLAG_ERROR => 'Incorrect', LOCO_FLAG_REVIEW => 'Needs review', LOCO_FLAG_PENDING => 'Pending sign-off', LOCO_FLAG_FUZZY => 'Fuzzy', ); return $flags; } function loco_flag( $f ){ $flags = loco_flags(); if( ! isset($flags[$f]) ){ throw new Exception('Invalid LOCO_FLAG_ constant ', var_export($f,1) ); } return $flags[$f]; } function loco_po_flags(){ static $map = array ( LOCO_FLAG_FUZZY => '#, fuzzy', ); return $map; } function loco_parse_po( $src ){ $i = -1; $key = ''; $entries = array(); $template = array( '#' => array(), 'id' => array(), 'str' => array(), 'ctxt' => array() ); foreach( preg_split('/[\r\n]+/', $src) as $line ){ while( $line = trim($line) ){ $c = $line{0}; if( '"' === $c ){ if( $key && isset($entry) ){ $entry[$key][$idx][] = loco_po_unquote( $line ); } } else if( '#' === $c ){ if( isset($entry['i']) ){ unset( $entry ); $entry = $template; } $f = empty($line{1}) ? ' ' : $line{1}; $entry['#'][$f][] = trim( substr( $line, 1+strlen($f) ), "/ \n\r\t" ); } else if( preg_match('/^msg(id|str|ctxt|id_plural)(?:\[(\d+)\])?[ \t]+/', $line, $r ) ){ $key = $r[1]; $idx = isset($r[2]) ? (int) $r[2] : 0; if( 'str' === $key ){ if( ! isset($entry['i']) ){ $entry['i'] = ++$i; $entries[$i] = &$entry; } } else if( ! isset($entry) || isset($entry['i']) ){ unset( $entry ); $entry = $template; } $line = substr( $line, strlen($r[0]) ); continue; } continue 2; } } unset( $entry ); $assets = array(); foreach( $entries as $i => $entry ){ $asset = array ( 'id' => '', 'source' => implode('',$entry['id'][0]), 'target' => implode('',$entry['str'][0]), ); if( isset($entry['ctxt'][0]) ){ $asset['context'] = implode('',$entry['ctxt'][0]); } $comments = array(); isset($entry['#'][' ']) and $comments = array_merge( $comments, $entry['#'][' ']); isset($entry['#']['.']) and $comments = array_merge( $comments, $entry['#']['.']); $comments and $asset['comment'] = implode("\n", $comments); if( isset($entry['#'][':']) ){ $asset['refs'] = implode( "\n", $entry['#'][':'] ); } if( isset($entry['#'][',']) ){ foreach( $entry['#'][','] as $flag ){ if( $flag = loco_po_parse_flag($flag) ){ $asset['flag'] = $flag; break; } } } $pidx = count($assets); $assets[] = $asset; if( isset($entry['id_plural']) || isset($entry['str'][1]) ){ $idx = 0; $num = max( 2, count($entry['str']) ); while( ++$idx < $num ){ $assets[] = array ( 'id' => '', 'parent' => $pidx, 'plural' => $idx, 'source' => isset($entry['id_plural'][0]) ? implode('',$entry['id_plural'][0]) : '', 'target' => isset($entry['str'][$idx]) ? implode('',$entry['str'][$idx]) : '', ); } } } return $assets; } function loco_po_parse_flag( $text, $flag = 0 ){ $map = loco_po_flags(); foreach( explode(',',$text) as $needle ){ if( $needle = trim($needle) ){ foreach( $map as $loco_flag => $haystack ){ if( false !== stripos($haystack, $needle) ){ $flag |= $loco_flag; break; } } } } return $flag; } function loco_po_unquote( $str ){ return substr( stripcslashes($str), 1, -1 ); } function loco_parse_po_headers( $str ){ $headers = new LocoArray( array() ); foreach( explode("\n",$str) as $line ){ $i = strpos($line,':') and $key = trim( substr($line,0,$i) ) and $headers->add( $key, trim( substr($line,++$i) ) ); } return $headers; } final class PHPTokens implements Iterator { private $tokens; private $i; private $skip_tokens = array(); private $skip_strings = array(); public function __construct( array $tokens ){ $this->tokens = $tokens; $this->rewind(); } public function ignore(){ foreach( func_get_args() as $t ){ if( is_int($t) ){ $this->skip_tokens[$t] = true; } else { $this->skip_strings[$t] = true; } } return $this; } public function advance(){ $this->next(); return $this->current(); } public function rewind(){ $this->i = false === reset($this->tokens) ? null : key($this->tokens); } public function valid(){ return isset($this->i); } public function key(){ return $this->i; } public function next(){ $this->i = false === next($this->tokens) ? null : key($this->tokens); } public function current(){ while( isset($this->i) ){ $tok = $this->tokens[$this->i]; if( is_array($tok) ){ if( isset($this->skip_tokens[$tok[0]]) ){ $this->next(); } else { return $tok; } } else if( isset($this->skip_strings[$tok]) ){ $this->next(); } else { return $tok; } } return false; } } function loco_parse_comment($comment){ if( '*' === $comment{1} ){ $lines = array(); foreach( explode("\n", $comment) as $line ){ $line and $lines[] = trim($line,"/* \r\t"); } $comment = implode("\n", $lines); } return trim( $comment,"/ \n\r\t" ); } function decapse_string( $s ){ if( empty($s) ){ return ''; } $q = $s{0}; switch( $q ){ case "'": case '"': $s = substr( $s, 1, -1 ); if( '"' === $q ){ return stripcslashes($s); } return str_replace( array( '\\'.$q, '\\\\' ), array( $q, '\\' ), $s ); default: trigger_error( "Bad quote character ($q) at offset 0", E_USER_NOTICE ); return $s; } } function loco_extract_php( array $tokens, $fileref = '' ){ $extractor = new LocoPHPExtractor; return $extractor->extract( $tokens, $fileref ); } final class LocoPHPExtractor { private static $rules = array ( '_' => 's', 'gettext' => 's', 'dgettext' => '_s', 'ngettext' => 'sp', 'dngettext' => '_sp', '__' => 's', '_e' => 's', '_c' => 's', '_n' => 'sp', '_n_noop' => 'sp', '_nc' => 'sp', '__ngettext' => 'sp', '__ngettext_noop' => 'sp', '_x' => 'sc', '_ex' => 'sc', '_nx' => 'sp_c', '_nx_noop' => 'spc', '_n_js' => 'sp', '_nx_js' => 'spc', 'esc_attr__' => 's', 'esc_html__' => 's', 'esc_attr_e' => 's', 'esc_html_e' => 's', 'esc_attr_x' => 'sc', 'esc_html_x' => 'sc', 'comments_number_link' => '_sp', 't' => 's', 'st' => 's', 'trans' => 's', 'transChoice' => 'sp', ); private $exp = array(); private $reg = array(); public function extract( array $tokens, $fileref = '' ){ $tokens = new PHPTokens( $tokens ); $tokens->ignore( T_WHITESPACE ); $comment = ''; foreach( $tokens as $tok ){ if( isset($args) ){ if( ')' === $tok ){ isset($arg) and $arg and $args[] = $arg; $this->push( $rule, $args, $comment, $ref ); unset($args,$arg); $comment = ''; } else if( ',' === $tok ){ isset($arg) and $arg and $args[] = $arg; unset($arg); } else if( isset($arg) ){ $arg[] = $tok; } else { $arg = array( $tok ); } } else if( is_array($tok) ){ list($t,$s) = $tok; if( T_COMMENT === $t || T_DOC_COMMENT === $t ){ $comment = $s; } else if( T_STRING === $t && isset(self::$rules[$s]) && '(' === $tokens->advance() ){ $rule = self::$rules[$s]; $args = array(); $ref = $fileref ? $fileref.':'.$tok[2]: ''; } else if( $comment && false === stripos($comment, 'translators') ){ $comment = ''; } } } return $this->exp; } private function push( $rule, array $args, $comment = '', $ref = '' ){ $s = strpos( $rule, 's'); $p = strpos( $rule, 'p'); $c = strpos( $rule, 'c'); foreach( $args as $i => $tokens ){ if( 1 === count($tokens) && is_array($tokens[0]) && T_CONSTANT_ENCAPSED_STRING === $tokens[0][0] ){ $args[$i] = decapse_string( $tokens[0][1] ); } else { $args[$i] = null; } } $key = $msgid = $args[$s]; if( ! $msgid ){ return null; } $entry = array ( 'id' => '', 'source' => $msgid, 'target' => '', ); if( $c && isset($args[$c]) ){ $entry['context'] = $args[$c]; $key .= "\0". $args[$c]; } if( $ref ){ $entry['refs'] = $ref; } if( $comment ){ $entry['comment'] = loco_parse_comment($comment); } if( isset($this->reg[$key]) ){ $index = $this->reg[$key]; $a = array(); isset($this->exp[$index]['refs']) and $a[] = $this->exp[$index]['refs']; isset($entry['refs']) and $a[] = $entry['refs']; $a && $this->exp[$index]['refs'] = implode(" ", $a ); $a = array(); isset($this->exp[$index]['comment']) and $a[] = $this->exp[$index]['comment']; isset($entry['comment']) and $a[] = $entry['comment']; $a && $this->exp[$index]['comment'] = implode("\n", $a ); } else { $index = count($this->exp); $this->reg[$key] = $index; $this->exp[] = $entry; } if( $p && isset($args[$p]) ){ $msgid_plural = $args[$p]; $entry = array ( 'id' => '', 'source' => $msgid_plural, 'target' => '', 'plural' => 1, 'parent' => $index, ); $key = $msgid_plural."\0\0"; if( isset($this->reg[$key]) ){ $plural_index = $this->reg[$key]; $this->exp[$plural_index] = $entry; } else { $plural_index = count($this->exp); $this->reg[$key] = $plural_index; $this->exp[] = $entry; } } return $index; } public function get_xgettext( $input = '-' ){ $cmd = defined('WHICH_XGETTEXT') ? WHICH_XGETTEXT : 'xgettext'; $cmd.= ' -LPHP -c -o-'; if( $k = $this->get_xgettext_keywords() ){ $cmd.= ' -k'.implode(' -k', $k ); } return $cmd.' '.$input; } public function get_xgettext_keywords(){ $ks = array(); foreach( self::$rules as $word => $rule ){ $s = strpos( $rule, 's'); $k = $word.':'.++$s; if( false !== $p = strpos( $rule, 'p') ){ $k.= ','.++$p; } if( false !== $p = strpos( $rule, 'c') ){ $k.= ','.++$p.'c'; } $ks[] = $k; } return $ks; } } function loco_relative_path( $source_path, $target_path ){ $rel = ''; $common = false; $src = preg_split('!/+!', $source_path, -1, PREG_SPLIT_NO_EMPTY ); $dst = preg_split('!/+!', $target_path, -1, PREG_SPLIT_NO_EMPTY ); while( $src && $dst ){ if( current($src) !== current($dst) ){ break; } $common = true; array_shift($src); array_shift($dst); } if( ! $common ){ return $target_path; } if( $src ){ $up = array_fill( 0, count($src), '..' ); $rel = implode('/', $up ); } if( $dst ){ $rel && $rel .= '/'; $rel .= implode('/', $dst ); } return $rel; } class LocoMo { private $bin; private $msgs; private $head; private $hash; public function __construct( array $export, LocoArray $head = null ){ if( ! $head ){ $head = new LocoArray( array( 'Project-Id-Version' => 'Loco', 'Language' => 'English', 'Plural-Forms' => 'nplurals=2; plural=(n!=1);', 'MIME-Version' => '1.0', 'Content-Type' => 'text/plain; charset=UTF-8', 'Content-Transfer-Encoding' => '8bit', 'X-Generator' => 'Loco '.PLUG_HTTP_ADDR, ) ); } $this->head = $head; $this->msgs = $export; $this->bin = ''; } public function enableHash(){ return $this->hash = new LocoMoTable; } public function setHeader( $key, $val ){ $this->head->add($key, $val); return $this; } public function setProject( LocoProject $Proj ){ return $this ->setHeader( 'Project-Id-Version', $Proj->proj_name ) ->setHeader($key, $val) ; } public function setLocale( LocoProjectLocale $Loc ){ return $this ->setHeader( 'Language', $Loc->label ) ->setHeader( 'Plural-Forms', 'nplurals='.$Loc->nplurals.'; plural='.$Loc->pluraleq.';' ) ; } public function count(){ return count($this->msgs); } public function compile(){ $table = array(''); $sources = array(''); $targets = array( $this->head->__toString() ); foreach( $this->msgs as $r ){ $msgid = $r['key']; if( isset($r['context']) && $r['context'] ){ $msgid or $msgid = "(".$r['context'].')'; $msgid = $r['context']."\x04".$msgid; } if( ! $msgid ){ continue; } $msgstr = $r['translation']; if( ! $msgstr ){ continue; } $table[] = $msgid; if( isset($r['plurals']) ){ foreach( $r['plurals'] as $i => $p ){ if( $i === 0 ){ $msgid .= "\0".$p['key']; } $msgstr .= "\0".$p['translation']; } } $sources[] = $msgid; $targets[] = $msgstr; } asort( $sources, SORT_STRING ); $this->bin = ''; $this->writeInteger( 0x950412de ); $this->writeInteger( 0 ); $n = count($sources); $this->writeInteger( $n ); $offset = 28; $this->writeInteger( $offset ); $offset += $n * 8; $this->writeInteger( $offset ); if( $this->hash ){ sort( $table, SORT_STRING ); $this->hash->compile( $table ); $s = $this->hash->count(); } else { $s = 0; } $this->writeInteger( $s ); $offset += $n * 8; $this->writeInteger( $offset ); if( $s ){ $offset += $s * 4; } $source = ''; foreach( $sources as $i => $str ){ $source .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } $target = ''; foreach( array_keys($sources) as $i ){ $str = $targets[$i]; $target .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } if( $this->hash ){ $this->bin .= $this->hash->__toString(); } $this->bin .= $source; $this->bin .= $target; return $this->bin; } private function writeInteger( $num ){ $this->bin .= pack( 'V', $num ); return $this; } } class LocoMoTable { private $size = 0; private $bin = ''; private $map; public function __construct( $data = null ){ if( is_array($data) ){ $this->compile( $data ); } else if( $data ){ $this->parse( $data ); } } public function count(){ if( ! isset($this->size) ){ if( $this->bin ){ $this->size = (int) ( strlen( $this->bin ) / 4 ); } else if( is_array($this->map) ){ $this->size = count($this->map); } else { return 0; } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2, got '.$this->size); } } return $this->size; } public function bytes(){ return $this->count() * 4; } public function __toString(){ return $this->bin; } public function export(){ if( ! is_array($this->map) ){ $this->parse( $this->bin ); } return $this->map; } private function reset( $length ){ $this->size = max( 3, self::next_prime ( $length * 4 / 3 ) ); $this->bin = null; $this->map = array(); return $this->size; } public function compile( array $msgids ){ $hash_tab_size = $this->reset( count($msgids) ); $packed = array_fill( 0, $hash_tab_size, "\0\0\0\0" ); $j = 0; foreach( $msgids as $msgid ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $hash_tab_size; if( array_key_exists($idx, $this->map) ){ $incr = 1 + ( $hash_val % ( $hash_tab_size - 2 ) ); do { $idx += $incr; if( $hash_val === $idx ){ throw new Exception('Unable to find empty slot in hash table'); } $idx %= $hash_tab_size; } while( array_key_exists($idx, $this->map ) ); } $this->map[$idx] = $j; $packed[$idx] = pack('V', ++$j ); } return $this->bin = implode('',$packed); } public function lookup( $msgid, array $msgids ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $this->size; $incr = 1 + ( $hash_val % ( $this->size - 2 ) ); while( true ){ if( ! array_key_exists($idx, $this->map) ){ break; } $j = $this->map[$idx]; if( isset($msgids[$j]) && $msgid === $msgids[$j] ){ return $j; } $idx += $incr; if( $idx === $hash_val ){ break; } $idx %= $this->size; } return -1; } public function parse( $bin ){ $this->bin = (string) $bin; $this->size = null; $hash_tab_size = $this->count(); $this->map = array(); $idx = -1; $byte = 0; while( ++$idx < $hash_tab_size ){ $word = substr( $this->bin, $byte, 4 ); if( "\0\0\0\0" !== $word ){ list(,$j) = unpack('V', $word ); $this->map[$idx] = $j - 1; } $byte += 4; } return $this->map; } public static function hashpjw( $str ){ $i = -1; $hval = 0; $len = strlen($str); while( ++$i < $len ){ $ord = ord( $str{$i} ); $hval = ( $hval << 4 ) + $ord; $g = $hval & 0xf0000000; if( $g !== 0 ){ $hval ^= $g >> 24; $hval ^= $g; } } return $hval; } private static function next_prime( $seed ){ $seed |= 1; while ( ! self::is_prime($seed) ){ $seed += 2; } return $seed; } private static function is_prime( $num ) { if ($num === 1 ){ return false; } if( $num === 2 ){ return true; } if( $num % 2 == 0 ) { return false; } for( $i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) { if($num % $i == 0 ){ return false; } } return true; } } function loco_msgfmt( $po, $withhash = false ){ if( ! is_array($po) ){ $po = loco_parse_po( $po ); } $head = null; if( isset($po[0]) && '' === $po[0]['source'] ){ $head = loco_parse_po_headers( $po[0]['target'] ); $po[0] = null; } $export = array(); foreach( $po as $i => $r ){ if( ! $r ){ continue; } $msg = array ( 'key' => $r['source'], 'translation' => $r['target'], ); if( isset($r['parent']) ){ unset( $parent ); $parent = &$export[ $r['parent'] ]; isset($parent['plurals']) or $parent['plurals'] = array(); $parent['plurals'][] = $msg; } else { isset($r['context']) and $msg['context'] = $r['context']; $export[$i] = $msg; } } $mo = new LocoMo( $export, $head ); if( $withhash ){ $mo->enableHash(); } return $mo->compile(); } function loco_po_stats( array $po ){ $t = $n = $f = $u = 0; foreach( $po as $r ){ if( ! isset($r['source']) || '' === $r['source'] ){ continue; } if( isset($r['parent']) && is_int($r['parent']) ){ continue; } $t++; if( '' === $r['target'] ){ $u++; } else if( isset($r['flag']) && LOCO_FLAG_FUZZY === $r['flag'] ){ $f++; } else { $n++; } } $r = $t && $n ? $n / $t : 0; $p = (string) round( $r * 100 ); return compact('t','p','f','u'); }
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Compiled source build from Loco core.
|
4 |
+
* Mon, 10 Mar 2014 11:48:38 +0000
|
|
|
5 |
*/
|
6 |
+
class LocoArray implements Iterator { private $i; private $length; private $keys; private $vals; private $index; public function __construct( array $data = array() ){ $this->keys = array_keys( $data ); $this->vals = array_values( $data ); $this->index = array_flip( array_map( 'strtolower', $this->keys ) ); $this->length = count( $this->keys ); $this->rewind(); } public function add( $key, $val ){ $k = strtolower($key); if( isset($this->index[$k]) ){ $this->keys[ $this->index[$k] ] = $key; $this->vals[ $this->index[$k] ] = $val; } else { $this->index[$k] = $this->length++; $this->keys[] = $key; $this->vals[] = $val; } return $this; } public function to_array(){ return array_combine( $this->keys, $this->vals ); } function __toString(){ $pairs = array(); foreach( $this->keys as $i => $key ){ $pairs[] = trim($key).': '.$this->vals[$i]; } return implode("\n", $pairs ); } public function count(){ return $this->length; } public function trimmed( $prop ){ return trim( $this->__get($prop) ); } public function has( $key ){ return isset( $this->index[ strtolower($key) ] ); } public function __get( $key ){ $key = strtolower( $key ); return isset($this->index[$key]) ? $this->vals[ $this->index[$key] ] : null; } public function rewind(){ $this->i = reset( $this->index ); } public function key(){ return is_int($this->i) ? $this->keys[$this->i] : null; } public function current(){ return is_int($this->i) ? $this->vals[$this->i] : null; } public function valid(){ return is_int($this->i); } public function next(){ $this->i = next( $this->index ); } } define( 'LOCO_FLAG_OK', 0 ); define( 'LOCO_FLAG_ERROR', 1 ); define( 'LOCO_FLAG_REVIEW', 2 ); define( 'LOCO_FLAG_PENDING', 3 ); define( 'LOCO_FLAG_FUZZY', 4 ); function loco_flags(){ static $flags = array ( LOCO_FLAG_OK => 'Translated', LOCO_FLAG_ERROR => 'Incorrect', LOCO_FLAG_REVIEW => 'Needs review', LOCO_FLAG_PENDING => 'Pending sign-off', LOCO_FLAG_FUZZY => 'Fuzzy', ); return $flags; } function loco_flag( $f ){ $flags = loco_flags(); if( ! isset($flags[$f]) ){ throw new Exception('Invalid LOCO_FLAG_ constant ', var_export($f,1) ); } return $flags[$f]; } function loco_po_flags(){ static $map = array ( LOCO_FLAG_FUZZY => '#, fuzzy', ); return $map; } function loco_parse_po( $src ){ $i = -1; $key = ''; $entries = array(); $template = array( '#' => array(), 'id' => array(), 'str' => array(), 'ctxt' => array() ); foreach( preg_split('/[\r\n]+/', $src) as $line ){ while( $line = trim($line) ){ $c = $line{0}; if( '"' === $c ){ if( $key && isset($entry) ){ $entry[$key][$idx][] = loco_po_unquote( $line ); } } else if( '#' === $c ){ if( isset($entry['i']) ){ unset( $entry ); $entry = $template; } $f = empty($line{1}) ? ' ' : $line{1}; $entry['#'][$f][] = trim( substr( $line, 1+strlen($f) ), "/ \n\r\t" ); } else if( preg_match('/^msg(id|str|ctxt|id_plural)(?:\[(\d+)\])?[ \t]+/', $line, $r ) ){ $key = $r[1]; $idx = isset($r[2]) ? (int) $r[2] : 0; if( 'str' === $key ){ if( ! isset($entry['i']) ){ $entry['i'] = ++$i; $entries[$i] = &$entry; } } else if( ! isset($entry) || isset($entry['i']) ){ unset( $entry ); $entry = $template; } $line = substr( $line, strlen($r[0]) ); continue; } continue 2; } } unset( $entry ); $assets = array(); foreach( $entries as $i => $entry ){ $asset = array ( 'id' => '', 'source' => implode('',$entry['id'][0]), 'target' => implode('',$entry['str'][0]), ); if( isset($entry['ctxt'][0]) ){ $asset['context'] = implode('',$entry['ctxt'][0]); } $comments = array(); isset($entry['#'][' ']) and $comments = array_merge( $comments, $entry['#'][' ']); isset($entry['#']['.']) and $comments = array_merge( $comments, $entry['#']['.']); $comments and $asset['comment'] = implode("\n", $comments); if( isset($entry['#'][':']) ){ $asset['refs'] = implode( "\n", $entry['#'][':'] ); } if( isset($entry['#'][',']) ){ foreach( $entry['#'][','] as $flag ){ if( $flag = loco_po_parse_flag($flag) ){ $asset['flag'] = $flag; break; } } } $pidx = count($assets); $assets[] = $asset; if( isset($entry['id_plural']) || isset($entry['str'][1]) ){ $idx = 0; $num = max( 2, count($entry['str']) ); while( ++$idx < $num ){ $assets[] = array ( 'id' => '', 'parent' => $pidx, 'plural' => $idx, 'source' => isset($entry['id_plural'][0]) ? implode('',$entry['id_plural'][0]) : '', 'target' => isset($entry['str'][$idx]) ? implode('',$entry['str'][$idx]) : '', ); } } } return $assets; } function loco_po_parse_flag( $text, $flag = 0 ){ $map = loco_po_flags(); foreach( explode(',',$text) as $needle ){ if( $needle = trim($needle) ){ foreach( $map as $loco_flag => $haystack ){ if( false !== stripos($haystack, $needle) ){ $flag |= $loco_flag; break; } } } } return $flag; } function loco_po_unquote( $str ){ return substr( stripcslashes($str), 1, -1 ); } function loco_parse_po_headers( $str ){ $headers = new LocoArray( array() ); foreach( explode("\n",$str) as $line ){ $i = strpos($line,':') and $key = trim( substr($line,0,$i) ) and $headers->add( $key, trim( substr($line,++$i) ) ); } return $headers; } class LocoMoParser { private $bin; private $be; private $n; private $o; private $t; private $v; public function __construct( $bin ){ $this->bin = $bin; } public function getAt( $idx ){ $offset = $this->targetOffset(); $offset += ( $idx * 8 ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false === strpos( $txt, "\0") ){ return $txt; } return explode( "\0", $txt ); } public function parse(){ $sourceOffset = $this->sourceOffset(); $targetOffset = $this->targetOffset(); $r = array(); $p = array(); $i = 0; $offset = $sourceOffset; while( $offset < $targetOffset ){ $r[$i] = array( 'id' => '', 'source' => '', 'target' => '' ); $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $src = $this->bytes( $idx, $len ); $eot = strpos( $src, "\x04" ); if( false !== $eot ){ $r[$i]['context'] = substr($src, 0, $eot ); $src = substr( $src, $eot+1 ); } $nul = strpos( $src, "\0" ); if( false !== $nul ){ $p[$i][1] = array( 'id' => '', 'source' => substr($src, $nul+1 ), 'target' => '', 'parent' => $i, 'plural' => 1 ); $src = substr( $src, 0, $nul ); } $r[$i++]['source'] = $src; $offset += 8; } $t = $i; $offset = $targetOffset; for( $i = 0; $i < $t; $i++ ){ $len = $this->integerAt( $offset ); $idx = $this->integerAt( $offset + 4 ); $txt = $this->bytes( $idx, $len ); if( false !== strpos( $txt, "\0" ) ){ if( ! isset($p[$i][1]) ){ throw new Exception('Encountered translated plural without msgid_plural'); } $arr = explode( "\0", $txt ); $txt = array_shift( $arr ); foreach( $arr as $_i => $plural_txt ){ $plural_idx = $_i + 1; $p[$i][$plural_idx]['target'] = $plural_txt; } } $r[$i]['target'] = $txt; $offset += 8; } foreach( $p as $parent_id => $plurals ){ foreach( $plurals as $plural_idx => $msg ){ if( 1 < $plural_idx ){ $msg['source'] = $plurals[1]['source'].' (plural '.$plural_idx.')'; } $msg['parent'] = $parent_id; $msg['plural'] = $plural_idx; $r[] = $msg; } } return $r; } public function isBigendian(){ while( is_null($this->be) ){ $str = $this->words( 0, 2 ); $arr = unpack('V', $str); if( 0x950412de === $arr[1] ){ $this->be = false; break; } if( 0xde120495 === $arr[1] ){ $this->be = true; break; } throw new Exception('Invalid MO format'); } return $this->be; } public function version(){ if( is_null($this->v) ){ $this->v = $this->integerWord(1); } return $this->v; } public function count(){ if( is_null($this->n) ){ $this->n = $this->integerWord(2); } return $this->n; } public function sourceOffset(){ if( is_null($this->o) ){ $this->o = $this->integerWord(3); } return $this->o; } public function targetOffset(){ if( is_null($this->t) ){ $this->t = $this->integerWord(4); } return $this->t; } public function getHashTable(){ $s = $this->integerWord(5); $h = $this->integerWord(6); return $this->bytes( $h, $s * 4 ); } private function bytes( $offset, $length ){ return substr( $this->bin, $offset, $length ); } private function words( $offset, $length ){ return $this->bytes( $offset * 4, $length * 4 ); } private function integerWord( $offset ){ return $this->integerAt( $offset * 4 ); } private function integerAt( $offset ){ $str = $this->bytes( $offset, 4 ); $fmt = $this->isBigendian() ? 'N' : 'V'; $arr = unpack( $fmt, $str ); if( ! isset($arr[1]) || ! is_int($arr[1]) ){ throw new Exception('Failed to read 32 bit integer at byte '.$offset); } return $arr[1]; } } function loco_parse_mo( $src ){ $mo = new LocoMoParser($src); return $mo->parse(); } final class PHPTokens implements Iterator { private $tokens; private $i; private $skip_tokens = array(); private $skip_strings = array(); private $literal_tokens = array(); public function __construct( array $tokens ){ $this->tokens = $tokens; $this->rewind(); } public function literal(){ foreach( func_get_args() as $t ){ $this->literal_tokens[ $t ] = 1; } return $this; } public function ignore(){ foreach( func_get_args() as $t ){ if( is_int($t) ){ $this->skip_tokens[$t] = true; } else { $this->skip_strings[$t] = true; } } return $this; } public function export(){ $arr = array(); foreach( $this as $tok ){ $arr[] = $tok; } return $arr; } public function advance(){ $this->next(); return $this->current(); } public function rewind(){ $this->i = false === reset($this->tokens) ? null : key($this->tokens); } public function valid(){ return isset($this->i); } public function key(){ return $this->i; } public function next(){ $this->i = false === next($this->tokens) ? null : key($this->tokens); } public function current(){ while( isset($this->i) ){ $tok = $this->tokens[$this->i]; if( is_array($tok) ){ if( isset($this->skip_tokens[$tok[0]]) ){ $this->next(); } else if( isset($this->literal_tokens[$tok[0]]) ){ return $tok[1]; } else { return $tok; } } else if( isset($this->skip_strings[$tok]) ){ $this->next(); } else { return $tok; } } return false; } } function loco_parse_comment($comment){ if( '*' === $comment{1} ){ $lines = array(); foreach( explode("\n", $comment) as $line ){ $line and $lines[] = trim($line,"/* \r\t"); } $comment = implode("\n", $lines); } return trim( $comment,"/ \n\r\t" ); } function decapse_string( $s ){ if( empty($s) ){ return ''; } $q = $s{0}; switch( $q ){ case "'": case '"': $s = substr( $s, 1, -1 ); if( '"' === $q ){ return stripcslashes($s); } return str_replace( array( '\\'.$q, '\\\\' ), array( $q, '\\' ), $s ); default: return $s; } } function loco_extract_php( array $tokens, $fileref = '' ){ $extractor = new LocoPHPExtractor; return $extractor->extract( $tokens, $fileref ); } final class LocoPHPExtractor { private static $rules = array ( '_' => 's', 'gettext' => 's', 'dgettext' => '_s', 'ngettext' => 'sp', 'dngettext' => '_sp', '__' => 's', '_e' => 's', '_c' => 's', '_n' => 'sp', '_n_noop' => 'sp', '_nc' => 'sp', '__ngettext' => 'sp', '__ngettext_noop' => 'sp', '_x' => 'sc', '_ex' => 'sc', '_nx' => 'sp_c', '_nx_noop' => 'spc', '_n_js' => 'sp', '_nx_js' => 'spc', 'esc_attr__' => 's', 'esc_html__' => 's', 'esc_attr_e' => 's', 'esc_html_e' => 's', 'esc_attr_x' => 'sc', 'esc_html_x' => 'sc', 'comments_number_link' => '_sp', 't' => 's', 'st' => 's', 'trans' => 's', 'transChoice' => 'sp', ); private $exp = array(); private $reg = array(); public function extract( array $tokens, $fileref = '' ){ $tokens = new PHPTokens( $tokens ); $tokens->ignore( T_WHITESPACE ); $comment = ''; foreach( $tokens as $tok ){ if( isset($args) ){ if( ')' === $tok ){ isset($arg) and $arg and $args[] = $arg; $this->push( $rule, $args, $comment, $ref ); unset($args,$arg); $comment = ''; } else if( ',' === $tok ){ isset($arg) and $arg and $args[] = $arg; unset($arg); } else if( isset($arg) ){ $arg[] = $tok; } else { $arg = array( $tok ); } } else if( is_array($tok) ){ list($t,$s) = $tok; if( T_COMMENT === $t || T_DOC_COMMENT === $t ){ $comment = $s; } else if( T_STRING === $t && isset(self::$rules[$s]) && '(' === $tokens->advance() ){ $rule = self::$rules[$s]; $args = array(); $ref = $fileref ? $fileref.':'.$tok[2]: ''; } else if( $comment && false === stripos($comment, 'translators') ){ $comment = ''; } } } return $this->exp; } private function push( $rule, array $args, $comment = '', $ref = '' ){ $s = strpos( $rule, 's'); $p = strpos( $rule, 'p'); $c = strpos( $rule, 'c'); foreach( $args as $i => $tokens ){ if( 1 === count($tokens) && is_array($tokens[0]) && T_CONSTANT_ENCAPSED_STRING === $tokens[0][0] ){ $args[$i] = decapse_string( $tokens[0][1] ); } else { $args[$i] = null; } } $key = $msgid = $args[$s]; if( ! $msgid ){ return null; } $entry = array ( 'id' => '', 'source' => $msgid, 'target' => '', ); if( $c && isset($args[$c]) ){ $entry['context'] = $args[$c]; $key .= "\0". $args[$c]; } if( $ref ){ $entry['refs'] = $ref; } if( $comment ){ $entry['comment'] = loco_parse_comment($comment); } if( isset($this->reg[$key]) ){ $index = $this->reg[$key]; $a = array(); isset($this->exp[$index]['refs']) and $a[] = $this->exp[$index]['refs']; isset($entry['refs']) and $a[] = $entry['refs']; $a && $this->exp[$index]['refs'] = implode(" ", $a ); $a = array(); isset($this->exp[$index]['comment']) and $a[] = $this->exp[$index]['comment']; isset($entry['comment']) and $a[] = $entry['comment']; $a && $this->exp[$index]['comment'] = implode("\n", $a ); } else { $index = count($this->exp); $this->reg[$key] = $index; $this->exp[] = $entry; } if( $p && isset($args[$p]) ){ $msgid_plural = $args[$p]; $entry = array ( 'id' => '', 'source' => $msgid_plural, 'target' => '', 'plural' => 1, 'parent' => $index, ); $key = $msgid_plural."\0\0"; if( isset($this->reg[$key]) ){ $plural_index = $this->reg[$key]; $this->exp[$plural_index] = $entry; } else { $plural_index = count($this->exp); $this->reg[$key] = $plural_index; $this->exp[] = $entry; } } return $index; } public function get_xgettext( $input = '-' ){ $cmd = defined('WHICH_XGETTEXT') ? WHICH_XGETTEXT : 'xgettext'; $cmd.= ' -LPHP -c -o-'; if( $k = $this->get_xgettext_keywords() ){ $cmd.= ' -k'.implode(' -k', $k ); } return $cmd.' '.$input; } public function get_xgettext_keywords(){ $ks = array(); foreach( self::$rules as $word => $rule ){ $s = strpos( $rule, 's'); $k = $word.':'.++$s; if( false !== $p = strpos( $rule, 'p') ){ $k.= ','.++$p; } if( false !== $p = strpos( $rule, 'c') ){ $k.= ','.++$p.'c'; } $ks[] = $k; } return $ks; } } function loco_relative_path( $source_path, $target_path ){ $rel = ''; $common = false; $src = preg_split('!/+!', $source_path, -1, PREG_SPLIT_NO_EMPTY ); $dst = preg_split('!/+!', $target_path, -1, PREG_SPLIT_NO_EMPTY ); while( $src && $dst ){ if( current($src) !== current($dst) ){ break; } $common = true; array_shift($src); array_shift($dst); } if( ! $common ){ return $target_path; } if( $src ){ $up = array_fill( 0, count($src), '..' ); $rel = implode('/', $up ); } if( $dst ){ $rel && $rel .= '/'; $rel .= implode('/', $dst ); } return $rel; } class LocoMo { private $bin; private $msgs; private $head; private $hash; public function __construct( array $export, LocoArray $head = null ){ if( ! $head ){ $head = new LocoArray( array( 'Project-Id-Version' => 'Loco', 'Language' => 'English', 'Plural-Forms' => 'nplurals=2; plural=(n!=1);', 'MIME-Version' => '1.0', 'Content-Type' => 'text/plain; charset=UTF-8', 'Content-Transfer-Encoding' => '8bit', 'X-Generator' => 'Loco '.PLUG_HTTP_ADDR, ) ); } $this->head = $head; $this->msgs = $export; $this->bin = ''; } public function enableHash(){ return $this->hash = new LocoMoTable; } public function setHeader( $key, $val ){ $this->head->add($key, $val); return $this; } public function setProject( LocoProject $Proj ){ return $this ->setHeader( 'Project-Id-Version', $Proj->proj_name ) ->setHeader($key, $val) ; } public function setLocale( LocoProjectLocale $Loc ){ return $this ->setHeader( 'Language', $Loc->label ) ->setHeader( 'Plural-Forms', 'nplurals='.$Loc->nplurals.'; plural='.$Loc->pluraleq.';' ) ; } public function count(){ return count($this->msgs); } public function compile(){ $table = array(''); $sources = array(''); $targets = array( $this->head->__toString() ); foreach( $this->msgs as $r ){ $msgid = $r['key']; if( isset($r['context']) && $r['context'] ){ $msgid or $msgid = "(".$r['context'].')'; $msgid = $r['context']."\x04".$msgid; } if( ! $msgid ){ continue; } $msgstr = $r['translation']; if( ! $msgstr ){ continue; } $table[] = $msgid; if( isset($r['plurals']) ){ foreach( $r['plurals'] as $i => $p ){ if( $i === 0 ){ $msgid .= "\0".$p['key']; } $msgstr .= "\0".$p['translation']; } } $sources[] = $msgid; $targets[] = $msgstr; } asort( $sources, SORT_STRING ); $this->bin = ''; $this->writeInteger( 0x950412de ); $this->writeInteger( 0 ); $n = count($sources); $this->writeInteger( $n ); $offset = 28; $this->writeInteger( $offset ); $offset += $n * 8; $this->writeInteger( $offset ); if( $this->hash ){ sort( $table, SORT_STRING ); $this->hash->compile( $table ); $s = $this->hash->count(); } else { $s = 0; } $this->writeInteger( $s ); $offset += $n * 8; $this->writeInteger( $offset ); if( $s ){ $offset += $s * 4; } $source = ''; foreach( $sources as $i => $str ){ $source .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } $target = ''; foreach( array_keys($sources) as $i ){ $str = $targets[$i]; $target .= $str."\0"; $this->writeInteger( $strlen = strlen($str) ); $this->writeInteger( $offset ); $offset += $strlen + 1; } if( $this->hash ){ $this->bin .= $this->hash->__toString(); } $this->bin .= $source; $this->bin .= $target; return $this->bin; } private function writeInteger( $num ){ $this->bin .= pack( 'V', $num ); return $this; } } class LocoMoTable { private $size = 0; private $bin = ''; private $map; public function __construct( $data = null ){ if( is_array($data) ){ $this->compile( $data ); } else if( $data ){ $this->parse( $data ); } } public function count(){ if( ! isset($this->size) ){ if( $this->bin ){ $this->size = (int) ( strlen( $this->bin ) / 4 ); } else if( is_array($this->map) ){ $this->size = count($this->map); } else { return 0; } if( ! self::is_prime($this->size) || $this->size < 3 ){ throw new Exception('Size expected to be prime number above 2, got '.$this->size); } } return $this->size; } public function bytes(){ return $this->count() * 4; } public function __toString(){ return $this->bin; } public function export(){ if( ! is_array($this->map) ){ $this->parse( $this->bin ); } return $this->map; } private function reset( $length ){ $this->size = max( 3, self::next_prime ( $length * 4 / 3 ) ); $this->bin = null; $this->map = array(); return $this->size; } public function compile( array $msgids ){ $hash_tab_size = $this->reset( count($msgids) ); $packed = array_fill( 0, $hash_tab_size, "\0\0\0\0" ); $j = 0; foreach( $msgids as $msgid ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $hash_tab_size; if( array_key_exists($idx, $this->map) ){ $incr = 1 + ( $hash_val % ( $hash_tab_size - 2 ) ); do { $idx += $incr; if( $hash_val === $idx ){ throw new Exception('Unable to find empty slot in hash table'); } $idx %= $hash_tab_size; } while( array_key_exists($idx, $this->map ) ); } $this->map[$idx] = $j; $packed[$idx] = pack('V', ++$j ); } return $this->bin = implode('',$packed); } public function lookup( $msgid, array $msgids ){ $hash_val = self::hashpjw( $msgid ); $idx = $hash_val % $this->size; $incr = 1 + ( $hash_val % ( $this->size - 2 ) ); while( true ){ if( ! array_key_exists($idx, $this->map) ){ break; } $j = $this->map[$idx]; if( isset($msgids[$j]) && $msgid === $msgids[$j] ){ return $j; } $idx += $incr; if( $idx === $hash_val ){ break; } $idx %= $this->size; } return -1; } public function parse( $bin ){ $this->bin = (string) $bin; $this->size = null; $hash_tab_size = $this->count(); $this->map = array(); $idx = -1; $byte = 0; while( ++$idx < $hash_tab_size ){ $word = substr( $this->bin, $byte, 4 ); if( "\0\0\0\0" !== $word ){ list(,$j) = unpack('V', $word ); $this->map[$idx] = $j - 1; } $byte += 4; } return $this->map; } public static function hashpjw( $str ){ $i = -1; $hval = 0; $len = strlen($str); while( ++$i < $len ){ $ord = ord( $str{$i} ); $hval = ( $hval << 4 ) + $ord; $g = $hval & 0xf0000000; if( $g !== 0 ){ $hval ^= $g >> 24; $hval ^= $g; } } return $hval; } private static function next_prime( $seed ){ $seed |= 1; while ( ! self::is_prime($seed) ){ $seed += 2; } return $seed; } private static function is_prime( $num ) { if ($num === 1 ){ return false; } if( $num === 2 ){ return true; } if( $num % 2 == 0 ) { return false; } for( $i = 3; $i <= ceil(sqrt($num)); $i = $i + 2) { if($num % $i == 0 ){ return false; } } return true; } } function loco_msgfmt( $po, $withhash = false ){ if( ! is_array($po) ){ $po = loco_parse_po( $po ); } $head = null; if( isset($po[0]) && '' === $po[0]['source'] ){ $head = loco_parse_po_headers( $po[0]['target'] ); $po[0] = null; } $export = array(); foreach( $po as $i => $r ){ if( ! $r ){ continue; } $msg = array ( 'key' => $r['source'], 'translation' => $r['target'], ); if( isset($r['parent']) ){ unset( $parent ); $parent = &$export[ $r['parent'] ]; isset($parent['plurals']) or $parent['plurals'] = array(); $parent['plurals'][] = $msg; } else { isset($r['context']) and $msg['context'] = $r['context']; $export[$i] = $msg; } } $mo = new LocoMo( $export, $head ); if( $withhash ){ $mo->enableHash(); } return $mo->compile(); } function loco_po_stats( array $po ){ $t = $n = $f = $u = 0; foreach( $po as $r ){ if( ! isset($r['source']) || '' === $r['source'] ){ continue; } if( isset($r['parent']) && is_int($r['parent']) ){ continue; } $t++; if( '' === $r['target'] ){ $u++; } else if( isset($r['flag']) && LOCO_FLAG_FUZZY === $r['flag'] ){ $f++; } else { $n++; } } $r = $t && $n ? $n / $t : 0; $p = (string) round( $r * 100 ); return compact('t','p','f','u'); }
|
lib/build/locales-compiled.php
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Compiled source
|
4 |
-
*
|
5 |
-
* @date Mon, 20 Jan 2014 00:44:35 +0000
|
6 |
*/
|
7 |
-
return unserialize('a:130:{s:5:"af_ZA";s:24:"Afrikaans (South Africa)";s:5:"ar_AE";s:29:"Arabic (United Arab Emirates)";s:5:"ar_IL";s:15:"Arabic (Israel)";s:5:"az_TR";s:20:"Azerbaijani (Turkey)";s:5:"bg_BG";s:9:"Bulgarian";s:5:"bn_BD";s:20:"Bengali (Bangladesh)";s:5:"bs_BA";s:30:"Bosnian (Bosnia & Herzegovina)";s:5:"cs_CZ";s:5:"Czech";s:5:"cy_GB";s:5:"Welsh";s:5:"da_DK";s:6:"Danish";s:5:"de_AT";s:16:"German (Austria)";s:5:"de_CH";s:20:"German (Switzerland)";s:5:"de_DE";s:6:"German";s:5:"el_CY";s:14:"Greek (Cyprus)";s:5:"el_GR";s:5:"Greek";s:5:"en_AE";s:30:"English (United Arab Emirates)";s:5:"en_AU";s:19:"English (Australia)";s:5:"en_CA";s:16:"English (Canada)";s:5:"en_GB";s:12:"English (UK)";s:5:"en_HK";s:19:"English (Hong Kong)";s:5:"en_IE";s:17:"English (Ireland)";s:5:"en_IN";s:15:"English (India)";s:5:"en_NZ";s:21:"English (New Zealand)";s:5:"en_SG";s:19:"English (Singapore)";s:5:"en_US";s:13:"English (USA)";s:5:"en_ZA";s:22:"English (South Africa)";s:5:"es_AR";s:19:"Spanish (Argentina)";s:5:"es_BO";s:17:"Spanish (Bolivia)";s:5:"es_CL";s:15:"Spanish (Chile)";s:5:"es_CO";s:18:"Spanish (Colombia)";s:5:"es_CR";s:20:"Spanish (Costa Rica)";s:5:"es_CU";s:14:"Spanish (Cuba)";s:5:"es_DO";s:28:"Spanish (Dominican Republic)";s:5:"es_EC";s:17:"Spanish (Ecuador)";s:5:"es_ES";s:7:"Spanish";s:5:"es_GT";s:19:"Spanish (Guatemala)";s:5:"es_HN";s:18:"Spanish (Honduras)";s:5:"es_MX";s:16:"Spanish (Mexico)";s:5:"es_NI";s:19:"Spanish (Nicaragua)";s:5:"es_PA";s:16:"Spanish (Panama)";s:5:"es_PE";s:14:"Spanish (Peru)";s:5:"es_PY";s:18:"Spanish (Paraguay)";s:5:"es_SV";s:21:"Spanish (El Salvador)";s:5:"es_UY";s:17:"Spanish (Uruguay)";s:5:"es_VE";s:19:"Spanish (Venezuela)";s:5:"et_EE";s:8:"Estonian";s:5:"fa_AF";s:21:"Persian (Afghanistan)";s:5:"fa_IR";s:14:"Persian (Iran)";s:5:"fi_FI";s:7:"Finnish";s:5:"fo_DK";s:17:"Faroese (Denmark)";s:5:"fo_FO";s:23:"Faroese (Faroe Islands)";s:5:"fr_BE";s:16:"French (Belgium)";s:5:"fr_CA";s:15:"French (Canada)";s:5:"fr_CH";s:20:"French (Switzerland)";s:5:"fr_FR";s:6:"French";s:5:"fr_HT";s:14:"French (Haiti)";s:5:"ga_IE";s:15:"Irish (Ireland)";s:5:"gl_ES";s:16:"Galician (Spain)";s:5:"gn_PY";s:18:"Guarani (Paraguay)";s:5:"he_IL";s:15:"Hebrew (Israel)";s:5:"hi_IN";s:13:"Hindi (India)";s:5:"hr_HR";s:8:"Croatian";s:5:"ht_HT";s:14:"Haitian Creole";s:5:"hu_HU";s:9:"Hungarian";s:5:"hy_AM";s:8:"Armenian";s:5:"id_ID";s:10:"Indonesian";s:5:"is_IS";s:9:"Icelandic";s:5:"it_CH";s:21:"Italian (Switzerland)";s:5:"it_IT";s:7:"Italian";s:5:"ja_JP";s:8:"Japanese";s:5:"jv_ID";s:20:"Javanese (Indonesia)";s:5:"ka_GE";s:8:"Georgian";s:5:"kk_KZ";s:6:"Kazakh";s:5:"kn_IN";s:15:"Kannada (India)";s:5:"ko_KR";s:6:"Korean";s:5:"lb_LU";s:13:"Luxembourgish";s:5:"li_NL";s:24:"Limburgish (Netherlands)";s:5:"lo_LA";s:10:"Lao (Laos)";s:5:"lt_LT";s:10:"Lithuanian";s:5:"lv_LV";s:7:"Latvian";s:5:"mg_MG";s:21:"Malagasy (Madagascar)";s:5:"ms_MY";s:16:"Malay (Malaysia)";s:5:"mt_MT";s:7:"Maltese";s:5:"my_MM";s:17:"Burmese (Myanmar)";s:5:"nb_NO";s:7:"Bokmål";s:5:"ne_NP";s:6:"Nepali";s:5:"nl_BE";s:15:"Dutch (Belgium)";s:5:"nl_NL";s:5:"Dutch";s:5:"nn_NO";s:7:"Nynorsk";s:5:"no_NO";s:9:"Norwegian";s:5:"os_GE";s:18:"Ossetian (Georgia)";s:5:"os_RU";s:17:"Ossetian (Russia)";s:5:"os_TR";s:17:"Ossetian (Turkey)";s:5:"pa_IN";s:15:"Punjabi (India)";s:5:"pl_PL";s:6:"Polish";s:5:"pt_BR";s:19:"Portuguese (Brazil)";s:5:"pt_PT";s:10:"Portuguese";s:5:"ro_RO";s:8:"Romanian";s:5:"ru_RU";s:7:"Russian";s:5:"ru_UA";s:17:"Russian (Ukraine)";s:5:"sa_IN";s:16:"Sanskrit (India)";s:5:"sc_IT";s:17:"Sardinian (Italy)";s:5:"sd_PK";s:17:"Sindhi (Pakistan)";s:5:"si_LK";s:19:"Sinhala (Sri Lanka)";s:5:"sk_SK";s:6:"Slovak";s:5:"sl_SI";s:9:"Slovenian";s:5:"so_SO";s:6:"Somali";s:5:"sq_AL";s:18:"Albanian (Albania)";s:5:"sr_RS";s:7:"Serbian";s:5:"su_ID";s:21:"Sundanese (Indonesia)";s:5:"sv_SE";s:7:"Swedish";s:5:"sw_KE";s:15:"Swahili (Kenya)";s:5:"sw_KM";s:17:"Swahili (Comoros)";s:5:"sw_TZ";s:18:"Swahili (Tanzania)";s:5:"sw_UG";s:16:"Swahili (Uganda)";s:5:"ta_IN";s:13:"Tamil (India)";s:5:"ta_LK";s:17:"Tamil (Sri Lanka)";s:5:"te_IN";s:14:"Telugu (India)";s:5:"tg_TJ";s:18:"Tajik (Tajikistan)";s:5:"
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Compiled source build from Loco core.
|
4 |
+
* Mon, 10 Mar 2014 11:48:38 +0000
|
|
|
5 |
*/
|
6 |
+
return unserialize('a:130:{s:5:"af_ZA";s:24:"Afrikaans (South Africa)";s:5:"ar_AE";s:29:"Arabic (United Arab Emirates)";s:5:"ar_IL";s:15:"Arabic (Israel)";s:5:"az_TR";s:20:"Azerbaijani (Turkey)";s:5:"bg_BG";s:9:"Bulgarian";s:5:"bn_BD";s:20:"Bengali (Bangladesh)";s:5:"bs_BA";s:30:"Bosnian (Bosnia & Herzegovina)";s:5:"cs_CZ";s:5:"Czech";s:5:"cy_GB";s:5:"Welsh";s:5:"da_DK";s:6:"Danish";s:5:"de_AT";s:16:"German (Austria)";s:5:"de_CH";s:20:"German (Switzerland)";s:5:"de_DE";s:6:"German";s:5:"el_CY";s:14:"Greek (Cyprus)";s:5:"el_GR";s:5:"Greek";s:5:"en_AE";s:30:"English (United Arab Emirates)";s:5:"en_AU";s:19:"English (Australia)";s:5:"en_CA";s:16:"English (Canada)";s:5:"en_GB";s:12:"English (UK)";s:5:"en_HK";s:19:"English (Hong Kong)";s:5:"en_IE";s:17:"English (Ireland)";s:5:"en_IN";s:15:"English (India)";s:5:"en_NZ";s:21:"English (New Zealand)";s:5:"en_SG";s:19:"English (Singapore)";s:5:"en_US";s:13:"English (USA)";s:5:"en_ZA";s:22:"English (South Africa)";s:5:"es_AR";s:19:"Spanish (Argentina)";s:5:"es_BO";s:17:"Spanish (Bolivia)";s:5:"es_CL";s:15:"Spanish (Chile)";s:5:"es_CO";s:18:"Spanish (Colombia)";s:5:"es_CR";s:20:"Spanish (Costa Rica)";s:5:"es_CU";s:14:"Spanish (Cuba)";s:5:"es_DO";s:28:"Spanish (Dominican Republic)";s:5:"es_EC";s:17:"Spanish (Ecuador)";s:5:"es_ES";s:7:"Spanish";s:5:"es_GT";s:19:"Spanish (Guatemala)";s:5:"es_HN";s:18:"Spanish (Honduras)";s:5:"es_MX";s:16:"Spanish (Mexico)";s:5:"es_NI";s:19:"Spanish (Nicaragua)";s:5:"es_PA";s:16:"Spanish (Panama)";s:5:"es_PE";s:14:"Spanish (Peru)";s:5:"es_PY";s:18:"Spanish (Paraguay)";s:5:"es_SV";s:21:"Spanish (El Salvador)";s:5:"es_UY";s:17:"Spanish (Uruguay)";s:5:"es_VE";s:19:"Spanish (Venezuela)";s:5:"et_EE";s:8:"Estonian";s:5:"fa_AF";s:21:"Persian (Afghanistan)";s:5:"fa_IR";s:14:"Persian (Iran)";s:5:"fi_FI";s:7:"Finnish";s:5:"fo_DK";s:17:"Faroese (Denmark)";s:5:"fo_FO";s:23:"Faroese (Faroe Islands)";s:5:"fr_BE";s:16:"French (Belgium)";s:5:"fr_CA";s:15:"French (Canada)";s:5:"fr_CH";s:20:"French (Switzerland)";s:5:"fr_FR";s:6:"French";s:5:"fr_HT";s:14:"French (Haiti)";s:5:"ga_IE";s:15:"Irish (Ireland)";s:5:"gl_ES";s:16:"Galician (Spain)";s:5:"gn_PY";s:18:"Guarani (Paraguay)";s:5:"he_IL";s:15:"Hebrew (Israel)";s:5:"hi_IN";s:13:"Hindi (India)";s:5:"hr_HR";s:8:"Croatian";s:5:"ht_HT";s:14:"Haitian Creole";s:5:"hu_HU";s:9:"Hungarian";s:5:"hy_AM";s:8:"Armenian";s:5:"id_ID";s:10:"Indonesian";s:5:"is_IS";s:9:"Icelandic";s:5:"it_CH";s:21:"Italian (Switzerland)";s:5:"it_IT";s:7:"Italian";s:5:"ja_JP";s:8:"Japanese";s:5:"jv_ID";s:20:"Javanese (Indonesia)";s:5:"ka_GE";s:8:"Georgian";s:5:"kk_KZ";s:6:"Kazakh";s:5:"kn_IN";s:15:"Kannada (India)";s:5:"ko_KR";s:6:"Korean";s:5:"lb_LU";s:13:"Luxembourgish";s:5:"li_NL";s:24:"Limburgish (Netherlands)";s:5:"lo_LA";s:10:"Lao (Laos)";s:5:"lt_LT";s:10:"Lithuanian";s:5:"lv_LV";s:7:"Latvian";s:5:"mg_MG";s:21:"Malagasy (Madagascar)";s:5:"ms_MY";s:16:"Malay (Malaysia)";s:5:"mt_MT";s:7:"Maltese";s:5:"my_MM";s:17:"Burmese (Myanmar)";s:5:"nb_NO";s:7:"Bokmål";s:5:"ne_NP";s:6:"Nepali";s:5:"nl_BE";s:15:"Dutch (Belgium)";s:5:"nl_NL";s:5:"Dutch";s:5:"nn_NO";s:7:"Nynorsk";s:5:"no_NO";s:9:"Norwegian";s:5:"os_GE";s:18:"Ossetian (Georgia)";s:5:"os_RU";s:17:"Ossetian (Russia)";s:5:"os_TR";s:17:"Ossetian (Turkey)";s:5:"pa_IN";s:15:"Punjabi (India)";s:5:"pl_PL";s:6:"Polish";s:5:"pt_BR";s:19:"Portuguese (Brazil)";s:5:"pt_PT";s:10:"Portuguese";s:5:"ro_RO";s:8:"Romanian";s:5:"ru_RU";s:7:"Russian";s:5:"ru_UA";s:17:"Russian (Ukraine)";s:5:"sa_IN";s:16:"Sanskrit (India)";s:5:"sc_IT";s:17:"Sardinian (Italy)";s:5:"sd_PK";s:17:"Sindhi (Pakistan)";s:5:"si_LK";s:19:"Sinhala (Sri Lanka)";s:5:"sk_SK";s:6:"Slovak";s:5:"sl_SI";s:9:"Slovenian";s:5:"so_SO";s:6:"Somali";s:5:"sq_AL";s:18:"Albanian (Albania)";s:5:"sr_RS";s:7:"Serbian";s:5:"su_ID";s:21:"Sundanese (Indonesia)";s:5:"sv_SE";s:7:"Swedish";s:5:"sw_KE";s:15:"Swahili (Kenya)";s:5:"sw_KM";s:17:"Swahili (Comoros)";s:5:"sw_TZ";s:18:"Swahili (Tanzania)";s:5:"sw_UG";s:16:"Swahili (Uganda)";s:5:"ta_IN";s:13:"Tamil (India)";s:5:"ta_LK";s:17:"Tamil (Sri Lanka)";s:5:"te_IN";s:14:"Telugu (India)";s:5:"tg_TJ";s:18:"Tajik (Tajikistan)";s:5:"th_TH";s:15:"Thai (Thailand)";s:5:"tr_TR";s:7:"Turkish";s:5:"ug_CN";s:14:"Uyghur (China)";s:5:"uk_UA";s:19:"Ukrainian (Ukraine)";s:5:"ur_IN";s:12:"Urdu (India)";s:5:"ur_PK";s:15:"Urdu (Pakistan)";s:5:"uz_UZ";s:18:"Uzbek (Uzbekistan)";s:5:"vi_VN";s:10:"Vietnamese";s:5:"zh_CN";s:7:"Chinese";s:5:"zh_HK";s:19:"Chinese (Hong Kong)";s:5:"zh_TW";s:16:"Chinese (Taiwan)";}');
|
lib/build/shell-compiled.php
CHANGED
@@ -1,7 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
* Compiled source
|
4 |
-
*
|
5 |
-
* @date Mon, 20 Jan 2014 00:44:35 +0000
|
6 |
*/
|
7 |
function loco_compile_mo( $po ){ $descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'a'), ); $cmd = WHICH_MSGFMT.' -o - -'; $process = proc_open($cmd, $descriptorspec, $pipes ); if( ! $process ){ throw new Exception('Failed to open process to '.$cmd); } fwrite($pipes[0], $po); fclose($pipes[0]); $err = stream_get_contents($pipes[2]); fclose($pipes[2]); $mo = stream_get_contents($pipes[1]); fclose($pipes[1]); $e = proc_close($process); if( 0 !== $e ){ $err and trigger_error( $err, E_USER_WARNING ); throw new Exception( WHICH_MSGFMT.' exited with code '.sprintf('%d',$e).'; Got '.strlen($mo).' bytes from '.strlen($po).' bytes'); } if( ! $mo ){ throw new Exception('Empty file from '.WHICH_MSGFMT); } return $mo; } function loco_compile_mo_file( $pofile, $mofile = '' ){ $descriptorspec = array ( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'a'), ); if( ! $mofile ){ $mofile = $pofile.'.mo'; } $cmd = WHICH_MSGFMT.' -o '.escapeshellarg($mofile).' '.escapeshellarg($pofile); $process = proc_open($cmd, $descriptorspec, $pipes ); if( ! $process ){ throw new Exception('Failed to open process to '.$cmd); } $err = stream_get_contents($pipes[0]); fclose($pipes[0]); $e = proc_close($process); if( 0 !== $e ){ $err and trigger_error( $err, E_USER_WARNING ); throw new Exception('Gettext msgfmt exited with code '.sprintf('%d',$e).';'); } if( ! file_exists($mofile) ){ throw new Exception('Gettext msgfmt failed to create '.$mofile); } return $mofile; } function loco_find_executable( $name ){ $paths = array ( '/usr/local/', '/usr/', '/', '~/' ); $descriptorspec = array ( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'), ); foreach( array('bin/','sbin/') as $dir ){ foreach( $paths as $path ){ $bin = $path.$dir.$name; $cmd = '[ -x '.escapeshellarg($bin).' ]'; $process = proc_open( $cmd, $descriptorspec, $pipes ); if( ! $process ){ return ''; } $e = proc_close($process); if( 0 === $e ){ return $bin; } } } return ''; }
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Compiled source build from Loco core.
|
4 |
+
* Mon, 10 Mar 2014 11:48:38 +0000
|
|
|
5 |
*/
|
6 |
function loco_compile_mo( $po ){ $descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'a'), ); $cmd = WHICH_MSGFMT.' -o - -'; $process = proc_open($cmd, $descriptorspec, $pipes ); if( ! $process ){ throw new Exception('Failed to open process to '.$cmd); } fwrite($pipes[0], $po); fclose($pipes[0]); $err = stream_get_contents($pipes[2]); fclose($pipes[2]); $mo = stream_get_contents($pipes[1]); fclose($pipes[1]); $e = proc_close($process); if( 0 !== $e ){ $err and trigger_error( $err, E_USER_WARNING ); throw new Exception( WHICH_MSGFMT.' exited with code '.sprintf('%d',$e).'; Got '.strlen($mo).' bytes from '.strlen($po).' bytes'); } if( ! $mo ){ throw new Exception('Empty file from '.WHICH_MSGFMT); } return $mo; } function loco_compile_mo_file( $pofile, $mofile = '' ){ $descriptorspec = array ( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'a'), ); if( ! $mofile ){ $mofile = $pofile.'.mo'; } $cmd = WHICH_MSGFMT.' -o '.escapeshellarg($mofile).' '.escapeshellarg($pofile); $process = proc_open($cmd, $descriptorspec, $pipes ); if( ! $process ){ throw new Exception('Failed to open process to '.$cmd); } $err = stream_get_contents($pipes[0]); fclose($pipes[0]); $e = proc_close($process); if( 0 !== $e ){ $err and trigger_error( $err, E_USER_WARNING ); throw new Exception('Gettext msgfmt exited with code '.sprintf('%d',$e).';'); } if( ! file_exists($mofile) ){ throw new Exception('Gettext msgfmt failed to create '.$mofile); } return $mofile; } function loco_find_executable( $name ){ $paths = array ( '/usr/local/', '/usr/', '/', '~/' ); $descriptorspec = array ( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w'), ); foreach( array('bin/','sbin/') as $dir ){ foreach( $paths as $path ){ $bin = $path.$dir.$name; $cmd = '[ -x '.escapeshellarg($bin).' ]'; $process = proc_open( $cmd, $descriptorspec, $pipes ); if( ! $process ){ return ''; } $e = proc_close($process); if( 0 === $e ){ return $bin; } } } return ''; }
|
lib/build/test.php
CHANGED
@@ -80,6 +80,28 @@ class LocoTest extends PHPUnit_Framework_TestCase {
|
|
80 |
|
81 |
|
82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
}
|
84 |
|
85 |
|
80 |
|
81 |
|
82 |
|
83 |
+
/**
|
84 |
+
* Test plural forms
|
85 |
+
*/
|
86 |
+
public function testPluralForms(){
|
87 |
+
// English - two forms
|
88 |
+
$locale = LocoLocale::init('en','GB');
|
89 |
+
extract( $locale->export() );
|
90 |
+
$this->assertEquals( 2, $nplurals );
|
91 |
+
// Chinese - one form
|
92 |
+
$locale = LocoLocale::init('zh','TW');
|
93 |
+
extract( $locale->export() );
|
94 |
+
$this->assertEquals( 1, $nplurals );
|
95 |
+
// Polish - three forms
|
96 |
+
$locale = LocoLocale::init('pl','PL');
|
97 |
+
extract( $locale->export() );
|
98 |
+
$this->assertEquals( 3, $nplurals );
|
99 |
+
// Arabic - six forms
|
100 |
+
$locale = LocoLocale::init('ar','AE');
|
101 |
+
extract( $locale->export() );
|
102 |
+
$this->assertEquals( 6, $nplurals );
|
103 |
+
}
|
104 |
+
|
105 |
}
|
106 |
|
107 |
|
lib/loco-admin.php
CHANGED
@@ -35,11 +35,22 @@ abstract class LocoAdmin {
|
|
35 |
}
|
36 |
|
37 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
|
39 |
/**
|
40 |
* Admin settings page render call
|
41 |
*/
|
42 |
public static function render_page_options(){
|
|
|
43 |
// update applicaion settings if posted
|
44 |
if( isset($_POST['loco']) && is_array( $update = $_POST['loco'] ) ){
|
45 |
$update += array( 'gen_hash' => '0' );
|
@@ -54,6 +65,7 @@ abstract class LocoAdmin {
|
|
54 |
function_exists('loco_find_executable') or loco_require('build/shell-compiled');
|
55 |
$args['which_msgfmt'] = loco_find_executable('msgfmt');// and Loco::config( $args );
|
56 |
}
|
|
|
57 |
Loco::render('admin-opts', $args );
|
58 |
}
|
59 |
|
@@ -63,13 +75,13 @@ abstract class LocoAdmin {
|
|
63 |
* Admin tools page render call
|
64 |
*/
|
65 |
public static function render_page_tools(){
|
|
|
66 |
do {
|
67 |
try {
|
68 |
|
69 |
// libs required for all manage translation pages
|
70 |
loco_require('loco-locales','loco-packages');
|
71 |
|
72 |
-
|
73 |
// most actions except root listing define a single package by name and type
|
74 |
$package = null;
|
75 |
if( isset($_GET['name']) && isset($_GET['type']) ){
|
@@ -119,7 +131,7 @@ abstract class LocoAdmin {
|
|
119 |
// else render msginit start screen
|
120 |
$title = Loco::__('New PO file');
|
121 |
$locales = loco_require('build/locales-compiled');
|
122 |
-
Loco::enqueue_scripts('admin-poinit');
|
123 |
Loco::render('admin-poinit', compact('package','domain','title','locales') );
|
124 |
break;
|
125 |
}
|
@@ -138,6 +150,7 @@ abstract class LocoAdmin {
|
|
138 |
//
|
139 |
if( isset($_GET['fscheck']) ){
|
140 |
$meta = $package->meta();
|
|
|
141 |
Loco::render('admin-fscheck', $meta + compact('package') );
|
142 |
break;
|
143 |
}
|
@@ -154,7 +167,8 @@ abstract class LocoAdmin {
|
|
154 |
$themes = array();
|
155 |
foreach( wp_get_themes( array( 'allowed' => true ) ) as $name => $theme ){
|
156 |
$package = LocoPackage::get( $name, 'theme' ) and
|
157 |
-
$
|
|
|
158 |
}
|
159 |
// @var array $plugin
|
160 |
$plugins = array();
|
@@ -288,6 +302,23 @@ abstract class LocoAdmin {
|
|
288 |
}
|
289 |
// template file is developer-editable and has no locale
|
290 |
$ispot = self::is_pot($path);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
if( $ispot ){
|
292 |
$pot = $data;
|
293 |
$type = 'POT';
|
@@ -300,13 +331,8 @@ abstract class LocoAdmin {
|
|
300 |
$domain = self::resolve_file_domain($path);
|
301 |
$haspot = $package->get_pot( $domain );
|
302 |
}
|
303 |
-
|
304 |
-
|
305 |
-
$modified = self::format_datetime( filemtime($path) );
|
306 |
-
}
|
307 |
-
else {
|
308 |
-
$modified = 0;
|
309 |
-
}
|
310 |
// warn if new file can't be written
|
311 |
$writable = self::is_writable( $path );
|
312 |
if( ! $writable && ! $modified ){
|
@@ -403,6 +429,11 @@ abstract class LocoAdmin {
|
|
403 |
|
404 |
// no longer need the full local paths
|
405 |
$path = self::trim_path( $path );
|
|
|
|
|
|
|
|
|
|
|
406 |
|
407 |
Loco::enqueue_scripts('build/admin-poedit');
|
408 |
Loco::render('admin-poedit', compact('package','path','po','pot','locale','headers','name','type','modified','writable','warnings') );
|
@@ -420,6 +451,15 @@ abstract class LocoAdmin {
|
|
420 |
|
421 |
|
422 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
423 |
/**
|
424 |
* resolve file path that may be relative to wp-content
|
425 |
*/
|
@@ -497,6 +537,17 @@ abstract class LocoAdmin {
|
|
497 |
public static function find_po( $dir ){
|
498 |
return self::find( $dir, array('po','pot') );
|
499 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
500 |
|
501 |
|
502 |
/**
|
@@ -595,29 +646,48 @@ abstract class LocoAdmin {
|
|
595 |
}
|
596 |
|
597 |
|
|
|
598 |
/**
|
599 |
-
*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
600 |
*/
|
601 |
public static function parse_po( $path ){
|
602 |
function_exists('loco_parse_po') or loco_require('build/gettext-compiled');
|
603 |
-
$
|
604 |
-
$source
|
605 |
-
|
606 |
-
|
|
|
|
|
607 |
}
|
608 |
|
609 |
|
610 |
|
611 |
/**
|
612 |
-
* Parse PO or POT file, placing header object into argument
|
613 |
*/
|
614 |
public static function parse_po_with_headers( $path, &$headers ){
|
615 |
$export = self::parse_po( $path );
|
616 |
if( ! isset($export[0]) ){
|
617 |
-
|
|
|
618 |
}
|
619 |
if( $export[0]['source'] !== '' ){
|
620 |
-
|
|
|
621 |
}
|
622 |
$headers = loco_parse_po_headers( $export[0]['target'] );
|
623 |
$export[0] = array(); // <- avoid index errors as json
|
@@ -646,7 +716,7 @@ abstract class LocoAdmin {
|
|
646 |
* @return LocoLocale
|
647 |
*/
|
648 |
public static function resolve_file_locale( $path ){
|
649 |
-
$stub = str_replace( '.po', '', basename($path) );
|
650 |
$locale = loco_locale_resolve($stub);
|
651 |
return $locale;
|
652 |
}
|
@@ -654,15 +724,22 @@ abstract class LocoAdmin {
|
|
654 |
|
655 |
/**
|
656 |
* Resolve a PO file path or file name to TextDomain
|
657 |
-
* @param string e.g. "blah/mytheme-fr_FR.po"
|
658 |
-
* @return string e.
|
659 |
*/
|
660 |
public static function resolve_file_domain( $path ){
|
661 |
extract( pathinfo($path) );
|
662 |
if( ! isset($filename) ){
|
663 |
-
$filename = str_replace('.', '', $basename ); // PHP < 5.2.0
|
|
|
|
|
|
|
664 |
}
|
665 |
-
|
|
|
|
|
|
|
|
|
666 |
}
|
667 |
|
668 |
|
@@ -681,26 +758,35 @@ abstract class LocoAdmin {
|
|
681 |
/**
|
682 |
* Generate an admin page URI with custom args
|
683 |
*/
|
684 |
-
public static function uri( array $args = array() ){
|
685 |
-
|
686 |
-
if( ! isset($
|
687 |
-
$
|
688 |
-
|
689 |
-
|
690 |
-
|
691 |
-
return $base_uri;
|
692 |
}
|
693 |
-
return $base_uri.'
|
694 |
}
|
695 |
|
696 |
|
697 |
|
698 |
/**
|
699 |
* Test if we're on our own admin page
|
|
|
|
|
700 |
*/
|
701 |
-
public static function is_self(){
|
702 |
-
static $
|
703 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
704 |
}
|
705 |
|
706 |
|
@@ -855,26 +941,56 @@ abstract class LocoAdmin {
|
|
855 |
/**
|
856 |
* Enqueue only admin styles we need
|
857 |
*/
|
858 |
-
function
|
859 |
-
if( LocoAdmin::is_self() ){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
860 |
Loco::enqueue_styles('loco-admin');
|
861 |
}
|
862 |
}
|
863 |
|
864 |
|
|
|
865 |
/**
|
866 |
* Admin menu registration callback
|
867 |
*/
|
868 |
function _loco_hook__admin_menu() {
|
869 |
-
|
870 |
-
|
871 |
-
|
872 |
-
|
873 |
-
|
874 |
-
$page = array( 'LocoAdmin', 'render_page_tools' );
|
875 |
-
$hook = add_management_page( $title, Loco::__('Manage translations'), LOCO::CAPABILITY, Loco::NS, $page );
|
876 |
-
add_action('admin_print_styles', '_loco_hook__admin_print_styles' );
|
877 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
878 |
}
|
879 |
|
880 |
|
@@ -883,8 +999,8 @@ function _loco_hook__admin_menu() {
|
|
883 |
*/
|
884 |
function _loco_hook__plugin_row_meta( $links, $file = '' ){
|
885 |
if( false !== strpos($file,'/loco.php') ){
|
886 |
-
$links[] = '<a href="
|
887 |
-
$links[] = '<a href="
|
888 |
}
|
889 |
return $links;
|
890 |
}
|
35 |
}
|
36 |
|
37 |
|
38 |
+
/**
|
39 |
+
* Exit forbidden
|
40 |
+
*/
|
41 |
+
private static function forbid(){
|
42 |
+
wp_die( Loco::__('Permission denied'), 'Forbidden', array('response' => 403 ) );
|
43 |
+
trigger_error('wp_die failure', E_USER_ERROR );
|
44 |
+
exit();
|
45 |
+
}
|
46 |
+
|
47 |
+
|
48 |
|
49 |
/**
|
50 |
* Admin settings page render call
|
51 |
*/
|
52 |
public static function render_page_options(){
|
53 |
+
current_user_can(Loco::CAPABILITY) or self::forbid();
|
54 |
// update applicaion settings if posted
|
55 |
if( isset($_POST['loco']) && is_array( $update = $_POST['loco'] ) ){
|
56 |
$update += array( 'gen_hash' => '0' );
|
65 |
function_exists('loco_find_executable') or loco_require('build/shell-compiled');
|
66 |
$args['which_msgfmt'] = loco_find_executable('msgfmt');// and Loco::config( $args );
|
67 |
}
|
68 |
+
Loco::enqueue_scripts('build/admin-common');
|
69 |
Loco::render('admin-opts', $args );
|
70 |
}
|
71 |
|
75 |
* Admin tools page render call
|
76 |
*/
|
77 |
public static function render_page_tools(){
|
78 |
+
current_user_can(Loco::CAPABILITY) or self::forbid();
|
79 |
do {
|
80 |
try {
|
81 |
|
82 |
// libs required for all manage translation pages
|
83 |
loco_require('loco-locales','loco-packages');
|
84 |
|
|
|
85 |
// most actions except root listing define a single package by name and type
|
86 |
$package = null;
|
87 |
if( isset($_GET['name']) && isset($_GET['type']) ){
|
131 |
// else render msginit start screen
|
132 |
$title = Loco::__('New PO file');
|
133 |
$locales = loco_require('build/locales-compiled');
|
134 |
+
Loco::enqueue_scripts( 'build/admin-common', 'build/admin-poinit');
|
135 |
Loco::render('admin-poinit', compact('package','domain','title','locales') );
|
136 |
break;
|
137 |
}
|
150 |
//
|
151 |
if( isset($_GET['fscheck']) ){
|
152 |
$meta = $package->meta();
|
153 |
+
Loco::enqueue_scripts('build/admin-common');
|
154 |
Loco::render('admin-fscheck', $meta + compact('package') );
|
155 |
break;
|
156 |
}
|
167 |
$themes = array();
|
168 |
foreach( wp_get_themes( array( 'allowed' => true ) ) as $name => $theme ){
|
169 |
$package = LocoPackage::get( $name, 'theme' ) and
|
170 |
+
$name = $package->get_name();
|
171 |
+
$themes[ $name ] = $package;
|
172 |
}
|
173 |
// @var array $plugin
|
174 |
$plugins = array();
|
302 |
}
|
303 |
// template file is developer-editable and has no locale
|
304 |
$ispot = self::is_pot($path);
|
305 |
+
|
306 |
+
// path may not exist if we're creating a new one
|
307 |
+
if( file_exists($path) ){
|
308 |
+
$modified = self::format_datetime( filemtime($path) );
|
309 |
+
}
|
310 |
+
else {
|
311 |
+
$modified = 0;
|
312 |
+
}
|
313 |
+
|
314 |
+
// support incorrect usage of template PO files
|
315 |
+
if( ! $ispot && $head && $modified && ! $head->Language && self::none_translated($data) ){
|
316 |
+
$path .= 't';
|
317 |
+
$warnings[] = sprintf( Loco::__('PO file used as template. This will be renamed to %s on first save'), basename($path) );
|
318 |
+
$ispot = true;
|
319 |
+
$modified = 0;
|
320 |
+
}
|
321 |
+
|
322 |
if( $ispot ){
|
323 |
$pot = $data;
|
324 |
$type = 'POT';
|
331 |
$domain = self::resolve_file_domain($path);
|
332 |
$haspot = $package->get_pot( $domain );
|
333 |
}
|
334 |
+
|
335 |
+
|
|
|
|
|
|
|
|
|
|
|
336 |
// warn if new file can't be written
|
337 |
$writable = self::is_writable( $path );
|
338 |
if( ! $writable && ! $modified ){
|
429 |
|
430 |
// no longer need the full local paths
|
431 |
$path = self::trim_path( $path );
|
432 |
+
|
433 |
+
// If parsing MO file, from now on treat as PO
|
434 |
+
if( ! $ispot && self::is_mo($path) ){
|
435 |
+
$path = str_replace( '.mo', '.po', $path );
|
436 |
+
}
|
437 |
|
438 |
Loco::enqueue_scripts('build/admin-poedit');
|
439 |
Loco::render('admin-poedit', compact('package','path','po','pot','locale','headers','name','type','modified','writable','warnings') );
|
451 |
|
452 |
|
453 |
|
454 |
+
/**
|
455 |
+
* test if a file path is a MO (compiled) file
|
456 |
+
*/
|
457 |
+
public static function is_mo( $path ){
|
458 |
+
return 'mo' === strtolower( pathinfo($path,PATHINFO_EXTENSION) );
|
459 |
+
}
|
460 |
+
|
461 |
+
|
462 |
+
|
463 |
/**
|
464 |
* resolve file path that may be relative to wp-content
|
465 |
*/
|
537 |
public static function find_po( $dir ){
|
538 |
return self::find( $dir, array('po','pot') );
|
539 |
}
|
540 |
+
|
541 |
+
|
542 |
+
|
543 |
+
/**
|
544 |
+
* Recursively find all MO files anywhere under a directory
|
545 |
+
*/
|
546 |
+
public static function find_mo( $dir ){
|
547 |
+
$files = self::find( $dir, array('mo') );
|
548 |
+
return $files['mo'];
|
549 |
+
}
|
550 |
+
|
551 |
|
552 |
|
553 |
/**
|
646 |
}
|
647 |
|
648 |
|
649 |
+
|
650 |
/**
|
651 |
+
* Establish if translations are all empty
|
652 |
+
*/
|
653 |
+
private static function none_translated( array $data ){
|
654 |
+
foreach( $data as $message ){
|
655 |
+
if( ! empty($message['target']) ){
|
656 |
+
return false;
|
657 |
+
}
|
658 |
+
}
|
659 |
+
return true;
|
660 |
+
}
|
661 |
+
|
662 |
+
|
663 |
+
|
664 |
+
/**
|
665 |
+
* Parse MO, PO or POT file
|
666 |
*/
|
667 |
public static function parse_po( $path ){
|
668 |
function_exists('loco_parse_po') or loco_require('build/gettext-compiled');
|
669 |
+
$source = trim( file_get_contents($path) );
|
670 |
+
if( ! $source ){
|
671 |
+
return array();
|
672 |
+
}
|
673 |
+
$parser = strpos($path,'.mo') ? 'loco_parse_mo' : 'loco_parse_po';
|
674 |
+
return call_user_func( $parser, $source );
|
675 |
}
|
676 |
|
677 |
|
678 |
|
679 |
/**
|
680 |
+
* Parse MO, PO or POT file, placing header object into argument
|
681 |
*/
|
682 |
public static function parse_po_with_headers( $path, &$headers ){
|
683 |
$export = self::parse_po( $path );
|
684 |
if( ! isset($export[0]) ){
|
685 |
+
$ext = strtoupper( pathinfo($path,PATHINFO_EXTENSION) );
|
686 |
+
throw new Exception( sprintf( Loco::__('Empty or invalid %s file'), $ext ) );
|
687 |
}
|
688 |
if( $export[0]['source'] !== '' ){
|
689 |
+
$ext = strtoupper( pathinfo($path,PATHINFO_EXTENSION) );
|
690 |
+
throw new Exception( sprintf( Loco::__('%s file has no header'), $ext ) );
|
691 |
}
|
692 |
$headers = loco_parse_po_headers( $export[0]['target'] );
|
693 |
$export[0] = array(); // <- avoid index errors as json
|
716 |
* @return LocoLocale
|
717 |
*/
|
718 |
public static function resolve_file_locale( $path ){
|
719 |
+
$stub = str_replace( array('.po','.mo'), array('',''), basename($path) );
|
720 |
$locale = loco_locale_resolve($stub);
|
721 |
return $locale;
|
722 |
}
|
724 |
|
725 |
/**
|
726 |
* Resolve a PO file path or file name to TextDomain
|
727 |
+
* @param string e.g. "blah/mytheme-fr_FR.po" or "myplugin.pot"
|
728 |
+
* @return string e.g. "mytheme"
|
729 |
*/
|
730 |
public static function resolve_file_domain( $path ){
|
731 |
extract( pathinfo($path) );
|
732 |
if( ! isset($filename) ){
|
733 |
+
$filename = str_replace( '.'.$extension, '', $basename ); // PHP < 5.2.0
|
734 |
+
}
|
735 |
+
if( 'pot' === $extension ){
|
736 |
+
return $filename;
|
737 |
}
|
738 |
+
if( $domain = preg_replace('/[a-z]{2}(_[A-Z]{2})?$/', '', $filename ) ){
|
739 |
+
return ltrim( $domain, '-' );
|
740 |
+
}
|
741 |
+
// empty domain means file name is probably just a locale
|
742 |
+
return '';
|
743 |
}
|
744 |
|
745 |
|
758 |
/**
|
759 |
* Generate an admin page URI with custom args
|
760 |
*/
|
761 |
+
public static function uri( array $args = array(), $suffix = '' ){
|
762 |
+
$base_uri = admin_url('admin.php');
|
763 |
+
if( ! isset($args['page']) ){
|
764 |
+
$args['page'] = Loco::NS;
|
765 |
+
if( $suffix ){
|
766 |
+
$args['page'].= '-'.$suffix;
|
767 |
+
}
|
|
|
768 |
}
|
769 |
+
return $base_uri.'?'.http_build_query( $args );
|
770 |
}
|
771 |
|
772 |
|
773 |
|
774 |
/**
|
775 |
* Test if we're on our own admin page
|
776 |
+
* @param string optionally specify exact slug including Loco::NS
|
777 |
+
* @return string current slug
|
778 |
*/
|
779 |
+
public static function is_self( $page = null ){
|
780 |
+
static $active;
|
781 |
+
if( ! isset($active) ){
|
782 |
+
$screen = get_current_screen();
|
783 |
+
$splode = explode( Loco::NS, $screen->base, 2 );
|
784 |
+
$active = isset($splode[1]) ? Loco::NS.$splode[1] : false;
|
785 |
+
}
|
786 |
+
if( false !== $active && ( is_null($page) || $page === $active ) ){
|
787 |
+
return $active;
|
788 |
+
}
|
789 |
+
return '';
|
790 |
}
|
791 |
|
792 |
|
941 |
/**
|
942 |
* Enqueue only admin styles we need
|
943 |
*/
|
944 |
+
function _loco_hook__current_screen(){
|
945 |
+
if( $slug = LocoAdmin::is_self() ){
|
946 |
+
// redirect legacy links
|
947 |
+
if( $i = strpos( $slug,'-legacy') ){
|
948 |
+
$args = $_GET;
|
949 |
+
$args['page'] = substr_replace( $slug, '', $i );
|
950 |
+
$uri = LocoAdmin::uri( $args, $slug );
|
951 |
+
wp_redirect( $uri );
|
952 |
+
}
|
953 |
+
// add common resources for all Loco admin pages
|
954 |
Loco::enqueue_styles('loco-admin');
|
955 |
}
|
956 |
}
|
957 |
|
958 |
|
959 |
+
|
960 |
/**
|
961 |
* Admin menu registration callback
|
962 |
*/
|
963 |
function _loco_hook__admin_menu() {
|
964 |
+
$cap = LOCO::CAPABILITY;
|
965 |
+
if( current_user_can($cap) ){
|
966 |
+
// hook in legacy wordpress styles as menu will display
|
967 |
+
$wp_38 = version_compare( $GLOBALS['wp_version'], '3.8', '>=' ) or
|
968 |
+
Loco::enqueue_styles('loco-legacy');
|
|
|
|
|
|
|
969 |
|
970 |
+
$page_title = Loco::__('Loco, Translation Management');
|
971 |
+
$tool_title = Loco::__('Manage translations');
|
972 |
+
$opts_title = Loco::__('Translation options');
|
973 |
+
// Loco main menu item
|
974 |
+
$slug = Loco::NS;
|
975 |
+
$title = $page_title.' - '.$tool_title;
|
976 |
+
$page = array( 'LocoAdmin', 'render_page_tools' );
|
977 |
+
// Dashicons were introduced in WP 3.8
|
978 |
+
$icon = $wp_38 ? 'dashicons-translation' : 'none';
|
979 |
+
add_menu_page( $title, Loco::__('Loco Translate'), $cap, $slug, $page, $icon );
|
980 |
+
// add main link under self with different name
|
981 |
+
add_submenu_page( $slug, $title, $tool_title, $cap, $slug, $page );
|
982 |
+
// also add under Tools menu (legacy)
|
983 |
+
add_management_page( $title, $tool_title, $cap, $slug.'-legacy', $page );
|
984 |
+
// Settings page
|
985 |
+
$slug = $slug.'-settings';
|
986 |
+
$title = $page_title.' - '.$opts_title;
|
987 |
+
$page = array( 'LocoAdmin', 'render_page_options' );
|
988 |
+
add_submenu_page( Loco::NS, $title, $opts_title, $cap, $slug, $page );
|
989 |
+
// also add under Settings menu (legacy)
|
990 |
+
add_options_page( $title, $opts_title, Loco::CAPABILITY, $slug.'-legacy', $page );
|
991 |
+
// Hook in page stuff as soon as screen is avaiable
|
992 |
+
add_action('current_screen', '_loco_hook__current_screen' );
|
993 |
+
}
|
994 |
}
|
995 |
|
996 |
|
999 |
*/
|
1000 |
function _loco_hook__plugin_row_meta( $links, $file = '' ){
|
1001 |
if( false !== strpos($file,'/loco.php') ){
|
1002 |
+
$links[] = '<a href="'.Loco::html( LocoAdmin::uri( array(), '' ) ).'"><strong>'.Loco::__('Manage translations').'</strong></a>';
|
1003 |
+
$links[] = '<a href="'.Loco::html( LocoAdmin::uri( array(), 'settings') ).'"><strong>'.Loco::__('Settings').'</strong></a>';
|
1004 |
}
|
1005 |
return $links;
|
1006 |
}
|
lib/loco-locales.php
CHANGED
@@ -86,8 +86,8 @@ final class LocoLocale {
|
|
86 |
*/
|
87 |
public static function init( $lc, $cc ){
|
88 |
// pre-compiled locale data
|
89 |
-
static $plurals = array ( '
|
90 |
-
$locales = array ( 'en' => array ( 'GB' => array ( 'English (UK)', 2, 0, ), 'IE' => array ( 'English (Ireland)', 2, 0, ), 'US' => array ( 'English (USA)', 2, 0, ), 'CA' => array ( 'English (Canada)', 2, 0, ), 'AU' => array ( 'English (Australia)', 2, 0, ), 'NZ' => array ( 'English (New Zealand)', 2, 0, ), 'HK' => array ( 'English (Hong Kong)', 2, 0, ), 'SG' => array ( 'English (Singapore)', 2, 0, ), 'AE' => array ( 'English (United Arab Emirates)', 2, 0, ), 'ZA' => array ( 'English (South Africa)', 2, 0, ), 'IN' => array ( 'English (India)', 2, 0, ), ), 'fr' => array ( 'FR' => array ( 'French', 2, 1, ), 'CH' => array ( 'French (Switzerland)', 2, 1, ), 'BE' => array ( 'French (Belgium)', 2, 1, ), 'HT' => array ( 'French (Haiti)', 2, 1, ), 'CA' => array ( 'French (Canada)', 2, 1, ), ), 'it' => array ( 'IT' => array ( 'Italian', 2, 0, ), 'CH' => array ( 'Italian (Switzerland)', 2, 0, ), ), 'de' => array ( 'DE' => array ( 'German', 2, 0, ), 'CH' => array ( 'German (Switzerland)', 2, 0, ), 'AT' => array ( 'German (Austria)', 2, 0, ), ), 'es' => array ( 'ES' => array ( 'Spanish', 2, 0, ), 'MX' => array ( 'Spanish (Mexico)', 2, 0, ), 'AR' => array ( 'Spanish (Argentina)', 2, 0, ), 'BO' => array ( 'Spanish (Bolivia)', 2, 0, ), 'CL' => array ( 'Spanish (Chile)', 2, 0, ), 'CO' => array ( 'Spanish (Colombia)', 2, 0, ), 'CR' => array ( 'Spanish (Costa Rica)', 2, 0, ), 'CU' => array ( 'Spanish (Cuba)', 2, 0, ), 'DO' => array ( 'Spanish (Dominican Republic)', 2, 0, ), 'EC' => array ( 'Spanish (Ecuador)', 2, 0, ), 'SV' => array ( 'Spanish (El Salvador)', 2, 0, ), 'GT' => array ( 'Spanish (Guatemala)', 2, 0, ), 'HN' => array ( 'Spanish (Honduras)', 2, 0, ), 'NI' => array ( 'Spanish (Nicaragua)', 2, 0, ), 'PA' => array ( 'Spanish (Panama)', 2, 0, ), 'PY' => array ( 'Spanish (Paraguay)', 2, 0, ), 'PE' => array ( 'Spanish (Peru)', 2, 0, ), 'UY' => array ( 'Spanish (Uruguay)', 2, 0, ), 'VE' => array ( 'Spanish (Venezuela)', 2, 0, ), ), 'pt' => array ( 'PT' => array ( 'Portuguese', 2, 0, ), 'BR' => array ( 'Portuguese (Brazil)', 2, 0, ), ), 'ru' => array ( 'RU' => array ( 'Russian', 3, 2, ), 'UA' => array ( 'Russian (Ukraine)', 3, 2, ), ), 'sv' => array ( 'SE' => array ( 'Swedish', 2, 0, ), ), 'no' => array ( 'NO' => array ( 'Norwegian', 2, 0, ), ), 'da' => array ( 'DK' => array ( 'Danish', 2, 0, ), ), 'fi' => array ( 'FI' => array ( 'Finnish', 2,
|
91 |
// end pre-compiled locale data
|
92 |
$locale = new LocoLocale( $lc, $cc );
|
93 |
if( isset($locales[$lc]) ){
|
86 |
*/
|
87 |
public static function init( $lc, $cc ){
|
88 |
// pre-compiled locale data
|
89 |
+
static $plurals = array ( 'n != 1', 'n > 1', 'n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2', '( n == 1 ) ? 0 : ( n >= 2 && n <= 4 ) ? 1 : 2', 'n % 10 == 1 && n % 100 != 11 ? 0 : n != 0 ? 1 : 2', 'n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2', 'n == 1 ? 0 : n == 0 || ( n % 100 > 1 && n % 100 < 11 ) ? 1 : ( n % 100 > 10 && n % 100 < 20 ) ? 2 : 3', 'n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && ( n % 100 < 10 || n % 100 >= 20 ) ? 1 : 2', 'n == 1 ? 0 : ( n == 0 || ( n % 100 > 0 && n % 100 < 20 ) ) ? 1 : 2', 'n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0', 0, 'n % 10 != 1 || n % 100 == 11', 'n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5', '( n == 1 ) ? 0 : ( n == 2 ) ? 1 : ( n != 8 && n != 11 ) ? 2 : 3', 'n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4', 'n != 0', ),
|
90 |
+
$locales = array ( 'en' => array ( 'GB' => array ( 'English (UK)', 2, 0, ), 'IE' => array ( 'English (Ireland)', 2, 0, ), 'US' => array ( 'English (USA)', 2, 0, ), 'CA' => array ( 'English (Canada)', 2, 0, ), 'AU' => array ( 'English (Australia)', 2, 0, ), 'NZ' => array ( 'English (New Zealand)', 2, 0, ), 'HK' => array ( 'English (Hong Kong)', 2, 0, ), 'SG' => array ( 'English (Singapore)', 2, 0, ), 'AE' => array ( 'English (United Arab Emirates)', 2, 0, ), 'ZA' => array ( 'English (South Africa)', 2, 0, ), 'IN' => array ( 'English (India)', 2, 0, ), ), 'fr' => array ( 'FR' => array ( 'French', 2, 1, ), 'CH' => array ( 'French (Switzerland)', 2, 1, ), 'BE' => array ( 'French (Belgium)', 2, 1, ), 'HT' => array ( 'French (Haiti)', 2, 1, ), 'CA' => array ( 'French (Canada)', 2, 1, ), ), 'it' => array ( 'IT' => array ( 'Italian', 2, 0, ), 'CH' => array ( 'Italian (Switzerland)', 2, 0, ), ), 'de' => array ( 'DE' => array ( 'German', 2, 0, ), 'CH' => array ( 'German (Switzerland)', 2, 0, ), 'AT' => array ( 'German (Austria)', 2, 0, ), ), 'es' => array ( 'ES' => array ( 'Spanish', 2, 0, ), 'MX' => array ( 'Spanish (Mexico)', 2, 0, ), 'AR' => array ( 'Spanish (Argentina)', 2, 0, ), 'BO' => array ( 'Spanish (Bolivia)', 2, 0, ), 'CL' => array ( 'Spanish (Chile)', 2, 0, ), 'CO' => array ( 'Spanish (Colombia)', 2, 0, ), 'CR' => array ( 'Spanish (Costa Rica)', 2, 0, ), 'CU' => array ( 'Spanish (Cuba)', 2, 0, ), 'DO' => array ( 'Spanish (Dominican Republic)', 2, 0, ), 'EC' => array ( 'Spanish (Ecuador)', 2, 0, ), 'SV' => array ( 'Spanish (El Salvador)', 2, 0, ), 'GT' => array ( 'Spanish (Guatemala)', 2, 0, ), 'HN' => array ( 'Spanish (Honduras)', 2, 0, ), 'NI' => array ( 'Spanish (Nicaragua)', 2, 0, ), 'PA' => array ( 'Spanish (Panama)', 2, 0, ), 'PY' => array ( 'Spanish (Paraguay)', 2, 0, ), 'PE' => array ( 'Spanish (Peru)', 2, 0, ), 'UY' => array ( 'Spanish (Uruguay)', 2, 0, ), 'VE' => array ( 'Spanish (Venezuela)', 2, 0, ), ), 'pt' => array ( 'PT' => array ( 'Portuguese', 2, 0, ), 'BR' => array ( 'Portuguese (Brazil)', 2, 0, ), ), 'ru' => array ( 'RU' => array ( 'Russian', 3, 2, ), 'UA' => array ( 'Russian (Ukraine)', 3, 2, ), ), 'sv' => array ( 'SE' => array ( 'Swedish', 2, 0, ), ), 'no' => array ( 'NO' => array ( 'Norwegian', 2, 0, ), ), 'da' => array ( 'DK' => array ( 'Danish', 2, 0, ), ), 'fi' => array ( 'FI' => array ( 'Finnish', 2, 0, ), ), 'bg' => array ( 'BG' => array ( 'Bulgarian', 2, 0, ), ), 'cs' => array ( 'CZ' => array ( 'Czech', 3, 3, ), ), 'et' => array ( 'EE' => array ( 'Estonian', 2, 0, ), ), 'el' => array ( 'GR' => array ( 'Greek', 2, 0, ), 'CY' => array ( 'Greek (Cyprus)', 2, 0, ), ), 'hu' => array ( 'HU' => array ( 'Hungarian', 2, 0, ), ), 'lv' => array ( 'LV' => array ( 'Latvian', 3, 4, ), ), 'lt' => array ( 'LT' => array ( 'Lithuanian', 3, 5, ), ), 'lb' => array ( 'LU' => array ( 'Luxembourgish', 2, 0, ), ), 'mt' => array ( 'MT' => array ( 'Maltese', 4, 6, ), ), 'nl' => array ( 'NL' => array ( 'Dutch', 2, 0, ), 'BE' => array ( 'Dutch (Belgium)', 2, 0, ), ), 'pl' => array ( 'PL' => array ( 'Polish', 3, 7, ), ), 'ro' => array ( 'RO' => array ( 'Romanian', 3, 8, ), ), 'sk' => array ( 'SK' => array ( 'Slovak', 3, 3, ), ), 'sl' => array ( 'SI' => array ( 'Slovenian', 4, 9, ), ), 'ht' => array ( 'HT' => array ( 'Haitian Creole', 2, 0, ), ), 'gn' => array ( 'PY' => array ( 'Guarani (Paraguay)', 2, 0, ), ), 'ja' => array ( 'JP' => array ( 'Japanese', 1, 10, ), ), 'zh' => array ( 'CN' => array ( 'Chinese', 1, 10, ), 'HK' => array ( 'Chinese (Hong Kong)', 1, 10, ), 'TW' => array ( 'Chinese (Taiwan)', 1, 10, ), ), 'af' => array ( 'ZA' => array ( 'Afrikaans (South Africa)', 2, 0, ), ), 'hr' => array ( 'HR' => array ( 'Croatian', 3, 2, ), ), 'is' => array ( 'IS' => array ( 'Icelandic', 2, 11, ), ), 'he' => array ( 'IL' => array ( 'Hebrew (Israel)', 2, 0, ), ), 'ar' => array ( 'IL' => array ( 'Arabic (Israel)', 6, 12, ), 'AE' => array ( 'Arabic (United Arab Emirates)', 6, 12, ), ), 'hi' => array ( 'IN' => array ( 'Hindi (India)', 2, 0, ), ), 'sr' => array ( 'RS' => array ( 'Serbian', 3, 2, ), ), 'tr' => array ( 'TR' => array ( 'Turkish', 2, 1, ), ), 'ko' => array ( 'KR' => array ( 'Korean', 1, 10, ), ), 'cy' => array ( 'GB' => array ( 'Welsh', 4, 13, ), ), 'ms' => array ( 'MY' => array ( 'Malay (Malaysia)', 1, 10, ), ), 'az' => array ( 'TR' => array ( 'Azerbaijani (Turkey)', 2, 0, ), ), 'bn' => array ( 'BD' => array ( 'Bengali (Bangladesh)', 2, 0, ), ), 'bs' => array ( 'BA' => array ( 'Bosnian (Bosnia & Herzegovina)', 3, 2, ), ), 'fa' => array ( 'AF' => array ( 'Persian (Afghanistan)', 1, 10, ), 'IR' => array ( 'Persian (Iran)', 1, 10, ), ), 'fo' => array ( 'FO' => array ( 'Faroese (Faroe Islands)', 2, 0, ), 'DK' => array ( 'Faroese (Denmark)', 2, 0, ), ), 'ga' => array ( 'IE' => array ( 'Irish (Ireland)', 5, 14, ), ), 'gl' => array ( 'ES' => array ( 'Galician (Spain)', 2, 0, ), ), 'hy' => array ( 'AM' => array ( 'Armenian', 2, 0, ), ), 'id' => array ( 'ID' => array ( 'Indonesian', 1, 10, ), ), 'jv' => array ( 'ID' => array ( 'Javanese (Indonesia)', 2, 15, ), ), 'ka' => array ( 'GE' => array ( 'Georgian', 1, 10, ), ), 'kk' => array ( 'KZ' => array ( 'Kazakh', 1, 10, ), ), 'kn' => array ( 'IN' => array ( 'Kannada (India)', 2, 0, ), ), 'li' => array ( 'NL' => array ( 'Limburgish (Netherlands)', 2, 0, ), ), 'lo' => array ( 'LA' => array ( 'Lao (Laos)', 1, 10, ), ), 'mg' => array ( 'MG' => array ( 'Malagasy (Madagascar)', 2, 1, ), ), 'my' => array ( 'MM' => array ( 'Burmese (Myanmar)', 1, 10, ), ), 'nb' => array ( 'NO' => array ( 'Bokmål', 2, 0, ), ), 'nn' => array ( 'NO' => array ( 'Nynorsk', 2, 0, ), ), 'ne' => array ( 'NP' => array ( 'Nepali', 2, 0, ), ), 'os' => array ( 'TR' => array ( 'Ossetian (Turkey)', 2, 0, ), 'RU' => array ( 'Ossetian (Russia)', 2, 0, ), 'GE' => array ( 'Ossetian (Georgia)', 2, 0, ), ), 'pa' => array ( 'IN' => array ( 'Punjabi (India)', 2, 0, ), ), 'uk' => array ( 'UA' => array ( 'Ukrainian (Ukraine)', 3, 2, ), ), 'sa' => array ( 'IN' => array ( 'Sanskrit (India)', 2, 0, ), ), 'sd' => array ( 'PK' => array ( 'Sindhi (Pakistan)', 2, 0, ), ), 'si' => array ( 'LK' => array ( 'Sinhala (Sri Lanka)', 2, 0, ), ), 'so' => array ( 'SO' => array ( 'Somali', 2, 0, ), ), 'sq' => array ( 'AL' => array ( 'Albanian (Albania)', 2, 0, ), ), 'sc' => array ( 'IT' => array ( 'Sardinian (Italy)', 2, 0, ), ), 'su' => array ( 'ID' => array ( 'Sundanese (Indonesia)', 1, 10, ), ), 'sw' => array ( 'KE' => array ( 'Swahili (Kenya)', 2, 0, ), 'UG' => array ( 'Swahili (Uganda)', 2, 0, ), 'TZ' => array ( 'Swahili (Tanzania)', 2, 0, ), 'KM' => array ( 'Swahili (Comoros)', 2, 0, ), ), 'ta' => array ( 'IN' => array ( 'Tamil (India)', 2, 0, ), 'LK' => array ( 'Tamil (Sri Lanka)', 2, 0, ), ), 'te' => array ( 'IN' => array ( 'Telugu (India)', 2, 0, ), ), 'th' => array ( 'TH' => array ( 'Thai (Thailand)', 1, 10, ), ), 'tg' => array ( 'TJ' => array ( 'Tajik (Tajikistan)', 2, 1, ), ), 'ug' => array ( 'CN' => array ( 'Uyghur (China)', 1, 10, ), ), 'ur' => array ( 'IN' => array ( 'Urdu (India)', 2, 0, ), 'PK' => array ( 'Urdu (Pakistan)', 2, 0, ), ), 'uz' => array ( 'UZ' => array ( 'Uzbek (Uzbekistan)', 2, 1, ), ), 'vi' => array ( 'VN' => array ( 'Vietnamese', 1, 10, ), ), );
|
91 |
// end pre-compiled locale data
|
92 |
$locale = new LocoLocale( $lc, $cc );
|
93 |
if( isset($locales[$lc]) ){
|
lib/loco-packages.php
CHANGED
@@ -106,12 +106,47 @@ class LocoPackage {
|
|
106 |
}
|
107 |
|
108 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
109 |
/**
|
110 |
* Get default text domain
|
111 |
*/
|
112 |
public function get_domain(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
return $this->domain;
|
114 |
}
|
|
|
115 |
|
116 |
/**
|
117 |
* Get time most recent PO/POT file was updated
|
@@ -164,16 +199,16 @@ class LocoPackage {
|
|
164 |
* Add multiple locations from found PO and POT files
|
165 |
* @return LocoPackage
|
166 |
*/
|
167 |
-
|
168 |
if( isset($files['pot']) && is_array($files['pot']) ){
|
169 |
foreach( $files['pot'] as $path ){
|
170 |
-
$domain or $domain = LocoAdmin::resolve_file_domain($path) or $domain = $this->
|
171 |
$this->add_file($path) and $this->pot[$domain] = $path;
|
172 |
}
|
173 |
}
|
174 |
if( isset($files['po']) && is_array($files['po']) ){
|
175 |
foreach( $files['po'] as $path ){
|
176 |
-
$domain or $domain = LocoAdmin::resolve_file_domain($path) or $domain = $this->
|
177 |
$locale = LocoAdmin::resolve_file_locale($path);
|
178 |
$code = $locale->get_code() or $code = 'xx_XX';
|
179 |
$this->add_file($path) and $this->po[ $domain ][ $code ] = $path;
|
@@ -183,11 +218,32 @@ class LocoPackage {
|
|
183 |
}
|
184 |
|
185 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
/**
|
187 |
* Add a location under which there may be PHP source files for one or more of our domains
|
188 |
* @return LocoPackage
|
189 |
*/
|
190 |
-
|
191 |
$this->src[] = $path;
|
192 |
return $this;
|
193 |
}
|
@@ -198,6 +254,7 @@ class LocoPackage {
|
|
198 |
*/
|
199 |
public function lang_dir( $domain = '' ){
|
200 |
$dirs = array();
|
|
|
201 |
foreach( $this->pot as $d => $path ){
|
202 |
if( ! $domain || $d === $domain ){
|
203 |
$path = dirname($path);
|
@@ -207,6 +264,7 @@ class LocoPackage {
|
|
207 |
$dirs[] = $path;
|
208 |
}
|
209 |
}
|
|
|
210 |
foreach( $this->po as $d => $paths ){
|
211 |
if( ! $domain || $d === $domain ){
|
212 |
foreach( $paths as $path ){
|
@@ -218,13 +276,23 @@ class LocoPackage {
|
|
218 |
}
|
219 |
}
|
220 |
}
|
|
|
221 |
foreach( $this->src as $path ){
|
222 |
-
$
|
|
|
|
|
|
|
223 |
if( is_writable($path) ){
|
224 |
return $path;
|
225 |
}
|
226 |
-
$
|
|
|
|
|
|
|
|
|
|
|
227 |
}
|
|
|
228 |
$path = $this->_lang_dir();
|
229 |
if( is_writable($path) ){
|
230 |
return $path;
|
@@ -240,15 +308,29 @@ class LocoPackage {
|
|
240 |
*/
|
241 |
public function create_po_path( LocoLocale $locale, $domain = '' ){
|
242 |
if( ! $domain ){
|
243 |
-
$domain = $this->
|
244 |
}
|
245 |
$dir = $this->lang_dir( $domain );
|
246 |
-
$name = $locale->get_code().'.po';
|
247 |
// only prefix with text domain for plugins and files in global lang directory
|
248 |
if( 'plugin' === $this->get_type() || 0 === strpos( $dir, $this->_lang_dir() ) ){
|
249 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
250 |
}
|
251 |
-
return $dir.'/'.$name;
|
252 |
}
|
253 |
|
254 |
|
@@ -285,13 +367,16 @@ class LocoPackage {
|
|
285 |
* Called when generating root list view for simple error indicators.
|
286 |
*/
|
287 |
public function check_permissions(){
|
|
|
288 |
foreach( $this->pot as $path ){
|
|
|
289 |
if( ! is_writable($path) ){
|
290 |
throw new Exception( Loco::__('Some files not writable') );
|
291 |
}
|
292 |
}
|
293 |
foreach( $this->po as $paths ){
|
294 |
foreach( $paths as $path ){
|
|
|
295 |
if( ! is_writable($path) ){
|
296 |
throw new Exception( Loco::__('Some files not writable') );
|
297 |
}
|
@@ -304,6 +389,11 @@ class LocoPackage {
|
|
304 |
if( ! is_writable($dir) ){
|
305 |
throw new Exception( sprintf( Loco::__('"%s" folder not writable'), basename($dir) ) );
|
306 |
}
|
|
|
|
|
|
|
|
|
|
|
307 |
}
|
308 |
|
309 |
|
@@ -311,19 +401,31 @@ class LocoPackage {
|
|
311 |
* Get file permission for every important file path in package
|
312 |
*/
|
313 |
public function get_permission_errors(){
|
|
|
314 |
$paths = array();
|
315 |
-
$dir = $this->lang_dir();
|
316 |
-
$paths[$dir] = is_writable($dir) ? '' : Loco::__('Folder not writable');
|
317 |
foreach( $this->pot as $path ){
|
|
|
318 |
$paths[$path] = is_writable($path) ? '' : Loco::__('POT file not writable');
|
319 |
}
|
320 |
foreach( $this->po as $pos ){
|
321 |
foreach( $pos as $path ){
|
|
|
322 |
$paths[$path] = is_writable($path) ? '' : Loco::__('PO file not writable');
|
323 |
$path = preg_replace('/\.po$/', '.mo', $path );
|
324 |
$paths[$path] = file_exists($path) ? ( is_writeable($path) ? '' : Loco::__('MO file not writable') ) : Loco::__('MO file not found');
|
325 |
}
|
326 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
327 |
return $paths;
|
328 |
}
|
329 |
|
@@ -334,9 +436,23 @@ class LocoPackage {
|
|
334 |
*/
|
335 |
public function get_pot( $domain = '' ){
|
336 |
if( ! $domain ){
|
337 |
-
$domain = $this->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
338 |
}
|
339 |
-
|
|
|
340 |
}
|
341 |
|
342 |
|
@@ -346,7 +462,7 @@ class LocoPackage {
|
|
346 |
*/
|
347 |
public function get_po( $domain = '' ){
|
348 |
if( ! $domain ){
|
349 |
-
$domain = $this->
|
350 |
}
|
351 |
return isset($this->po[$domain]) ? $this->po[$domain] : array();
|
352 |
}
|
@@ -393,7 +509,9 @@ class LocoPackage {
|
|
393 |
public function meta(){
|
394 |
if( ! is_array($this->_meta) ){
|
395 |
$pot = $po = array();
|
396 |
-
|
|
|
|
|
397 |
$pot[] = compact('domain','path');
|
398 |
}
|
399 |
// get progress and locale for each PO file
|
@@ -405,7 +523,7 @@ class LocoPackage {
|
|
405 |
$po[] = array (
|
406 |
'path' => $path,
|
407 |
'domain' => $domain,
|
408 |
-
'name' => str_replace( array('.po',$domain), array('',''), basename($path) ),
|
409 |
'stats' => loco_po_stats( $export ),
|
410 |
'length' => count( $export ),
|
411 |
'locale' => loco_locale_resolve($code),
|
@@ -417,9 +535,9 @@ class LocoPackage {
|
|
417 |
}
|
418 |
}
|
419 |
$this->_meta = compact('po','pot') + array(
|
420 |
-
'name' => $this->
|
421 |
'root' => $this->get_root(),
|
422 |
-
'domain' => $this->
|
423 |
);
|
424 |
}
|
425 |
return $this->_meta;
|
@@ -459,16 +577,47 @@ class LocoPackage {
|
|
459 |
private static function get_theme( $handle ){
|
460 |
$theme = wp_get_theme( $handle );
|
461 |
if( $theme && $theme->exists() ){
|
462 |
-
$
|
463 |
-
$
|
|
|
464 |
$root = $theme->get_theme_root().'/'.$handle;
|
465 |
$package->add_source( $root );
|
466 |
// add PO and POT under theme root
|
467 |
if( $files = LocoAdmin::find_po($root) ){
|
468 |
$package->add_po( $files, $domain );
|
469 |
}
|
470 |
-
//
|
|
|
|
|
|
|
|
|
471 |
$package->add_lang_dir( WP_LANG_DIR.'/themes', $domain );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
472 |
return $package;
|
473 |
}
|
474 |
}
|
@@ -490,6 +639,10 @@ class LocoPackage {
|
|
490 |
if( $files = LocoAdmin::find_po($root) ){
|
491 |
$package->add_po( $files, $domain );
|
492 |
}
|
|
|
|
|
|
|
|
|
493 |
// find additional plugin PO under WP_LANG_DIR/plugin
|
494 |
$package->add_lang_dir( WP_LANG_DIR.'/plugins', $domain );
|
495 |
return $package;
|
@@ -576,9 +729,38 @@ class LocoPackage {
|
|
576 |
* Extended package class for themes
|
577 |
*/
|
578 |
class LocoThemePackage extends LocoPackage {
|
|
|
579 |
protected function _lang_dir(){
|
580 |
return WP_LANG_DIR.'/themes';
|
581 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
582 |
public function get_type(){
|
583 |
return 'theme';
|
584 |
}
|
106 |
}
|
107 |
|
108 |
|
109 |
+
/**
|
110 |
+
* Get package handle used for retreiving theme or plugin via wordpress functions
|
111 |
+
*/
|
112 |
+
public function get_handle(){
|
113 |
+
return $this->handle;
|
114 |
+
}
|
115 |
+
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Get descriptive package name
|
119 |
+
*/
|
120 |
+
public function get_name(){
|
121 |
+
return $this->name;
|
122 |
+
}
|
123 |
+
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Get all text domains with PO or POT files.
|
127 |
+
*/
|
128 |
+
private function get_domains(){
|
129 |
+
return array_unique( array_merge( array_keys($this->pot), array_keys($this->po) ) );
|
130 |
+
}
|
131 |
+
|
132 |
+
|
133 |
/**
|
134 |
* Get default text domain
|
135 |
*/
|
136 |
public function get_domain(){
|
137 |
+
if( ! $this->domain ){
|
138 |
+
$this->domain = $this->handle;
|
139 |
+
}
|
140 |
+
if( $this->domain === $this->handle ){
|
141 |
+
// if text domain defaulted and existing files disagree, try to correct primary domain
|
142 |
+
$candidates = $this->get_domains();
|
143 |
+
if( $candidates && ! in_array( $this->domain, $candidates, true ) ){
|
144 |
+
$this->domain = $candidates[0];
|
145 |
+
}
|
146 |
+
}
|
147 |
return $this->domain;
|
148 |
}
|
149 |
+
|
150 |
|
151 |
/**
|
152 |
* Get time most recent PO/POT file was updated
|
199 |
* Add multiple locations from found PO and POT files
|
200 |
* @return LocoPackage
|
201 |
*/
|
202 |
+
private function add_po( array $files, $domain = '' ){
|
203 |
if( isset($files['pot']) && is_array($files['pot']) ){
|
204 |
foreach( $files['pot'] as $path ){
|
205 |
+
$domain or $domain = LocoAdmin::resolve_file_domain($path) or $domain = $this->get_domain();
|
206 |
$this->add_file($path) and $this->pot[$domain] = $path;
|
207 |
}
|
208 |
}
|
209 |
if( isset($files['po']) && is_array($files['po']) ){
|
210 |
foreach( $files['po'] as $path ){
|
211 |
+
$domain or $domain = LocoAdmin::resolve_file_domain($path) or $domain = $this->get_domain();
|
212 |
$locale = LocoAdmin::resolve_file_locale($path);
|
213 |
$code = $locale->get_code() or $code = 'xx_XX';
|
214 |
$this->add_file($path) and $this->po[ $domain ][ $code ] = $path;
|
218 |
}
|
219 |
|
220 |
|
221 |
+
|
222 |
+
/**
|
223 |
+
* Add any MO files for which PO files are missing
|
224 |
+
*/
|
225 |
+
private function add_mo( array $files, $domain = '' ){
|
226 |
+
foreach( $files as $mo_path ){
|
227 |
+
$domain or $domain = LocoAdmin::resolve_file_domain($mo_path) or $domain = $this->get_domain();
|
228 |
+
$locale = LocoAdmin::resolve_file_locale($mo_path);
|
229 |
+
$code = $locale->get_code() or $code = 'xx_XX';
|
230 |
+
if( isset($this->po[$domain][$code]) ){
|
231 |
+
// PO matched, ignore this MO
|
232 |
+
// @todo better matching as PO may not be in same location as MO
|
233 |
+
continue;
|
234 |
+
}
|
235 |
+
// add MO in place of PO
|
236 |
+
$this->add_file($mo_path) and $this->po[$domain][$code] = $mo_path;
|
237 |
+
}
|
238 |
+
}
|
239 |
+
|
240 |
+
|
241 |
+
|
242 |
/**
|
243 |
* Add a location under which there may be PHP source files for one or more of our domains
|
244 |
* @return LocoPackage
|
245 |
*/
|
246 |
+
private function add_source( $path ){
|
247 |
$this->src[] = $path;
|
248 |
return $this;
|
249 |
}
|
254 |
*/
|
255 |
public function lang_dir( $domain = '' ){
|
256 |
$dirs = array();
|
257 |
+
// check location of POT in domain
|
258 |
foreach( $this->pot as $d => $path ){
|
259 |
if( ! $domain || $d === $domain ){
|
260 |
$path = dirname($path);
|
264 |
$dirs[] = $path;
|
265 |
}
|
266 |
}
|
267 |
+
// check location of al PO files in domain
|
268 |
foreach( $this->po as $d => $paths ){
|
269 |
if( ! $domain || $d === $domain ){
|
270 |
foreach( $paths as $path ){
|
276 |
}
|
277 |
}
|
278 |
}
|
279 |
+
// check languages subfolder of all source file locations
|
280 |
foreach( $this->src as $path ){
|
281 |
+
$pref = $path.'/languages';
|
282 |
+
if( is_writable($pref) ){
|
283 |
+
return $pref;
|
284 |
+
}
|
285 |
if( is_writable($path) ){
|
286 |
return $path;
|
287 |
}
|
288 |
+
if( is_dir($pref) ){
|
289 |
+
$dirs[] = $pref;
|
290 |
+
}
|
291 |
+
else {
|
292 |
+
$dirs[] = $path;
|
293 |
+
}
|
294 |
}
|
295 |
+
// check global languages location
|
296 |
$path = $this->_lang_dir();
|
297 |
if( is_writable($path) ){
|
298 |
return $path;
|
308 |
*/
|
309 |
public function create_po_path( LocoLocale $locale, $domain = '' ){
|
310 |
if( ! $domain ){
|
311 |
+
$domain = $this->get_domain();
|
312 |
}
|
313 |
$dir = $this->lang_dir( $domain );
|
314 |
+
$name = $locale->get_code().'.po';
|
315 |
// only prefix with text domain for plugins and files in global lang directory
|
316 |
if( 'plugin' === $this->get_type() || 0 === strpos( $dir, $this->_lang_dir() ) ){
|
317 |
+
$prefix = $domain.'-';
|
318 |
+
}
|
319 |
+
else {
|
320 |
+
$prefix = '';
|
321 |
+
}
|
322 |
+
// if PO files exist, copy their naming format and use location if writable
|
323 |
+
if( ! empty($this->po[$domain]) ){
|
324 |
+
foreach( $this->po[$domain] as $code => $path ){
|
325 |
+
$info = pathinfo( $path );
|
326 |
+
$prefix = str_replace( $code.'.po', '', $info['basename'] );
|
327 |
+
if( is_writable($info['dirname']) ){
|
328 |
+
$dir = $info['dirname'];
|
329 |
+
break;
|
330 |
+
}
|
331 |
+
}
|
332 |
}
|
333 |
+
return $dir.'/'.$prefix.$name;
|
334 |
}
|
335 |
|
336 |
|
367 |
* Called when generating root list view for simple error indicators.
|
368 |
*/
|
369 |
public function check_permissions(){
|
370 |
+
$dirs = array();
|
371 |
foreach( $this->pot as $path ){
|
372 |
+
$dirs[ dirname($path) ] = 1;
|
373 |
if( ! is_writable($path) ){
|
374 |
throw new Exception( Loco::__('Some files not writable') );
|
375 |
}
|
376 |
}
|
377 |
foreach( $this->po as $paths ){
|
378 |
foreach( $paths as $path ){
|
379 |
+
$dirs[ dirname($path) ] = 1;
|
380 |
if( ! is_writable($path) ){
|
381 |
throw new Exception( Loco::__('Some files not writable') );
|
382 |
}
|
389 |
if( ! is_writable($dir) ){
|
390 |
throw new Exception( sprintf( Loco::__('"%s" folder not writable'), basename($dir) ) );
|
391 |
}
|
392 |
+
foreach( array_keys($dirs) as $path ){
|
393 |
+
if( ! is_writable($path) ){
|
394 |
+
throw new Exception( sprintf( Loco::__('"%s" folder not writable'), basename($dir) ) );
|
395 |
+
}
|
396 |
+
}
|
397 |
}
|
398 |
|
399 |
|
401 |
* Get file permission for every important file path in package
|
402 |
*/
|
403 |
public function get_permission_errors(){
|
404 |
+
$dirs = array();
|
405 |
$paths = array();
|
|
|
|
|
406 |
foreach( $this->pot as $path ){
|
407 |
+
$dirs[ dirname($path) ] = 1;
|
408 |
$paths[$path] = is_writable($path) ? '' : Loco::__('POT file not writable');
|
409 |
}
|
410 |
foreach( $this->po as $pos ){
|
411 |
foreach( $pos as $path ){
|
412 |
+
$dirs[ dirname($path) ] = 1;
|
413 |
$paths[$path] = is_writable($path) ? '' : Loco::__('PO file not writable');
|
414 |
$path = preg_replace('/\.po$/', '.mo', $path );
|
415 |
$paths[$path] = file_exists($path) ? ( is_writeable($path) ? '' : Loco::__('MO file not writable') ) : Loco::__('MO file not found');
|
416 |
}
|
417 |
}
|
418 |
+
if( ! isset($path) ){
|
419 |
+
$base = $this->get_root();
|
420 |
+
$dirs[ $base ] = 1;
|
421 |
+
$dirs[ $base.'/languages' ] = 1;
|
422 |
+
}
|
423 |
+
$dirs[ $this->lang_dir() ] = 1;
|
424 |
+
$dirs[ $this->_lang_dir() ] = 1;
|
425 |
+
foreach( array_keys($dirs) as $dir ){
|
426 |
+
$paths[$dir] = is_writable($dir) ? '' : Loco::__('Folder not writable');
|
427 |
+
}
|
428 |
+
ksort( $paths );
|
429 |
return $paths;
|
430 |
}
|
431 |
|
436 |
*/
|
437 |
public function get_pot( $domain = '' ){
|
438 |
if( ! $domain ){
|
439 |
+
$domain = $this->get_domain();
|
440 |
+
}
|
441 |
+
if( ! empty($this->pot[$domain]) ){
|
442 |
+
return $this->pot[$domain];
|
443 |
+
}
|
444 |
+
// no POT, but some authors may use locale-less PO files incorrectly as a template
|
445 |
+
if( isset($this->po[$domain]) ){
|
446 |
+
foreach( array('','xx_XX','en_US','en_GB') as $try ){
|
447 |
+
if( isset($this->po[$domain][$try]) ){
|
448 |
+
$pot = $this->po[$domain][$try];
|
449 |
+
unset( $this->po[$domain][$try] );
|
450 |
+
return $this->pot[$domain] = $pot;
|
451 |
+
}
|
452 |
+
}
|
453 |
}
|
454 |
+
// no template candidate
|
455 |
+
return '';
|
456 |
}
|
457 |
|
458 |
|
462 |
*/
|
463 |
public function get_po( $domain = '' ){
|
464 |
if( ! $domain ){
|
465 |
+
$domain = $this->get_domain();
|
466 |
}
|
467 |
return isset($this->po[$domain]) ? $this->po[$domain] : array();
|
468 |
}
|
509 |
public function meta(){
|
510 |
if( ! is_array($this->_meta) ){
|
511 |
$pot = $po = array();
|
512 |
+
// get POT files for all domains, fixing incorrect PO usage
|
513 |
+
foreach( $this->get_domains() as $domain ){
|
514 |
+
$path = $this->get_pot( $domain ) and
|
515 |
$pot[] = compact('domain','path');
|
516 |
}
|
517 |
// get progress and locale for each PO file
|
523 |
$po[] = array (
|
524 |
'path' => $path,
|
525 |
'domain' => $domain,
|
526 |
+
'name' => trim( str_replace( array('.po','.mo',$domain), array('','',''), basename($path) ), '-_'),
|
527 |
'stats' => loco_po_stats( $export ),
|
528 |
'length' => count( $export ),
|
529 |
'locale' => loco_locale_resolve($code),
|
535 |
}
|
536 |
}
|
537 |
$this->_meta = compact('po','pot') + array(
|
538 |
+
'name' => $this->get_name(),
|
539 |
'root' => $this->get_root(),
|
540 |
+
'domain' => $this->get_domain(),
|
541 |
);
|
542 |
}
|
543 |
return $this->_meta;
|
577 |
private static function get_theme( $handle ){
|
578 |
$theme = wp_get_theme( $handle );
|
579 |
if( $theme && $theme->exists() ){
|
580 |
+
$name = $theme->get('Name');
|
581 |
+
$domain = $theme->get('TextDomain');
|
582 |
+
$package = new LocoThemePackage( $handle, $domain, $name );
|
583 |
$root = $theme->get_theme_root().'/'.$handle;
|
584 |
$package->add_source( $root );
|
585 |
// add PO and POT under theme root
|
586 |
if( $files = LocoAdmin::find_po($root) ){
|
587 |
$package->add_po( $files, $domain );
|
588 |
}
|
589 |
+
// pick up any MO files that have missing PO
|
590 |
+
if( $files = LocoAdmin::find_mo($root) ){
|
591 |
+
$package->add_mo( $files, $domain );
|
592 |
+
}
|
593 |
+
// find additional theme PO under WP_LANG_DIR/themes unless a child theme
|
594 |
$package->add_lang_dir( WP_LANG_DIR.'/themes', $domain );
|
595 |
+
// child theme inherits parent template translations
|
596 |
+
while( $parent = $theme->get_template() ){
|
597 |
+
if( $parent === $handle ){
|
598 |
+
// circular reference
|
599 |
+
break;
|
600 |
+
}
|
601 |
+
$parent = LocoPackage::get( $parent, 'theme' );
|
602 |
+
if( ! $parent ){
|
603 |
+
// parent missing
|
604 |
+
break;
|
605 |
+
}
|
606 |
+
// indicate that theme is a child
|
607 |
+
$package->inherit( $parent );
|
608 |
+
if( $domain && $domain !== $parent->domain ){
|
609 |
+
// child specifies its own domain and will have to call load_child_theme_textdomain
|
610 |
+
}
|
611 |
+
else if( ! empty($package->po) || ! empty($package->pot) ){
|
612 |
+
// child has its own language files and domain will be picked up when get_domain called
|
613 |
+
$package->get_domain();
|
614 |
+
}
|
615 |
+
else {
|
616 |
+
// else should child inherit parent domain?
|
617 |
+
$package->domain = $parent->get_domain();
|
618 |
+
}
|
619 |
+
break;
|
620 |
+
}
|
621 |
return $package;
|
622 |
}
|
623 |
}
|
639 |
if( $files = LocoAdmin::find_po($root) ){
|
640 |
$package->add_po( $files, $domain );
|
641 |
}
|
642 |
+
// pick up any MO files that have missing PO
|
643 |
+
if( $files = LocoAdmin::find_mo($root) ){
|
644 |
+
$package->add_mo( $files, $domain );
|
645 |
+
}
|
646 |
// find additional plugin PO under WP_LANG_DIR/plugin
|
647 |
$package->add_lang_dir( WP_LANG_DIR.'/plugins', $domain );
|
648 |
return $package;
|
729 |
* Extended package class for themes
|
730 |
*/
|
731 |
class LocoThemePackage extends LocoPackage {
|
732 |
+
private $parent;
|
733 |
protected function _lang_dir(){
|
734 |
return WP_LANG_DIR.'/themes';
|
735 |
}
|
736 |
+
protected function inherit( LocoThemePackage $parent ){
|
737 |
+
$this->parent = $parent->get_handle();
|
738 |
+
}
|
739 |
+
protected function is_child(){
|
740 |
+
return ! empty($this->parent);
|
741 |
+
}
|
742 |
+
protected function get_parent(){
|
743 |
+
return $this->parent ? LocoPackage::get( $this->parent, 'theme' ) : null;
|
744 |
+
}
|
745 |
+
public function meta(){
|
746 |
+
$meta = parent::meta();
|
747 |
+
if( $parent = $this->get_parent() ){
|
748 |
+
$pmeta = $parent->meta();
|
749 |
+
$meta['parent'] = $parent->get_name();
|
750 |
+
// merge parent resources unless child has its own domain
|
751 |
+
if( $meta['domain'] === $pmeta['domain'] ){
|
752 |
+
$meta['po'] = array_merge( $meta['po'], $pmeta['po'] );
|
753 |
+
$meta['pot'] = array_merge( $meta['pot'], $pmeta['pot'] );
|
754 |
+
}
|
755 |
+
}
|
756 |
+
return $meta;
|
757 |
+
}
|
758 |
+
public function get_pot( $domain = '' ){
|
759 |
+
if( ( $parent = $this->get_parent() ) && ( $pot = $parent->get_pot($domain) ) ){
|
760 |
+
return $pot;
|
761 |
+
}
|
762 |
+
return parent::get_pot( $domain );
|
763 |
+
}
|
764 |
public function get_type(){
|
765 |
return 'theme';
|
766 |
}
|
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.
|
8 |
Author URI: http://localise.biz/help/wordpress/translate-plugin
|
9 |
*/
|
10 |
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/loco-translate
|
5 |
Description: Translate Wordpress plugins and themes directly in your browser
|
6 |
Author: Tim Whitlock
|
7 |
+
Version: 1.4.3
|
8 |
Author URI: http://localise.biz/help/wordpress/translate-plugin
|
9 |
*/
|
10 |
|
php/loco-posync.php
CHANGED
@@ -29,7 +29,7 @@
|
|
29 |
if( ! LocoAdmin::is_pot($path) ){
|
30 |
|
31 |
// if a POT file exists, sync from that
|
32 |
-
$domain = LocoAdmin::resolve_file_domain($path);
|
33 |
if( $pot_path = $package->get_pot($domain) ){
|
34 |
$exp = LocoAdmin::parse_po( $pot_path );
|
35 |
if( ! $exp || ( 1 === count($exp) && '' === $exp[0]['source'] ) ){
|
29 |
if( ! LocoAdmin::is_pot($path) ){
|
30 |
|
31 |
// if a POT file exists, sync from that
|
32 |
+
$domain = LocoAdmin::resolve_file_domain($path) or $domain = $package->get_domain();
|
33 |
if( $pot_path = $package->get_pot($domain) ){
|
34 |
$exp = LocoAdmin::parse_po( $pot_path );
|
35 |
if( ! $exp || ( 1 === count($exp) && '' === $exp[0]['source'] ) ){
|
pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/_import-poedit-lib.scssc
DELETED
Binary file
|
pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/_import-poedit.scssc
DELETED
Binary file
|
pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/_loco-admin-poedit-lib.scssc
DELETED
Binary file
|
pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/loco-admin-poedit-lib.scssc
DELETED
Binary file
|
pub/.sass-cache/0a720c570290415a31724b9b3cae2fabb61bf165/loco-admin.scssc
DELETED
Binary file
|
pub/.sass-cache/4ed6af75c0f3919286ece718623a9966a7c474a9/_import-poedit.scssc
DELETED
Binary file
|
pub/css/loco-admin.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.wrap #loco-poedit .wg-cell,.wrap #loco-poedit .wg-cell div{position:relative;box-sizing:border-box;-moz-box-sizing:border-box}.wrap #loco-poedit .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}.wrap #loco-poedit .wg-split{background:#eee}.wrap #loco-poedit .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.wrap #loco-poedit .wg-split-x>div>.not-first>*{margin-left:6px}.wrap #loco-poedit .wg-split-y>div>.not-first>*{margin-top:6px}.wrap #loco-poedit .wg-split>div>.has-title .wg-content{margin-top:0}.wrap #loco-poedit .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}.wrap #loco-poedit .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}.wrap #loco-poedit .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}.wrap #loco-poedit .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png) center center no-repeat}.wrap #loco-poedit .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}.wrap #loco-poedit .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png) center center no-repeat}.wrap #loco-poedit .wg-split>div.locked{cursor:default}.wrap #loco-poedit .wg-split-x>div.locked>.not-first>*{margin-left:1px}.wrap #loco-poedit .wg-split-y>div.locked>.not-first>*{margin-top:1px}.wrap #loco-poedit .wg-split>div.locked>.not-first:before{display:none}.wrap #loco-poedit .wg-title{background:#ddd;cursor:default !important;margin:0;padding:4px 6px;font-size:1em;white-space:nowrap}.wrap #loco-poedit .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;-moz-box-sizing:border-box}.wrap #loco-poedit .is-table .wg-cols{outline:none}.wrap #loco-poedit .is-table .wg-col{float:left;clear:none}.wrap #loco-poedit .is-table .wg-title{padding:3px 10px;margin:0 !important;font-weight:normal}.wrap #loco-poedit .is-table .wg-thead>div>.not-first:before{background-position:center 1px}.wrap #loco-poedit .is-table .wg-thead{background:#ddd;border-bottom:solid 1px #ccc}.wrap #loco-poedit .is-table .wg-tr{height:1.6em;overflow:hidden}.wrap #loco-poedit .is-table .wg-tr:nth-child(even){background-color:#f3f7fd}.wrap #loco-poedit .is-table .wg-tr.selected{background-color:#3875d7;color:#fff}.wrap #loco-poedit .is-table .wg-td{white-space:nowrap;line-height:1.2em;margin:0.3em 4px;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.wrap #loco-poedit .is-table .wg-tbody .not-first .wg-td{margin-left:10px}.wrap #loco-poedit .is-table .wg-cols.filtered .wg-tr{display:none}.wrap #loco-poedit .is-table .wg-cols.filtered .wg-tr.filtered{display:block}.wrap #loco-poedit .is-field>.wg-content{cursor:text;outline:none;white-space:pre-wrap}.wrap #loco-poedit .is-field>.wg-content:focus{-moz-box-shadow:inset 0 0 10px #3875d7;-webkit-box-shadow:inset 0 0 10px #3875d7;box-shadow:inset 0 0 10px #3875d7}.wrap #loco-poedit .is-field.readonly>.wg-content{cursor:default;background:#f8f8f8;text-shadow:0 1px #fff}.wrap #loco-poedit .is-field.readonly>.wg-content:focus{-moz-box-shadow:inset 0 0 10px #cc0000;-webkit-box-shadow:inset 0 0 10px #cc0000;box-shadow:inset 0 0 10px #cc0000}.wrap #loco-poedit .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:0.5em 1em;color:#000;text-decoration:none;-moz-border-radius:0.2em;-webkit-border-radius:0.2em;border-radius:0.2em}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a:hover{background-color:#f3f7fd}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a.active{background-color:#3875d7;color:#fff}@media all and (max-width: 768px){.wrap #loco-poedit .wg-split-x>div>.not-first>*{margin-left:20px}.wrap #loco-poedit .wg-split-y>div>.not-first>*{margin-top:20px}.wrap #loco-poedit .wg-split-x>div>.not-first:before{width:20px}.wrap #loco-poedit .wg-split-y>div>.not-first:before{height:20px}}.wrap #loco-poedit .is-table .po-fuzzy{color:#b59829;font-weight:bold}.wrap #loco-poedit .is-table .po-empty{color:#1f507a;font-weight:bold}.wrap #loco-poedit .is-table .wg-col.first .wg-td:before{font-family:loco;vertical-align:middle;display:inline-block;content:" ";width:1.2em;line-height:1}.wrap #loco-poedit .is-table .po-incorrect,.wrap #loco-poedit .is-table .po-needs-review{color:#CC0000}.wrap #loco-poedit .is-table .wg-col.first .po-flagged .wg-td:before{content:"\e60e"}.wrap #loco-poedit .is-table .wg-col.first .po-comment .wg-td:before{content:"\e613";color:#999}.wrap #loco-poedit .is-table .wg-col.first .po-unsaved .wg-td:before{content:"\e612";color:#f1d040}.wrap #loco-poedit #po-list .wg-content{padding:0}.wrap #loco-poedit #po-source>.wg-body>.has-title>h2{background:transparent;font-weight:normal;float:left;clear:none;min-width:4em}.wrap #loco-poedit #po-source>.wg-body>.has-title>.wg-content{clear:none}.wrap #loco-poedit #po-source>.wg-body>.has-title>h2{min-width:4.5em}.wrap .flag{width:16px;height:11px;display:inline-block;background:url(../img/flags.tiny.png) no-repeat}.wrap .flag.flag-ad{background-position:-16px 0}.wrap .flag.flag-ae{background-position:-32px 0}.wrap .flag.flag-af{background-position:-48px 0}.wrap .flag.flag-ag{background-position:-64px 0}.wrap .flag.flag-ai{background-position:-80px 0}.wrap .flag.flag-al{background-position:-96px 0}.wrap .flag.flag-am{background-position:-112px 0}.wrap .flag.flag-an{background-position:-128px 0}.wrap .flag.flag-ao{background-position:-144px 0}.wrap .flag.flag-ar{background-position:-160px 0}.wrap .flag.flag-as{background-position:-176px 0}.wrap .flag.flag-at{background-position:-192px 0}.wrap .flag.flag-au{background-position:-208px 0}.wrap .flag.flag-aw{background-position:-224px 0}.wrap .flag.flag-az{background-position:-240px 0}.wrap .flag.flag-ba{background-position:0 -11px}.wrap .flag.flag-bb{background-position:-16px -11px}.wrap .flag.flag-bd{background-position:-32px -11px}.wrap .flag.flag-be{background-position:-48px -11px}.wrap .flag.flag-bf{background-position:-64px -11px}.wrap .flag.flag-bg{background-position:-80px -11px}.wrap .flag.flag-bh{background-position:-96px -11px}.wrap .flag.flag-bi{background-position:-112px -11px}.wrap .flag.flag-bj{background-position:-128px -11px}.wrap .flag.flag-bm{background-position:-144px -11px}.wrap .flag.flag-bn{background-position:-160px -11px}.wrap .flag.flag-bo{background-position:-176px -11px}.wrap .flag.flag-br{background-position:-192px -11px}.wrap .flag.flag-bs{background-position:-208px -11px}.wrap .flag.flag-bt{background-position:-224px -11px}.wrap .flag.flag-bw{background-position:-240px -11px}.wrap .flag.flag-by{background-position:0 -22px}.wrap .flag.flag-bz{background-position:-16px -22px}.wrap .flag.flag-ca{background-position:-32px -22px}.wrap .flag.flag-cd{background-position:-48px -22px}.wrap .flag.flag-cf{background-position:-64px -22px}.wrap .flag.flag-cg{background-position:-80px -22px}.wrap .flag.flag-ch{background-position:-96px -22px}.wrap .flag.flag-ci{background-position:-112px -22px}.wrap .flag.flag-ck{background-position:-128px -22px}.wrap .flag.flag-cl{background-position:-144px -22px}.wrap .flag.flag-cm{background-position:-160px -22px}.wrap .flag.flag-cn{background-position:-176px -22px}.wrap .flag.flag-co{background-position:-192px -22px}.wrap .flag.flag-cr{background-position:-208px -22px}.wrap .flag.flag-cu{background-position:-224px -22px}.wrap .flag.flag-cv{background-position:-240px -22px}.wrap .flag.flag-cw{background-position:0 -33px}.wrap .flag.flag-cy{background-position:-16px -33px}.wrap .flag.flag-cz{background-position:-32px -33px}.wrap .flag.flag-de{background-position:-48px -33px}.wrap .flag.flag-dj{background-position:-64px -33px}.wrap .flag.flag-dk{background-position:-80px -33px}.wrap .flag.flag-dm{background-position:-96px -33px}.wrap .flag.flag-do{background-position:-112px -33px}.wrap .flag.flag-dz{background-position:-128px -33px}.wrap .flag.flag-ec{background-position:-144px -33px}.wrap .flag.flag-ee{background-position:-160px -33px}.wrap .flag.flag-eg{background-position:-176px -33px}.wrap .flag.flag-eh{background-position:-192px -33px}.wrap .flag.flag-er{background-position:-208px -33px}.wrap .flag.flag-es{background-position:-224px -33px}.wrap .flag.flag-et{background-position:-240px -33px}.wrap .flag.flag-fi{background-position:0 -44px}.wrap .flag.flag-fj{background-position:-16px -44px}.wrap .flag.flag-fk{background-position:-32px -44px}.wrap .flag.flag-fm{background-position:-48px -44px}.wrap .flag.flag-fo{background-position:-64px -44px}.wrap .flag.flag-fr{background-position:-80px -44px}.wrap .flag.flag-ga{background-position:-96px -44px}.wrap .flag.flag-gb{background-position:-112px -44px}.wrap .flag.flag-gd{background-position:-128px -44px}.wrap .flag.flag-ge{background-position:-144px -44px}.wrap .flag.flag-gf{background-position:-160px -44px}.wrap .flag.flag-gh{background-position:-176px -44px}.wrap .flag.flag-gi{background-position:-192px -44px}.wrap .flag.flag-gl{background-position:-208px -44px}.wrap .flag.flag-gm{background-position:-224px -44px}.wrap .flag.flag-gn{background-position:-240px -44px}.wrap .flag.flag-gp{background-position:0 -55px}.wrap .flag.flag-gq{background-position:-16px -55px}.wrap .flag.flag-gr{background-position:-32px -55px}.wrap .flag.flag-gt{background-position:-48px -55px}.wrap .flag.flag-gu{background-position:-64px -55px}.wrap .flag.flag-gw{background-position:-80px -55px}.wrap .flag.flag-gy{background-position:-96px -55px}.wrap .flag.flag-hk{background-position:-112px -55px}.wrap .flag.flag-hn{background-position:-128px -55px}.wrap .flag.flag-hr{background-position:-144px -55px}.wrap .flag.flag-ht{background-position:-160px -55px}.wrap .flag.flag-hu{background-position:-176px -55px}.wrap .flag.flag-id{background-position:-192px -55px}.wrap .flag.flag-ie{background-position:-208px -55px}.wrap .flag.flag-il{background-position:-224px -55px}.wrap .flag.flag-in{background-position:-240px -55px}.wrap .flag.flag-iq{background-position:0 -66px}.wrap .flag.flag-ir{background-position:-16px -66px}.wrap .flag.flag-is{background-position:-32px -66px}.wrap .flag.flag-it{background-position:-48px -66px}.wrap .flag.flag-jm{background-position:-64px -66px}.wrap .flag.flag-jo{background-position:-80px -66px}.wrap .flag.flag-jp{background-position:-96px -66px}.wrap .flag.flag-ke{background-position:-112px -66px}.wrap .flag.flag-kg{background-position:-128px -66px}.wrap .flag.flag-kh{background-position:-144px -66px}.wrap .flag.flag-ki{background-position:-160px -66px}.wrap .flag.flag-km{background-position:-176px -66px}.wrap .flag.flag-kn{background-position:-192px -66px}.wrap .flag.flag-kp{background-position:-208px -66px}.wrap .flag.flag-kr{background-position:-224px -66px}.wrap .flag.flag-kw{background-position:-240px -66px}.wrap .flag.flag-ky{background-position:0 -77px}.wrap .flag.flag-kz{background-position:-16px -77px}.wrap .flag.flag-la{background-position:-32px -77px}.wrap .flag.flag-lb{background-position:-48px -77px}.wrap .flag.flag-lc{background-position:-64px -77px}.wrap .flag.flag-li{background-position:-80px -77px}.wrap .flag.flag-lk{background-position:-96px -77px}.wrap .flag.flag-lr{background-position:-112px -77px}.wrap .flag.flag-ls{background-position:-128px -77px}.wrap .flag.flag-lt{background-position:-144px -77px}.wrap .flag.flag-lu{background-position:-160px -77px}.wrap .flag.flag-lv{background-position:-176px -77px}.wrap .flag.flag-ly{background-position:-192px -77px}.wrap .flag.flag-ma{background-position:-208px -77px}.wrap .flag.flag-mc{background-position:-224px -77px}.wrap .flag.flag-md{background-position:-240px -77px}.wrap .flag.flag-me{background-position:0 -88px}.wrap .flag.flag-mg{background-position:-16px -88px}.wrap .flag.flag-mh{background-position:-32px -88px}.wrap .flag.flag-mk{background-position:-48px -88px}.wrap .flag.flag-ml{background-position:-64px -88px}.wrap .flag.flag-mm{background-position:-80px -88px}.wrap .flag.flag-mn{background-position:-96px -88px}.wrap .flag.flag-mo{background-position:-112px -88px}.wrap .flag.flag-mp{background-position:-128px -88px}.wrap .flag.flag-mq{background-position:-144px -88px}.wrap .flag.flag-mr{background-position:-160px -88px}.wrap .flag.flag-ms{background-position:-176px -88px}.wrap .flag.flag-mt{background-position:-192px -88px}.wrap .flag.flag-mu{background-position:-208px -88px}.wrap .flag.flag-mv{background-position:-224px -88px}.wrap .flag.flag-mw{background-position:-240px -88px}.wrap .flag.flag-mx{background-position:0 -99px}.wrap .flag.flag-my{background-position:-16px -99px}.wrap .flag.flag-mz{background-position:-32px -99px}.wrap .flag.flag-na{background-position:-48px -99px}.wrap .flag.flag-nc{background-position:-64px -99px}.wrap .flag.flag-ne{background-position:-80px -99px}.wrap .flag.flag-nf{background-position:-96px -99px}.wrap .flag.flag-ng{background-position:-112px -99px}.wrap .flag.flag-ni{background-position:-128px -99px}.wrap .flag.flag-nl{background-position:-144px -99px}.wrap .flag.flag-no{background-position:-160px -99px}.wrap .flag.flag-np{background-position:-176px -99px}.wrap .flag.flag-nr{background-position:-192px -99px}.wrap .flag.flag-nu{background-position:-208px -99px}.wrap .flag.flag-nz{background-position:-224px -99px}.wrap .flag.flag-om{background-position:-240px -99px}.wrap .flag.flag-pa{background-position:0 -110px}.wrap .flag.flag-pe{background-position:-16px -110px}.wrap .flag.flag-pf{background-position:-32px -110px}.wrap .flag.flag-pg{background-position:-48px -110px}.wrap .flag.flag-ph{background-position:-64px -110px}.wrap .flag.flag-pk{background-position:-80px -110px}.wrap .flag.flag-pl{background-position:-96px -110px}.wrap .flag.flag-pm{background-position:-112px -110px}.wrap .flag.flag-pn{background-position:-128px -110px}.wrap .flag.flag-pr{background-position:-144px -110px}.wrap .flag.flag-ps{background-position:-160px -110px}.wrap .flag.flag-pt{background-position:-176px -110px}.wrap .flag.flag-pw{background-position:-192px -110px}.wrap .flag.flag-py{background-position:-208px -110px}.wrap .flag.flag-qa{background-position:-224px -110px}.wrap .flag.flag-re{background-position:-240px -110px}.wrap .flag.flag-ro{background-position:0 -121px}.wrap .flag.flag-rs{background-position:-16px -121px}.wrap .flag.flag-ru{background-position:-32px -121px}.wrap .flag.flag-rw{background-position:-48px -121px}.wrap .flag.flag-sa{background-position:-64px -121px}.wrap .flag.flag-sb{background-position:-80px -121px}.wrap .flag.flag-sc{background-position:-96px -121px}.wrap .flag.flag-sd{background-position:-112px -121px}.wrap .flag.flag-se{background-position:-128px -121px}.wrap .flag.flag-sg{background-position:-144px -121px}.wrap .flag.flag-sh{background-position:-160px -121px}.wrap .flag.flag-si{background-position:-176px -121px}.wrap .flag.flag-sk{background-position:-192px -121px}.wrap .flag.flag-sl{background-position:-208px -121px}.wrap .flag.flag-sm{background-position:-224px -121px}.wrap .flag.flag-sn{background-position:-240px -121px}.wrap .flag.flag-so{background-position:0 -132px}.wrap .flag.flag-sr{background-position:-16px -132px}.wrap .flag.flag-ss{background-position:-32px -132px}.wrap .flag.flag-st{background-position:-48px -132px}.wrap .flag.flag-sv{background-position:-64px -132px}.wrap .flag.flag-sy{background-position:-80px -132px}.wrap .flag.flag-sz{background-position:-96px -132px}.wrap .flag.flag-tc{background-position:-112px -132px}.wrap .flag.flag-td{background-position:-128px -132px}.wrap .flag.flag-tg{background-position:-144px -132px}.wrap .flag.flag-th{background-position:-160px -132px}.wrap .flag.flag-tj{background-position:-176px -132px}.wrap .flag.flag-tk{background-position:-192px -132px}.wrap .flag.flag-tl{background-position:-208px -132px}.wrap .flag.flag-tm{background-position:-224px -132px}.wrap .flag.flag-tn{background-position:-240px -132px}.wrap .flag.flag-to{background-position:0 -143px}.wrap .flag.flag-tr{background-position:-16px -143px}.wrap .flag.flag-tt{background-position:-32px -143px}.wrap .flag.flag-tv{background-position:-48px -143px}.wrap .flag.flag-tw{background-position:-64px -143px}.wrap .flag.flag-tz{background-position:-80px -143px}.wrap .flag.flag-ua{background-position:-96px -143px}.wrap .flag.flag-ug{background-position:-112px -143px}.wrap .flag.flag-us{background-position:-128px -143px}.wrap .flag.flag-uy{background-position:-144px -143px}.wrap .flag.flag-uz{background-position:-160px -143px}.wrap .flag.flag-va{background-position:-176px -143px}.wrap .flag.flag-vc{background-position:-192px -143px}.wrap .flag.flag-ve{background-position:-208px -143px}.wrap .flag.flag-vg{background-position:-224px -143px}.wrap .flag.flag-vi{background-position:-240px -143px}.wrap .flag.flag-vn{background-position:0 -154px}.wrap .flag.flag-vu{background-position:-16px -154px}.wrap .flag.flag-wf{background-position:-32px -154px}.wrap .flag.flag-ws{background-position:-48px -154px}.wrap .flag.flag-ye{background-position:-64px -154px}.wrap .flag.flag-yt{background-position:-80px -154px}.wrap .flag.flag-za{background-position:-96px -154px}.wrap .flag.flag-zm{background-position:-112px -154px}.wrap .flag.flag-zw{background-position:-128px -154px}.wrap .loco-add>*:before{content:"\e60c"}.wrap .loco-del>*:before{content:"\e60d"}.wrap .loco-save>*:before{content:"\e610"}.wrap .loco-sync>*:before{content:"\e633"}.wrap .loco-help>*:before{content:"\3f"}.wrap .loco-revert>*:before{content:"\e634"}.wrap .loco-fuzzy>*:before{content:"\e607"}.wrap .loco-download>*:before{content:"\e608"}.wrap .loco-ok>*:before{content:"\e618"}.wrap .loco-warn>*:before{content:"\e62e"}.wrap .loco-edit-pot>*:before{content:"\e61e"}@font-face{font-family:'loco';src:url("../font/loco.eot");src:url("../font/loco.eot?#iefix") format("embedded-opentype"),url("../font/loco.woff") format("woff"),url("../font/loco.ttf") format("truetype"),url("../font/loco.svg#loco") format("svg");font-weight:normal;font-style:normal}.wrap div{position:relative}h2 .nav-tab.nav-tab-loco{float:right;border-color:transparent;font-size:16px;color:#2e892e;background:transparent}h2 .nav-tab.nav-tab-loco:hover{color:#3db63d}.widefat thead tr th{width:25%}.wrap .loco-list{margin:10px 0}.wrap .loco-list li>a:before,.wrap .loco-list li>span:before{padding-right:0.5em;font-family:loco;color:inherit}.wrap .loco-list li.loco-add a{color:#666666}.wrap .loco-list li.loco-add a:hover{color:#000}.wrap .loco-list li.loco-edit-po .flag{margin-right:6px}.wrap .loco-list li.loco-warn>*:before{color:#cc0000}.wrap .loco-list li.loco-ok>*:before{color:#006600}.wrap .loco-list .loco-details li{margin-bottom:0}.wrap .loco-list .loco-mtime{color:#999}.wrap .loco-list .loco-progress{color:#999}.error a.dismiss,.updated a.dismiss{text-decoration:none;font-size:20px;line-height:1;display:block;position:absolute;right:10px;top:5px}.wrap div.loco-message{margin-top:10px}.wrap div.loco-success{border-color:#00CC00;background-color:#ccffcc}.wrap div.loco-message:hover{border-color:#000}form.loco-switcher{display:inline;display:inline-block;padding:0 5px}form.loco-switcher select{font-weight:normal;height:auto;display:inline}h3.title .loco-meta{font-weight:normal;font-size:14px}.wrap #loco-poedit{border:solid 1px #ccc}.wrap #loco-poedit-inner{min-height:600px;font-size:14px;clear:both}.wrap #loco-poedit-inner h2{color:#000;line-height:1}#loco-nav{font-size:14px;height:50px}#loco-nav form{display:block;padding:0;margin:0}#loco-search,#loco-nav button{display:block;position:relative;float:left;clear:none;box-sizing:border-box;margin:5px 0 0 5px;height:40px;text-align:left}#loco-nav button.loco-help{float:right;margin-right:5px}#loco-nav button span:before{padding-right:0.5em;font-family:loco}.wp-core-ui button.loco-inverted,.wp-core-ui button.loco-inverted:hover{background-image:-webkit-gradient(linear, left top, left bottom, from(#e0e0e0), to(#fefefe));background-image:-webkit-linear-gradient(top, #e0e0e0, #fefefe);background-image:-moz-linear-gradient(top, #e0e0e0, #fefefe);background-image:-o-linear-gradient(top, #e0e0e0, #fefefe);background-image:linear-gradient(to bottom, #e0e0e0, #fefefe)}#loco-filter input[type="text"]{padding-left:10px;margin-left:20px;width:300px;font-size:15px}#loco-filter .icon.clear{display:none !important}.loco-fscheck .loco-list{margin-bottom:20px}
|
1 |
+
.wrap a.nav-tab-active{cursor:text}.wrap #loco-poedit .wg-cell,.wrap #loco-poedit .wg-cell div{position:relative;box-sizing:border-box;-moz-box-sizing:border-box}.wrap #loco-poedit .wg-cell{left:0;top:0;padding:0;margin:0;overflow:hidden}.wrap #loco-poedit .wg-split{background:#eee}.wrap #loco-poedit .wg-body:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.wrap #loco-poedit .wg-split-x>div>.not-first>*{margin-left:6px}.wrap #loco-poedit .wg-split-y>div>.not-first>*{margin-top:6px}.wrap #loco-poedit .wg-split>div>.has-title .wg-content{margin-top:0}.wrap #loco-poedit .wg-split-x>div>.wg-cell{float:left;clear:none;height:100%}.wrap #loco-poedit .wg-split-x>div{cursor:move;cursor:ew-resize;cursor:col-resize}.wrap #loco-poedit .wg-split>div>.not-first:before{display:block;position:absolute;overflow:hidden;content:" "}.wrap #loco-poedit .wg-split-x>div>.not-first:before{width:6px;height:100%;background:transparent url(../img/wg/splitx.png) center center no-repeat}.wrap #loco-poedit .wg-split-y>div{cursor:move;cursor:ns-resize;cursor:row-resize}.wrap #loco-poedit .wg-split-y>div>.not-first:before{height:6px;width:100%;background:transparent url(../img/wg/splity.png) center center no-repeat}.wrap #loco-poedit .wg-split>div.locked{cursor:default}.wrap #loco-poedit .wg-split-x>div.locked>.not-first>*{margin-left:1px}.wrap #loco-poedit .wg-split-y>div.locked>.not-first>*{margin-top:1px}.wrap #loco-poedit .wg-split>div.locked>.not-first:before{display:none}.wrap #loco-poedit .wg-title{background:#ddd;cursor:default !important;margin:0;padding:4px 6px;font-size:1em;white-space:nowrap}.wrap #loco-poedit .wg-content{background:#fff;cursor:default;padding:4px 6px;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;-moz-box-sizing:border-box}.wrap #loco-poedit .is-table .wg-cols{outline:none}.wrap #loco-poedit .is-table .wg-col{float:left;clear:none}.wrap #loco-poedit .is-table .wg-title{padding:3px 10px;margin:0 !important;font-weight:normal}.wrap #loco-poedit .is-table .wg-thead>div>.not-first:before{background-position:center 1px}.wrap #loco-poedit .is-table .wg-thead{background:#ddd;border-bottom:solid 1px #ccc}.wrap #loco-poedit .is-table .wg-tr{height:1.6em;overflow:hidden}.wrap #loco-poedit .is-table .wg-tr:nth-child(even){background-color:#f3f7fd}.wrap #loco-poedit .is-table .wg-tr.selected{background-color:#3875d7;color:#fff}.wrap #loco-poedit .is-table .wg-td{white-space:nowrap;line-height:1.2em;margin:0.3em 4px;-o-text-overflow:ellipsis;text-overflow:ellipsis;overflow:hidden}.wrap #loco-poedit .is-table .wg-tbody .not-first .wg-td{margin-left:10px}.wrap #loco-poedit .is-table .wg-cols.filtered .wg-tr{display:none}.wrap #loco-poedit .is-table .wg-cols.filtered .wg-tr.filtered{display:block}.wrap #loco-poedit .is-field>.wg-content{cursor:text;outline:none;white-space:pre-wrap}.wrap #loco-poedit .is-field>.wg-content:focus{-moz-box-shadow:inset 0 0 10px #3875d7;-webkit-box-shadow:inset 0 0 10px #3875d7;box-shadow:inset 0 0 10px #3875d7}.wrap #loco-poedit .is-field.readonly>.wg-content{cursor:default;background:#f8f8f8;text-shadow:0 1px #fff}.wrap #loco-poedit .is-field.readonly>.wg-content:focus{-moz-box-shadow:inset 0 0 10px #cc0000;-webkit-box-shadow:inset 0 0 10px #cc0000;box-shadow:inset 0 0 10px #cc0000}.wrap #loco-poedit .wg-split-x>nav.wg-tabs{white-space:nowrap;text-align:center}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a{display:inline-block;padding:0.5em 1em;color:#000;text-decoration:none;-moz-border-radius:0.2em;-webkit-border-radius:0.2em;border-radius:0.2em}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a:hover{background-color:#f3f7fd}.wrap #loco-poedit .wg-split-x>nav.wg-tabs>a.active{background-color:#3875d7;color:#fff}@media all and (max-width: 768px){.wrap #loco-poedit .wg-split-x>div>.not-first>*{margin-left:20px}.wrap #loco-poedit .wg-split-y>div>.not-first>*{margin-top:20px}.wrap #loco-poedit .wg-split-x>div>.not-first:before{width:20px}.wrap #loco-poedit .wg-split-y>div>.not-first:before{height:20px}}.wrap #loco-poedit .is-table .po-fuzzy{color:#b59829;font-weight:bold}.wrap #loco-poedit .is-table .po-empty{color:#1f507a;font-weight:bold}.wrap #loco-poedit .is-table .wg-col.first .wg-td:before{font-family:loco;vertical-align:middle;display:inline-block;content:" ";width:1.2em;line-height:1}.wrap #loco-poedit .is-table .po-incorrect,.wrap #loco-poedit .is-table .po-needs-review{color:#CC0000}.wrap #loco-poedit .is-table .wg-col.first .po-flagged .wg-td:before{content:"\e60e"}.wrap #loco-poedit .is-table .wg-col.first .po-comment .wg-td:before{content:"\e613";color:#999}.wrap #loco-poedit .is-table .wg-col.first .po-unsaved .wg-td:before{content:"\e612";color:#f1d040}.wrap #loco-poedit #po-list .wg-content{padding:0}.wrap #loco-poedit #po-source>.wg-body>.has-title>h2{background:transparent;font-weight:normal;float:left;clear:none;min-width:4em}.wrap #loco-poedit #po-source>.wg-body>.has-title>.wg-content{clear:none}.wrap #loco-poedit #po-source>.wg-body>.has-title>h2{min-width:4.5em}.wrap .flag{width:16px;height:11px;display:inline-block;background:url(../img/flags.tiny.png) no-repeat}.wrap .flag.flag-ad{background-position:-16px 0}.wrap .flag.flag-ae{background-position:-32px 0}.wrap .flag.flag-af{background-position:-48px 0}.wrap .flag.flag-ag{background-position:-64px 0}.wrap .flag.flag-ai{background-position:-80px 0}.wrap .flag.flag-al{background-position:-96px 0}.wrap .flag.flag-am{background-position:-112px 0}.wrap .flag.flag-an{background-position:-128px 0}.wrap .flag.flag-ao{background-position:-144px 0}.wrap .flag.flag-ar{background-position:-160px 0}.wrap .flag.flag-as{background-position:-176px 0}.wrap .flag.flag-at{background-position:-192px 0}.wrap .flag.flag-au{background-position:-208px 0}.wrap .flag.flag-aw{background-position:-224px 0}.wrap .flag.flag-az{background-position:-240px 0}.wrap .flag.flag-ba{background-position:0 -11px}.wrap .flag.flag-bb{background-position:-16px -11px}.wrap .flag.flag-bd{background-position:-32px -11px}.wrap .flag.flag-be{background-position:-48px -11px}.wrap .flag.flag-bf{background-position:-64px -11px}.wrap .flag.flag-bg{background-position:-80px -11px}.wrap .flag.flag-bh{background-position:-96px -11px}.wrap .flag.flag-bi{background-position:-112px -11px}.wrap .flag.flag-bj{background-position:-128px -11px}.wrap .flag.flag-bm{background-position:-144px -11px}.wrap .flag.flag-bn{background-position:-160px -11px}.wrap .flag.flag-bo{background-position:-176px -11px}.wrap .flag.flag-br{background-position:-192px -11px}.wrap .flag.flag-bs{background-position:-208px -11px}.wrap .flag.flag-bt{background-position:-224px -11px}.wrap .flag.flag-bw{background-position:-240px -11px}.wrap .flag.flag-by{background-position:0 -22px}.wrap .flag.flag-bz{background-position:-16px -22px}.wrap .flag.flag-ca{background-position:-32px -22px}.wrap .flag.flag-cd{background-position:-48px -22px}.wrap .flag.flag-cf{background-position:-64px -22px}.wrap .flag.flag-cg{background-position:-80px -22px}.wrap .flag.flag-ch{background-position:-96px -22px}.wrap .flag.flag-ci{background-position:-112px -22px}.wrap .flag.flag-ck{background-position:-128px -22px}.wrap .flag.flag-cl{background-position:-144px -22px}.wrap .flag.flag-cm{background-position:-160px -22px}.wrap .flag.flag-cn{background-position:-176px -22px}.wrap .flag.flag-co{background-position:-192px -22px}.wrap .flag.flag-cr{background-position:-208px -22px}.wrap .flag.flag-cu{background-position:-224px -22px}.wrap .flag.flag-cv{background-position:-240px -22px}.wrap .flag.flag-cw{background-position:0 -33px}.wrap .flag.flag-cy{background-position:-16px -33px}.wrap .flag.flag-cz{background-position:-32px -33px}.wrap .flag.flag-de{background-position:-48px -33px}.wrap .flag.flag-dj{background-position:-64px -33px}.wrap .flag.flag-dk{background-position:-80px -33px}.wrap .flag.flag-dm{background-position:-96px -33px}.wrap .flag.flag-do{background-position:-112px -33px}.wrap .flag.flag-dz{background-position:-128px -33px}.wrap .flag.flag-ec{background-position:-144px -33px}.wrap .flag.flag-ee{background-position:-160px -33px}.wrap .flag.flag-eg{background-position:-176px -33px}.wrap .flag.flag-eh{background-position:-192px -33px}.wrap .flag.flag-er{background-position:-208px -33px}.wrap .flag.flag-es{background-position:-224px -33px}.wrap .flag.flag-et{background-position:-240px -33px}.wrap .flag.flag-fi{background-position:0 -44px}.wrap .flag.flag-fj{background-position:-16px -44px}.wrap .flag.flag-fk{background-position:-32px -44px}.wrap .flag.flag-fm{background-position:-48px -44px}.wrap .flag.flag-fo{background-position:-64px -44px}.wrap .flag.flag-fr{background-position:-80px -44px}.wrap .flag.flag-ga{background-position:-96px -44px}.wrap .flag.flag-gb{background-position:-112px -44px}.wrap .flag.flag-gd{background-position:-128px -44px}.wrap .flag.flag-ge{background-position:-144px -44px}.wrap .flag.flag-gf{background-position:-160px -44px}.wrap .flag.flag-gh{background-position:-176px -44px}.wrap .flag.flag-gi{background-position:-192px -44px}.wrap .flag.flag-gl{background-position:-208px -44px}.wrap .flag.flag-gm{background-position:-224px -44px}.wrap .flag.flag-gn{background-position:-240px -44px}.wrap .flag.flag-gp{background-position:0 -55px}.wrap .flag.flag-gq{background-position:-16px -55px}.wrap .flag.flag-gr{background-position:-32px -55px}.wrap .flag.flag-gt{background-position:-48px -55px}.wrap .flag.flag-gu{background-position:-64px -55px}.wrap .flag.flag-gw{background-position:-80px -55px}.wrap .flag.flag-gy{background-position:-96px -55px}.wrap .flag.flag-hk{background-position:-112px -55px}.wrap .flag.flag-hn{background-position:-128px -55px}.wrap .flag.flag-hr{background-position:-144px -55px}.wrap .flag.flag-ht{background-position:-160px -55px}.wrap .flag.flag-hu{background-position:-176px -55px}.wrap .flag.flag-id{background-position:-192px -55px}.wrap .flag.flag-ie{background-position:-208px -55px}.wrap .flag.flag-il{background-position:-224px -55px}.wrap .flag.flag-in{background-position:-240px -55px}.wrap .flag.flag-iq{background-position:0 -66px}.wrap .flag.flag-ir{background-position:-16px -66px}.wrap .flag.flag-is{background-position:-32px -66px}.wrap .flag.flag-it{background-position:-48px -66px}.wrap .flag.flag-jm{background-position:-64px -66px}.wrap .flag.flag-jo{background-position:-80px -66px}.wrap .flag.flag-jp{background-position:-96px -66px}.wrap .flag.flag-ke{background-position:-112px -66px}.wrap .flag.flag-kg{background-position:-128px -66px}.wrap .flag.flag-kh{background-position:-144px -66px}.wrap .flag.flag-ki{background-position:-160px -66px}.wrap .flag.flag-km{background-position:-176px -66px}.wrap .flag.flag-kn{background-position:-192px -66px}.wrap .flag.flag-kp{background-position:-208px -66px}.wrap .flag.flag-kr{background-position:-224px -66px}.wrap .flag.flag-kw{background-position:-240px -66px}.wrap .flag.flag-ky{background-position:0 -77px}.wrap .flag.flag-kz{background-position:-16px -77px}.wrap .flag.flag-la{background-position:-32px -77px}.wrap .flag.flag-lb{background-position:-48px -77px}.wrap .flag.flag-lc{background-position:-64px -77px}.wrap .flag.flag-li{background-position:-80px -77px}.wrap .flag.flag-lk{background-position:-96px -77px}.wrap .flag.flag-lr{background-position:-112px -77px}.wrap .flag.flag-ls{background-position:-128px -77px}.wrap .flag.flag-lt{background-position:-144px -77px}.wrap .flag.flag-lu{background-position:-160px -77px}.wrap .flag.flag-lv{background-position:-176px -77px}.wrap .flag.flag-ly{background-position:-192px -77px}.wrap .flag.flag-ma{background-position:-208px -77px}.wrap .flag.flag-mc{background-position:-224px -77px}.wrap .flag.flag-md{background-position:-240px -77px}.wrap .flag.flag-me{background-position:0 -88px}.wrap .flag.flag-mg{background-position:-16px -88px}.wrap .flag.flag-mh{background-position:-32px -88px}.wrap .flag.flag-mk{background-position:-48px -88px}.wrap .flag.flag-ml{background-position:-64px -88px}.wrap .flag.flag-mm{background-position:-80px -88px}.wrap .flag.flag-mn{background-position:-96px -88px}.wrap .flag.flag-mo{background-position:-112px -88px}.wrap .flag.flag-mp{background-position:-128px -88px}.wrap .flag.flag-mq{background-position:-144px -88px}.wrap .flag.flag-mr{background-position:-160px -88px}.wrap .flag.flag-ms{background-position:-176px -88px}.wrap .flag.flag-mt{background-position:-192px -88px}.wrap .flag.flag-mu{background-position:-208px -88px}.wrap .flag.flag-mv{background-position:-224px -88px}.wrap .flag.flag-mw{background-position:-240px -88px}.wrap .flag.flag-mx{background-position:0 -99px}.wrap .flag.flag-my{background-position:-16px -99px}.wrap .flag.flag-mz{background-position:-32px -99px}.wrap .flag.flag-na{background-position:-48px -99px}.wrap .flag.flag-nc{background-position:-64px -99px}.wrap .flag.flag-ne{background-position:-80px -99px}.wrap .flag.flag-nf{background-position:-96px -99px}.wrap .flag.flag-ng{background-position:-112px -99px}.wrap .flag.flag-ni{background-position:-128px -99px}.wrap .flag.flag-nl{background-position:-144px -99px}.wrap .flag.flag-no{background-position:-160px -99px}.wrap .flag.flag-np{background-position:-176px -99px}.wrap .flag.flag-nr{background-position:-192px -99px}.wrap .flag.flag-nu{background-position:-208px -99px}.wrap .flag.flag-nz{background-position:-224px -99px}.wrap .flag.flag-om{background-position:-240px -99px}.wrap .flag.flag-pa{background-position:0 -110px}.wrap .flag.flag-pe{background-position:-16px -110px}.wrap .flag.flag-pf{background-position:-32px -110px}.wrap .flag.flag-pg{background-position:-48px -110px}.wrap .flag.flag-ph{background-position:-64px -110px}.wrap .flag.flag-pk{background-position:-80px -110px}.wrap .flag.flag-pl{background-position:-96px -110px}.wrap .flag.flag-pm{background-position:-112px -110px}.wrap .flag.flag-pn{background-position:-128px -110px}.wrap .flag.flag-pr{background-position:-144px -110px}.wrap .flag.flag-ps{background-position:-160px -110px}.wrap .flag.flag-pt{background-position:-176px -110px}.wrap .flag.flag-pw{background-position:-192px -110px}.wrap .flag.flag-py{background-position:-208px -110px}.wrap .flag.flag-qa{background-position:-224px -110px}.wrap .flag.flag-re{background-position:-240px -110px}.wrap .flag.flag-ro{background-position:0 -121px}.wrap .flag.flag-rs{background-position:-16px -121px}.wrap .flag.flag-ru{background-position:-32px -121px}.wrap .flag.flag-rw{background-position:-48px -121px}.wrap .flag.flag-sa{background-position:-64px -121px}.wrap .flag.flag-sb{background-position:-80px -121px}.wrap .flag.flag-sc{background-position:-96px -121px}.wrap .flag.flag-sd{background-position:-112px -121px}.wrap .flag.flag-se{background-position:-128px -121px}.wrap .flag.flag-sg{background-position:-144px -121px}.wrap .flag.flag-sh{background-position:-160px -121px}.wrap .flag.flag-si{background-position:-176px -121px}.wrap .flag.flag-sk{background-position:-192px -121px}.wrap .flag.flag-sl{background-position:-208px -121px}.wrap .flag.flag-sm{background-position:-224px -121px}.wrap .flag.flag-sn{background-position:-240px -121px}.wrap .flag.flag-so{background-position:0 -132px}.wrap .flag.flag-sr{background-position:-16px -132px}.wrap .flag.flag-ss{background-position:-32px -132px}.wrap .flag.flag-st{background-position:-48px -132px}.wrap .flag.flag-sv{background-position:-64px -132px}.wrap .flag.flag-sy{background-position:-80px -132px}.wrap .flag.flag-sz{background-position:-96px -132px}.wrap .flag.flag-tc{background-position:-112px -132px}.wrap .flag.flag-td{background-position:-128px -132px}.wrap .flag.flag-tg{background-position:-144px -132px}.wrap .flag.flag-th{background-position:-160px -132px}.wrap .flag.flag-tj{background-position:-176px -132px}.wrap .flag.flag-tk{background-position:-192px -132px}.wrap .flag.flag-tl{background-position:-208px -132px}.wrap .flag.flag-tm{background-position:-224px -132px}.wrap .flag.flag-tn{background-position:-240px -132px}.wrap .flag.flag-to{background-position:0 -143px}.wrap .flag.flag-tr{background-position:-16px -143px}.wrap .flag.flag-tt{background-position:-32px -143px}.wrap .flag.flag-tv{background-position:-48px -143px}.wrap .flag.flag-tw{background-position:-64px -143px}.wrap .flag.flag-tz{background-position:-80px -143px}.wrap .flag.flag-ua{background-position:-96px -143px}.wrap .flag.flag-ug{background-position:-112px -143px}.wrap .flag.flag-us{background-position:-128px -143px}.wrap .flag.flag-uy{background-position:-144px -143px}.wrap .flag.flag-uz{background-position:-160px -143px}.wrap .flag.flag-va{background-position:-176px -143px}.wrap .flag.flag-vc{background-position:-192px -143px}.wrap .flag.flag-ve{background-position:-208px -143px}.wrap .flag.flag-vg{background-position:-224px -143px}.wrap .flag.flag-vi{background-position:-240px -143px}.wrap .flag.flag-vn{background-position:0 -154px}.wrap .flag.flag-vu{background-position:-16px -154px}.wrap .flag.flag-wf{background-position:-32px -154px}.wrap .flag.flag-ws{background-position:-48px -154px}.wrap .flag.flag-ye{background-position:-64px -154px}.wrap .flag.flag-yt{background-position:-80px -154px}.wrap .flag.flag-za{background-position:-96px -154px}.wrap .flag.flag-zm{background-position:-112px -154px}.wrap .flag.flag-zw{background-position:-128px -154px}.wrap .loco-add>*:before{content:"\e60c"}.wrap .loco-del>*:before{content:"\e60d"}.wrap .loco-save>*:before{content:"\e610"}.wrap .loco-sync>*:before{content:"\e633"}.wrap .loco-help>*:before{content:"\3f"}.wrap .loco-revert>*:before{content:"\e634"}.wrap .loco-fuzzy>*:before{content:"\e607"}.wrap .loco-download>*:before{content:"\e608"}.wrap .loco-ok>*:before{content:"\e618"}.wrap .loco-error>*:before,.wrap .loco-warning>*:before{content:"\e62e"}.wrap .loco-edit-pot>*:before{content:"\e61e"}@font-face{font-family:'loco';src:url("../font/loco.eot");src:url("../font/loco.eot?#iefix") format("embedded-opentype"),url("../font/loco.woff") format("woff"),url("../font/loco.ttf") format("truetype"),url("../font/loco.svg#loco") format("svg");font-weight:normal;font-style:normal}.wrap div{position:relative}h2 .nav-tab.nav-tab-loco{float:right;border-color:transparent;font-size:16px;color:#2e892e;background:transparent}h2 .nav-tab.nav-tab-loco:hover{color:#3db63d}.widefat thead tr th{width:25%}.wrap .loco-list{margin:10px 0}.wrap .loco-message p:before,.wrap .loco-list li>a:before,.wrap .loco-list li>span:before{padding-right:0.5em;font-family:loco;color:inherit}.wrap .loco-list li.loco-add a{color:#666666}.wrap .loco-list li.loco-add a:hover{color:#000}.wrap .loco-list li.loco-edit-po .flag{margin-right:6px}.wrap .loco-list li.loco-warning>*:before{color:#cc0000}.wrap .loco-list li.loco-ok>*:before{color:#006600}.wrap .loco-list .loco-details li{margin-bottom:0}.wrap .loco-list .loco-mtime{color:#999}.wrap .loco-list .loco-progress{color:#999}.error a.dismiss,.updated a.dismiss{text-decoration:none;font-size:20px;line-height:1;display:block;position:absolute;right:10px;top:5px}.error a.dismiss:before,.updated a.dismiss:before{display:none}.wrap div.loco-message{margin-top:10px}.wrap div.loco-success{border-color:#00CC00;background-color:#ccffcc}.wrap div.loco-message:hover{border-color:#000}form.loco-switcher{display:inline;display:inline-block;padding:0 5px}form.loco-switcher select{font-weight:normal;height:auto;display:inline}h3.title .loco-meta{font-weight:normal;font-size:14px}.wrap #loco-poedit{border:solid 1px #ccc}.wrap #loco-poedit-inner{min-height:600px;font-size:14px;clear:both}.wrap #loco-poedit-inner h2{color:#000;line-height:1}#loco-nav{font-size:14px;height:50px}#loco-nav form{display:block;padding:0;margin:0}#loco-search,#loco-nav button{display:block;position:relative;float:left;clear:none;box-sizing:border-box;margin:5px 0 0 5px;height:40px;text-align:left}#loco-nav button.loco-help{float:right;margin-right:5px}#loco-nav button span:before{padding-right:0.5em;font-family:loco}.wp-core-ui button.loco-inverted,.wp-core-ui button.loco-inverted:hover{background-image:-webkit-gradient(linear, left top, left bottom, from(#e0e0e0), to(#fefefe));background-image:-webkit-linear-gradient(top, #e0e0e0, #fefefe);background-image:-moz-linear-gradient(top, #e0e0e0, #fefefe);background-image:-o-linear-gradient(top, #e0e0e0, #fefefe);background-image:linear-gradient(to bottom, #e0e0e0, #fefefe)}#loco-filter input[type="text"]{padding-left:10px;margin-left:20px;width:300px;font-size:15px}#loco-filter .icon.clear{display:none !important}.loco-fscheck .loco-list{margin-bottom:20px}
|
pub/css/loco-legacy.css
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* styles for versions of wordpress below 3.8 */
|
2 |
+
|
3 |
+
#adminmenu .toplevel_page_loco-translate .wp-menu-image {
|
4 |
+
background-image: url(../img/wp/menu.png);
|
5 |
+
background-position: 2px 0;
|
6 |
+
-webkit-background-size: 28px 56px; /* Safari 3.0 */
|
7 |
+
-moz-background-size: 28px 56px; /* Gecko 1.9.2 (Firefox 3.6) */
|
8 |
+
-o-background-size: 28px 56px; /* Opera 9.5 */
|
9 |
+
background-size: 28px 56px; /* Gecko 2.0 (Firefox 4.0) and other CSS3-compliant browsers */
|
10 |
+
}
|
11 |
+
|
12 |
+
#adminmenu .toplevel_page_loco-translate.wp-has-current-submenu .wp-menu-image {
|
13 |
+
background-position: 2px -28px;
|
14 |
+
}
|
pub/img/wp/menu.png
ADDED
Binary file
|
pub/js/admin-poinit.js
DELETED
@@ -1,15 +0,0 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
!function( w, d, $ ){
|
4 |
-
|
5 |
-
var form = d.getElementById('loco-msginit'),
|
6 |
-
sloc = form['common-locale'],
|
7 |
-
tloc = form['custom-locale'];
|
8 |
-
|
9 |
-
$(sloc).change( function(){
|
10 |
-
tloc.value = $(this).val();
|
11 |
-
return true;
|
12 |
-
} );
|
13 |
-
|
14 |
-
|
15 |
-
}( window, document, window.jQuery );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pub/js/build/admin-common.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(k,l,a){function f(c,g){function e(){d();b=setTimeout(function(){a(c).fadeOut(1E3,g)},f)}function d(){b&&clearTimeout(b);b=null}var b,f=5E3;e();a(c).mouseenter(d).mouseleave(e)}function h(c,g){function e(d){a(c).remove();a(window).triggerHandler("resize");var b;if(b=d)d.stopPropagation(),d.preventDefault(),b=!1;return b}a('<a class="dismiss" href="#">×</a>').appendTo(c).click(e);g||f(c,e)}a("#wpbody-content").find("div.loco-message").each(function(c,a){h(a,!0)})}(window,document,window.jQuery);
|
pub/js/build/admin-poinit.js
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
!function(a,c,b){a=c.getElementById("loco-msginit");var d=a["custom-locale"];b(a["common-locale"]).change(function(){d.value=b(this).val();return!0})}(window,document,window.jQuery);
|
pub/js/lang/dummy.php
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
-
*
|
4 |
*/
|
5 |
_x('OK','Message label');
|
6 |
_x('Warning','Message label');
|
@@ -15,3 +15,9 @@ __('Already up to date with source code');
|
|
15 |
_n('1 new string added','%s new strings added', 2 );
|
16 |
_n('1 obsolete string removed','%s obsolete strings removed', 2 );
|
17 |
__('Your changes will be lost if you continue without saving');
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
/**
|
3 |
+
* Here for source code extraction until xgettext is applied to js files too
|
4 |
*/
|
5 |
_x('OK','Message label');
|
6 |
_x('Warning','Message label');
|
15 |
_n('1 new string added','%s new strings added', 2 );
|
16 |
_n('1 obsolete string removed','%s obsolete strings removed', 2 );
|
17 |
__('Your changes will be lost if you continue without saving');
|
18 |
+
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Legacy translations, removed from front end but don't want to lose in case reinstated
|
22 |
+
*/
|
23 |
+
__('Translation');
|
pub/js/lang/loco-translate-de_DE.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Project: loco.js conversion
|
4 |
* Release: Working copy
|
5 |
* Locale: de_DE, German
|
6 |
-
* Exported at: Mon,
|
7 |
*/
|
8 |
loco = window.loco||{}, loco.t = function( pairs ){
|
9 |
|
@@ -12,7 +12,7 @@ loco = window.loco||{}, loco.t = function( pairs ){
|
|
12 |
|
13 |
// calc numeric index of a plural form (0-1)
|
14 |
function pluralIndex( n ){
|
15 |
-
return Number(
|
16 |
}
|
17 |
|
18 |
// expose public t() function
|
@@ -29,5 +29,5 @@ loco = window.loco||{}, loco.t = function( pairs ){
|
|
29 |
return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
|
30 |
};
|
31 |
}(
|
32 |
-
{"Error":"Fehler","Warning":"Warnung","OK":"OK","Settings saved":"Einstellungen gespeichert","New PO file":"Neue PO-Datei","You must specify a valid locale for a new PO file":"Du musst einen g\u00fcltigen Pfad f\u00fcr die PO-Datei angeben","No translatable strings found":"Keine \u00fcbersetzbaren Zeichenketten gefunden","Cannot create a PO file.":"Erstellen der PO-Datei fehlgeschlagen.","PO file already exists with locale %s":"PO-Datei existiert schon unter %s","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Datei kann nicht automatisch erstellt werden. Setze die Datei-Zugriffsrechte oder benutze Download anstatt Speichern","%s file is empty":"Datei (%s) ist leer","Run Sync to update from source code":"Benutze Sync, um von der Quelle zu aktualisieren","No strings could be extracted from source code":"Es konnten keine Zeichenketten vom Quellcode extrahiert werden","Run Sync to update from %s":"Benutze Sync, um aus %s zu aktualisieren","Source code has been modified, run Sync to update POT":"Quellcode wurde ge\u00e4ndert, benutze Sync um POT zu aktualisieren","POT has been modified since PO file was saved, run Sync to update":"POT wurde aktualisiert bevor die PO-Datei gespeichert wurde. Benutze Sync zum Aktualisieren.","Bad file path":"Falscher Dateipfad","New template":"Neues Template","New language":"Neue Sprache","%s%% translated":"%s%% \u00fcbersetzt","1 string":{"one":"1 Zeichenkette","other":"%s Zeichenketten"},"%s fuzzy":"%s undeutlich","%s untranslated":"%s nicht \u00fcbersetzt","Failed to compile MO file with built-in compiler":"Kompilieren der MO-Datei mit dem internen Kompilierer fehlgeschlagen.","Loco, Translation Management":"Loco, Translation Management","
|
33 |
);
|
3 |
* Project: loco.js conversion
|
4 |
* Release: Working copy
|
5 |
* Locale: de_DE, German
|
6 |
+
* Exported at: Mon, 10 Mar 2014 12:31:13 +0000
|
7 |
*/
|
8 |
loco = window.loco||{}, loco.t = function( pairs ){
|
9 |
|
12 |
|
13 |
// calc numeric index of a plural form (0-1)
|
14 |
function pluralIndex( n ){
|
15 |
+
return Number( n != 1 );
|
16 |
}
|
17 |
|
18 |
// expose public t() function
|
29 |
return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
|
30 |
};
|
31 |
}(
|
32 |
+
{"Error":"Fehler","Warning":"Warnung","OK":"OK","Permission denied":"","Settings saved":"Einstellungen gespeichert","New PO file":"Neue PO-Datei","You must specify a valid locale for a new PO file":"Du musst einen g\u00fcltigen Pfad f\u00fcr die PO-Datei angeben","No translatable strings found":"Keine \u00fcbersetzbaren Zeichenketten gefunden","Cannot create a PO file.":"Erstellen der PO-Datei fehlgeschlagen.","PO file already exists with locale %s":"PO-Datei existiert schon unter %s","PO file used as template. This will be renamed to %s on first save":"","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Datei kann nicht automatisch erstellt werden. Setze die Datei-Zugriffsrechte oder benutze Download anstatt Speichern","%s file is empty":"Datei (%s) ist leer","Run Sync to update from source code":"Benutze Sync, um von der Quelle zu aktualisieren","No strings could be extracted from source code":"Es konnten keine Zeichenketten vom Quellcode extrahiert werden","Run Sync to update from %s":"Benutze Sync, um aus %s zu aktualisieren","Source code has been modified, run Sync to update POT":"Quellcode wurde ge\u00e4ndert, benutze Sync um POT zu aktualisieren","POT has been modified since PO file was saved, run Sync to update":"POT wurde aktualisiert bevor die PO-Datei gespeichert wurde. Benutze Sync zum Aktualisieren.","Bad file path":"Falscher Dateipfad","Empty or invalid %s file":"","%s file has no header":"","New template":"Neues Template","New language":"Neue Sprache","%s%% translated":"%s%% \u00fcbersetzt","1 string":{"one":"1 Zeichenkette","other":"%s Zeichenketten"},"%s fuzzy":"%s undeutlich","%s untranslated":"%s nicht \u00fcbersetzt","Failed to compile MO file with built-in compiler":"Kompilieren der MO-Datei mit dem internen Kompilierer fehlgeschlagen.","Loco, Translation Management":"Loco, Translation Management","Manage translations":"\u00dcbersetzungen verwalten","Translation options":"","Loco Translate":"","Settings":"Einstellungen","File download failed":"Dateidownload ist fehlgeschlagen","Unknown language":"Unbekannte Sprache","Some files not writable":"Einige Dateien nicht schreibbar","Some files missing":"Einige Dateien fehlen","\"%s\" folder not writable":"Ordner \"%s\" nicht schreibbar","POT file not writable":"POT-Datei nicht schreibbar","PO file not writable":"PO-Datei nicht schreibbar","MO file not writable":"MO-Datei nicht schreibbar","MO file not found":"MO-Datei nicht gefunden","Folder not writable":"Ordner nicht schreibbar","User does not have permission to manage translations":"Benutzer hat keine Rechte die \u00dcbersetzungen zu verwalten","Failed to compile MO file with %s, check your settings":"Kompilieren der MO-Datei fehlgeschlagen. Bitte pr\u00fcfe Deine Einstellungen","Invalid data posted to server":"Ung\u00fcltige Daten zum Server gesendet","Package not found called %s":"Paket %s nicht gefunden","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Webserver kann Ordner \"%s\" nicht in \"%s\" erstellen. Setze die Zugriffsrechte oder erstelle den Ordner selbst.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Webserver kann keine Dateien im Ordner \"%s\" erstellen. Setze die Datei-Zugriffsrechte oder benutze Download anstatt Speichern.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"Datei %s ist vom Webserver nicht schreibbar. Setze die Datei-Zugriffsrechte oder benutze Download anstatt Speichern und speichere die Datei auf dem Server unter \"%s\/%s\" ab.","Cannot create MO file":"Erstellen der MO-Datei fehlgeschlagen.","Cannot overwrite MO file":"\u00dcberschreiben der MO-Datei fehlgeschlagen","Failed to write MO file":"Fehler beim Schreiben der MO-Datei","No strings could be extracted from source files":"Es konnten keine Zeichenketten aus der Quelle extrahiert werden","Unknown error":"Unbekannter Fehler","PO file saved":"PO-Datei gespeichert","and MO file compiled":"und MO-Datei kompiliert","Merged from %s":"Aus %s zusammengef\u00fchrt","Merged from source code":"Aus Quelle zusammengef\u00fchrt","Already up to date with %s":"Bereits auf dem aktuellen Stand mit %s","Already up to date with source code":"Bereits mit der Quelle auf dem aktuellen Stand","1 new string added":{"one":"1 neue Zeichenkette hinzugef\u00fcgt","other":"%s neue Zeichenketten hinzugef\u00fcgt"},"1 obsolete string removed":{"one":"1 veraltete Zeichenkette entfernt","other":"%s veraltete Zeichenketten entfernt"},"Your changes will be lost if you continue without saving":"Deine \u00c4nderungen gehen verloren, wenn du fortsetzt ohne zu Speichern","Translation":"\u00dcbersetzung","Packages":"Pakete","File check":"Dateipr\u00fcfung","File system permissions for %s":"Dateisystem-Rechte f\u00fcr %s","Back":"Zur\u00fcck","Get help":"Hilfe erhalten","Package details":"Paketdetails","Translations (PO)":"\u00dcbersetzungen (PO)","Template (POT)":"Template (POT)","File permissions":"Dateizugriffsrechte","1 language":{"one":"1 Sprache","other":"%u Sprachen"},"Updated":"Aktualisiert","Powered by":"Pr\u00e4sentiert von","Configure Loco Translate":"Konfiguriere Loco Translate","Compiling MO files":"MO-Dateien kompilieren","Use built-in MO compiler.":"Benutze internen MO-Kompilierer","Use external command:":"Benutze externes Befehlsprogramm:","Enter path to msgfmt on server":"Pfad zum msgfmt-Programm","Generate hash tables":"Erzeuge Hashtabellen","Backing up PO files":"","Number of backups to keep of each file:":"","Save settings":"Einstellungen speichern","Template file":"Templatedatei","Switch to...":"Wechsle zu...","never":"niemals","Save":"Speichern","Download":"Download","Sync":"Sync","Revert":"zur\u00fccksetzen","Add":"Hinzuf\u00fcgen","Del":"L\u00f6schen","Fuzzy":"Undeutlich","Filter translations":"\u00dcbersetzungen filtern","Help":"Hilfe","Initialize new translations in %s":"Initialisiere neue \u00dcbersetzung in %s","Select from common languages":"W\u00e4hle aus den Standardsprachen","or enter any language code":"oder trage den Sprach-Code ein","Start translating":"Starte \u00dcbersetzung","New version available":"Neue Version verf\u00fcgbar","Upgrade to version %s of Loco Translate":"Bitte upgrade Loco Translate auf Version %s","Select a plugin or theme to translate":"W\u00e4hle ein Plugin oder Theme zum \u00dcbersetzen","Themes":"Themes","Plugins":"Plugins","Core":"Core"}
|
33 |
);
|
pub/js/lang/loco-translate-nl_BE.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Project: loco.js conversion
|
4 |
* Release: Working copy
|
5 |
* Locale: nl_BE, Dutch (Belgium)
|
6 |
-
* Exported at: Mon,
|
7 |
*/
|
8 |
loco = window.loco||{}, loco.t = function( pairs ){
|
9 |
|
@@ -12,7 +12,7 @@ loco = window.loco||{}, loco.t = function( pairs ){
|
|
12 |
|
13 |
// calc numeric index of a plural form (0-1)
|
14 |
function pluralIndex( n ){
|
15 |
-
return Number(
|
16 |
}
|
17 |
|
18 |
// expose public t() function
|
@@ -29,5 +29,5 @@ loco = window.loco||{}, loco.t = function( pairs ){
|
|
29 |
return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
|
30 |
};
|
31 |
}(
|
32 |
-
{"
|
33 |
);
|
3 |
* Project: loco.js conversion
|
4 |
* Release: Working copy
|
5 |
* Locale: nl_BE, Dutch (Belgium)
|
6 |
+
* Exported at: Mon, 10 Mar 2014 12:31:13 +0000
|
7 |
*/
|
8 |
loco = window.loco||{}, loco.t = function( pairs ){
|
9 |
|
12 |
|
13 |
// calc numeric index of a plural form (0-1)
|
14 |
function pluralIndex( n ){
|
15 |
+
return Number( n != 1 );
|
16 |
}
|
17 |
|
18 |
// expose public t() function
|
29 |
return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
|
30 |
};
|
31 |
}(
|
32 |
+
{"Error":"Fout","Warning":"Waarschuwing","OK":"","Permission denied":"","Settings saved":"","New PO file":"Nieuw PO-bestand","You must specify a valid locale for a new PO file":"Specifieer een geldige locale voor een nieuw PO-bestand","No translatable strings found":"Geen vertaalbare teksten gevonden","Cannot create a PO file.":"Kan geen PO-bestand aanmaken","PO file already exists with locale %s":"PO-bestand bestaat al in locale %s","PO file used as template. This will be renamed to %s on first save":"","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik download en bewaar.","%s file is empty":"Het bestand %s is leeg","Run Sync to update from source code":"Voer Sync uit om de broncode up te daten","No strings could be extracted from source code":"Er kon geen tekst uit de broncode gehaald worden","Run Sync to update from %s":"Gebruik Sync om vanuit %s up te daten","Source code has been modified, run Sync to update POT":"Broncode is veranderd. Gebruik Sync om POT up te daten","POT has been modified since PO file was saved, run Sync to update":"POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten","Bad file path":"Foute bestandslocatie","Empty or invalid %s file":"","%s file has no header":"","New template":"Nieuw sjabloon","New language":"Nieuwe taal","%s%% translated":"%s%% vertaald","1 string":{"one":"1 te vertalen tekst","other":"%s te vertalen teksten"},"%s fuzzy":"%s onzeker","%s untranslated":"%s onvertaald","Failed to compile MO file with built-in compiler":"","Loco, Translation Management":"Loco, vertalingsbeheer","Manage translations":"Beheer vertalingen","Translation options":"","Loco Translate":"","Settings":"","File download failed":"","Unknown language":"Onbekende taal","Some files not writable":"Sommige bestanden hebben geen schrijfrechten","Some files missing":"","\"%s\" folder not writable":"Map \"%s\" heeft geen schrijfrechten","POT file not writable":"","PO file not writable":"","MO file not writable":"","MO file not found":"","Folder not writable":"","User does not have permission to manage translations":"Gebruik heeft geen rechten om vertalingen te beheren","Failed to compile MO file with %s, check your settings":"","Invalid data posted to server":"Ongeldige gegevens op server","Package not found called %s":"","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak het zelf aan.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik de downloadfunctie.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"Bestand %s kan niet beschreven worden door de webserver. Bewerk de schrijfrechten of download en kopieer naar \"%s\/%s\".","Cannot create MO file":"","Cannot overwrite MO file":"","Failed to write MO file":"","No strings could be extracted from source files":"Er konden geen te vertalen teksten uit de bronbestanden gehaald worden","Unknown error":"","PO file saved":"","and MO file compiled":"","Merged from %s":"","Merged from source code":"","Already up to date with %s":"","Already up to date with source code":"","1 new string added":{"one":""},"1 obsolete string removed":{"one":""},"Your changes will be lost if you continue without saving":"","Translation":"","Packages":"Pakketten","File check":"","File system permissions for %s":"","Back":"","Get help":"","Package details":"Pakketdetails","Translations (PO)":"Vertalingen (PO)","Template (POT)":"Sjabloon (POT)","File permissions":"Bestandsrechten","1 language":{"one":"1 taal","other":"%u talen"},"Updated":"Ge\u00fcpdated","Powered by":"Ondersteund door","Configure Loco Translate":"","Compiling MO files":"","Use built-in MO compiler.":"","Use external command:":"","Enter path to msgfmt on server":"","Generate hash tables":"","Backing up PO files":"","Number of backups to keep of each file:":"","Save settings":"","Template file":"Sjabloonbestand","Switch to...":"","never":"nooit","Save":"Opslaan","Download":"Downloaden","Sync":"Sync","Revert":"Ongedaan maken","Add":"Toevoegen","Del":"Verwijder","Fuzzy":"Onzeker","Filter translations":"Filter vertalingen","Help":"Help","Initialize new translations in %s":"Start nieuwe vertalingen in %s","Select from common languages":"Selecteer van gebruikelijke talen","or enter any language code":"of geef een taalcode op","Start translating":"Start vertalen","New version available":"Nieuwe versie beschikbaar","Upgrade to version %s of Loco Translate":"Loco Translate upgraden naar versie %s","Select a plugin or theme to translate":"Selecteer een plug-in of thema om te vertalen","Themes":"Thema's","Plugins":"Plug-ins","Core":""}
|
33 |
);
|
pub/js/lang/loco-translate-nl_NL.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Project: loco.js conversion
|
4 |
* Release: Working copy
|
5 |
* Locale: nl_NL, Dutch
|
6 |
-
* Exported at: Mon,
|
7 |
*/
|
8 |
loco = window.loco||{}, loco.t = function( pairs ){
|
9 |
|
@@ -12,7 +12,7 @@ loco = window.loco||{}, loco.t = function( pairs ){
|
|
12 |
|
13 |
// calc numeric index of a plural form (0-1)
|
14 |
function pluralIndex( n ){
|
15 |
-
return Number(
|
16 |
}
|
17 |
|
18 |
// expose public t() function
|
@@ -29,5 +29,5 @@ loco = window.loco||{}, loco.t = function( pairs ){
|
|
29 |
return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
|
30 |
};
|
31 |
}(
|
32 |
-
{"
|
33 |
);
|
3 |
* Project: loco.js conversion
|
4 |
* Release: Working copy
|
5 |
* Locale: nl_NL, Dutch
|
6 |
+
* Exported at: Mon, 10 Mar 2014 12:31:13 +0000
|
7 |
*/
|
8 |
loco = window.loco||{}, loco.t = function( pairs ){
|
9 |
|
12 |
|
13 |
// calc numeric index of a plural form (0-1)
|
14 |
function pluralIndex( n ){
|
15 |
+
return Number( n != 1 );
|
16 |
}
|
17 |
|
18 |
// expose public t() function
|
29 |
return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
|
30 |
};
|
31 |
}(
|
32 |
+
{"Error":"Fout","Warning":"Waarschuwing","OK":"","Permission denied":"","Settings saved":"","New PO file":"Nieuw PO-bestand","You must specify a valid locale for a new PO file":"Specifieer een geldige locale voor een nieuw PO-bestand","No translatable strings found":"Geen vertaalbare teksten gevonden","Cannot create a PO file.":"Kan geen PO-bestand aanmaken","PO file already exists with locale %s":"PO-bestand bestaat al in locale %s","PO file used as template. This will be renamed to %s on first save":"","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Bestand kan niet automatisch aangemaakt worden. Verander de rechten of gebruik download en bewaar.","%s file is empty":"Het bestand %s is leeg","Run Sync to update from source code":"Voer Sync uit om de broncode up te daten","No strings could be extracted from source code":"Er kon geen tekst uit de broncode gehaald worden","Run Sync to update from %s":"Gebruik Sync om vanuit %s up te daten","Source code has been modified, run Sync to update POT":"Broncode is veranderd. Gebruik Sync om POT up te daten","POT has been modified since PO file was saved, run Sync to update":"POT is veranderd sedert bewaren van het PO-bestand. Gebruik Sync om up te daten","Bad file path":"Foute bestandslocatie","Empty or invalid %s file":"","%s file has no header":"","New template":"Nieuw sjabloon","New language":"Nieuwe taal","%s%% translated":"%s%% vertaald","1 string":{"one":"1 te vertalen tekst","other":"%s te vertalen teksten"},"%s fuzzy":"%s onzeker","%s untranslated":"%s onvertaald","Failed to compile MO file with built-in compiler":"","Loco, Translation Management":"Loco, vertalingsbeheer","Manage translations":"Beheer vertalingen","Translation options":"","Loco Translate":"","Settings":"","File download failed":"","Unknown language":"Onbekende taal","Some files not writable":"Sommige bestanden hebben geen schrijfrechten","Some files missing":"","\"%s\" folder not writable":"Map \"%s\" heeft geen schrijfrechten","POT file not writable":"","PO file not writable":"","MO file not writable":"","MO file not found":"","Folder not writable":"","User does not have permission to manage translations":"Gebruik heeft geen rechten om vertalingen te beheren","Failed to compile MO file with %s, check your settings":"","Invalid data posted to server":"Ongeldige gegevens op server","Package not found called %s":"","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of maak het zelf aan.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Webserver kan map \"%s\" in \"%s\" niet aanmaken. Bewerk bestandsrechten of gebruik de downloadfunctie.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"Bestand %s kan niet beschreven worden door de webserver. Bewerk de schrijfrechten of download en kopieer naar \"%s\/%s\".","Cannot create MO file":"","Cannot overwrite MO file":"","Failed to write MO file":"","No strings could be extracted from source files":"Er konden geen te vertalen teksten uit de bronbestanden gehaald worden","Unknown error":"","PO file saved":"","and MO file compiled":"","Merged from %s":"","Merged from source code":"","Already up to date with %s":"","Already up to date with source code":"","1 new string added":{"one":""},"1 obsolete string removed":{"one":""},"Your changes will be lost if you continue without saving":"","Translation":"","Packages":"Pakketten","File check":"","File system permissions for %s":"","Back":"","Get help":"","Package details":"Pakketdetails","Translations (PO)":"Vertalingen (PO)","Template (POT)":"Sjabloon (POT)","File permissions":"Bestandsrechten","1 language":{"one":"1 taal","other":"%u talen"},"Updated":"Ge\u00fcpdated","Powered by":"Ondersteund door","Configure Loco Translate":"","Compiling MO files":"","Use built-in MO compiler.":"","Use external command:":"","Enter path to msgfmt on server":"","Generate hash tables":"","Backing up PO files":"","Number of backups to keep of each file:":"","Save settings":"","Template file":"Sjabloonbestand","Switch to...":"","never":"nooit","Save":"Opslaan","Download":"Downloaden","Sync":"Sync","Revert":"Ongedaan maken","Add":"Toevoegen","Del":"Verwijder","Fuzzy":"Onzeker","Filter translations":"Filter vertalingen","Help":"Help","Initialize new translations in %s":"Start nieuwe vertalingen in %s","Select from common languages":"Selecteer van gebruikelijke talen","or enter any language code":"of geef een taalcode op","Start translating":"Start vertalen","New version available":"Nieuwe versie beschikbaar","Upgrade to version %s of Loco Translate":"Loco Translate upgraden naar versie %s","Select a plugin or theme to translate":"Selecteer een plug-in of thema om te vertalen","Themes":"Thema's","Plugins":"Plug-ins","Core":""}
|
33 |
);
|
pub/js/lang/loco-translate-tr_TR.js
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* Loco js export: JavaScript function
|
3 |
+
* Project: loco.js conversion
|
4 |
+
* Release: Working copy
|
5 |
+
* Locale: tr_TR, Turkish
|
6 |
+
* Exported at: Mon, 10 Mar 2014 12:31:13 +0000
|
7 |
+
*/
|
8 |
+
loco = window.loco||{}, loco.t = function( pairs ){
|
9 |
+
|
10 |
+
// named plural forms according to Unicode
|
11 |
+
var pluralForms = ["other"];
|
12 |
+
|
13 |
+
// calc numeric index of a plural form (0-1)
|
14 |
+
function pluralIndex( n ){
|
15 |
+
return Number( n > 1 );
|
16 |
+
}
|
17 |
+
|
18 |
+
// expose public t() function
|
19 |
+
return function( msgid1, msgid2, n ){
|
20 |
+
var value = pairs[msgid1];
|
21 |
+
// singular if no multiplier
|
22 |
+
if( null == n ){
|
23 |
+
n = 1;
|
24 |
+
}
|
25 |
+
// plurals stored as objects, e.g. { one: "" }
|
26 |
+
if( value instanceof Object ){
|
27 |
+
value = value[ pluralForms[ pluralIndex(n) ] || 'one' ];
|
28 |
+
}
|
29 |
+
return value || ( 1 === n ? msgid1 : msgid2 ) || msgid1 || '';
|
30 |
+
};
|
31 |
+
}(
|
32 |
+
{"Error":"Hata","Warning":"Uyar\u0131","OK":"TAMAM","Permission denied":"","Settings saved":"Ayarlar sakland\u0131","New PO file":"Yeni PO Dosyas\u0131","You must specify a valid locale for a new PO file":"Yeni PO dosyas\u0131 i\u00e7in ge\u00e7erli bir locale de\u011feri belirtmek zorundas\u0131n\u0131z","No translatable strings found":"\u00c7evrilebilir c\u00fcmle bulunamad\u0131","Cannot create a PO file.":"Bir PO dosyas\u0131 olu\u015fturulam\u0131yor.","PO file already exists with locale %s":"PO dosyas\u0131 %s locale de\u011feri ile zaten mevcut","PO file used as template. This will be renamed to %s on first save":"","File cannot be created automatically. Fix the file permissions or use Download instead of Save":"Dosya otomatik olarak olu\u015fturulam\u0131yor. Dosya izinlerini tamir edin ya da Saklama yerine \u0130ndirin.","%s file is empty":"%s dosyas\u0131 bo\u015f","Run Sync to update from source code":"Kaynak dosyas\u0131ndan g\u00fcncelleme i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r","No strings could be extracted from source code":"Kaynak kodundan herhangi c\u00fcmle \u00e7\u0131kar\u0131lamad\u0131","Run Sync to update from %s":"%s \u00fczerinden g\u00fcncelleme i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r","Source code has been modified, run Sync to update POT":"Kaynak dosyas\u0131 de\u011fi\u015ftirilmi\u015f, POT g\u00fcncellemesi i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r\u0131n","POT has been modified since PO file was saved, run Sync to update":"PO dosyas\u0131 en son sakland\u0131\u011f\u0131ndan beri POT de\u011fi\u015fikli\u011fe u\u011fram\u0131\u015f, g\u00fcncelleme i\u00e7in Senkr. \u00e7al\u0131\u015ft\u0131r\u0131n.","Bad file path":"Uygun olmayan dosya yolu","Empty or invalid %s file":"","%s file has no header":"","New template":"Yeni \u015fablon","New language":"Yeni dil","%s%% translated":"%s%% \u00e7evrildi","1 string":{"other":"1 c\u00fcmle"},"%s fuzzy":"%s bulan\u0131k","%s untranslated":"%s \u00e7evrilmemi\u015f","Failed to compile MO file with built-in compiler":"Dahili derleyici ile MO derlemesinde hata","Loco, Translation Management":"Loco, \u00c7evri Y\u00f6netimi","Manage translations":"\u00c7evrileri Y\u00f6net","Translation options":"","Loco Translate":"","Settings":"Ayarlar","File download failed":"Dosya indirme hatas\u0131","Unknown language":"Bilinmeyen dil","Some files not writable":"Baz\u0131 dosyalar yaz\u0131labilir de\u011fil","Some files missing":"Baz\u0131 dosyalar eksik","\"%s\" folder not writable":"\"%s\" dizini yaz\u0131labilir de\u011fil","POT file not writable":"POT dosyas\u0131 yaz\u0131labilir de\u011fil","PO file not writable":"PO dosyas\u0131 yaz\u0131labilir de\u011fil","MO file not writable":"MO dosyas\u0131 yaz\u0131labilir de\u011fil","MO file not found":"MO dosyas\u0131 bulunamad\u0131","Folder not writable":"Dizin yaz\u0131labilir de\u011fil","User does not have permission to manage translations":"Kullan\u0131c\u0131 \u00e7evrileri y\u00f6netmeye yetkili de\u011fil","Failed to compile MO file with %s, check your settings":"%s ile MO dosyas\u0131 derlemede hata, ayarlar\u0131n\u0131z\u0131 denetleyin","Invalid data posted to server":"Sunucuya g\u00f6nderili veri ge\u00e7ersiz","Package not found called %s":"%s isimli paket bulunamad\u0131","Web server cannot create backups in \"%s\". Fix file permissions or disable backups in settings":"","Web server cannot create \"%s\" directory in \"%s\". Fix file permissions or create it manually.":"Web sunucusu \"%s\" dizini olu\u015fturam\u0131yor \"%s\" i\u00e7inde. Dosya izinlerini tamir edin ya da elle olu\u015fturun.","Web server cannot create files in the \"%s\" directory. Fix file permissions or use the download function.":"Web sunucusu \"%s\" dizini i\u00e7inde dosya olu\u015fturam\u0131yor. Dosya izinlerini tamir edin ya da indirme fonksiyonunu kullan\u0131n.","%s file is not writable by the web server. Fix file permissions or download and copy to \"%s\/%s\".":"%s dosyas\u0131 web sunucu taraf\u0131ndan yaz\u0131lamaz durumda. Dosya izinlerini tamir edin ya da indirip \"%s\/%s\" yoluna kopyalay\u0131n.","Cannot create MO file":"MO dosyas\u0131 olu\u015fturulam\u0131yor","Cannot overwrite MO file":"MO dosyas\u0131 \u00fczerine yaz\u0131lam\u0131yor","Failed to write MO file":"MO dosyas\u0131 yazmada hata","No strings could be extracted from source files":"Kaynak dosyalar\u0131ndan herhangi c\u00fcmle \u00e7\u0131kart\u0131lamad\u0131","Unknown error":"Bilinmeyen hata","PO file saved":"PO dosyas\u0131 sakland\u0131","and MO file compiled":"ve MO dosyas\u0131 derlendi","Merged from %s":"%s \u00fczerinden birle\u015ftirildi","Merged from source code":"Kaynak kodtan birle\u015ftirildi","Already up to date with %s":"%s ile zaten g\u00fcncel","Already up to date with source code":"Kaynak kod ile zaten g\u00fcncel","1 new string added":{"other":"1 yeni c\u00fcmle eklendi"},"1 obsolete string removed":{"other":"1 kullan\u0131md\u0131\u015f\u0131 c\u00fcmle kald\u0131r\u0131ld\u0131"},"Your changes will be lost if you continue without saving":"Saklamadan devam ederseniz de\u011fi\u015fiklikleriniz kaybolacak","Translation":"\u00c7evri","Packages":"Paketler","File check":"Dosya denetimi","File system permissions for %s":"%s i\u00e7in dosya sistemi izinleri","Back":"Geri","Get help":"Yard\u0131m al","Package details":"Paket detaylar\u0131","Translations (PO)":"\u00c7evriler (PO)","Template (POT)":"\u015eablon (POT)","File permissions":"Dosya izinleri","1 language":{"other":"1 dil"},"Updated":"G\u00fcncel","Powered by":"Destekleyici:","Configure Loco Translate":"Loco Translate'i konfig\u00fcre et","Compiling MO files":"MO dosyalar\u0131 derleme","Use built-in MO compiler.":"Dahili MO derleyici kullan.","Use external command:":"Harici komut kullan:","Enter path to msgfmt on server":"Sunucudaki msgfmt'ye yol gir","Generate hash tables":"Hash tablolar\u0131 \u00fcret","Backing up PO files":"","Number of backups to keep of each file:":"","Save settings":"Ayarlar\u0131 sakla","Template file":"\u015eablon dosyas\u0131","Switch to...":"Ge\u00e7:","never":"asla","Save":"Sakla","Download":"\u0130ndir","Sync":"Senkr.","Revert":"S\u0131f\u0131rla","Add":"Ekle","Del":"Sil","Fuzzy":"Bulan\u0131k","Filter translations":"\u00c7evrileri filtrele","Help":"Yard\u0131m","Initialize new translations in %s":"%s i\u00e7in yeni \u00e7evriler ba\u015flat","Select from common languages":"Yayg\u0131n diller aras\u0131ndan se\u00e7","or enter any language code":"veya herhangi dil kodu gir","Start translating":"\u00c7evriye Ba\u015fla","New version available":"Yeni versiyon mevcut","Upgrade to version %s of Loco Translate":"Loco Translate'in %s versiyonuna y\u00fckselt","Select a plugin or theme to translate":"\u00c7evirisini yapmak i\u00e7in bir eklenti ya da tema se\u00e7","Themes":"Temalar","Plugins":"Eklentiler","Core":"\u00c7ekirdek"}
|
33 |
+
);
|
readme.txt
CHANGED
@@ -2,8 +2,8 @@
|
|
2 |
Contributors: timwhitlock
|
3 |
Tags: translation, translators, localization, localisation, l10n, i18n, Gettext, POEdit, productivity
|
4 |
Requires at least: 3.5
|
5 |
-
Tested up to: 3.8
|
6 |
-
Stable tag: 1.4.
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
@@ -98,6 +98,13 @@ At the user end, yes you can access the interface on Windows using Internet Expl
|
|
98 |
== Changelog ==
|
99 |
|
100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
101 |
= 1.4.2 =
|
102 |
* Added backup feature
|
103 |
* Removed utm domain
|
@@ -163,7 +170,7 @@ At the user end, yes you can access the interface on Windows using Internet Expl
|
|
163 |
|
164 |
== Upgrade Notice ==
|
165 |
|
166 |
-
= 1.4.
|
167 |
* Bug fixes and improvements.
|
168 |
|
169 |
|
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.8.1
|
6 |
+
Stable tag: 1.4.3
|
7 |
License: GPLv2 or later
|
8 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
|
98 |
== Changelog ==
|
99 |
|
100 |
|
101 |
+
= 1.4.3 =
|
102 |
+
* Child themes use parent text domains
|
103 |
+
* MO files parsed when PO files missing
|
104 |
+
* Handle incorrect usage of PO files as templates
|
105 |
+
* Nicer top-level menu with dashicons icon
|
106 |
+
* Added IE<=8 warning
|
107 |
+
|
108 |
= 1.4.2 =
|
109 |
* Added backup feature
|
110 |
* Removed utm domain
|
170 |
|
171 |
== Upgrade Notice ==
|
172 |
|
173 |
+
= 1.4.3 =
|
174 |
* Bug fixes and improvements.
|
175 |
|
176 |
|
tpl/admin-fscheck.tpl.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*/
|
5 |
$nav = array (
|
6 |
Loco::__('Packages') => LocoAdmin::uri(),
|
7 |
-
Loco::__('Settings') =>
|
8 |
Loco::__('File check') => '',
|
9 |
);
|
10 |
?>
|
@@ -24,7 +24,7 @@ $nav = array (
|
|
24 |
<code><?php Loco::h( LocoAdmin::trim_path($path) )?></code>
|
25 |
</li><?php
|
26 |
if( $error ):?>
|
27 |
-
<li class="loco-
|
28 |
<span><?php Loco::h($error)?></span>
|
29 |
</li><?php
|
30 |
else:?>
|
4 |
*/
|
5 |
$nav = array (
|
6 |
Loco::__('Packages') => LocoAdmin::uri(),
|
7 |
+
Loco::__('Settings') => LocoAdmin::uri( array(), 'settings' ),
|
8 |
Loco::__('File check') => '',
|
9 |
);
|
10 |
?>
|
24 |
<code><?php Loco::h( LocoAdmin::trim_path($path) )?></code>
|
25 |
</li><?php
|
26 |
if( $error ):?>
|
27 |
+
<li class="loco-warning">
|
28 |
<span><?php Loco::h($error)?></span>
|
29 |
</li><?php
|
30 |
else:?>
|
tpl/admin-list.tpl.php
CHANGED
@@ -33,7 +33,12 @@
|
|
33 |
<ul class="loco-details">
|
34 |
<li title="<?php Loco::h($domain)?>">
|
35 |
<strong><?php Loco::h($name)?></strong>
|
36 |
-
</li
|
|
|
|
|
|
|
|
|
|
|
37 |
<li><?php
|
38 |
Loco::h( Loco::_n( '1 language', '%u languages', $n ), $n )?>
|
39 |
</li><?php
|
@@ -94,7 +99,7 @@
|
|
94 |
</li><?php
|
95 |
}
|
96 |
catch( Exception $Ex ){?>
|
97 |
-
<li class="loco-
|
98 |
<?php echo LocoAdmin::fscheck_link( $package, $domain, $Ex->getMessage() )?>
|
99 |
</li><?php
|
100 |
}?>
|
33 |
<ul class="loco-details">
|
34 |
<li title="<?php Loco::h($domain)?>">
|
35 |
<strong><?php Loco::h($name)?></strong>
|
36 |
+
</li><?php
|
37 |
+
if( isset($parent) ):?>
|
38 |
+
<li>
|
39 |
+
Inherits: <?php Loco::h($parent)?>
|
40 |
+
</li><?php
|
41 |
+
endif?>
|
42 |
<li><?php
|
43 |
Loco::h( Loco::_n( '1 language', '%u languages', $n ), $n )?>
|
44 |
</li><?php
|
99 |
</li><?php
|
100 |
}
|
101 |
catch( Exception $Ex ){?>
|
102 |
+
<li class="loco-warning">
|
103 |
<?php echo LocoAdmin::fscheck_link( $package, $domain, $Ex->getMessage() )?>
|
104 |
</li><?php
|
105 |
}?>
|
tpl/admin-nav.tpl.php
CHANGED
@@ -4,21 +4,24 @@
|
|
4 |
*/
|
5 |
?>
|
6 |
|
7 |
-
<h2 class="nav-tab-wrapper"
|
8 |
-
|
9 |
-
|
10 |
<a href="<?php echo Loco::html($href)?>" class="nav-tab">
|
11 |
-
<?php echo Loco::html($label)?>
|
12 |
-
</a
|
13 |
-
|
14 |
-
<a href="" class="nav-tab nav-tab-active">
|
15 |
-
<?php
|
16 |
-
</a
|
17 |
-
|
18 |
-
|
19 |
-
<a href="https://localise.biz/about/gettext?<?php
|
20 |
-
|
21 |
-
|
22 |
</a>
|
23 |
</h2>
|
24 |
-
|
|
|
|
|
|
4 |
*/
|
5 |
?>
|
6 |
|
7 |
+
<h2 class="nav-tab-wrapper"><?php
|
8 |
+
foreach( $nav as $label => $href ):
|
9 |
+
if( $href ):?>
|
10 |
<a href="<?php echo Loco::html($href)?>" class="nav-tab">
|
11 |
+
<?php echo Loco::html($label)?>
|
12 |
+
</a><?php
|
13 |
+
else:?>
|
14 |
+
<a href="#" class="nav-tab nav-tab-active">
|
15 |
+
<?php Loco::h($label)?>
|
16 |
+
</a><?php
|
17 |
+
endif;
|
18 |
+
endforeach?>
|
19 |
+
<a href="https://localise.biz/about/gettext?<?php Loco::h( Loco::utm_query('nav') )?>" class="nav-tab nav-tab-loco" target="_blank">
|
20 |
+
<?php Loco::h(Loco::__('Powered by'))?>
|
21 |
+
<?php Loco::h(Loco::__('Loco, Translation Management'))?>
|
22 |
</a>
|
23 |
</h2>
|
24 |
+
|
25 |
+
<!--[if lt IE 9]><?php
|
26 |
+
LocoAdmin::warning( __( $ignore = 'Your browser is out of date!').' '.Loco::html( Loco::__('Loco may not work as expected') ) );
|
27 |
+
?><![endif]-->
|
tpl/admin-opts.tpl.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Admin options screen - changes loco plugin settings
|
4 |
*/
|
5 |
$nav = array (
|
6 |
-
Loco::__('Packages') =>
|
7 |
Loco::__('Settings') => '',
|
8 |
);
|
9 |
?>
|
3 |
* Admin options screen - changes loco plugin settings
|
4 |
*/
|
5 |
$nav = array (
|
6 |
+
Loco::__('Packages') => LocoAdmin::uri(),
|
7 |
Loco::__('Settings') => '',
|
8 |
);
|
9 |
?>
|
tpl/admin-poedit.tpl.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
$nav = array (
|
6 |
Loco::__('Packages') => LocoAdmin::uri(),
|
7 |
$name => '',
|
8 |
-
Loco::__('Settings') =>
|
9 |
);
|
10 |
|
11 |
$phpbase = Loco::html( Loco::baseurl() ).'/php';
|
@@ -39,9 +39,9 @@ $modified or $pofiles[] = $path;
|
|
39 |
<?php Loco::h(Loco::_x('Switch to...','Dropdown label'))?>
|
40 |
</option><?php
|
41 |
// drop down of files in package
|
42 |
-
$poname = basename( $path );
|
43 |
foreach( $pofiles as $_path ):
|
44 |
-
$label = basename($_path);
|
45 |
$poedit = LocoAdmin::trim_path($_path);
|
46 |
$url = LocoAdmin::uri( $package->get_query() + compact('poedit') );
|
47 |
?>
|
5 |
$nav = array (
|
6 |
Loco::__('Packages') => LocoAdmin::uri(),
|
7 |
$name => '',
|
8 |
+
Loco::__('Settings') => LocoAdmin::uri( array(), 'settings' ),
|
9 |
);
|
10 |
|
11 |
$phpbase = Loco::html( Loco::baseurl() ).'/php';
|
39 |
<?php Loco::h(Loco::_x('Switch to...','Dropdown label'))?>
|
40 |
</option><?php
|
41 |
// drop down of files in package
|
42 |
+
$poname = str_replace( '.mo', '.po', basename( $path ) );
|
43 |
foreach( $pofiles as $_path ):
|
44 |
+
$label = str_replace( '.mo', '.po', basename($_path) );
|
45 |
$poedit = LocoAdmin::trim_path($_path);
|
46 |
$url = LocoAdmin::uri( $package->get_query() + compact('poedit') );
|
47 |
?>
|
tpl/admin-poinit.tpl.php
CHANGED
@@ -5,7 +5,7 @@
|
|
5 |
$nav = array (
|
6 |
Loco::__('Packages') => LocoAdmin::uri(),
|
7 |
$title => '',
|
8 |
-
Loco::__('Settings') =>
|
9 |
);
|
10 |
|
11 |
/* @var $package LocoPackage */
|
5 |
$nav = array (
|
6 |
Loco::__('Packages') => LocoAdmin::uri(),
|
7 |
$title => '',
|
8 |
+
Loco::__('Settings') => LocoAdmin::uri( array(), 'settings' ),
|
9 |
);
|
10 |
|
11 |
/* @var $package LocoPackage */
|
tpl/admin-root.tpl.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
*/
|
5 |
$nav = array (
|
6 |
Loco::__('Packages') => '',
|
7 |
-
Loco::__('Settings') =>
|
8 |
);
|
9 |
?>
|
10 |
|
4 |
*/
|
5 |
$nav = array (
|
6 |
Loco::__('Packages') => '',
|
7 |
+
Loco::__('Settings') => LocoAdmin::uri( array(), 'settings' ),
|
8 |
);
|
9 |
?>
|
10 |
|