Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: mimmolazzaro - Marzo 23, 2013, 07:09:11 am

Titolo: Localizzazione applicazione
Inserito da: mimmolazzaro - Marzo 23, 2013, 07:09:11 am
Buongiorno, sono nuovo del forum; sono un vecchio [in tutti i sensi  :) ] programmatore Delphi e, dopo alcuni anni di pensione, mi è tornata la "fissa" della programmazione. Non volendo spendere soldini o rubare in rete, mi sono orientato subito per il mondo open e, quindi, Lazarus.

Ho installato regolarmente (e da qualche mese utilizzo) Lazarus, perfettamente italianizzato. Chiedo due cose:

1) Come fare per usare Lazarus in versione inglese (certe traduzioni di opzioni sono francamente disarmanti);

2) Viceversa, come fare per avere messaggi e pulsanti in italiano nei programmi compilati. La cosa strana è che a design time esse sono perfettamente italiane, come l'ambiente di sviluppo del resto, mentre a run time tutto ritorna al vecchio inglese.

Spero di essermi spiegato.
Intanto saluto tutti!
Titolo: Re:Localizzazione applicazione
Inserito da: nomorelogic - Marzo 23, 2013, 08:42:23 am
ciao mimmolazzaro e benvenuto

su che sistema operativo lavori?
Titolo: Re:Localizzazione applicazione
Inserito da: mimmolazzaro - Marzo 23, 2013, 08:53:35 am
ciao mimmolazzaro e benvenuto
Grazie.

Citazione
su che sistema operativo lavori?
Windows (7 Ultimate)
Titolo: Re:Localizzazione applicazione
Inserito da: Stilgar - Marzo 23, 2013, 12:12:51 pm
Ben arrivato.
Titolo: Re:Localizzazione applicazione
Inserito da: bonmario - Marzo 23, 2013, 12:38:16 pm
1) Come fare per usare Lazarus in versione inglese (certe traduzioni di opzioni sono francamente disarmanti);

Vai su: Strumenti ==> Opzioni ==> Scrivania
e lì cambi la lingua. Se non ricordo male, devi riavviare Lazarus per far sì che la modifica abbia effetto
P.S. Se vuoi, puoi sempre sistemare le traduzioni e poi spedirle per posta per farle aggiornare.


Ciao, Mario
Titolo: Re:Localizzazione applicazione
Inserito da: mimmolazzaro - Marzo 23, 2013, 03:44:52 pm
1) Come fare per usare Lazarus in versione inglese (certe traduzioni di opzioni sono francamente disarmanti);
Vai su: Strumenti ==> Opzioni ==> Scrivania
e lì cambi la lingua. Se non ricordo male, devi riavviare Lazarus per far sì che la modifica abbia effetto

Tks!
Mi rimane la seconda questione...
Come vi regolate voi con le applicazioni che producete? Vi tenete le caption e messaggi in inglese?

Citazione
P.S. Se vuoi, puoi sempre sistemare le traduzioni e poi spedirle per posta per farle aggiornare.

Magari piu in la...  ;)
Titolo: Re:Localizzazione applicazione
Inserito da: bonmario - Marzo 23, 2013, 07:47:24 pm
Io ho trovato una soluzione, non molto ortodossa, ma funzionante.
Tra i sorgenti di lazarus ce ne è uno che si chiama "lclstrconsts.pas". Basta tradurre le stringhe di quel sorgente e ricompilare Lazarus, e tutti i componenti dei programmi compilati da lì in poi, che contengono quelle parole, saranno tradotti in italiano.

Ripeto, non è la soluzione più ortodossa, ma, almeno per quanto mi riguarda, è quella che mi permette di fare il lavoro una volta sola e fa funzionare il tutto su tutti i programmi che compilo.

Ciao, Mario
Titolo: Re:Localizzazione applicazione
Inserito da: mimmolazzaro - Marzo 23, 2013, 08:15:28 pm
Io ho trovato una soluzione, non molto ortodossa, ma funzionante.
Tra i sorgenti di lazarus ce ne è uno che si chiama "lclstrconsts.pas". Basta tradurre le stringhe di quel sorgente e ricompilare Lazarus, e tutti i componenti dei programmi compilati da lì in poi, che contengono quelle parole, saranno tradotti in italiano.

Ripeto, non è la soluzione più ortodossa, ma, almeno per quanto mi riguarda, è quella che mi permette di fare il lavoro una volta sola e fa funzionare il tutto su tutti i programmi che compilo.

Si, era quello che avevo pensato anch'io ma poi mi sono detto: se l'ambiente di Lazarus è italianissimo persino nei componenti a design time, dev'esserci il modo di utilizzare la localizzazione che funziona con l'ambiente anche per i compilati. Ci sono dei file *.po che hanno a che fare con la localizzazione ma non ho capito come inserirli e quali inserire nell'eseguibile.

