본문 바로가기

WWDC

WWDC17 Localizing with Xcode 9 (2)

WWDC17 Localizing with Xcode 9

본 세션에서 다루는 주제는 크게 3가지

  • 코드를 어떻게 로컬라이징 프로세스를 통해서 세계화에 준비되게 작성할 수 있는지에 대해 알아봅니다.
  • Xcode 9에 추가된 새로운 기능 소개
  • 모든 언어에서 어떻게 앱이 작동하고 보여지는지에 대한 사례들과 테스트에 대해서 이야기

- Localization Process

번역가를 위한 지역화 가능한 콘텐츠를 생성하기 위해 Xcode는 프로젝트에 있는 지역화 가능한 모든 리소스를 찾습니다. Localization을 위해 프로젝트를 내보낼 때 Xocde는 이 지역화 가능한 리소스에서 문자열을 추출하고 추가한 모든 단일 언어에 대해 XLIFF 파일을 생성합니다. XLIFF 파일은 단순히 Localization 업계에서의 표준 XLM Localization 파일 형식입니다. 따라서 XLIFF 파일이 변환되더라도 해당 파일을 다시 가져올 수 있으며, Xcode는 자동으로 지역화된 텍스트를 프로젝트에 다시 통합합니다. 이 것이 Xcode의 Localization Process입니다.

 

Xcode 9의 새로운 기능은 String dics파일 형식 내보내기 및 가져오기에 대한 지원 기능입니다. String dics는 앱에서 복수형 및 적응형 문자열을 처리할 수 있는 강력한 도구입니다.

 

- Stringsdict


Xcode 9에서는 이제 Xcode의 파일 템플릿 목록에서 바로 문자열 사전을 추가하고 생성 할 수 있습니다. 그러면 키와 값을 추가하고 편집 할 수 있는 편집기가 생성됩니다.

그럼, 이 문자열 사전은 무엇을 할 수 있고 왜 도움이 되는지에 대해서 이야기 해보겠습니다.

- Handling Plurals

첫번째, 앱에 코드를 작성하지 않고도 복수형의 복잡성을 처리하는데 도움이 될 수 있습니다.

 

popularLanguages 라는 배열이 있고, 이 배열의 수가 하나인 경우 문자열을 1 popular language 라고 설정하고 하나 이상인 경우 배열의 개수 만큼 %d popular language 라고 설정하였습니다. 이 코드는 복수형이 두 개뿐인 영어와 같은 언어에서는 잘 작동합니다. 하지만 더 많은 복수형이 있는 러시아어와 같은 언어에서는 제대로 작동하지 않을 것입니다. 러시아어는 4가지의 복수형이 있기 때문입니다.

 

만약 러시아어에 그대로 코드를 사용한다면 인기 언어 : 1, 인기 언어 : 2 이렇게 표현된다면 원어민들에게 자연스럽지 않을 것입니다. 따라서 이러한 종류의 문제를 해결하기 위해 코드 작성이 끝나면 문자열 사전을 사용 할 수 있습니다.

 

위 예에서 LocalizedFromatKey는 language입니다. 그런 다음 개발 언어와 관련된 복수 변형을 추가해주면 됩니다. 여기에서 개발 언어는 영어이기 때문에 두 가지 복수형만 필요합니다. 그런 다음 코드에 있는 복수 문자열을 NSLocalizedString으로 래핑하여 Localization을 위해 프로젝트를 내보낼 때 Xcode는 지원하는 다른 언어에 대한 복수 Key를 자동으로 생성합니다. 따라서 다른 언어에 대한 변형은 XK 파일에 포함되며 번역가는 문자열을 번역할 때 해당 언어와 관련된 복수 변형을 찾을 수 있습니다. 이를 통해 더욱 번역이 정확해질 것이며 사용자는 문법적으로 더 정확한 문자열을 제공받을 수 있습니다.

- Adaptive Strings

문자열 사전으로 할 수 있는 또 다른 것은 적응형 문자열에 대한 지원입니다.

 

위 예시에서는 Gross Domestic Product (in billions)라는 문자열이 있습니다. 이 문자열은 길지만 iPad에는 잘 맞는것을 확인 할 수 있습니다.

하지만 iPhone 7과 같은 작은 장치에서 앱을 다시 실행하면 이 문자열은 제대로 표시되지 않습니다. 우리는 문자열 사전을 활용하여 이러한 문제를 해결하고 다양한 문자열 변형을 제공 할수 있습니다.

 

여기에 보면 세가지 다른 키가 있습니다. 20, 25, 50 이 숫자는 서로 다른 화면 크기에 해당합니다. 이 키값에 해당하는 String 값을 넣어주고 앱을 실행하게 되면, 코드 한 줄 지우지 않고도 앱의 다양한 화면 크기에 따라 알맞은 문자열을 표시해줄 수 있습니다.

 

