2016-11-04 3 views
0

Localizable.String과 같은 파일을 사용할 수 있습니까? 설정 언어가 아닌 응용 프로그램의 버튼으로 언어가 변경 되었습니까? 하지 않는 경우, 예를 들어 FR langage에 EN 언어를 사용하는 방법을 표시하는 방법은 다음 FR 언어 또는 EN 언어에서Localizable.String과 같은 .String 파일을 사용할 수 있습니까?하지만 언어는 버튼으로 변경됩니까?

가, 나는 =>FXFormFieldTitle:NSLocalizedString(@"SMSInfo", @"")

사용하고 각각 그 라인을 가지고 객실에 딸린 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 언어를 사용하고 있다면, localizable.strings EN에서 SMSInfo를 사용할 방법이 있습니까?

+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); 
} 
관련 문제