앱 현지화 (조회수)

개념 및 Jetpack Compose 구현

Android는 다양한 지역의 많은 기기에서 실행됩니다. 사용자 도달률을 최대로 높이려면 앱은 앱에 사용되는 언어에 맞게 텍스트, 오디오 파일, 숫자, 통화, 그래픽을 처리할 수 있어야 합니다.

이 페이지에서는 Android 앱 현지화를 위한 몇 가지 권장사항을 설명합니다.

Kotlin 또는 Java 프로그래밍 언어에 관한 실무 지식이 있어야 하고 Android 리소스 로드, XML에서의 사용자 인터페이스 요소 선언, 활동 수명 주기와 같은 개발 고려사항 , 국제화 및 현지화의 일반 원칙을 숙지하고 있어야 합니다.

Android 리소스 프레임워크를 사용하여 앱의 현지화된 측면을 핵심 앱 기능과 최대한 분리하는 것이 좋습니다.

  • 이 페이지와 앱 리소스 개요에 설명된 대로 앱 사용자 인터페이스의 콘텐츠 중 대부분 또는 전체를 리소스 파일에 넣습니다.
  • 반면 사용자 인터페이스의 동작 은 Kotlin 기반 또는 Java 기반 코드를 통해 이루어집니다. 예를 들어 사용자가 언어에 따라 다르게 형식을 지정하거나 정렬해야 하는 데이터를 입력하는 경우, 대개 Kotlin 또는 Java 프로그래밍 언어를 사용하여 프로그래매틱 방식으로 데이터를 처리합니다. 이 페이지에서는 Kotlin 기반 또는 Java 기반 코드를 현지화하는 방법은 다루지 않습니다.

앱에서 문자열을 현지화하는 간단한 가이드는 다양한 언어 및 문화권 지원을 참고하세요.

현지화를 위한 리소스 사용

이 섹션에서는 기본 리소스와 대체 리소스를 만드는 방법을 설명합니다. 또한 리소스에 우선순위가 할당되는 방식과 코드에서 리소스를 참조하는 방법을 설명합니다.

기본 리소스 만들기

앱의 기본 텍스트를 res/values/strings.xml에 넣습니다. 이러한 문자열에는 기본 언어(대부분의 앱 사용자가 사용할 것으로 예상되는 언어)를 사용합니다.

기본 리소스 세트에는 모든 기본 드로어블과 레이아웃도 포함되며 애니메이션과 같은 다른 유형의 리소스도 포함될 수 있습니다. 이러한 리소스는 다음 디렉터리에 있습니다.

  • res/drawable/: Google Play의 앱 아이콘에 사용할 하나 이상의 그래픽 파일이 있는 필수 디렉터리
  • res/layout/: 기본 레이아웃을 정의하는 XML 파일이 있는 필수 디렉터리
  • res/anim/: res/anim-<qualifiers> 폴더가 있는 경우 필수
  • res/xml/: res/xml-<qualifiers> 폴더가 있는 경우 필수
  • res/raw/: res/raw-<qualifiers> 폴더가 있는 경우 필수

도움말: 코드에서 Android 리소스의 각 참조를 검토합니다. 참조마다 기본 리소스가 정의되어 있는지 확인합니다. 또 기본 문자열 파일이 완전한지 확인합니다. 현지화된 문자열 파일에는 문자열의 하위 집합이 포함될 수 있지만 기본 문자열 파일에는 문자열이 반드시 모두 포함되어야 합니다.

현지화 도움말

다음 도움말을 따라 앱을 현지화하세요.

유연한 레이아웃 설계

특정 언어에 맞게 레이아웃을 재정렬해야 하는 경우 해당 언어의 대체 레이아웃을 만들 수 있습니다(예: 독일어 레이아웃의 경우 res/layout-de/main.xml). 하지만 이렇게 하면 앱을 유지 관리하기가 어려워질 수 있습니다. 더 유연한 단일 레이아웃을 만드는 것이 좋습니다.

또 다른 일반적인 상황은 레이아웃에서 다른 항목이 필요한 언어입니다. 예를 들어 앱이 일본어로 실행될 때는 연락처 양식에 이름 필드가 두 개 있고 그 밖의 다른 언어로 실행될 때는 세 개 있을 수 있습니다. 이 문제는 다음 두 가지 방법으로 처리할 수 있습니다.

  • 언어에 따라 프로그래매틱 방식으로 사용 설정 또는 중지할 수 있는 필드가 포함된 레이아웃을 하나 만듭니다.
  • 기본 레이아웃에 변경 가능한 필드가 포함된 다른 레이아웃을 포함합니다. 두 번째 레이아웃은 언어마다 다른 구성을 가질 수 있습니다.

Android Context 객체를 사용하여 수동으로 언어 조회

다음 예와 같이 Android에서 제공하는 Context 객체 를 사용하여 언어를 조회할 수 있습니다.

Kotlin

val primaryLocale: Locale = context.resources.configuration.locales[0]
val locale: String = primaryLocale.displayName

자바

Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0);
String locale = primaryLocale.getDisplayName();