Progetto multilingua, non funziona dopo l'installazione

di il
11 risposte

Progetto multilingua, non funziona dopo l'installazione

Salve,
ho sviluppato questo test di esempio per creare un progetto di Setup per un applicazione WinForm Multilingua.

Ho utilizzato Visual Studio 2022 e i file .resx per tradurre in tre lingue.

Il progetto test ha solo il Form1 come interfaccia utente, quindi i file .resx sono:

Form1.resx = Italiano (default)
Form1.en.resx = Inglese
Form1.ro.resx = Rumeno

Ho gestito il cambio lingua con:

CultureInfo("it");
CultureInfo("en");
CultureInfo("ro");

E aggiorno i componenti con:

this.Controls.Clear();
InitializeComponent();

Quando avvio il progetto da Visual Studio funziona tutto ok.
Creo il Setup e funziona solo la lingua Italiano (default), al cambio lingua si vedono i componenti fare il refresh, quindi l'aggiornamento ma non carica la lingua selezionata.

Credo che il resx default lo incorpora nel progetto di setup e gli altri no, è solo una teoria.

Cosa potrei provare per risolvere?

Qui 2 immagini per capire meglio:

https://stefanonocentini.it/Visual-Studio.pn
https://stefanonocentini.it/Visual-Studio-Resx.pn

