【问题标题】:Force Storyboard to present specific base localization强制 Storyboard 呈现特定的基础本地化
【发布时间】:2014-06-26 13:56:15
【问题描述】:

我有一个基本本地化的故事板(故事板本身没有本地化) 我希望使用基本定位来本地化应用程序,并且仍然能够从应用程序本身更改本地化。

现在我很喜欢这种方法 -

+(NSString*)localizedStringForKey:(NSString*) key
{
    NSBundle* languageBundle = [self localizationBundle];
    NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil];
    return str;
}

但是这仅适用于我在代码中分配的动态字符串。 有什么方法可以强制故事板使用特定的基础本地化,还是我应该放弃使用此选项并在代码中创建所有字符串?

谢谢 沙尼

【问题讨论】:

    标签: ios localization storyboard xcode5


    【解决方案1】:

    您可以为情节提要实现与字符串相同的方法:

    // Utils class...
    + (NSString *)localizedStoryboardForName:(NSString *)key
    {
        NSBundle *languageBundle = [self localizationBundle];
        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:key bundle:languageBundle];
        return storyboard;
    }
    

    如果您在项目的 plist 中定义了主故事板,请删除该记录并在 AppDelegate 中显式创建。

    // AppDelegate class...
    UIStoryboard *storyboard = [Utils localizedStoryboardForName:@"Main"];
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    [self.window setRootViewController:[storyboard instantiateInitialViewController]];
    [self.window makeKeyAndVisible];
    

    然后创建内部包含不同语言的故事板。它们应该以与 Localizable.strings 文件相同的方式进行本地化。

    【讨论】:

    • @Artel Stepanenko 如果您为 Storyboard 启用了 Size Classes 并且您在 Storyboard 翻译中使用了可本地化的字符串,这将不起作用。在这种情况下会引发异常(“路径上似乎没有有效的编译故事板......”)。任何想法如何处理这个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 2017-01-20
    相关资源
    最近更新 更多