Skip to content

Internationalization (i18n)

Since 1.6.0

Types for internationalization and localization.

Overview

Internationalization Types provides types for building multilingual applications including locale management, translations, message formatting, and regional settings. It supports plural rules, date/time formatting, number formatting, and RTL support.

This module enables building type-safe i18n systems with proper constraints for locales, translations, and formatting options.

Basic Usage

typescript
import type { Locale, Translation, TranslationKey, Currency, TimeZone, DateFormat } from 'uni-types'

// Locale configuration
type AppLocale = Locale<{
  code: 'en-US'
  language: 'en'
  country: 'US'
}>

// Translation mapping
type AppTranslation = Translation<{
  welcome: TranslationValue
  greeting: TranslationValue
}>

// Currency formatting
type PriceFormat = Currency<{
  code: 'USD'
  symbol: '$'
}>

Key Types

LocaleCode

Locale code types.

typescript
type LocaleCode = 'en-US' | 'en-GB' | 'zh-CN' | 'zh-TW' | 'ja-JP' | 'ko-KR' | 'de-DE' | 'fr-FR' | 'es-ES' | 'pt-BR' | 'ru-RU' | 'ar-SA' | 'hi-IN' | string

LanguageCode

Language code types.

typescript
type LanguageCode = 'en' | 'zh' | 'ja' | 'ko' | 'de' | 'fr' | 'es' | 'pt' | 'ru' | 'ar' | 'hi' | 'it' | 'nl' | 'pl' | 'tr' | string

CountryCode

Country code types.

typescript
type CountryCode = 'US' | 'GB' | 'CN' | 'TW' | 'JP' | 'KR' | 'DE' | 'FR' | 'ES' | 'BR' | 'RU' | 'SA' | 'IN' | string

Locale

Locale configuration type.

typescript
type Locale<T = unknown> = {
  code: LocaleCode
  language: LanguageCode
  country?: CountryCode
  direction: Direction
  config: T
}

Direction

Text direction types.

typescript
type Direction = 'ltr' | 'rtl'

Translation

Translation mapping type.

typescript
type Translation<T = unknown> = {
  locale: LocaleCode
  messages: TranslationMap<T>
}

PluralForm

Plural form types.

typescript
type PluralForm = 'zero' | 'one' | 'two' | 'few' | 'many' | 'other'

Currency

Currency types.

typescript
type Currency = 'USD' | 'EUR' | 'GBP' | 'CNY' | 'JPY' | 'KRW' | 'INR' | 'AUD' | 'CAD' | 'CHF' | string

TimeZone

Time zone types.

typescript
type TimeZone = 'UTC' | 'America/New_York' | 'Europe/London' | 'Asia/Shanghai' | 'Asia/Tokyo' | string

DateFormat

Date format configuration.

typescript
type DateFormat = {
  format: string
  locale: LocaleCode
  timeZone?: TimeZone
}

NumberFormat

Number format configuration.

typescript
type NumberFormat = {
  style: 'decimal' | 'currency' | 'percent'
  locale: LocaleCode
  currency?: Currency
}

Released under the MIT License.