안드로이드 앱 개발에서 문자열 리소스를 사용하는 것은 매우 중요합니다.
이 글에서는 문자열 리소스를 사용하는 이유와 방법, 그리고 네임 규칙에 대해 알아보겠습니다.

문자열 리소스를 사용하는 이유

다국어 지원

앱을 여러 언어로 제공하려면 각 언어에 맞는 문자열 리소스를 쉽게 추가하고 관리할 수 있습니다.
(기본 언어의 문자열은 res/values/strings.xml 파일에 정의하고, 다른 언어에 대해서는 res/values-<language>/strings.xml 파일을 생성하여 해당 언어에 맞는 문자열을 추가할 수 있습니다)

유지보수 용이성

문자열을 코드에서 직접 하드코딩하는 대신 리소스 파일에 정의하면 나중에 변경할 때 한 곳에서 수정하면 되므로 유지보수가 쉽습니다.
(다국어 관련 담당자가 따로 있을 경우에도 앱의 다양한 화면을 찾아 다니지 않더라도 한 곳에서 쉽게 처리할 수 있습니다)

가독성 향상

코드에서 직접 문자열을 사용하는 것보다 의미 있는 이름으로 리소스를 정의하면 코드가 더 읽기 쉬워집니다.

문자열 리소스 정의 및 사용 방법

문자열 리소스 정의

res/values/strings.xml 파일에 문자열을 다음과 같이 정의합니다.

<resources>
    <string name="button_label">Click Me!</string>
    <string name="welcome_message">Welcome to the app!</string>
</resources>

여기서 name 속성은 다른곳에서 흔히 사용하던 id처럼 리소스의 고유 이름이 됩니다.

문자열 리소스 사용

XML 레이아웃 파일에서 버튼과 같은 위젯에 문자열 리소스를 사용하려면 @string/ 형식을 사용합니다.

<Button
    android:id="@+id/my_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_label" />

XML 디자인 메뉴에서 등록시:

Java/Kotlin 코드에서 문자열 리소스를 가져오려면 다음과 같이 합니다.

val buttonText = getString(R.string.button_label)

네임 규칙

소문자 및 언더스코어 사용

  • 소문자: 문자열 리소스 이름은 소문자로 작성합니다.
  • 언더스코어: 단어 구분을 위해 언더스코어(_)를 사용합니다. 예: btn_submit_label.

접두사 사용

문자열의 용도에 따라 접두사를 사용하여 그룹화합니다. 예:

  • btn_ (버튼 관련): btn_submit_label, btn_cancel_label
  • tv_ (텍스트뷰 관련): tv_error_message, tv_title

의미 있는 이름 (다국어 지원을 고려한 네이밍)

  • 문자열의 목적이나 내용을 명확하게 나타내는 이름을 사용합니다. 예: welcome_message, error_network.
  • 다국어 지원을 염두에 두고 문자열을 정의하여 각 언어에 맞는 리소스를 쉽게 추가할 수 있도록 합니다.