Loco Translate lets you translate any WordPress plugin built for translation, straight from your dashboard. A small plugin takes about 15 minutes: install Loco, add a language, save to the Custom folder, translate the strings and switch the site language.
We tested every step in this guide in October 2026 on our WordPress 7.1.3 test store with WooCommerce 11.2 and Loco Translate 2.8.9. We translated real WooCommerce buttons into Spanish, updated plugins to see which files survived, ran Sync and checked the files Loco writes to disk.
You will get the seven setup steps with screenshots, the Custom vs System vs Author test and where the new .l10n.php files land. We also cover Sync, plugins with no POT file, auto-translate, free vs Pro limits and the fixes for strings that refuse to show.
What Is the Loco Translate Plugin and What Does It Edit?
The Loco Translate plugin is a free translation file editor that runs inside WordPress admin. It edits the PO files that hold a plugin’s or theme’s built-in text and compiles the files WordPress reads. It does not translate posts, pages or anything else stored in your database.
Loco’s own introduction page puts it plainly: the plugin is a PO file editor, and installing it changes nothing on its own. It is built by Tim Whitlock.
As of October 2026 the Loco Translate listing on WordPress.org shows version 2.8.9 with more than 1 million active installs. It is tested up to WordPress 7.1.3.
These are the files you will meet while you work:
- POT file: The template the developer ships with every English string the plugin can show.
- PO file: The language file Loco edits with each source string next to your translation.
- MO file: The compiled binary copy of the PO file that WordPress has loaded for years.
- L10n.php file: The faster PHP format from WordPress 6.5 that Loco now writes on every save.
- JSON files: Translations for strings a plugin prints from JavaScript such as block buttons.
A plugin can only be translated when its developer wrapped the text in WordPress translation functions and registered a text domain. If either piece is missing, no translation tool can reach those words.
After activation, the Loco Translate menu holds six screens: Home, Themes, Plugins, WordPress, Languages and Settings. Plugins and Themes list every bundle Loco can read. The WordPress screen covers core strings, and Languages groups your files by locale instead of by plugin.
How to Use Loco Translate to Translate a WordPress Plugin
To use Loco Translate on a plugin, install it, open Loco Translate > Plugins and pick the plugin. Click New language and choose your language with the Custom location. Translate and save the strings before you switch the site language and check the front end.
We ran these seven steps on WooCommerce 11.2, translating three strings a shopper sees into Spanish (Spain). The same steps work for any plugin that ships a POT file, including the Pro plugins we build.
Step 1: Install and Activate Loco Translate
Go to Plugins > Add Plugin in your dashboard and search for “Loco Translate”. Click Install Now on the plugin by Tim W and wait for the button to change. Click Activate.
A new Loco Translate menu appears near the bottom of the admin sidebar. Loco needs WordPress 6.6 or newer and PHP 7.4 or newer, according to its WordPress.org listing.

Step 2: Open Loco Translate > Plugins
Click Loco Translate > Plugins to see every plugin Loco can read, with its text domain and the date its files last changed. Click the name of the plugin you want to translate.
On our store the list held WooCommerce, Classic Editor, Loco Translate itself and both editions of our Waitlist plugin. The Sets column shows how many translation sets Loco found for each one.

Step 3: Click New Language
The plugin’s Overview tab lists the language files that already exist and where each one lives. On a fresh store it reads “No translations found” for the plugin.
Click New language at the top of the tab. The Upload PO link next to it is for a file someone already translated, and Edit template opens the POT file itself.

Step 4: Choose the Language and the Custom Location
On our store the New language screen reported “14,354 strings found in woocommerce.pot” for WooCommerce 11.2. Pick your language from the WordPress language list, and choose Custom under “Choose a location”.
Custom was already selected by default on our store, which saves the file as languages/loco/plugins/woocommerce-es_ES.po. Click Start translating to create the file and open the editor.

Step 5: Translate the Strings and Save
Type a few words into “Filter translations” to find a string fast. Click the row to select it. Type your translation in the translation box at the bottom and move to the next string.
We translated “Add to cart” as “Añadir a la cesta”, “Default sorting” as “Orden predeterminado” and “Description” as “Descripción”. Click Save when you are done. Loco replied “PO file saved and MO/JSON files compiled”.
Watch the toolbar while you work. On our store, Sync and Auto went gray as soon as a translation was typed, and they came back after the save.
Loco will not merge or auto-translate a file with unsaved changes. Save first whenever you need either button.

Step 6: Switch the Site Language
Your translation only loads when WordPress runs in that language. Go to Settings > General, set Site Language to Español and click Save Changes.
WordPress downloaded the Spanish core language pack the moment we saved. Your own admin screens switch to Spanish too, unless you set a personal language in your profile.

