Ressourcendateien zur Lokalisierung von Programmen - welche ist die korrekte Datei / Vorgehensweise?

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ray.

    Ressourcendateien zur Lokalisierung von Programmen - welche ist die korrekte Datei / Vorgehensweise?

    Hallo,

    ich bin gerade dabei mein Programm zu lokalisieren (Deutsch und Englisch). Ich habe unter Projekteigenschaften - Ressourcen die jeweiligen Strings für die Standardsprache (Deutsch) eingefügt und rufe Sie im Programm über "My.Resources.Resourcename" auf.
    Wenn ich nun das Programm im Editor auf Englisch umstelle, kommt eine riesen Fehlermeldung, dass die jew. Resourcestrings nicht verfügbar währen.
    Ich habe im Projektexplorer nachgeguckt, meine Ressourcen sind im Ordner My Project unter "Resources.resx" gespeichert - die Ressourcendatei für Englisch wäre allerdings unter Programm.vb - Programm.en.resx.

    Wenn ich diese editiere wird sofort nachgefragt ob ich die Datei wirklich bearbeiten will, da sie Teil eines anderen Projektelements ist - eine Meldung die ich beim ursprünglichen Ressourcen hinzufügen nicht erhalten habe.

    Ist es also richtig in diese Datei meine Strings reinzuschreiben oder müssen die woanders hin? Kann ich dann weiterhin mit My.Resources... auf die Strings zugreifen?

    Danke und Grüße


    Edit:

    Im Prinzip bräuchte ich eine Resources.en.resx Datei im My Project Ordner, dass ich weiterhin mit dem Namespace My.Resources darauf zugreifen kann, nur wie erstelle ich diese?

    Edit2:

    ... so wie hier: vbarchiv.net/workshop/workshop…wendungen-mit-vb2005.html nur leider gibts das nicht in der Form in VB 2010.

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ray“ ()

    Zunächst musst Du in den Projekteinstellungen
    Projekt -> Eigenschaften
    -> Anwendung -> Assemblyinformationen
    die neutrale Sprache vorgeben. -> deutsch
    Damit werden alle Texte, die nicht lokalisiert sind, dieser Sprache zugeschlagen.
    Den Formen Deines Programms musst Du die Eigenschaft
    Localizable=True
    zuweisen.
    Nun kannst Du eine andere Sprache auswählen: englisch
    und trägst Du alle Texte in der jeweiligen Sprache ein.
    Und so setzt Du die Sprache bei Programmstart bzw. -restart:

    VB.NET-Quellcode

    1. Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
    2. AppLanguageID = IniFile.GetProfileString("Common", "Language", SysLanguageID)
    3. Dim Culture As System.Globalization.CultureInfo
    4. Culture = New System.Globalization.CultureInfo(AppLanguageID)
    5. System.Threading.Thread.CurrentThread.CurrentUICulture = Culture
    6. End Sub
    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!
    Genau, und an diesem Punkt bin ich.

    Nun benötige ich aber nicht nur lokalisierte Formen, sondern auch Variablen. Deswegen, wie oben beschrieben, habe ich etliche Strings hinzugefügt und greife über My.Resources.Stringname darauf zu.

    Wie mache ich das analog für die englische Form?
    Also Teil 2:
    Lokalisierbare Strings hinzufügen.
    1. zum Projekt eine neue Ressource hinzufügen:
    2. Hinzufügen -> Komponente -> Ressourcendatei
    3. Name vorhanden: Resources.resx
    4. Name neu: Resources.en.resx ' bzw Resources.de.resx oder so
    5. auf Resources.en.resx -> Eigenschaften
    6. Namespace des benutzerdefinierten Tools: My.Resources

    fertig
    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!
    Hey, vielen Dank für deine Hilfe.

    Komischerweise finde ich auch den Punkt "Komponente" unter Hinzufügen nicht, auch die Möglichkeit im Link aus meinem ersten Post scheint es in VB2010 nicht zu geben.

    Was ich jetzt gemacht habe war einfach die Resources.resx im Projektmappeneditor markiert, STRG+C, STRG+V und dann in Resource.en.resx umbenannt.

    Klappt wunderbar, allerdings komisch, dass ichs nicht einfach über ein Menü hinzufügen kann.

    Grüße