Question

J'ai un story-board iPhone avec des vues. Par exemple, un titre d'élément de navigation est nommé News, qui devrait être traduit pour d'autres langues.

Quand j'ajoute une nouvelle localisation à mon story-board, il a créé un double de mon story-board en cours 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 story-board contient 100 vues et je dois soutenir 10 langues? Si je dois changer quelque chose dans mon story-board original, je dois faire les mêmes modifications pour toutes les langues. Cela semble très étrange. Dans quelles situations peut-il être utile?

Que puis-je faire à la place? Dois-je avoir que le story-board anglais et traduire manuellement chaque élément dans le ViewController en utilisant NSLocalizedString?

Était-ce utile?

La solution

Vous pouvez faire la localisation en modifiant les titres des éléments d'interface utilisateur dans le code:

self.title = NSLocalizedString("News", nil);

Si vous voulez localiser votre application en néerlandais par exemple, vous auriez cela dans Dutch.lproj/Localizable.strings:

"News" = "Nieuws";

Vous pouvez alors le faire pour chaque élément d'interface utilisateur et la langue.

Autres conseils

Dans iOS 6 il y a un paramètre projet sous l'onglet Infos « Utiliser un base Internationalisation ». Si vous cochez la case, il va tirer toutes les ficelles de la Storyboard et dans les fichiers .strings internationalisés.

De cette façon, vous ne devez pas avoir plusieurs copies du Storyboard.

entrer image description ici

d'iOS 6, vous pouvez décider d'utiliser la base Internationalisation: Tous les story-board et les fichiers / nib existent xib qu'une seule fois dans un dossier nommé Base.lproj. La localisation des éléments de l'interface graphique est placé dans les fichiers .strings liés dans chaque répertoire de localisation.

Par exemple « MainStoryboard.storyboard » sera placé dans Base.lproj. Un fichier associé appelé « MainStoryboard.strings » est placé dans en.lproj et tout ce que vous appliquez la localisation.

Ceci est vraiment très beau, surtout en combinaison avec des contraintes de mise en page!

Vous trouverez peut-être ce tutoriel vidéo utile ici:

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

L'approche est d'avoir un story-board pour chaque langue de localiser, puis laissez un prendre soin de script de propager les modifications apportées dans le story-board d'origine pour toutes les autres langues.

Pour les applications avec une cible de déploiement d'iOS 5 et storyboards-je utiliser quelque chose comme ceci pour localiser mes onglets où mon premier ViewController sur un story-board 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";

Vous trouverez peut-être Polyglot Localisation utiles. Au lieu d'appeler NSLocalizedString () dans le code, vous pouvez spécifier directement la clé dans votre storyboard. Vous pouvez éviter les prises inutiles et réduire le code passe-partout.

https://github.com/negusoft/Polyglot

Je vous suggère d'apprendre la ligne de commande ibtool il vous aide à asist localisant tous vos storyboards :) Voici un tutoriel ici http://www.albertmata.net/articles/introduction-to-internationalization-using-storyboards-on-ios-5.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top