Step 7: Check the Translated Strings on the Front End
Open a product page in a private window so you see what a shopper sees. Our button read “Añadir a la cesta” and the tab read “Descripción”, exactly as we typed them.
Before we installed the official WooCommerce Spanish pack, only our three strings changed and everything else stayed English. That is a quick way to prove the file loads.
The button’s hidden screen reader label is a separate string: Add to cart: “%s”. Search for it as well, or screen reader users still hear English. Changing button text this way also beats adding a custom Add to cart button in WooCommerce when you only want new words.

Custom vs System vs Author: Which Location Survives Updates?
Custom is the only Loco Translate location that survived our plugin update and a language pack install. Author files sit inside the plugin folder and were deleted when WooCommerce updated. System files live in the folder WordPress fills with official language packs, which can replace your edits.
We tested this instead of trusting the labels. We saved a Spanish file in Custom and a Hindi file in Author. Next we updated WooCommerce from 11.2.0 to 11.2.1 and looked at both folders.

After the update, the Hindi file and its compiled copies were gone from plugins/woocommerce/i18n/languages/. The Spanish Custom file was untouched, and the shop buttons still read “Añadir a la cesta”. The editor also warned us as soon as the Author file opened: “Changes to this file may be overwritten or deleted when you update WordPress”.
The language pack test was just as clear. The official WooCommerce Spanish pack translates “Add to cart” as “Añadir al carrito”. With that pack installed in System, our Custom wording still won, and every string we skipped came from the pack.
| Location | Folder | After a plugin update | Use it for |
|---|---|---|---|
| Custom | wp-content/languages/loco/plugins/ | Kept in our test | Every edit you make |
| System | wp-content/languages/plugins/ | Kept until a pack replaces it | Official language packs |
| Author | Inside the plugin folder | Deleted in our test | Plugin developers only |
Loco’s WooCommerce translation FAQ adds one more option for that plugin: WooCommerce’s own safe folder at wp-content/languages/woocommerce. Pausing language packs by disabling automatic updates in WordPress protects System files, but Custom avoids the problem without that trade-off.
Already saved files in Author or System? Open the file in Loco, click the Relocate tab and pick the Custom path. Loco moves the PO, MO and PHP files together and leaves nothing behind in the old folder.

Where Loco Translate Saves Its .l10n.php and .mo Files
Loco Translate saves Custom plugin files in wp-content/languages/loco/plugins/, named after the text domain and locale. Each save writes the PO file, a compiled MO file and a PHP file ending in .l10n.php. Plugins with JavaScript strings also get JSON files beside them.
This is the folder on our store after saving the WooCommerce Spanish file, with the JSON files trimmed from the list:
wp-content/languages/loco/plugins/ woocommerce-es_ES.po woocommerce-es_ES.mo woocommerce-es_ES.l10n.php woocommerce-es_ES-backup-202610270824320.po~ woocommerce-es_ES-0cab04d899898b549abdf367e66168ce.json
The .l10n.php file matters because of how WordPress loads translations now. The WordPress 6.5 performant translations note says that when an MO file has a matching .l10n.php file, “the latter will be loaded instead”. Loco added PHP file support in version 2.6.7, and our saved file held exactly our three Spanish strings.
The .po~ file is a backup Loco keeps before overwriting, and the Restore tab in the editor can bring it back. We also counted 15 JSON files, which carry the strings WooCommerce prints from JavaScript blocks.
Keep the whole set together when you move files by hand. Loco’s custom folder FAQ notes that moving only the .mo file may not work, and its Relocate tab moves every related file in one step.
Warning: If you edit a PO file in another tool and upload only a new MO file, an older .l10n.php file can keep winning. Open the file in Loco and save it once, which rebuilds all three files together.
How to Run Sync After a Plugin Update
Sync updates your Loco Translate file with the source strings in the plugin’s current template. Open the language file, click Sync, read the summary and click Save. New strings appear untranslated, removed strings drop out, and your existing translations stay.
Loco’s Sync documentation states that “Sync operations must be done manually” after updates. Nothing is written to disk until you click Save. A wrong result costs nothing.
We ran Sync twice. After the WooCommerce 11.2.1 patch it reported “Strings up to date with woocommerce.pot“, because that release changed no source text. For a real change, we built a Spanish file on Loco Translate 2.7.0, translated one string and updated the plugin to 2.8.9.

