[typescript] 열거형(Enum)을 활용한 유저 인터페이스(UI) 로컬라이제이션(Localization)

유저 인터페이스 (UI) 로컬라이제이션은 어플리케이션의 다국어 지원을 위한 중요한 요소 중 하나입니다. 타입스크립트의 열거형을 활용하면 UI 요소의 다국어 지원을 간단하게 구현할 수 있습니다.

열거형(Enum) 소개

열거형은 특정 값의 집합에 이름을 부여할 수 있는 타입으로, 관련 있는 값들을 모아서 사용할 때 유용합니다.

예를 들어, 다국어 지원을 위해 UI에서 사용되는 메시지들을 열거형으로 정의할 수 있습니다.

enum Message {
  GREETING = 'Hello',
  WARNING = 'Warning',
  ERROR = 'Error'
}

UI 메시지 로컬라이제이션 구현

다국어 지원을 위해 UI 메시지를 열거형으로 정의한 후, 각 언어에 맞는 메시지를 객체로 정의할 수 있습니다.

interface LocalizedMessages {
  [key: string]: {
    [key: string]: string
  }
}

const messages: LocalizedMessages = {
  en: {
    [Message.GREETING]: 'Hello',
    [Message.WARNING]: 'Warning',
    [Message.ERROR]: 'Error'
  },
  ko: {
    [Message.GREETING]: '안녕하세요',
    [Message.WARNING]: '주의',
    [Message.ERROR]: '에러'
  }
}

위 예제에서 en은 영어, ko는 한국어를 나타내며, 각 언어에 맞는 UI 메시지를 정의하는 것을 볼 수 있습니다.

다국어 지원을 위한 유틸리티 함수

마지막으로, getMessage와 같은 유틸리티 함수를 작성하여 현재 언어에 맞는 UI 메시지를 동적으로 가져올 수 있습니다.

function getMessage(lang: string, message: Message): string {
  return messages[lang][message];
}

// Usage
const lang = 'en';
console.log(getMessage(lang, Message.GREETING)); // Output: Hello

결론

타입스크립트의 열거형을 활용하면 UI 로컬라이제이션을 간편하게 구현할 수 있습니다. 열거형으로 UI 메시지를 정의하고, 각 언어에 따른 메시지를 객체로 정의하여 언어에 맞는 UI 메시지를 동적으로 가져올 수 있습니다.

이를 통해 다국어 지원 기능을 가진 어플리케이션을 쉽게 개발할 수 있으며, 사용자 경험을 향상시킬 수 있습니다.

참고 자료