Localizzazione code-behind

Unanswered Localizzazione code-behind

  • martedì 7 agosto 2012 10:01
     
     

    salve,

    ho bisogno di gestire il multilingua della mia applicazione silverlight. ho trovato diversi articoli riguardo la localizzazione degli xaml ma il mio problema è che ho molte stringhe che vengono settate nel code-behind o nel viewModel (messaggi di errore, ecc.). Qual è il metodo migliore per localizzarle? Devo utilizzare 2mila "if"?

    grazie


    • Modificato mursico martedì 7 agosto 2012 10:01
    •  

Tutte le risposte

  • martedì 7 agosto 2012 10:37
    Postatore
     
     
    No esiste un meccanismo di localizzazione basato su risorse, guarda
    questo post:
     
    HTH
     

    Corrado Cavalli [Microsoft .NET MVP-MCP]
    UGIdotNET - http://www.ugidotnet.org
    Weblog: http://blogs.ugidotnet.org/corrado/
    Twitter: http://twitter.com/corcav
  • martedì 7 agosto 2012 15:26
     
     
    non ho capito però nel caso ad esempio di messaggi di errore in delle popup come posso localizzarle. in più non riesco a far funzionare l'esempio.. forse non è compatibile con vs 2010... ?
  • mercoledì 8 agosto 2012 04:33
    Postatore
     
     
    Il codice è compatibile con VS2010, è l'approccio che uso nella
    localizzazione delle app.
    Per i messaggi basta che accedi alla stessa collezione di risorse da
    codice, alla fine i resX generano una classe che espone delle
    proprietà, esattamente come fa l'esempio indicato.
     

    Corrado Cavalli [Microsoft .NET MVP-MCP]
    UGIdotNET - http://www.ugidotnet.org
    Weblog: http://blogs.ugidotnet.org/corrado/
    Twitter: http://twitter.com/corcav
  • mercoledì 8 agosto 2012 10:09
     
     

    scusami ma non ho capito a quale codice ti riferisci (sempre per la questione del messaggio di errore)

    puoi farmi un esempio?

    comunque... facendo delle prove ho notato che non riesco a impostare dinamicamente la cultura.

    ho inserito questo codice in MainPage.xaml.cs

        Thread.CurrentThread.CurrentCulture = new CultureInfo("en");
                Thread.CurrentThread.CurrentUICulture = new CultureInfo("en");
                ((CustomResources)this.Resources["CustomLocStrings"]).LocalizedStrings = new DocumentaleManager.StringLibrary();

    sembra non aggiornarsi la cultura. quando arrivo in debug in currentCulture c'è it-IT... viene aggiornata in "en" ma poi visualizzo le stringhe in italiano.

    in più la terza riga di codice va in errore ("Riferimento a un oggetto non impostato a un'istanza di oggetto")

    Grazie dell'aiuto

    Stefano


    • Modificato mursico mercoledì 8 agosto 2012 17:23
    •  
  • giovedì 9 agosto 2012 04:54
    Postatore
     
     
    Non so se è il tuo caso, ad ogni modo prima verifica questa cosa...
    L'errore nella 3 riga è un banale null, probabilmente dovuto al fatto
    che non trova la risorsa o la proprietà non esiste.
     

    Corrado Cavalli [Microsoft .NET MVP-MCP]
    UGIdotNET - http://www.ugidotnet.org
    Weblog: http://blogs.ugidotnet.org/corrado/
    Twitter: http://twitter.com/corcav
  • mercoledì 15 agosto 2012 10:48
     
     

    risolto!

    Grazie dell'aiuto!