Before the Sync, the editor warned that the translations did not match the loco-translate.pot template. After it, Loco reported 14 new strings added and 3 obsolete strings removed, and the count went from 475 strings to 486.
Our one translated string was still in place after the merge. Strings whose English changed only slightly can be kept and marked Fuzzy for you to review. The tolerance for that match is a percentage you can change in Loco’s plugin settings, according to the same Sync page.
Tip: Run Sync on every language file after a major plugin update, before you go hunting for missing words on the front end.
Sites with many translated plugins can script the job. The Sync page notes that Loco has shipped WP-CLI commands for extracting and syncing since version 2.4.5. It still advises a backup first, because a bulk sync is no less error-prone than clicking each file.
How to Translate a Plugin With No POT File
A plugin with no POT file can still be translated when its code uses WordPress translation functions. Loco shows “Template missing” and offers Create template, which scans the code for strings. The safer route is copying an existing PO file in any language.
We tested this on Classic Editor 1.7.0, which ships no POT file. Clicking New language showed “This bundle’s template file doesn’t exist yet. We recommend you create it before adding languages.”

Create template found one source file and extracted 28 strings. The catch is where it saves the template: inside plugins/classic-editor/. The next plugin update deletes it along with the rest of that folder.
Your Custom translation survives the update, but the template has to be created again.
We then added Spanish in Custom and translated “Default editor for all users” and “Allow users to switch editors”. Both showed in Spanish on Settings > Writing, while the untranslated options stayed English.
Loco’s missing template FAQ calls template building “a feature for developers”. It recommends Copy on an installed PO file with “Just copy English source strings” ticked.
If the plugin is yours, add a POT file the way the plugin internationalization handbook describes. Our guide to creating a WooCommerce plugin follows the same text domain setup.
Site Language vs User Language: Loco Translate Is Not a Language Switcher
Loco Translate has no language switcher, and it never changes which language a visitor sees. WordPress picks the language from the Site Language setting, and each user can override it for their own admin screens. Visitors only switch languages through a multilingual plugin or custom code.
Loco’s own language switcher FAQ says the plugin “does not provide a language switcher” and has no plans to add one. Its translations follow whatever language WordPress is running.
That gives you two built-in controls. Site Language under Settings > General sets the front end for everyone.
The Language field under Users > Profile sets only your own admin screens. That is how we kept the dashboard in English while the store ran in Spanish.

A public switcher that lets shoppers pick English or Spanish needs a multilingual plugin such as Polylang, WPML or TranslatePress. Developers can also filter the locale hook. Our guide to building a multilingual WordPress site compares those options, and Loco still handles the plugin strings underneath.
The two tools work in layers. The multilingual plugin decides which locale a visitor gets, and WordPress then loads the matching translation files, including your Loco Custom files.
We did not install a multilingual plugin for this test. Check that its language codes match the files you create.
How Auto-Translate Works With API Keys
Loco Translate’s Auto button sends untranslated strings to a machine translation service and fills in drafts. It works with DeepL, Google Translate, Lecto AI, Microsoft Translator and OpenAI. You bring your own API key from that provider and pay its charges.
Keys go in Loco Translate > Settings > API keys. Each provider has a key field, Microsoft adds a region field, and OpenAI adds model and prompt fields. The model field on our store showed “gpt-4o-mini” as its placeholder.

We did not enter a paid key. With no key saved, clicking Auto opened a dialog titled “No translation APIs configured” that points to the settings page.
Loco’s automatic translation guide lists the risks. It says “API credentials are stored in your database as WordPress site options”. Anyone allowed to use Loco can run up charges on your account.
Google, Microsoft and Lecto requests run from the browser, and HTML or %s placeholders can come back broken.
The same guide puts the scale in numbers: Loco Translate itself holds about 13,000 characters of text. Each translation window also has a Suggest button for one string at a time. Review every result before you save it.
Is Loco Translate Free? Free vs Pro Explained
The Loco Translate WordPress plugin is free with no string limit and no account. The Free, Pro, Business and Agency plans on localise.biz belong to Loco’s separate cloud translation platform. Buying one unlocks no extra features in the WordPress plugin.
Loco’s accounts FAQ says it directly: “You don’t need an account and you don’t need to pay.” It adds that someone who paid for a Pro plan by mistake can cancel and get a refund.
These are the cloud platform prices from the Loco plans page in October 2026, in US dollars:
| Plan | Price | Translations included |
|---|---|---|
| Free | $0 | 2,000 |
| Pro | $5.95 a month | 5,000 |
| Business | $19.95 a month | 25,000 |
| Agency | $29.95 a month | 125,000 |
The plans count translations stored in projects on the Loco platform itself. A Loco account stays optional for the plugin. The FAQ also promises a version of the plugin that is always free to use.
The platform suits teams collaborating on translations outside WordPress. For one site, the free plugin does everything in this guide, and the only extra cost is a machine translation API you choose to connect.
Machine translation is where real costs appear. Loco’s provider guide recommends metered billing priced per million characters for light use. It notes that WordPress core holds about 300,000 characters, though most languages already have a finished core pack from WordPress.org.
Worked Example: Translating a DevDiggers Plugin
We build the WooCommerce Waitlist plugin, and we used its Pro build as a second test. All 26 of our Pro plugin folders ship a POT file in their i18n folder. Loco reads it the moment the plugin is active.
Waitlist Pro 2.0.0 ships i18n/devdiggers-waitlist-for-woocommerce.pot, and Loco found 518 strings in it. Its code loads the text domain on the init hook, which avoids the early loading notice WordPress 6.7 added. We added Spanish in the Custom location and translated the six strings on the out of stock form.

