Precedente: Ordinamento di printf, Su: I18N per traduttore [Contenuti][Indice]
awk
Le 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]