Problema problematico con le risorse e la localizzazione dei moduli Web ASP.NET
-
08-07-2019 - |
Domanda
Ho la seguente installazione non standard (VS2008, .NET 3.5 SP1):
Esiste un progetto web principale chiamato MainSite e ci sono diversi "plugin" progetti web con nomi diversi.
Durante la creazione di questi plug-in ho un passaggio personalizzato che chiama aspnet_compiler.exe
e aspnet_merge.exe
. Ciò si traduce in due file .DLL - plugin_name .dll e plugin_name _deploy.dll. Il primo contiene le classi codebehind, il secondo contiene il codice generato dai file .ascx.
Questi plugin .DLL vengono quindi copiati nella cartella / MainSite / bin / Plugins /
. In fase di runtime (avvio dell'applicazione) l'applicazione MainSite cerca in questa cartella e carica dinamicamente tutti i file .DLL.
Tutti i miei moduli sono nei plugin, nei file .ascx. L'applicazione principale è solo uno scheletro che carica questi controlli utente .ascx secondo necessità.
E ora arriva la necessità di localizzazione. Idealmente, vorrei avere quanto segue:
- Quando si creano le risorse in Visual Studio, dovrebbe esserci un file di risorse separato per ogni modulo (file .ascx) in modo che sia più facile per le persone localizzare i moduli in parallelo.
- Il bel metodo
meta: resourcekey
nei file .ascx è molto comodo per localizzare i controlli; - Il meccanismo di fallback automatico di lingua / cultura delle risorse in .NET dovrebbe essere utilizzabile;
- Il risultato della compilazione dovrebbe essere tale che i file di tutti i plugin possano essere copiati nella cartella
/ MainSite / bin / Plugins /
. Se esiste un file .DLL per ogni lingua / cultura e devono essere inseriti in alcune sottocartelle specifiche, va bene purché i .DLL di plug-in diversi non abbiano nomi in conflitto.
Qualche idea su come raggiungere questo obiettivo?
Soluzione
Apparentemente è possibile implementare provider di risorse personalizzati in .NET. Qui è un articolo che contiene collegamenti a vari altri articoli che spiegano il tutto il processo. In effetti, prendi il valore da meta: resourcekey
e ottieni il valore da dove vuoi. L'articolo sopra, ad esempio, memorizza tutte le informazioni sulla localizzazione in un DB.