我正在开发一个需要在运行时本地化的应用程序,我的意思是它将是一个立即更改语言的按钮,我搜索了有关本地化的信息,我发现的是如何本地化应用程序取决于iPhone 国际语言。
我已经本地化了我拥有的所有 nib 文件,并根据其语言重新设计了每个 nib 文件,但是当用户单击按钮时如何更改 nib 文件?
任何帮助将不胜感激。
最佳答案
主要可以使用某人创建的项目:Advance Localization in iOS apps
或者还有另一种方法,自己实现。您的项目中必须有所有本地化文件:
@implementation Language
static NSBundle *bundle = nil;
+(void)initialize {
NSArray* languages = [NSLocale preferredLanguages];
NSString *current = [languages objectAtIndex:0];
[self setLanguage:current];
}
/*
example calls:
[Language setLanguage:@"it"];
[Language setLanguage:@"de"];
*/
+(void)setLanguage:(NSString *)l {
NSLog(@"preferredLang: %@", l);
NSString *path = [[ NSBundle mainBundle ] pathForResource:l ofType:@"lproj" ];
bundle = [[NSBundle bundleWithPath:path] retain];
}
+(NSString *)get:(NSString *)key alter:(NSString *)alternate {
return [bundle localizedStringForKey:key value:alternate table:nil];
}
@end
这段代码非常适合您的需要。但这只是基础。因此,每个文本都必须使用 get:alter:
方法加载,以便以正确的语言加载。正如您在初始化时看到的,此类将使用系统语言,但在调用 setLanguage 方法后,它将使用您设置的语言。使用 get:alter:
方法设置语言后,您应该通过为每个文本再次调用 get:alter:
方法来重新加载 View Controller 中的所有文本出现并将结果设置为所需的标签或文本字段或任何其他需要 i18n 的 NSString 类型参数。所以还有更多的工作要做,但这是一个非常好的基础。我认为这不会自动发生,你必须编写代码。
关于ipad - 在运行时本地化 iPad 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210394/