2011-12-05 8 views
1

私は、好みの言語を選択したいと思うマルチラングアルiPadアプリを作ります。だから私の質問は、私は実行時に自分のアプリケーション言語を変更できますか?私はiPad言語を変更したくありません。iOS Appカスタムローカリゼーション設定

答えて

1

これは数回お願いしています。このための大きな解決策はありません。それは自明ではありません(たとえば、言語を変更したときにiOSが再起動することに注意してください)。 NSLocalizedString呼び出しを置き換えることによって、またNIBの読み込みを変更して、使用するローカライズ版を指定できるようにすることで、これを達成する人もいます。例えばthis other SO questionを参照してください。

+0

感謝。 – Krrish

3

アップルのガイドラインではをおすすめしません。

私のソリューションは、(ユーザーが手動でアプリを再起動する必要があり、あなたがXIBs含めたすべてのリソースをリロードする必要があり、「オンザフライ」言語スイッチを処理するために)です:返信用

// Use "nil" to fallback to system settings 
void loadCustomLocalization(NSString * locCode) { 
    NSString * appleLanguages = @"AppleLanguages"; 
    if (locCode) { 
    [[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObject:locCode] forKey:appleLanguages]; 
    } else { 
    [[NSUserDefaults standardUserDefaults] removeObjectForKey:appleLanguages]; 
    } 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

void loadLocalization() { 
    const int result = [[[NSUserDefaults standardUserDefaults] stringForKey:@"language"] intValue]; 
    NSString * language = 0; 
    switch (result) { 
    case 1: language = @"ru"; break; 
    case 2: language = @"en"; break; 
    } 
    loadCustomLocalization(language); 
} 

int main(int argc, char *argv[]) { 
    loadLocalization(); 
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; 
    int retVal = UIApplicationMain(argc, argv, nil, nil); 
    [pool release]; 
    return retVal; 
}