본문 바로가기
Android Studio/Android Studio

2. Android Studio - 언어 설정에 맞게 Hello World 번역 출력하기

by Rosmary 2020. 7. 1.
728x90
반응형

대한민국의 거의 모든 사람들의 스마트폰에는 얼굴책과 인별그램이 설치되어 있다. 국내에서 핸드폰을 사서 사용해 온 거의 모든 사람들이, 이 앱을 다운받으면 자동적으로 앱은 한국어로 설정되어 사용자에게 서비스를 제공한다. 

 

그런데, 가만히 생각해보면, 얼굴책과 인별그램은 전세계의 수많은 국가에서 사용되고 있는 어플리케이션임에도 불구하고, 사용자의 모국어에 맞춰 서비스 화면을 제공한다. 즉, 미국인이 이들 앱을 다운받으면 영어로, 한국인이 다운받으면 한국어로 화면에 글씨가 출력된다는 것이다. 분명 이들 앱을 설치할 때, 언어 설정을 따로 지정하는 절차가 없음에도 말이다. 

 

사실, 국내에서만 점유율이 높은 카카오톡의 경우에도 이러한 현상이 발견되기는 한다. 다음은 필자가 실제 사용하는 핸드폰에서 나타나는 카카오톡의 버전 정보를 캡쳐한 사진이다.

 

사진에 나오는 언어는 독일어다.

 

 

왜?? 필자는 독일인도 아닌데, 독일어로 버전 정보가 표시될까? 분명 필자는 한국에서 태어나 외국이라고는 단 2달만 나가본 것이 전부임에도 왜 독일어로 서비스가 제공되는 것일까? 원인은 필자의 스마트폰 언어 설정과 연관이 있다. 현재 필자가 사용하는 스마트폰의 언어 설정이 독일어로 되어 있기 때문에, 해외에서 거의 사용될 일이 없는 카카오톡마저도 필자에게 독일어로 서비스를 제공한다. 이 글을 읽고 계신 분들도, 각자의 핸드폰 언어 설정을 변경한 뒤, 앱의 이곳 저곳을 들어가보자. 대부분 글로벌한 앱(국내에서 주로 사용되는 사x인, 잡x리아 등등은 당연히 이 기능을 지원하지 않는다)들은 언어 설정에 따라 해당 언어로 서비스를 제공할 것이다. 

 

그럼, 어떻게 하면 스마트폰의 언어 설정을 따라 화면에 해당 언어를 출력할 수 있을까? 사실, 매우 간단하다. 언어를 새로 배워야 한다는 점을 제외하면 말이다. 지난 포스팅에서 만든 Hello, World 프로젝트에 이어, 살펴보도록 하자.

 

 

1. String Value 설정 파일 둘러보기

 

지난 포스팅에서 Hello World를 출력하기 위해, "Hello World" 문자열을 리소스화 해주는 작업을 진행했었다. 해당 작업을 통해, 우리의 Android가 해당 문자열을 이상없이 인식하고 화면에 출력하는 것을 확인할 수 있었다.

 

좌측 아래의 컴포넌트 트리 창에, Hello World 문자열에 어떠한 경고 문구도 표시되지 않는다.

 

그럼, 이렇게 리소스화 된 문자열 정보는 어디에 저장되는 것일까? 분명 리소스화된 하나의 Data기 때문에, 프로젝트 폴더 내의 어딘가에 이와 관련된 파일이 존재할 것이다. 

 

좌측 상단의 프로젝트 창에서, Android를 선택하면, 우리가 현재 작업중인 프로젝트와 관련된 파일 및 폴더 구조가 쭈욱 나타난다. 여기서 res 폴더 > layout 폴더는 우리가 만들려는 앱의 디자인을 결정하는 activity_main.xml 파일이 존재하는 폴더라는 것을 지난 포스팅에서 확인했다. res 폴더 밑에는 layout 폴더 외에도 value 폴더가 존재하는 것을 확인할 수 있는데, 이 폴더 내에는 layout 외에도 color와 string과 관련된 정보가 포함되어 있는 파일도 존재한다.

 

 

