J'ai un programme simple :
include <stdio.h>
#include <time.h>
#include <locale.h>
int main(void)
{
char* local;
time_t t;
time(&t);
local=setlocale(LC_ALL, "");
printf("la date et l'heure courante sont : %s\t %s\n", ctime(&t), local);
return 0;
}
J'aimerais que la date soit en français. Et actuellement, j'ai l'affichage suivant :
la date et l'heure courante sont : Thu Apr 12 09:09:45 2007
fr_FR.UTF-8
Je ne comprands pas bien mon erreur, et je ne souhaiterais pas modifier le code C.
Pour information, je suis sur une Ubuntu server
D'avance Merci pour votre aide.
Lionel
# il n'y a pas que LC_ALL dans la vie
Posté par dguihal . Évalué à 2.
cf : http://gentoo-wiki.com/HOWTO_localedef et http://c.laloy.free.fr/howtos/linux/applis/chinese_input.php
tu as :
LANGUAGE=fr_FR.UTF-8:fr
LC_ADDRESS=fr_FR.UTF-8
LC_COLLATE=fr_FR.UTF-8
LC_NAME=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_MEASUREMENT=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
LANG=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8
LC_MESSAGES=fr_FR.UTF-8
LC_CTYPE=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8
LC_PAPER=fr_FR.UTF-8
[^] # Re: il n'y a pas que LC_ALL dans la vie
Posté par Lionel Imbs . Évalué à 1.
J’ai regardé du coté de mon environnement :
svr1:~$ locale
LANG=fr_FR.UTF-8
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=fr_FR.UTF-8
J’ai aussi essayé d’exécuter mon programme de la sorte :
LC_ALL=fr_FR.utf-8, mais le résultat est le même.
# strftime
Posté par sylvain cresto (site web personnel) . Évalué à 7.
man ctime
... L'internationalisation de la date est possible en utilisant la fonction setlocale(3) et strftime(3). ...
Le test:
#include <stdio.h>
#include <time.h>
#include <locale.h>
int main(void)
{
char d[100];
time_t t = time(NULL);
struct tm *tm = localtime(&t);
strftime(d, sizeof(d)-1, "%A %d %B %Y a %Hh%M", tm);
printf("En anglais: %s\n", d);
setlocale(LC_ALL, "");
strftime(d, sizeof(d)-1, "%A %d %B %Y a %Hh%M", tm);
printf("En français: %s\n", d);
}
qui donne:
En Anglais: Thursday 12 April 2007 a 09h30
En Français: jeudi 12 avril 2007 a 09h30
[^] # Re: strftime
Posté par Lionel Imbs . Évalué à 1.
A présent cela fonctionne correctement.
J'ai essayé ce bout de code pour reproduire les fonctions de dates qu'utilise le PBX libre Asterisk.
Les dates d'Asterisk 1.4 ne s'emble pas localisés. Je vais essayer d'adapter son comportement.
Merci pour votre aide.
Lionel.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.