ResourceBundle — 로케일별 리소스 번들

ResourceBundle — 로케일별 리소스 번들

ResourceBundle에는 로케일별 객체가 포함돼요. 프로그램이 로케일별 리소스(예: 문자열)가 필요하면 현재 사용자의 로케일에 적합한 리소스 번들에서 로드할 수 있어요. 이렇게 하면 로케일별 정보를 리소스 번들에 격리시켜 코드를 사용자 로케일과 크게 독립적으로 작성할 수 있어요. 이를 통해 프로그램을 쉽게 현지화·번역하고, 여러 로케일을 동시에 처리하며, 나중에 더 많은 로케일을 쉽게 지원하도록 수정할 수 있어요.

출처: Java API Reference

본문

public abstract class ResourceBundle extends Object

리소스 번들은 공통 기본 이름(base name)을 공유하는 구성원들로 이루어진 패밀리에 속해요. 예를 들어 기본 이름이 "MyResources"인 패밀리는 기본 구성원 "MyResources"(특정 로케일이 지원되지 않을 때 최후의 번들)와 독일어 구성원 "MyResources_de"를 가질 수 있어요. 두 구성원은 같은 항목들을 담지만 각 로케일에 맞게 번역됐어요. 예를 들어 취소 버튼 문자열이 "MyResources"에서는 "Cancel", "MyResources_de"에서는 "Abbrechen"일 수 있어요. 국가별 차이는 "MyResources_de_CH"처럼 전문화된 구성원으로 만들 수 있어요.

프로그램이 로케일별 객체가 필요하면 getBundle 메서드로 번들을 로드해요.

ResourceBundle myResources = ResourceBundle.getBundle("MyResources", currentLocale);

필드와 생성자

  • protected ResourceBundle parent — 이 번들의 부모 번들로, 이 번들에 특정 리소스가 없으면 getObject가 검색해요.
  • ResourceBundle() — 유일한 생성자예요(서브클래스 생성자에서 호출).

조회 메서드

  • getObject(String key) — 이 번들이나 부모에서 키에 해당하는 객체를 가져와요. 못 찾으면 MissingResourceException을 던져요.
  • getString(String key) — 문자열을 반환해요((String) getObject(key)와 동등).
  • getStringArray(String key) — 문자열 배열을 반환해요.
  • getLocale() — 이 번들의 로케일을 반환해요.
  • getBaseBundleName() — 이 번들의 기본 이름을 반환하고, 알 수 없으면 null을 반환해요.
  • containsKey(String) / keySet() — 이 번들이나 부모에 키가 있는지/모든 키를 반환해요.
  • handleKeySet() — 이 번들에만 있는 키 집합을 반환해요.

로드 팩토리

getBundle 오버로드가 여러 가지 있어요. 기본 이름, 로케일, 모듈, 클래스 로더, ResourceBundle.Control을 조합해 번들을 가져와요.

  • getBundle(String baseName), getBundle(String baseName, Locale), getBundle(String, Module), getBundle(String, Locale, Module) — 기본 로케일/지정 로케일을 사용해요.
  • getBundle(String, Locale, ClassLoader) / getBundle(String, Locale, ClassLoader, Control) — 클래스 로더와 컨트롤을 지정해요.
  • getBundle(String, Locale, Control)Control로 위치·인스턴스화 방식을 지정해요.
  • clearCache() / clearCache(ClassLoader) — 캐시에서 번들을 제거해요.

서브클래스가 구현할 메서드

  • handleGetObject(String key) — 이 번들에서 키에 해당하는 객체를 반환하고, 없으면 null을 반환해요(추상).
  • getKeys() — 키들의 Enumeration을 반환해요(추상).

기타

setParent(ResourceBundle) — 이 번들의 부모 번들을 설정해요.

더 알아보기 (Learn more)