| 开发者 | szymon0zawadzki |
|---|---|
| 更新时间 | 2026年9月26日 17:22 |
| PHP版本: | 8.0 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/en/, /de/), multilingual SEO tags, and manual translation of your content, media and interface strings. You can add as many languages as you need, and no API key or license key is required.
How it works
Most multilingual plugins duplicate every post for every language, LATW stores a translation as an overlay rather than as a separate post: the original post is kept as it is, and the translated values are swapped in when a visitor opens the language URL. One post therefore stays one post in the database, whatever the number of languages.
What you get
hreflang, x-default, self-canonical, <html lang> and sitemap annotations.[latwm] shortcode, and latwm_switcher() PHP function./en/, /de/); your default language keeps its clean URLs with no prefix.hreflang + x-default, canonical URLs, <html lang>, and multilingual sitemap annotations..po/.mo), with "Sync from template" to pull in new strings after an update..po/.mo packs from WordPress.org for your themes and plugins, per bundle or for the whole site at once (useful for WooCommerce and Elementor, which ship no template file of their own)..po)./wp-content/plugins/, or install it from Plugins → Add New.[latwm] shortcode, or latwm_switcher() in your theme.Yes. The free edition is fully functional: switcher, /en/ URLs, the SEO tags and manual translation of content, media and theme/plugin strings - with unlimited languages and no API key.
No. Instead of creating a separate post per language, the original post is kept and the translation is stored as an overlay that is swapped in when the language URL is requested.
No. Because there is one post per URL and no heavy duplication, a site that scores 100 in Google PageSpeed before LATW still scores 100 after - in every language.
Not for the free version - manual translation requires no key. AI translation is a Pro feature and uses your own OpenAI key, so usage is billed directly to you.
No. LATW Multilingual is a standalone plugin. It is not a replacement or add-on for WPML or Polylang - install it on its own.
Yes. It supports Gutenberg and page builders for content, and works alongside SEO plugins such as Yoast SEO and Rank Math.
Text on a page comes from several places, and each is translated somewhere else: interface strings compiled into the theme or plugin (Translations - Themes & Plugins), category and tag names (the taxonomy tabs), menus and widgets (their own tabs), the content itself (the content tabs), and text stored in theme options (Translations - Theme options). A string that stays English usually just belongs to a layer you have not enabled yet.
Many themes and plugins ship a wpml-config.xml file listing which options, custom fields and block attributes hold front-end text. This plugin reads that file - the option paths from its admin-texts section, the custom fields and term fields marked action="translate", and the block attributes declared as <key> under gutenberg-blocks. Fields marked copy or ignore are skipped: in an overlay model an untranslated field already falls back to the original value, so there is nothing to do for them. Inside block declarations, <xpath> entries are not read - the text they address is HTML inside the page content, which is already translated with the content itself.
Your own file at wp-content/languages/wpml-config.xml is read too and takes priority over the theme's and plugins' files. Declarations by third parties are often incomplete, so you can also add single option keys by hand in Settings - Translation.
Meta Box settings pages need no declaration at all: their text fields are detected from the settings pages and field groups you built, and the page shows up on this tab under its option name. Only text, textarea and WYSIWYG fields are offered - a colour or a switch is not text. If a field you need is missing, add it in Settings - Translation as option_name:field_id.
Block-based screens render in JavaScript and read their strings from separate translation files rather than from the .mo. Saving a string in the editor now rebuilds those files as well, so the change applies on the next page load. If a particular string still does not follow, it usually belongs to a different layer - a page title is content, and some plugins store their labels in their own settings (see the Theme options tab).
Turn on Inspect translations in the admin bar and open your site. Clicking any text tells you which layer produced it - a theme or plugin string, a post, a term, a menu item, a widget or a theme option - and links to the screen that translates it. Text that is not translated yet is reported as such. The mode is administrator-only and nothing is added to a normal page load.
Yes. Product titles, descriptions and excerpts, variations, product categories and tags, attribute labels together with their terms, and the block-based cart and checkout are all covered. Interface strings such as "Add to cart" come from WooCommerce's own language pack - use Download packs on the Themes & Plugins tab to fetch it, then edit any string you want to change.
Yes, including Elementor Pro's Theme Builder. Builder pages are translated in the shadow editor, and Elementor's rendered-element cache is kept per language, so a page rendered first in one language is never replayed in another.
Yes, including the Divi Theme Builder and the Divi Library. Pages are translated in the Divi Visual Builder, and headers, footers and global modules are translated once and shown in that language on every page that uses them. Each language keeps its own module styles, so a translation styled differently never changes the original.
Some large plugins, WooCommerce and Elementor among them, ship no .pot and publish their translations on WordPress.org instead. Use the Download packs button at the top of the Themes & Plugins tab to fetch everything available for your languages in one go, and the strings become editable like any other.
Automatic AI translation: one-click bulk translation of the whole site, auto-translate on publish/update, AI translation of theme/plugin strings, a glossary and translation memory, a background queue and cost estimation.
/de/, /pl/) were never matched by the plugin's own routing rules. WordPress read the prefix as a folder and stripped it, so a bare /de/ answered with the front page and every other prefixed address resolved by coincidence rather than by design.wpml-config.xml) can now also declare shortcode attributes and nested custom-field text as translatable.localhost:8881), switching languages with the widget dropped the port from the link, breaking it.wpml-config.xml files shipped by themes and plugins, from your own file in wp-content/languages/, or added by hand..pot of their own, such as WooCommerce, Elementor and Elementor Pro._elementor_data broke the layout on builder pages, and markers inside a slug produced 404s.$wp_rewrite during early boot no longer throws.