Domanda

Sto avendo un problema ottenere le voci del file di risorse corrette e bisogno di aiuto ... ecco il mio scenario

Ho una serie di progetti che fanno parte di una grande soluzione di reporting che seguono questo formato

Plugin. **** rapporto

  • Riferimento (cartella)
  • DataAccessLayer (cartella)
  • DataSet (cartella)
  • DataWrappers (cartella)
  • La localizzazione (cartella)

    *. Cs

Dove * è il nome del report che sto per generare

I cs * ha un'istruzione di esportazione in modo che posso prendo usando MEF (non so se questo è rilevante, ma ho pensato che vale la pena menzionare). Lo spazio dei nomi in cs * è CompanyName.DataShaper.Plugin. * Relazione. A causa del nome del progetto, e la posizione dei file, ho cambiato il namespace di default per ciascun progetto sia CompanyName.DataShaper.Plugin. * Relazione (era solo Plugin. * Relazione prima del mio cambiamento).

Ora per il problema .. all'interno del cs * Sono un'istanza di un ResourceManager. Che assomiglia a questo ...

_resourceManager =
                new ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report",
                    Assembly.GetExecutingAssembly());

all'interno del mio file di progettazione RESX Ho il seguente ...

internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CompanyName.DataShaper.Plugin.*Report.Localization.*Report", typeof(*Report).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }

Il mio invito al gestore risorse assomiglia a questo ...

string resourceString = _resourceManager.GetString(resourceKey, _currrentCultureInfo);

dove _currentCultureInfo è un un oggetto CultureInfo corretta.

Ho 4 resx diversi nella mia cartella di localizzazione per ogni progetto, (**** Report.resx, **** Report.fr-ca.resx, **** Report.en-gb.resx, **** Report.de-de.resx).

Quando faccio la chiamata al gestore delle risorse, ho sempre arrivare la voce dal .resx ... non uno qualsiasi degli altri file di lingua, indipendentemente dall'oggetto CultureInfo passo nella chiamata. Che cosa ho incasinato?

-> aggiornamento rapido alla mia domanda iniziale, ma questo non sembra essere correlato MEF. Ho istanziati mia classe alla vecchia maniera (nuovo * Relazione ()) e ha chiamato la localizzazione e funziona benissimo

È stato utile?

Soluzione

OK, ho capito questo .. sto ottenendo il file RESX perché è veramente incorporato nel gruppo principale. Gli altri file sono sempre costruiti in DLL separate per ogni lingua, ho quindi bisogno di copiarli nella stessa cartella che costruisco il mio contenitore aggregato da, il mio manager delle risorse vede quindi tutte le lingue.

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