| 开发者 |
noricku
wakalab |
|---|---|
| 更新时间 | 2026年9月15日 12:19 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
/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
/en/…, /ja/…), with the prefix as the single source of truth for the active language.[wakalang_switcher] shortcode, and the wakalang_language_switcher() template function — with optional flags rendered as Unicode emoji (no external requests).hreflang alternate links (and an optional x-default) for translated content. If x_default_url is left empty, WakaLang derives it from the current page's default-language URL.wp-sitemap.xml are scoped to the current language.<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.Add your languages under WakaLang → Languages, set the default language, choose switcher placement under WakaLang → Settings, then assign languages and translation groups in the post or page editor.
Flush rewrite rules from WakaLang → Tools, clear page/object/CDN caches, and confirm you are viewing a URL with the expected language prefix.
Language assignments and translation groups are stored in a WakaLang database table, so a WordPress export (WXR) does not carry them. Move the content first, then use WakaLang → Tools → Import and export translation relationships on the old site to download the relationships and on the new site to import them. Objects are matched by post type and slug (never by ID), a preview reports what would happen before anything is written, and rows that cannot be matched are listed with a reason.
WakaLang translates your content, URLs, and the site's core "face" fields (site title, tagline, date/time display, logo, and site icon). It does not scan or translate the gettext strings built into themes and plugins (button labels, widget titles, form messages). Install a WordPress language pack for each language under Settings → General to translate those automatically. For strings without an official translation, hand-edit them with a dedicated string-translation plugin such as Loco Translate — a complementary tool that WakaLang never installs or changes for you. WakaLang and Loco Translate share the work rather than duplicating it.
Yes in normal setups. If root browser-language detection is enabled, exclude the bare site root (/) from full-page caching, host cache, and CDN cache, or turn that detection off in WakaLang → Settings. Prefixed URLs such as /en/ and /ja/ remain safe to cache normally because the URL prefix is the language source of truth. Clear caches after changing URL, menu, or switcher settings.
WakaLang Free is complete for manual multilingual publishing. WakaLang Pro is a separate add-on for licensed AI-assisted translation workflows and is not bundled in the free WordPress.org plugin.
Use the WordPress.org support forum for WakaLang Free. Do not post license keys, API keys, account details, payment information, or refund requests in public forum threads; use the Pro support route shown inside the plugin when applicable.
No. WakaLang Free makes no external network calls, does not use a CDN, does not include telemetry, and does not perform license checks.
Yes. Every page's <html> tag gets a lang attribute and, for a right-to-left language, dir="rtl", guaranteed directly from your configured language registry rather than from WordPress's own installed language packs — so it is correct even before you install that language's translation files. This covers WCAG success criteria 3.1.1 (Language of Page) and 3.1.2 (Language of Parts) for the language-of-page/switcher parts of your site. The language switcher also marks each right-to-left language's link with dir="rtl".
To stay lightweight, WakaLang does not include a visual front-end translation editor, a full theme/plugin string-scanning panel, media/attachment translation, translated or shared slugs, per-language domains or subdomains, WooCommerce or page-builder specific integrations, translation-agency workflows, multisite language networks, or a visitor-facing machine-translation widget. The URL prefix stays the source of truth for the current language, WordPress slugs stay canonical, and no translation credits are sold.
The additional database queries, autoload option payload, and TTFB impact WakaLang adds to a front-end page load are measured with a reproducible script and published at https://github.com/my-biz-dev/wakalang/blob/main/docs/benchmarks/frontend-performance.md — run it yourself against the project's local verification stack to confirm the numbers. For hosting recommendations (a persistent object cache, page-cache interaction) see https://github.com/my-biz-dev/wakalang/blob/main/docs/performance.md.
docs/COMPATIBILITY_POLICY.md defines hooks / REST / Abilities / GraphQL / WP-CLI as versioned public API (semver, two-minor deprecation via _deprecated_hook(), Abilities schema rules). New stable hooks: wakalang_root_language_detected, wakalang_language_url_prefix, wakalang_language_switcher_items, wakalang_translation_unlinked, wakalang_settings_schema. wakalang_hreflang_entries is now stable (wakalang_canonical_url already was, Issue #711). Track A pins the surface in tests/Fixtures/public-api-snapshot.json. WakaLang Pro cancels automation jobs on unlink; WPGraphQL urlPrefix uses the public prefix filter.AiTranslationPage → controller / view / CSV exporter / job diagnostics; TranslationCoordinator → kind translators over a shared pipeline; ReviewRepository → staging / guards / decisions. Dedicated Track A tests cover ProviderRequestSupport, BlockStructureValidator, glossary and translation-memory schema helpers, and table-driven auto-translation policy gates.wakalang_content_schema option and resolved by ContentSchemaRegistry as a fourth sibling source — code declarations (the wakalang_content_schema filter and wpml-config.xml) still win any conflict by the most-restrictive rule, and secret/auth keys stay locked to ignore in the UI. The same declarations are exposed as the content_schema key on wakalang/get-settings / wakalang/update-settings and as wp wakalang settings get --field=content_schema / --content_schema=<json>.wakalang_menu_sync_label filter (the Pro AI hook-in), and hand-edited labels preserved on re-runs (the sync only relabels items whose label still matches what it last wrote). Re-runs apply a diff (add / delete / re-parent / reorder, keyed by a source-item marker meta) without touching items the user created inside a generated menu; a dry-run preview reports the changes before anything is written (PRG, per-user report), generated menus are proposed for the source menu's theme locations via the per-language MenuLocations store, and block themes get the same operation over wp_navigation posts with results registered for the front-end NavigationRefs language swap.banner_message override to the Tools String translations panel._wakalang_structure_check post meta. The Translation Hub, Gutenberg sidebar, and classic meta box show a warning (never a publish block) such as "1 missing link"; Hub CSV adds a Structure column per language. WakaLang Pro's QA Engine is not used.Plugin::boot() into per-request-type Bootstrap\{Core,Frontend,Admin,Cli,Abilities}Registrar classes (Issue #721): admin/CLI/abilities-only services are no longer generated on a plain front-end render (a front boot drops from 110 to 63 loaded WakaLang\ classes), and the shared services admin, CLI and the abilities surfaces consume are built once through a memoised Bootstrap\Container exposed by Plugin::container(). The boot sequence is behaviour-preserving; every hook still registers exactly as before.HomeUrlFilter, LinkFilter, PostsCacheInvalidator, Options, SettingsSchema, and Pro's ChunkResumeStore) expose reset_for_tests(), and WakaLang\Testing\StateReset clears them in every test's set_up() so Track B results can no longer depend on class statics leaking across tests.<html lang>/dir directly from the language registry (not the installed language pack), add a dir="rtl" to right-to-left language switcher links, and add a Multilingual Doctor check for language attribute misconfiguration.?wakalang_switch_language= flow is kept for backward compatibility.