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