본문 바로가기

프로그래밍/iOS

[iOS] 다국어가 적용되지 않는 언어를 선택할 시

iOS에서 다국어가 적용되지 않는 언어를 선택할 시


다국어가 적용되있지 않는 언어를 선택할 시 아이폰에서는 

설정-일반-언어 및 지역 - 선호하는 언어순서

에 있는 가장 위의 언어를 선택해서 보여준다.


따라서 다국어가 적용되어 있지 않은 언어를 선택할 시 특정 언어로 선택하기 위해서는

bundle의 특정 lproj파일을 선택하여 다국어를 적용해야 한다.


그에 대한 기술


#undef NSLocalizedString    // 기존 NSLocalizedString을 제거

#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) replaceValue:(comment)] // 재 정의


- (NSString *)localizedStringForKey:(NSString *)key replaceValue:(NSString *)comment

{

    NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; // 현재 선택된 언어를 가져온다.

    NSString *localizedString;

    

    

     if([language hasPrefix:@"en"]||

        [language hasPrefix:@"de"]||

        [language hasPrefix:@"es-419"]||

        [language hasPrefix:@"zh-Hans"]||

        [language hasPrefix:@"ko"]) // 현재 언어가 무엇인지 비교 있으면 if문 아니면 else문을 탄다.

    {

        localizedString = [[NSBundle mainBundle] localizedStringForKey:key value:@"" table:nil]; // 있으면 그대로 적용

    }

    else // 없는 경우

   {

        NSString *fallbackLanguage = @"en"; // 디폴트 값 여기선 영어를 씀

        NSString *falbackBundlePath = [[NSBundle mainBundle] pathForResource:fallbackLanguage ofType:@"lproj"]; // 번들 경로를 영어로 설정

        NSBundle *fallbackBundle = [NSBundle bundleWithPath:falbackBundlePath]; // 해당 경로의 번들 가져옴

        NSString *fallbackString = [fallbackBundle localizedStringForKey:key value:comment table:nil]; // 그리고 다국어 적용

        localizedString = fallbackString; // 적용된 다국어 string

    }

    

    return localizedString;

}

'프로그래밍 > iOS' 카테고리의 다른 글

[iOS] 전화 처리  (0) 2016.08.12
[iOS] Annotation View  (0) 2016.07.29
[iOS] UIImage 회전 함수  (0) 2016.06.20
[iOS] CABasicAnimation scale  (0) 2016.06.14
[iOS] 원 모양 뷰 만들기  (0) 2016.06.14