Domanda

Ho un'applicazione web costruita in asp.net, che utilizza file di risorse per supportare più lingue. Il problema che ho è che posso solo aggiungere un nuovo file di lingua in Visual Studio, e devo ricostruire l'intera applicazione per avere una nuova lingua incluso. Dopo la ricerca in rete ho scoperto che la compilazione dei file di risorse può essere fatto nel compilatore .NET. Ho usato i seguenti comandi:

Resgen.exe / compilazione langfile.en.resx

Al.exe /out:en\App_GlobalResources.resources.dll / cultura: it / embedresource: langfile .en.resources

Il file viene copiato nella cartella del sito web, ma non funziona. Voglio dire, quando seleziono la nuova lingua dalla pagina web, le stringhe vengono caricati dal file di risorse predefinito. Se creo il file di risorse in VS, funziona bene. Ho controllato le dimensioni dei due file dll, quello generato da VS e quello compilato da me, e hanno la stessa dimensione ma quello compilato non funziona. Posso solo pensare che forse avrei dovuto utilizzare alcuni altri parametri nei comandi di cui sopra, ma io non lo so davvero.

Ogni aiuto è molto apprezzato.

È stato utile?

Soluzione

È possibile ottenere ciò che si vuole, scrivendo il proprio generatore di espressioni invece di utilizzare la versione di risorse built-in e tirare le informazioni da un file di database o XML. Fondamentalmente si scrive il proprio classe che eredita da System.Web.Compilation.ExpressionBuilder e quindi registrarlo nel web.config in questo modo:

<compilation>
  <expressionBuilders>
    <add expressionPrefix="CustomResources" type="CustomResourcesExpressionBuilder"/>
  </expressionBuilders>
</compilation>

e quindi si può fare riferimento a esso come risorse normali:

<%$ CustomResources:Section, Key %>

Potete trovare alcuni articoli su questo qui e qui .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top