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 |