
WakaLang is a lightweight multilingual plugin for WordPress sites that publish manually translated content. It keeps the current language stable through clean URL prefixes such as /en/about/ and /ja/about/, then helps you connect translated posts, terms, menus, navigation blocks, SEO metadata, and hreflang output.
The free plugin is complete for manual multilingual publishing and makes no external network calls.
Free features
- Register the languages your site offers (code, locale, names, URL prefix, default).
- URL-prefix routing: every page is reachable under each language prefix (
/en/…,/ja/…), with the prefix as the single source of truth for the active language. - A language switcher with automatic header/footer placement, an editor block, the
[wakalang_switcher]shortcode, and thewakalang_language_switcher()template function — with optional flags rendered as Unicode emoji (no external requests). hreflangalternate links (and an optionalx-default) for translated content. Ifx_default_urlis left empty, WakaLang derives it from the current page’s default-language URL.- Internal links, menu links, the site/home link, and block-theme (FSE) navigation all keep the current language’s URL prefix.
- Link posts, pages, and taxonomy terms into translation groups from a post or term editor, and create draft translations.
- Archive, search, RSS/Atom feeds, and the core
wp-sitemap.xmlare scoped to the current language. - Translate taxonomy terms (category, tag, custom taxonomy) with per-language name and slug.
- Manage a per-translation SEO title and meta description, handed to WordPress core and to Yoast / Rank Math (their own meta is never touched).
- Translate the site title, tagline, date/time display format, week start day, logo, and site icon per language.
- Optionally show a small “this page is also available in English” bar to visitors whose browser language differs from the page — the visitor’s own browser decides (JavaScript), so automatic redirects are never used and page caching keeps working. Off by default.
- Every page’s
<html lang>and, for a right-to-left language,dir="rtl"are guaranteed directly from the language registry — independent of whether a language pack is installed. - Review translation coverage, maintenance checks, FAQ, troubleshooting, support routes, and system information inside wp-admin.
Privacy
WakaLang does not call any external service, does not track visitors, and stores no personal data. It runs entirely on your own site.
Third Party Services
WakaLang Free does not connect to any third-party service, CDN, telemetry endpoint, license server, or translation API. It serves its assets from your WordPress site and performs language routing locally.
Optional add-on
A separate paid add-on is planned for AI-assisted, Markdown-safe translation using an administrator-provided API key, glossary, translation memory, and differential translation. The free plugin contains none of that add-on code and works fully without it.
Try it first
Use the Live Preview button on this plugin page to try a bilingual (Japanese/English) demo of WakaLang in WordPress Playground — no install required.
Getting started
After activation, open WakaLang Languages, add your languages, set the default language, open WakaLang Settings to choose switcher placement, then use the WakaLang editor panel to assign languages and link translated versions. The full user manual is inside WakaLang Guide.
Source Code
WakaLang ships as readable PHP; the only compiled asset is the block editor script.
assets/blocks/language-switcher/build/index.jsis the compiled Language Switcher block editor script. Its human-readable source ships in this plugin underassets/blocks/language-switcher/src/(index.js,edit.js,block.json).
To rebuild it, install Node.js, run npm install, then npm run build:blocks (which runs @wordpress/scripts). No other plugin code is minified or generated by a build tool.
Screenshots

Language registry with setup guidance and controls for editing, enabling, and ordering languages.

Sectioned language switcher settings for display, style, placement, and the admin-bar menu.

Post editor translation panel for assigning a language and linking translated versions.

Front-end flag-and-name language switcher output on a prefixed page.

Language Switcher block options for labels, flags, style, and current-language visibility.