[Android] strings.xml을 활용해 다국어 지원하기

코코아의 앱 개발일지·2025년 4월 27일
0

Android-Kotlin

목록 보기
37/39
post-thumbnail

안드로이드 개발을 하다보면 strings.xml에 앱에서 사용하는 텍스트를 넣고 쓰곤 합니다.
strings.xml 사용 이유로는 문자열 관리와, 다국어를 번역을 간편하게 할 수 있다는 점이 있습니다.

저는 그간 안드로이드 개발을 하면서 이 strings.xml을 포함해 리소스 파일을 많이 활용했는데요,

제가 리소스 관련해 작성한 포스트를 몇 개 첨부해 봅니다.

  1. [Android/Kotlin] strings.xml 문자열 리소스 제대로 활용하기 (feat. 데이터바인딩)
  2. [Android/Kotlin] 리소스(color, string, drawable) 배열 사용
  3. [Android/Kotlin] 안드로이드 스튜디오에서 JDBC를 이용해 MySQL 연동하기 (2/3) - 폴더 구조화편

'이렇게 활용하는 방법이 있구나' 정도로 참고해 주시면 좋을 것 같습니다.

✔️ 기본 사용법

아무튼, 위의 포스트들을 작성하면서 '문자열 관리' 측면에서는 그간 strings.xml 사용의 필요성을 잘 느껴왔습니다.
당장 xml에서 문자열을 text에 그대로 때려박으면 경고를 뱉기도 하구요..

이렇게 하드코딩이라며 씅을 낸답니다~

저기서 Extract string resource를 누르면

기존에 입력한 하드코딩 텍스트를 무슨 이름으로 리소스 지정을 할 건지, Resource name을 입력하라고 나옵니다.
Source set, File name은 디폴트로 res 폴더의 strings.xml로 지정되어 있습니다.
문자열을 다른 곳에서 관리하고 싶다면 저 부분을 자유롭게 변경해주시면 됩니다.

Resource name에 'schedule_new'를 입력하고, 추가를 해보겠습니다.

TextView를 보면 '새 일정'이던 text 속성값에 새로이 추가한 리소스명이 자동으로@string/{리소스명} 형태로 들어가고,

아까 Extract Resource에서 File name으로 지정했던, strings.xml에 아래 코드가 추가됩니다.

그럼 앞으로는 이 strings.xml에 앱 내에서 사용하는 문자열을 저장해놓고, 리소스명으로 접근해서 간편히 사용할 수 있는 것이죠!

티빙 클론 코딩을 진행하면서 strings.xml에 추가한 리소스인데요, 실제 서비스를 만드려면 이것보다도 훨씬 많은 리소스를 필요로 하게 될 겁니다.

화면 여러 곳에서 한 곳에 사용하는 문자열의 경우 이런 식으로 문자열 리소스로 관리하면 편합니다. 문자열이 화면이 아니라 리소스 파일에 속한다는 점도 관리 측면에서 이점이 있을 수 있겠죠.

그런데, 여기서만 끝나면 좀 아쉽겠죠?
문자열 리소스를 활용해 다국어 지원을 어떻게 손 쉽게 할 수 있는지!
바로 이어서 알아가 보겠습니다.

🇰🇷 다국어 지원하기

앞선 이 부분들을 한 번 한국어를 지원하도록 해볼게요!

상단에 수상쩍은 Edit 뭐시기 배너에 Open editor 버튼을 눌러줍니다.

그럼 이런 화면이 뜨게 될 거예요!

상단에 지구본 모양 아이콘을 클릭해 지원을 원하는 국가의 언어를 찾아 클릭합니다.

이전과는 달리 저장한 문자열 표에서 Default Value 옆에 앞서 선택한 언어가 추가된 걸 볼 수 있습니다.

strings.xml도 (ko-rKR) 번역본으로 하나 더 만들어졌네요~

이제 tab_뭐시기 친구들에 한국어 번역본을 제공해보겠습니다.

Translation Editor에서 한국어.ver 텍스트를 적어줍니다.

기존 strings.xml에서는 달라진 게 없고, 'strings.xml (ko-rKR)'에서 아래 내용이 추가된 걸 볼 수 있어요.

하지만, 번역을 지원하고 싶지 않은 경우도 있겠죠?

한 예로 앱 이름을 들어볼게요!
예를 들어 앱 이름 자체가 영어라면 굳이 번역을 지원할 필요가 없을 거 같아요.

그럴 경우에는 Untranslatable를 체크 표시 해주면 됩니다!

이렇게 해주면 'strings.xml (ko-rKR)'에 따로 번역본 문자열을 추가할 필요가 없고, 아래 이미지처럼 기본 strings.xml에 translatable="false" 속성이 추가돼요. 문자열 추가 시에 strings.xml에 바로 translatable="false" 속성을 작성해주시는 것도 물론 가능합니다.

📱 테스트

'설정 > 일반 > 언어 및 입력 방식 > 언어'로 들어가게 되면 언어를 변경할 수 있는데요,

구현한 화면을 한국어, 영어로 설정했을 때 각각 화면입니다.

한국어 설정 영어 설정

설정 언어에 따라 텍스트가 잘 바뀌어 보이는 걸 확인할 수 있었습니다.

profile
안드로이드 개발자를 꿈꾸는 학생입니다

0개의 댓글