Publi

Traducciones para nuestras aplicaciones C/C++ con gettext

4929705941_5cc3aca475_oHace un tiempo publiqué cómo traducir nuestras aplicaciones PHP con gettext, ahora le toca el turno a nuestras aplicaciones en C.

El procedimiento es muy parecido, por lo que no voy a especificar la creación de ficheros po y mo en este artículo, os remito al anterior.

El código fuente no es que varíe demasiado de PHP pero es interesante echarle un ojo. Si queremos traducir este programa:

1
2
3
4
5
6
7
8
#include <stdio.h>

int main(int argc, char *argv[])
{
  printf("Hello world\n");
 
  return 0;
}

Haremos algo parecido a lo siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <libintl.h>
#include <locale.h>

int main(int argc, char *argv[])
{
  char *locale="fr_FR.UTF-8";
  setlocale(LC_MESSAGES, locale);
  bindtextdomain("miProyecto", "locale/" );
  textdomain("miProyecto");

  printf(gettext("Hello world"));
 
  return 0;
}

Ahora, si tenemos el archivo locale/fr_FR/LC_MESSAGES/miProyecto.mo dentro, veremos el mensaje en francés. Si en lugar de imponer el francés, queremos detectar la locale del sistema, en el setlocale podemos poner:

1
setlocale(LC_MESSAGES, "");

Y si queremos saber el nombre de la locale actual:

1
2
char *currentlocale=setlocale(LC_MESSAGES, "");
printf("Locale actual: %s\n", currentlocale);

Foto: Martin Pilat (Flickr CC-by)

También podría interesarte...

There are 2 comments left Ir a comentario

  1. Pingback: Bitacoras.com /

  2. Pingback: Scripts multilingües en bash con gettext / Traducciones en scripts – Poesía Binaria /

Leave a Reply