Translating Twitter, part 2
A while ago I wrote in an article about translating tweets in my client Haunt. For the translating itself I was using the Google Translate API, which has sadly be deprecated. Evil after all I suppose.
I've now rewritten my translation code to use the Bing Translation APIs instead. You need to register an API key (see http://www.bing.com/developers/appids.aspx) to be able to use the APIs. The APIs that I am using are fairly simple though.
For a simple translation, requesting http://api.microsofttranslator.com/V2/Http.svc/Translate?appId=[yourappid]&to=en&text=[yourtext] is all you need to do. It will auto-detect the language for you as well.
However, it does not return the detected language, so I had to resort to using two requests in order to reimplement the same functionality that I had before with the Google APIs. I also found that it was easier to use the Http and not the Ajax variant of the API. It requires using SimpleXML to get to the data, but at least you do not have to fight with the BOM (Byte-order mark) and quoting.
The full code looks like:
<?php
$apiBase = 'http://api.microsofttranslator.com/V2/Http.svc/';
$appId = 'yourappid';
$text = urlencode( 'Een hoge boom vangt veel wind' );
$language = (string) simplexml_load_string(
file_get_contents(
"{$apiBase}/Detect?appId={$appId}&text={$text}"
)
);
$inEnglish = (string) simplexml_load_string(
file_get_contents(
"{$apiBase}/Translate?appId={$appId}&text={$text}&to=en"
)
);
var_dump( $language, $inEnglish );
?>
with as output:
string(2) "nl" string(34) "A high tree catches a lot of wind."
Comments
Any reason to use simplexml_load_string(file_get_contents()) instead of just simplexml_load_file() ?
- Derick said:
-
I had to resort to using two requests...
By using the GetTranslations service, the detected source language and the translation can be found with one request. Admittedly, it's a little bit messy (needing a POST request) but it saves waiting around for two request/response cycles.
An example, which appears to work, based on the code in your article can be found at https://gist.github.com/1000264 .
@Ilia: No reason, it's just that I debugged with file_get_contents() first.
@Peter: I'll update the article again... I'd missed this API.
Life Line
We're about to celebrate the most famous Scottish poet!
Created a waste_basket
Created 2 waste_baskets
Created a bench
Created 4 benches
Created a waste_basket and a bench; Updated a toilet
Created a bench
Created an information
Updated a restaurant
Created 2 grit_bins
Created 2 waste_baskets
I hiked 20.5km in 3h52m17s
Updated a post_box
I walked 3.9km in 38m24s
I walked 5.0km in 47m13s
Merge branch 'xdebug_3_5'
Merged pull request #1060
Style fixes, and make log message type and text consistent
Fixed issue #2395: Change Windows Named Pipe control socket implement…
I walked 8.2km in 1h26m27s
I walked 1.2km in 9m48s
I've just finished reading "Children of Ruin", by Adrian Tchaikovsky.
The second book in the series, following Children of Time (the one with the spiders).
Great read, but a little creepy at times.
I walked 8.4km in 1h21m38s
Merged pull request #1061




Shortlink
This article has a short URL available: https://drck.me/bing-translate-8nq