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.