Ciao e grazie ancora
Mimmo
Titolo: Re:Localizzazione applicazione
Inserito da: Stilgar - Marzo 23, 2013, 10:21:10 pm
Mimmo i file .po sono esterni all'applicazione.
Il programma scatena le chiamate e vengono chiamati quelli al bisogno.
La wiki di lazarus sull'argomento è abbastanza criptica e oscura sui meccanismi interni.
In ogni caso usano metodologie consolidate dell'open source. Ogni caption funge da chiave per la localizzazione, non trovando un valore, restituisce la chiave ... se non ho preso una cantonata da paura ;)

Stilgar
Titolo: Re:Localizzazione applicazione
Inserito da: El Salvador - Marzo 24, 2013, 12:35:48 am
Citazione
Come vi regolate voi con le applicazioni che producete? Vi tenete le caption e messaggi in inglese?
Provato a cambiare la lingua nelle opzioni del progetto (opzione progetto->informazioni di versione)?
Titolo: Re:Localizzazione applicazione
Inserito da: bonmario - Marzo 24, 2013, 07:19:29 am
Ci sono dei file *.po che hanno a che fare con la localizzazione ma non ho capito come inserirli e quali inserire nell'eseguibile.

Ciao e grazie ancora
Mimmo

Ne avevamo parlato qui: http://www.lazaruspascal.it/index.php?topic=535.0
Prova a dare un occhio.
La differenza di quella soluzione rispetto a quella che ho scritto prima è sostanzialmente nel fatto che devi creare i files "po" per ogni applicativo che compili.

Ciao, Mario
Titolo: Re:Localizzazione applicazione
Inserito da: mimmolazzaro - Marzo 25, 2013, 06:46:15 am
Provato a cambiare la lingua nelle opzioni del progetto (opzione progetto->informazioni di versione)?

L'avevo fatto e ricontrollato. Settando <Language selection> a Italiano tutto rimane come prima, cioe' messaggi in inglese.
Titolo: Re:Localizzazione applicazione
Inserito da: mimmolazzaro - Marzo 25, 2013, 06:55:29 am
Ne avevamo parlato qui: http://www.lazaruspascal.it/index.php?topic=535.0
Prova a dare un occhio.

Grazie di questa segnalazione, Mario. Il mio problema è infatti trattato in quel thread.
Anche a me, una chiamata così

Codice: [Seleziona]
MessageDlg('Titolo', 'Msg', mtError, [mbYes, mbNo, mbOK, mbCancel, mbHelp, mbClose], 0);

mi produce pulsanti in inglese. Ho visto che tu in Linux ottieni il giusto comportamento e che in W7 non riuscivi invece ad averlo. E anch'io sono infatti in W7...  :'(

Titolo: Re:Localizzazione applicazione
Inserito da: El Salvador - Marzo 25, 2013, 01:46:38 pm
Devi chiamare la procedura TranslateUnitResourceStrings all'avvio della tua applicazione (credo che basti nell'evento onformcreate del form principale). Prova a seguire questo esempio http://wiki.freepascal.org/Translations_/_i18n_/_localizations_for_programs#Translating_at_start_of_program (http://wiki.freepascal.org/Translations_/_i18n_/_localizations_for_programs#Translating_at_start_of_program)


Edit: I file .po tradotti del LCL li trovi nella cartella lcl\languages della cartella Lazarus (es. C:\lazarus\lcl\languages\ )
Titolo: Re:Localizzazione applicazione
Inserito da: Legolas - Marzo 25, 2013, 03:24:24 pm
Oppure questo esempio:

http://wiki.freepascal.org/Getting_translation_strings_right#ResourceStrings_in_your_Application (http://wiki.freepascal.org/Getting_translation_strings_right#ResourceStrings_in_your_Application)

Il testo delle caption viene mostrato correttamente in italiano
Titolo: Re:Localizzazione applicazione
Inserito da: mimmolazzaro - Marzo 26, 2013, 07:39:19 am
Prova a seguire questo esempio http://wiki.freepascal.org/Translations_/_i18n_/_localizations_for_programs#Translating_at_start_of_program (http://wiki.freepascal.org/Translations_/_i18n_/_localizations_for_programs#Translating_at_start_of_program)

Oppure questo esempio:
http://wiki.freepascal.org/Getting_translation_strings_right#ResourceStrings_in_your_Application (http://wiki.freepascal.org/Getting_translation_strings_right#ResourceStrings_in_your_Application)

Ma nooooo?!  :-[
Sapeste quante volte me le sono rigirate quelle pagine!
Beh, certo, chi va di fretta... così imparo.

Grazie ragazzi!
p.s. ma perchè non mi sono iscritto prima al forum?  ;)