2014-06-24 4 views
3

나는이 게시물이 중복 된 것처럼 보입니다 ....하지만 이미 연구를했고 대답을 찾지 못했습니다 ... 제발 도와주세요. 내 자원 내가 가진localizable.string이 없을 때 기본 언어를 설정하는 방법은 무엇입니까?

[[self labelTest] setText:NSLocalizedString(@"Essa é uma label", nil)]; 

파일 : en.lproj/Localizable.stringspt.lproj/Localizable.strings

현지화

나는 응용 프로그램은 두 개의 언어 (포르투갈어, 영어)로 번역이, 내 캐릭터 및 스토리 보드 포르투갈어, 예입니다 네이티브 개발 영역은 "en"으로 설정됩니다.

여기서 내가 이해하는 것은, 사용자 언어가 en.lproj가로드 된 경우, 포르투갈어 pt.lproj가로드되는시기, 프랑스어 또는 기타 언어가 언제인지입니다. en.lproj가로드되어야하지만, 그 일은 일어나지 않습니다. 내 장치를 스페인어, 프랑스어 또는 다른 언어로 설정하면 포르투갈어가 표시되며 영어로 표시됩니다.

여기에 내가 보았다 게시물이하지만 여전히 실패

iOS App default Language "en" is not applied

AppStore language description and "Localization native development region"

What is the meaning of "Localization native development region" entry in info.plist?

http://useyourloaf.com/blog/2010/05/10/fixing-xcode-default-development-region.html

How can I load a default language plist if the localized version does not exist for the current language?

Localizable.strings을 사용자 기기의 언어로 찾을 수 없을 때 영어로 항상 언어를로드하려면 어떻게해야합니까?

답변

0

귀하의 링크를 확인했으며 그 중 하나에서 이미보고 된 내용이지만 꼭 언급하고 싶습니다.

CFBundleDevelopmentRegion를 통해 기본 언어를 설정할 수 있습니다 Property List Key Reference 사과에 따르면

CFBundleDevelopmentRegion (문자열 - 아이폰 OS, OS의 X)

은 번들에 대한 기본 영역을 지정합니다. 이 키에는 일반적으로 사람의 자국어에 해당하는 문자열 값이 포함되어 있습니다. 사용자의 기본 설정 언어 또는 언어로 리소스를 찾을 수없는 경우이 값으로 지정된 언어가 기본 언어 인 으로 사용됩니다.

물론 언어 프로젝트가 제대로 설정된 경우에만 작동합니다. 따라서 projects settingstab 안에 두 언어가 모두 나열되어 있고 자원이 제대로 복사되어 있는지 확인하십시오 (Copy Bundle Resources)

+0

안녕하세요, 도와 주셔서 감사합니다. 이 링크를 확인하고 문서를 올바르게 따르고 있다고 생각합니다. 다음 질문에서 프로젝트 구성을 보여 드리겠습니다. –

0

휴식 시간이 끝나면 드디어 답을 찾을 수 있습니다. 나는이 대답이 최고인지는 모르겠지만 이것은 나를 위해 일합니다. 아래 참조 :

#import "UtilHelp.h" 

@implementation UtilHelp 

//https://developer.apple.com/library/mac/qa/qa1391/_index.html 
+ (NSString*)preferredUserLanguage { 

    NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 
    NSDictionary * globalDomain = [defaults persistentDomainForName:@"NSGlobalDomain"]; 
    NSArray * languages = [globalDomain objectForKey:@"AppleLanguages"]; 

    NSString* preferredLang = [languages objectAtIndex:0]; 

    return preferredLang; 
} 

@end 


int main(int argc, char * argv[]) 
{ 
    NSString * preferredUserLanguage = [UtilHelp preferredUserLanguage]; 

    // Save the user's preferred order 
    NSArray * defaultAppleLanguages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]; 

    // When your app loaded, use this object for back AppleLanguages to default 
    [[NSUserDefaults standardUserDefaults] setObject:defaultAppleLanguages forKey:@"DefaultAppleLanguages"]; 

    // 
    // Check if language of the device contains between your files Localizable.string 
    // YES: Good! 
    // NO: Defines developmentLocalization as the preferred language 
    // 
    if(![[[NSBundle mainBundle] localizations] containsObject:preferredUserLanguage]) 
    { 
     // Don't forget the configure CFBundleDevelopmentRegion with your preferred region 
     NSString * developmentLocalization = [[NSBundle mainBundle] developmentLocalization]; 

     // Apple Guide: 
     // ------------------------------------------------------------------------------------------ 
     // The returned array contains the 
     // languages associated with the AppleLanguages key in the user's preferred order. 
     // Thus, in most cases, you would simply want to get the first object in the array. 
     // 
     preferredUserLanguage = developmentLocalization; 
    } 

    // set the preferred User Language 
    [[NSUserDefaults standardUserDefaults] setObject:@[preferredUserLanguage] forKey:@"AppleLanguages"]; 

    @autoreleasepool{ 
     return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 
    } 
} 



@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // default AppleLanguages 
    NSArray * defaultAppleLanguages = [[NSUserDefaults standardUserDefaults] objectForKey:@"DefaultAppleLanguages"]; 

    [[NSUserDefaults standardUserDefaults] setObject:defaultAppleLanguages forKey:@"AppleLanguages"]; 

    return YES; 
} 

희망이 있으면 도움이 될 것입니다. Thakn you.

0

여전히 해결책을 찾고 있다면 현재 선택한 언어에 대한 지역화 파일이없는 경우 특정 지역화 파일에서 문자열을 가져오고 싶었던 비슷한 문제가있었습니다.

iOS Localizable.strings not being retrieved from BASE file

위 내 문제에 대한 링크 아래 내 솔루션 (당신이 정말로 원하는하지 않는 링크를 따라 할 필요가 없습니다)의 텍스트를 포함. 내가 필요한 모든 작업을 수행


NSString *path = [[NSBundle mainBundle] pathForResource:[[NSLocale preferredLanguages] objectAtIndex:0] ofType:@"lproj"]; 
if (path == nil) 
{ 
    path = [[NSBundle mainBundle] pathForResource:@"Base" ofType:@"lproj"]; 
} 

NSLocalizedStringFromTableInBundle(@"TAB_TITLE_Camera", @"Localizable", [NSBundle bundleWithPath:path], @""); 

간단한 솔루션입니다.

모두 작동 iOS 6.1iOS 7.1.


나는 당신이해야 할 모든 당신이 원하는

pathForResource:@"en" 

또는 어떤 언어로 변경

pathForResource:@"Base" 

생각합니다.

희망이 도움이 될 수 있습니다. 정말 오랫동안 실패한 답변을 찾은 후에이 솔루션을 생각해 냈습니다.

관련 문제