Successivo: I18N per traduttore, Precedente: Utilizzare gettext
, Su: Internazionalizzazione [Contenuti][Indice]
awk
gawk
prevede le seguenti variabili per l’internazionalizzazione:
TEXTDOMAIN
Questa 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
awk
della 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]