7 messaggi dal 27 giugno 2007
www.smartica.it
Salve a tutti.

Ho localizzato una soluzione costituita da due progetti:

1) un progetto (startup) "localizzami4.0" contenente con aspx e ascx; ci sono anche i resx come risorse locali
2) un progetto "myUserControlLibrary" contenente i controlli (solo ascx, no server control); ci sono anche i resx come risorse locali.
Questo secondo progetto vorrei redistribuirlo, quindi non legarlo al namespace del progetto "localizzami4.0"

La localizzazione funziona, (copiando con eventi di pre-building gli ascx sotto la localizza4.0\usercontrols\.ascx e i resx da app_localresources di myusercontrol in localizzami4.0\app_localresoucers); la proprietà build action di defualt dei file resx non è stata cambiata (content).

Siccome però vorrei distribuire i controlli senza ascx (solo dll), vorrei pre-compilare e NON SPUNTARE l'opzione "allow precompiled site to be updatable", e comincio ad avere qualche problema.

In ordine, ho fatto questo:
0) in "myUserControlLibrary" ho creato un controllo "controlloesterno.ascx" con una label "lblSaluto" con valore text="buongiorno" localizzato (il controllo) in en-gb, es-MX, it-it;
in "localizzami4.0" ho creato la pagina test.aspx ("localizzami4.0") che include il controllo esterno (con register dell'assembly);

1) sui resx di "myUserControlLibrary" impostato la build action dei file su "embedded resource";
il resx di it-it porta lblSaluto.Text="ciao mondo";
il resx di en-gb porta lblSaluto.Text="helllo world";
il resx di es-mx porta lblSaluto.Text="buenas dia";

2) ho pubblicato il progetto "myUserControlLibrary", generando una cartella c:\mylib\bin con le dll e i file .config; nella bin, ho tante sottocartelle (con dentro la dll del resx corrispondente alla cultura) per quante culture localizzo, e poi le dll della libreria e dei controlli singoli (se uso o meno il merge degli assembly in output) [di questo ne sono certo perché ho decompilato le dll e ne ho visto il contenuto]

3) ho copiato il contenuto della c:\mylib\bin della libreria "myUserControlLibrary" sotto la bin del progetto 1) "localizzami4.0\bin"

4)ho impostato <globalization culture="en-GB" UICulture="en-GB" /> nel web.config di "localizzami4.0"

5) premuto F5 :)

5) il valore dell'etichetta lblSaluto che mi attendo è: hello wordl, invece leggo "buongiorno" ovvero è come se non fosse usata la localizzazione; non mi esce nemmeno "ciao mondo".

Ho cercato su internet, su msdn, trovo walkthroug generici, o su localizzazione di un singolo progetto o su librerie di user control redistribuibili ma non localizzati.

Qualcuno ha fatto qualcosa del genere o conosce link o post a cui posso riferirmi?

Grazie

buon week end
7 messaggi dal 27 giugno 2007
www.smartica.it
aggiungo:
asp.net 4.0
visual studio 2010 o 2013
7 messaggi dal 27 giugno 2007
www.smartica.it
Salve.

nessuna risposta:
o è troppo semplice la risposta o è troppo complicata :)

qualcuno con cui parlarne?
qualcuno che mi dica dove sbaglio?

grazie in anticipo
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Giuseppe,

napolitanogiuseppe ha scritto:

o è troppo semplice la risposta o è troppo complicata :)

No, è solo che il quesito è un po' articolato e bisognerebbe riprodurre il tuo problema prima di darti un consiglio. Se potessi fornire una soluzione con dentro due progetti (class library dei controlli e webapp che li referenzia) sarebbe di grande aiuto.

Comunque, nel frattempo hai provato a deployare tutti gli assembly che ti vengono creati? Sia quello che contiene i controlli che tutti i satellite assemblies, nelle rispettive cartelle?

Poi, se funziona, prova ad embeddare i satellite assemblies dell'assembly dei controlli. Onestamente non ho mai provato, ma ti rimando a questa discussione.
http://stackoverflow.com/questions/1453755/how-to-embed-a-satellite-assembly-into-the-exe-file

ciao,
Moreno

Enjoy learning and just keep making
7 messaggi dal 27 giugno 2007
www.smartica.it
Ciao Bright
intanto grazie per la tua attenzione

il progetto puoi scaricarlo da qui:
http://www.blog-smartica.it/copia.zip

Fammi sapere se ti è chiaro il problema che ho.

Grazie ancora, a dopo
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, sì, ora il problema è chiaro.

Esaminando gli assemblies, non sembra esserci codice che sfrutti le risorse per localizzare i testi dei controlli. Dev'essere per questo che continui a vedere i valori con cui hai inizializzato le varie proprietà, tipo Text.
Il tuo asp:Button di ricerca viene compilato così:
Button button = new Button();
this.btnSearch = button;
button.ApplyStyleSheetSkin(this.Page);
button.ID = "btnSearch";
button.Text = "Cerca!"; //vedi, i valori sono stati hard-codati 
return button;

Dovresti provare ad impostare le proprietà in maniera imperativa, anziché usare l'attributo meta:resourcekey. Leggi qui:
http://msdn.microsoft.com/en-us/library/vstudio/ms227982(v=vs.100).aspx

In generale, penso che una soluzione migliore - se vuoi ridistribuire i controlli - sarebbe quella di creare una Class Library di WebControls.

ciao,
Moreno
Modificato da BrightSoul il 11 giugno 2014 00.24 -

Enjoy learning and just keep making
7 messaggi dal 27 giugno 2007
www.smartica.it
ma sai una cosa:
nella prima versione della mia solutions, non facebo la pre-compilazione del sito.

copiavo i file .ascx e .resx sotto la cartella localizzami40\usercontrols e localizzami40\bin e non scrivevo una riga di codice, e la localizzazione funzionava.
11.886 messaggi dal 09 febbraio 2002
Contributi
ciao,


la localizzazione funzionava.

Sì, perché in quel caso i controlli mantenevano il loro markup in file ascx, e mantenevano anche i loro attributi meta:resourcekey.

Compilando, il markup dello user control si trasforma in istruzioni di codice che ricreano la stessa esatta gerarchia di controlli. L'attributo meta:resourcekey, tuttavia, sembra che vada perso perché non ne vedo un equivalente nel codice compilato.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.