plugin-icon

SysOpenLang

A free, community-first multilingual foundation for WordPress.
Version
1.20.36
Last updated
Sep 29, 2026

SysOpenLang is free software for managing translated WordPress content from one installation. Core translation features work without an external account.

Stable supported features:

  • Languages, locales, pretty /en/ URLs, query fallback, language switcher, and translated redirects.
  • A catalog of more than 60 languages plus custom languages, native names, locales, flags or symbols, and RTL direction.
  • Directory, query-parameter, or per-language domain URL modes.
  • Configurable public visibility, administration locale, browser redirect, footer switcher, and missing-translation behavior.
  • Pages, posts, public custom post types, categories, tags, and custom taxonomies.
  • A unified Media Library without translated attachment copies, plus an optional media-per-language mode for editors and visual builders.
  • One-click translation drafts with translated hierarchy and taxonomy mapping.
  • Block-level Gutenberg translation for native, nested, reusable, dynamic, and third-party block content.
  • Elementor text extraction through a public builder-extractor API.
  • Safe automatic discovery of structured visual-builder metadata with stable element identities and a read-only field inspector.
  • Translation workflow statuses and outdated-source detection.
  • Per-language menu assignment for registered theme locations.
  • Language-aware public archives, searches, canonical URLs, hreflang, x-default, and sitemap entries.
  • String registration, plural helper, editing, and optional gettext discovery.
  • Pluggable machine-translation providers and a consent-based background job queue.
  • WooCommerce product, variation, attribute-term, inventory, download, dimension, and related-product synchronization without duplicating SKUs.
  • Portable JSON import with validation, conflict preview, automatic backup, and rollback, plus REST endpoints, WP-CLI commands, diagnostics, object caching, privacy text, and multisite-safe per-site tables.
  • A first-run assistant plus centralized controls for translation creation, review, automatic jobs, permissions, notices, SEO, discovery, maintenance, and uninstall behavior.
  • Data preservation on uninstall unless permanent cleanup is explicitly authorized.

SysOpenLang does not send content to a translation service unless an administrator configures a provider and explicitly starts an automatic translation job. See External services below before enabling a provider.

Developer API

SysOpenLang\register_string( 'footer_title', 'Contact us', 'theme' ); SysOpenLang\translate_string( 'footer_title', 'Contact us', 'theme' ); SysOpenLang\translate_plural( 'item', 'items', $count, 'Item', 'Items', 'theme' ); SysOpenLang\translated_post_id( get_the_ID(), 'es' ); SysOpenLang\translated_term_id( $term_id, 'es' ); SysOpenLang\set_menu_translation( 'primary', 'es', $menu_id );

Provider integrations implement SysOpenLang\Contracts\Translation_Provider and register through SysOpenLang\register_provider() or the sysopenlang_translation_providers filter.

Builder integrations implement SysOpenLang\Contracts\Content_Extractor and register on sysopenlang_register_content_extractors with SysOpenLang\Content_Extractors::register().

REST endpoints:

  • GET /wp-json/sysopenlang/v1/languages
  • GET /wp-json/sysopenlang/v1/translations/post/123
  • GET /wp-json/sysopenlang/v1/translations/term/45
  • POST /wp-json/sysopenlang/v1/jobs (authenticated editors)
  • GET /wp-json/sysopenlang/v1/diagnostics (administrators)

WP-CLI:

  • wp sysopenlang languages
  • wp sysopenlang export > sysopenlang.json
  • wp sysopenlang import --file=sysopenlang.json
  • wp sysopenlang diagnostics

Scope and compatibility

ACF and builders are supported through metadata policies. Complex components that store remote data or proprietary serialized structures may require a small adapter using the documented filters.

WooCommerce support covers translated product content, stable linked variations, translated global attribute terms, variation descriptions, and synchronized operational product metadata. Order localization, subscriptions, and third-party WooCommerce extensions require dedicated adapters and are not claimed as supported by this release.

External services

SysOpenLang can optionally send content selected for automatic translation to one configured provider. These integrations are disabled until an administrator adds their own API credential, selects that provider, and starts a translation job. SysOpenLang itself does not create provider accounts, collect provider payments, or receive the submitted content.

Depending on the selected provider, the plugin sends the source and target language identifiers, the human-readable content segments being translated, and an instruction to preserve structural markup. The configured API credential is sent only to that provider for authentication. Provider model-list requests send the credential but no site content. Review the applicable provider terms and privacy policy before use:

  • OpenAI API: https://api.openai.com/v1/models and https://api.openai.com/v1/responses. Terms and Privacy.
  • Anthropic API: https://api.anthropic.com/v1/models and https://api.anthropic.com/v1/messages. Terms and Privacy.
  • Google Gemini API: https://generativelanguage.googleapis.com/v1beta/models and its generateContent endpoint. Terms and Privacy.
  • Google Cloud Translation API: https://translation.googleapis.com/language/translate/v2. Terms and Privacy.

API credentials are stored encrypted in the WordPress options table when OpenSSL is available. Translation jobs and error summaries are stored in the site’s database. Site owners remain responsible for obtaining any required consent and for their provider account, billing, retention settings, and data-processing obligations.

Privacy

Without an enabled automatic-translation provider, SysOpenLang keeps language relationships, translated strings, settings, workflow status, and jobs in the local WordPress database. It does not include analytics or usage tracking. Administrators can copy the suggested disclosure added by SysOpenLang to WordPress’s Privacy Policy Guide and adapt it to the site’s actual configuration.

Removing the plugin preserves data by default to prevent accidental loss. Permanent cleanup can be authorized in SysOpenLang settings with an additional confirmation, or by defining SYSOPENLANG_REMOVE_DATA as true. Make a backup first.

Freeon paid plans
Tested up to
WordPress 7.1.2
This plugin is available for download for your site.