TranslateWP Pro — Complete Guide
Everything you need to run a multilingual WordPress site with AI translation: server requirements, installation, configuration, and day-to-day usage.
OverviewWhat TranslateWP Pro does
TranslateWP Pro translates your entire frontend — page text, buttons, form fields and labels, image alt/title text, tooltips, ARIA labels, SEO/social meta tags, WooCommerce content and customer emails — using OpenAI, Claude (Anthropic) or DeepL. Translations are stored in your own database and served locally, so each string is paid for once and delivered instantly afterwards. Visitors switch languages through URL prefixes (/fr/, /nl/, /ro/…) and a floating switcher.
Key capabilities: async frontend auto-translation, a visual click-to-edit editor, background translation jobs, live translation of AJAX-inserted content (mini-cart, load-more, filters), optional full-page caching, multilingual sitemap and hreflang, CSV import/export, logs, and multi-layer cost protection.
Chapter 1Server requirements
| Component | Minimum | Recommended |
|---|---|---|
| WordPress | 6.0 | Latest release; multisite supported |
| PHP | 8.0 | 8.2 – 8.4 |
| PHP extensions | curl, json | + dom/libxml (best text extraction; a regex engine is used as fallback), mbstring, openssl |
| Database | MySQL 5.7 / MariaDB 10.3 | MySQL 8 / MariaDB 10.6+ (the plugin creates 6 tables) |
| Web server | Apache, LiteSpeed or nginx — all supported. Pretty permalinks enabled (needed for language URLs and the sitemap). | |
| Outbound HTTPS | Port 443 open towards api.openai.com, api.anthropic.com, api.deepl.com / api-free.deepl.com (only the providers you use). | |
| WP-Cron | Active (default) — required for background translation jobs. On low-traffic sites, a real cron entry is recommended (see chapter 4.5). | |
| Disk | wp-content/cache/translatewp/ must be writable if you enable the optional page cache. | |
| HTTPS | Strongly recommended — API keys travel between your server and the AI providers. | |
docs/modsecurity-whitelist.conf — scoped, commented rules your host can apply so the WordPress uploader and TranslateWP's AJAX endpoints are never blocked. All TranslateWP AJAX requests identify themselves in the URL (admin-ajax.php?action=twp_…) so firewalls can target them precisely.Chapter 2Installation
Method A — WordPress uploader
- Go to Plugins → Add New → Upload Plugin.
- Select
translatewp-pro-1.0.0.zipand click Install Now. - Click Activate. Language rewrite rules and the sitemap endpoint are registered automatically.
Method B — File Manager / FTP (works behind any firewall)
- Upload the ZIP to
wp-content/plugins/and extract it there. You should end up withwp-content/plugins/translatewp-pro/. - Activate TranslateWP Pro from the Plugins screen.
Method C — WP-CLI
wp plugin install translatewp-pro-1.0.0.zip --activate
docs/modsecurity-whitelist.conf to the server administrator for a permanent, scoped exception.Multisite
Network-activating installs the plugin on every site of the network; new sites created later are set up automatically. Each site keeps its own languages, providers, translations and limits.
Chapter 3Configuration
3.1 Choose a translation provider
| Provider | Best for | Pricing basis | Get a key |
|---|---|---|---|
| OpenAI | Lowest cost, 100+ languages, structured output | Per token, from $0.05 / 1M | platform.openai.com/api-keys |
| Claude (Anthropic) | Natural, nuanced translations; careful HTML handling | Per token, from $1 / 1M | console.anthropic.com/settings/keys |
| DeepL | European languages, formal documents | Per character; Free plan: 500,000 chars/month | deepl.com/pro-api |
Select the active provider under TranslateWP → Settings → Translation Provider. If the active provider fails or hits a limit, every other configured provider is tried automatically, in order — configure two for automatic failover.
3.2 API keys
Paste each key in its provider card and press Test Connection. Stored keys are shown masked (sk-…abcd) and are never echoed back in full; leave the field blank on later saves to keep the existing key, or paste a new one to replace it.
3.3 Models and cost per model
Prices are USD per 1 million tokens (input / output). As a rule of thumb, 1 token ≈ 4 characters; translating 100,000 characters costs roughly $0.02 on GPT-4o Mini and $0.16 on Claude Haiku 4.5.
OpenAI
| Model | Input | Output | Notes |
|---|---|---|---|
| GPT-4o Mini Recommended | $0.15 | $0.60 | Cheapest reliable choice for translation |
| GPT-5.5 | $5.00 | $30.00 | Flagship, highest quality |
| GPT-5.4 | $2.50 | $15.00 | Frontier, balanced |
| GPT-5.4 Mini | $0.75 | $4.50 | Budget current-gen |
| GPT-5.4 Nano | $0.20 | $1.25 | Cheapest current-gen |
| GPT-5 | $1.25 | $10.00 | |
| GPT-5 Mini | $0.25 | $2.00 | |
| GPT-5 Nano | $0.05 | $0.40 | Ultra low cost |
| GPT-4.1 | $2.00 | $8.00 | |
| GPT-4.1 Mini | $0.40 | $1.60 | |
| GPT-4.1 Nano | $0.10 | $0.40 | |
| GPT-4o | $2.50 | $10.00 | Legacy, well tested |
Claude (Anthropic)
| Model | Input | Output | Notes |
|---|---|---|---|
| Claude Haiku 4.5 Recommended | $1.00 | $5.00 | Cheapest current Claude, fast |
| Claude Sonnet 5 | $3.00 | $15.00 | Best speed/intelligence balance |
| Claude Sonnet 4.6 | $3.00 | $15.00 | |
| Claude Opus 4.8 | $5.00 | $25.00 | Premium |
| Claude Fable 5 | $10.00 | $50.00 | Most capable, highest cost |
| Claude Haiku 3.5 | $0.80 | $4.00 | Legacy budget |
DeepL is billed per character by DeepL directly; the Free plan includes 500,000 characters/month and its remaining quota is shown on the TranslateWP dashboard.
3.4 Languages & URLs
- Active languages
- Tick every language your site should serve (18 available: EN, FR, NL, DE, ES, IT, PT, PL, RO, SV, DA, FI, AR, ZH, JA, KO, TR, RU).
- Default language
- The language your content is written in. It is never sent to a provider.
- Language URL prefix
- Serves each language on its own path —
/fr/about/,/ro/despre/— which search engines index separately. Recommended: on. - Floating switcher
- A small language pill on the frontend; choose its corner under Settings.
3.5 Frontend auto-translate
- Mode: Async (recommended)
- The page loads instantly with existing translations; missing strings are collected in the browser and translated in small background batches, then applied live.
- Mode: Sync
- Missing strings are translated during page rendering. Simplest behaviour, but the first visit to an untranslated page waits for the API.
- Allow for visitors (public)
- Off by default: only logged-in administrators trigger API translation. If you enable it, visitors can trigger translation of missing strings — protected by per-IP rate limits and a global daily cap (chapter 3.8).
- Batch size / max batches
- How many strings each background request carries (default 50) and how many requests per page view (default 4).
3.6 AJAX & form messages
Two optional switches (off by default) cover strings delivered by AJAX rather than in the page HTML:
- Contact Form 7 messages — translates the response message and per-field validation errors returned on form submission.
- WooCommerce notices — translates cart/checkout/coupon notices, including AJAX add-to-cart messages.
Each message is translated once by the active provider (your cost limits apply) and cached.
3.7 Page cache
Optional (off by default). When enabled, fully rendered translated pages are stored per URL + language and served to anonymous visitors without re-processing — a large speed-up for blogs and brochure sites. Only anonymous GET requests on non-dynamic pages are cached; logged-in users, cart/checkout/account, and WooCommerce shop/product pages are always excluded. The cache clears automatically when a post or a translation is saved; an optional TTL adds time-based expiry.
3.8 Cost & safety limits
| Limit | Default | What it protects |
|---|---|---|
| Monthly character limit | 500,000 | Hard ceiling for all automatic translation, all providers combined. |
| Daily character limit | 100,000 | Stops runaway days; resets at midnight UTC. |
| OpenAI monthly USD cap | $5 | Estimated local spend ceiling for OpenAI. 0 disables the cap. |
| Claude monthly USD cap | $5 | Same, for Claude. |
| Anonymous daily request cap | 200 | Global daily ceiling for visitor-triggered translation — effective even behind a CDN where visitors share one IP. |
| Max strings per job | 1,000 (up to 10,000) | Size of a background translation job. |
| Background batch size | 40 | Strings translated per cron tick. |
An email alert is sent to the site administrator at 80% of the monthly budget. Counters are tracked atomically, so simultaneous requests cannot slip past a limit.
Chapter 4Usage
4.1 Quick start
- Configure a provider and press Test Connection (chapter 3.1–3.2).
- Enable your languages and the URL prefix (3.4).
- Enable Frontend Auto-Translate in Async mode (3.5).
- While logged in as admin, open pages in a target language — e.g.
/fr/— and watch strings translate in the background. - For full coverage, create a Background Job per language (4.4) and let WP-Cron finish the catalogue.
- Review key marketing phrases with the visual editor (4.3).
4.2 The language switcher
Visitors change language via the floating switcher or by visiting a prefixed URL. The choice is remembered in a cookie (twp_language), and internal links are rewritten to keep visitors inside their language.
4.3 Visual editor (Edit Mode)
From the WordPress admin bar on any frontend page choose TranslateWP → Edit Mode. Every translatable string is highlighted; click one, type the corrected translation, and it saves immediately (marked as manual, so automatic translation never overwrites it). Attribute texts — placeholders, tooltips, button values — are editable the same way.
4.4 Background jobs
TranslateWP → Background Jobs translates everything the site has captured. Create a job for a target language; WP-Cron processes it every minute in batches (default 40), or press Run next batch to advance it manually. Jobs are resumable and safe: items are claimed atomically, so cron and manual runs never translate — or bill — the same string twice.
*/5 * * * * wget -q -O - https://your-site.tld/wp-cron.php?doing_wp_cron >/dev/null 2>&14.5 Translations page & CSV import/export
TranslateWP → Translations lists every captured string with per-language fields; edits save on blur. Import/Export moves a whole language as CSV (columns original, translation_xx) — handy for professional review. Exports are protected against spreadsheet formula injection.
4.6 Logs & dashboard
The dashboard shows per-provider usage (characters, requests, tokens, estimated cost), the safety budget, DeepL's remaining quota, and page-cache statistics with purge buttons. Logs records missing strings, provider errors and job failures, so you always know why something is not yet translated.
4.7 WooCommerce
- Product names, descriptions, attributes, variation labels and cart item names translate automatically.
- The customer's language is stored on each order at checkout; customer emails (processing, completed, on-hold, refunded, invoice, note) are sent in that language — subject, heading, content and additional content. Admin notifications stay in your default language.
- Payment method titles/descriptions re-rendered during checkout are translated from cache.
- AJAX-inserted fragments (mini-cart, quick view, filters) are translated live from stored translations on every page.
4.8 SEO
hreflang alternates and canonicals are emitted for every active language; a multilingual sitemap is available at /translatewp-sitemap.xml (password-protected posts excluded). SEO titles/descriptions from Yoast, RankMath, SEOPress and All in One SEO are translated, along with whitelisted meta tags (description, Open Graph, Twitter).
Chapter 5Troubleshooting
- “403 Forbidden” when uploading the plugin or during translation
- Server firewall (ModSecurity/WAF). Install via FTP/WP-CLI and apply
docs/modsecurity-whitelist.conf— see chapter 2. - Translated URLs return 404
- Rewrite rules are registered on activation; if your host caches configs, visit Settings → Permalinks and press Save once.
- Strings stay untranslated for visitors
- By default only admins trigger API translation. Either pre-translate with a Background Job (recommended) or enable public auto-translate (3.5).
- “Monthly/daily limit reached” in Logs
- A safety cap from chapter 3.8 did its job. Raise the relevant limit in Settings if intentional.
- Background job does not advance
- WP-Cron is not firing — add the real cron entry from chapter 4.4, or press Run next batch.
- Cart/checkout pages show some untranslated dynamic strings
- By design, no API calls happen there (GDPR). Capture those strings elsewhere or add them via the Translations page; stored translations apply everywhere, including checkout.
TranslateWP Pro — Guide complet
Tout ce qu'il faut pour gérer un site WordPress multilingue avec traduction par IA : prérequis serveur, installation, configuration et utilisation au quotidien.
AperçuCe que fait TranslateWP Pro
TranslateWP Pro traduit l'intégralité de votre frontend — textes des pages, boutons, champs et libellés de formulaires, attributs alt/title des images, infobulles, libellés ARIA, balises meta SEO/réseaux sociaux, contenu WooCommerce et e-mails clients — avec OpenAI, Claude (Anthropic) ou DeepL. Les traductions sont stockées dans votre propre base de données et servies localement : chaque chaîne n'est payée qu'une seule fois, puis affichée instantanément. Les visiteurs changent de langue via des préfixes d'URL (/fr/, /nl/, /ro/…) et un sélecteur flottant.
Fonctions clés : auto-traduction asynchrone du frontend, éditeur visuel « cliquer-pour-corriger », tâches de traduction en arrière-plan, traduction en direct du contenu inséré par AJAX (mini-panier, « voir plus », filtres), cache de pages optionnel, sitemap multilingue et hreflang, import/export CSV, journaux et protection des coûts multi-niveaux.
Chapitre 1Prérequis serveur
| Composant | Minimum | Recommandé |
|---|---|---|
| WordPress | 6.0 | Dernière version ; multisite pris en charge |
| PHP | 8.0 | 8.2 – 8.4 |
| Extensions PHP | curl, json | + dom/libxml (meilleure extraction du texte ; un moteur regex sert de secours), mbstring, openssl |
| Base de données | MySQL 5.7 / MariaDB 10.3 | MySQL 8 / MariaDB 10.6+ (le plugin crée 6 tables) |
| Serveur web | Apache, LiteSpeed ou nginx — tous pris en charge. Permaliens « jolis » activés (nécessaires aux URL de langue et au sitemap). | |
| HTTPS sortant | Port 443 ouvert vers api.openai.com, api.anthropic.com, api.deepl.com / api-free.deepl.com (uniquement les fournisseurs utilisés). | |
| WP-Cron | Actif (par défaut) — requis pour les tâches en arrière-plan. Sur un site à faible trafic, une vraie entrée cron est recommandée (chapitre 4.4). | |
| Disque | wp-content/cache/translatewp/ doit être accessible en écriture si vous activez le cache de pages optionnel. | |
| HTTPS | Fortement recommandé — les clés API transitent entre votre serveur et les fournisseurs d'IA. | |
docs/modsecurity-whitelist.conf — des règles ciblées et commentées que votre hébergeur peut appliquer pour que l'installateur WordPress et les points d'entrée AJAX de TranslateWP ne soient jamais bloqués. Chaque requête AJAX de TranslateWP s'identifie dans l'URL (admin-ajax.php?action=twp_…), ce qui permet un filtrage précis.Chapitre 2Installation
Méthode A — Installateur WordPress
- Allez dans Extensions → Ajouter → Téléverser une extension.
- Sélectionnez
translatewp-pro-1.0.0.zippuis Installer maintenant. - Cliquez sur Activer. Les règles de réécriture des langues et le sitemap sont enregistrés automatiquement.
Méthode B — Gestionnaire de fichiers / FTP (fonctionne derrière tout pare-feu)
- Téléversez le ZIP dans
wp-content/plugins/et décompressez-le sur place, pour obtenirwp-content/plugins/translatewp-pro/. - Activez TranslateWP Pro depuis l'écran Extensions.
Méthode C — WP-CLI
wp plugin install translatewp-pro-1.0.0.zip --activate
docs/modsecurity-whitelist.conf à l'administrateur du serveur pour une exception permanente et ciblée.Multisite
L'activation réseau installe le plugin sur chaque site ; les sites créés ensuite sont configurés automatiquement. Chaque site conserve ses propres langues, fournisseurs, traductions et limites.
Chapitre 3Configuration
3.1 Choisir un fournisseur de traduction
| Fournisseur | Idéal pour | Tarification | Obtenir une clé |
|---|---|---|---|
| OpenAI | Coût minimal, 100+ langues, sortie structurée | Au token, dès 0,05 $ / 1M | platform.openai.com/api-keys |
| Claude (Anthropic) | Traductions naturelles et nuancées ; HTML respecté | Au token, dès 1 $ / 1M | console.anthropic.com/settings/keys |
| DeepL | Langues européennes, documents formels | Au caractère ; offre Free : 500 000 car./mois | deepl.com/pro-api |
Choisissez le fournisseur actif dans TranslateWP → Settings → Translation Provider. Si le fournisseur actif échoue ou atteint une limite, chaque autre fournisseur configuré est essayé automatiquement, dans l'ordre — configurez-en deux pour un basculement automatique.
3.2 Clés API
Collez chaque clé dans la carte de son fournisseur et cliquez sur Test Connection. Les clés enregistrées s'affichent masquées (sk-…abcd) et ne sont jamais renvoyées en clair ; laissez le champ vide lors des enregistrements suivants pour conserver la clé, ou collez-en une nouvelle pour la remplacer.
3.3 Modèles et coût par modèle
Prix en USD par million de tokens (entrée / sortie). En pratique, 1 token ≈ 4 caractères ; traduire 100 000 caractères coûte environ 0,02 $ avec GPT-4o Mini et 0,16 $ avec Claude Haiku 4.5.
OpenAI
| Modèle | Entrée | Sortie | Remarques |
|---|---|---|---|
| GPT-4o Mini Recommandé | 0,15 $ | 0,60 $ | Le choix fiable le moins cher pour la traduction |
| GPT-5.5 | 5,00 $ | 30,00 $ | Vaisseau amiral, qualité maximale |
| GPT-5.4 | 2,50 $ | 15,00 $ | Frontier, équilibré |
| GPT-5.4 Mini | 0,75 $ | 4,50 $ | Génération actuelle, économique |
| GPT-5.4 Nano | 0,20 $ | 1,25 $ | Génération actuelle, le moins cher |
| GPT-5 | 1,25 $ | 10,00 $ | |
| GPT-5 Mini | 0,25 $ | 2,00 $ | |
| GPT-5 Nano | 0,05 $ | 0,40 $ | Coût ultra réduit |
| GPT-4.1 | 2,00 $ | 8,00 $ | |
| GPT-4.1 Mini | 0,40 $ | 1,60 $ | |
| GPT-4.1 Nano | 0,10 $ | 0,40 $ | |
| GPT-4o | 2,50 $ | 10,00 $ | Ancienne génération, éprouvé |
Claude (Anthropic)
| Modèle | Entrée | Sortie | Remarques |
|---|---|---|---|
| Claude Haiku 4.5 Recommandé | 1,00 $ | 5,00 $ | Le Claude actuel le moins cher, rapide |
| Claude Sonnet 5 | 3,00 $ | 15,00 $ | Meilleur équilibre vitesse/intelligence |
| Claude Sonnet 4.6 | 3,00 $ | 15,00 $ | |
| Claude Opus 4.8 | 5,00 $ | 25,00 $ | Premium |
| Claude Fable 5 | 10,00 $ | 50,00 $ | Le plus capable, coût le plus élevé |
| Claude Haiku 3.5 | 0,80 $ | 4,00 $ | Ancienne génération, économique |
DeepL facture au caractère directement ; l'offre Free inclut 500 000 caractères/mois et le quota restant s'affiche sur le tableau de bord TranslateWP.
3.4 Langues et URL
- Langues actives
- Cochez chaque langue à servir (18 disponibles : EN, FR, NL, DE, ES, IT, PT, PL, RO, SV, DA, FI, AR, ZH, JA, KO, TR, RU).
- Langue par défaut
- La langue de rédaction de votre contenu. Elle n'est jamais envoyée à un fournisseur.
- Préfixe d'URL de langue
- Sert chaque langue sur son propre chemin —
/fr/a-propos/— que les moteurs indexent séparément. Recommandé : activé. - Sélecteur flottant
- Une pastille de langue sur le frontend ; choisissez son coin dans les réglages.
3.5 Auto-traduction du frontend
- Mode Async (recommandé)
- La page se charge immédiatement avec les traductions existantes ; les chaînes manquantes sont collectées dans le navigateur, traduites par petits lots en arrière-plan puis appliquées en direct.
- Mode Sync
- Les chaînes manquantes sont traduites pendant le rendu. Comportement le plus simple, mais la première visite d'une page non traduite attend l'API.
- Autoriser pour les visiteurs (public)
- Désactivé par défaut : seuls les administrateurs connectés déclenchent la traduction par API. Si vous l'activez, les visiteurs peuvent déclencher la traduction des chaînes manquantes — protégée par des limites par IP et un plafond quotidien global (chapitre 3.8).
- Taille des lots / nombre max de lots
- Nombre de chaînes par requête d'arrière-plan (50 par défaut) et de requêtes par affichage de page (4 par défaut).
3.6 Messages AJAX et formulaires
Deux options (désactivées par défaut) couvrent les chaînes livrées par AJAX plutôt que dans le HTML de la page :
- Messages Contact Form 7 — traduit le message de réponse et les erreurs de validation par champ renvoyés à l'envoi d'un formulaire.
- Notifications WooCommerce — traduit les notifications panier/commande/coupon, y compris les messages AJAX d'ajout au panier.
Chaque message est traduit une seule fois par le fournisseur actif (vos limites de coût s'appliquent), puis mis en cache.
3.7 Cache de pages
Optionnel (désactivé par défaut). Une fois activé, les pages traduites entièrement rendues sont stockées par URL + langue et servies aux visiteurs anonymes sans retraitement — gain de vitesse important pour les blogs et sites vitrines. Seules les requêtes GET anonymes sur des pages non dynamiques sont mises en cache ; utilisateurs connectés, panier/commande/compte et pages boutique/produit WooCommerce sont toujours exclus. Le cache se vide automatiquement à l'enregistrement d'un article ou d'une traduction ; un TTL optionnel ajoute une expiration temporelle.
3.8 Limites de coût et de sécurité
| Limite | Défaut | Ce qu'elle protège |
|---|---|---|
| Limite mensuelle de caractères | 500 000 | Plafond global de la traduction automatique, tous fournisseurs confondus. |
| Limite quotidienne de caractères | 100 000 | Stoppe les emballements ; réinitialisée à minuit UTC. |
| Plafond mensuel USD OpenAI | 5 $ | Plafond local estimé des dépenses OpenAI. 0 le désactive. |
| Plafond mensuel USD Claude | 5 $ | Idem, pour Claude. |
| Plafond quotidien des requêtes anonymes | 200 | Plafond quotidien global des traductions déclenchées par les visiteurs — efficace même derrière un CDN où les visiteurs partagent une IP. |
| Chaînes max par tâche | 1 000 (jusqu'à 10 000) | Taille d'une tâche d'arrière-plan. |
| Taille de lot d'arrière-plan | 40 | Chaînes traduites par cycle cron. |
Un e-mail d'alerte est envoyé à l'administrateur à 80 % du budget mensuel. Les compteurs sont incrémentés de façon atomique : des requêtes simultanées ne peuvent pas dépasser une limite.
Chapitre 4Utilisation
4.1 Démarrage rapide
- Configurez un fournisseur et cliquez sur Test Connection (3.1–3.2).
- Activez vos langues et le préfixe d'URL (3.4).
- Activez Frontend Auto-Translate en mode Async (3.5).
- Connecté en admin, ouvrez des pages dans une langue cible — p. ex.
/fr/— et regardez les chaînes se traduire en arrière-plan. - Pour une couverture complète, créez une tâche d'arrière-plan par langue (4.4) et laissez WP-Cron terminer le catalogue.
- Relisez les formulations clés avec l'éditeur visuel (4.3).
4.2 Le sélecteur de langue
Les visiteurs changent de langue via le sélecteur flottant ou en visitant une URL préfixée. Le choix est mémorisé dans un cookie (twp_language) et les liens internes sont réécrits pour rester dans la langue choisie.
4.3 Éditeur visuel (Edit Mode)
Depuis la barre d'administration sur n'importe quelle page du frontend, choisissez TranslateWP → Edit Mode. Chaque chaîne traduisible est surlignée ; cliquez, saisissez la correction, elle s'enregistre immédiatement (marquée manuelle : la traduction automatique ne l'écrasera jamais). Les textes d'attributs — placeholders, infobulles, valeurs de boutons — se corrigent de la même façon.
4.4 Tâches d'arrière-plan
TranslateWP → Background Jobs traduit tout ce que le site a capturé. Créez une tâche pour une langue cible ; WP-Cron la traite chaque minute par lots (40 par défaut), ou cliquez sur Run next batch pour avancer manuellement. Les tâches sont reprenables et sûres : les éléments sont réservés de façon atomique, cron et exécutions manuelles ne traduisent — ni ne facturent — jamais deux fois la même chaîne.
*/5 * * * * wget -q -O - https://votre-site.tld/wp-cron.php?doing_wp_cron >/dev/null 2>&14.5 Page Translations & import/export CSV
TranslateWP → Translations liste chaque chaîne capturée avec un champ par langue ; l'édition s'enregistre à la perte de focus. Import/Export déplace une langue entière en CSV (colonnes original, translation_xx) — pratique pour une relecture professionnelle. Les exports sont protégés contre l'injection de formules de tableur.
4.6 Journaux et tableau de bord
Le tableau de bord affiche l'utilisation par fournisseur (caractères, requêtes, tokens, coût estimé), le budget de sécurité, le quota restant DeepL et les statistiques du cache de pages avec boutons de purge. Logs consigne chaînes manquantes, erreurs de fournisseur et échecs de tâches : vous savez toujours pourquoi un texte n'est pas encore traduit.
4.7 WooCommerce
- Noms de produits, descriptions, attributs, libellés de variations et noms d'articles du panier sont traduits automatiquement.
- La langue du client est enregistrée sur chaque commande au checkout ; les e-mails clients (en cours, terminée, en attente, remboursée, facture, note) partent dans cette langue — objet, titre, contenu et contenu additionnel. Les notifications admin restent dans la langue par défaut.
- Les intitulés/descriptions des moyens de paiement re-rendus pendant le checkout sont traduits depuis le cache.
- Les fragments insérés par AJAX (mini-panier, aperçu rapide, filtres) sont traduits en direct depuis les traductions stockées, sur toutes les pages.
4.8 SEO
Les alternates hreflang et les canonicals sont émis pour chaque langue active ; un sitemap multilingue est disponible sur /translatewp-sitemap.xml (articles protégés par mot de passe exclus). Les titres/descriptions SEO de Yoast, RankMath, SEOPress et All in One SEO sont traduits, ainsi que les balises meta en liste blanche (description, Open Graph, Twitter).
Chapitre 5Dépannage
- « 403 Forbidden » au téléversement du plugin ou pendant la traduction
- Pare-feu serveur (ModSecurity/WAF). Installez via FTP/WP-CLI et appliquez
docs/modsecurity-whitelist.conf— voir chapitre 2. - Les URL traduites renvoient 404
- Les règles de réécriture sont enregistrées à l'activation ; si votre hébergeur met la configuration en cache, ouvrez Réglages → Permaliens et enregistrez une fois.
- Les chaînes restent non traduites pour les visiteurs
- Par défaut, seuls les admins déclenchent la traduction par API. Pré-traduisez avec une tâche d'arrière-plan (recommandé) ou activez l'auto-traduction publique (3.5).
- « Limite mensuelle/quotidienne atteinte » dans les journaux
- Un plafond du chapitre 3.8 a joué son rôle. Augmentez la limite concernée dans les réglages si c'est voulu.
- Une tâche d'arrière-plan n'avance pas
- WP-Cron ne se déclenche pas — ajoutez l'entrée cron du chapitre 4.4, ou cliquez sur Run next batch.
- Des chaînes dynamiques restent non traduites sur panier/commande
- Volontaire : aucun appel API n'a lieu sur ces pages (RGPD). Capturez ces chaînes ailleurs ou ajoutez-les via la page Translations ; les traductions stockées s'appliquent partout, checkout compris.
TranslateWP Pro — Ghid complet
Tot ce ai nevoie pentru un site WordPress multilingv cu traducere prin AI: cerințe de server, instalare, configurare și utilizare de zi cu zi.
PrezentareCe face TranslateWP Pro
TranslateWP Pro traduce întregul frontend — textul paginilor, butoane, câmpuri și etichete de formulare, atributele alt/title ale imaginilor, tooltip-uri, etichete ARIA, meta tag-uri SEO/social, conținut WooCommerce și emailuri către clienți — folosind OpenAI, Claude (Anthropic) sau DeepL. Traducerile se stochează în propria bază de date și se servesc local: fiecare șir se plătește o singură dată, apoi se afișează instantaneu. Vizitatorii schimbă limba prin prefixe de URL (/fr/, /nl/, /ro/…) și printr-un comutator flotant.
Funcții cheie: auto-traducere asincronă a frontend-ului, editor vizual „click-și-corectezi", job-uri de traducere în fundal, traducere live a conținutului inserat prin AJAX (mini-coș, load-more, filtre), cache de pagini opțional, sitemap multilingv și hreflang, import/export CSV, jurnale și protecție a costurilor pe mai multe niveluri.
Capitolul 1Cerințe server
| Componentă | Minim | Recomandat |
|---|---|---|
| WordPress | 6.0 | Ultima versiune; multisite suportat |
| PHP | 8.0 | 8.2 – 8.4 |
| Extensii PHP | curl, json | + dom/libxml (extracție optimă a textului; există fallback pe regex), mbstring, openssl |
| Bază de date | MySQL 5.7 / MariaDB 10.3 | MySQL 8 / MariaDB 10.6+ (plugin-ul creează 6 tabele) |
| Server web | Apache, LiteSpeed sau nginx — toate suportate. Permalink-uri „pretty" activate (necesare pentru URL-urile de limbă și sitemap). | |
| HTTPS de ieșire | Port 443 deschis către api.openai.com, api.anthropic.com, api.deepl.com / api-free.deepl.com (doar providerii folosiți). | |
| WP-Cron | Activ (implicit) — necesar pentru job-urile din fundal. Pe site-uri cu trafic mic se recomandă un cron real (capitolul 4.4). | |
| Disc | wp-content/cache/translatewp/ trebuie să fie inscriptibil dacă activezi cache-ul de pagini opțional. | |
| HTTPS | Puternic recomandat — cheile API circulă între serverul tău și providerii AI. | |
docs/modsecurity-whitelist.conf — reguli țintite și comentate pe care hostul le poate aplica astfel încât uploader-ul WordPress și endpointurile AJAX TranslateWP să nu fie blocate. Fiecare request AJAX TranslateWP se identifică în URL (admin-ajax.php?action=twp_…), permițând filtrare precisă.Capitolul 2Instalare
Metoda A — Uploader-ul WordPress
- Mergi la Module → Adaugă modul → Încarcă modul.
- Selectează
translatewp-pro-1.0.0.zipși apasă Instalează acum. - Apasă Activează. Regulile de rescriere pentru limbi și sitemap-ul se înregistrează automat.
Metoda B — File Manager / FTP (merge în spatele oricărui firewall)
- Urcă ZIP-ul în
wp-content/plugins/și extrage-l acolo, astfel încât să rezultewp-content/plugins/translatewp-pro/. - Activează TranslateWP Pro din ecranul Module.
Metoda C — WP-CLI
wp plugin install translatewp-pro-1.0.0.zip --activate
docs/modsecurity-whitelist.conf administratorului de server pentru o excepție permanentă și țintită.Multisite
Activarea la nivel de rețea instalează plugin-ul pe fiecare site; site-urile create ulterior se configurează automat. Fiecare site își păstrează propriile limbi, provideri, traduceri și limite.
Capitolul 3Configurare
3.1 Alege providerul de traducere
| Provider | Ideal pentru | Tarifare | Obții cheia de la |
|---|---|---|---|
| OpenAI | Cost minim, 100+ limbi, output structurat | Per token, de la 0,05 $ / 1M | platform.openai.com/api-keys |
| Claude (Anthropic) | Traduceri naturale, nuanțate; HTML respectat | Per token, de la 1 $ / 1M | console.anthropic.com/settings/keys |
| DeepL | Limbi europene, documente formale | Per caracter; plan Free: 500.000 car./lună | deepl.com/pro-api |
Alege providerul activ în TranslateWP → Settings → Translation Provider. Dacă providerul activ eșuează sau atinge o limită, ceilalți provideri configurați sunt încercați automat, în ordine — configurează doi pentru failover automat.
3.2 Chei API
Lipește fiecare cheie în cardul providerului și apasă Test Connection. Cheile salvate se afișează mascat (sk-…abcd) și nu sunt redate niciodată integral; lasă câmpul gol la salvările ulterioare ca să păstrezi cheia existentă, sau lipește una nouă ca s-o înlocuiești.
3.3 Modele și costul per model
Prețurile sunt în USD per 1 milion de tokeni (intrare / ieșire). Ca reper, 1 token ≈ 4 caractere; traducerea a 100.000 de caractere costă aproximativ 0,02 $ pe GPT-4o Mini și 0,16 $ pe Claude Haiku 4.5.
OpenAI
| Model | Intrare | Ieșire | Observații |
|---|---|---|---|
| GPT-4o Mini Recomandat | 0,15 $ | 0,60 $ | Cea mai ieftină alegere fiabilă pentru traducere |
| GPT-5.5 | 5,00 $ | 30,00 $ | Flagship, calitate maximă |
| GPT-5.4 | 2,50 $ | 15,00 $ | Frontier, echilibrat |
| GPT-5.4 Mini | 0,75 $ | 4,50 $ | Generație curentă, buget |
| GPT-5.4 Nano | 0,20 $ | 1,25 $ | Generație curentă, cel mai ieftin |
| GPT-5 | 1,25 $ | 10,00 $ | |
| GPT-5 Mini | 0,25 $ | 2,00 $ | |
| GPT-5 Nano | 0,05 $ | 0,40 $ | Cost ultra redus |
| GPT-4.1 | 2,00 $ | 8,00 $ | |
| GPT-4.1 Mini | 0,40 $ | 1,60 $ | |
| GPT-4.1 Nano | 0,10 $ | 0,40 $ | |
| GPT-4o | 2,50 $ | 10,00 $ | Generație anterioară, bine testat |
Claude (Anthropic)
| Model | Intrare | Ieșire | Observații |
|---|---|---|---|
| Claude Haiku 4.5 Recomandat | 1,00 $ | 5,00 $ | Cel mai ieftin Claude curent, rapid |
| Claude Sonnet 5 | 3,00 $ | 15,00 $ | Cel mai bun echilibru viteză/inteligență |
| Claude Sonnet 4.6 | 3,00 $ | 15,00 $ | |
| Claude Opus 4.8 | 5,00 $ | 25,00 $ | Premium |
| Claude Fable 5 | 10,00 $ | 50,00 $ | Cel mai capabil, costul cel mai mare |
| Claude Haiku 3.5 | 0,80 $ | 4,00 $ | Generație anterioară, buget |
DeepL facturează per caracter direct; planul Free include 500.000 de caractere/lună, iar cota rămasă apare pe dashboard-ul TranslateWP.
3.4 Limbi și URL-uri
- Limbi active
- Bifează fiecare limbă pe care site-ul o va servi (18 disponibile: EN, FR, NL, DE, ES, IT, PT, PL, RO, SV, DA, FI, AR, ZH, JA, KO, TR, RU).
- Limba implicită
- Limba în care e scris conținutul. Nu este trimisă niciodată către un provider.
- Prefix de limbă în URL
- Servește fiecare limbă pe propriul path —
/ro/despre/— pe care motoarele de căutare îl indexează separat. Recomandat: activat. - Comutator flotant
- O pastilă de limbă pe frontend; alegi colțul din setări.
3.5 Auto-traducerea frontend-ului
- Mod Async (recomandat)
- Pagina se încarcă instant cu traducerile existente; șirurile lipsă sunt colectate în browser, traduse în loturi mici în fundal și aplicate live.
- Mod Sync
- Șirurile lipsă se traduc în timpul randării. Cel mai simplu comportament, dar prima vizită pe o pagină netradusă așteaptă API-ul.
- Permite pentru vizitatori (public)
- Oprit implicit: doar administratorii autentificați declanșează traducere prin API. Dacă îl activezi, vizitatorii pot declanșa traducerea șirurilor lipsă — protejată de limite per IP și un plafon zilnic global (capitolul 3.8).
- Mărimea lotului / nr. max de loturi
- Câte șiruri transportă fiecare request de fundal (implicit 50) și câte request-uri per afișare de pagină (implicit 4).
3.6 Mesaje AJAX și formulare
Două opțiuni (oprite implicit) acoperă șirurile livrate prin AJAX, nu în HTML-ul paginii:
- Mesaje Contact Form 7 — traduce mesajul de răspuns și erorile de validare per câmp returnate la trimiterea formularului.
- Notificări WooCommerce — traduce notificările de coș/checkout/cupon, inclusiv mesajele AJAX de adăugare în coș.
Fiecare mesaj este tradus o singură dată de providerul activ (limitele tale de cost se aplică) și apoi servit din cache.
3.7 Cache-ul de pagini
Opțional (oprit implicit). Când e activat, paginile traduse complet randate se stochează per URL + limbă și se servesc vizitatorilor anonimi fără reprocesare — un câștig mare de viteză pentru bloguri și site-uri de prezentare. Doar request-urile GET anonime pe pagini non-dinamice se pun în cache; utilizatorii autentificați, coș/checkout/cont și paginile shop/produs WooCommerce sunt mereu excluse. Cache-ul se golește automat la salvarea unui articol sau a unei traduceri; un TTL opțional adaugă expirare temporală.
3.8 Limite de cost și siguranță
| Limită | Implicit | Ce protejează |
|---|---|---|
| Limită lunară de caractere | 500.000 | Plafon global pentru toată traducerea automată, toți providerii la un loc. |
| Limită zilnică de caractere | 100.000 | Oprește zilele scăpate de sub control; se resetează la miezul nopții UTC. |
| Plafon lunar USD OpenAI | 5 $ | Plafon local estimat pentru cheltuielile OpenAI. 0 îl dezactivează. |
| Plafon lunar USD Claude | 5 $ | La fel, pentru Claude. |
| Plafon zilnic request-uri anonime | 200 | Plafon zilnic global pentru traducerile declanșate de vizitatori — eficient și în spatele unui CDN unde vizitatorii împart un IP. |
| Șiruri max per job | 1.000 (până la 10.000) | Dimensiunea unui job de traducere în fundal. |
| Mărimea lotului de fundal | 40 | Șiruri traduse per ciclu de cron. |
La 80% din bugetul lunar se trimite un email de alertă administratorului. Contoarele sunt incrementate atomic: request-urile simultane nu pot depăși o limită.
Capitolul 4Utilizare
4.1 Pornire rapidă
- Configurează un provider și apasă Test Connection (3.1–3.2).
- Activează limbile și prefixul de URL (3.4).
- Activează Frontend Auto-Translate în modul Async (3.5).
- Autentificat ca admin, deschide pagini într-o limbă țintă — de ex.
/fr/— și urmărește cum șirurile se traduc în fundal. - Pentru acoperire completă, creează un Background Job per limbă (4.4) și lasă WP-Cron să termine catalogul.
- Revizuiește frazele-cheie de marketing cu editorul vizual (4.3).
4.2 Comutatorul de limbă
Vizitatorii schimbă limba din comutatorul flotant sau vizitând un URL cu prefix. Alegerea se reține într-un cookie (twp_language), iar linkurile interne sunt rescrise ca vizitatorul să rămână în limba lui.
4.3 Editorul vizual (Edit Mode)
Din bara de administrare WordPress, pe orice pagină de frontend, alege TranslateWP → Edit Mode. Fiecare șir traductibil e evidențiat; dai click, tastezi corectura, se salvează imediat (marcată ca manuală — traducerea automată nu o va suprascrie niciodată). Textele din atribute — placeholders, tooltip-uri, valori de butoane — se corectează la fel.
4.4 Job-uri în fundal
TranslateWP → Background Jobs traduce tot ce a capturat site-ul. Creezi un job pentru o limbă țintă; WP-Cron îl procesează în fiecare minut, în loturi (implicit 40), sau apeși Run next batch ca să-l avansezi manual. Job-urile sunt reluabile și sigure: elementele sunt rezervate atomic, deci cron-ul și rulările manuale nu traduc — și nu facturează — niciodată același șir de două ori.
*/5 * * * * wget -q -O - https://site-ul-tau.tld/wp-cron.php?doing_wp_cron >/dev/null 2>&14.5 Pagina Translations & import/export CSV
TranslateWP → Translations listează fiecare șir capturat, cu câmp per limbă; editarea se salvează la părăsirea câmpului. Import/Export mută o limbă întreagă ca CSV (coloane original, translation_xx) — util pentru revizuire profesională. Exporturile sunt protejate împotriva injecției de formule de foaie de calcul.
4.6 Jurnale și dashboard
Dashboard-ul arată utilizarea per provider (caractere, request-uri, tokeni, cost estimat), bugetul de siguranță, cota rămasă DeepL și statisticile cache-ului de pagini, cu butoane de golire. Logs înregistrează șiruri lipsă, erori de provider și eșecuri de job — știi mereu de ce un text nu e încă tradus.
4.7 WooCommerce
- Numele produselor, descrierile, atributele, etichetele variațiilor și numele articolelor din coș se traduc automat.
- Limba clientului se salvează pe fiecare comandă la checkout; emailurile către client (în procesare, finalizată, în așteptare, rambursată, factură, notă) pleacă în limba lui — subiect, titlu, conținut și conținut adițional. Notificările de admin rămân în limba implicită.
- Titlurile/descrierile metodelor de plată re-randate la checkout se traduc din cache.
- Fragmentele inserate prin AJAX (mini-coș, quick view, filtre) se traduc live din traducerile stocate, pe orice pagină.
4.8 SEO
Alternates hreflang și canonicals se emit pentru fiecare limbă activă; un sitemap multilingv e disponibil la /translatewp-sitemap.xml (articolele protejate cu parolă sunt excluse). Titlurile/descrierile SEO din Yoast, RankMath, SEOPress și All in One SEO se traduc, la fel și meta tag-urile din lista albă (description, Open Graph, Twitter).
Capitolul 5Depanare
- „403 Forbidden" la upload-ul plugin-ului sau în timpul traducerii
- Firewall de server (ModSecurity/WAF). Instalează prin FTP/WP-CLI și aplică
docs/modsecurity-whitelist.conf— vezi capitolul 2. - URL-urile traduse dau 404
- Regulile de rescriere se înregistrează la activare; dacă hostul cache-uiește configurația, deschide Setări → Permalink-uri și salvează o dată.
- Șirurile rămân netraduse pentru vizitatori
- Implicit, doar adminii declanșează traducere prin API. Pre-tradu cu un Background Job (recomandat) sau activează auto-traducerea publică (3.5).
- „Limita lunară/zilnică atinsă" în jurnale
- Un plafon din capitolul 3.8 și-a făcut treaba. Mărește limita respectivă din setări dacă e intenționat.
- Un job în fundal nu avansează
- WP-Cron nu se declanșează — adaugă cron-ul real din capitolul 4.4 sau apasă Run next batch.
- Șiruri dinamice rămân netraduse pe coș/checkout
- Intenționat: pe aceste pagini nu au loc apeluri API (GDPR). Capturează acele șiruri în altă parte sau adaugă-le din pagina Translations; traducerile stocate se aplică peste tot, inclusiv la checkout.