2012-02-01 77 views
0

在我的應用程序中,用戶可以選擇一種語言,所以我希望我的應用程序相應地更改語言,但它不起作用。我在網上找到了這個代碼:iPhone - 自定義語言設置

// 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 

此代碼無效。我想我只是設置了另一個偏好設置。我真的想修改語言環境。我有一些本地化的字符串,也有一些NIB文件,所以我想將西班牙語添加到首選位置的首選語言環境列表中,但我並不真正瞭解如何執行此操作。

在應用程序的設置中,我可以選擇語言。這不僅僅是出於我的存根;區域性語言在這裏很重要,有時iPhone不提供對它們的支持,但我爲翻譯提供了支持。


從我決定放棄與區域設置搞亂的答案,但有可能呈現出不同的NIB文件(從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; 
} 

這是可能的嗎?

回答

0

區域設置應該由用戶在iPhone設置中設置,我認爲如果你從你的應用強制這個參數,你會離開你的沙盒,你的應用可能會被拒絕。

相反,在您的項目中添加localizations到您的NIB文件和/或Localizable.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 = @"これは日本語です。"; 
} 
+0

thnks,如果它可以被拒絕,然後我不想這樣做,但我怎麼能顯示從es.proj或從en.proj的筆尖記入一些用戶默認設置 – vallllll 2012-02-01 17:11:05

+0

iOS根據用戶設置自動顯示最佳選擇。這意味着如果您的用戶選擇「es」語言,您的應用程序會顯示您的NIB文件的「es」版本。 – Beppe 2012-02-01 17:21:53

+0

我對es有所瞭解,但它只是一個例子,對於一些罕見的語言,它並不是如此,有沒有辦法繞過它? – vallllll 2012-02-01 17:25:25

0

讓用戶第二次選擇語言並不是一個好習慣(他們第一次在設置iPhone時這麼做)。您最好選擇當前的語言環境並從那裏獲取語言設置。