Successivo: I18N per traduttore, Precedente: Utilizzare gettext, Su: Internazionalizzazione [Contenuti][Indice]
awkgawk prevede le seguenti variabili per l’internazionalizzazione:
TEXTDOMAINQuesta variabile indica il dominio di testo dell’applicazione.
Per compatibilità con il comando GNU gettext, il valore di default
è "messages".
_"questo è un messaggio da tradurre"Costanti di tipo stringa marcate con un trattino basso iniziale
sono candidate per essere tradotte al momento dell’esecuzione del
programma gawk.
Costanti di tipo stringa non precedute da un trattino basso non
verranno tradotte.
gawk fornisce le seguenti funzioni al servizio
dell’internazionalizzazione:
dcgettext(string [, dominio [, categoria]])Restituisce la traduzione di stringa nel
dominio di testo dominio per la categoria di localizzazione categoria.
Il valore di default per dominio è il valore corrente di TEXTDOMAIN.
Il valore di default per categoria è "LC_MESSAGES".
Se si assegna un valore a categoria, dev’essere una stringa uguale a
una delle categorie di localizzazione note, descritte
nella precedente sezione.
Si deve anche specificare un dominio di testo. Si usi TEXTDOMAIN se
si desidera usare il dominio corrente.
ATTENZIONE: L’ordine degli argomenti per la versione
awkdella funzionedcgettext()è differente, per una scelta di progetto, dall’ordine degli argomenti passati alla funzione C che ha lo stesso nome. L’ordine della versioneawkè stato scelto per amore di semplicità e per consentire di avere dei valori di default per gli argomenti che fossero il più possibile simili, come stile, a quello diawk.
dcngettext(stringa1, stringa2, numero [, dominio [, categoria]])Restituisce la forma, singolare o plurale, da usare a seconda del valore
di numero per la
traduzione di stringa1 e stringa2 nel dominio di testo
dominio per la categoria di localizzazione categoria.
stringa1 è la variante al singolare in inglese di un messaggio,
e stringa2 è la variante al plurale in inglese dello stesso messaggio.
Il valore di default per dominio è il valore corrente di TEXTDOMAIN.
Il valore di default per categoria è "LC_MESSAGES".
Valgono le stesse osservazioni riguardo all’ordine degli argomenti
fatte a proposito della funzione dcgettext().
bindtextdomain(directory [, dominio ])Cambia la directory nella quale
gettext va a cercare i file .gmo, per il caso in cui questi
non possano risiedere nelle posizioni standard
(p.es., in fase di test).
Restituisce la directory alla quale dominio è “collegato”.
Il dominio di default è il valore di TEXTDOMAIN.
Se l’argomento directory è impostato alla stringa nulla (""),
bindtextdomain() restituisce il collegamento corrente applicabile
al dominio specificato.
Per usare queste funzionalità in un programma awk,
va seguita la procedura qui indicata:
TEXTDOMAIN al dominio di testo del
programma. È meglio fare ciò all’interno di una regola BEGIN
(vedi la sezione I criteri di ricerca speciali BEGIN ed END),
ma si può anche fare dalla riga di comando, usando l’opzione -v
(vedi la sezione Opzioni sulla riga di comando):
BEGIN {
TEXTDOMAIN = "guide"
…
}
print _"hello, world" x = _"you goofed" printf(_"Number of users is %d\n", nusers)
dcgettext():95
if (assonnato)
messaggio = dcgettext("%d clienti mi scocciano\n", "adminprog")
else
messaggio = dcgettext("mi diverto con %d clienti\n", "adminprog")
printf(messaggio, numero_clienti)
In questo esempio, la chiamata a dcgettext() specifica un diverso
dominio di testo ("adminprog") in cui trovare il
messaggio, ma usa la categoria di default "LC_MESSAGES".
Il precedente esempio funziona solo se numero_clienti è un numero maggiore
di uno.
Per questo esempio sarebbe più appropriato usare la funzione dcngettext():
if (assonnato)
messaggio = dcngettext("%d cliente mi scoccia\n",
"%d clienti mi scocciano\n",
numero_clienti, "adminprog")
else
messaggio = dcngettext("mi diverto con %d cliente\n",
"mi diverto con %d clienti\n",
numero_clienti, "adminprog")
printf(messaggio, numero_clienti)
bindtextdomain():
BEGIN {
TEXTDOMAIN = "guide" # dominio di testo regolare
if (Testing) {
# dove trovare il file in prova
bindtextdomain("testdir")
# joe si occupa del programma adminprog
bindtextdomain("../joe/testdir", "adminprog")
}
…
}
Vedi la sezione Un semplice esempio di internazionalizzazione.
per un programma di esempio che illustra i passi da seguire per creare
e usare traduzioni nei programmi awk.
Successivo: I18N per traduttore, Precedente: Utilizzare gettext, Su: Internazionalizzazione [Contenuti][Indice]