Ssul's Blog
IOS 앱개발 String Catalog로 한국어, 영어 (다국어)동시설정(swiftui) 본문
2025년 새해 계획 중 하나가, 두달에 하나의 앱을 개발하는 것이었다.
벌써 4월이 시작되었지만, 아직 첫번째 앱. 열심히 분발해서 6개의 앱을 완성해보자!!
애플개발자 계정 본전은 뽑아야지 ㅜㅜ
첫번째 앱을 개발하면서, 미국/유럽 등 영어권 시장부터 출시하면 어떨까 생각하게 되었다.
근데 이미 개발을 한참 진행 했더니.... 전부다 한글인 상황.
1. 아이폰 앱 중에서 영어와 한국어 두개 이상의 언어를 지원하는 앱들은 어떻게 하는 것일까?
이미지 추가-Add Image
마이페이지-My Page
처럼 결국 무조건 해석해서 두개를 넣는 것은 당연할 것 같은데.... 그런 궁금증을 가지고 검색을 시작했다.
우선 결론은 String Catalog와 String File 둘중에 하나를 쓰면 된다.
String File이 원래 전통적인 방식이었지만, String Catalog가 나오면서 legacy가 되었다.
나 역시 첫 검색에 걸렸던 String File내용을 습득한 후, 프로젝트에서 추가를 하려고 하였다. 그랫더니
그래서 String Catalog를 사용해보기로 하였다. 사실 더 편하기도 하다.
나처럼 이미 한글로 많이 진행된 프로젝트라면 String Catalog 사용하시길 개인적으로 추천한다.
2. String Catalog를 사용하여 다국어 지원 앱 만들기
2-1. String Catalog추가
Xcode > 프로젝트 폴더 > 커맨드+N > String Catalog 추가
2-2. localization에 한국어 추가(일본어도 추가하려면 하시면 됩니다)
왼쪽상단 프로젝트 클릭 > 가운데 프로젝트 클릭 > Info탭 클릭 > Localizations에서 +눌러서 Korean추가
이렇게하고, 생성된 Localizable.xcstrings를 클릭해보면
이렇게 Korean이 추가 되어 있는것을 볼수 있다
2-3. Run(cmd+K)하기
빌드를 하는 순간, 내가 사용했던 주요 단어들이 Key값으로 자동 가져온다
예를 들면 Text("홈"), Text("이미지 추가")에서
홈, 이미지 추가가 키값이 되는것
2-4. 언어별로 설정해주기
Localizable.xcstrings파일에서 English를 확인해보면
Key값만 있다. 그럼 오른편에 영어로 기록하면 된다
3. 기타 꿀팁들
3-1. 안불러와지는 값들 불러오기
Text("이미지 추가")의 형태는 빌드시 자동으로 Localizable.xcstrings에 key값으로 들어오지만,
TabButton(
isSelected: selectedTab == .home,
title: "홈",
systemName: selectedTab == .home ? "house.fill" : "house",
accentColor: accentColor,
action: { withAnimation(.easeInOut(duration: 0.2)) { selectedTab = .home } }
)
이런 형태의 title: "홈"은 key값으로 자동으로 안불러온다.
이럴경우 String(localized: "홈"),으로 해주면 잘 불러오게 된다
TabButton(
isSelected: selectedTab == .home,
title: String(localized: "홈"),
systemName: selectedTab == .home ? "house.fill" : "house",
accentColor: accentColor,
action: { withAnimation(.easeInOut(duration: 0.2)) { selectedTab = .home } }
)
3-2. 이걸 언제 하나하나 다 해석해서 넣는가? AI로 한방에 처리하자
커서로 ios프로젝트 파일을 오픈.
Localizable.xcstrings을 열어보면, 아래와 같이 되어있다.
{
"sourceLanguage" : "en",
"strings" : {
"마이페이지" : {
},
"이미지 추가" : {
},
"로그아웃" : {
},
"홈" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Home"
}
},
"ko" : {
"stringUnit" : {
"state" : "needs_review",
"value" : "홈"
}
}
}
},
....
]
현재 홈 키 값만 Home(EN), 홈(KO)로 입력을 했고, 다른 것들은 입력하지 않아서 저렇게 되어 있는 것이다.
그럼 어떻게 하면 되는가? 커서에 명령을 하면 된다.
수정된 Localizable.xcstrings파일을 저장.
그리고 다시 빌드하면, 나의 앱은 영어버전도, 한글버전도 가능하게 된다.
3-3. 변수가 섞여 있을 경우
Text("선택된 카테고리: \(viewModel.selectedCategories.count)개")
아래와 같이 적용하면 된다
'dev > 기능구현' 카테고리의 다른 글
Vercel, AWS(Route53) 도메인 연결하기 (1) | 2025.07.23 |
---|---|
ios(swift)개발, 다른 앱에서 내앱 호출하기(딥링크) (0) | 2025.05.02 |
ios push알림 기능 설정 (0) | 2025.02.25 |
[ChatGPT, DALLE2] 인공지능 카카오챗봇 만들기 (3) | 2024.02.07 |
[Django, tailwind] AI가 상담글에 자동으로 댓글 달아주기 #2 (react, tailwind) (1) | 2024.01.24 |