하반기

[Android Studio] 다국어 번역 기능

wonjiwonji 2021. 12. 1. 10:43

지금 사용할 다국어 기능은 휴대폰 혹은 에뮬레이터의 설정을 변경하였을 시 자동으로 언어가 바뀐것을 인식하여 앱의 언어도 변경하여주는 기능이다.

 

app>src>main>res>values 폴더로 이동하여 strings.xml 파일을 열면,

우측 상단에 Open editor 라는 버튼이 나온다.

 

해당 버튼을 누르면 다음과 같은 Translations Editor 가 나온다.

일단 언어를 먼저 추가해주어야한다.

 

좌측 상단 지구 모양 버튼 (Add Locale) 을 클릭하면 언어 추가가 가능하다.

우리는 English(AU)와 Korean을 추가해주었다.

추가를 하면 다음과 같이 우측에 해당 키별 값을 추가 할 수 있도록 생성된다.

 

이제 키 값을 이곳에 등록해 주면 자동으로 strings파일에 생성을 해준다.

좌측 상단 +버튼을 누르면 다음과 같은 화면이 나온다.

key로 사용할 값(띄어쓰기 등 안됨)과 미리 지정한 언어가 아닐 경우의 값(Default Value)값을 넣어주고 OK버튼을 누른다

이후 추가된 키에 대하여 각각의 언어를 입력하면 된다.(이 앱의 경우 영어와 한국어)

 

이렇게 추가한 값은 해당 텍스트에 가서 변경을 진행해야 한다.

xml 파일에 텍스트를 입력시 원래 android:text="텍스트" 형태로 입력되어있는 것을

"텍스트"자리에 "@string/키값" 형태로 변경해 주면 된다.

android:text="@string/EndangeredBotanicalGarden"

 

 

<응용1 - 리스트 뷰 내 다국어 번역 기능>

 

일반 텍스트의 경우 위 예시처럼 "텍스트" 자리에 "@string/키값"의 형태로 변형해주면 되지만,

리스트 뷰의 경우 바로 텍스트 자리에 string 값을 가져오지 못한다.

따라서 아래와 같이 getString(R.string.키값)의 형태로 변형해주어야 한다.

getString(R.string.parkinglot)

 

<응용2 - 다국어 번역에 따른 이미지 변화>

이미지 변화나, 프래그먼트 변화를 시킬때 다국어 번역을 반영해야 하는 경우가 있다.

이때 애뮬레이터나 안드로이드 기기의 언어 설정을 가져오는 방법을 사용하여 변화하도록 하였다.

 

먼저 onCreate 메소드나 필요로 하는 메소드 내에 다음과 같이 선언해준다.

Locale sysLocale = getResources().getConfiguration().locale;
String strLang = sysLocale.getLanguage();

언어 설정 정보를 가져온다는 의미이다.

 

이후 if (strLang == "언어")의 형태로 사용하면 된다.

우리는 영어를 지원하기 때문에 영어를 의미하는 "en"을 언어 자리에 넣어 사용하였다.

if (strLang == "en")