2012-04-28 12 views
0

私は3種類の言語をサポートするiOS 5アプリを持っています。ストーリーボードをローカライズすると、各言語でコピーが作成され、それぞれを翻訳する必要があります。プログラムでストーリーボードを選択するにはどうすればよいですか?

言語の選択はシステム設定によって異なります。そのため、iPhoneにシステム言語として「英語」が設定されている場合、アプリケーションの選択されたストーリーボードは英語のものになります。私がカタロニア語に変更すると、私のアプリはカタロニア語を表示します。

このアプローチは、私の意見では、いくつかの欠点があります。

  • アプリは、Appleがサポートしていない言語に翻訳することはできません。これはモノロティの言語では重要です(カタロニア語はiOS 5までサポートされていません)。

  • ユーザーがカタロニア語で私のアプリを持っているが、システムの残りの部分を英語で利用したいのであれば?

私の質問は、アプリ起動時にストーリーボード言語を選択する方法です。まったく可能ですか? NSLocalizedStringを使用してローカライズされた文字列に対しても機能しますか?

よろしく、 JoanBa

答えて

0

あなたはそれを行う方法のようlocalized.stringsのようにローカライズされたバージョンにストーリーボードを分割することができますように思えますか?

This question私は経験から試していませんが、以前に回答されています。ヤコブの答えを読んで少しテストした後、これが私のために働いているコードである

0

int main(int argc, char *argv[]) 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    // Reset system defaults to get the complete language list. 
    [defaults removeObjectForKey:@"AppleLanguages"]; 
    // Default language choosen by user. 
    NSString *defLanguage = [defaults objectForKey:@"Language"]; 
    NSArray *sysLangugages = [defaults arrayForKey:@"AppleLanguages"]; 
    // System default language: first element of array. 
    NSString *sysLanguage = [sysLangugages objectAtIndex:0]; 
    NSArray *array = [NSArray arrayWithObjects:defLanguage, sysLanguage, nil]; 
    [defaults setObject:array forKey:@"AppleLanguages"]; 

    @autoreleasepool { 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
} 

ただ、デフォルトの言語を変更した後、アプリを再起動するには、ローカライズされたすべてのリソースが変更されます。文字列をし、ストーリーボード。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

が、それは動作しません:

はまたこの方法では、AppDelegate.mにこのコードを試してみました。 main.mでのみうまく動作します。どうしてか分かりません。

このコードでは、iOSでサポートされていない言語のアプリケーションを使用できます。たぶん

よろしく、

JoanBa

+0

それはdidFinishLaunchingに到達した時点での情報をロードしているため。 うれしい私は助けることができました! –

関連する問題