57 votes

Comment localiser un storyboard iOS

J'ai un iPhone storyboard avec certains points de vue. Par exemple, un des éléments de navigation titre est nommé News, ce qui devrait être traduit dans d'autres langues.

Lorsque j'ajoute une nouvelle localisation à mon storyboard, il a créé un doublon de ma table de montage séquentiel pour la nouvelle langue. Ici, je peux changer le titre de l'élément de navigation, mais pour moi, il ne semble pas très utile. Que faire si mon storyboard contient 100 vues et j'ai besoin de soutien 10 langues? Si je dois changer quelque chose dans mon premier storyboard, je dois faire les mêmes modifications pour toutes les langues. Cela semble très étrange. Dans quelles situations cela peut-il être utile?

Que puis-je faire à la place? Ai-je seulement l'anglais storyboard et de traduire manuellement chaque élément dans le ViewController l'aide d' NSLocalizedString?

108voto

Collin Points 1076

Dans iOS 6, un paramètre de projet sous l'onglet Info indique "Utiliser l'internationalisation de la base". Si vous cochez la case, toutes les chaînes du Storyboard seront extraites et insérées dans des fichiers .strings internationalisés.

Ainsi, vous n'avez pas besoin de plusieurs copies du Storyboard.

entrez la description de l'image ici

39voto

freytag Points 864

Comme d'iOS 6, vous pouvez décider de l'utilisation de la Base de l'Internationalisation: Tous les storyboard et xib/plume fichiers exister qu'une seule fois dans un dossier portant le nom de la Base.lproj. La localisation des éléments d'interface graphique est placé dans connexe .les chaînes de fichiers dans chaque localisation répertoire.

Par exemple "MainStoryboard.storyboard" sera placé dans la Base.lproj. Associé à un fichier appelé "MainStoryboard.les chaînes" est placé dans fr.lproj et quelle que soit la localisation de votre demande.

C'est vraiment très beau, surtout en combinaison avec les contraintes de mise en forme!

6voto

reabrn Points 69

Vous pouvez trouver ce tutoriel vidéo utile ici:

http://www.youtube.com/watch?v=cF1Rf02QvZQ

L’approche consiste à créer un scénario différent pour chaque langue à localiser, puis à laisser un script se charger de propager les modifications apportées au scénario original pour toutes les autres langues.

3voto

Jens Kohl Points 2407

Pour les applications avec une cible de déploiement d'iOS 5 et les storyboards, j'utilise quelque chose comme ceci pour localiser mes onglets où mon premier ViewController sur un storyboard est un UITabBarController :

 - (void)applicationDidFinishLaunching:(UIApplication *)application {
    // ...

    if ([self.window.rootViewController isKindOfClass:UITabBarController.class]) {
        UITabBarController *tabBarController = (UITabBarController *) self.window.rootViewController;

        // Localize tab items
        NSArray *tabBarItems = tabBarController.tabBar.items;

        [tabBarItems enumerateObjectsWithOptions:NSEnumerationConcurrent 
                                      usingBlock:^(UITabBarItem *item, NSUInteger tabIndex, BOOL *stop) {
            NSString *keyName = [NSString stringWithFormat:@"tabBarItem%i", tabIndex];
            item.title = NSLocalizedString(keyName, @"TabBarItems");
        }];
    } else {
        // The root view controller is not the UITTabBarController
    }

    // ...
}
 

et avoir quelque chose comme ça dans mes fichiers Localizable.strings :

 // MARK: TabBar
"tabBarItem0" = "My First Tab Label";
"tabBarItem1" = "My Second Tab Label";
"tabBarItem2" = "My Third Tab Label";
 

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