首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在运行时本地化iPad应用

在运行时本地化iPad应用
EN

Stack Overflow用户
提问于 2012-02-09 19:55:03
回答 2查看 482关注 0票数 3

我正在开发一个在运行时需要本地化的应用程序,我的意思是,它将是一个按钮,可以立即更改语言,我搜索了关于本地化的内容,我发现如何根据iPhone国际语言对应用程序进行本地化。

我已经本地化了所有的nib文件,并根据语言重新设计了每个nib文件,但是当用户单击按钮时,我如何更改nib文件呢?

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-23 09:10:05

您主要可以使用由某人创建的项目:Advance Localization in iOS apps

或者还有另一种方法,要通过yourself.You实现它,必须在项目中包含所有本地化文件:

代码语言:javascript
复制
@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类型参数。所以还有更多的工作要做,但这是一个非常好的基础。我不认为这是自动发生的,你必须编码。

票数 3
EN

Stack Overflow用户

发布于 2012-02-21 07:28:30

请看我对Creating a localized iPhone app but allowing the user to change language for the application的回答。

基本上,您将本地化拆分为表和包,而不是使用内置的本地化系统。您可以从每种语言的表中查找字符串,从每种语言的捆绑包中查找nib文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9210394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档