우리가 리소스화 한 "Hello World"의 정보는 strings.xml 파일에 고스란히 저장되어 있다. 해당 파일을 더블 클릭하여 열어보자. 

 

 

Hello World 문자열 외에도, 우리가 프로젝트 명을 만들 때 사용한 이름도 리소스화되어 있는 것이 보인다. 여기 보이는 코드를 하나씩 분석해보면 다음과 같다.

 

<resources>

<string name="hello_world">Hello World</string>

<resources>

 

1. <resource></resource>

 - 리소스화 할 목록을 담을 구역을 설정한다. 해당 구역 내에 리소스화 할 문자열 정보를 입력한다.

 

2. <string></string>

-  리소스화 할 문자열 정보를 담을 구역을 설정한다. 

 

3. name="문자열 이름"

-  리소스화 할 문자열의 이름을 지정한다. 위의 예시에서는 Hello World 문자열의 이름을 "hello_world"로 지정했다.

 

4. Hello World

-  리소스화 할 문자열의 기본값을 입력한다.

 

 

마우스 클릭으로 진행했던 문자열의 리소스화 과정은 이렇게 xml 언어로 번역되어 string.xml 파일에 저장된다. 그럼, 우리가 진행하려는 언어 번역과 관련된 부분은 어디에 있는 것일까? 

 

string.xml 파일의 우측 상단을 보면 "Open Editor"라는 것이 보인다. 이것을 클릭해보자.

 

 

"Open Editor"를 누르면 다음과 같이 Translations Editor라는 파일이 하나 나타난다. 이 파일에서 Hello World를 핸드폰의 언어 설정에 맞게 변경할 수 있게 된다.

 

 

 

 

 

2. Translations Editor 파일

 

이 파일의 내용을 보면, 우리가 리소스화 한 문자열이 마치 데이터베이스 출력물처럼 하나의 표에 표시된 것을 볼 수 있다. 표의 행은, 우리가 리소스화한 하나 하나의 문자열을 나타내며, 열은 왼쪽부터 "문자열 이름", "문자열이 저장된 파일의 폴더 위치", "체크 박스" 그리고 "문자열 기본값"을 나타낸다. 

 

 

이제 우리가 해야 할 일은, 이 데이터베이스에 "한국어" 열을 추가한 뒤, 해당 열에 맞는 값을 입력해주는 것이다. 즉, 표의 열을 한 개 더 만들고 내용을 채워넣는 작업을 진행해야한다고 생각하면 된다.

 

한국어를 열로 설정하기 위해서는, 좌측의 지구본 표시 모양을 누른 뒤, 태극기가 있는 Korean을 선택해주면 된다. 다음과 같이 열이 한 개 새로 생성된다.

 

 

hello_world 행에서 새로 생긴 열에 아무 내용없는 쉘 하나가 생기는데, 이곳에 한글로 "헬로 월드!!"라고 입력해보자.

 

 

입력 후, Enter를 치면, 프로젝트 창의 values 폴더의 string.xml 밑에 파일 하나가 더 생성되는데, 이 파일은 한국어를 추가함으로써 생성된 파일이다. 이 파일도 string.xml이라는 이름으로 되어 있지만, 내용의 기본값이 Hello World가 아닌 "헬로 월드!!"로 되어 있는 등, 기존의 string.xml 파일 내용과 차이가 있음을 확인할 수 있다.

 

 

 

이제, 여러분의 핸드폰이 한글로 설정되어 있다면, 실행하는 앱의 화면에 "헬로 월드"라는 문구가 출력되게 된다. 스마트폰을 연결하여 Android Studio와 연결한 뒤, 앱을 실행해보자. 다음과 같이 한글 문구가 출력되면 성공이다.

 

 

Translations Editor에 등록한 언어 외의 다른 언어로 스마트폰을 설정하면, 기본값인 Hello World가 출력된다.  다국어 능력자이신 분들은, 새로운 언어를 추가하여 실행해보도록 하자. 

 

 

FIN.

반응형

댓글