220627 TIL [Localization(기기 설정 언어에 따라 다르게 표시하기)]

Doogie·2022년 6월 27일
0

기본 설정

1. String File 생성

2. Localize... 버튼 클릭


이 버튼을 클릭하면


이렇게 변함

3. 언어 추가하기


이 + 버튼을 클릭해 대상 언어를 추가해 준다


위에서부터 string, 스토리보드, 런치 스크린인데 일단 string과 스토리보드만 해볼 것이기 때문에 두개만 체크


여기서는 영어 -> 한글로 바꿀것 이기 때문에 Korean만 추가


Localizable에서 추가된 파일 확인 가능

string파일을 통한 로컬라이징

Who are you 라는 텍스트를 기기 설정이 한국어라면 너 누구야 로 바꿔보려고 한다

1. 대응되는 문자열 지정하기


일단 English 파일에서는 텍스트 그대로 Who are you = Who are you; 이렇게 작성해 준다
(끝에 ;(세미콜론)을 빼먹으면 안됨!)

그리고 Korean 파일에서도 작성을 해주는데 여기서는 Who are you = 너 누구야; 로 작성을 해준다

2. 위 설정을 적용시키기


Label의 text를 그냥 문자열로 작성하는 것이 아닌 NSLocalizedString 을 이용해 작성해준다

결과


viewDidLoad에서는 Who are you라고 label의 text를 설정해줬으나 빌드시 너 누구야 라고 잘 나오는 모습

추가적인 사용 법

  1. extension
    물론 위처럼 해도 작동이 잘되긴 하나 저렇게 일일히 다 해주면 귀찮으니 보통 string을 아래와 같이 extension해서 사용한다고한다

  1. 문자열 포멧

%@ - string, %d - int, %f - float, %ld - long
위와 같은 포멧을 이용해 추가적으로 작성되는 문자열에 대한 위치를 조정 할 수 있다
예를 들어


English파일에서는 뒤쪽, Korean파일에서는 앞쪽에 string을 지칭하는 %@키워드를 작성하고


이런식으로 작성하게 된다면


위와 같이 언어 설정에 따라 다른 위치에 Doogie가 나타나는 것을 볼 수 있다

  • int 타입도 마찬가지로사용 가능


이미지 변경하기

위와 같이 image파일 이름도 지정해주면 이미지도 변경할 수 있지 않을까? 하는 생각에 진행해봄


위와 같이 Image View 를 추가한 뒤


기기설정이 영어 일때는 왼쪽 그림이 한글일때는 오른쪽 그림이 나타나도록 해보려고 한다

1. 대응되는 이미지 파일 이름 지정하기


English 파일에는 왼쪽 이미지 이름인 seal

Korean 파일에는 오른쪽 이미지 이름인 seal.fill을 지정해준다

2. 위 설정을 적용시키기

결과

storyboard 로컬라이징

이런 Label이 있을 때 위에서 했던 방식 대로 string을 변환할 수도 있지만 스토리보드에서 바로 다른 언어로 변환해 보려고 한다

1. 대응되는 ID 지정하기

Label을 클릭하면(Label 뿐 아니라 다른 요소들도 마찬가지) Object ID라는 것이 존재함

스토리보드 아레에 있는 파일로 들어가서 해당 ID.text로 접근해 변경 가능

결과

참고자료

https://gonslab.tistory.com/59
https://zeddios.tistory.com/368

profile
끊임없이 문을 여는 개발자

0개의 댓글