또한 UILabel을 사용하지 않고 custom control을 사용하는 경우에도 API를 사용하여 위처럼 기능을 활용 할수 있습니다. 관련 내용은 문서로 확인 할 수 있습니다.

- Localization Export and Import

Export XLIFF

이제 복수형 문자열과 적응형 문자열 지원이 완료되었으므로 앱을 현지화할 준비가 되었습니다. 이 과정의 첫 번째 단계는 프로젝트를 내보내는 것입니다.

프로젝트를 내보낼 때 Xcode는 먼저 현지화 할 언어를 묻습니다. 언어를 선택하게 되면 번역자에게 보낼 XLIFF 파일이 생성됩니다.

Import XLIFF

XLIFF 파일이 번역되면 프로젝트로 다시 가져올 수 있으며 Xcode에서 번역자가 변경한 내용을 확인 할 수 있습니다.

Other Resources

문자열의 Localization에 대해서 알아보았습니다. 그렇다면 문자열이 아닌 다른 리소스들은 어떻게 Localization할 수 있을까요?

 

텍스트가 포함된 이미지가 있고 다른 언에 대한 대체 이미지를 제공할 수 있습니다.

 

file inspector에서 Localize버튼을 누르면 현지화하려는 언어를 묻고 선택을 하게 되면 특정 언어 폴더로 이동하여 해당 언어에 대해 표시하려는 이미지로 대체 할 수 있습니다.

 

Demo

Localization Export and Import

Localizing with Xcode 9 - WWDC17 - Videos - Apple Developer

 

Localizing with Xcode 9 - WWDC17 - Videos - Apple Developer

Build world-ready apps using Xcode by following some simple steps to manage strings and assets, and display your user interface. Take...

developer.apple.com

Testing

- XCTest

Xcode 9에서 테스트를 실행할 애플리케이션 언어와 지역을 지정하는 기능이 추가 되었습니다. 이 기능은 test scheme editor에서 수행할 수 있습니다.

UI testing

UI test는 애플리케이션의 UI와 기능을 모두 검증할 수 있는 좋은 방법입니다.

 

app.tables.cells.staticTexts["Territry"].tap()

 

위 코드는 텍스트 영역이 있는table cell을 tap하는 것을 시뮬레이션하기 위해 작성하였습니다. 만약 앱의 문구를 변경하기로 결정하고 내부 코드에서도 Territry 대신 region이라고 부르고 싶으면 어떻게 해야할까요?

작성한 모든 단일테스트를 성공하도록 코드를 다시 작성하고 싶지는 않을 것입니다. 그래서 우리가 사용을 추천하는 것은 accessibility identifier 입니다.

 

app.table.cells["territoryTableCell"].tap()

 

위 처럼 accessibility identifier를 사용하면 화면의 모든 요소에 고유성을 부여 할 수 있으며 어떤 문자열이 로드 되는지 알지 못해도 이러한 요소들을 찾는데 사용 할 수 있습니다.

accessibility identifier를 설정하려면 아래처럼 UI control을 만들 때 NS control에서 속성을 설정하면 됩니다.

 

button.accessibilityIdentifier = "startButton"

 

또한, 스토리보드나 zip 파일에서 UI를 로드하는 경우에는

 

위와 같이 Interface Builder 의 Identity insperctor에서 설정할 수 있습니다.

Demo

Testing

Localizing with Xcode 9 - WWDC17 - Videos - Apple Developer

 

Localizing with Xcode 9 - WWDC17 - Videos - Apple Developer

Build world-ready apps using Xcode by following some simple steps to manage strings and assets, and display your user interface. Take...

developer.apple.com

Summary

  • 문자열 사전은 매우 강력하고 복수화 및 적응형 문자열을 지원합니다. 또한 사용자의 언어 뿐만 아니라 장치 너비에 따라 올바르게 표시되도록 할 수 있습니다.
  • Localization process를 위해 XLIFF 파일을 내보내고 번역이 된 파일을 다시 프로젝트로 가져올 수 있습니다. XLIFF 파일을 프로젝트로 다시 가져와 수정된 부분을 확인 할 수 있습니다.
  • Xcode에서 문자열 이외의 리소스를 file Inspector의 Localize 버튼을 눌러 Localization 할 수 있습니다.
  • XCTest와 AccessIdentifier를 사용하여 Localization을 테스트 할 수 있습니다.

참고자료

  1. WWDC 2017 Localizing with Xcode 9
 

Localizing with Xcode 9 - WWDC17 - Videos - Apple Developer

Build world-ready apps using Xcode by following some simple steps to manage strings and assets, and display your user interface. Take...

developer.apple.com

 

'WWDC' 카테고리의 다른 글

WWDC17 Localizing with Xcode 9 (1)  (0) 2022.02.26