Funktionierender (übersichtlicher) Übersetzer für VB.NET

    • VB.NET

    Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von -Franky-.

      Funktionierender (übersichtlicher) Übersetzer für VB.NET

      Hi

      Ich poste hier mal einen funktionierenden Übersetzer der alle Sprachen kann die auch Google kann :)
      Ihr braucht auf der Form 5 Controls (1 Button und 4 Textboxen, können auch andere Controls sein)

      Bennenung:
      TextBox2 "txtText"
      TextBox1 "lngOutput"
      TextBox3 "lngInput"
      TextBox4 "txtOutput"

      Nun die Hauptfunktion.

      VB.NET-Quellcode

      1. ''' <summary>
      2. ''' Übersetzt einen Text in eine andere Sprache
      3. ''' </summary>
      4. ''' <param name="stext">Der Text der übersetzt werden soll</param>
      5. ''' <param name="languageIn">Die Input-Sprache</param>
      6. ''' <param name="languageOut">Die Output-Sprache</param>
      7. ''' <returns></returns>
      8. ''' <remarks></remarks>
      9. Public Shared Function Translate(ByVal stext As String, ByVal languageIn As String, ByVal languageOut As String)
      10. 'Webclient erstellen
      11. Dim client As New Net.WebClient
      12. 'Übersetzung herunterladen
      13. Dim translation As String = client.DownloadString("http://translate.google.de/translate_a/t?client=t&text=" & stext & "&sl=" & languageOut & "&tl=" & languageIn)
      14. 'Übersetzung zurückgeben
      15. Return translation
      16. End Function

      Um diese Funktion zu benutzen könnt ihr diesen Code benutzen:

      VB.NET-Quellcode

      1. 'Neue Übersetzung
      2. Dim lngText As String = Translate(txtText.Text, lngInput.Text, lngOutput.Text)
      3. 'Formattieren (kann auch weggelassen werden, sieht dann aber nicht so schön aus)
      4. Dim finalText As String() = lngText.Split({Chr(34)}, StringSplitOptions.RemoveEmptyEntries)
      5. 'Bekommen
      6. txtOutput.Text = finalText(1)


      Viel Spaß damit!

      MFG PhoenixBlaster :)
      Hallo @PhoenixBlaster
      erst mal funktioniert die Query nur wenn ich statt "Text" "q" einsetze und wenn man das getan hat sollte man auch Option Strict on an machen und den Verweis Visual-Basic raus nehmen :)
      ich habe dann mal eine Klasse gebaut die ein bisschen Übersichtlicher ist und auch schneller da sie die Webrequest Klasse nutzt :)
      Klasse :
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Public Class Translater
      2. Public Shared Function Translate(ByVal text As String, ByVal languageIn As Integer, ByVal languageOut As Integer) As String
      3. Dim endungen As String() = {"af", "sq", "ar", "hy", "az", "eu", "bn", "bs", "bg", "ceb", "zh-TW", "zh-CN", "da", "de", "en", "eo", "et", "fi", "fr", "gl", "ka", "el", "gu", "ht", "iw", "hi", "hmn", "id", "ga", "is", "it", "ja", "jw", "yi", "kn", "ca", "km", "ko", "hr", "lo", "la", "lv", "lt", "ms", "mt", "mr", "mk", "nl", "no", "fa", "pl", "pt", "ro", "ru", "sv", "sr", "sk", "sl", "es", "sw", "tl", "ta", "te", "th", "cs", "tr", "uk", "hu", "ur", "vi", "cy", "be"}
      4. Return GetHtml("https://translate.google.de/translate_a/t?client=t&sl=" & endungen(languageIn) & "&tl=" & endungen(languageOut) & "&q=" & text).Split({Convert.ToChar(34)}, StringSplitOptions.RemoveEmptyEntries)(1)
      5. End Function
      6. Private Shared Function GetHtml(ByVal URL As String) As String
      7. Try
      8. Dim request As Net.HttpWebRequest = CType(Net.HttpWebRequest.Create(URL), Net.HttpWebRequest)
      9. request.Method = Net.WebRequestMethods.Http.Get
      10. request.Timeout = 10000
      11. Dim response As Net.HttpWebResponse = CType(request.GetResponse, Net.HttpWebResponse)
      12. Dim leser As New IO.StreamReader(response.GetResponseStream())
      13. Return leser.ReadToEnd
      14. Catch ex As Exception
      15. Return String.Empty
      16. End Try
      17. End Function
      18. Public Enum Language
      19. Afrikanns = 0
      20. Albanisch = 1
      21. Arabisch = 2
      22. Armenisch = 3
      23. Aserbaidschanisch = 4
      24. Baskisch = 5
      25. Bengalisch = 6
      26. Bosnisch = 7
      27. Bulgarisch = 8
      28. Cebuano = 9
      29. Chinesisch_traditionel = 10
      30. Chinesisch_vereinfacht = 11
      31. Dänisch = 12
      32. Deutsch = 13
      33. Englisch = 14
      34. Esperanto = 15
      35. Estnisch = 16
      36. Finisch = 17
      37. Französisch = 18
      38. Galizisch = 19
      39. Georgisch = 20
      40. Griechisch = 21
      41. Gujarati = 22
      42. Haitianisch = 23
      43. Hebräisch = 24
      44. Hindi = 25
      45. Hmong = 26
      46. Indonesisch = 27
      47. Irisch = 28
      48. Isländisch = 29
      49. Italienisch = 30
      50. Japanisch = 31
      51. Javanesisch = 32
      52. Jiddisch = 33
      53. Kannada = 34
      54. Katalanisch = 35
      55. Khmer = 36
      56. Koreanisch = 37
      57. Kroatisch = 38
      58. Lao = 39
      59. Lateinisch = 40
      60. Lettisch = 41
      61. Litauisch = 42
      62. Malaysisch = 43
      63. Maltesisch = 44
      64. Marathisch = 45
      65. Mazedonisch = 46
      66. Niederländisch = 47
      67. Norwegisch = 48
      68. Persisch = 49
      69. Polnisch = 50
      70. Portugiesisch = 51
      71. Rumänisch = 52
      72. Russisch = 53
      73. Schwedisch = 54
      74. Serbisch = 55
      75. Slowakisch = 56
      76. Slowenisch = 57
      77. Spanisch = 58
      78. Suaheli = 59
      79. Tagalog = 60
      80. Tamil = 61
      81. Telugu = 62
      82. Thailändisch = 63
      83. Tschechisch = 64
      84. Türkisch = 65
      85. Ukrainisch = 66
      86. Ungarisch = 67
      87. Urdu = 68
      88. Vietnamesisch = 69
      89. Walisisch = 70
      90. Weißrussisch = 71
      91. End Enum
      92. End Class

      Aufruf :

      VB.NET-Quellcode

      1. Public Class Form1
      2. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
      3. MessageBox.Show(Translater.Translate("Hallo Welt das ist ein Test", Translater.Language.Deutsch, Translater.Language.Englisch))
      4. End Sub
      5. End Class


      Habe einfach mal alle Google Sprachen in eine Enum eingefügt ist einfacher :)
      hoffe das es irgendwann mal jemand braucht :)
      MFG 0x426c61636b4e6574776f726b426974
      InOffical VB-Paradise IRC-Server
      webchat.freenode.net/
      Channel : ##vbparadise

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

      Ich habe mir mal noch mal meinen Code angeschaut und ich habe ein paar mögliche Fehler behoben und eine String Extension eingebaut.
      Spoiler anzeigen

      VB.NET-Quellcode

      1. Imports System.Runtime.CompilerServices
      2. Public Class Form1
      3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
      4. Try
      5. MessageBox.Show("HALLO Welt ;)".Translate(Language.Deutsch, Language.Englisch))
      6. Catch ex As Exception
      7. MessageBox.Show(ex.ToString)
      8. End Try
      9. End Sub
      10. End Class
      11. Module Translation
      12. <Extension()>
      13. Public Function Translate(ByVal str As String, ByVal languageIn As Language, ByVal languageOut As Language) As String
      14. Dim endungen As String() = {"af", "sq", "ar", "hy", "az", "eu", "bn", "bs", "bg", "ceb", "zh-TW", "zh-CN", "da", "de", "en", "eo", "et", "fi", "fr", "gl", "ka", "el", "gu", "ht", "iw", "hi", "hmn", "id", "ga", "is", "it", "ja", "jw", "yi", "kn", "ca", "km", "ko", "hr", "lo", "la", "lv", "lt", "ms", "mt", "mr", "mk", "nl", "no", "fa", "pl", "pt", "ro", "ru", "sv", "sr", "sk", "sl", "es", "sw", "tl", "ta", "te", "th", "cs", "tr", "uk", "hu", "ur", "vi", "cy", "be"}
      15. Try
      16. If endungen.Count - 1 >= languageIn And endungen.Count - 1 >= languageOut Then Return GetHtml("https://translate.google.de/translate_a/t?client=t&sl=" & endungen(languageIn) & "&tl=" & endungen(languageOut) & "&q=" & str).Split({Convert.ToChar(34)}, StringSplitOptions.RemoveEmptyEntries)(1)
      17. Catch ex As Exception
      18. Throw New NoConnectionPossible("Der Gewünschte Text konnte nicht übersetzt werden." & Environment.NewLine & "Das könnte daran liegen das Google diese Abfrage nicht annimmt oder das sie keine internet Verbindung verfügen.")
      19. End Try
      20. Return str
      21. End Function
      22. Private Function GetHtml(ByVal URL As String) As String
      23. Try
      24. Dim request As Net.HttpWebRequest = CType(Net.HttpWebRequest.Create(URL), Net.HttpWebRequest)
      25. request.Method = Net.WebRequestMethods.Http.Get
      26. request.Timeout = 10000
      27. Dim response As Net.HttpWebResponse = CType(request.GetResponse, Net.HttpWebResponse)
      28. Dim leser As New IO.StreamReader(response.GetResponseStream())
      29. Return leser.ReadToEnd
      30. Catch ex As Exception
      31. Throw New NoConnectionPossible("Die Verbindung wurde nicht erfolgreich abgeschlossen.")
      32. Return String.Empty
      33. End Try
      34. End Function
      35. Public Enum Language
      36. Afrikanns = 0 : Albanisch = 1 : Arabisch = 2 : Armenisch = 3
      37. Aserbaidschanisch = 4 : Baskisch = 5 : Bengalisch = 6 : Bosnisch = 7
      38. Bulgarisch = 8 : Cebuano = 9 : Chinesisch_traditionel = 10 : Chinesisch_vereinfacht = 11
      39. Dänisch = 12 : Deutsch = 13 : Englisch = 14 : Esperanto = 15
      40. Estnisch = 16 : Finisch = 17 : Französisch = 18 : Galizisch = 19
      41. Georgisch = 20 : Griechisch = 21 : Gujarati = 22 : Haitianisch = 23
      42. Hebräisch = 24 : Hindi = 25 : Hmong = 26 : Indonesisch = 27
      43. Irisch = 28 : Isländisch = 29 : Italienisch = 30 : Japanisch = 31
      44. Javanesisch = 32 : Jiddisch = 33 : Kannada = 34 : Katalanisch = 35
      45. Khmer = 36 : Koreanisch = 37 : Kroatisch = 38 : Lao = 39
      46. Lateinisch = 40 : Lettisch = 41 : Litauisch = 42 : Malaysisch = 43
      47. Maltesisch = 44 : Marathisch = 45 : Mazedonisch = 46 : Niederländisch = 47
      48. Norwegisch = 48 : Persisch = 49 : Polnisch = 50 : Portugiesisch = 51
      49. Rumänisch = 52 : Russisch = 53 : Schwedisch = 54 : Serbisch = 55
      50. Slowakisch = 56 : Slowenisch = 57 : Spanisch = 58 : Suaheli = 59
      51. Tagalog = 60 : Tamil = 61 : Telugu = 62 : Thailändisch = 63
      52. Tschechisch = 64 : Türkisch = 65 : Ukrainisch = 66 : Ungarisch = 67
      53. Urdu = 68 : Vietnamesisch = 69 : Walisisch = 70 : Weißrussisch = 71
      54. End Enum
      55. Public Class NoConnectionPossible
      56. Inherits ApplicationException
      57. Public Sub New(ByVal message As String)
      58. MyBase.New(message)
      59. End Sub
      60. End Class
      61. End Module
      MFG 0x426c61636b4e6574776f726b426974
      InOffical VB-Paradise IRC-Server
      webchat.freenode.net/
      Channel : ##vbparadise

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

      Neu

      @BlackNetworkBit
      Lange her dein Post...
      Ich habe aber genau das Problem zu programmieren.
      Leider funktioniert jetzt nach 14 Jahren deine URL nicht mehr. Aber vielleicht bist du noch aktiv und kannst eventuell korrigieren??? Wäre toll.
      Grüße - Dietrich

      Neu

      @dherr Probier mal den von Telerik:
      converter.telerik.com/
      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!

      Neu

      @RodFromGermany und @VB1963
      Ich gehe stark davon aus, dass es bei der aktuellen Frage nicht um einen Konverter, sondern um einen Sprachübersetzer (nicht Programmiersprachen) geht. Darum geht es doch in diesem Thread.

      @dherr Wenn du mit URL die vom Google Translator meinst, warum gehst du nicht einfach auf die Seite und schaust dir die aktuelle URL an?

      Ein Übersetzen von "Hello" von EN nach DE geht z. B. mit dieser URL: https://translate.google.com/?sl=en&tl=de&text=Hello&op=translate (translate.google.com/?sl=en&tl=de&text=Hello&op=translate)
      Besucht auch mein anderes Forum:
      Das Amateurfilm-Forum

      Neu

      Hi

      Ich müsste mal in mein VB6 Archiv schauen. Da hab ich mal einen Code geschrieben der den Google Übersetzer incl. Google TTS (also man bekommt den Text als MP3-Stream zurück) nutzt. Nachteil des ganzen, wenn man zuviele Anfragen an Google hintereinander sendet, wird man für eine gewisse Zeit, kann ein paar Stunden dauern, von Google ausgesperrt.

      Wenn man es richtig machen möchte, dann benötigt man einen entsprechenden API-Key von Google um die dafür vorgesehenden GoogleAPIs/Dienste nutzen zu können. Man wird dann nicht mehr für Stunden ausgesperrt. Soweit ich das noch in Erinnerung habe, werden die Zugriffe aber auf X pro Stunde (oder Tag, oder Monat) begrenzt.

      Edit: Für die, die noch VB6 können oder einfach nur mal in den Code reinschauen wollen: VBC_GoogleTranslator.zip -> activevb.de/cgi-bin/upload/download.pl?id=3780
      Die entsprechenden https-Adressen zum Übersetzen liefern hier einen JSON zurück. So kann man das ganze im eigenen Programm verarbeiten und das Ergebniss anzeigen. Für die MP3 Wiedergabe würde ich heute was anderes nehmen. Vllt. hat ja jemand Lust das nach .NET zu übersetzen. :D
      Mfg -Franky-

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „-Franky-“ ()