code

iOS 스토리 보드를 현지화하는 방법

codestyles 2020. 12. 28. 08:10
반응형

iOS 스토리 보드를 현지화하는 방법


일부 뷰가있는 iPhone 스토리 보드가 있습니다. 예를 들어 탐색 항목 제목의 이름은 News이며 다른 언어로 번역해야합니다.

스토리 보드에 새 현지화를 추가하면 새 언어에 대한 현재 스토리 보드의 복제본이 만들어졌습니다. 여기에서 탐색 항목의 제목을 변경할 수 있지만 나에게는 그다지 유용하지 않은 것 같습니다. 스토리 보드에 100 개의 뷰가 포함되어 있고 10 개 언어를 지원해야하는 경우 어떻게하나요? 원래 스토리 보드의 내용을 변경해야하는 경우 모든 언어에 대해 동일하게 변경해야합니다. 매우 이상해 보입니다. 어떤 상황에서 유용 할 수 있습니까?

대신 무엇을 할 수 있습니까? 영어 스토리 보드 만 있고 ViewController의 각 요소를 수동으로 번역해야 NSLocalizedString합니까?


코드에서 UI 요소의 제목을 변경하여 현지화를 수행 할 수 있습니다.

self.title = NSLocalizedString("News", nil);

예를 들어 앱을 네덜란드어로 현지화하려면 다음 위치에 있어야합니다 Dutch.lproj/Localizable.strings.

"News" = "Nieuws";

그런 다음 모든 UI 요소 및 언어에 대해이 작업을 수행 할 수 있습니다.


iOS 6에서는 정보 탭 아래에 "기본 국제화 사용"이라는 프로젝트 설정이 있습니다. 확인란을 선택하면 스토리 보드에서 모든 문자열을 국제화 된 .strings 파일로 가져옵니다.

이렇게하면 스토리 보드의 여러 복사본을 가질 필요가 없습니다.

여기에 이미지 설명 입력


iOS 6부터는 Base Internationalization을 사용하도록 결정할 수 있습니다. 모든 스토리 보드 및 xib / nib 파일은 Base.lproj라는 폴더에 한 번만 존재합니다. GUI 요소의 현지화는 각 현지화 디렉토리의 관련 .strings 파일에 배치됩니다.

예를 들어 "MainStoryboard.storyboard"는 Base.lproj에 배치됩니다. "MainStoryboard.strings"라는 관련 파일이 en.lproj 및 적용되는 모든 지역화에 배치됩니다.

특히 레이아웃 제약과 결합하면 정말 멋집니다!


여기에서이 비디오 자습서가 유용 할 수 있습니다.

http://www.youtube.com/watch?v=cF1Rf02QvZQ

접근 방식은 각 언어에 대해 별도의 스토리 보드를 만들어 현지화 한 다음 스크립트가 다른 모든 언어에 대해 원본 스토리 보드에서 변경 한 내용을 전파하도록하는 것입니다.


배포 대상이 iOS 5 및 스토리 보드 인 앱의 경우 다음과 같이 스토리 보드의 첫 번째 ViewController가있는 탭을 현지화합니다 UITabBarController.

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // ...

    if ([self.window.rootViewController isKindOfClass:UITabBarController.class]) {
        UITabBarController *tabBarController = (UITabBarController *) self.window.rootViewController;

        // Localize tab items
        NSArray *tabBarItems = tabBarController.tabBar.items;

        [tabBarItems enumerateObjectsWithOptions:NSEnumerationConcurrent 
                                      usingBlock:^(UITabBarItem *item, NSUInteger tabIndex, BOOL *stop) {
            NSString *keyName = [NSString stringWithFormat:@"tabBarItem%i", tabIndex];
            item.title = NSLocalizedString(keyName, @"TabBarItems");
        }];
    } else {
        // The root view controller is not the UITTabBarController
    }

    // ...
}

Localizable.strings파일 에 다음과 같은 내용이 있습니다.

// MARK: TabBar
"tabBarItem0" = "My First Tab Label";
"tabBarItem1" = "My Second Tab Label";
"tabBarItem2" = "My Third Tab Label";

Polyglot Localization도 유용 할 수 있습니다. 코드에서 NSLocalizedString ()을 호출하는 대신 스토리 보드에서 키를 직접 지정할 수 있습니다. 불필요한 콘센트를 피하고 상용구 코드를 줄일 수 있습니다.

https://github.com/negusoft/Polyglot


모든 스토리 보드를 현지화하는 데 도움이되는 명령 줄 ibtool을 배우는 것이 좋습니다. 여기 튜토리얼이 있습니다. http://www.albertmata.net/articles/introduction-to-internationalization-using-storyboards-on-ios- 5.html

참조 URL : https://stackoverflow.com/questions/8312936/how-to-localize-an-ios-storyboard

반응형