앱을 개발하면서
영어사용 국가에선 영어로 보여주고
대한민국에선 한글로 보여주도록 해주는
다국어 기능을 적용을 해보려고해요
Strings File을 하나 만들어요
이 때 이름은 Localizable.strings 으로 꼭 설정 해주세요
이 파일이름을 인식해서 로컬라이제이션을 적용시켜요
방금만든 파일에서 오른쪽 인스팩터창에서(커맨드 + 옵션 + 0)
로컬라이제이션을 눌러주고
프로젝트파일을 눌러서
이 밑에있는 로컬라이제이션에 +를 눌러주세요
Korean를 찾고 클릭!
이 로컬라이제이션파일을 다국어 처리할거기 때문에 클릭
설정도 됬고 파일도 생성되서
영어랑 한글이 지원되도록 적용됬어요
이제 설정은 끝났고 어떻게 사용하는지 해볼께요
우선 사용은
key = value;
형식으로 사용해요
해당 키에 맞는 스트링 값을 가져오는거에요
; 세미콜론 잊으면 빌드에러가나요 주의하세요!
예를 들어 위와같이 선언 되어있다면
hi를 사용했을때
ko국가에선 안녕하세요로 나오고
en국가에선 hello로 나오는 거죠
원하는 스트링으로 지정해주고
SwiftUI에서 사용할 땐
LocalizedStringKey타입을 사용해요
위에서 사용한 키값을 스트링형식으로 넣어서 사용하기만 하면되요
간단하죠
struct HomeTitleView: View {
private let title: LocalizedStringKey = "HomeTitle"
var body: some View {
...
Text(title)
...
}
}
// Localizable(English)파일
"HomeTitle" = "finish..?";
// Localizable(Korean)파일
"HomeTitle" = "해치웠나...?";
프리뷰에서 테스트해보고 싶을땐
struct HomeView_Previews: PreviewProvider {
static var previews: some View {
HomeView(viewModel: HomeViewModel())
HomeView(viewModel: HomeViewModel())
.environment(\.locale, .init(identifier: "ko"))
}
}
.environment를 이용해서 locale을 설정해볼 수 있어요
한국과 미국인경우 잘 적용되는걸 볼 수 있어요
일반 텍스트가 아니라
도중에 값이 들어가는 텍스트라면?
보통쓸때
"\(loaclizationKey) \(number)개"
이런 형식을 생각할테지만 이형식은 에러가 나요
정의 할 때
// en
"testInt %lld" = "test: %lld";
"testString %@" = "test: %@";
// ko
"testInt %lld" = "테스트: %lld";
"testString %@" = "테스트: %@";
int값은 %lld
string값은 %@
를 사용해주고
키값과 동일하게 텍스트로 정의해주면되요
let number = 3
Text("testInt \(number)")
int형 값을 넣을 거이기때문에
사용할 키값은 testInt %lld이고
여기서 testInt는 스트링으로 똑같이 입력하고
%lld는 넣고싶은 인트형 변수를 넣어주면돼요
그러면 값으로 정의한 스트링 %lld위치에 값에 매칭되어서 넣어준 숫자가 나타나요
'iyOmSd > Title: SwiftUI' 카테고리의 다른 글
[SwiftUI] Namespace + matchedGeometryEffect(feat. 상단탭바 UI) (0) | 2022.07.14 |
---|---|
[SwiftUI] Button CornerRadius 효과주기 border, stroke, strokeBorder (0) | 2022.02.26 |
[SwiftUI] SwiftUI Stanford 정리 (2) | 2022.01.26 |
[SwiftUI] 네비게이션 바 숨기기 (0) | 2021.12.18 |
[SwiftUI] Widget 위젯만들기 (3) | 2021.07.06 |