Usando el API de Google es muy simple detectar el lenguaje de un texto. Para hacerlo más simple se puede crear un componente CakePHP y reutilizarlo.
El código sería el siguiente:
< ?php
class LanguageComponent extends Object {
function initialize() {
}
function startup(&$controller) {
$this->controller = $controller;
}
function detect($text){
App::import("Core", "HttpSocket");
$conn = new HttpSocket();
$url = "http://ajax.googleapis.com/ajax/services/language/detect?v=1.0&q=";
$url .= urlencode($text);
$result = $conn->get($url);
if (!$result){
return false;
}
$result = json_decode($result, true);
if (!$result || $result["responseStatus"]!=200 ||
!isset($result["responseData"]))
{
return false;
}
return $result["responseData"];
}
}
En caso de exito retorna una estructura del tipo (en caso de fallo retorna false):
Array
(
[language] => en
[isReliable] => 1
[confidence] => 0.9945003
)
Requiere CakePHP 1.2 (testeado con la rev 7125), y json_decode (PHP 5 >= 5.2.0, PECL json:1.2.0-1.2.1 [1])
Se puede ver una demo del componente en http://projects.pviojo.net/lang/main/detect
[1] http://cl2.php.net/json-decode

Excelente concepto estimado, felicitaciones!
Mi consulta es:
¿Realmente es necesario utilizar la API de Google para realizar esto?
Yo hize algo parecido para suggests de Keywords, y se me viene automaticamente a la cabeza el concepto que hiciste, y para hacerme una api propia lo resolveria de la siguiente manera:
- Cada lenguaje tiene sus Preposiciones + Articulos y hacer una lista con cada una en ingles, español y francés es realmente facil.
- Cada lenguaje tiene verbos basicos, que podrían darle un puntaje a la frase.
- El lenguaje que cumpla con mas puntaje, es el correcto
Saludos
Si, se podría, pero implicaría construir esas listas que no siempre es tan simple y confiable. Por otra parte, Google, por el volumen de información que maneja, es muy confiable en este sentido.
Interesantisima, e inteligentisima aplicacion. Felicitaciones. Da gusto ver cosas utiles en tan pocas lineas de codigo.