Localization
지역화는 사용자의 언어 설정을 기반으로 앱의 적합한 리소스를 제공하는 절차이다.
주로 지역화 작업은 리소스를 통해서 먼저 진행된다.
values/ 폴더 아래에 원하는 이름(주로 strings)으로 문자 리소스 파일을 만들어준다.
위와 같이 Locale 을 선택한뒤, 원하는 언어를 선택한다.
예를들어 일본어를 선택헀다면, values-ja 로 형성된다.
언어 구성 수식자는 ISO 639-1 코드의 표준을 따라 두개의 문자로 구성되며, 일본어는 수식자가 ja이다.
탐색기에서는
string.xml (ja) 라는 파일명으로 보인다.
참고로 제일 우측에 Specific Region Only 는 말그대로 어떤지역에서만 그 언어가 보이게 할지 선택하는 것이다.
Any Region이 기본값이고 원하면 해당 나라를 선택해줘도 된다.
그렇다면, 기존의 strings.xml 도 strings (kr) 이런 식으로 표현되지 않는 걸까?- 안드로이드 시스템에서 앱을 빌드 할때, 기본값? 개념의 Strings가 있어야 한다. 그 기본값(Default Resource)을 역할해주는 것이 String.xml 파일이다. (따라서 해당 개발국가에서는 strings를 모국어로 작성하고 추가 지역화 업데이틀 해야 할때만 추가해주면 될 듯 하다.) - 위의 규칙을 지키지 않는다면, 안드로이드 OS는 Resource.NotFoundException 을 발생시켜 앱을 중단 시킨다.
안드로이드 스튜디오에서 제공하는 번역기 Translation Editor 번역 편집기
사진 처럼 strings.xml 화면어디를 가든 우측 상단에 editor 라는 링크가 보인다. 이를 따라들어가면,
간편하게 내가 만든 string리소스에 번역이 안된 것이 어디인지 훤히 볼 수 있다.
로케일과 지역 리소스 선택
리소스 디렉토리에 언어 Locale Region 을 추가해 수식자로 지정할 수 있다.
예를 들어,
스페인어를 사용하는 멕시코라고 한다면,
strings-ex-rMX.xml 라고 파일명을 해야 한다.
즉, 언어-지역 수식자로 된 디렉터리가 필요한경우가 발생한다.
그러한 특수한 경우에만 적용해주고, 그 외의 경우에는 언어 수식자만 갖는 디렉터리를 사용하는 것이 좋다.
구성 수식자
언어 관련: values-ex, 화면방향 관련: layout-land, 화면 밀도 관련: drawable-mdpi ... 등 이러한 리소스에서 볼 수 있는 파일명 들이다. 이러한 것을 구성 수식자라고 한다.
리소스를 대상으로 안드로이드에서 제공하는 장치 구성 수식자는 상당히 많다. [공식 문서 참고]
모바일 국가 코드(MCC) 모바일 네트워크 코드(MNC) |
언어 코드 - 지역 코드 | 레이아웃 방향 | 최소 너비 | 사용 가능 너비 |
사용 가능 높이 | 화면 크기 | 화면 비율 | 원형 화면 여부 | 높은 명암비 |
확장 색 공간 | 높은 명암비 | 화면 방향 | UI 모드 | 야간 모드 |
화면 밀도 | 터치 스크린 유형 | 키보드 사용성 | 기본 텍스트 입력 방법 | 내비게이션 키 사용성 |
기본 바-터치 내비게이션 방법 | API 레벨 |
위의 표를 보면, 우선순위대로 나열된 것으로 보면된다.
즉, 사용가능 너비를 먼저 추가하고, 실행하면, 기존 Strings의 언어코드의 문자열 리소스가 실행된다.
왜 그럴까? 위의 우선순위 때문이다. 그렇다면 어떻게 해야 사용가능 너비를 설정에 반영되게 할 수 있나?우선순위 대로 파일명을 넣어주면 된다.
원래 파일이 values-w660dp-es 로 하려 했다면, 백퍼 기본값으로 들어간다. 그런 파일명을 values-es-w600dp 로 변경하면 원하는대로 화면 너비의 조건이 되었으때 작동된다. 작은 차이지만 원하는 구현을 못할 수 있는 부분이다 명확하게 이해해야 한다.
'Programming > Android' 카테고리의 다른 글
Accessibility (0) | 2021.08.04 |
---|---|
Take Photo with Intent (0) | 2021.08.03 |
DialogFrag to Frag with Data (0) | 2021.07.29 |