Swift) Localization 다국어 처리(String Catalog)

앞에서 다뤘던 Strings File과 stringsDict 파일에 대해서 공부를 해보았다면 다국어처리에 어려움을 겪었을 것입니다. XCode 15에서부터 사용할 수 있는 String Catalog는 개발자가 여러 언어와 로케일을 지원하는 앱을 더 쉽게 개발하고 유지관리할 수 있도록 설계되었습니다.

String Catalog을 활용한 다국어 처리

1) String Catalog 파일 추가

New File에 들어가 보면 다음과 같이 다국어처리를 위한 파일들이 존재합니다. 여기서 String Catalog 파일을 만들어줍니다. Strings File과 Stringdict File은 Legacy로 나타나있는 것을 알 수 있습니다.

2) 언어 추가

프로젝트에 들어가서 Localizations를 통해 언어를 추가할 수 있습니다.

3) 언어 추출

앱을 추출하기 위해선 간단하게 앱을 빌드하면 됩니다. 빌드를 하게 되면 key를 추출해 자동으로 String Catalog 에 추가해줍니다.

struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("Hello, world!")
        }
        .padding()
    }
}

4) 복수화 처리

빌드를 하면 String Catalog에 자동으로 값이 들어가는 것을 확인했습니다. 이를 활용해서 복수화처리도 간단하게 할 수 있습니다.

struct ContentView: View {
    let appleCount = 3
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("Hello, world!")
            
            
            Text("I have \(appleCount) apple")
        }
        .padding()
    }
}

Text(“I have \(appleCount) apple”) 라는 텍스트를 만들면 값이 Catalog 파일 내로 들어갈 것입니다.

“Vary by Plural”를 통해 단복수에 대한 처리를 할 수 있습니다.

예를 들어 1개에서는 “I have an apple” 그 나머지(Other)에는 “I have N apples”로 만들어 주면서 수량에 따른 문법에 대응할 수 있습니다.

5) 상태 관리

“String Catalog”를 사용하면 좋은 점은 상태 관리를 할 수 있다는 것입니다.
String Catalog에는 4가지 상태가 있습니다.
STALE: Not found in code
– 빌드를 할 때 만약 key값이 String Catalog에 없다면 자동으로 리스트에서 지워주지만 이미 String Catalog에 값을 수정한 상태에서 key값을 사용하는 곳이 지워진다면 다음과 같이 Not found in Code라는 상태를
NEW: Untranslated
– 컴파일러가 빌드시에 새로운 키를 찾으면 New라는 상태로 리스트를 만들어줍니다. 문자열이 아직 선택된 언어로 번역되지 않았음을 알려줍니다.
NEEDS REVIEW: May require change
– 값이 변경될 수 있는 문자열이기 때문에 번역가의 주의가 필요하다는 의미입니다.
Translated
– 선택한 언어로 번역이 완료된 문자열에는 녹색 체크 마크가 나타납니다.

Strings File에서 String Catalog로 마이그레이션

좋은 기술들이 나온다고 하더라도 기존 앱에 영향이 가서 사이드 이펙트가 나오게 된다면 그것만큼 골치 아픈 일이 없을 것입니다. 때문에 마이그레이션은 상당히 중요한데 Strings File에서 String Catalog로의 마이그레이션은 정말 간단히 수행할 수 있습니다.

기존 Strings File을 보면 “Migrate to String Catalog”라는 버튼이 있습니다. 이것을 누르면 String Catalog 파일이 만들어지며 Key Value값이 옮겨지게 됩니다.

Leave a Comment