2009-04-29 11 views
2

우리는 스페인에 배포 할 iphone 응용 프로그램을 개발 중입니다. 여기에는 탭 표시 줄이 포함되어 있지만 더보기 및 수정을 스페인어로 변경하는 방법에 대해서는 아직 확실하지 않습니다. 나는 간단한 해결책이 있다는 것을 확신합니다 ... 누구나 그것을 할 수있는 방법을 알고 있습니까?탭 막대 요소의 언어 변경

==== 편집 한 ====

이것은 우리가 TabBar의 추가 방법이다. 보시다시피 각 버튼에 대해 tabBarItem을 만들지 만 More 버튼은 5 개 이상있을 때 자동으로 제공됩니다 (예상대로).

for (int i = 0; i < [buttonNames count]; i++) { 
    switch (i) { 
     case 1: 
     viewController = [[fotos alloc] init]; 
     break; 
     case 2: 
     viewController =[[videos alloc] init]; 
     break; 
     case 3: 
     viewController =[[deportes alloc] init]; 
     break; 
     default: 
     viewController = [[MyAppViewController alloc] initWithCategory:i strCategory:[tempNames objectAtIndex:i]]; 
     break; 
    } 

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:viewController]; 
    UITabBarItem *tabBarItem = [[UITabBarItem alloc] initWithTitle:[buttonNames objectAtIndex:i] image:[UIImage imageNamed:[imgNames objectAtIndex:i]] tag:i]; 
    nav.tabBarItem = tabBarItem; 
    [controllers addObject:nav]; 
    [viewController release]; 
    [nav release]; 
    [tabBarItem release]; 
} 

// Create the toolbar and add the view controllers 
tabBarController = [[UITabBarController alloc] init]; 
[tabBarController setViewControllers:controllers animated:YES]; 
tabBarController.customizableViewControllers = controllers; 
tabBarController.delegate = self; 

// Set up the window 
[window addSubview:tabBarController.view]; 
[window makeKeyAndVisible]; 

==== 해결 ====

내가 필요한 모든 내 프로젝트에 es.lproj 디렉토리이었다. Xcode (파일> 새 파일 ...> Mac OS X/기타> 문자열 파일)에 새 파일을 만들고 Localizable.strings이라는 이름을 지정하고 es.lproj에 저장합니다. 현지화가 필요한 문자열은 모두이 파일에 정의해야하지만 OS에서 생성 된 다른 모든 문자열 (TabBar의 추가, 편집 및 완료 버튼, 비디오 컨트롤 등)은 자동으로 번역됩니다.

답변

3

내장 된 정의 된 유형을 사용하는 경우 자동으로 작동해야합니다. 자신 만의 텍스트 인 경우 코드에서 NSLocalizedString을 사용하고 터미널에서 genstrings을 실행 한 다음 번들 내에 스페인어 lproj를 제공해야합니다.

+0

안녕하세요, 귀하의 답변에 감사드립니다. 그게 내가 생각한 것인데, 비록 내 아이폰이 스페인어로 구성되어있다 할지라도 어떤 이유로 모든 라벨이 영어로되어있다. "내장 된 정의 된 유형"을 사용하고 있는지 어떻게 알 수 있습니까? 내 편집을 참조하십시오. 도움이 될 것입니다. 감사합니다. – Antonio

+0

'buttonnames' 배열로 값을 오버라이드하기 때문에 인터페이스 빌더에서 미리 정의 된 타입을 사용하고 있지 않습니다. 이것 좀 봐 : http://www.stone.com/The_Cocoa_Files/Internationalize_Your_App.html 조금 구식이지만 여전히 적용됩니다. – slf

+0

음, 실제로 IB를 전혀 사용하지 않고 있습니다 ... 모든 섹션은 프로그래밍 방식으로 생성되지만 More 버튼은 스페인어와 동등한 것으로 변경되지 않습니다. 현재 로캘 : es_ES를 사용하더라도 마찬가지입니다. 나는 비디오를로드 할 때 알아 차렸다. \t MPMoviePlayerController * theMovie = [[MPMoviePlayerController alloc] initWithContentURL : [NSURL URLWithString : urlAddress]]]; 모든 컨트롤은 영어로되어 있습니다 ... 아이디어가 있으십니까? 감사합니다 – Antonio

0

프로젝트에 현지화 된 문자열을 추가하고 NSLOCalizedString()에 주어진 텍스트를 추가합니다.

또한 현지화 된 텍스트를 변경합니다.