[Showpot 회고] SwiftGen을 사용해서 다국화

이건준·2024년 7월 19일
0

Localizable 뭐야 ?

  • 현지화라는 의미로 다양한 국가에 맞춰 설정하는것을 의미함
  • 즉, 한국인들만 사용하는 애플리케이션인 경우 한글텍스트만 신경쓰면되겠지만 그 외 영어를 사용하는 사용자들같은 경우 한글텍스트가 아닌 영어텍스트를 보여야하는것과 같은 느낌

iOS앱에서 Localizable을 어떻게 구현하는데 ?

  • strings파일로 이름을 반드시 Localizable을 선정하여 생성
"socialLogin_description" = "잊지않고 내한공연 즐기러가요";
"socialLogin_kakao_button" = "Kakao로 시작하기";
"socialLogin_google_button" = "Google로 시작하기";
"socialLogin_apple_button" = "Apple로 시작하기";

/// 사용법
NSLocalizedString("socialLogin_apple_button", comment: "")
  • Localizable파일에 텍스트를 작성할때는 Key값과 Value에 대한 값을 적어주고 반드시 마지막에 세미클론을 잊지않습니다.
  • NSLocalizedString을 이용해 Key값을 인자로 주어 Value를 가져올 수 있음

  • 다른 나라에 대한 현지화를 진행하고싶다면 Project -> Localizations -> +버튼을 클릭하여 추가하고 위와 동일하게 Key와 Value 삽입

그래서 SwiftGen은 어디서 쓰는건데 ??

  • SwiftGen은 프로젝트 내부에서 사용하는 리소스(이미지, 현지화된 문자열 등등)과 같은 것에 대한 코드를 자동으로 생성하여 안전하게 접근할 수 있도록 해주는 도구입니다.

  • 우리가 기존 NSLocalizedString의 Key값을 직접 입력하거나 UIImage에도 이미지이름을 개발자가 직접 써줘야하기에 해당 에셋에 사라지거나 잘못 적더라도 컴파일타임에 알 수 없음

Showpot프로젝트에서 SwiftGen을 적용한 부분

  • Showpot프로젝트 특성상 iOS 15버전 이상을 사용하고있어서 이미지와 칼라같은 경우는 자체적으로 제공하는 resource를 사용하면 됐기에 현지화 텍스트부분만 SwiftGen을 이용하여 생성하였음
input_dir: ShowPot/Resource
output_dir: ShowPot/Resource

strings:
  inputs:
    - Localizable/Localizable.strings
  outputs:
    - templateName: structured-swift5
      output: Localizable/Strings+Generated.swift
      params:
        publicAccess: true
        enumName: Strings

0개의 댓글