Internacionalización en C

Josepanaero

Estoy intentando hacer un programa en C que esté traducido a varios idiomas. Para ello hago uso de "gettext". Un código de ejemplo que estoy usando sería el siguiente:

#include <stdio.h>
#include <locale.h>
#include <libintl.h>

#define _(str) gettext(str)

int main(){
	setlocale(LC_MESSAGES, "en");
	bindtextdomain("prueba", "./locale");
	textdomain("prueba");

printf (_("Esto es una prueba\n"));
}

Luego en el mismo lugar que el ejecutable tengo la siguiente jerarquía de directorios:
locale > en > LC_MESSAGES > prueba.mo

En prueba.mo está la traducción al inglés de "Esto es una prueba\n".

No sé dónde está el error (estoy pensando varias cosas de momento), pero esto así no funciona a no ser que tengas instalado en tu máquina los locales propios del inglés (para ver los locales instalados, usar "locale -a" ).

En otras palabras, si tienes instalado el locale de inglés, sí funciona... El problema de esto es que no creo que deba obligarse al usuario a que se instale locales ni nada, simplemente la aplicación debería poder dejar cambiar al idioma que tú quisieses, sin más, pero no sé qué le falta a mi código para lograr esto...

RPV: cómo hago que funcione esto sin que el usuario tenga que instalar ningún locale nuevo.

Salu2.

Usuarios habituales

  • Josepanaero