Indice

WordPress: La Localizzazione

Tecnologia di Localizzazione

Gli sviluppatori di WordPress hanno deciso di usare come motore di localizzazione il GNU gettext.

gettext traduce ogni singolo messaggio mostrato all'utente, sia esso un intero paragrafo o una semplice parola. WordPress dispone di due funzioni per la localizzazione, __() che viene usata per passare parametri ad altre funzioni e _e() che viene usata per mostrare direttamente a video il messaggio.

__($message)
Cerca nel modulo di localizzazione la traduzione di $message, e restitusce la traduzione ad una eventuale altra funzione PHP. Se non trova la traduzione restituisce $message.

_e($message)
Cerca nel modulo di localizzazione la traduzione di $message, e la passa alla funzione echo di PHP. Se non trova la traduzione restituisce $message.

Il framework di gettext è usato quasi ovunque in WordPress. Tuttavia ci sono alcuni punti del codice sorgente di WordPress in cui non si è reso possibile usarlo. Vedere Files da Tradurre Direttamente per maggiori dettagli.

gettext Files

Nel framework di gettext ci sono tre tipi di files. Durante il processo di localizzazione tali files vengono usati e/o generati dai tools dilocalizzazione nel modo seguente:

POT (Portable Object Template) files
Il primo passo nel processo di localizzazione è l'uso di un programma che cerca attraverso il codice sorgente di WordPress ed estrae tutti i messaggi passati alle funzioni __() e _e(). Questo elenco di messaggi in lingua inglese viene messo in uno speciale template file formattato (POT file) che è alla base di qualsiasi traduzione. Generalmente il file POT di WordPress può essere scaricato dal sito quindi non dovrebbe essere necessario crearlo. Possono essere realizzati dei POT separati per i temi ed i plugins (se, ovviamente lo sviluppatore del tema / plugin ha avuto cura di usare le funzioni __() e _e()).

PO (Portable Object) files
Il secondo passo nel processo di localizzazione consiste nel lavoro di traduzione nella lingua desiderata di tutti i messaggi contenuti nel file POT (lavoro svolto da un traduttore umano visto che i programmi di traduzione sono inaffidabili). I messaggi in Inglese e quelli tradotti vengono salvati in un file PO.

MO (Machine Object) files
L'ultimo passo nel processo di localizzazione consiste nel far processare il file PO da un programma che lo traduca in binario. Questo file compilato ed ottimizzato rende più veloci le operazioni di ricerca da parte del software localizzato.

L'Header del File PO

All'inizio di un file PO si trova l'header. Questa porzione di file fornisce informazioni sul software e la versione ai quali la traduzione è destinata, chi è il traduttore, e quando è stato creato. Alcune parti dell'header sono universali per tutte le traduzioni di WordPress:

# LANGUAGE (LOCALE) translation for WordPress.
# Copyright (C) YEAR WordPress contributors.
# This file is distributed under the same license as the WordPress package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: WordPress VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-02-27 17:11-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

Formato dei Messaggi

Quello che segue è un esempio di ciò che è contenuto nella versione originale del file.

#: wp-comments-post.php:13
msgid "Sorry, comments are closed for this item."
msgstr ""

#: wp-comments-post.php:29
msgid "Sorry, you must be logged in to post a comment."
msgstr ""

#: wp-comments-post.php:35
msgid "Error: please fill the required fields (name, email)."
msgstr ""

Mentre questo è l'esempio qui sopra con implementata la traduzione italiana.

#: wp-comments-post.php:13
msgid "Sorry, comments are closed for this item."
msgstr "Spiacente, i commenti per questo post sono chiusi."

#: wp-comments-post.php:29
msgid "Sorry, you must be logged in to post a comment."
msgstr "Spiacente, devi essere loggato per postare un commento."

#: wp-comments-post.php:35
msgid "Error: please fill the required fields (name, email)."
msgstr "Errore: compilare i seguenti campi (nome, email)."

Editing di un file .po

I file .po possono essere generati analizzando i sorgenti o partendo dal file .pot descritto nella sezione seguente. Un buon editor per i file .po è poEdit scaricabile liberamente. Quelli che seguono sono i passi necessari per localizzare un tema / plugin che non dispone del file .POT.

  1. Aprire poEdit.
  2. Selezionare File → Nuovo Catalogo….
  3. Inserire il nome del progetto e gli altri dati relativi al traduttore ed ai alla lingua.
  4. Spostarsi sul tab Percorsi.
  5. Selezionare l'icona Nuovo Oggetto.
  6. Inserire il percorso dei files da analizzare e premere Invio.
  7. Spostarsi sul tab Parole chiave.
  8. Selezionare l'icona Nuovo Oggetto.
  9. Inserire __ e premere Invio.
  10. Selezionare l'icona Nuovo Oggetto.
  11. Inserire _e e premere Invio.
  12. Premere Ok.
  13. Inserire il nome del file .po (E' tutto più semplice se come percorso si imposta . e si salva il file .po nella cartella dove risiede il codice da analizzare).
  14. Dovrebbe apparire una finestra dal titolo Update Summary contenente l'elenco di tutti i messaggi da tradurre rilevati. Premere Ok.
  15. Localizzare i messaggi.
  16. Salvare nuovamente il file .po .

Dal file .po al file .mo

Con poEdit è possibile generare il file .mo semplicemente andando su File → Salva con nome… ed indicare il file .mo. In alternativa, molto più semplicemente, in File → Preferenze… spostarsi sul tab Editor e flaggare Compila automaticamente il file .mo al salvataggio.

:!: N.B.: Nell'attuale versione 1.4.1 quest'ultima opzione è attiva di default.

Localizzazione di WordPress

Ecco i semplici passi per trasformare il software nella nostra lingua.

Localizzazione di Temi e Plugins

Il procedimento per la localizzazione dei plugins è analogo a quello dei temi.

Text Domains

Il primo passo nel preparare un tema o un plugin è decidere il text domain.
Il text domain serve per distiguere i messagi localizzati del tema o plugin da localizzare rispetto a quelli di altri temi o plugins e dal resto di WordPress.
Un text domain è tipicamente una stringa che identifica il tema o plugins da localizzare (tipicamente si usa il nome del tema o plugin senza estensione).
Per esempio il trext domain del tema di default di WordPress è kubrick.
Una volta deciso il text domain bisogna istruire WordPress rigurdo la sua esistenza.
Per i plugins è necessario inserire la seguente funzione in un punto che preceda l'output di qualsiasi messaggio.

load_plugin_textdomain ($domain);

Un buon posto è il metodo init del plugin.

add_action ('init', 'my_plugin_init');
 
function my_plugin_init ()
{
  load_plugin_textdomain ('mydomain');
}

Per i temi sarà sufficente mettere all'inizio del file functions.php, contenuto nella directory del tema, la seguente funzione:

load_theme_textdomain ($domain);

Il tema o plugin è pronto per essere localizzato. E'necessario specificare il text domain in tutte le chiamate alle funzioni di localizzazione.