Comment forcer une localisation?
Grambo
Membre
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?
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?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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
Donc obviously la ligne de commande lançait l'application (avec des paramètres supplémentaires)
Les langages ainsi définis sont alors prioritaires sur les langages défini pour le système.
Merci.