티스토리 뷰

TIL

[TIL] 2022 / 09 / 06

희철 2022. 9. 6. 18:06

국제화/현지화

 

 

사용자가 선택한 기기의 언어대로 나옴.

 

하지만 기기의 언어와 상관없이 앱에서 사용할 언어를 정할 수도 있음.

 

다국어를 지원하는 경우, 언어뿐만 아니라 날짜 포맷이나 표시 단위 같은 것들을 신경써야함.

 

i18n(Internationalization)

-> 특정 국가나 지역에 종속되지 않게 설계. 언어뿐아니라 RTL이나 날짜 표기 방법 등을 고려해 설계

ex) 국가에 따라 시간대나 날짜가 달라지는데, 이런 변화를 감지하고 처리하는 것

 

l10n(Localization)

-> 번역 및 리소스 작업 등을 적합하게 구현해서 설계.

ex) 각 나라별로 날짜 표기 방법이 다르므로 이를 그나라에 맞는 형식으로 표현하는 것.

 

 

1. 인터페이스 빌더 기반

 

 

우선, 프로젝트 설정의 info에서 Localization 설정

프로젝스 설정의 Info에서 Localization에 원하는 언어 추가

이때, 추가할 스토리보드를 정하게 되는데 만약 코드기반인 경우에는 추가하지 않아도됨. 근데 코드로 구현할때 이 방법을 쓰진 않을듯ㅇㅇ

 

 

추가하면 아래처럼 스토리보드에 String파일이 생김. 

이때, 키값으로 사용되는 것은 객체들의 오브젝트 ID인데, 인스펙터 영역에서 확인할 수 있음.

 

string파일에서 바꿔주면 언어마다 다른 값을 표시할 수 있음.

 

 

2. String파일을 만들어서 해결

 

 

cmd+n으로 새로운 Strings File을 만들어야함.

 

이때, Localizable을 관리하기위해선 반드시 파일이 이름이 Localizable이어야함.(안바꾸면됨.)

 

만들었다면 인스펙터 영역에서 Localization을 눌러 추가할 언어를 선택함.

 

이때, 아무거나 선택하고 나머지도 체크해주면 됨.

 

이제 String 파일에 내용을 작성하면되는데, 기본적으로 "Key" = "value"형태로 생각하면됨.

왼쪽은 Korean, 오른쪽은 English

이렇게 작성한 코드를 프로젝트에 적용시키기 위해서는 NSLocalizedString을 사용해야함.

 

String의 extension에 연산 프로퍼티와, 메서드 생성
위와 같이 사용할 수 있음.

comment는 보여지는 부분은 아니고 코드를 작성할때 알아보거나 커뮤니케이션을 위한 부분이라고 생각하면 됨.

 

 

앱 이름, 권한 요청 문구

 

 

Strings 파일을 이용해 앱의 이름이나 권한 요청 문구도 로컬라이징할 수 있음.

 

info.plist에서는 아래와 같은 키로 설정함.

 

하지만 String파일에서의 키는 소스 코드 형태에서의 이름을 확인해야함.

 

위와 같이 소스 코드에서의 이름을 확인 후 앞서 작성한 파일들과 동일하게 "키" = "value"로 작성해주면됨.

 

 

 

 

시뮬레이터에서 매번 언어를 바꾸지 않아도 Edit Scheme에서 App Language를 바꿔주면 해당 언어로 실행할 수 있음.

Product -> Scheme -> Edit Scheme

 

 

리뷰 남기기

 

 

애플에서 제공해주는 리뷰 얼럿이 있는데, 한 디바이스 당 1년에 3회만 가능함.

 

그래서 사용자의 사용 빈도 수 같은 것들을 데이터 카운트 비교등을 통해 많이 사용한 사람들한테 띄우는 느낌으로 하면 될듯

 

SKStoreReviewController를 이용하면됨.

 

근데, 앱 내에서 리뷰를 작성하는게 아닌 앱 스토어를 열어서 리뷰남기게 하는건 횟수에 포함안됨.

 

 

메일 보내기

 

 

앱들을 보면 문의 남기기, 의견 보내기 등 메일을 보낼 수 있는 버튼들을 많이 볼 수 있음.

 

이것도 애플에서 제공해주는 기능임.

 

MessageUI 프레임워크를 이용하면됨.

 

근데 메일보내기는 시뮬레이터가 아닌 디바이스에서만 가능하며, 메일 계정이 등록되어 있어야함.

-> 만약 등록되어있지 않다면 따로 alert을 띄우는 형태로 구현하면 될듯.

 

기능을 구현하기 위해 우선 MessageUI를 임포트 해야함.

 

다음으로 메일을 보내는 메서드를 작성

 

메일을 작성하려다가 취소한 사람들에게 따로 alert을 띄우는 등의 코드를 구현하기 위해서는 mailComposeDelegate채택 후 구현해야함.

 

 

 

 

다국어 지원, 리뷰, 메일 모두 이번 출시할 프로젝트에 적용해봐야겠음.

'TIL' 카테고리의 다른 글

[TIL] 2022 / 10 / 13 - Realm Migration  (1) 2022.10.13
[TIL] 2022/ 10 / 12 - Remote Notification, Method Swizzling  (0) 2022.10.12
[TIL] 2022 / 09 / 05  (0) 2022.09.05
[TIL] 2022 / 09 / 02 (GCD)  (0) 2022.09.02
[TIL] 2022 / 08 / 31  (0) 2022.08.31
댓글
최근에 올라온 글
Total
Today
Yesterday