Comment forcer une localisation?

GramboGrambo Membre
18:21 modifié dans API AppKit #1
Bonjour,

J'ai défini plusieurs localisations pour mon programme et tout fonctionne bien. Lorsque je change l'ordre des langues dans "Préférences Système", mon programme en tient compte pour lancer le programme avec la bonne localisation.

Toutefois, je souhaiterais pouvoir donner à  l'utilisateur le choix d'utiliser une localisation spécifique. Comment faire pour ne pas tenir compte de l'ordre de langue défini par l'utilisateur et ouvrir l'application avec la langue spécifique.

J'ai vu qu'on pouvait le spécifier grâce à  une ligne de commande: <nom application> -AppleLanguages "(langue)", mais je souhaiterais pouvoir le faire par programmation à  l'initialisation de l'application en fonction des préférences utilisateur.

Quelqu'un a-t-il une idée?

Réponses

  • 18:21 modifié #2
    Bha NSTask :)
  • GramboGrambo Membre
    18:21 modifié #3
    Certes, mais je pense qu'il est plus élégant de charger la bonne localisation à  l'initialisation de l'application que de lancer le programme avec une ligne de commande spécifique. Cela éviterait de créer 2 exécutables. Non?

  • AliGatorAliGator Membre, Modérateur
    janvier 2010 modifié #4
    Oui Louka ce dont parlait Grambo avec sa ligne de commande... c'est pour lancer son application justement :P
    S'il lance son application toto.app qui lance une NSTask pour exécuter "toto.app -AppleLanguages fr"... pour lancer une autre instance de ton appli, mais forcée en français... Pas terrible :P

    Cependant, le principe de "AppleLanguages" ne s'applique pas qu'à  la ligne de commande.
    En effet, la clé "AppleLanguages" c'est juste un "UserDefault" qui indique la liste des langues préférées.
    Ce UserDefault (comme tout UserDefault) est lu dans dans un ordre de priorité précis : d'abord il regarde si ça a été défini depuis la ligne de commande, sinon dans les UserDefaults de l'application, puis les prefs génériques de l'utilisateur, puis du système, ...
    cf cette doc.

    Donc normalement tu peux tout à  fait spécifier cette clé AppleLanguages dans les NSUserDefaults de ton application et ça devrait marcher aussi. Tu règles ce NSUserDefault par code, puis tu demandes à  l'utilisateur de redémarrer l'application (pour que ce UserDefault soit pris en compte). A tester en tout cas ;)
  • 18:21 modifié #5
    Au temps pour moi je ne savais pas que ça lançait une nouvelle instance de l'appli  B)
  • AliGatorAliGator Membre, Modérateur
    18:21 modifié #6
    Ben en même temps la ligne de commande dont parlait Grambo, c'étalt... le nom de l'application ;)
    Donc obviously la ligne de commande lançait l'application (avec des paramètres supplémentaires)
  • GramboGrambo Membre
    18:21 modifié #7
    Je confirme l'hypothèse d'AliGator. Il suffit de redéfinir le tableau AppleLanguages dans les préférences utilisateur de lapplication.
    Les langages ainsi définis sont alors prioritaires sur les langages défini pour le système.
    Merci.
Connectez-vous ou Inscrivez-vous pour répondre.