Documentazione · Documentazione per gli sviluppatori
Internazionalizzazione per gli sviluppatori
Questo documento descrive come il plugin ADP Car Market Hub gestisce l'internazionalizzazione (i18n) per traduttori e collaboratori. Copre il text domain, il meccanismo di caricamento, i file di traduzione distribuiti con il plugin, gli strumenti utilizzati per generare il file POT e le convenzioni da seguire quando si aggiungono nuove stringhe traducibili.
Quando usare questo documento
Leggi questo documento quando hai bisogno di:
- Aggiungere una nuova stringa traducibile al codice PHP, JavaScript o ai template.
- Rigenerare il file POT dopo aver aggiunto delle stringhe.
- Fornire una nuova traduzione in un'altra lingua per il plugin.
- Capire perché una particolare stringa dell'amministrazione o del front-end è o non è tradotta.
Per le note rivolte ai traduttori, consulta il file README-i18n.md del repository.
Panoramica
Il plugin utilizza le API i18n standard di WordPress (__(), _e(), _n(), _x(), esc_html__(), esc_attr__(), esc_html_e(), esc_attr_e(), …) con un singolo text domain.
- Text domain:
adp-car-market-hub. - Domain path:
/languages(dichiarato nell'intestazione del plugin). - Loader:
load_plugin_textdomain( 'adp-car-market-hub', false, '/languages' )viene chiamato da una funzione agganciata aplugins_loadedcon priorità 1, in modo che le traduzioni vengano caricate prima dell'esecuzione del lavoro diinitdel plugin stesso.
Le stringhe JavaScript utilizzate dagli script inclusi nel plugin sono pre-tradotte in PHP e passate a JavaScript tramite wp_localize_script(). Al momento il plugin non si affida a wp_set_script_translations() e al flusso di lavoro di traduzione JSON associato.
Requisiti o prerequisiti
- File sorgente scritti utilizzando le funzioni i18n di WordPress con
'adp-car-market-hub'come text domain. - WP-CLI installato quando si rigenera il file POT (lo script di supporto utilizza
wp i18n make-pot). - Un editor compatibile con POEdit (o qualsiasi strumento che supporti GNU gettext) per modificare i file
.po.
File di traduzione distribuiti con il plugin
Tutti i file di traduzione si trovano in /languages e seguono la convenzione di denominazione standard di WordPress.
| File | Scopo |
|---|---|
adp-car-market-hub.pot | Template di traduzione (sorgente per le nuove traduzioni). |
adp-car-market-hub-de_DE.po e .mo | Tedesco (Germania), allocuzione informale. |
adp-car-market-hub-de_DE_formal.po e .mo | Tedesco (Germania), allocuzione formale. |
adp-car-market-hub-de_AT.po e .mo | Tedesco (Austria). |
adp-car-market-hub-de_CH.po e .mo | Tedesco (Svizzera). |
adp-car-market-hub-fr_FR.po e .mo | Francese (Francia). |
adp-car-market-hub-it_IT.po e .mo | Italiano (Italia). |
adp-car-market-hub-es_ES.po e .mo | Spagnolo (Spagna). |
adp-car-market-hub-nl_NL.po e .mo | Olandese (Paesi Bassi). |
Ogni localizzazione distribuita include sia un sorgente .po sia un file compilato .mo. L'elenco sopra riflette i file attualmente presenti; verifica l'insieme più recente nella cartella /languages prima della pubblicazione.
Strumenti
Rigenerare il file POT
Uno script di supporto è fornito nella directory bin/ del repository. Chiama il comando i18n make-pot di WP-CLI ed esclude le cartelle che non devono essere scansionate (.git, node_modules, vendor, tests, bin).
Per eseguirlo:
- Assicurati che WP-CLI sia installato e disponibile su
PATH. - Dalla root del repository, esegui lo script.
- Il file
.potaggiornato viene scritto inlanguages/adp-car-market-hub.pot.
Compilare i file .mo
Dopo aver modificato un file .po, compila un file .mo corrispondente con il tuo editor (il comando "Salva" di POEdit produce automaticamente entrambi i file) o con msgfmt da gettext.
Istruzioni passo dopo passo
Aggiungere una stringa traducibile in PHP
- Avvolgi la stringa con la funzione i18n appropriata di WordPress e passa
'adp-car-market-hub'come text domain. Ad esempio,__( 'Lead saved.', 'adp-car-market-hub' )oesc_html__( 'Vehicles', 'adp-car-market-hub' ). - Laddove la stringa sia concatenata con codice HTML, preferisci le varianti
esc_*__eesc_*_eper combinare l'escape e la traduzione in un'unica chiamata. - Per la gestione dei plurali, usa
_n()o_nx(). Per la disambiguazione del contesto, usa_x(). - Rigenera il file POT (vedi sopra) in modo che i traduttori possano rilevare la nuova stringa.
Aggiungere una stringa traducibile utilizzata in JavaScript
- Traduci prima la stringa in PHP (
__( 'Sending…', 'adp-car-market-hub' )). - Passala a JavaScript tramite l'array
wp_localize_script()utilizzato dall'handle pertinente. Vedi Frontend Assets e Admin Assets per gli oggetti localizzati già in uso (ad esempioAS24CI,as24ciCompare,AS24CI_LEADS,AS24CI_BATCH). - Leggi il valore dalla corrispondente variabile globale nel codice JavaScript.
Fornire una nuova traduzione
- Copia
languages/adp-car-market-hub.potinlanguages/adp-car-market-hub-<locale>.poutilizzando il codice locale di WordPress (ad esempioes_ES). - Traduci le stringhe.
- Compila il file
.moinsieme al file.po. - Apri una pull request con entrambi i file.
Note operative
- Singolo text domain. Ogni stringa traducibile nel plugin utilizza
'adp-car-market-hub'. Non introdurre ulteriori text domain. - Mantieni aggiornato il file POT. Quando un collaboratore aggiunge o rimuove stringhe, rigenera il file POT nella stessa modifica, in modo che i file di traduzione possano essere uniti in modo pulito.
- Stringhe JavaScript. Poiché le stringhe JS vengono tradotte tramite
wp_localize_script(), appaiono nel file POT solo quando è presente la corrispondente chiamata__()lato PHP. Traduci sempre le stringhe JS prima in PHP. - Formattazione sensibile alla localizzazione. La formattazione dei numeri e delle valute è gestita dagli helper di localizzazione del plugin. Usa gli helper esposti dal plugin anziché reimplementare la logica di localizzazione nel tuo codice.
- Piattaforma di traduzione WordPress. Il plugin può essere tradotto al di fuori del repository attraverso qualsiasi flusso di lavoro gettext standard. Non è richiesto alcun servizio di traduzione esterno specifico.
Risoluzione dei problemi
- Una stringa non viene tradotta nel front-end. Verifica che la stringa sia avvolta in una funzione i18n con il text domain corretto. Verifica che la lingua sia installata in WordPress (Impostazioni → Generale → Lingua del sito) e che esista un file
.moper quella localizzazione in/languages. - Le stringhe appena aggiunte non appaiono nel file POT. Esegui nuovamente lo script di supporto POT. Verifica che il tuo file non si trovi in una delle cartelle escluse.
- Il testo lato JS è ancora in inglese dopo la traduzione in PHP. Verifica che la stringa venga passata tramite
wp_localize_script()per l'handle pertinente. Il plugin non rileva automaticamente le stringhe JS non tradotte. - I plurali mostrano sempre la forma singolare. Usa
_n()(o_nx()per il contesto) invece di__()per qualsiasi stringa che varia in base a un conteggio. - Verifica il comportamento nella versione corrente del plugin prima di pubblicare un'integrazione personalizzata. I nomi degli oggetti JavaScript localizzati possono evolvere tra i rilasci.