WHA Docs
Development

Translation

Multilingual support via Google Translate (client-side) or DeepL (server-side, cached). Built in, not currently enabled.

The site can translate its content through the yax-translate mu-plugin, in one of two modes. It's built in but not currently enabled: the language switcher is hidden in the nav (the markup is kept so it can be turned back on) and TRANSLATE_ENABLED is off. This page covers what's there and how to switch it on.

Two modes

ModeHow it worksSEO
Google Translate (google)Client-side, in the browser. No API key, no setup.Not separately indexed; translations exist only in the visitor's browser
DeepL (deepl)Server-side, rendered and cached. Higher quality, needs a DeepL API key.Indexable when URL routing is on: real /{lang}/ pages with hreflang and x-default

If multilingual SEO ever matters, DeepL with URL routing is the indexable path. Google Translate is the quick, no-cost option for accessibility without indexable translated pages. See SEO for how the multilingual setup affects search.

Configuration

Environment-driven, like the rest of the site (see Hosting):

VariableDefaultPurpose
TRANSLATE_ENABLEDfalseMaster switch
TRANSLATE_PROVIDERgooglegoogle or deepl
TRANSLATE_LANGUAGESes,ko,ru,uk,vi,zhOffered languages
TRANSLATE_URL_ROUTINGfalseDeepL only: serve translations at /{lang}/ paths so they can be indexed

DeepL mode also needs a DeepL API key in the environment. The default language set is Spanish, Korean, Russian, Ukrainian, Vietnamese and Chinese; adjust TRANSLATE_LANGUAGES to match the audience.

Enabling it

  1. Set TRANSLATE_ENABLED=true and choose TRANSLATE_PROVIDER.
  2. For DeepL, add the API key and, for indexable pages, set TRANSLATE_URL_ROUTING=true.
  3. Un-hide the language switcher in the nav. The markup lives in nav.meta.php, gated behind a flag and ready to re-enable.
  4. For DeepL, pre-warm the translation cache with the plugin's WP-CLI command so the first visitor doesn't wait on the API.

The plugin detects a visitor's preferred language from the URL, a cookie, or the Accept-Language header, and can show a banner suggesting their language.

Current state

Disabled. The switcher markup stays in the nav so turning it on is a small change rather than a rebuild, and there are no translated /{lang}/ URLs live today, so there's nothing multilingual for search engines to index right now.

On this page