3,000+
September 10, 2026
June 3, 2011
A simple, powerful, and user-friendly plugin that adds multilingual support to your WordPress multisite installation, whether using multiple subdomains or folders. Multisite Language Switcher allows you to effortlessly manage translations for posts, pages, custom post types, categories, tags, and custom taxonomies.
The plugin uses flag icons from FamFamFam. Thanks to Mark James for his great work. In addition, I would like to thank Jürgen Mayer for creating the plugin’s banner.
Please, don’t forget to rate this plugin! 🙂
Thanks to all the translators for their great work.
You can translate this plugin on translate.wordpress.org, or if you prefer and have created your language pack, or have an update of an existing one, you can send me your Gettext PO and MO so that I can
bundle it into the Multisite Language Switcher. You can download the latest POT file
from here.
Settings -> Multisite Language SwitcherNow you can:
Posts -> Edit or Pages -> EditPosts -> Categories or Posts -> TagsAdd from Translation submenu, which lists everything that is not translated yet and can create translations in bulk (Quick Create, new in 3.0)<?php if ( function_exists( 'msls_the_switcher' ) ) msls_the_switcher(); ?> directly in your theme filesReview the Multisite Language Switcher Website for more information.
Developers will find the API functions, every action and filter, and a set of integration
snippets in the developer documentation.
You might read first WordPress in your language.
You can choose the language of the dashboard in the settings of your user profile.
It’s up to you – of course. But yes, if you want to use the Multisite Language Switcher.
The Multisite Language Switcher does not redirect the users automatically. I’m not sure if the plugin should do that.
Please check the add-on MslsMenu out.
Please check the add-on MslsSelect out.
Yes, you should use the WordPress API function get_locale() but you could also use code like that
$blog = msls_blog_collection()->get_current_blog();
$language = $blog->get_language();
The class behind it moved to lloc\Msls\Blog\Collection in version 3.0.0. The old name
lloc\Msls\MslsBlogCollection still resolves, so existing code keeps working.
Please visit the MSLS website or use the WordPress support forum for more information.
count_users() to detect the truncation, which removes a costly query from the settings page on blogs with many users.Add from Translation submenu (single and bulk). Backed by a REST endpoint and switchable in the settings.msls_quick_create_capability lets integrations override the Quick Create permission checks. Additional filters cover the post data, the inserted post, the REST response, the untranslated-posts list and the mapped taxonomy terms.docs/ – public API, every hook, integration snippets and the Playwright setup.lloc\Msls\ namespace is split into per-concern sub-namespaces. Every pre-3.0 class name (MslsOptions, MslsLink, MslsOutput, …) keeps working through a backwards-compatibility alias, so add-ons and custom code do not need changes.includes/api.php, and the $attr argument of msls_get_switcher() is now optional.home_url() fallback for taxonomy and query archives anymore.ABSPATH guards, Plugin Check and PHPCS findings addressed, a wp-env based local multisite and a Playwright end-to-end suite.msls_get_*, msls_the_switcher) with deprecation shims for the legacy names.aria-current="page" on the active language link.The full history is kept in the separate Changelog.
| Version | Download | Type |
|---|---|---|
| 3.0.3 | Download | Stable |
| 3.0.2 | Download | Stable |
| 3.0.1 | Download | Stable |
| 2.10.1 | Download | Stable |
| 2.10.0 | Download | Stable |
| 2.9.6 | Download | Stable |
| 2.9.5 | Download | Stable |
| 2.9.4 | Download | Stable |
| 2.9.3 | Download | Stable |
| 2.9.2 | Download | Stable |
| 2.9.1 | Download | Stable |
| 2.9.0 | Download | Stable |
| 2.8.2 | Download | Stable |
| 2.8.1 | Download | Stable |
| 2.8.0 | Download | Stable |
| 2.7.1 | Download | Stable |
| 2.7.0 | Download | Stable |
| 2.6.4 | Download | Stable |
| 2.6.3 | Download | Stable |
| 2.6.2 | Download | Stable |
| 2.6.1 | Download | Stable |
| 2.6.0 | Download | Stable |
| 2.5.11 | Download | Stable |
| 2.5.10 | Download | Stable |
| 2.5.9 | Download | Stable |
| 2.5.8 | Download | Stable |
| 2.5.7 | Download | Stable |
| 2.5.6 | Download | Stable |
| 2.5.5 | Download | Stable |
| 2.5.4 | Download | Stable |
| 2.5.3 | Download | Stable |
| 2.5.2 | Download | Stable |
| 2.5.1 | Download | Stable |
| 2.5 | Download | Stable |
| 2.4.12 | Download | Stable |
| 2.4.11 | Download | Stable |
| 2.4.10 | Download | Stable |
| 2.4.9 | Download | Stable |
| 2.4.8 | Download | Stable |
| 2.4.7 | Download | Stable |
| 2.4.6 | Download | Stable |
| 2.4.5 | Download | Stable |
| 2.4.4 | Download | Stable |
| 2.4.3 | Download | Stable |
| 2.4.2 | Download | Stable |
| 2.4.1 | Download | Stable |
| 2.3.0 | Download | Stable |
| 2.2.0 | Download | Stable |
| 2.1.1 | Download | Stable |
| 2.0.3 | Download | Stable |
| 1.0.8 | Download | Stable |
| 0.9.9.3 | Download | Stable |
| 0.8 | Download | Stable |
| 0.7.1 | Download | Stable |
| 0.6.8 | Download | Stable |
| 0.5 | Download | Stable |
| 0.4 | Download | Stable |
| 0.3 | Download | Stable |
| 0.2 | Download | Stable |
| 0.1 | Download | Stable |
| Development | Download | Trunk |