Localization 섹션 아래에 +버튼을 클릭 후 원하는 언어 선택하기
File > New > File from Template 클릭 후 String Catalog 클릭
파일 명을 Localizable이라고 하고 생성
생성된 파일 선택하면 위와 같이 나와 있음
Localization에서 설정한 언어대로 설정할 수 있음
이때 English에서 key엔 한글을 작성 그 옆에 English에서 영어 입력해줘야 함
Korean에선 Default Localization이 key 값 따라가서 수정 불가함
그러니 먼저 English에서 key 값과 Englsih 값 넣어주고 Korean 가서 State 필드 확인하기
✨ 꿀팁
테스트를 위해서 한, 두가지만 key 값에 넣기
반영 확인을 위해 시뮬레이터 돌리면 알아서 key 값 채워져 있기 때문에 일일이 하나하나 채울 필요 없음
(물론 다 채워지진 않아서 추후 하나하나 추가해줘야 하긴 하지만 그 수가 줄여서 좋음)
tabButton(title: String(localized: "할 일"), isSelected: selectedTab == "할 일")
TextField("", text: $taskText, prompt: Text(LocalizedStringKey("할 일을 작성해주세요")).foregroundColor(.white))
Text(selectedDate != nil ? formattedDate(selectedDate!) : NSLocalizedString("마감 날짜 선택 (선택사항)", comment: ""))
다국어 지원이 필요한 곳으로 가서 String(localized: "") 혹은 Text( LocalizedStringKey()), NSLocalizedString()해주기
셋이 뭔 차이냐 하면
SwiftUI 뷰 내부이면 Text(LocalizedStringKey())
SwiftUI 외부(삼항/변수/로직)이면 String(localized:) 또는 NSLocalizedString()
⚠️ 알고가기
근데 Text("key")가 정적 문자열이면 자동 번역되서 굳이 Text(LocalizedStringKey("key")) 해줄 필요가 없음
하지만 Text(변수)일 땐 강제로 LocalizedStringKey로 바꿔줘야 함
프리뷰에서 반영이 안되서 시뮬레이터 설정에서 영어로 변경 후 반영된 것을 확인
#Preview("English") {
ContentView()
.environmentObject(GoalStorage())
.environmentObject(TaskStorage())
.environmentObject(AchievementStorage())
.environment(\.locale, Locale(identifier: "en"))
}
#Preview("Korean") {
ContentView()
.environmentObject(GoalStorage())
.environmentObject(TaskStorage())
.environmentObject(AchievementStorage())
.environment(\.locale, Locale(identifier: "ko"))
}
프리뷰 반영 안되는 줄 알았는데 갑자기 됨;;
근데 이번엔 ㅋㅋㅋ 영어로만 나와서 화병 남...
그러다가 찾아본 결과로 빌드 폴더 정리가 도움이 된다고 함
난 빌드 폴더 정리해도 여전했는데 CMD+Shift+K를 하루 종일 했다는 댓글이 웃겨서 가져옴ㅋㅋㅋ
xcrun simctl --set previews delete all
차라리 난 위 코드를 사용하니깐 잘 됐음!
터미널에 치시길
'Front Side > Framework > SwiftUI' 카테고리의 다른 글
[SwiftUI] 결국 Assets으로 색상 변수 관리 하기 + 다크모드 도입 (0) | 2025.06.02 |
---|---|
[SwiftUI] 전역 포인트 색상 변수 선언하기 (0) | 2025.05.19 |
댓글