Mehrsprachiges Programm

  • VB.NET

Es gibt 36 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Mehrsprachiges Programm

    Hallo.

    Ich möchte ein Programm Mehrsprachig machen.
    Hauptsächlich Deutsch, Englisch und Französisch .(und vielleicht auch andere Sprachen)

    Gibt es eine DLL-Datei, oder eine Funktion mit der das Programm während der Laufzeit übersetzen werden kann? (Auch die Messageboxen usw)

    Verschoben. ~Thunderbolt

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

    Welche Technik? WinForms oder WPF? (In WPF wäre das super einfach :D )

    Für WinForms: Programme mehrsprachig erstellen
    Für WPF: codeproject.com/Articles/12346…-Multilingual-WPF-Applica

    Wieso eigentlich in Off Topic? Wie soll ich denn so meine 1000 Posts erreichen?
    Mfg
    Vincent

    Serialisierung und CultureInfo(s) wäre noch eine Möglichkeit.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Jason schrieb:

    Hauptsächlich Deutsch
    Erster Link von @VincentTB
    Und:
    Das Programm selbst enthält die "Default-Sprache" on board, jede weitere Sprache bring je eine Ressourcen-DLL.
    Wenn Du nach Bill's Plan vorgehst, startet das Programm in derjenigen Sprache, die es auf dem Rechner vorfindet. Ist diese nicht implementiert, kommt die "Default-Sprache".
    Wenn also Dein Programm in der Welt rumreisen soll, machst Du die "Default-Sprache" auf amerikanisches Englisch ("en-US"), das wird auf der ganzen Welt gesprochen.
    Wenn Du dann eine zweitwe Sprache durchgezogen hast, ist jede weitere Sprache lediglich ein Auftrag für einen Übersetzer.
    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!

    Jason schrieb:

    herunterladen
    Gar nicht, die DLLs generiert der Compiler.
    Folge meinem Tutorial, erstell ein kleines Testprogramm in 2 Sprachen, dass Du mit dem Prozedere vertraut wirst.
    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!
    Visual Studio Express 2012 - Visual Basic


    ---

    Ich meinte ich kann keine .resx Datei finden.
    Bilder
    • Neues Element hinzufügen.png

      60,76 kB, 955×660, 210 mal angesehen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Jason“ ()

    Jason schrieb:

    Express
    kann das nicht.
    Probier es mit dieser Datei:
    Resources.de-DE.zip
    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!
    In der Resources-DE.resx steht jetzt folgendes:

    VB.NET-Quellcode

    1. Public Class Resources
    2. Teststring | this is an english text
    3. Teststring | Das ist ein deutscher Text
    4. End Class


    Fehler 1 Ungültiges Token 'Text' auf Stammebene des Dokuments:

    VB.NET-Quellcode

    1. Public Class Resources


    Fehler 3 "Teststring" ist ein Typ in "Resources" und kann nicht als Ausdruck verwendet werden:

    VB.NET-Quellcode

    1. MessageBox.Show(My.Resources.Teststring)

    Jason schrieb:

    In der Resources-DE.resx steht jetzt folgendes:
    Falsch.
    In der Resources.de-DE.resx steht

    Quellcode

    1. Public Class Resources
    2. Teststring | Das ist ein deutscher Text
    3. End Class

    In der Resources.resx steht

    Quellcode

    1. Public Class Resources
    2. Teststring | this is an english text
    3. End Class
    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!

    Jason schrieb:

    ersetzen
    Generiere eine vollständige Datei in einer Sprache mit dem Studio und übersetze deren Inhalt.
    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!
    Die Datei Resources.resx ist aber schon vorhanden:

    XML-Quellcode

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <root>
    3. <!--
    4. Microsoft ResX Schema
    5. Version 2.0
    6. The primary goals of this format is to allow a simple XML format
    7. that is mostly human readable. The generation and parsing of the
    8. various data types are done through the TypeConverter classes
    9. associated with the data types.
    10. Example:
    11. ... ado.net/XML headers & schema ...
    12. <resheader name="resmimetype">text/microsoft-resx</resheader>
    13. <resheader name="version">2.0</resheader>
    14. <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    15. <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    16. <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    17. <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    18. <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
    19. <value>[base64 mime encoded serialized .NET Framework object]</value>
    20. </data>
    21. <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
    22. <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
    23. <comment>This is a comment</comment>
    24. </data>
    25. There are any number of "resheader" rows that contain simple
    26. name/value pairs.
    27. Each data row contains a name, and value. The row also contains a
    28. type or mimetype. Type corresponds to a .NET class that support
    29. text/value conversion through the TypeConverter architecture.
    30. Classes that don't support this are serialized and stored with the
    31. mimetype set.
    32. The mimetype is used for serialized objects, and tells the
    33. ResXResourceReader how to depersist the object. This is currently not
    34. extensible. For a given mimetype the value must be set accordingly:
    35. Note - application/x-microsoft.net.object.binary.base64 is the format
    36. that the ResXResourceWriter will generate, however the reader can
    37. read any of the formats listed below.
    38. mimetype: application/x-microsoft.net.object.binary.base64
    39. value : The object must be serialized with
    40. : System.Serialization.Formatters.Binary.BinaryFormatter
    41. : and then encoded with base64 encoding.
    42. mimetype: application/x-microsoft.net.object.soap.base64
    43. value : The object must be serialized with
    44. : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
    45. : and then encoded with base64 encoding.
    46. mimetype: application/x-microsoft.net.object.bytearray.base64
    47. value : The object must be serialized into a byte array
    48. : using a System.ComponentModel.TypeConverter
    49. : and then encoded with base64 encoding.
    50. -->
    51. <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    52. <xsd:element name="root" msdata:IsDataSet="true">
    53. <xsd:complexType>
    54. <xsd:choice maxOccurs="unbounded">
    55. <xsd:element name="metadata">
    56. <xsd:complexType>
    57. <xsd:sequence>
    58. <xsd:element name="value" type="xsd:string" minOccurs="0" />
    59. </xsd:sequence>
    60. <xsd:attribute name="name" type="xsd:string" />
    61. <xsd:attribute name="type" type="xsd:string" />
    62. <xsd:attribute name="mimetype" type="xsd:string" />
    63. </xsd:complexType>
    64. </xsd:element>
    65. <xsd:element name="assembly">
    66. <xsd:complexType>
    67. <xsd:attribute name="alias" type="xsd:string" />
    68. <xsd:attribute name="name" type="xsd:string" />
    69. </xsd:complexType>
    70. </xsd:element>
    71. <xsd:element name="data">
    72. <xsd:complexType>
    73. <xsd:sequence>
    74. <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
    75. <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
    76. </xsd:sequence>
    77. <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
    78. <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
    79. <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
    80. </xsd:complexType>
    81. </xsd:element>
    82. <xsd:element name="resheader">
    83. <xsd:complexType>
    84. <xsd:sequence>
    85. <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
    86. </xsd:sequence>
    87. <xsd:attribute name="name" type="xsd:string" use="required" />
    88. </xsd:complexType>
    89. </xsd:element>
    90. </xsd:choice>
    91. </xsd:complexType>
    92. </xsd:element>
    93. </xsd:schema>
    94. <resheader name="resmimetype">
    95. <value>text/microsoft-resx</value>
    96. </resheader>
    97. <resheader name="version">
    98. <value>2.0</value>
    99. </resheader>
    100. <resheader name="reader">
    101. <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
    102. </resheader>
    103. <resheader name="writer">
    104. <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
    105. </resheader>
    106. </root>

    RodFromGermany schrieb:

    Generiere eine vollständige Datei in einer Sprache mit dem Studio und übersetze deren Inhalt.

    Jason schrieb:

    Die Datei Resources.resx ist aber schon vorhanden
    ==> übersetze deren Inhalt.
    Natürlich nur die relevanten Sachen.
    Oder
    Du verlässt das Studio, kopierst die eine auf die andere, öffnest das Studio und übersetzt die relevanten Text eim Designer.
    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!