188 messaggi dal 24 marzo 2001
non riesco a far funzionare il codice di questo articolo in nessun modo, io imposto entrambe le voci in tendina su it-IT ma carica sempre e comunque il file di risorse in inglese.
La compilazione degli assembly è stata eseguita correttamente.
5 messaggi dal 18 febbraio 2004
magisystem ha scritto:
non riesco a far funzionare il codice di questo articolo in nessun modo, io imposto entrambe le voci in tendina su it-IT ma carica sempre e comunque il file di risorse in inglese.
La compilazione degli assembly è stata eseguita correttamente.


In un'occasione ho riscontrato anch'io il tuo stesso problema. Dopo un bel pò di verifiche ho scoperto che il BaseName del file di risorse generato era diverso da quello che io ricercavo. Ecco in dettaglio il mio scenario:

Il mio problema: Il sistema sembra recuperare sempre e solo le stringhe dalle risorse della lingua di default.

Causa generante: base name errato

Motivo: un errata organizzazione dei file di risorse all'interno della directory resources dell'applicazione ASP.NET. In pratica normalmente io utilizzo una notazione di questo tipo per i file di risorse Nome + Culture + .resx che nel mio caso si traduceva in SystemStrings.en-US.resx e in System.Strings.it-IT.resx. Per qualche inspiegabile motivo ho pensato di organizzare la cosa inserendo i diversi file di risorse in una struttura di directory di questo tipo:

Resources
|
|__en-US
|
|__it-IT

così facendo, senza cambiare il nome del file di risorse, mi trovavo, dopo la compilazione ad avere un BaseName del file di risorse irragiungibile per il mio ResourceManager (il nome infatti passava dall'atteso Evolution.Resources.SystemStrings.en-US.resources in Evolution.Resources.en_US.SystemStrings.en-US.resources).

Soluzione: riportare tutti i file sotto alla directory Resources della mia web application eliminando inutili sottodirectory.

Per scoprire il problema ho utilizzato Reflector (http://www.aisto.com/roeder/dotnet/) andando a leggere il contenuto dell'assembly che conteneva i file di risorse per la lingua desiderata. Alla fine grazie a questo strumento sono riuscito a scoprire il perché del comportamento anomalo del mio resource manager.

Spero ti possa indirizzare nella strada giusta per risolvere il tuo problema.

Davide Vernole
9 messaggi dal 09 gennaio 2002
www.robertogatti.com
Buongiorno a tutti!
Ho un problema con le lettere accentate; sembra che non vengano proprio "trasferite" nell'assembly generato con make.bat
Qualche suggerimento??

Grazie mille, RaRo.

Amate gli animali. Dio ha donato loro i rudimenti del pensiero e la gioia serena. Non turbatela, non molestateli, non privateli della loro felicita', non andate contro la volonta' di Dio.
5 messaggi dal 18 febbraio 2004
RaRo ha scritto:
Buongiorno a tutti!
Ho un problema con le lettere accentate; sembra che non vengano proprio "trasferite" nell'assembly generato con make.bat
Qualche suggerimento??

Grazie mille, RaRo.


Potresti esplicitare meglio il tuo problema ? Qual'è il contenuto del file make.bat (in pratica che comandi esegue) ? Le lettere accentate non le vedi nell'assembly che contiene le risorse o quando vengono renderizzate nella tua web application ?

Davide Vernole
Modificato da knodev il 26 maggio 2004 22.53 -
9 messaggi dal 09 gennaio 2002
www.robertogatti.com
Il problema del "trasferimento" delle lettere accentate nell'assemly satellite l'ho risolto salvando da notepad i file di risorse in formato unicode anziche ASCII;
Si e' presentato pero' un'altro incoveniente: per quanto riguarda i caratteri squisitamente teutonici (ü, ä, etc..) tutto ok, mentre le accentate italiane è,à,ù, etc. mi vengono visualizzate come e a u . ho provato ad inserire diversi tipi di encoding nel web.config e anche nella pagina aspx, ma senza risultati. Il file make.bat è identico a quello mostrato nell'esempio scaricabile.
questo e' il codice che uso per caricare gli assembly:

Dim a As [Assembly] = [Assembly].Load("resourceScriptText")
Dim rs As ResourceManager = New ResourceManager("resourceScript", a)
Thread.CurrentThread.CurrentUICulture = New CultureInfo("it")
Label = rs.GetString("hpc_lbl1")
rs.ReleaseAllResources()

Amate gli animali. Dio ha donato loro i rudimenti del pensiero e la gioia serena. Non turbatela, non molestateli, non privateli della loro felicita', non andate contro la volonta' di Dio.
5 messaggi dal 18 febbraio 2004
RaRo ha scritto:
Il problema del "trasferimento" delle lettere accentate nell'assemly satellite l'ho risolto salvando da notepad i file di risorse in formato unicode anziche ASCII;
Si e' presentato pero' un'altro incoveniente: per quanto riguarda i caratteri squisitamente teutonici (ü, ä, etc..) tutto ok, mentre le accentate italiane è,à,ù, etc. mi vengono visualizzate come e a u . ho provato ad inserire diversi tipi di encoding nel web.config e anche nella pagina aspx, ma senza risultati. Il file make.bat è identico a quello mostrato nell'esempio scaricabile.
questo e' il codice che uso per caricare gli assembly:

Dim a As [Assembly] = [Assembly].Load("resourceScriptText")
Dim rs As ResourceManager = New ResourceManager("resourceScript", a)
Thread.CurrentThread.CurrentUICulture = New CultureInfo("it")
Label = rs.GetString("hpc_lbl1")
rs.ReleaseAllResources()


Io utilizzo in tutte le mie applicazioni i file di risorse e nei file, quando necessario compaiono anche i caratteri accentati. Se il problema è legato solo alla visualizzazione e quindi non al file di risorse, potresti provare ad utilizzare UTF-8 come encoding (io uso quello) nel tuo web.config.
Maggiori informazioni puoi trovarle qui: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconunicode.asp.

Davide Vernole

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.