我有一个基础本地化的故事板(故事板本身没有本地化) 我希望使用基本定位来本地化应用程序,并且仍然可以从应用程序本身更改本地化。
现在我正在使用这种方法 -
+(NSString*)localizedStringForKey:(NSString*) key
{
NSBundle* languageBundle = [self localizationBundle];
NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil];
return str;
}
但是这仅适用于我在代码中指定的动态字符串。 有没有办法强迫故事板使用特定的基本本地化,还是应该放弃使用此选项并在代码中创建所有字符串?
由于 SHANI
答案 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 文件相同的方式进行本地化。