Comment faire comprendre à Cocoa que mon application iPhone n'est pas en anglais?

Je travaille sur une application iPhone purement suédoise et ne sera jamais localisée dans d'autres langues. Toutes les strings de l'application sont en suédois, donc nous n'avons même pas de Localizable.ssortingngs .

Le problème est que les strings générées par Cocoa (comme Done and Edit) sont en anglais. J'ai essayé de définir la Localization native development region dans le Info.plist en Swedish , mais cela n'a rien changé. Il ne devrait pas être plus difficile de dire à Cocoa que mon application est en suédois, mais c'est évidemment le cas.

J'ai aussi essayé un tas d'autres choses sans aucune chance. Alors, que dois-je faire pour que Cocoa localise ses strings en suédois?

Les strings générées par Cocoa (telles que Terminé et Modifier) ​​sont en anglais, car les parameters de langue de votre iPhone sont définis sur Anglais (dans Paramètres -> Général -> International -> Langue). Si vous définissez les parameters de langue sur suédois, vous devriez voir les texts en suédois.

C'est ainsi que l'iPhone fonctionne par défaut, si vous voulez changer les texts de certains buttons pour les forcer en suédois, vous devrez en créer un exutoire et changer le text manuellement. Par exemple, comme ce UIBarButtonItem (avec un text par défaut Done (en anglais)):

 UIBarButtonItem *doneButton = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneContact)] autorelease]; doneButton.title =@"Whatever"; self.navigationItem.rightBarButtonItem = doneButton; 

J'espère que cela peut vous aider …

De la documentation de CFBundle:

kCFBundleDevelopmentRegionKey Nom de la langue de développement du bundle. Lorsque CFBundle search des ressources, le fallback consiste à regarder dans le file lproj dont le nom est donné par le file kCFBundleDevelopmentRegionKey dans le file Info.plist. Vous devez donc vous assurer qu'un bundle contient un lproj avec ce nom exact contenant une copy de chaque ressource localisée, sinon CFBundle ne peut pas garantir que le mécanisme de secours fonctionnera. Disponible dans iOS 2.0 et versions ultérieures. Déclaré dans CFBundle.h.

Je dirais: vous devriez activer les localizations, préparer swedish.lproj et supprimer l'anglais peut-être?

btw, Done & Edit est automatiquement ajusté à la langue actuellement active. n'est-ce pas?

vous devrez peut-être utiliser extraire toutes les strings de la XIB et le traduire (au less, il s'agit d'un process unique) et ensuite mettre à jour le XIB. La command line suivante peut vous aider à le faire.

 ibtool --generate-ssortingngs-file out.ssortingngs yourWindow.xib // Update the out.ssortingngs with your language translation ibtool --ssortingngs-file out.ssortingngs yourWindow.xib --write yourWindow.xib