2012-05-18 67 views
4

我想以編程方式更改MFmailComposer語言。 開始,如果我選擇「英文郵件」按鈕第一 MFMailComposer在英語打開。 現在,如果我選擇「阿拉伯郵件」按鈕,那麼MFMailComposer將以英文顯示,而不是以阿拉伯語顯示。無法以編程方式更改MFMailComposer語言?

這裏是我的ViewController截圖

enter image description here

Screen shot when English Button is selected

Screen shot when Arabic button is selected

那麼,如何改變MFMailComposer語言編程方式,無需重新啓動應用程序?

這裏是代碼

- (IBAction)showInArabic:(id)sender 
{ 

    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"ar", nil] forKey:@"AppleLanguages"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
    [self viewDidUnload]; 
    [self viewDidLoad]; 
    Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); 
    if (mailClass != nil) 
    { 
     if ([mailClass canSendMail]) 
     { 
     [self displayComposerSheet]; 

     } else { 

    [self launchMailAppOnDevice]; 
     } 

    } else { 

    [self launchMailAppOnDevice]; 
    } 
} 
- (IBAction)showInEnglish:(id)sender 
{ 
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

    NSArray *languages = [NSArray arrayWithObject:@"en"]; 
    [[NSUserDefaults standardUserDefaults] setObject:languages forKey:@"AppleLanguages"]; 

    [self viewDidUnload]; 
    [self viewDidLoad]; 

    Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); 

    if (mailClass != nil) { 

     if ([mailClass canSendMail]) { 

      [self displayComposerSheet]; 

     } else { 

      [self launchMailAppOnDevice]; 
     } 

    } else { 

     [self launchMailAppOnDevice]; 
    } 
} 
+1

我認爲這個鏈接可以幫助你 http://stackoverflow.com/questions/1321281/mfmailcomposeviewcontroller-in-other-languages –

+0

檢查:1.http://stackoverflow.com/questions/9971469/multilanguage - 應用功能於iphone/9971641#9971641 2.http://stackoverflow.com/questions/10647706/how-to-use-spanish-french-chinese-german-keyboard-in-app/10647934#10647934 –

+0

@NaveenThunga意思每次MFMailComposer都採用單擊First的Button語言。如果在不關閉應用程序的情況下單擊另一個語言按鈕,MFMailComposer將不會更改語言 – Apple

回答

0

似乎有沒有辦法改變MFMailComposer語言編程方式,截至目前。它默認設置爲英語。

+0

但是,最初如果我選擇「阿拉伯語郵件」按鈕,然後MFMailComposer開在阿拉伯語語言,如果我的「英文郵件」按鈕點擊,無需關閉應用程序,然後將MFMailComposer在阿拉伯語中打開,而不是在英語 – Apple

+0

意味着每個再次時間MFMailComposer採用您在其上單擊第一個按鈕的語言。如果您在不關閉應用程序的情況下單擊另一個語言按鈕,MFMailComposer將不會更改語言 – Apple

0

試試這個。它爲我工作得很好。請確保在NSBundle中有英文和阿拉伯文的本地化字符串文件。有了這個,你需要在設備設置和應用程序之間切換。您只能通過應用程序更改語言。

#define currentLanguageBundle [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[[NSLocale preferredLanguages] objectAtIndex:0] ofType:@"lproj"]]; 

英語

[self changeLanguage : @"en"]; 

對於arbic

[self changeLanguage : @"ar"]; 

在按鈕的操作方法將這個

- (void)changeLanguage : (NSString*)inLang 
{ 
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:inLang forKey:@"AppleLanguages"]; 
    NSLog(@"test %@", NSLocalizedStringFromTableInBundle(@"NewKey", nil, currentLanguageBundle, @"")); 
} 

隨意,如果您對此有任何懷疑。

+2

這適用於應用程序的靜態文本。 但我想更改MFMailComposer的語言。 例如TO: CC: 密送: 選擇阿拉伯語按鈕時將以阿拉伯語顯示,而在選擇英語按鈕時以英語顯示。 – Apple

+0

你是對的兄弟..我有一個想法,創建2個相同的文件MFMailComposer一個英文和另一個阿拉伯文文件。根據選擇的語言加載它。當用戶點擊發送時,創建MFMailComposer對象添加屬性數據並在後臺發送。 –

+1

我不想改變默認的文本,如「收件人,抄送,密送,發送」等文本根據語言選擇。 但是,我們無法制作MFMailComposer的Nib文件。我想使用默認的MFMailComposer – Apple

相關問題