Source for file googleTranslate.class.php
Documentation is available at
googleTranslate.class.php
<?php
/**
* GoogleTranslateWrapper: PHP wrapper for Google Translation services
* Copyright (C) 2010 Sameer Borate
*
* GoogleTranslateWrapper is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* GoogleTranslateWrapper is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with GoogleTranslateWrapper; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
*
@category
GoogleTranslateWrapper
*
@package
GoogleTranslateWrapper
*
@author
Sameer Borate
*
@copyright
2010 Sameer Borate
*/
/**
* GoogleTranslateWrapper Main Class
*
*
@category
GoogleTranslateWrapper
*
@package
GoogleTranslateWrapper
*
@author
Sameer Borate
*
@link
http://www.codediesel.com
*
@copyright
2010 Sameer Borate
*
@version
1.5
*/
class
GoogleTranslateWrapper
{
/**
* URL of Google translate
*
@var
string
*/
private
$_googleTranslateUrl
=
'http://ajax.googleapis.com/ajax/services/language/translate'
;
/**
* URL of Google language detection
*
@var
string
*/
private
$_googleDetectUrl
=
'http://ajax.googleapis.com/ajax/services/language/detect'
;
/**
* Language to translate from
*
@var
string
*/
private
$_fromLang
=
''
;
/**
* Language to translate to
*
@var
string
*/
private
$_toLang
=
''
;
/**
* API version
*
@var
string
*/
private
$_version
=
'1.0'
;
/**
* Text to translate
*
@var
string
*/
private
$_text
=
''
;
/**
* Site url using the code
*
@var
string
*/
private
$_siteUrl
=
''
;
/**
* Google API key
*
@var
string
*/
private
$_apiKey
=
''
;
/**
* Host IP address
*
@var
string
*/
private
$_ip
=
''
;
/**
* POST fields
*
@var
string
*/
private
$_postFields
;
/**
* Translated Text
*
@var
string
*/
private
$_translatedText
;
/**
* Service Error
*
@var
string
*/
private
$_serviceError
=
""
;
/**
* Detected source language
*
@var
string
*/
private
$_detectedSourceLanguage
=
""
;
const DETECT = 1
;
const TRANSLATE = 2
;
/**
* Build a POST url to query Google
*
*/
private
function
_composeUrl
(
$type
)
{
if
(
$type
== self
::
TRANSLATE
)
{
$fields
= array
(
'v'
=>
$this
->
_version
,
'q'
=>
$this
->
_text
,
'langpair'
=>
$this
->
_fromLang
.
"|"
.
$this
->
_toLang
)
;
}
elseif
(
$type
== self
::
DETECT
)
{
$fields
= array
(
'v'
=>
$this
->
_version
,
'q'
=>
$this
->
_text
)
;
}
if
(
$this
->
_apiKey
!=
""
)
$fields
[
'key'
]
=
$this
->
_apiKey
;
if
(
$this
->
_ip
!=
""
)
$fields
[
'userip'
]
=
$this
->
_ip
;
$this
->
_postFields
=
http_build_query
(
$fields
,
''
,
"&"
)
;
}
/**
* Process the built query using cURL and POST
*
*
@param
string
POST fields
*
@return
string
response
*/
private
function
_remoteQuery
(
$query
)
{
if
(
!
function_exists
(
'curl_init'
))
{
return
""
;
}
/* Setup CURL and its options*/
$ch
=
curl_init
(
)
;
curl_setopt
(
$ch
,
CURLOPT_URL
,
$this
->
_googleTranslateUrl
)
;
curl_setopt
(
$ch
,
CURLOPT_REFERER
,
$this
->
_siteUrl
)
;
curl_setopt
(
$ch
,
CURLOPT_RETURNTRANSFER
,
1
)
;
curl_setopt
(
$ch
,
CURLOPT_TIMEOUT
,
15
)
;
curl_setopt
(
$ch
,
CURLOPT_POST
,
1
)
;
curl_setopt
(
$ch
,
CURLOPT_POSTFIELDS
,
$query
)
;
$response
=
curl_exec
(
$ch
)
;
return
$response
;
}
/**
* Process the built query using cURL and GET
*
*
@param
string
GET fields
*
@return
string
response
*/
private
function
_remoteQueryDetect
(
$query
)
{
if
(
!
function_exists
(
'curl_init'
))
{
return
""
;
}
$ch
=
curl_init
(
)
;
$url
=
$this
->
_googleDetectUrl
.
"?"
.
$query
;
curl_setopt
(
$ch
,
CURLOPT_URL
,
$url
)
;
curl_setopt
(
$ch
,
CURLOPT_RETURNTRANSFER
,
1
)
;
curl_setopt
(
$ch
,
CURLOPT_REFERER
,
$this
->
_siteUrl
)
;
$response
=
curl_exec
(
$ch
)
;
return
$response
;
}
/**
* Self test the class
*
*
@return
boolean
*/
public
function
selfTest
(
)
{
if
(
!
function_exists
(
'curl_init'
))
{
echo
"cURL not installed."
;
}
else
{
$testText
=
$this
->
translate
(
"hello"
,
"fr"
,
"en"
)
;
echo
(
$testText
==
"bonjour"
)
?
"Test Ok."
:
"Test Failed."
;
}
}
/**
* Get the last generated service error
*
*
@return
String
*/
public
function
getLastError
(
)
{
return
$this
->
_serviceError
;
}
/**
* Get the detected source language, if the source is not provided
* during query
*
*
@return
String
*/
public
function
getDetectedSource
(
)
{
return
$this
->
_detectedSourceLanguage
;
}
/**
* Set credentials (optional) when accessing Google translation services
*
*
@param
string
$apiKey
your google api key
*/
public
function
setCredentials
(
$apiKey
,
$ip
)
{
$this
->
_apiKey
=
$apiKey
;
$this
->
_ip
=
$ip
;
}
/**
* Translate the given text
*
@param
string
$text
text to translate
*
@param
string
$to
language to translate to
*
@param
string
$from
optional language to translate from
*
@return
boolean
| string
*/
public
function
translate
(
$text
=
''
,
$to
,
$from
=
''
)
{
if
(
$text
==
''
||
$to
==
''
)
{
return
false
;
}
else
{
$this
->
_text
=
$text
;
$this
->
_toLang
=
$to
;
$this
->
_fromLang
=
$from
;
}
$this
->
_composeUrl
(
self
::
TRANSLATE
)
;
if
(
$this
->
_text
!=
''
&&
$this
->
_postFields
!=
''
)
{
$contents
=
$this
->
_remoteQuery
(
$this
->
_postFields
)
;
$json
=
json_decode
(
$contents
,
true
)
;
if
(
$json
[
'responseStatus'
]
== 200
)
{
$this
->
_translatedText
=
$json
[
'responseData'
]
[
'translatedText'
]
;
if
(
isset
(
$json
[
'responseData'
]
[
'detectedSourceLanguage'
]
))
{
$this
->
_detectedSourceLanguage
=
$json
[
'responseData'
]
[
'detectedSourceLanguage'
]
;
}
return
$this
->
_translatedText
;
}
else
{
$this
->
_serviceError
=
$json
[
'responseDetails'
]
;
return
false
;
}
}
else
{
return
false
;
}
}
/**
* Detect the language of the given text
*
@param
string
$text
text language to detect
*
@return
boolean
| string
*/
public
function
detectLanguage
(
$text
)
{
if
(
$text
==
''
)
{
return
false
;
}
else
{
$this
->
_text
=
$text
;
}
$this
->
_composeUrl
(
self
::
DETECT
)
;
if
(
$this
->
_text
!=
''
&&
$this
->
_postFields
!=
''
)
{
$contents
=
$this
->
_remoteQueryDetect
(
$this
->
_postFields
)
;
$json
=
json_decode
(
$contents
,
true
)
;
if
(
$json
[
'responseStatus'
]
== 200
)
{
return
$json
[
'responseData'
]
;
}
else
{
$this
->
_serviceError
=
$json
[
'responseDetails'
]
;
return
false
;
}
}
else
{
return
false
;
}
}
}
?>
Documentation generated on Mon, 22 Mar 2010 12:42:33 +0000 by
phpDocumentor 1.4.1