Detectar idioma en C# .NET

¡Hola! Bienvenidos, en esta ocasión, quiero compartir con ustedes la solución a una problemática que tuve hace unos días, ¿Cómo poder saber a qué idioma pertenece una cadena de texto?

A lo largo de mi investigación, encontré varias posibles soluciones, lamentablemente algunas no cumplían al 100% con lo que necesitaba, por ejemplo, no lograban detectar ciertos idiomas en específico, o bien, tenían un costo en particular.

Al final, encontré una solución que me ha parecido extraordinaria y que es gratuita. Para mostrártelo, he creado un nuevo proyecto de Consola en Visual Studio, al que llamé “DetectingLanguagesDemo”.

Voy a instalar un paquete nuget, que por cierto, encontré por fortuna navegando entre las decenas de resultados en la búsqueda de paquetes, y que se llama “LanguageDetection.NETStandard”, de Pēteris Ņikiforovs.

NuGet\Install-Package LanguageDetection.NETStandard 

Una vez que el plugin ha sido instalado, simplemente hay que crear una nueva instancia de la clase “LanguageDetector”, a la que debemos indicar qué idiomas queremos cargar a través del método “AddLanguages”, que recibe un arreglo con los idiomas que queremos detectar, como por ejemplo inglés:

using LanguageDetection;

var detector = new LanguageDetector();

detector.AddLanguages(new[] { "en" }); 

o bien, podemos utilizar el método AddAllLanguages, que será capaz de detectar 53 idiomas.

detector.AddAllLanguages(); 

Finalmente, basta con ejecutar el método Detect, pasando la cadena del texto, en este caso “This library is perfect for what I need”, lo que retornará el idioma de la cadena. Voy a crear un Console.WriteLine para ver el resultado, y a ejecutar la aplicación.

string text = "This library is perfect for what I need";

detector.Detect(text); 
Detectar Idiomas en cadenas C# .NET

Puedes ver que el resultado de la ejecución  nos devuelve el código eng, que se refiere al idioma inglés. Voy a cambiar la cadena por la misma cadena en español: “Esta biblioteca es perfecta para lo que necesito”, y a ejecutar nuevamente el programa.

El resultado, es el código spa, que corresponde al idioma español. Voy a hacer una última prueba con la misma cadena, pero en esta ocasión traducida al idioma francés: “Cette bibliothèque répond parfaitement à mes besoins”. Una vez más, obtenemos el código fra, correspondiente al idioma francés.

Si te preguntas porqué el resultado nos retorna 3 caracteres, es porque se utiliza la norma iso 639.3. Para facilitarte las cosas, te comparto el enlace a este sitio web, que contiene el nombre de los idiomas, así como el código ISO correspondiente.

Por último, te comparto también el listado dentro del repositorio con los códigos ISO de los idiomas soportados por el paquete nuget.

Espero que esta información te sea de mucha utilidad.

Deja un comentario

Tu dirección de correo electrónico no será publicada.