WPML

Scopri come registrare per la traduzione i testi inseriti dagli utenti provenienti da plugin e temi. Una volta registrati, puoi tradurli con la Traduzione stringhe.

Come registrare i testi inseriti dagli utenti

Quando un utente crea nuove stringhe o aggiorna le stringhe esistenti, queste devono essere registrate nella tabella delle stringhe di WPML.

Puoi effettuare questa chiamata con l’hook di azione wpml_register_single_string:

do_action( 'wpml_register_single_string', string $context, string $name, string $value )
  • $context – Il nome del plugin o del tema, in un formato leggibile dall’utente.
  • $name – Il nome della stringa, che aiuta il traduttore a capire cosa si sta traducendo.
  • $value – La stringa che deve essere tradotta.

Considera questo esempio di widget personalizzato, che include un titolo, un campo di input a riga singola e una textarea. Per registrare questi campi per la traduzione quando le opzioni del widget vengono salvate o aggiornate, usiamo la funzione di aggiornamento:

Usare l’hook di azione wpml_register_single_string
function update($new_instance, $old_instance){
    $instance = $old_instance;
    $instance['title']      = strip_tags($new_instance['title']);
    $instance['custom_input']   = strip_tags($new_instance['custom_input']);
    $instance['custom_textarea']    = $new_instance['custom_textarea'];
 
    //WPML
    /**
     * register strings for translation
     */
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - input field', $instance['custom_input'] );
    do_action( 'wpml_register_single_string', 'Widgets', 'Custom Widget - textarea field', $instance['custom_textarea'] );
    //WPML
 
    return $instance;
}

In questo esempio, diciamo a WPML che deve tradurre i testi inseriti dagli utenti per il campo di input e per la textarea. Questi testi saranno registrati nel contesto delle stringhe Widgets con il nome Custom Widgetinput field e Custom Widget – textarea field rispettivamente.

Una volta registrati i testi, puoi usare l’hook di azione wpml_translate_single_string per visualizzare le traduzioni sul front-end.

Come integrare la Traduzione stringhe con plugin e temi

Quando integri la Traduzione stringhe con plugin o temi, è importante assicurarsi che le chiamate esistano.

Implementare chiamate condizionali

Racchiudi le tue chiamate in istruzioni if_function_exists() in modo che, se WPML è attivato, la chiamata venga effettuata, e in caso contrario venga mantenuto il normale funzionamento.

Gestire l’attivazione ritardata di WPML

Come sviluppatore di temi o plugin, dovresti anche considerare il caso in cui WPML venga attivato molto tempo dopo che l’utente ha iniziato a usare il tuo tema o plugin.

In questi casi, le stringhe non verranno tradotte perché la chiamata a wpml_register_single_string non viene effettuata al momento della loro creazione. Per ovviare a questo problema, dovresti registrare tutte le stringhe utente ogni volta che viene caricata la schermata dell’area di amministrazione del plugin.

Sebbene questo aggiunga un tempo di esecuzione trascurabile, garantisce che le stringhe vengano sempre inviate alla traduzione e siano aggiornate.

Il codice dovrebbe prima verificare se la funzione wpml_register_single_string esiste. Se esiste, la funzione dovrebbe essere chiamata per registrare tutti i testi inseriti dagli utenti. Ecco come funziona:

  • Se la funzione viene chiamata con valori vuoti o NULL, WPML ignora queste chiamate.
  • Se una stringa esiste già e non è stata modificata, WPML ignora la chiamata.
  • La funzione interviene solo se vengono registrate stringhe nuove o modificate.

L’intera tabella di traduzione viene memorizzata nella cache, quindi chiamarla ripetutamente richiede pochissima potenza di elaborazione.

Risorse aggiuntive

Per registrare per la traduzione i testi hard-coded di temi e plugin, consulta il nostro articolo su come trovare le stringhe che non compaiono nella pagina Traduzione stringhe.

Per registrare per la traduzione le opzioni di temi o plugin, consulta la nostra guida sull’uso del file di configurazione della lingua.

Per tradurre gli elementi di temi o plugin in gruppo, consulta la nostra Traduzione dei pacchetti di stringhe.

Scritto da Amir · Ultimo aggiornamento 7 giugno 2024