__( 'Add to basket', 'woocommerce' )- de_DEIn den Warenkorb
Translate any text string from any plugin or theme without touching code.
// Original plugin code — untouched
echo __( 'Add to basket', 'woocommerce' );PerfLocale intercepts any translatable text from your plugins and themes automatically. Just find the string and provide your translation — no edits to plugin or theme files.
Compiled .l10n.php served natively by WordPress.
Pulled from MySQL on demand via the gettext filter.
| de_DE | "Add to basket" | → | "In den Warenkorb" |
| fr_FR | "Sale!" | → | "Soldes !" |
| es_ES | "Free shipping" | → | "Envío gratis" |
Choose file-based storage for maximum speed on production sites, or database storage for team-managed translations from the admin interface. Pick once, switch any time — zero data loss.

Analyze your active plugins and theme to discover all translatable strings automatically. Get a complete list of every piece of text you can translate.
__( 'Add to basket', 'woocommerce' )_n( '%d item', '%d items', $n, 'wc' )_x( 'Post', 'verb', 'app' )_x( 'Post', 'noun', 'app' )Handle singular strings, complex plural rules for languages like Arabic and Russian, and context-aware strings that distinguish identical text used differently.
bulk_string_translate runningSend rows to your MT provider straight from the Strings admin page — pick specific rows with checkboxes, every row matching the active filter (any combination of domain, context, search, status, or language), or the entire strings table. Target languages are chip selectors, so multi-language dispatches are one click each.
Small dispatches run inline; large ones queue automatically as a bulk_string_translate background job — live progress, cancel, and retry on the Jobs page. A 5,000 string × target pairs ceiling per dispatch keeps a misclick on a 100,000-row table from quietly draining your provider credits. Placeholders like %s, %1$d and inline HTML are masked before the provider call and restored after; any translation that loses a placeholder is rejected rather than shipped to every visitor with broken formatting. How background jobs work →