452 votes

Obtenir langue actuelle de périphérique iOS ?

Je voudrais montrer le langage courant que le dispositif de l’interface utilisateur utilise. Quel code dois-je utiliser ?

Je veux ceci comme un NSString en énoncés entièrement de format. (Pas @ « fr_FR »)

827voto

Dubron Points 5118

Les solutions proposées seront effectivement de retour de la région actuelle de l'appareil - pas la langue actuellement sélectionnée. Ce sont souvent les mêmes. Cependant, si je suis en Amérique du Nord, et j'ai mis ma langue Japonaise, de ma région sera toujours l'anglais (États-unis). Afin de récupérer la langue sélectionnée, vous pouvez le faire:

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];

Cela renvoie un code à deux lettres de la langue actuellement sélectionnée. "en" pour l'anglais, "es" pour l'espagnol, "de" pour l'allemand, etc. Pour plus d'exemples, voir cette entrée de Wikipedia (en particulier, la 639-1 colonne):

Liste des codes ISO 639-1

Ensuite, c'est une simple question de convertir le code de deux lettres à la chaîne que vous souhaitez afficher. Donc, si c'est "fr", "display" en anglais".

Espérons que cela aide quelqu'un qui cherche à se différencier entre la région et la langue actuellement sélectionnée.

MODIFIER

La peine de citer les informations d'en-tête de NSLocale.h:

+ (NSArray *)preferredLanguages NS_AVAILABLE(10_5, 2_0); // note that this list does not indicate what language the app is actually running in; the [NSBundle mainBundle] object determines that at launch and knows that information

Les personnes intéressées en application de la langue prendre un coup d'oeil à @mindvision réponse

288voto

mindvision Points 771

La réponse sélectionnée retourne la langue actuelle du dispositif, mais pas la langue utilisée dans l’application. Si vous ne fournissez pas une localisation pour la langue par défaut dans votre application, le premier dans l’ordre de préférence est utilisé.

Pour savoir la langue actuelle sélectionnée dans vos localisations utilisent

Exemple :

66voto

Philippe Leybaert Points 62715

Cela vous donnera sans doute ce que vous voulez :

Il indiquera le nom de la langue, dans la langue elle-même. Par exemple :

12voto

enzoyang Points 197

J’utilise ceci

ignorer la fuite de mémoire...

et il en résulte

12voto

Erik B Points 12343

Traduire le langage des codes tels en_US en anglais (États-Unis) est construit en fonction de et ne se soucie pas où obtenir les codes de langue de. Vraiment n’y a donc aucune raison de mettre en place votre propre traduction comme l’indique la réponse acceptée.

Estampes : Anglais, allemand, suédois

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X