Frage

Ich bin ein Problem mit den richtigen Ressource-Datei Einträge bekommen und benötige Hilfe ... hier ist mein Szenario

Ich habe eine Reihe von Projekten, die ein Teil einer großen Reporting-Lösung sind, die dieses Format

folgen

Plugin. **** Bericht

  • Referenz (Ordner)
  • DataAccessLayer (Ordner)
  • Datasets (Ordner)
  • DataWrappers (Ordner)
  • Lokalisierung (Ordner)

    *. Cs

Wo * ist der Name des Berichts ich generieren werde

Die * .cs hat eine Aussage Export, so dass ich es abholen kann bis MEF (nicht sicher, ob dies relevant ist, aber dachte, es erwähnenswert). Der Namespace in * .cs ist CompanyName.DataShaper.Plugin. * Bericht. Aufgrund des Projektnamen und Speicherort der Dateien, änderte ich das Standard-Namespace für jedes Projekt CompanyName.DataShaper.Plugin zu sein. * Bericht (es war nur Plugin. * Bericht vor meinem Wechsel).

Jetzt für das Problem .. innerhalb von * .cs ich einen Resourcemanager bin instanziieren. Das sieht dann so ...

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

in meiner resx Designer-Datei habe ich die folgende ...

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;
            }

Mein Aufruf an den Ressourcenmanager sieht wie folgt aus ...

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

wo _currentCultureInfo ist ein ein korrektes Cultureinfo-Objekt.

Ich habe 4 verschiedene resx Dateien in meinem Localization Ordner für jedes Projekt (**** Report.resx, **** Report.fr-ca.resx, **** Report.en-gb.resx, **** Report.de-de.resx).

Wenn ich den Anruf an den Ressourcenmanager machen, habe ich immer den Eintrag aus der .resx ... nie eine der anderen Sprachdateien, unabhängig von der Cultureinfo-Objekt ich in den Anruf übergeben. Was habe ich vermasselt?

-> Schnell Update auf meine ursprüngliche Frage, aber dies scheint MEF zusammenzuhängen. Ich instanziiert meine Klasse auf die altmodische Weise (neu * Bericht ()) und die Lokalisierung callte und es funktioniert gut

War es hilfreich?

Lösung

OK, dachte ich, dieses aus .. Ich bin die RESX-Datei bekommen, weil sie wirklich in die Hauptbaugruppe eingebettet ist. Die anderen Dateien werden für jede Sprache in getrennten dlls gebaut zu werden, muß ich sie dann in demselben Ordner kopieren, dass ich mein Aggregat Container baue aus, dann meine Ressource-Manager alle Sprachen sehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top