Laden...

Wie kann ich Forms mehrsprachig machen?

Erstellt von Sindelfinger vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.102 Views
S
Sindelfinger Themenstarter:in
39 Beiträge seit 2019
vor 3 Jahren
Wie kann ich Forms mehrsprachig machen?

Liebe Freunde,

ich dachte eigentlich, mich von meinem Schlaganfall voll erholt zu haben bis zu dem Zeitpunkt, an dem ich in ein von mir geschriebenes Programm mehrsprachige Texte verwenden wollte.

Ich habe dieses Tutorial umgesetzt (Vorschlag 3) aber ich bekomme immer die Meldung:

Fehlermeldung:
System.Resources.MissingManifestResourceException: "Für die angegebene Kultur oder die neutrale Kultur konnten keine Ressourcen gefunden werden. Stellen Sie sicher, dass Application.Text.ResStrings.resources beim Kompilieren richtig in die Assembly DartGames eingebettet wurde, oder dass die erforderlichen Satellitenassemblys geladen werden können und vollständig signiert sind."

Hat der kleine Schlaganfall mein altes Hirn jetzt komplett fritiert?

Seit zwei Tagen suche ich überall und finde keine Lösung.

Ich habe zwei Resourcedateien angelegt mit den Namen: "ResStrings.resx" und "ResStrings.de-DE.resx".

Beim Aufruf von

      public static string getString(String pattern)
        {
            return resMgr.GetString(pattern);
        }

kommt dann die o.a. Fehlermeldung.

Aufgerufen wird das ganze so:

       public Haupt()
        {
            InitializeComponent();

            var Culture = CultureInfo.CurrentCulture;
            Localization.UpdateLanguage(Culture.ToString());
           
            string f = Localization.getString("POWERED_BY");
            // nur um ma zu kucken
            Beschriften();
        }
        private void Beschriften()
        {
            label1.Text = Localization.getString("POWERED_BY");
            linkLabel1.Text = Localization.getString("CONTACT");
            Tauziehen.Text = Localization.getString("TAUZIEHEN");
        }

Alles was ich möchte ist, einige Buttons und Labels mehrsprachig zu beschriften und diverse Meldungen (Game drawn by Stalemate wird zu: Patt) je nach Sprache des Systems ändern.

Ich danke schonmal im voraus für Eure Hilfe.

2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(

4.938 Beiträge seit 2008
vor 3 Jahren

Was sind denn die Projekteigenschaften dieser beiden Dateien (bes. BuildAction, Custom Tool)?

S
Sindelfinger Themenstarter:in
39 Beiträge seit 2019
vor 3 Jahren

Im Buildvorgang steht :"Eingebettete Resource" und das Tool ist der "ResXFileCodeGenerator"

Mir ist beim Nachschauen aufgefallen, dass bei einem der Namespace gefehlt hat. Aber daran lag's wohl auch nicht.

2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(

4.938 Beiträge seit 2008
vor 3 Jahren

Ja, das sollte so richtig sein.

Hast du mal versucht, die Datei(en) noch mal neu zum Projekt hinzuzufügen?

Ansonsten gibt es in What does MissingManifestResourceException mean and how to fix it? noch weitere Hinweise und Möglichkeiten.

S
Sindelfinger Themenstarter:in
39 Beiträge seit 2019
vor 3 Jahren

Das liest sich für mich wie Suaheli und hilft mir null.

Dennoch danke ich Dir herzlich für Deine Antwort. Was ich dadurch gelernt habe ist, daß ich das wohl besser sein lassen sollte. Bin wohl zu blöd

<edit>

Ich habe es jetzt so umgesetzt, wie der freundliche Vietnamese in diesem Video vorführt und es tut wirklich. Allerdings muss ich tatsächlich bei den Sprachdateien einmalig das Externe Tool laufen lassen.

Ich mag zwar dämlich sein, aber Youtube - Videos kucken kann ich noch.

Das Ganze sieht jetzt so aus:

   private void Beschriften(CultureInfo ci)
        {
            Assembly a = Assembly.Load("DartGames");
            ResourceManager rm = new ResourceManager("DartGames.Lang.Language",a);
            linkLabel1.Text = rm.GetString("str_Contact");
            Tauziehen.Text = rm.GetString("str_Tauziehen");
            label1.Text = rm.GetString("str_Power");
            Settings.Text = rm.GetString("str_Settings");
            Exit.Text = rm.GetString("str_Exit");
        }

2 stupid 4 chess? No way.
2 stupid 4 C#? It seems so X(