[3] 여러 기기 지원하기 [1] 여러 언어 지원하기

THIS CLASS TEACHES YOU TO

  1. Create Locale Directories and String Files
  2. Use the String Resources

YOU SHOULD ALSO READ

Localization Checklist
Localization with Resources

 

It’s always a good practice to extract UI strings from your app code and keep them in an external file. Android makes this easy with a resources directory in each Android project.

앱 코드로부터 UI스트링을 추출하고 그것들을 다른 파일에서 보관하는 것은 방법은 언제나 추천할 만 합니다. 안드로이드는 이 것을 각각의 안드로이드 프로젝트에서 리소스 디렉토리를 만듦으로써 쉽게 만듭니다.

If you created your project using the Android SDK Tools (readCreating an Android Project), the tools create a res/ directory in the top level of the project. Within this res/ directory are subdirectories for various resource types. There are also a few default files such as res/values/strings.xml, which holds your string values.

만약 안드로이드 SDK 툴을 이용해서 프로젝트를 생성했다면(readCreating an Android Project), SDK 툴은 res/  디렉토리를 프로젝트의 최상단 위치에 생성합니다. res/ 디렉토리 내에는 여러 리소스타입을 위해 하위디렉토리들이 있습니다.  그리고 또한 몇 개의 기본적인 파일이 있는데요, res/values/string.xml 같이 문자열들을 담고 있는 파일처럼 리소스를 따로 관리하는 파일이 있습니다.

로케일 디렉토리 및 문자열 파일 생성하기 – Create Locale Directories and String Files


To add support for more languages, create additional valuesdirectories inside res/ that include a hyphen and the ISO language code at the end of the directory name. For example, values-es/ is the directory containing simple resourcess for the Locales with the language code “es”. Android loads the appropriate resources according to the locale settings of the device at run time. For more information, see Providing Alternative Resources.

좀 더 다양한 언어를 지원하기 위해, 디렉토리 이름 끝에  하이픈과 ISO 언어 코드를 포함한  res/ 안에 부가적인 values 디렉토리를 생성합니다.  예를들어 values-es/ 는 언어 코드 “es”를 사용하는 Locale의 간단한 리소스를  담고있습니다. 안드로이드는 런타임에(앱이 실제로 구동될 때) 디바이스의 로케일 셋팅에 따라서 적절한 리소스를 불러옵니다. 더 자세한 정보는 see Providing Alternative Resources.

Once you’ve decided on the languages you will support, create the resource subdirectories and string resource files. For example:

어떤 한 언어를 지원하기로 했다면, 그에 해당하는 리소스 서브디렉토리와 리소스 파일들을 생성하세요.

MyProject/
    res/
       values/
           strings.xml
       values-es/
           strings.xml
       values-fr/
           strings.xml

Add the string values for each locale into the appropriate file.

로케일에 맞는 스트링 값을 적절한 파일에 추가합니다.

At runtime, the Android system uses the appropriate set of string resources based on the locale currently set for the user’s device.

런타임때, 안드로이드 시스템은 적절한 스트링 리소스의 세트를 사용합니다. 이 것은 현재 안드로이드 디바이스에서 세팅된 로케일에 맞춰집니다.

For example, the following are some different string resource files for different languages.

예를 들어, 다음은 각각의 언어에 따른 각각의 스트링 리소스 파일입니다.

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 Aplicación</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>

Note: You can use the locale qualifier (or any configuration qualifer) on any resource type, such as if you want to provide localized versions of your bitmap drawable. For more information, see Localization.

주의 : (누가 해석좀 해주세요. 저는 note 가 제일 어려워요..;;)

스트링 리소스를 사용하기 – Use the String Resources


You can reference your string resources in your source code and other XML files using the resource name defined by the <string> element’s name attribute.

우리는 스트링 리소스들을 참조할 수 있습니다. 참조하는 위치는 소스코드와 또다른 XML 파일들인데요, XML파일은 소스 코드 내<string> 엘리먼트의 name 속성으로 정의된 리소스 네임을 이용한 파일입니다.

In your source code, you can refer to a string resource with the syntax R.string.<string_name>. There are a variety of methods that accept a string resource this way.

소스코드에서, 스트링 리소스를 R.string.<string_name> 문법을 통해 참조할 수 있습니다. 스트링 리소스를 받아들이는 여러 방법들이 있습니다.

For example:

// 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);

In other XML files, you can refer to a string resource with the syntax @string/<string_name> whenever the XML attribute accepts a string value.

다른 XMl 파일에서는, 스트링 리소스를 참조할 수 있습니다. @string/<string_name> 문법을 사용해서 참조합니다.

For example:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중