11 Risposte

  • Re: Progetto multilingua, non funziona dopo l'installazione

    race_web ha scritto:


    E aggiorno i componenti con:
    this.Controls.Clear();
    InitializeComponent();
    Io eviterei assolutamente di invocare il metodo InitializeComponent() all'esterno del costruttore e soprattutto più di una volta quando il Form è in vita, dopo che è già stato invocato dal costruttore.

    Non sono sicuro che si possa "switchare" la lingua in questo modo, ossia live in tempo reale, all'interno di un'applicazione Windows Forms: a mio avviso, dovresti prevedere una selezione che avvisi della necessità di riavviarla se la lingua viene cambiata.

    Del resto, dubito che l'utente finale cambi lingua in continuazione...

    Ciao!
  • Re: Progetto multilingua, non funziona dopo l'installazione

    Io eviterei assolutamente di invocare il metodo InitializeComponent() all'esterno del costruttore e soprattutto più di una volta quando il Form è in vita, dopo che è già stato invocato dal costruttore.

    Non sono sicuro che si possa "switchare" la lingua in questo modo, ossia live in tempo reale, all'interno di un'applicazione Windows Forms: a mio avviso, dovresti prevedere una selezione che avvisi della necessità di riavviarla se la lingua viene cambiata.
    [/quote]

    Fatto!!
    Ma nulla continua a non caricare le ulteriori lingue che sono nei file .resx
    Ma non devo fare nulla per quei file? Li carica automaticamente come "Output primario del progetto" e li compula nell'exe?
    Perchè io non li ritrovo dopo l'installazione.
  • Re: Progetto multilingua, non funziona dopo l'installazione

    race_web ha scritto:


    Fatto!!
    Ma nulla continua a non caricare le ulteriori lingue che sono nei file .resx
    Ma non devo fare nulla per quei file? Li carica automaticamente come "Output primario del progetto" e li compula nell'exe?
    Perchè io non li ritrovo dopo l'installazione.
    Se non ricordo male, la lingua deve essere quella selezionata a livello di sistema, oppure la specifichi in modo esplicito all'interno del file .config associato all'eseguibile.

    Hai provato a documentarti in merito all'uso dei file di risorse e al funzionamento del sistema?
  • Re: Progetto multilingua, non funziona dopo l'installazione

    Si ma ci sono degli esempi contorti e lunghi come spesso trovo nei siti Microsoft, gli esempi che ho visto su YouTube o altri blog personali dove a loro funzionano, a me non funzionano, o saltano un passaggio fondamentale anche piccolissimo oppure sono proprio sfortunato.

    Credo proprio che alla fine utilizzerò il Database per archiviare le lingue e manderò a quel paese i file resx
  • Re: Progetto multilingua, non funziona dopo l'installazione

    race_web ha scritto:


    Si ma ci sono degli esempi contorti e lunghi come spesso trovo nei siti Microsoft, gli esempi che ho visto su YouTube o altri blog personali dove a loro funzionano, a me non funzionano, o saltano un passaggio fondamentale anche piccolissimo oppure sono proprio sfortunato.
    Non è questione di sfortuna: probabilmente loro applicano i passaggi corretti dopo essersi documentati... se tu non lo fai e cerchi di copiare andando più o meno a caso, il fatto che non funzioni è un evento probabile, non un caso di sfortuna.

    race_web ha scritto:


    Credo proprio che alla fine utilizzerò il Database per archiviare le lingue e manderò a quel paese i file resx
    Ok. Però ricordati che se usi i database come descritto in filmati di YouTube per non approfondire la documentazione, qualora i progetti dei filmati funzionino e nel tuo si presentino errori o problematiche, sarai di nuovo punto e a capo, solo in un diverso ambito rispetto a quello attuale, e avrai buttato via il doppio del tempo.

    Oltre a questo, la colpa senz'altro non potrà essere data alla sfortuna, di sicuro.
  • Re: Progetto multilingua, non funziona dopo l'installazione

    Alka ha scritto:


    Ok. Però ricordati che se usi i database come descritto in filmati di YouTube per non approfondire la documentazione, qualora i progetti dei filmati funzionino e nel tuo si presentino errori o problematiche, sarai di nuovo punto e a capo, solo in un diverso ambito rispetto a quello attuale, e avrai buttato via il doppio del tempo.
    Con il Database non si può sbagliare allora sarebbe grave la cosa...

    Query => Assegno il valore

    Inoltre se creo i nomi dei campi con l'esatto nome dei controlli che sono nei Form, posso fare un foreach nei form e assegnare il valore durante il ciclo, evitando di riscriverli uno ad uno.
  • Re: Progetto multilingua, non funziona dopo l'installazione

    Ho risolto finalmente!!

    Nel progetto di Setup ho incluso anche le cartelle delle lingue ulteriori che nel mio caso sono "en" e "ro",
    si trovano su: \bin\debug\ del progetto,
    le due cartelle contengono il file "<nome-progetto>.resources.dll",
    devono essere incluse trascinandole nella finestra di Visual Studio dove c'è l'output principale nel progetto Setup,
    una bella compilazione e il gioco è fatto!!
  • Re: Progetto multilingua, non funziona dopo l'installazione

    Non devi utilizzare la versione debug per creare il setup, ma la release.
  • Re: Progetto multilingua, non funziona dopo l'installazione

    oregon ha scritto:


    Non devi utilizzare la versione debug per creare il setup, ma la release.
    Si si, ovvio, ma io in questo piccolo progetto costruito per fare l'esempio ho fatto solo il debug
  • Re: Progetto multilingua, non funziona dopo l'installazione

    race_web ha scritto:


    Con il Database non si può sbagliare allora sarebbe grave la cosa...
    Era per fare capire l'errore nel principio: un ostacolo alla gestione della funzionalità avrebbe potuto verificarsi anche in quel caso.

    race_web ha scritto:


    Ho risolto finalmente!! [...]
    Doveva essere qualcosa del genere, ma in effetti non avevo tenuto a mente che parlavi di esecuzione post-installazione, quindi in effetti la mancanza di qualche file era la causa più probabile.

    Comunque sia, tutto è bene.......
  • Re: Progetto multilingua, non funziona dopo l'installazione

    Ottimo che hai risolto

    Probabilmente lo hai già fatto... Però ti ricordo di cambiare sia CurrentCulture che CurrentUICulture.
    A me ogni tanto capita di cambiarne solo una e mi trovo metà programma tradotto e metà no!

    Ho la memoria corta, per cui ogni tanto mi dimentico
Devi accedere o registrarti per scrivere nel forum
11 risposte