Bonjour,
J'ai trouvé cette discussion intéressante et j'ai donc voulu testé tout ça. J'ai donc écrit un petit bout de C, que je compile avec GCC sous OS X.
Voici le code C :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include <errno.h>
#include <locale.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
errno = 0;
// Show current locale
char *loc = setlocale(LC_ALL, NULL);
printf("When program starts, the locale is: %s\n", loc);
puts("Let's change the locale...");
// Try to change the locale and print a localized message in case of success
loc = setlocale(LC_ALL, "fr_FR");
if(loc == NULL)
{
perror("Error: impossible to set locale properly");
}
else
{
printf("The new locale is: %s\n", loc);
printf("Checking the current locale: %s\n", setlocale(LC_ALL, NULL));
puts("The next message should be localized");
printf("%s\n", strerror(EINVAL));
}
} |
Le problème est que le message fourni par strerror n'est jamais traduit. J'ai essayé avec es_ES et j'obtiens aussi un message en anglais. Un exemple en console :
$ ./C
When program starts, the locale is: C
Let's change the locale...
The new locale is: fr_FR
Checking the current locale: fr_FR
The next message should be localized
Invalid argument
Avez-vous une idée de ce qui m'échappe ? : /
Merci d'avance.
Partager