OS で設定されている言語とは異なる言語でアプリを実行することはできますか? システムが英語で実行されているときに、ユーザーがたとえばアプリにドイツ語を選択できるように、アプリの設定メニューに言語スイッチを設定したいと考えています。
私がすでに読んだことによると、独自のローカリゼーション メカニズムがなければ不可能のようです…</p>
どう思いますか?
乾杯、パウィ
OS で設定されている言語とは異なる言語でアプリを実行することはできますか? システムが英語で実行されているときに、ユーザーがたとえばアプリにドイツ語を選択できるように、アプリの設定メニューに言語スイッチを設定したいと考えています。
私がすでに読んだことによると、独自のローカリゼーション メカニズムがなければ不可能のようです…</p>
どう思いますか?
乾杯、パウィ
方法を理解するのに数週間かかりましたが、簡単に行うことができます;-)
ルーマニア語の辞書である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フレームワークがロードされ、デフォルトの言語が決定されるのはその時点であるため、実行する前にキーを設定することが不可欠です。AppleLanguages
UIApplicationMain()
また、言語と国の両方を指定することも重要です(たとえば、@"ro"だけでなく@"ro_RO")。そうしないと、キーの設定時にアプリがクラッシュする可能性があります。
これを行うことにより、NSBundle
そのサポートローカリゼーションへのすべての呼び出しは、デバイスに設定されている言語ではなく、プログラムで確立した言語を探します。
お役に立てば幸いです...
それを実現するには、カスタムのリソース読み込みメカニズムを実装する必要があります。たとえば、NSLocalizedString マクロまたは [NSBundle pathForResource:] を使用できなくなります。ローカリゼーションを含むパスを常に指定する必要があります (MyStrings.strings だけでなく de.lproj/MyStrings.strings のように)。絶対に必要でない限り、これを行うことはお勧めしません。