ipad - 在运行时本地化 iPad 应用程序

标签 ipad ios4 localization nib

我正在开发一个需要在运行时本地化的应用程序,我的意思是它将是一个立即更改语言的按钮,我搜索了有关本地化的信息,我发现的是如何本地化应用程序取决于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/

相关文章:

ios - 如何在ipad应用程序的后台线程中显示UIAlertView?

iphone - 发送到 MFMessageComposeViewController 的收件人是否可以格式化为显示姓名而不是电话号码?

ios4 - UINavigationItem BackButtonItem 不显示

c# - 从可变字符串加载字符串类型(如可变变量和反射)

ios - 不可重现的 webcore 崩溃

iphone - 以相同的名称将 iPhone 和 iPad 应用程序提交到商店

iphone - 解析 json,不带引号的键

ios4 - iPhone : How to switch tabs with an animation?

localization - 在 SwiftUI 中使用终端 genstring 命令填充 Localizable.strings 文件

javascript - 当本地化被引入等式时如何处理字符串长度约束?