iPhone-自定义语言设置
在我的应用程序中,用户可以选择一种语言,因此我希望我的应用程序相应地更改语言,但它不起作用。我在网上找到了以下代码:iPhone-自定义语言设置,iphone,locale,Iphone,Locale,在我的应用程序中,用户可以选择一种语言,因此我希望我的应用程序相应地更改语言,但它不起作用。我在网上找到了以下代码: // Force languages NSString * lang=[[NSUserDefaults standardUserDefaults] stringForKey:@"idioma"]; NSLog(@"language %@",[[NSUserDefaults standardUserDefaults] stringForKey:@"AppleLanguages"])
// Force languages
NSString * lang=[[NSUserDefaults standardUserDefaults] stringForKey:@"idioma"];
NSLog(@"language %@",[[NSUserDefaults standardUserDefaults] stringForKey:@"AppleLanguages"]);
if ([lang isEqualToString:@"castella"]) {
[[NSUserDefaults standardUserDefaults]
setObject:[NSArray arrayWithObject:@"es"]
forKey:@"AppleLanguages"];
} //else just default user lang
这个代码不起作用。我想我只是在设置另一个偏好设置。我真的想修改语言环境。我有一些本地化的字符串和一些文件,所以我想将西班牙语添加到第一个位置的首选语言环境列表中,但我真的不知道如何做到这一点
在应用程序的设置中,我可以选择语言。这不仅仅是因为我的固执;只是地区语言在这里很重要,有时不提供支持,但我提供翻译
从答案中,我决定放弃对区域设置的干扰,但是否可以显示不同的文件(从en.proj或es.proj)?我已经有了第一部分:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
NSString * lang=[[NSUserDefaults standardUserDefaults] stringForKey:@"idioma"];
if ([lang isEqualToString:@"castella"]) {
//Load NIB filer from "es.proj".
}
}
return self;
}
这可能吗?让用户第二次选择这种语言(第一次在安装iPhone时选择这种语言)不是一种好的做法。你最好从当前的语言环境中获取语言设置。语言环境应该由用户在iPhone设置中设置,我认为如果你从应用程序中强制此参数,你就会离开沙箱,你的应用程序可能会被拒绝 相反,在NIB文件中添加
本地化
,和/或在项目中添加本地化.strings
。您的应用程序将自动为用户显示最佳语言
如果您仍然想更改应用程序中的语言,那么不要尝试更改区域设置,只需更改应用程序中屏幕上显示的内容即可
您可以在[NSUserDefaults standardUserDefaults]
中保存所需的语言,并根据此参数显示标签:
if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"English"]) {
aLabel.text = @"This is English.";
} else if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"Italian"]) {
aLabel.text = @"Questo e' italiano.";
} else if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"language"] isEqualToString:@"Japanese"]) {
aLabel.text = @"これは日本語です。";
}
thnks,如果可以拒绝,则我不想这样做,但如何根据某些用户默认设置显示es.proj或en.proj的笔尖iOS根据用户设置自动显示最佳选择。这意味着如果你的用户选择“es”语言,你的应用程序会显示你的NIB文件的“es”版本。我知道es,但这只是一个例子,对于一些稀有语言来说不是这样。有没有办法绕过它?你说“稀有语言”是什么意思?iOS不支持的语言?如果是这样,请创建您自己的本地化GUI,正如我在回答中所写的那样。如果找不到字体,请尝试使用图像。