Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881

    [C#] Files di risorse "resx"

    Non comprendo cosa sbaglio:
    al login dell'utente, a seconda di un dato che ho in tabella utenti, imposto la culture con queste istruzioni
    codice:
     c = Globalization.CultureInfo.CreateSpecificCulture("en-US")
    
    Thread.CurrentThread.CurrentUICulture = c 
    Thread.CurrentThread.CurrentCulture = c
    Poi ho la mia cartella App_GlobalResources che contiene due files, Res1.resx e Res1.en-US.resx nei quali ho le coppie chiave/valore che ho collegato nel mio file main.aspx in corrispondenza -ad esempio- del testo di un bottone in questo modo
    codice:
    <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="page.aspx" Text="<%$ Resources:res1, main_hl2 %>"></asp:HyperLink>
    Well, in debug vedo che l'utente fa login, imposto la culture en-US, fa il redirect sulla pagina main.aspx e qui mi aspetterei di vedere il mio linkbutton con il testo in inglese come indicato in res1.en-US.resx e invece mi mostra quello in italiano di res1.resx...

    What's wrong?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    hmm, nella main.aspx il response.write di Globalization.CultureInfo.CurrentUICulture.ToStrin g mi restituisce it-IT...
    ne deduco che le istruzioni che eseguo al login non fanno niente oppure che modificano la culture solo per la pagina corrente e al cambio di pagina ritorna quella di default...
    non dovrò mica reimpostarla ad ogni page.load usando una session (ad esempio)?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  3. #3
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    https://forums.asp.net/t/2120837.asp...obal+resource+

    qua dicono che si deve reimpostare ad ogni cambio pagina ma si può fare usando il global.asa e una session... effectively funzia ma non mi fa impazzire ...
    per il momento tengo buona questa se si può fare di meglio fatemi sapere!
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    stai attento che il framework va per "best match" con le Culture, altrimenti torna indietro. Cioe' se trova un file che elenca risorse di una lingua usata paese scelto, la considera (l'inglese che parlano in US, l'inglese che parlano in UK, non si ferma ad una sola). Usa la prima che trova, altrimenti rimane la precedente.


    Comunque ho sempre usato questo (codice preso tempo fa da S.O.)

    Files:
    App_GlobalResources/Messages.resx (c'e' una classe custom, "Messages", ma non è utile riportarla)
    App_GlobalResources/Messages.it-IT.resx


    Nel web.config
    codice:
    <globalization uiCulture="it" culture="it-IT" />

    La lingua viene scelta nella pagina di Login e rimane fino al successivo logout.
    In questa, alla pressione del Button [Login], se l'utente è riconosciuto:
    codice:
    string defaultLanguage = Thread.CurrentThread.CurrentUICulture.ToString(); // prende quella del Web.Config
    
    if (DDLang.SelectedValue != String.Empty)
    {
        String selectedLanguage = DDLang.SelectedValue;
        UICulture = selectedLanguage;
        Culture = selectedLanguage;
    
    
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
    }
    else
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(defaultLanguage);
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CreateSpecificCulture(defaultLanguage);
    }            
    
    
    base.InitializeCulture();

    ed infine nelle pagine:
    codice:
    <a href="#" id="hrefschema"><span class="ui-icon"></span><%= Resources.Messages.lbl_hrefschema %></a>



    base.InitializeCulture(); c'e' nel tuo codice ?

    poi, hai controllato se i i cookies sono abilitati / httpSession tutto ok ? (mi pare li usi, la butto li)
    Ultima modifica di djciko; 03-03-2019 a 14:28

  5. #5
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    buh mi pareva di aver fatto tutto come hai descritto tu: in debug vedevo che veniva impostata la culture che volevo al login (en-US) ma poi non la teneva quando facevo il redirect alla pagina successiva, si ri-impostava la it-IT... ora riprovo



    PS non ho capito il discorso del bestmatch: intendi che se imposto su resource.en-US.resx e non trova va a guardare in resource.en-GB.resx anzichè in resource.resx dove ho messo le voci di default (in italiano)???
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  6. #6
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    ah ecco è questo base.InitializeCulture(); che non quaja.
    Da dove devo ereditarlo base?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  7. #7
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    le possibili correzioni suggerite dal valente visualstudio sono di usare MyBase o BaseParser al posto di base....
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  8. #8
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    usando myBase ti confermo che imposta en-US ma al redirect sulla nuova pagina ritrovo it-IT
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  9. #9
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    Ho anche un'altra richiesta: per caso sai come usare il file di risorse da codebehind?
    Io ho trovato e adattato una cosa così
    codice:
    Dim MyResourceClass = New ResourceManager("OrdDetail.resx", Reflection.Assembly.GetExecutingAssembly)
    Dim resxSet = MyResourceClass.GetResourceSet(Globalization.CultureInfo.CurrentUICulture, True, True)
    miastringa = resxSet.GetString("lbtestaordfull")
    ma ottengo un bel
    'MyResourceClass.GetResourceSet(Globalization.Cult ureInfo.CurrentUICulture,true,true)' ha generato un'eccezione di tipo 'System.Resources.MissingManifestResourceException '
    che stando al sito microsoft significa:
    tryParents is true, no usable set of resources has been found, and there are no default culture resources.
    eppure il file, anzi i files ci sono
    Ultima modifica di supermac; 01-03-2019 a 19:25
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  10. #10
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    per la serie "ufficio complicazione affari semplici":
    nel codebehind basta usare
    codice:
    Resources.OrdDetail.lbtestaordfull
    senza niente altro

    mi resta solo il problema di impostare la culture da pagina di login e poi sono a posto
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.