2016-05-16 6 views
2

2つの言語、英語、アラビア語を選択できるアプリを作成しています。Swift iOSプログラムのRTLをプログラムでRTLにする

ユーザーがアラビア語を選択すると、自分のアプリにRTLレイアウトが必要になります。

質問はどうすればいいですか?私はこのようにしてみました:Settings>General>Language Region。地域としてサウジアラビアを選択し、言語としてアラビア語を選択すると、私のアプリは自動的にRTLを行います。

あなたが見ることができるように、電話の設定を通じて、あなたの電話の全体のレイアウトに影響します。

私が実際に達成したいのは、Settings>General>Language Regionに行かずに自分のAPPのRTLを作成し、自分の電話のレイアウトに影響を与えることだけです。だから私は "アラビア語"私のアプリのボタンをクリックすると、私のアプリケーションはRTLにレイアウトを変更します。

何か助けてください、あなたの助けに感謝します!

ありがとうございます!左のサポートに右追加するには

+0

なぜアプリ内言語チューザを実装していますか?これは、すべてのアプリが設定アプリの設定に従うことを期待しているため、ユーザーにとって混乱を招きます。 – wakachamo

答えて

-1

を。あなたの言語を変更するためのボタンとして。私の意見に次のコードを使用して:

+ (BOOL)isEnglishLanguage 
{ 
    return !language; 
} 

+ (void)setLanguage:(Language)lang 
{ 
    language = lang; 
    [GeneralUtilities storeObjectInUserDefaults:@(language) WithKey:@"language"]; 
} 

+ (NSString *)currentLanguage 
{ 
    if(language == ENGLISH) 
    { 
     return kLanguageEnglish; 
    } 
    else if(language == ARABIC) 
    { 
     return kLanguageArabic; 
    } 
    return @""; 
} 

+ (NSString *) NSLocalizedStringCustom:(NSString*) key 
{ 
    NSString *path; 
    if([[LanguageUtilities currentLanguage] isEqualToString:kLanguageEnglish]) 
     path = [[NSBundle mainBundle] pathForResource:kLanguageEnglish ofType:@"lproj"]; 
    else if([[LanguageUtilities currentLanguage] isEqualToString:kLanguageArabic]) 
     path = [[NSBundle mainBundle] pathForResource:kLanguageArabic ofType:@"lproj"]; 

    NSBundle* languageBundle = [NSBundle bundleWithPath:path]; 
    NSString* str=[languageBundle localizedStringForKey:key value:@"" table:nil]; 
    return str; 
} 

+ (NSTextAlignment) NSLocalizedTextFieldAllingment 
{ 
    if([[LanguageUtilities currentLanguage] isEqualToString:kLanguageEnglish]) 
     return NSTextAlignmentLeft; 
    else if([[LanguageUtilities currentLanguage] isEqualToString:kLanguageArabic]) 
     return NSTextAlignmentRight; 
    else return NSTextAlignmentLeft; 
} 

私はそれもあなたのために働くことを望む。

+0

これは残念ながらRTL UIでは機能しません。また、アプリケーションによって提示される任意のフォーマッタやシステムUIで機能しません。 – wakachamo

2

これは避けてください。アプリ内の言語切り替え機能は、ユーザーが設定アプリの設定に従うことをユーザーが期待しているため、混乱を招く可能性があります。

この回答に反して、あなたのレイアウトはではありません。は自動的に右から左になります。また、使用している番号や日付フォーマッタなどの問題も発生します。 (UIActivityViewControllerのような)あなたが提示するシステムUIもこのオーバーライドに従いません。

UIKit、NSLocalizedString、およびAuto Layoutは、NSUserDefaultsの文書化されていないハックに頼らずにシステムUI言語に従うことができるように、できるだけ多くのAPIを使用することに固執する必要があります。