首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法以编程方式更改MFMailComposer语言?

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

Stack Overflow用户
提问于 2012-05-18 11:21:34
回答 2查看 625关注 0票数 4

我正在尝试以编程方式更改MFmailComposer语言。最初,如果我选择"English mail“按钮,first MFMailComposer将以英语打开。现在如果我选择“阿拉伯邮件”按钮,那么MFMailComposer将以英语打开,而不是以阿拉伯语打开。

这是我的ViewController截图

那么,如何在不重新启动应用程序的情况下以编程方式更改MFMailComposer语言呢?

这是代码

代码语言:javascript
复制
- (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];
    }
}
EN

回答 2

Stack Overflow用户

发布于 2012-05-18 11:45:41

到目前为止,似乎还没有办法以编程方式改变MFMailComposer语言。默认情况下,它设置为英语。

票数 0
EN

Stack Overflow用户

发布于 2012-05-23 07:01:04

尝尝这个。对我来说挺好的。请在NSBundle中为英文和阿拉伯文提供本地化的字符串文件。这样你就需要在设备设置和应用程序之间切换。您可以通过应用程序改变语言。

代码语言:javascript
复制
#define currentLanguageBundle [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:[[NSLocale preferredLanguages] objectAtIndex:0] ofType:@"lproj"]];

为英文

代码语言:javascript
复制
[self changeLanguage : @"en"];

为阿比克

代码语言:javascript
复制
[self changeLanguage : @"ar"];

把这个放在Button的动作方法里

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

如果你对此有任何疑问,请放心。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10651708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档