[swift] Swift MVVM 아키텍처에서의 다국어 지원 방법

다국어 지원은 모바일 앱 개발에서 중요한 요소 중 하나입니다. 사용자들이 언어 환경에 따라 앱을 사용할 수 있도록 다국어 지원을 구현해야 합니다. 이를 위해 Swift MVVM (Model-View-ViewModel) 아키텍처를 사용하여 다국어 지원을 어떻게 구현할 수 있는지 알아보겠습니다.

MVVM 아키텍처는 사용자 인터페이스와 비즈니스 로직을 분리하여 유지보수성을 향상시키는 패턴입니다. 이 아키텍처를 사용하여 다국어 지원을 구현하려면 다음 단계를 따릅니다.

1. 다국어 파일 생성

가장 처음 해야 할 일은 다국어 파일을 생성하는 것입니다. Swift에서는 .strings 파일을 사용하여 다국어를 관리합니다. 이 파일은 앱 내에서 다국어 문자열을 저장하는 역할을 합니다.

예를 들어, Localizable.strings 파일을 생성하여 기본 언어 문자열을 정의할 수 있습니다. 이 파일은 프로젝트 내의 Base.lproj 폴더에 위치해야 합니다.

2. 다국어 문자열 정의

다음으로, Localizable.strings 파일 내에서 각 언어에 대한 문자열을 정의해야 합니다. 문자열은 key = value 형식으로 정의되며, 이를 통해 언어에 따라 다른 문자열 값을 사용할 수 있습니다.

예를 들어, 다음과 같이 문자열을 정의할 수 있습니다.

"welcome_message" = "환영합니다";

3. ViewModel에서 다국어 처리

MVVM 패턴에서 ViewModel은 비즈니스 로직을 처리하고 뷰와 상호작용합니다. 다국어 지원을 위해 ViewModel에서는 다음과 같은 작업을 수행해야 합니다.

a. 다국어 파일 로드

다국어 파일을 로드하여 현재 언어에 해당하는 문자열을 사용할 수 있도록 해야 합니다. 이를 위해 Bundle.main.path(forResource: "Localizable", ofType: "strings") 메서드를 사용하여 언어 파일을 로드합니다. 로드한 파일은 Dictionary 형태로 저장됩니다.

guard let path = Bundle.main.path(forResource: "Localizable", ofType: "strings"),
      let dictionary = NSDictionary(contentsOfFile: path) as? [String: Any] else {
    return
}

b. 언어 설정

앱 내에서 사용할 언어를 설정해야 합니다. 사용자가 선택한 언어를 기준으로 파일을 로드하고 해당 언어에 맞는 문자열을 사용합니다.

let preferredLanguage = Locale.preferredLanguages.first ?? "en"

c. 문자열 가져오기

저장된 다국어 문자열을 ViewModel에서 사용할 수 있도록 가져옵니다. 로드한 파일에서 key 값을 사용하여 해당 언어에 맞는 문자열을 가져옵니다.

let welcomeMessage = dictionary["welcome_message"] as? String

4. View에 다국어 적용

View에서는 ViewModel에서 가져온 다국어 문자열을 사용하여 화면에 표시해야 합니다. 이를 위해 다음과 같은 작업을 수행합니다.

a. ViewModel과의 연결

View는 ViewModel과 바인딩되어 문자열 값을 받아올 수 있도록 해야 합니다. 이를 위해 View에서 ViewModel 객체를 생성하여 연결합니다.

let viewModel = MyViewModel()

b. 문자열 화면에 표시

View에서는 ViewModel에서 가져온 다국어 문자열을 화면에 표시해야 합니다. 이를 위해 다음과 같이 문자열을 사용할 수 있습니다.

welcomeLabel.text = viewModel.welcomeMessage

위의 예제에서 welcomeLabel은 환영 메시지를 표시하는 UILabel입니다.

이와 같은 방식으로 MVVM 아키텍처에서 다국어 지원을 구현할 수 있습니다. 이를 통해 다국어 사용자 인터페이스를 쉽게 구현하고 유지보수할 수 있습니다.


참고 자료