- Stato
- Risolto
- Tipo
- Bug
Panoramica del problema
Quando cambi il locale di una lingua, ad esempio per il tedesco da de_DE a de_DE_formal, potresti notare che la traduzione delle stringhe non viene più visualizzata.
Questo problema si verifica perché WPML non riesce più a trovare i file MO con il locale della lingua corrispondente. Nel nostro esempio, cercherebbe some-domain-de_DE_formal.mo, ma questo file non esiste. Invece, WPML ha solo un record di some-domain-de_DE.mo.
Soluzione alternativa
Per risolvere questo problema, devi fare due cose:
1. Se hai delle stringhe tradotte tramite la pagina WPML -> Traduzione stringhe, vai su WPML -> Supporto -> Database & strings maintenance (su WPML 5.0 e versioni successive, questo strumento è incluso nel plugin WPML Troubleshooting, installabile da WPML → Activate & Update) e fai clic sul pulsante Show custom MO Files Pre-generation dialog box. Nella finestra di dialogo che appare, fai clic sul pulsante blu per rigenerare i file MO personalizzati.
2. Molto probabilmente, il primo passaggio non ripristinerà tutte le stringhe mancanti. Questo perché alcuni valori potrebbero provenire da file MO nativi mancanti, forniti da altri plugin o temi. Per risolvere il problema, devi trovare i file MO mancanti e crearne delle copie utilizzando nuovi nomi con il nuovo codice della lingua.
Nel nostro esempio, se una stringa viene normalmente caricata dal file woocommerce-de_DE.mo, dobbiamo trovare quel file e crearne una copia utilizzando un nome che corrisponda alle impostazioni locali attuali: woocommerce-de_DE_formal.mo. Devi copiare tutti i file mancanti che sono utilizzati dal tuo sito.
Le posizioni tipiche in cui puoi trovare questi file MO sono:
- ../wp-content/languages/
- ../wp-content/plugins/plugin-in-question/
- ../wp-content/plugins/plugin-in-question/languages/
Infine, puoi anche trovare i percorsi specifici nella tabella wp_icl_mo_files_domains del tuo database.