Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [DELPHI] Creare un'applicazione VCL multilingua

    Sto cercando di introdurre una seconda lingua in un programma Delphi vcl, cosa non semplice come in altri ambienti di sviluppo.
    Per la traduzione delle labels dei componenti visuali è possibile scrivere una funzione da invocare at OnCreate allo scopo di inserire i testi corretti?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Creare applicazioni multilingua in Delphi è semplicissimo, ed esistono miriadi di possibilità, usando tool incorporati oppure ricorrendo a componenti generalmente disponibili.

    Guarda questa ricerca Google per un approfondimento.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Il fatto è che quei componenti sono a pagamento ed alcuni costano davvero molto.

    Per vlc Delphi include un sistema di traduzione interna che, una volta abilitato, mi ha dato subito un memory leak rilevato dal modulo Eureka Log (al ché mi sono molto spaventato!), oltre a fare copie dei vari dfm per ogni lingua preoccupandomi non poco.

    Di certo è che la via semplice è quella di mollare vcl e passare a firemonkey, cosa non immediata.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Quote Originariamente inviata da denis76 Visualizza il messaggio
    Il fatto è che quei componenti sono a pagamento ed alcuni costano davvero molto.
    Tieni conto che anche lavorarci due giorni ha il suo costo.
    Comunque queste sono ovviamente scelte personali, per cui sorvoliamo.

    Quote Originariamente inviata da denis76 Visualizza il messaggio
    Per vlc Delphi include un sistema di traduzione interna che, una volta abilitato, mi ha dato subito un memory leak rilevato dal modulo Eureka Log (al ché mi sono molto spaventato!), oltre a fare copie dei vari dfm per ogni lingua preoccupandomi non poco.
    Bisogna vedere in quale frangente si verifica il memory leak, e se è sistematico o solo all'uscita dal programma, ad esempio.

    Quote Originariamente inviata da denis76 Visualizza il messaggio
    Di certo è che la via semplice è quella di mollare vcl e passare a firemonkey, cosa non immediata.
    In base alle specifiche che hai riportato, non sarebbe sufficiente fare un semplice file INI da cui caricare le stringhe nella lingua desiderata? Facendo un file per lingua, o un file per "modulo logico" della tua applicazione, non so...
    Qual è il problema di questo approccio?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Era quello che pensavo di fare.
    Per i componenti visuali è possibile scrivere una funzione che venga incovata ad onCreate, che controlli tutti i componenti attivi e traduca le labels?

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Quote Originariamente inviata da denis76 Visualizza il messaggio
    Per i componenti visuali è possibile scrivere una funzione che venga incovata ad onCreate, che controlli tutti i componenti attivi e traduca le labels?
    Nella OnCreate puoi fare tutto quello che vuoi. Cosa non ti convince?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Cercavo una funzione già fatta che, all'evento onCreate, cercasse tutti i componenti visuali (pulsanti, label, descrizioni di goupbox) contenuti nel form e per ogn'uno di esso verificasse se c'è la traduzione in un elenco da fornirgli.

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Quote Originariamente inviata da denis76 Visualizza il messaggio
    Cercavo una funzione già fatta che, all'evento onCreate, cercasse tutti i componenti visuali (pulsanti, label, descrizioni di goupbox) contenuti nel form e per ogn'uno di esso verificasse se c'è la traduzione in un elenco da fornirgli.
    Una funzione già fatta e pronta all'uso per fare esattamente questa cosa non c'è, ma usando l'RTTI (RunTime Type Information), non è difficile da creare, magari che agisca su un generico TComponent e su tutti quelli di cui è l'owner, così puoi passargli un Form, un Frame o qualsiasi altra cosa.

    Nel codice dovresti usare le funzioni dell'RTTI per esaminare le proprietà possedute da ciascun componente e, se appartengono ai tipi che vuoi "localizzare", estrarne il valore e usare il nome del componente e della proprietà per andare a ricercare in un file INI le corrispondenti traduzioni, se presenti.

    Prova ad abbozzare il codice, poi approfondiamo se ci sono problemi.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Sto preparando la funzione che elenchi tutte le labels di un form e vada a vedere se c'è una traduzione.
    Certo è che su altri ambienti di sviluppo, anche gratuiti, per tradurre basta fare 2 - 3 click e tutto funziona.

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Quote Originariamente inviata da denis76 Visualizza il messaggio
    Certo è che su altri ambienti di sviluppo, anche gratuiti, per tradurre basta fare 2 - 3 click e tutto funziona.
    Quali sono? Io non ne conosco. :|
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.