On an out of stock mug, the form read “Avísame cuando vuelva” with an “Avisarme” button. The note under it changed as well.

One limit applies to our plugin and to most plugins with editable labels. When we stored “Notify Me” as the button text setting, the button stayed English in Spanish.
Saved text lives in the database, which Loco cannot reach. Leave those fields at their defaults if you translate with Loco.
Loco Translate Not Working? Fixes From Our Test
When Loco Translate saves strings that never show, the cause is usually the server, the site language or the plugin’s own code. Our test hit two of these problems for real, and Loco’s FAQs cover the rest. Work down this list in order.
Our first save of the WooCommerce file failed with this message:

- Save fails on large plugins: The WooCommerce PO file is 2.2 MB, and our PHP limit was 2 MB. Raising
upload_max_filesizeandpost_max_sizefixed it, and our guide to finding the php.ini file in WordPress shows where. - Nothing changes on the site: Check that Site Language matches your file’s language. Clear your page cache, any CDN cache and your browser cache next.
- Custom files stopped loading after an update: Loco’s custom folder FAQ blames plugins that load translations too early. With debugging on, WordPress logs a notice that translation loading “was triggered too early”.
- A label stays English: Text you saved in a plugin’s settings sits in the database, as our Waitlist test showed. Clear the field to restore the translatable default.
- WooCommerce text stays English: Your theme may print its own copy of the string. Loco’s WooCommerce FAQ says to translate the theme’s file too.
- Translations reverted: The file was saved in Author or System. Use the Relocate tab to move it to Custom.
Where to Find the Loco Translate Documentation
The official Loco Translate documentation lives on localise.biz, the website of the company that builds the plugin. Its user manual, plugin FAQs and changelog cover every task in this guide in more depth. Bug reports and support questions go to the plugin’s forum on WordPress.org.
The Loco Translate user manual is organized by task: adding a language, using the editor, the Sync function, templates and automatic translation. The plugin FAQs answer the problems people post most, such as custom folder loading and WooCommerce strings.
Each page shows its last updated date, which helps when a WordPress release changes how translations load. Several pages still date from December 2024. Check the plugin’s changelog on WordPress.org for anything newer than that.
Conclusion
Loco Translate is still the simplest way to change a plugin’s text without code. Our tests on WordPress 7.1 backed up the advice that matters most. Save every file in the Custom location.
The Custom file survived a WooCommerce update and beat the official language pack, while the Author file was deleted.
Run Sync after each plugin update and look for the .l10n.php file next to your PO and MO files. For a shopper-facing language switcher, add a multilingual plugin, since Loco only edits the strings.
Frequently Asked Questions (FAQs)
Q1. Can Loco Translate translate posts and pages?
No. Loco Translate edits the built-in text of plugins, themes and WordPress core, which lives in PO files. Posts, pages, menus and settings live in the database and need a multilingual plugin.
Q2. Can I use Loco Translate to translate a plugin into English?
Loco treats every source string as English, because WordPress source text is meant to be English. If a developer wrote the source in another language, the editor still works. Auto-translate will fail, since APIs are told the text is English, according to Loco’s non-English source FAQ.
Q3. Does Loco Translate work with WooCommerce?
Yes. We translated WooCommerce 11.2 strings into Spanish and saw them on the product page. Its 2.2 MB PO file needs PHP size limits above 2 MB before the first save.
Q4. Can I translate a WordPress theme the same way?
Yes. Open Loco Translate > Themes instead of Plugins and follow the same steps. Choose Custom here too, since a theme update replaces files saved inside the theme folder.
Q5. Does Loco Translate slow down my site?
The only front-end job Loco does is merging your Custom file into the translation WordPress already loads, according to its introduction page. The editor and the API calls run in admin. WordPress then reads the faster .l10n.php file that Loco writes on every save.
Q6. What happens to my translations if I deactivate Loco Translate?
Your files stay on disk, but Custom files stop loading because Loco is the code that loads them, as its custom folder FAQ explains. Reactivate it and they return. System and Author files keep loading without Loco.
Q7. Can I edit an existing translation instead of starting from zero?
Yes. On the plugin’s Overview tab, hover over an installed language file and click Copy. Save the copy in Custom and change only the strings you want, and your wording wins over the original file.
