DataGridView Spalten aus verschiedenen Textdateien befüllen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    DataGridView Spalten aus verschiedenen Textdateien befüllen

    Hallo Gemeinde,

    Ich versuche ein Programm mit einer einfachen "Internationalisierungsfunktion" auszustatten. Dazu habe ich die Texte aller Labels, Rahmennamen, Tooltips etc. in eine Textdatei (jeder Wert = ein Zeile) abgespeichert. Wenn man die "Sprachen bearbeiten-Form" aufruft, wird automatisch die aktuelle Sprache (zur Zeit fix auf Deutsch eingestellt) in die erste Spalte einer DataGridView mit zwei Spalten eingelesen.

    Der geneigte Nutzer soll nun die Möglichkeit haben, Werte aus einer weiteren verfügbaren Sprache einzulesen und zu bearbeiten, die er letztendlich aus einer ComboBox auswählen wird können. Diese sollen nun in der zweiten Spalte des DataGridViews eingetragen werden (auch hier würde ich zuerst auf eine fix eingestellte Sprache zurückgreifen). Es versteht sich, dass die "Sprachdateien" den selben aufbau haben.

    Der Aufbau soll wie in der angehängten Datei aussehen.

    Das Einlesen der Standardsprache erfolgt durch:

    VB.NET-Quellcode

    1. For Each Zeile As String In IO.File.ReadAllLines("Deutsch-neu.txt", System.Text.Encoding.Default)
    2. DataGridView1.Rows.Add(Zeile)
    3. Next


    Wie schaffe ich es die zweite Sprache aus der zweiten Textdatei in die zweite Spalte des DataGridViews einzulesen, das es so aussieht wie im Anhang.

    Der Sinn ist, dass man die Möglichkeit haben soll, eigenständig, weitere Sprachversionen zu erstellen, ohne im Quellcode herum doktern zu müssen (Klingonisch wäre doch ganz nett, oder ;) ).

    Vielen Dank für Eure Mithilfe im voraus!!

    Liebe Grüße

    Mike
    Bilder
    • Screenshot datagridview.JPG

      79,21 kB, 1.147×390, 86 mal angesehen
    Willkommen im Forum. :thumbup:

    Mike-a_de schrieb:

    Internationalisierungsfunktion
    Gugst Du Dictionary(Of String, String), DataTable.
    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!
    Hallo RodFromGermany,

    erstmal vielen Dank für Deinen Willkommensgruß und natürlich auch für Deine schnelle Reaktion und Hilfe.

    Ich denke ich bin erst einmal einige Funktionalitäten und Erklärungen schuldig, die mir so vorschweben:

    Im Hauptprogramm kann (und soll) jeder Benutzer seine Standardsprache aus den bereits vorhandenen übersetzten Sprachen wählen (diese sollen mit der Zeit ja immer mehr werden).

    Das Programm wird eventuell in Sprachen übersetzt werden die weder ich noch jemand in meiner näheren Umgebung sprechen kann. Ich stelle es mir so vor, dass ich z.B. die erste Übersetzung ins Englische vornehme (Dies soll im DataGridView geschehen). Die Übersetzung wird dann in der Datei "English.txt" gespeichert. Das Programm wird dann zum Beispiel von einem Ungarischen Kollegen mit der Standardsprache Englisch eingesetzt. Dieser Kollege Übersetzt dann (mit der Standardsprache Englisch, da er vielleicht kein Deutsch kann) alle Einträge auf Ungarisch und so weiter. Der nächste übersetzt dann von Ungarisch ins spanische, dann vom ungarischen ins Portugiesische usw. Alles ohne dass jemals ein Stück Code angepasst werden muss.

    Der Sinn ist es also, dass jeder beliebige Nutzer aus jeder vorhandenen übersetzten Sprache heraus (jede Sprache wird in eine eigenständige, separate Datei gespeichert werden), die Möglichkeit hat eine weitere Sprache hinzuzufügen, bis beliebig viele Sprachen vorhanden sind.

    Aus diesem Grund wird beim Aufruf der "Sprachen-Änderungs-Form" als erstes die vom Benutzer beliebig eingestellten Standardsprachdatei geladen. Sobald diese geladen ist erfolgt vom Benutzer entweder die Auswahl der zweiten Sprache aus den verschiedenen vorhandenen Sprachen um Änderungen daran vorzunehmen, oder es wird eine neue Sprachdatei kreiert um die Texte in einer weiteren neuen Sprache zu erstellen.

    So wie ich Dictionary(Of String, String) verstanden habe (hier sei gesagt, dass ich nicht der versierteste VB.Net Programmierer bin) würde das ziemlich komplex werden (wobei ich mich hier natürlich auch sehr irren kann). Habe ich da recht?

    Lieben Gruß

    Mike

    Mike-a_de schrieb:

    Das Programm wird eventuell in Sprachen übersetzt werden
    Gugst Du hier.
    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!
    Hallo RodFrom Germany,

    ich hatte tatsächlich mit "Globalization" angefangen und bereits eine Englische (USA) Version erstellt. Dann fiel mir ein, dass ich entweder die Source Dateien mitgeben, oder dass ich alle Sprachen selbst erstellen muss, da bei dieser Art der "Globalisierung" die verschiedenen Sprachversionen direkt in der Form erstellt werden müssen.

    Beides ist nicht Das was ich möchte. Aus diesem Grund habe ich auf die "Culture" Funktion verzichten müssen.

    Mein Ziel ist es das größte Maß an Flexibilität zu Gewährleisten, ohne den geneigten Nutzer zuviel Programmier-Kenntnis zuzumuten. Die Benutzer des Programmes werden, sofern ich das Programm wirklich jemals in allen gedachten Funktionalitäten fertig stellen werde, wirkliche User sein, die hiermit ein Prozess-Steuerungstool bekommen sollen.

    Lieben Gruß

    Mike

    Mike-a_de schrieb:

    das größte Maß an Flexibilität
    hast Du, indem Du das machst, was Bill sich gedacht hat.
    Wenn Du da was Neues erfindest, kann das gar nicht flexibel sein. 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!
    Hi RodFromGermany,

    ich wüsste nicht wie man sonst eine beliebige Anzahl von Sprachversionen erstellen (erstellen lassen) könnte, ohne dass man entweder
    • Den Source code und die jeweiligen Formen freigibt, oder
    • jede einzelne Sprachversion selbst erstellt.
    Und zu beidem bin ich nicht bereit. Falls Du noch eine Idee hast wie man das realisieren kann, ohne auch nur einen der beiden bullet points zu missachten, wäre ich mehr als nur dankbar. Mir ist nichts anderes eingefallen als den Benutzer selbst die Übersetzung vornehmen zu lassen. Viel kaputt machen kann er ja nicht.

    das größte Maß an Flexibilität
    hast Du, indem Du das machst, was Bill sich gedacht hat.

    Ich denke auch, dass Bill einen guten, brauchbaren und stabilen Rahmen erschaffen hat um der eigenen Kreativität freien Lauf lassen zu können. So gesehen, glaube ich, dass ich gar nicht so weit weg bin von dem was Microsoft will ;)

    Lieben Gruß

    Mike

    Mike-a_de schrieb:

    wie man sonst eine beliebige Anzahl von Sprachversionen erstellen (erstellen lassen) könnte
    Dazu könnte man glatt ne Frage im Forum loswerden. :D
    Pack die Ressourcen in eine Excel-Tabelle und gib diese zum Übersetzer. Er muss eine neue Spalte in der gewünschten Sprache erzeugen.
    Feddich.
    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!
    Hi RodFromGermany,

    RodFromGermany schrieb:

    Zitat von Mike-a_de: „wie man sonst eine beliebige Anzahl von Sprachversionen erstellen (erstellen lassen) könnte

    “Dazu könnte man glatt ne Frage im Forum loswerden. :D


    Wenn ich fertig bin, hätte ich eventuell auch gleich eine Antwort falls die Frage im Forum auftauchen sollte ;) . Ich habe bereits ein Workaround über einen array kostruiert, um einen DataGridView mit zwei Spalten aus zwei verschiedenen Textdateien zu befüllen. Ist nicht so elegant wie ich es mir erhofft habe, aber es funktioniert.

    Liebe Grüße

    Mike
    Das Befüllen aus 2 verschiedenen TextDateien ist Murx.
    Es muss eine Referenz-Sprache geben, etwa Englisch.
    Und jede Übersetzungstafel muss 2 Spalten haben: ReferenzSprache - Landessprache.
    Und die ReferenzSprachen-Spalte musste vorgeben.
    Wird son bischen wie ein Vokabel-Trainer.

    Ich bastel mal was mit typDataset.
    Hi ErfinderDesRades,

    ErfinderDesRades schrieb:

    Das Befüllen aus 2 verschiedenen TextDateien ist Murx.
    Es muss eine Referenz-Sprache geben, etwa Englisch.


    Prinzipiell stimme ich Dir zu. Mir wäre es auch am liebsten wenn es eine feste Referenzsprache geben würde, Vorzugsweise natürlich Englisch (bin selbst Ami).

    Hier ein paar Rahmeninformationen zu meiner "beruflichen Situation". Ich arbeite in einer internationalen IT Firma mit ca 40.000 Mitarbeitern (20.000 in Deutschland) in einem Konzern mit über 200.000 Mitarbeitern.Von den 20.000 in Deutschland befindlichen Mitarbeitern sind vielleicht ca. 1 - 2 % wirklich dazu in der Lage in Englisch zu kommunizieren (man staunt wenn man bedenkt, dass wir den Zusatz "international" in der Firmierung haben) Ein großer Batzen der internationalen Kollegen sind im Near Shore Bereich (östlich) zu finden, mit zumeist recht passablen Deutschkenntnissen, dafür nicht so gut im Englischen. Unsere Westeuropäische Kollegen (sofern nicht im DACH Verbund) tun sich auch zum Teil recht schwer mit Mehrsprachigkeit.

    Ich denke, dass hier Übersetzungen als Einzelaktion geschehen werden von Leuten die das Glück haben wirklich (mindestens) zweisprachig zu sein. Problem ... welche zwei Sprachen das jeweils sein werden ... keine Ahnung || Aus diesem Grunde die Mix-Möglichkeit.

    Und ja, es wird so ein bisschen (oder auch vielleicht sogar ein bisschen mehr :) ) wie ein Vokabeltrainer.

    Lieben Gruß

    Mike
    hier ein Form, mit dem man eine Language auswählen kann, und dann Referenz-Worte übersetzen. Zufügen/Löschen ist disabled.
    Zum Referenzworte anlegen muss man die .txt im Editor bearbeiten.

    Edit: zum Hintergrund: Fleissig fleissig testen - Lokalisierte Progs sind überaus gefährdet. Wenn da nur einer an irgendeiner Stelle iwelche Zahlen als Strings verarbeitet, dann mag das auf Englisch wunnebar laufen, und auf Deutsch machts dann Peng, aber erst nach 3 Monaten weil vlt. zufällig diese Popel-Methode erst nach 3 Monaten mal beansprucht wird.

    Dateien
    • LanguageTable.zip

      (117,37 kB, 70 mal heruntergeladen, zuletzt: )

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