4

MFmailComposer 言語をプログラムで変更しようとしています。最初に「English mail」ボタンを選択すると、 最初に MFMailComposer が英語で開きます。「アラビア語メール」ボタンを選択すると、MFMailComposer はアラビア語ではなく英語で開きます。

これが私のViewControllerのスクリーンショットです

ここに画像の説明を入力

英語ボタン選択時のスクリーンショット

アラビア語ボタン選択時のスクリーンショット

では、アプリケーションを再起動せずにプログラムで 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];
    }
}
4

2 に答える 2

0

現在のところ、プログラムで MFMailComposer 言語を変更する方法はないようです。デフォルトでは英語に設定されています。

于 2012-05-18T11:45:41.070 に答える
0

これを試して。それは私にとってはうまくいきました。英語とアラビア語のローカライズされた文字列ファイルを NSBundle に用意してください。これにより、デバイス設定とアプリを切り替える必要があります。アプリからのみ言語を変更できます。

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

英語の場合

[self changeLanguage : @"en"];

アービック用

[self changeLanguage : @"ar"];

これをボタンのアクションメソッドに入れます

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

この点についてご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-05-23T07:01:04.730 に答える