Nonostante Timer sia un'applicazione Visual C++ concettualmente molto
semplice per il conteggio di un tempo, questo software è stato
un significativo banco di prova di alcune caratteristiche specifiche
di interfaccia utente, localizzazione e architettura che sono particolarmente
importanti per l'internazionalizzazione di programmi più complessi.
Spesso il requisito dell'internazionalizzazione impedisce di usare funzioni
disponibili già pronte nell'ambiente di sviluppo e rende necessario
progettarle specificatamente.
Le versioni in italiano, francese e inglese di Timer possono essere
scaricate. L'utilizzatore puņ sostituire
al file audio .wav il proprio jingle preferito.
|
Localizzazione del software
Tutte le stringhe di testo della finestra di dialogo, comprese quelle
statiche, non sono state scritte nel codice della descrizione della
risorsa, ma in un'unica tabella di stringhe nel file .rc. La traduzione
può essere direttamente effettuata sulle stringhe della tabella,
senza doverle cercare nelle istruzioni di definizione della specifica
risorsa. Tutte le stringhe sono UNICODE e sono state usate le routine
di testo API bimodali. Il codice che genera i messaggi di errore relativi
ai dati immessi è stato appositamente modificato riscrivendo
le funzioni DDV_ e DDX_ in modo che le finestre di dialogo d'errore,
oltre ad essere localizzate, siano conformi ai colori e l'aspetto grafico
dell'applicazione. Le uniche stringhe non presenti nella tabella sono
i testi bitmap dei pulsanti colorati, dei quali esiste un bitmap per
ciascuna lingua.
Tutte le stringhe della guida contestuale della finestra principale
di Timer sono generate dall'applicazione stessa usando chiamate all'API
WinHelp. Le funzioni dei tasti Esci e ? sono state appositamente
scritte in modo che le relative stringhe di guida siano fornite dal
sistema operativo. Ciò è stato fatto per evitare, ad esempio,
che appaia una stringa di guida contestuale in inglese quando viene
eseguita su un sistema operativo inglese una versione di Timer localizzata
in un'altra lingua.
|
Struttura del programma - .exe/.dll con
linking statico/dinamico
Il linking di Timer è statico, conseguentemente le
versioni localizzate comprendono tutte le risorse richieste dal programma.
Il linking statico è stato preferito per una portabilità
interpiattaforma più sicura.
Esiste anche una versione dell'applicazione realizzata con linking
dinamico, che consiste di un eseguibile e di una dynamic link library
(.dll) che contiene le risorse sia inglesi sia italiane. Eseguendo questa
configurazione l'interfaccia utente viene presentata in inglese o in
italiano in funzione della lingua impostata in Impostazioni internazionali
di Pannello di controllo.
Un'altra versione con linking dinamico consiste sempre dello
stesso eseguibile e di un'altra dynamic link library di dimensione minore
che contiene solo le risorse in una sola lingua specifica. L'interfaccia
utente conseguentemente presentata è sempre in italiano. Con
questo sistema è possibile localizzare in altre lingue semplicemente
fornendo nuove dynamic link library contenenti le risorse specifiche
alla lingua di interesse, senza dover apportare modifiche all'eseguibile.
|