2010-08-05 1 views
3

Est-il possible que mon application s'exécute dans une langue différente de celle qui est définie dans le système d'exploitation? Je souhaite changer de langue dans le menu de configuration de mon application, où l'utilisateur peut, par exemple, sélectionnez allemand pour l'application, tandis que son système fonctionne en anglais.L'application iPhone utilise une langue différente de celle définie dans OS/appareil?

D'après ce que je l'ai déjà lu, il semble que ce n'est pas possible sans avoir mon propre mécanisme de localisation ...

Que pensez-vous?

Cheerz, PAWI

Répondre

-1

Vous devez mettre en œuvre votre mécanisme de chargement des ressources personnalisé pour y parvenir. Par exemple, vous ne pourrez plus utiliser la macro NSLocalizedString ou [NSBundle pathForResource:]. Vous devrez toujours spécifier les chemins incluant la localisation (comme dans de.lproj/MyStrings.strings au lieu de seulement MyStrings.strings). Je suggère de ne pas le faire à moins que ce soit absolument nécessaire.

10

il peut être fait facilement bien qu'il m'a fallu des semaines pour déterminer comment ;-)

J'ai une application iPhone appelée IDEX qui est un dictionnaire roumain. Sur l'iPad, le roumain n'est pas disponible en tant que langue de l'interface utilisateur. Je voulais donc permettre à l'utilisateur de sélectionner le roumain dans les paramètres de l'application, car les paramètres de l'appareil ne l'incluaient pas.

Ce que vous avez à faire est d'internationaliser l'application et de la localiser comme d'habitude. Ensuite, dans la principale méthode, définissez la clé AppleLanguages de la norme NSUserDefaults à la langue et le pays de votre choix, comme si

int main(int argc, char *argv[]) { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[NSArray arrayWithObject:@"ro_RO"] forKey:@"AppleLanguages"]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil); 
    [pool drain]; 
    return retVal; 
} 

Il est impératif que vous définissez la AppleLanguagesclé avant vous exécutez UIApplicationMain(), car c'est à ce moment que le framework UIKit est chargé et la langue par défaut déterminée.

Il est également important que vous spécifiez la langue et le pays (par exemple, @ "ro_RO" et pas seulement @ "ro"), sinon votre application risque de se bloquer lors de la configuration de la clé. En faisant cela, tous les appels à NSBundle qui prennent en charge la localisation rechercheront la langue que vous avez établie par programme, par opposition à celle définie sur le périphérique.

espoir qui aide ...

+0

D'après ce que j'ai vu de la documentation d'Apple, seule la récupération de cette AppleLanguages ​​les valeurs de clés est mentionné. Avez-vous rencontré des difficultés pour soumettre votre application sur l'App Store? –

+0

J'ai une application sur l'App Store qui utilise exactement ce code. Il a été mis à jour il y a environ un an, sans problème ... – fedmest

Questions connexes