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.