我有一个iPhone故事板,有一些视图。例如,命名导航项目标题 News, ,应为其他语言翻译。

当我在故事板上添加新的本地化时,它创建了我当前的新语言故事板的重复。在这里,我可以更改导航项目的标题,但是对我来说,它似乎不是很有用。如果我的故事板包含100次观看,我需要支持10种语言怎么办?如果我需要在原始的故事板上更改某些内容,则必须对所有语言进行相同的更改。这似乎很奇怪。在哪些情况下,这有用?

我可以做什么?我应该只使用英语故事板,并使用使用的是使用英语故事板 NSLocalizedString?

有帮助吗?

解决方案

您可以通过更改代码中的UI元素标题来完成本地化:

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

例如,如果您想将您的应用程序本地化在荷兰语中,则将其列入 Dutch.lproj/Localizable.strings:

"News" = "Nieuws";

然后,您可以为每个UI元素和语言执行此操作。

其他提示

在iOS 6中,在“信息”选项卡下有一个项目设置,上面写着“使用基本国际化”。如果您选中该框,它将将所有字符串从故事板中拉出,然后进入国际化.strings文件。

这样,您就不必拥有情节板的多个副本。

enter image description here

从iOS 6开始,您可以决定使用基本国际化:所有故事板和XIB/NIB文件仅在一个名为base.lproj的文件夹中存在一次。 GUI元素的本地化放置在每个本地化目录中的相关.strings文件中。

例如,“ mainstoryboard.storyboard”将放置在base.lproj中。一个称为“ mainstory.strings”的关联文件放置在en.lproj和您应用的任何本地化中。

这确实非常英俊,尤其是结合布局约束!

您可能会在这里发现此视频教程很有用:

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

该方法是为每种语言都有一个单独的故事板来进行本地化,然后让脚本照顾您在所有其他语言的原始故事板中所做的更改。

对于具有iOS 5和故事板部署目标的应用程序,我使用类似的内容将我的第一个viewController定位在故事板上是一个 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
    }

    // ...
}

并在我里面有这样的东西 Localizable.strings 文件:

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

您可能会发现多面体本地化也有用。为了在代码中调用NSlocalizedString(),您可以直接在故事板中指定其键。您可以避免不必要的插座并减少样板代码。

https://github.com/negusoft/polyglot

我建议您学习命令行ibtool,它可以帮助您本地化所有故事板::)这里有一个教程 http://www.albertmata.net/articles/introduction-to-internationalization-international-susing-using-storyboards-on-ios-5.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top