Machine Translation
Translate content instantly with leading MT providers, then refine with human review.
Multiple Providers
Connect to DeepL, Google Translate, Microsoft Translator, or self-hosted LibreTranslate. Switch providers anytime without losing existing translations.
Auto-Translate on Publish
When you publish or create content, PerfLocale automatically sends it for machine translation. Results are saved as drafts for human review.
Glossary and Translation Memory
Define terms that should always be translated a specific way. Previously translated segments are reused automatically, reducing API calls and improving consistency.
Usage Controls
Set monthly character limits to control API costs. PerfLocale tracks usage and stops when the limit is reached. All API calls use encrypted HTTPS connections. A per-user hourly cap (500/hour by default, filterable) protects your budget from runaway scripts.
Auto-Glossary Scanner
Scan published content to discover candidate glossary terms - brand names, product names, repeated proper nouns - that you’ll want translated consistently. Review and accept candidates with one click. Available via the Glossary REST API for automation.
Fuzzy Translation-Memory API
Query the TM store programmatically: POST /translation-memory/suggest returns exact + fuzzy matches ranked by similarity and usage count. Use it to power custom editors, external review tools, or CI pipelines. See the REST reference.
Block Editor Integration
A PerfLocale dropdown in the Gutenberg block toolbar for paragraph, heading, quote, list item, button, and code blocks. Four actions on the selected block:
- Translate with MT - send the block to any target language without leaving the editor. Backed by
POST /block-translate. - Translation Memory suggestions - search your TM for exact and fuzzy matches and apply one with a click.
- Wrap in “Show If Language” - turn the block into a language-conditional section in two clicks.
- Mark “Do not translate” - flag the block as untranslatable; machine-translation preserves it verbatim and emits
data-perflocale-skip="1"on the rendered HTML.