Newsgroup: it.comp.lang.delphi
Titolo: Personalizzazione lingue con file .ini esterno

Ciao a tutti,
in una mia applicazione ho utilizzato il metodo del file .ini (che io chiamo
.lng) esterno per personalizzare labels e messages.
Questo permette all'utente finale di personalizzarsi il programma senza che
io debba gestire direttamente le traduzioni.
Il tutto funziona egregiamente da tre anni ma ora abbiamo dei clienti
Sloveni e il metodo non mi permette di visualizzare dei caratteri speciali
(tipo la Z con l'accento sopra) che sono visualizzati come delle barrette.
Nel file .lng naturalmente vedo tutti i caratteri in questione ma non quando
li sostituisco nelle labels.
C'č qualche anima pia che ha qualche suggerimento?
Grazie, Vittorio

 C'è qualche anima pia che ha qualche suggerimento?
Io ho avuto un problema del tutto simile al tuo, ma ho utilizzato un 
procedimento differente per l'internazionalizzazione.
In particolare, disponevo di un foglio di Excel creato da me (per 
facilitare i "traduttori" nella compilazione) con una macro (codificata 
in VBA...urgh!) che si occupava di esportare i testi in file esterni con 
formato del tutto simile al tuo.
Per poter esportare lingue utilizzando differenti "character set", ho 
dovuto modificare le Impostazioni della Lingua in Windows XP 
selezionando l'uso del Cirillico (nel mio caso) per tutte le 
applicazioni che non supportano Unicode (quindi anche quelle realizzate 
con Delphi per Win32).
Una volta eseguita tale impostazione, l'esportazione in file di testo 
delle colonne in cirillico avveniva correttamente, ma suppongo si possa 
ottenere qualcosa di simile anche usando un altro editor di testo puro.
In secondo luogo, oltre all'impostazione della lingua nel Pannello di 
Controllo, è necessario modificare il Charset del Font utilizzato 
all'interno dell'applicazione; mentre alcuni controlli Win32, come 
*TListView*, *TTreeView*, *TToolBar* e così via seguono le impostazioni 
globali del sistema, i restanti controlli tracciati interamente in 
Delphi usando appunto il Charset per definire la pagina di caratteri da 
utilizzare per rappresentare il testo.
La proprietà /ParentFont/ può essere di grande aiuto in questo caso, 
riflettendo sui controlli "child" le impostazioni del "parent", tuttavia 
per esigenze specifiche ho dovuto implementare anche un metodo che, 
attraverso le funzioni RTTI di Delphi, spargesse l'impostazione del 
Charset appropriato su tutti i controlli visualizzati in un determinato 
momento.
Processo laborioso, insomma, però ha funzionato. ;-)
Sono (quasi) certo che esistano metodi migliori, ma da una ricerca 
effettuata con Google l'unica risorsa che ho trovato a riguardo di 
questa specifica problematica è...una mia richiesta d'aiuto. :-|
Almeno adesso ho la consolazione di...non essere solo! :-D
Ciao!
-- 
MARCO «Alka» BREVEGLIERI
   (
http://www.marco.breveglieri.name
)
Leggi le FAQ di ICLD: 
http://icld.altervista.org

 delle barrette.  
IMHO e' un problema di encoding del file.
Mi vengono in mente due soluzioni:
1. Utilizzi un encoding che supporta i caratteri sloveni (es. UTF-8)
2. Utilizzi una funzione di conversione tipo htmlentities per
convertire e riconvertire caratteri speciali nel formato standard &#123;
-- 
I am what I am, I do what I can
Vuoi supportarmi? 
http://url.repository.biz/go/3E
Do. Or do not. There is not try.

 Ciao!
Grazie! Sei stato esauriente come al solito, provo a seguire i tuoi consigli
e ti faccio sapere
Vittorio

 convertire e riconvertire caratteri speciali nel formato standard &#123;
Non ho mai provato ad inserire delle htmlentities in una label di Delphi,
sicuro che possa funzionare?
Ciao e grazie, Vittorio

 Delphi, sicuro che possa funzionare?
Direttamente  no, come ho scritto devi convertire e riconvertire ossia
salvi nel file ini le entity ed all'atto della lettura le riconverti.


 ma poi l'applicazione non è più riuscita a leggere le traduzioni...
probabilmente perchè quando salvi con notepad
all'inizo del file viene aggiunto il BOM
Cordialmente,
Stefano