Forum Programmation.c Programme C et date en Francais

Posté par  .
Étiquettes :
0
12
avr.
2007
Bonjour,

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  . Évalué à 2.

    il y en a d'autres :

    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  . Évalué à 1.

      Merci pour ton aide.

      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  (site web personnel) . Évalué à 7.

    Pour avoir l'affichage en français il faut utiliser strftrime:

    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  . Évalué à 1.

      Merci ;)

      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.