Build compatible themes and plugins

Do

  • Keep one canonical WordPress object and request its localized value.
  • Register stable public strings and supported content fields.
  • Carry an explicit locale into cron, queues, REST, AJAX, and email work.
  • Preserve HTML, printf, shortcode, and merge-tag placeholders.
  • Use localized URL helpers instead of manually adding prefixes.
  • Include locale in fragment and object cache keys.
  • Escape translated output for its final context.
  • Test missing translations and source fallbacks.

Do not

  • Create one duplicate post per language to satisfy an integration.
  • Read or write POM Translate custom tables directly.
  • Trigger remote translation from a visitor request.
  • translate IDs, tokens, classes, prices, or whole unknown JSON structures.
  • derive background locale from cookies or administrator preferences.
  • concatenate a language prefix onto an already localized URL.
  • cache multilingual output under a shared key.
  • expose license data, customer content, or translation payloads in logs.

Review

Deactivate POM Translate and confirm the integration still produces usable base-language output. Reactivate it and verify two languages in the same process or cache lifetime. The most common compatibility failures are leaked locale state, over-broad string extraction, damaged placeholders, and locale-neutral caches.