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
Updated a cafe
Specify street/place names to addresses
Specify bicycle parking capacities
Specify bicycle parking fees
Specify bicycle parking access
Specify whether crosswalks have tactile paving
Specify width of opening
Specify whether pitches are lit
Specify pitch surfaces
Specify whether pedestrian crossings have markings
Specify step counts
Survey tactile paving on steps
Specify whether steps have a ramp
Specify which way leads up for steps
Specify whether pedestrian crossings have islands
Specify whether pedestrian crossings have traffic signals
Determine roads lane count
Specify whether roads have lane markings
Survey if places still exist
Specify whether roads have sidewalks
Survey postbox collection times
Survey opening hours
Determine whether ATM allows depositing cash
Specify bicycle parkings covers


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