PluginProbe ʕ •ᴥ•ʔ
Loco Translate / 2.7.2
Loco Translate v2.7.2
2.8.5 2.8.4 2.5.8 2.6.0 2.6.1 2.6.10 2.6.11 2.6.12 2.6.13 2.6.14 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 2.6.7 2.6.8 2.6.9 2.7.0 2.7.1 2.7.2 2.7.3 2.8.0 2.8.1 2.8.2 2.8.3 trunk 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2 1.2.1 1.2.2 1.3 1.3.1 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.13 2.0.14 2.0.15 2.0.16 2.0.17 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2.0 2.2.1 2.2.2 2.3.0 2.3.1 2.3.2 2.3.3 2.3.4 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.5.0 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7
loco-translate / readme.txt
loco-translate Last commit date
languages 1 year ago lib 1 year ago pub 1 year ago src 1 year ago tpl 1 year ago loco.php 1 year ago loco.xml 1 year ago readme.txt 1 year ago
readme.txt
593 lines
1 === Loco Translate ===
2 Contributors: timwhitlock
3 Tags: translation, language, multilingual, l10n, i18n
4 Requires at least: 6.6
5 Requires PHP: 7.2.24
6 Tested up to: 6.7.2
7 Stable tag: 2.7.2
8 License: GPLv2 or later
9 License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
11 Translate WordPress plugins and themes directly in your browser
12
13
14 == Description ==
15
16 Loco Translate provides in-browser editing of WordPress translation files and integration with automatic translation services.
17
18 It also provides Gettext/localization tools for developers, such as extracting strings and generating templates.
19
20 Features include:
21
22 * Built-in translation editor within WordPress admin
23 * Integration with translation APIs including DeepL, Google, Microsoft and Lecto AI
24 * Create and update language files directly in your theme or plugin
25 * Extraction of translatable strings from your source code
26 * Native MO file compilation without the need for Gettext on your system
27 * Support for PO features including comments, references and plural forms
28 * PO source view with clickable source code references
29 * Protected language directory for saving custom translations
30 * Configurable PO file backups with diff and restore capability
31 * Built-in WordPress locale codes
32
33
34 Official [Loco](https://localise.biz/) WordPress plugin by Tim Whitlock.
35 For more information please visit our [plugin page](https://localise.biz/wordpress/plugin).
36
37
38 == Installation ==
39
40 = Basic usage: =
41
42 Translators: To translate a theme into your language, follow these steps:
43
44 1. Create the protected languages directory at `wp-content/languages/loco/themes`
45 2. Ensure this directory writeable by the web server
46 3. Find your theme in the list at *Loco Translate > Themes*
47 4. Click `+ New language` and follow the on-screen prompts.
48
49
50 Developers: To translate your own theme or plugin for distribution, follow these steps:
51
52 1. Create a `languages` subdirectory in your bundle’s root directory
53 2. Ensure this directory writeable by the web server
54 3. Find the bundle at either *Loco Translate > Themes* or *Loco Translate > Plugins*
55 4. Click `+ Create template` and follow the on-screen prompts to extract your strings.
56 5. Click `+ New language` and follow the on-screen prompts to add your own translations.
57
58
59 = Installing manually: =
60
61 1. Unzip all files to the `wp-content/plugins/loco-translate` directory
62 2. Log into WordPress admin and activate the 'Loco Translate' plugin through the 'Plugins' menu
63 3. Go to *Loco Translate > Home* in the left-hand menu to start translating
64
65
66 More information on using the plugin is [available here](https://localise.biz/wordpress/plugin).
67
68
69 == Frequently Asked Questions ==
70
71 Please visit the [FAQs page](https://localise.biz/wordpress/plugin/faqs) on our website for the most common issues.
72
73 = How do I use Loco Translate? =
74
75 Try our [Guides and Tutorials](https://localise.biz/wordpress/plugin#guides).
76
77 = How do I get more help? =
78
79 If you have a problem using Loco Translate, please try our [help pages](https://localise.biz/wordpress/plugin).
80 There's a lot of information there to help you understand how it works and the most common pitfalls to avoid.
81
82 To report a bug please start a new topic in the [support forum](https://wordpress.org/support/plugin/loco-translate),
83 but please check the [FAQs](https://localise.biz/wordpress/plugin/faqs) for similar issues first.
84 If you decide to submit a bug report please post enough [relevant detail](https://localise.biz/wordpress/plugin/faqs/debug-info) for us to reproduce your issue.
85
86 = Is my data protected? =
87
88 We don't collect your data or snoop on you. See the [plugin privacy notice](https://localise.biz/wordpress/plugin/privacy).
89
90
91 == Screenshots ==
92
93 1. Translating strings in the browser with the Loco PO Editor
94 2. Showing translation progress for theme language files
95 3. PO source view with text filter and clickable file references
96 4. Restore tab showing PO diff view with revert function
97 5. Showing access to translations by installed language
98 6. Suggestion feature showing results from several providers
99
100
101 == Changelog ==
102
103 = 2.7.2 =
104 * DeepL client moved to back end due, because CORS
105 * Rolled in support for OpenAI / ChatGPT translation
106 * Workaround for JSON file references with no line number
107 * Bumped WordPress compatibility to 6.7.2
108
109 = 2.7.1 =
110 * Debug logging of unloaded domains reduced to a summary
111
112 = 2.7.0 =
113 * Raised minimum requirements to WordPress 6.6
114 * Minimum PHP version becomes 7.2.24 as per WordPress 6.6
115 * Locale-filtered bundle list now searches for base language
116 * Loading helper forcefully removes prematurely loaded text domains
117 * Machine translation hooks now have access to message context
118 * Persistent UI state for code view and invisible character modes
119
120 = 2.6.14 =
121 * Critical fix: A relative path passed to `load_textdomain` no longer throws exception.
122
123 = 2.6.13 =
124 * Fix for direct calls to load_textdomain with custom paths
125 * This resolves a regression in 2.6.12
126
127 = 2.6.12 =
128 * Major fix to custom load_textdomain loader. Works when original file is absent
129 * Fixed bug in template comparison when JSON files need to be merged
130 * CSS fixes including reinstating of unsaved "star" icon
131 * Domain listener fixed for JIT loading
132 * Bumped WordPress compatibility to 6.7
133
134 = 2.6.11 =
135 * Removed accidental console trace
136 * Bumped WordPress compatibility to 6.6.0
137 * Added lang_dir_for_domain fix to handle system file absence
138
139 = 2.6.10 =
140 * Added loco_api_provider_{id} filter
141 * JSON compiler observes configured .js aliases
142 * Fixed a missing security check - thanks Nosa Shandy
143 * Added .blade.php tokenizer hack
144 * Bumped WordPress compatibility to 6.5.4
145
146 = 2.6.9 =
147 * Rolled back load helper changes
148 * Moved debug messages to action hooks
149 * String debugger improvements
150
151 = 2.6.8 =
152 * Added string debugger
153 * Added Zip download button instead of MO
154 * Added debug messages about premature domain loading
155 * Added warning when system translations not installed
156 * Compiler avoids writing empty JSON translation files
157 * UI promotes PO copy over msginit/xgettext routes
158 * Populating msginit fields when copying a PO
159 * Bumped WordPress compatibility to 6.5.3
160
161 = 2.6.7 =
162 * WordPress 6.5.0 compatible
163 * Support for performant translation files in PHP format
164 * Added block.json and theme.json extraction
165 * Added theme pattern files to php string extractor
166 * Fixed a bug where unused plural forms were counted as untranslated
167 * Replaced CSS .notice with .panel to mitigate nag-blocker problems
168 * Removed bundle debug screen (deprecated since 2.6.5)
169 * Workaround for absent "source" references in JED files
170 * Extension polyfills now restricted to Loco admin screens.
171
172 = 2.6.6 =
173 * Replaced open_basedir check with error capturing
174
175 = 2.6.5 =
176 * Added syntax checking function
177 * Removed deepl_api_url config. Free API detected from :fx key suffix.
178 * Fixed bug in relative path calculations
179 * Fixed API suggestions for plural forms
180 * Fixed bug clearing unsaved state icons
181 * Added total strings count to PO file tables
182 * Sharper flags and spinners (@x2 pixel support)
183 * Handling upload_tmp_dir values outside of open_basedir
184 * Suppressing E_WARNING when testing file is_readable
185 * Bundle debug screen is deprecated (moving into Setup)
186 * Showing System Diagnostics when debug is off
187 * Bumped WordPress compatibility to 6.3.1
188
189 = 2.6.4 =
190 * Bumped WordPress version to 6.1.1
191 * Dropped support for Internet Explorer
192 * Updated JavaScript to ECMAScript 6
193 * Added `loco_bundle_configured` hook
194 * Fixed error icon not clearing after correction
195
196 = 2.6.3 =
197 * Fixed bug in plural forms comparison
198 * Fixed bug generating author theme jsons
199 * Fixed errors in bundle debugger
200 * Extended cli type argument to filter specific bundle
201 * Bumped WordPress version to 6.0.3
202
203 = 2.6.2 =
204 * Bumped WordPress version to 6.0.0
205 * Better labelling of reverse-engineered plural forms
206 * Removed undocumented loco_locale_plurals filter; use loco_po_headers
207 * Added PO folder location indicator in breadcrumb
208 * Added syntax validation for formatted strings
209
210 = 2.6.1 =
211 * Bumped WordPress version to 5.9.2
212 * Fix for CVE-2022-0765 reported by Taurus Omar via wpscan
213
214 = 2.6.0 =
215 * Dropped support for WordPress < 5.2
216 * Code upgrades for >= PHP 5.6.20
217 * Bumped WordPress version to 5.9.1
218 * Removed Yandex API integration
219 * Added loco_compile_script_reference filter
220 * Plural-Forms retained when copying PO to same language
221
222 = 2.5.8 =
223 * Compatible with PHP 8.1
224 * Bumped WordPress version to 5.9
225 * Added deprecation warning prior to v2.6
226
227 = 2.5.7 =
228 * Fixed bug in 2.5.6 where remote APIs could not be used in batch mode
229 * Enforcing 10k character limit per request for Microsoft and Yandex Translators
230 * Style fix for revision/diff table under restore tab
231
232 = 2.5.6 =
233 * Added loco_api_provider_source filter
234 * Fixed bug loading user preferences saved in older version
235 * Refactored file finder to avoid recursive function calls
236 * Fixed bug displaying two forms for zero plural languages
237 * Added Lecto AI to translation API providers
238 * Bumped WordPress version to 5.8.3
239
240 = 2.5.5 =
241 * Fixed double file extension vulnerability reported by WordFence
242 * Better performance when scanning directories for file types
243
244 = 2.5.4 =
245 * Fixed vulnerability reported by Tomi Ashari via wpscan
246 * Added filters loco_po_headers and loco_pot_headers
247 * Bumped WordPress version to 5.8.1
248
249 = 2.5.3 =
250 * Adds option to merge JSON translations when syncing from PO
251 * Adds screen for editing file headers and sync options
252 * Fix for missing responseText in failed Ajax responses
253 * Fix for HTML entities returned from `number_format_i18n`
254 * Localized number formatting in JavaScript
255 * Replaced usage of date_i18n with wp_date
256 * Added configurable API endpoint for DeepL
257 * Bumped WordPress version to 5.7.2
258
259 = 2.5.2 =
260 * Added implied formality and loco_locale_formality filter
261 * Added cli fetch command (experimental)
262 * Bumped WordPress version to 5.7
263
264 = 2.5.1 =
265 * Support for new Yandex translate API
266 * Support for DeepL formality parameter
267 * Removed literal "1" and "one" instances from singular strings
268 * Buffering compiled JSON to support strings from multiple sources
269 * Added `loco_compile_single_json` filter for specifying custom JSON
270 * Added `loco_extracted_template` hook for adding custom strings
271 * Sync no longer removes the editor's current text filter
272 * Bumped WordPress version to 5.6.2
273
274 = 2.5.0 =
275 * PHP 8.0.0 compatibility
276 * Bumped WordPress version to 5.6.0
277 * Added JSON translation file generation
278 * Added custom JSON loading to LoadHelper
279 * Disabled emoji image replacement on our admin screens
280
281 = 2.4.6 =
282 * Fixed critical bug syncing PO directly to source code
283 * Added plugin setting for allowing/disallowing missing POT
284 * Fixed WP5.5 issue with multiple ID attributes on script tags
285
286 = 2.4.5 =
287 * Added WP-CLI sync and extract commands
288 * Fixed {locale} placeholder bug introduced in 2.4.4
289 * Improved handling of invalid character encodings
290 * Sync (msgmerge) moved to back end
291 * New fuzzy matching with fuzziness setting
292 * Bumped WordPress version to 5.5.3
293
294 = 2.4.4 =
295 * Added PO file upload feature
296 * Added download button to file info page
297 * Fix for extracting plurals also used as singulars
298 * Updating API keys no longer require editor page reload
299 * Catching fatal startup errors in loco.php
300 * Supporting max_php_size=0 to mean no size restriction
301 * Auto-update detection now checks new site options
302 * Bumped WordPress version to 5.5.1
303
304 = 2.4.3 =
305 * Improved fix for default syncing of msgstr fields
306 * Reverted accidental removal of js debug flag
307 * Minor fixes to API error messages
308 * Removed use of jQuery.browser
309 * Bugfix for new preferences in usermeta
310
311 = 2.4.2 =
312 * Added loco_file_written hook
313 * Improved script tampering warning
314 * Added keypress for selecting auto-suggestion
315 * Sync no longer copies msgstr fields by default
316 * Style tweaks for WordPress 5.5
317
318 = 2.4.1 =
319 * Fixed mapping of some API languages
320 * Added locale filter to user preferences
321 * Added debugging for credential form failures
322 * Fixed deprecated use of array_key_exists
323 * Added DeepL API service provider
324 * Improved script tampering detection
325 * Bumped WordPress version to 5.5
326 * Added "modern" skin styles
327
328 = 2.4.0 =
329 * Added support for third party translation APIs
330 * Added file references to editor source pane in code view
331 * Added fuzzy matching during editor Sync operation
332 * Style changes including rearrangement of editor buttons
333 * Elevated warnings when scripts are tampered with
334 * Removed remnants of legacy version 1.x
335
336 = 2.3.4 =
337 * Updated translatable strings
338 * Added missing template recommendation
339 * Alerting in debug mode when scripts are tampered with
340 * Fix for Hello Dolly being installed into a folder
341 * Removed translation column in POT edit mode
342 * Added setting to prevent 'translating' of POT files
343 * Enabled some linkable translations using wp_kses
344 * Bumped WordPress version to 5.4.1
345
346 = 2.3.3 =
347 * Fixed fatal error when class not found
348
349 = 2.3.2 =
350 * Removed login/email from default Last-Translator credit
351 * Bumped WP compatibility to 5.4
352 * Fixed PHP 7.4 deprecations
353
354 = 2.3.1 =
355 * Default POT getter now looks in "lang" directory
356 * Not calling deprecated magic quotes functions under PHP 7.4
357 * Fixed issue with conflicting page hooks
358 * Ajax file uploads now enabled by default
359 * Removed legacy option migrations from 1.x branch
360 * Bumped WP compatibility to 5.2.4
361
362 = 2.3.0 =
363 * Added experimental support for multipart uploads
364 * Added relocation tab for moving translation sets
365 * Creation of missing directories when writing new files
366 * Fixed duplicate file addition when iterating over symlink
367 * Bumped WP compatibility to 5.2.1
368
369 = 2.2.2 =
370 * Security fixes as per [exploit-db 46619](https://www.exploit-db.com/exploits/46619)
371 * Fixed old PHP version error in data files
372 * Bumped WP compatibility to 5.1.1
373
374 = 2.2.1 =
375 * Fixed bug where plural tabs not displaying RTL
376 * Various improvements to PO parser incl. better charset handling
377 * Excluding node_modules and vendor directories by default
378 * Transients now have maximum lifespan of 10 days, refreshed after 24h
379 * Symlink fix for followed theme paths detected outside theme
380 * Deprecated config repository lookup
381 * Bumped WP compatibility to 5.1
382
383 = 2.2.0 =
384 * Fix for empty language code when getting plural rules
385 * Added X-Loco-Version header to generated Gettext files
386 * Added sanity check for mbstring.func_overload madness
387 * Added "Assign template" link on missing template page
388 * Added JavaScript string extraction (experimental)
389 * Editor supports sprintf-js when javascript-format tag present
390 * Fix for duplicate comments when end punctuation differs
391 * Marking msgctxt more clearly in editor views
392 * Added `loco_admin_shutdown` action hook
393 * Bumped WP compatibility to 5.0 (beta)
394
395 = 2.1.5 =
396 * Updated locale data
397 * Minor fix to file reference resolution
398 * Fixed windows paths with trailing backslash
399 * Fixed ssh-keys toggling issue
400 * Rejigged buffer handling during Ajax
401 * Bumped WP compatibility to 4.9.8
402
403 = 2.1.4 =
404 * Bumped WP compatibility to 4.9.6
405 * Hooked in privacy policy suggestion
406
407 = 2.1.3 =
408 * Added loco_locale_name filter and updated locale data
409 * Fixed editor column sorting to update as values change
410 * Supporting RTL text in editor preview rows
411 * Minor refactor of debug mode routing check
412 * Minor PO parser improvements
413 * Bumped WP compatibility to 4.9.5
414
415 = 2.1.2 =
416 * Fixed undeclared property in admin hook
417 * Fixed incompatibility with older WordPress
418 * Fixed incorrect millisecond reporting in footer
419 * Removed locale progress column for en_US locale
420 * Tweaks to debugging and error logging
421
422 = 2.1.1 =
423 * Setting `Project-Id-Version` on new POT files
424 * Added source view to quick links in file tables
425 * Supporting only WordPress style locale codes
426 * Editor screen tolerates missing PO headers
427 * Ajax debugging improvements for issue reporting
428 * Added loco_parse_locale action callback
429
430 = 2.1.0 =
431 * Add `fs_protect` setting to avoid overwriting system files
432 * Fixed bug in connect dialogue where errors not redisplayed
433 * Minor improvements to inline notices
434 * Removed downgrade notice under version tab
435 * Fixed extraction bug where file header confused with comment
436 * Resolved some inconsistencies between PHP and JS utilities
437 * Added Restore tab with diff display
438 * Added `loco_settings` hook
439 * Prevented editor from changing PO document order
440 * Added default string sorting to extracted strings
441 * Added "Languages" section for grouping files by locale
442 * Fixed bug where translations loaded before user profile language set
443 * Added loco_locale_plurals filter for customising plural rules
444 * Allowing PO files to enforce their own Plural-Forms rules
445 * Added `loco_allow_remote` filter for debugging remote problems
446 * Updated plural forms from Unicode CLDR
447 * PHP extractor avoids repeated comments
448 * Bumped WP compatibility to 4.9.4
449
450 = 2.0.17 =
451 * Unofficial languages showing in “Installed” dropdown
452 * Fixed extraction bug where comment confused with file header
453 * Fixed issue where src attributes requested from server during HTML strip
454 * Added loco_admin_init hook into ajax router for consistency
455 * Added warning on file info page when file is managed by WordPress
456 * Minor help link and layout tweaks
457 * Bumped WP compatibility to 4.9.1
458
459 = 2.0.16 =
460 * File writer observes wp_is_file_mod_allowed
461 * Fixed progress bug in editor for locales with nplurals=1
462 * Made plural form categories translatable for editor UI
463 * Sync-from-source raises warning when files are skipped
464 * Added hack for extracting from .twig as per .php
465 * Added warning when child themes declare parent text domain
466 * Added option to control PO line wrapping
467 * Bumped WP compatibility to 4.8.2
468
469 = 2.0.15 =
470 * Permanently removed legacy version 1.x
471 * Fixed bug where editor code view was not redrawn on resize
472 * Fixed bug where fuzzy flag caused format flag to be ignored
473 * Fixed bug where autoloader responded to very long class names
474 * Purging WP object cache when active plugin list changes
475 * Added experimental source word count into POT info tab
476 * Bumped WP compatibility to 4.8.1
477
478 = 2.0.14 =
479 * Editor improvements inc. column sorting
480 * Added warnings that legacy version will be removed
481 * Added PO source view text filtering
482 * Added _fs_nonce for 4.7.5 compatibility
483 * Migrated to canonical text domain
484 * Removed wp class autoloading
485
486 = 2.0.13 =
487 * CSS conflict fixes
488 * Added option for UTF-8 byte order mark
489 * Printf highlighting observes no-php-format flag
490 * Fixed issue with translator role losing “read” permission
491
492 = 2.0.12 =
493 * Minor fix for root path configs
494 * Added alternative PHP extensions setting
495 * Bumped WP version to 4.7.3
496 * LoadHelper fix for core files
497 * Allow revoking of permissions from translator role
498 * Allow network admins to deny access to site admins
499
500 = 2.0.11 =
501 * Extra debug logging and error diagnostics
502 * Forcefully clear output buffers before Ajax flush
503 * Bumped WordPress version to 4.7
504 * Experimental wildcard text domain support
505
506 = 2.0.10 =
507 * Allows missing domain argument in plugin_locale filter
508 * Reverted editor changes that disabled readonly text
509 * Added invisibles and coding editor switches
510 * Added table filtering via text query
511 * Added Last-Translator user preference
512
513 = 2.0.9 =
514 * Bumped minimum WordPress version to 4.1
515 * Some optimisation of transient caching
516 * Fixed hash table settings bug
517
518 = 2.0.8 =
519 * Source refs fix for files in unknown subsets
520 * Downgrades PO formatting exceptions to PHP warnings
521 * Renamed function prefixes to avoid PHP 7 warnings
522 * Better support for php-format and no-php-format flag
523 * PO source and editor UI tweaks
524 * Localised strings and implemented in js
525
526 = 2.0.7 =
527 * Fixed prototype.js conflict
528 * More Windows file path fixes
529 * Added loco_current_translator filter
530 * Fixed false positive in extra files test
531
532 = 2.0.6 =
533 * PO wrapping bugfix
534 * Downgraded source code bugfix
535 * Tolerating headerless POT files
536 * Core bundle metadata tweaks
537
538 = 2.0.5 =
539 * Deferred missing tokenizer warning
540 * Allows editing of files in unconfigured sets
541 * Added maximum PHP file size for string extraction
542 * Display of PHP fatal errors during Ajax
543
544 = 2.0.4 =
545 * Reduced session failures to debug notices
546 * Added wp_roles support for WP < 4.3
547 * Fixed domain listener bugs
548
549 = 2.0.3 =
550 * Added support for Windows servers
551 * Removed incomplete config warning on bundle overview
552
553 = 2.0.2 =
554 * Fixed bug when absolute path used to get plugins
555 * Added loco_plugins_data filter
556 * Added theme Template Name header extraction
557 * Minor copy amends
558
559 = 2.0.1 =
560 * Added help link in settings page
561 * Fixed opendir warnings in legacy code
562 * Catching session errors during init
563 * Removing meta row link when plugin not found
564
565 = 2.0.0 =
566 * First release of completely rebuilt version 2
567
568
569 == Upgrade Notice ==
570
571 = 2.7.2 =
572 * Various improvements and bug fixes
573
574
575
576 == Keyboard shortcuts ==
577
578 The PO file editor supports the following keyboard shortcuts for faster translating:
579
580 * Done and Next: `Ctrl ↵`
581 * Next string: `Ctrl ↓`
582 * Previous string: `Ctrl ↑`
583 * Next untranslated: `Shift Ctrl ↓`
584 * Previous untranslated: `Shift Ctrl ↑`
585 * Copy from source text: `Ctrl B`
586 * Clear translation: `Ctrl K`
587 * Toggle Fuzzy: `Ctrl U`
588 * Save PO / compile MO: `Ctrl S`
589 * Toggle invisibles: `Shift Ctrl I`
590 * Suggest translation: `Ctrl J`
591
592 Mac users can use ⌘ Cmd instead of Ctrl.
593