Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone-自定义语言设置_Iphone_Locale - Fatal编程技术网

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,正如我在回答中所写的那样。如果找不到字体,请尝试使用图像。