Localización

Se pretende que GNOME pueda ejecutarse en distintas localidades y lenguajes, y los programas debieran tener esto en cuenta. No tienes que localizar los programas, sólo debes permitir que éstos sean traducibles y localizables.

Debes recordar que los diferentes idiomas humanos tienen diferentes gramáticas, así que no debieras suponer la forma de estructurar cada frase. Esto es importante, por ejemplo, cuando se construyen cadenas a partir de trozos separados.

La concatenación normalmente no es la forma correcta de construir una cadena para que sea presentada al usuario. Normalmente terminan en mensajes que no pueden ser traducidos correctamente en todos los idiomas. En vez de concatenar, intenta usar g_strdup_printf(), por ejemplo:

	/* Una forma no muy buena */
	char *message = g_strconcat (_("Hello, "),
				     name,
				     _(", would you like fries with that?"),
				     NULL);

	/* Una mejor forma */
	char *message = g_strdup_printf (_("Hello, %s, would you like fries with that?"),
					 name);

Esto permitirá al traductor mover %s donde corresponda según lo requiera la gramática del idioma en el cual trabaja.

Recuerda que no todos los idiomas forman los plurales añadiendo una «s» a las palabras. Además, las estructuras de frases pueden cambiar con los plurales. Por ejemplo,

	/* Una forma no muy buena */
	printf (_("%d happy monkey%s bouncing on the bed."),
		num_monkeys,
		(num_monkeys > 1) ? "s", "");

	/* Una mejor forma */
	printf ((num_monkeys > 1)
		? _("%d happy monkeys bouncing on the bed."),
		: _("%d happy monkey bouncing on the bed."));

Se requiere de esta forma ya que el plural se forma de distintas maneras en distintos idiomas, y la estructura completa de la frase puede cambiar.

Si el programa muestra fechas u horas, usa la función strftime() para darles formato como cadenas. Esto se encargará de usar la representación adecuada de fecha y hora de acuerdo a la definición local del usuario. Además, si el programa debe generar una representación visual de un calendario, recuerda que en algunos países se considera como primer día de la semana el domingo y no el lunes. El programa debiera permitir ambas formas de calendarios.

Si el programa usa medidas, asegúrate de permitir tanto el sistema métrico decimal como el sistema imperial (o anglosajón).