Newsgroup: it.comp.lang.delphi
Titolo: Multilingua...come affrontarlo...

Salve amici, devo affrontare un bel problema....sviluppare un'applicativo
"multilingua".
Voi come vi comportereste? Avevo iniziato con una routine che allo show
delle form, controllavo la lingua selezionata (all'avvio del pgm) e cambiavo
tutte le "caption" degli oggetti, ma mi sembra bruttissimo.
Altre idee?
Grazie!

 Altre idee?
Se ne e' gia' parlato diverse volte su questo NG e credo che la soluzione
migliore fosse quella di usare prodotti appositi, dei quali uno e' gia'
fornito di serie con Delphi (ma del quale mi sfugge il nome: Traslation
qualcosa).
Ciao
ACSH
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Ho già dato un'occhiata a quello di delphi e mi sembra di aver capito che
crea diversi exe per ogni lingua...una cosa direi oscena! :)

 crea diversi exe per ogni lingua...una cosa direi oscena! :)
Non necessriamente oscena. Dipende dal target dell'applicazione. A mio 
avviso la soluzione è ottima in tutte le situazioni dove, dopo 
l'installazione dell'applicazione, non sarà più necessario cambiare la 
lingua. Questo perchè tutto ciò che serve è nell'eseguibile e sia le 
dimensioni che le prestazioni non risentono del codice aggiuntivo di 
gestione della lingua.
Soluzioni diverse possono essere:
- crei una dll per ogni lingua e fai in modo che tutte quante esportino 
qualcosa tipo /function getString(ID: Integer): string;/ in modo che 
distribuendo la specifica dll della lingua l'applicazione è 
automaticamente adattata alla lingua richiesta.
- metti tutte le stringhe in un file di testo/archivio, in modo che 
editandolo puoi facilmente traslare l'applicazione.
- infarcisci il codice di /if/ ad ogni creazione di form, report, 
messaggio, ecc.
Ciao,
Gianluca.

 lingua.
Pero' questo non ti comporta l'aggravio di creare e distribuire n installer
per n lingue diverse?
Non e' forse meglio un solo installer con poi gli eventuali file ini/dll di
localizzazione? (ho in mente i vari software quali irfanview,smartftp, ecc)
Ciao
-- 
Morde. 
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 localizzazione? (ho in mente i vari software quali irfanview,smartftp, ecc)
Dipende da quanto pesa questo aggravio rispetto alle caratteristiche 
dell'applicazione, il numero di lingue da gestire, ecc.
Ad esempio, la soluzione delle dll a mio avviso è eccellente, però alla 
fine di costringe a scegliere se:
a) distribuire tutte le dll in un unico installer: aumentando le 
dimensioni dell'installar stesso;
b) creare piu installer per poter ottimizzare la distribuzione: 
spostando semplicemente il problema di prima "un pò più in là".
La soluzione (a) va bene se pensi che cambierai la lingua dinamicamente 
durante la vita dell'applicazione (ad esempio in relazione al login 
dell'utente) già installata: quindi la diminuzione di prestazioni dovuta 
al dover caricare dinamicamente tutte le stringhe è nettamente ripagata 
da questo tipo di dinamicità (perchè vedere gli utenti fare salti 
mortali per installare sulla stessa macchina la stessa applicazione in 
lingue diverse mi fa star male).
La soluzione (b) va bene se devi minimizzare il traffico nella 
distribuzione e nell'installazione e sei sicuro che una volta installata 
la tua applicazione non dovrà "parlare" altra lingua se non quella 
scelta. Però torniamo nella situazione precedente dove devi prevedere 
piu installar, in relazione alle varie lingue. A questo punto, tanto 
vale avere un unico eseguibile, lasciare a Delphi il problema della 
gestione delle stringhe e smazzarti i vari installer.
Alla fine tutto è da valutare in relazione al contesto... come al solito ;)
Ciao,
Gianluca

 Alla fine tutto è da valutare in relazione al contesto... come al solito ;)
Senza dubbio :-)
Forse le soluzione a e b non sono le uniche possibili: ho in mente come
agisce irfanview. Prova a vedere il sito 
http://www.irfanview.com/
cliccando sul menu' "IrfanView languages".
Se dovessi scrivere un programma con le localizzazioni, farei proprio come
irfanview: un solo installer, linguaggi da scaricarsi, e possibilita' di
cambiare runtime la lingua del software. Niente di piu' semplice per
l'utente, imho :-)
Avrei anche maggior economia nel gestirlo perche' si farebbe il packing
dell'installer una sola volta, e ogni lingua nuova diventerebbe un piccolo
filettino (da leggersi "failettino") che l'utente puo' scaricare dal sito e
aggiungere al software. Moltoo semplice e spedito :-)
Ciao!


 aggiungere al software. Moltoo semplice e spedito :-)
E dai la possibilità all'utente di tradursi il programma nella sua lingua...
fosse danese od ostrogoto senza romperti troppo!
Ciao, Vitto

 
Sottoscrivo, e' la cosa piu' semplice : ho un piccolo programmino 
freeware (una specie di post it) e le lingue sono personalizzabili con 
dei files .lng che non sono altro che files ini. Nel giro di un paio di 
anni dopo la sua pubblicazione sul web mi sono arrivate via email un 
sacco di traduzioni, tra cui arabo, cinese, coreano ecc.!
Per fare prima ho pure utilizzato una procedura del tipo :
   function readResource(resourceId:string;defaultValue:string):string;
Alla funzione passo, oltre all'identificatore, anche la stringa di 
default. La funzione, se non esiste la risorsa nel file ini, la scrive 
nel file stesso (chiaramente oltre a restituirla).
Ho cosi' tre  vantaggi:
1- il file ini si crea da solo
2- se una persona non traduce tutto o se faccio un'aggiornamento del 
programma il file ini del linguaggio che sto utilizzando si aggiorna 
automaticamente
3- non si possono mai avere errori del tipo  'manca la stinga per la 
risorsa x' per una cattiva traduzione oppure un aggiornamento del 
software con nuove stringhe
Ciao
Fabio