无法以编程方式更改MFMailComposer语言?

时间:2012-05-18 11:21:35

标签: iphone objective-c ios

我正在尝试以编程方式更改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];
    }
}

2 个答案:

答案 0 :(得分:0)

现在似乎无法以编程方式更改MFMailComposer语言。默认设置为英语。

答案 1 :(得分:0)

试试这个。它对我来说很好。请在NSBundle中获取英语和阿拉伯语的本地化字符串文件。有了这个,你需要在设备设置和应用程序之间切换。您只能通过应用程序更改语言。

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

英语

[self changeLanguage : @"en"];

对于arbic

[self changeLanguage : @"ar"];

将它放在Button的动作方法

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

如果您对此有任何疑问,请随意。