Globalization - hab mich verheddert

  • WPF
  • .NET 5–6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von MasterQ.

    Globalization - hab mich verheddert

    Moinsen,

    meine Anwendung soll überwiegend innerhalb einer kleinen Gruppe Verwendung finden, aber in Zukunft auch bei Kollegen in den USA. Also Globalization wäre ganz nett.

    Das hat bisher alles gut geklappt, alle Tests wurden bestanden.

    Meine Einstellungen dazu waren bisher:

    neutrale Sprache - keine mit Properties\Translate.resx

    Codebeispiel

    C#-Quellcode

    1. txt.Add($"{Properties.Translate.Meldung}: {err.ErrorLevelString()}{Environment.NewLine}");


    Und dann gibt es Properties\Translate.en-US.resx.

    Nun kam ich auf die Idee, die neutrale Sprache auf Deutsch umzustellen und habe mir alles zerhauen. Nix geht mehr. Alles wieder zurück auf >keine< aber das Problem bleibt

    System.Resources.MissingManifestResourceException HResult=0x80131532 Nachricht = Could not find the resource "Properties.Translate.resources" among the resources "XYZ.g.resources", "XYZ.Properties.CodeResources.resources", "XYZ.Properties.Resources.resources" embedded in the assembly "XYZ", nor among the resources in any satellite assemblies for the specified culture. Perhaps the resources were embedded with an incorrect name. Quelle = System.Private.CoreLib

    Der Compiler läuft durch, ich erhalte aber die obige Fehlermeldung.

    Und ich krieg es nicht mehr hingebogen. Irgendwas übersehe ich!

    Die Dateien haben folgende Eigenschaften:

    Translate.resx
    Benutzerdefiniertes Tool: ResXFileCodeGenerator
    Buildvorgang: eingebettete Resource
    Kopieren: Nicht kopieren
    Namespace: leer
    Translate.Designer.cs
    benutz. Tool: leer
    Buildvorgang: C# Compiler
    Kopieren: Nicht kopieren
    Namespace: leer
    Translate.en-US.resx
    benutz. Tool: leer
    Buildvorgang: eingebettete Resource
    Kopieren: Nicht kopieren
    Namespace: leer


    Ich habe schon alles ausprobiert, was mir dazu einfiel, vor allem obj und binper Hand geleert und alle Einstellungen alteriert. Nix! Die Resource Datei komplett neu angelegt, nix!

    Ich habe ein kleines Testprojekt aufgelegt, das diese Aspekte durchspielt und da funktioniert alles. Wenn ich die Einstellungen in mein großes Projekt übernehme, kommt trotzdem die Ausnahme. Mich wundert auch, dass Properties.Translate.resources fehlen soll, das ist doch einmal resources zuviel, oder?

    Was mache ich hier falsch?

    MQ

    MasterQ schrieb:

    Nun kam ich auf die Idee, die neutrale Sprache auf Deutsch umzustellen und habe mir alles zerhauen.
    Ich gehe mal davon aus, dass Du eine Sicherungskopie erstellt hast.
    Wenn nicht, lösch alle lokalisierten Dateien (schieb sie in ein anderes Verzeichnis) und nimm sie aus der Projektdatei raus.
    Aber
    Die neuitrale Sprache ist die Sprache, die verwendet wird, wenn Dein Programm auf einem Rechner läuft, für den Du keine passende Lokalisierung erstellt hast.
    Wenn Dein Programm also in Israel oder auf den Philipinen läuft, wird da alles in Deutsch angezeigt.
    Lieber nicht.
    Also:
    Neutrale Sprache englisch, Lokalisierung in deutsch.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Das zurückspielen etc, hat nichts gebracht, das habe ich mehrfach durchgespielt.

    Es scheint was mit den Namespaces zu tun zu haben. Mir ist aufgefallen, dass im Designer File folgendes steht:

    C#-Quellcode

    1. [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
    2. internal static global::System.Resources.ResourceManager ResourceManager {
    3. get {
    4. if (object.ReferenceEquals(resourceMan, null)) {
    5. global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Properties.Translate", typeof(Translate).Assembly);
    6. resourceMan = temp;
    7. }
    8. return resourceMan;
    9. }
    10. }


    Es müsste aber

    C#-Quellcode

    1. global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Projektname.Properties.Translate", typeof(Translate).Assembly);


    heißen.

    Wenn ich den "Projektnamen" in Klassenname des Konstruktors des Resourcenmanagers per Hand ergänze, dann funktioniert es wieder. Das wird leider immer wieder überschrieben.

    Dieses CustomTool ResXFileCodeGenerator scheint durcheinander. Mit den Resourcedateien hat mein Problem nichts zu tun, sondern mit ResXFileCodeGenerator. Irgendwo steht da in den Einstellungen Käse und ich finde keinen Ansatz wo.

    MasterQ schrieb:

    und ich finde keinen Ansatz wo.
    Tut mir Leid, das ist WPF-spezifisch, und da habe ich keine Ahnung. Sorry.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    So, alles ist wieder eingerenkt.

    Altes Backup zurückgespielt und die aufgelaufenen Änderungen ins Backup übernommen.

    Jetzt sind alle .xaml, .xaml.cs, .cs, .resx Dateien identisch zur defekten Version und .sln und .csproj Dateien sind angeglichen. Für mich gibt es somit keine Unterschiede zwischen dem aktualisierten Backup und der defekten Version. Dennoch läuft die aktualisierte Version, während die defekte weiterhin meckert.

    Keine Ahnung, was da noch anders sein soll.

    Was soll's, es geht wieder.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „MasterQ“ ()

    Hallo
    Unter was proggst du. .Net 6 oder noch .Net Framework?
    Vergleiche doch auch mal die Projektdatei ansich miteinander.

    PS: Quellcodeverwaltung? Kann leben retten.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    Ich bin unter .NET6 unterwegs und verwende WPF.

    Als Quelltextverwaltung verwende ich SVN. Ich konnte alles daraus zurückholen. Aber was letztlich die Ursache war, kann ich nicht sagen. Mir ist bei allen Vergleichen (.xaml, .cs, .csproj, .sln) nichts aufgefallen, was mir irgendwie suspekt vorkam. Irgendwas muss es gewesen sein, denn ich bin das Problem losgeworden nachdem ich das Projekt von grundauf neu aufgebaut habe. Daher war es wohl was in der Projektdatei.