3

OS で設定されている言語とは異なる言語でアプリを実行することはできますか? システムが英語で実行されているときに、ユーザーがたとえばアプリにドイツ語を選択できるように、アプリの設定メニューに言語スイッチを設定したいと考えています。

私がすでに読んだことによると、独自のローカリゼーション メカニズムがなければ不可能のようです…</p>

どう思いますか?

乾杯、パウィ

4

2 に答える 2

10

方法を理解するのに数週間かかりましたが、簡単に行うことができます;-)

ルーマニア語の辞書であるiDEXというiPhoneアプリを持っています。iPadでは、ルーマニア語はUI言語として使用できないため、デバイス設定にルーマニア語が含まれていないため、アプリケーション設定でルーマニア語を選択するオプションをユーザーに提供したいと思いました。

あなたがしなければならないのは、アプリを国際化し、いつものようにローカライズすることです。次に、mainメソッドAppleLanguagesで、標準のキーをNSUserDefaults選択した言語と国に設定します。

int main(int argc, char *argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:[NSArray arrayWithObject:@"ro_RO"] forKey:@"AppleLanguages"];
    int retVal = UIApplicationMain(argc, argv, nil, nil);
    [pool drain];
    return retVal;
}

UIKitフレームワークがロードされ、デフォルトの言語が決定されるのはその時点であるため、実行するにキーを設定することが不可欠です。AppleLanguagesUIApplicationMain()

また、言語と国の両方を指定することも重要です(たとえば、@"ro"だけでなく@"ro_RO")。そうしないと、キーの設定時にアプリがクラッシュする可能性があります。

これを行うことにより、NSBundleそのサポートローカリゼーションへのすべての呼び出しは、デバイスに設定されている言語ではなく、プログラムで確立した言語を探します。

お役に立てば幸いです...

于 2010-09-14T22:13:33.860 に答える
-1

それを実現するには、カスタムのリソース読み込みメカニズムを実装する必要があります。たとえば、NSLocalizedString マクロまたは [NSBundle pathForResource:] を使用できなくなります。ローカリゼーションを含むパスを常に指定する必要があります (MyStrings.strings だけでなく de.lproj/MyStrings.strings のように)。絶対に必要でない限り、これを行うことはお勧めしません。

于 2010-08-05T11:29:40.150 に答える