强制故事板呈现特定的基础本地化

时间:2014-06-26 13:56:16

标签: ios localization storyboard xcode5

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

现在我正在使用这种方法 -

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

但是这仅适用于我在代码中指定的动态字符串。 有没有办法强迫故事板使用特定的基本本地化,还是应该放弃使用此选项并在代码中创建所有字符串?

由于 SHANI

1 个答案:

答案 0 :(得分:0)

您可以为故事板实现与字符串相同的方法:

// 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 文件相同的方式进行本地化。