Precedente: Ordinamento di printf, Su: I18N per traduttore [Contenuti][Indice]
awkLe funzionalità di internazionalizzazione di gawk sono state
appositamente implementate per avere il minimo impatto possibile sulla
portabilità, verso altre versioni di awk, dei programmi
awk che ne fanno uso.
Si consideri questo programma:
BEGIN {
TEXTDOMAIN = "guide"
if (Test_Guide) # da impostare tramite -v
bindtextdomain("/test/guide/messages")
print _"don't panic!"
}
Per il modo in cui è scritto, non funzionerà con altre versioni di
awk.
Tuttavia, è in realtà quasi portabile, e richiede modifiche minime:
TEXTDOMAIN non avranno effetto alcuno,
perché TEXTDOMAIN non è una variabile speciale in altre
implementazioni di awk.
awk considerano le stringhe marcate
come la concatenazione di una variabile di nome _ con la stringa che
viene subito dopo.98
Tipicamente, la variabile _ ha come valore la stringa nulla
(""), il che produce come risultato la stringa
originale.
dcgettext(),
dcngettext() e bindtextdomain(), il programma awk
può essere reso eseguibile, ma
tutti i messaggi verranno inviati nella lingua originale del programma.
Per esempio:
function bindtextdomain(dir, domain)
{
return dir
}
function dcgettext(string, domain, category)
{
return string
}
function dcngettext(string1, string2, number, domain, category)
{
return (number == 1 ? string1 : string2)
}
printf o
sprintf() non è portabile.
Per supportare gettext() nella programmazione in linguaggio C,
molte versioni C di sprintf() supportano specificatori di posizione.
Ma la cosa funziona solo se nella chiamata di funzione sono stati specificati
argomenti a sufficienza. Molte
versioni di awk passano i formati e gli argomenti di printf,
senza modificarli, alla funzione di libreria in linguaggio C sprintf(),
ma solo un formato e un argomento alla volta. Quel che succede se si usa una
specificazione di posizione resta indeterminato.
Tuttavia, poiché le specificazioni di posizione sono usate principalmente
per le stringhe di formattazione tradotte, e poiché le versioni
non-GNU di awk non utilizzano mai le stringhe tradotte, ciò non
dovrebbe, in pratica, causare problemi.
Precedente: Ordinamento di printf, Su: I18N per traduttore [Contenuti][Indice]