2009-08-20 8 views
1

Comment pouvez-vous faire en sorte que votre application Cocoa utilise une localisation/localisation spécifique différente de ce que dit la locale actuelle?Utiliser une localisation spécifique dans l'application Cocoa

Mon application a un certain nombre de localisations et j'aimerais pouvoir choisir la localisation utilisée par l'application dans un fichier de configuration. Comment puis-je dire à Cocoa laquelle des localisations utiliser?

+0

Ajoutez seulement une localisation pour le fichier de configuration. –

+0

[Ceci] [1] peut vous aider. C'est la meilleure façon dont je pense! Bonne chance. [1]: http://stackoverflow.com/questions/26594222/detect-localization-xcode-6-mac-cocoa –

Répondre

1

Définissez le tableau AppleLanguages dans les valeurs utilisateur par défaut de l'application pour contenir celui que vous préférez utiliser et définissez également une chaîne AppleLocale appropriée dans les valeurs par défaut. Cela dit, pourquoi utilise une localisation qui n'est pas celle que l'utilisateur préfère?

+0

Le concept d'un "utilisateur" est trompeur pour cette application, car elle suppose l'utilisateur possède la machine. Il s'agit d'une application de style kiosque exécutée sur le matériel de mon entreprise, qui est toujours défini sur les mêmes paramètres régionaux. Il y a une configuration centrale qui dicte tous les paramètres, y compris la langue de l'interface graphique. –

+0

L'une des raisons est de tester les modifications de localisation, par exemple pour s'assurer qu'une chaîne reçue d'un localisateur entre dans le contrôle où elle est affichée dans l'interface utilisateur ou pour ne rien casser en répétant une modification non-chaîne sur plusieurs les localisations d'une plume. –

+0

@Peter: oui, je le fais moi-même. Mais ce n'est pas le cas d'utilisation que j'ai déduit de la question. –

0

J'essayé d'installer « AppleLocale » et « AppleLanguages ​​» avec quelque chose comme ce qui suit:

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"]; 
[[NSUserDefaults standardUserDefaults] setObject:@"en_US" forKey:@"AppleLocale"]; 

Il n'a rien fait que, toujours la langue et les paramètres régionaux du système sont utilisées préférences.

+2

Semble fonctionner, mais seulement après avoir redémarré le programme. Signification: La première fois que le programme commence avec des paramètres modifiés, il définit les paramètres par défaut de l'utilisateur en utilisant le code ci-dessus. Les appels suivants à NSLocalizedString n'utilisent pas la langue/l'environnement local nouvellement défini, jusqu'à ce que je redémarre le programme. –

1

selon la réponse de MAAD. Je l'ai testé dans mon application et a trouvé la seule clé qui affecte est AppleLanguages

si

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:@"en"] forKey:@"AppleLanguages"]; 

est suffisant. N'oubliez pas de redémarrer votre application pour que les valeurs par défaut de l'utilisateur prennent des effets.

2

Hmmm pourrait-il être que AppleLocale s'attend à un «en» et non un «en_US»?

« en » fonctionne pour moi dans le terminal alors ... Je ne vois pas pourquoi il ne devrait pas être la même chaîne ici pour vous aussi bien lors de la configuration dans votre application

defaults write com.mycompany .myproduct AppleLocale 'en'