2016-11-04 4 views
0

Localizable.Stringのようなファイルを.Stringでも使用できますが、言語設定ではなくアプリケーションのボタンで言語を変更できますか? ない場合は、例えばFR関連リンク言語でEN言語を使用する方法を示すための方法があります:FR言語またはEN言語でLocalizable.Stringのような.Stringファイルを使用することはできますが、言語の変更はボタンでできますか?

が、私は=>FXFormFieldTitle:NSLocalizedString(@"SMSInfo", @"")

使用して、それぞれ、私はそのラインを持っていますEN localizable.String

/* 
    File.strings 
    Formbox 

    Created by OlostA on 04/11/2016. 
    Copyright © 2016 NewTelApps. All rights reserved. 
*/ 
"SMSInfo" = "Do you want to receive the brand informations by sms?"; 
でFR localizable.String

/* 
    File.strings 
    Formbox 

    Created by OlostA on 04/11/2016. 
    Copyright © 2016 NewTelApps. All rights reserved. 
*/ 
"SMSInfo" = "Souhaitez-vous recevoir par sms les informations de la marque ?"; 

、その行で

だから質問。私がFR言語を使用している場合、SMSInfoをlocalizable.strings ENで使用する方法はありますか?

+0

あなたはadictionaryとして.stringsファイルにアクセスして値を取得することができます。 http://stackoverflow.com/questions/3153600/iphone-reading-from-localizable-strings-file-as-a-key-value-in-a-dictionary –

+0

ここには解決策があります:http://stackoverflow.com/questions/22061402/change-language-in-the-app-programmatically – Tushar

答えて

0

はいアプリから言語を変更することは可能です。

[LanguageManager saveLanguageByIndex:indexPath.row andCode:model.strLanguageCode]; 

LanguageManager.h

#import <Foundation/Foundation.h> 

typedef NS_ENUM(NSInteger, ELanguage) 
{ 
    ELanguageEnglish, 
    ELanguageSpanish, 
    ELanguageFrench, 
    ELanguageGerman, 
    ELanguageItalian, 
    ELanguageArabic, 
    ELanguageChinese, 


    ELanguageCount 
}; 

@interface LanguageManager : NSObject 

+ (void)setupCurrentLanguage; 
+ (NSArray *)languageStrings; 
+ (NSString *)currentLanguageString; 
+ (NSString *)currentLanguageCode; 
+ (NSInteger)currentLanguageIndex; 
+ (void)saveLanguageByIndex:(NSInteger)index andCode:(NSString *)strCode; 
+ (BOOL)isCurrentLanguageRTL; 

@end 

LanguageManager.m

#import "LanguageManager.h" 
#import "NSBundle+Language.h" 


static NSString * const LanguageCodes[] = { @"en", @"es", @"fr", @"de",@"it",@"ar" ,@"zh-Hans"}; 
static NSString * const LanguageStrings[] = { @"English", @"Spanish", @"French", @"German",@"Italian",@"Arabic",@"Chinese"}; 
static NSString * const LanguageSaveKey = @"currentLanguageKey"; 

@implementation LanguageManager 

+ (void)setupCurrentLanguage 
{ 
    NSString *currentLanguage = [[NSUserDefaults standardUserDefaults] objectForKey:LanguageSaveKey]; 
    if (!currentLanguage) { 
     NSArray *languages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]; 
     if (languages.count > 0) { 
      currentLanguage = languages[0]; 
      [[NSUserDefaults standardUserDefaults] setObject:currentLanguage forKey:LanguageSaveKey]; 
      [[NSUserDefaults standardUserDefaults] synchronize]; 
     } 
    } 
#ifndef USE_ON_FLY_LOCALIZATION 
    [[NSUserDefaults standardUserDefaults] setObject:@[currentLanguage] forKey:@"AppleLanguages"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
#else 
    [NSBundle setLanguage:currentLanguage]; 
#endif 
} 

+ (NSArray *)languageStrings 
{ 
    NSMutableArray *array = [NSMutableArray array]; 
    for (NSInteger i = 0; i < ELanguageCount; ++i) { 
     [array addObject:NSLocalizedString(LanguageStrings[i], @"")]; 
    } 
    return [array copy]; 
} 

+ (NSString *)currentLanguageString 
{ 
    NSString *string = @""; 
    NSString *currentCode = [[NSUserDefaults standardUserDefaults] objectForKey:LanguageSaveKey]; 
    for (NSInteger i = 0; i < ELanguageCount; ++i) { 
     if ([currentCode isEqualToString:LanguageCodes[i]]) { 
      string = NSLocalizedString(LanguageStrings[i], @""); 
      break; 
     } 
    } 
    return string; 
} 

+ (NSString *)currentLanguageCode 
{ 
    return [[NSUserDefaults standardUserDefaults] objectForKey:LanguageSaveKey]; 
} 

+ (NSInteger)currentLanguageIndex 
{ 
    NSInteger index = 0; 
    NSString *currentCode = [[NSUserDefaults standardUserDefaults] objectForKey:LanguageSaveKey]; 
    for (NSInteger i = 0; i < ELanguageCount; ++i) { 
     if ([currentCode isEqualToString:LanguageCodes[i]]) { 
      index = i; 
      break; 
     } 
    } 
    return index; 
} 

+ (void)saveLanguageByIndex:(NSInteger)index andCode:(NSString *)strCode 
{ 
    if (index >= 0 && index < ELanguageCount) { 
     [[NSUserDefaults standardUserDefaults] setObject:strCode forKey:LanguageSaveKey]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
     [[NSUserDefaults standardUserDefaults] setObject:@[strCode] forKey:@"AppleLanguages"]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
     [NSBundle setLanguage:strCode]; 
    } 
} 

+ (BOOL)isCurrentLanguageRTL 
{ 
    NSInteger currentLanguageIndex = [self currentLanguageIndex]; 
    return ([NSLocale characterDirectionForLanguage:LanguageCodes[currentLanguageIndex]] == NSLocaleLanguageDirectionRightToLeft); 
} 
関連する問題