liste knownTimeZoneNames traduite ?

bonjour, 


 


Est il possible de faire apparaitre la liste knownTimeZoneNames dans la langue de l'utilisateur ?


quelle est la fonction à  utiliser et où l'intégrer dans le code ([super viewDidLoad ]?) ?


 


mon iphone est français mais j'ai les noms en anglais ! ex : si je veux Alger, j'ai Africa/Algiers.


 


 


merci 


 


 


Réponses

  • AliGatorAliGator Membre, Modérateur
    Hello

    Heu on n'a pas déjà  évoqué le problème dans un autre sujet, où on t'aurait déjà  expliqué plusieurs fois comment faire ?

    Tu crées une NSTimeZone en utilisant le nom qui t'intéresse de traduire (genre avec la méthode "+timeZoneWithName:" en lui passant ce "Africa/Algiers" en paramètre) et tu demandes à  cette NSTimeZone son nom traduit, via la méthode "localizedName:locale:". Y'a tout ce qui faut dans la doc de NSTimeZone ;)
  • AbodidgeAbodidge Membre
    février 2014 modifié #3

    Oui on l'a déjà  évoqué, mais si je demande de l'aide c'est que je n'ai pas réussi à  me débrouiller tout seul ! 


     


    Voici mon code, est ce que tu peux me dire où insérer la ligne ? et surtout comment l'écrire ?



    [super viewDidLoad];

    NSArray * timeZones = [NSTimeZone knownTimeZoneNames];


    NSArray *monTableau = [NSArray arrayWithObjects
    :timeZones, nil];

    int nombreElements = [monTableau count];
    for (int i = 0; i < nombreElements; i++)
    {
    NSLog(@Objet de rang %i : %@", i, [monTableau objectAtIndex: i]);
    _objects = [monTableau objectAtIndex: i]; // récupération des données TimeZone pour remplir tableView

    _results = [[NSMutableArray alloc] init];
    [_results addObjectsFromArray:_objects]; //Mémorisation des données d'origine
    }



    Merci de ton aide.


  • CéroceCéroce Membre, Modérateur
    février 2014 modifié #4
    Je pense que tu n'y parviens pas parce que tu nommes mal tes variables.
    timeZones => timeZoneNames
    monTableau => localizedTimeZoneNames, et ça doit être un NSMutableArray pour pouvoir lui ajouter les noms traduits au fur et à  mesure.

    - Utilise une boucle for...in sur timeZoneNames pour lister les noms des time zones en anglais.
    - Traduit le nom grâce à  [timeZone localizedName:NSTimeZoneNameStyleStandard locale:[NSLocale currentLocale]]
    - Ajoute chaque nom traduit à  localizedTimeZoneNames.
  • merci Ceroce, 


     


    voici ce que j'ai et je reçois un message Bad receiver type 'int'



    NSArray *timeZoneNames = [NSTimeZone knownTimeZoneNames ];

    int timeZone = [timeZoneNames count];
    for (int i=0; i < timeZone; i++)
    {
    NSLog(@timeZonePayz %i : %@", i, [timeZoneNames objectAtIndex: i]);
    [timeZone localizedName:NSTimeZoneNameStyleStandard locale:[NSLocale currentLocale]];
    }



    est ce que j'ai bien compris la boucle FOR ... IN ?


     


    merci de ton aide.


  • Nan mais à  un moment donner il faut lire ce que tu écris et mettre en rapport des messages d'erreur...


     


    "Bad receiver type 'int'"


     


    Cette erreur, elle flotte pas au milieu de nulle part. Elle est sur la ligne :



    [timeZone localizedName:NSTimeZoneNameStyleStandard locale:[NSLocale currentLocale]];

    Bon... Pourquoi ce con dit que c'est du int... Voyons voir où est déclaré timeZone...



    int timeZone = [timeZoneNames count];

    Ah bah ouais, c'est déclaré en int et ça ne contient pas une time zone mais un nombre de time zone...


     


    Tu as encore fait n'importe quoi avec le nom de tes variables...


     


    Comme l'a dit Creoce, nomme tes variables correctement et tu arrêtera de te mélanger les pinceaux...


  • alors si c'est pas "int"c'est quoi ? peux tu m'aider jusqu'au bout ?


    merci, 


  • AliGatorAliGator Membre, Modérateur
    avril 2014 modifié #8
    Moi personnellement, j'abandonne... on a l'impression que tu écris n'importe quoi sans chercher à  comprendre ce que ça veut dire et sans y chercher de logique, que tu ne suis pas nos conseils et nos remarques, et que tu ne cherches même pas la réponse par toi même...

    alors si c'est pas "int"c'est quoi ?

    rien que cette question montre qu'il faut encore te prendre par la main : tu ouvres la documentation de la méthode, et c'est écrit directement quel est le type de retour. Si tu ne fais pas d'effort pour chercher ça lasse un peu à  terme, et en plus, ce n'est pas comme cela que tu progresseras à  nous demander directement plutôt que de chercher 2 secondes par toi même et réfléchir un minimum.
  • J'ai juste demandé comment se faisait la boucle for...in et l'on ne me réponds pas. donc j'ai cherché et j'ai trouvé cet exemple.



    // For-in loops ("Fast-enumeration," specific to Objective-C)
    NSArray *models = @[;@Ford, @Honda, @Nissan, @Porsche];
    for (id model in models) {
    NSLog(@%@", model);
    }

    ça me fait avancer. 


    c'est tout ce que je demandais à  l'équipe de Cocoacafe. 


    Arrétez de désespérer, je me prends par la main. Pour vous qui programmez surement depuis longtemps, rappelez vous quand vous avez commencé vous avez surement posé des questions niaises aussi. Je demande juste une réponse simple, pas un défouloir parceque je suis une bille. Merci 


    Ce qui me fait progresser c'est la recherche en effet et si je bloque j'appelle cocoacafe, alors merci d'éviter les réponses à  la Yoda, je ne suis pas un padawan !


  • AliGatorAliGator Membre, Modérateur
    Bien sûr que l'on a tous été débutants... mais là  n'est pas la question. Quand on voit des débutants sur le forum rechercher et poser des questions pertinentes pas de souci pour leur répondre on est tous passé par-là .


    Mais là  c'est un peu comme si tu avais demandé "je voudrais démarrer ma voiture et aller sur la route avec" on te répond "regarde dans le manuel c'est indiqué qu'il faut tourner la clé et pense à  ouvrir le garage avant", et toi tu finis par atterrir sur un truc d'on ne sait où du genre "bon alors j'ai essayé de démarrer le garage avec la voiture puis j'ai ouvert la clé mais ça marche toujours pas"'


    Bref au lieu comme déjà  expliqué de te poser et réfléchir 2 secondes à  ce que tu demandes de faire à  ton code, ou de suivre les conseils comme ceux de yoann de correctement nommer les choses pour pas t'y perdre et avoir les choses claires, tu as encore mélangé un peu n'importe comment les choses.

    Débutant ou pas, si tu relis un tant soit peu ton code tu vois bien que tu récupères le nombre de timezones dans une variable (qui n'a pas du tout un nom explicite au passage contrairement à  ce que t'a conseillé yoann, d'où la confusion dans ton code encore d'ailleurs) et que tu demandes plus tard à  ce nombre (juste un int, pas un objet quoi) de faire quelquechose! C'est comme si tu récupérais la couleur de ta voiture, pour demandera la couleur rouge de démarrer au lieu dele demandera ta voiture. ça n'a aucun sens.
  • bonjour à  tous, 


    Merci pour votre aide.


    J'ai encore un petit service à  vous demander pour cette question. voilà  où j'en suis dans mon code :



    NSLocale *localeThree = [NSLocale currentLocale];
    NSArray *knownTimeZoneArray = [NSTimeZone knownTimeZoneNames];
    NSMutableArray *localizedTimeZoneN = [[NSMutableArray alloc]init];

    for (NSString *timeZoneString in knownTimeZoneArray) {
    NSLog(@TimeZoneString : %@", timeZoneString);
    NSString *displayNameStringZones = [ ????? ];

    // [localizedTimeZoneN addObject:displayNameStringZones ];

    NSLog(@DisplayNameStringZones : %@", displayNameStringZones);
    }

    [localizedTimeZoneN sortUsingSelector:@selector(localizedCompare:)];

    le souci est que je n'arrive pas à  mettre en place ce que m'a conseillé CEROCE.


    "- Traduit le nom grâce à  [timeZone localizedName:NSTimeZoneNameStyleStandard locale:[NSLocale currentLocale]]"


     


    Est ce que vous pouvez me dire si je suis sur le bon chemin ? et si mes variables sont bien nommées ?


     


    merci de votre réponse.


    bon dimanche 


     


    Jean-Baptiste


Connectez-vous ou Inscrivez-vous pour répondre.