This has been out there for a long time, anyhow I found it know and I think it will be very cool to have our application translate on the fly whatever text we need to any language we desire.
If you think you don’t need translation or that its not so good (need human translation help) you are not so right.
For example you can translate names, and subjects from one language to another on the fly, belive me it will help a lot if you are working with international appcliations
So let’s start, Google provides these links as reference to its translation service
So after a quick review, we can consume it by calling the service as an HttpWebRequest, and get the result back.
So for example:
http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=Ahmed Khaled&langpair=en|Ar
the service will reply back with the following:
{"responseData": {"translatedText":"احمد خالد"}, "responseDetails": null, "responseStatus": 200}
Ok, I will give a simple VB example here (to warp the result back):
Public Shared Function Translate(
ByVal Text As String, ByVal FromLanguage As String
, ByVal ToLanguage As String) As String
'Create the HttpWebRequest object
Dim URL As String = String.Format(GoogleServiceURL, Text, FromLanguage, ToLanguage)
Dim req As HttpWebRequest = WebRequest.Create(URL)
'Set the timeout to 2 second (or 1,000 milliseconds)
req.Timeout = 2000
''Create the proxy class instance if needed
'Dim prxy As New WebProxy("http://xxx.xxx.xxx.xxx:xxxx")
''Specify that the HttpWebRequest should use the proxy server
'req.Proxy = prxy
Try
'Get the data as an HttpWebResponse object
Dim resp As HttpWebResponse = req.GetResponse()
'Convert the data into a string (assumes that you are requesting text)
Dim sr As New StreamReader(resp.GetResponseStream())
Dim results As String = sr.ReadToEnd()
sr.Close()
Dim GRD As New GoogleResponseData(results)
' ... work with results ...
Return GRD.TranslatedText
Catch wex As WebException
Return "Error in Translation: " + wex.Message
'Something went wrong in the HTTP request!
End Try
End Function
The GoogleResponseData is only a simple class that will separate the returning string to some object you can use,
Private Class GoogleResponseData
Private _TranslatedText As String
Private _ResponseDetails As String
Private _ResponseStatus As String
Public ReadOnly Property TranslatedText() As String
Get
Return _TranslatedText
End Get
End Property
Public ReadOnly Property ResponseDetails() As String
Get
Return _ResponseDetails
End Get
End Property
Public ReadOnly Property ResponseStatus() As String
Get
Return _ResponseStatus
End Get
End Property
Public Sub New(ByVal Result As String)
'Result format
'{"responseData": {"translatedText":"Hello"}, "responseDetails": null, "responseStatus": 200}
Result = Result.Replace("""", "")
Dim rx As New Regex("{responseData: {translatedText:(?.*)}, responseDetails: (?.*), responseStatus: (?.*)}" , RegexOptions.Singleline)
Dim mc As MatchCollection = rx.Matches(Result)
If mc.Count = 1 Then
_TranslatedText = mc(0).Groups(1).Value
_ResponseDetails = mc(0).Groups(2).Value
_ResponseStatus = mc(0).Groups(3).Value
End If
End Sub
End Class
I love google services.. J