개발

[Swift] Local Notification Localization 하기(Feat. String Catalog)

Onve 2024. 9. 2. 17:54

한국어, 영어, 일본어를 Localized한 어플리케이션을 업데이트 하려고 하는데, 로컬 알림(Local Notification)의 경우 정보가 없는 경우가 많아 골머리를 앓았다.

 

로컬 알림의 경우 코드 상에서만 인식되는 경우가 많은데, 이 경우에는 새로 생긴 String Catalog에 빌드를 해도 자동으로 나타나지 않기 때문이다.

 

이 글에서는 일반적인 String을 어떻게 String Catalog에 적용하는지 확인해보겠다.


String Catalog에 인식시키는 방법

이 방법은 String()으로 선언하는 방식과, LocalizedStringResource로 2가지가 있다.

 

String(localized: "String") 사용하기

let content = UNMutableNotificationContent()
content.title = String(localized: "\(memberTitle)시에요!")
content.body = String(localized: "\(dateComponent.hour ?? 0)시 \(dateComponent.minute ?? 0)분입니다.")
content.sound = .default
let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)

 

위와 같이 String(localized: )를 사용하고 난 뒤 한번 빌드해주면, 자동으로 String Catalog에 뜨는 것을 확인할 수 있다.

 

 

 

 


LocalizedStringResource 사용하기

아니면, 아예 선언을 할 때부터 이 String이 Localization이 필요한 문자열임을 알려주는 방법도 있다.

let exampleString: LocalizedStringResource = "안녕하세요"

 

위와 같이 해당 변수의 타입을 LocalizedStringResource로 선언하면, 자동으로 String Catalog에 적용된다. 

 

LocalizedStringResource의 경우 코드상에서는 일반적인 String과 동등하게 처리되는 듯 하지만, String 타입을 리턴해야하는 메소드 등에서는 오류를 내는 경우가 많으니 화면 구성 또는 알림에만 사용하도록 하자.