반응형

 여러분의 앱 코드에서 UI 문자열들을 추출하고 외부파일에 그 것들을 보관하는 것은 언제나 좋은 습관입니다. 안드로이드는 각각의 안드로이드 프로젝트안에 리소스(Resources) 디렉토리를 가지게 하여 이 것을 쉽게 만듭니다.


 만약 여러분인 Android SDK Tools을 사용하여 프로젝트를 만들었다면( 이전 포스트인 "안드로이드 프로젝트 만들기" 참고) 이 툴은 프로젝트의 top level에 res/ 디렉토리를 만들어 냅니다. 이 res/ 디렉토리 안에는 다양한 리소스 타입의 서브 디렉토리들이 있습니다. 또한 여러분의 문자열 값을 가지고 있는 res/values/strings.xml 같이 기본적인 파일들이 몇개 있습니다.




나라별(지역 Locale) 디렉토리들과 문자열 파일들 만들기

------------------------------------------------

 더 많은 언어를 지원하기 위해, res/ 안에 디렉토리의 이름 끝에 hyphen(-)기호와 함께 ISO 언어코드(ISO Language code)를 포함한 values 디렉토리를 추가하세요. 예를 들어, values-es 는 언어코드 "es"(스페인)를 부여한 지역에 대한 간단한 리소스들을 포함한 디렉토리입니다. Android 는 실행할 때 디바이스의 지역설정에 따라 적절한 리소스를 읽어들입니다. 좀더 자세한 정보는 개발자 사이트의"Providing Alternative Resources" 를 보시기 바랍니다. 여러분이 지원할 언어을 결정했다면, 리소스 서브디렉토리와 문자열 리소스 파일들을 만들 수 있습니다. 예:


MyProject/

    res/

       values/

           strings.xml

       values-es/

           strings.xml

       values-fr/

 

           strings.xml


해당 파일에 각 지역에 적절한 문자열 값을 추가하세요.


실행할 때, 안드로이드 시스템은 여러분의 디바이스에 현재 설정된 지역을 기반으로 적절한 문자열 리소스를 사용합니다.


예를 위해, 아래는 다른 언어에 대한 몇 가지 다른 문자열 리소스들을 보여드립니다.


English(default locale), /values/strings.xml

 <?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="title">My Application</string>

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

</resources>


Spanish, /values-es/strings.xml

 <?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="title">Mi Aplicacion</string>

    <string name="hello_world">Hola Mundo!</string>

</resources>


French, /values-fr/strings.xml

 <?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="title">Mon Application</string>

    <string name="hello_world">Bonjour le monde !</string>

</resources>




문자열(String) 리소스들 사용하기

-------------------------------

 여러분은 소스코드와 다른 XML 파일들에서 <string> 요소의 name 속성에 정의된 리소스이름을 사용하여 문자열 리소스를 참조할 수 있습니다.



 여러분의 소스코드에서, 여러분은 R.string.<string_name> 문법을 통해 문자열 리소스를 참조할 수 있습니다. 아래 방법처럼 문자열 리소스에 접근할 수 있는 다양한 방법이 있습니다.

예:

 // Get a string resource from your app's Resources

String hello = getResources().getString(R.string.hello_world);


// Or supply a string resource to a method that requires a string

TextView textView = new TextView(this);

textView.setText(R.string.hello_world);




 다른 XML 파일에서, 여러분은 @string/<string_name> 문법을 통해 문자열 리소스를 참조할 수 있습니다. XML속성은 언제든 문자열 값에 접근합니다.

예:

 <TextView

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="@string/hello_world" />


반응형

+ Recent posts