我正在开发一个在运行时需要本地化的应用程序,我的意思是,它将是一个按钮,可以立即更改语言,我搜索了关于本地化的内容,我发现如何根据iPhone国际语言对应用程序进行本地化。
我已经本地化了所有的nib文件,并根据语言重新设计了每个nib文件,但是当用户单击按钮时,我如何更改nib文件呢?
任何帮助都将不胜感激。
发布于 2012-02-23 09:10:05
您主要可以使用由某人创建的项目:Advance Localization in iOS apps
或者还有另一种方法,要通过yourself.You实现它,必须在项目中包含所有本地化文件:
@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:方法来重新加载视图控制器中的所有文本,并将结果设置为所需的标签或文本字段,或者设置为需要i18n的任何其他NSString类型参数。所以还有更多的工作要做,但这是一个非常好的基础。我不认为这是自动发生的,你必须编码。
发布于 2012-02-21 07:28:30
请看我对Creating a localized iPhone app but allowing the user to change language for the application的回答。
基本上,您将本地化拆分为表和包,而不是使用内置的本地化系统。您可以从每种语言的表中查找字符串,从每种语言的捆绑包中查找nib文件。
https://stackoverflow.com/questions/9210394
复制相似问题