Language Mapping

Language Mapping

ISO 639 language code mapping toolkit, which can easily help you manage language data.

Usage

With npm(or yarn, or pnpm):

npm install @iso-639/data @iso-639/mapping

Yes, it is recommended to also install the @iso-639/data ISO 639 data package, which contains the code data for multi-language versions of ISO 639-1 and ISO 639-2. Of course, you can also obtain this data by requesting a CDN, see the instructions of @iso-639/data (opens in a new tab) for details.

In .js / .ts or other files:

// ISO 639-1 is stored in the `1` directory
import ISO_639_1_EN from '@iso-639/data/1/en.json'
 
// ISO 639-2 is stored in the `2` directory
import ISO_639_2_EN from '@iso-639/data/2/en.json'
 
// Exported a class
import { LanguageMapping } from '@iso-639/mapping'
 
const en1 = new LanguageMapping({
  data: ISO_639_1_EN,
  displayName: 'ISO_639_1_EN', // Optional
  debug: true, // Optional
})
 
const en2 = new LanguageMapping({
  data: ISO_639_2_EN,
  displayName: 'ISO_639_2_EN', // Optional
  debug: true, // Optional
})

Type declarations

Core class type:

declare class LanguageMapping {
  private data
  private displayName
  private debug
  constructor({ data, displayName, debug }: LanguageMappingOptions)
  isValidCode(code: string): boolean
  getName(code: string, codingStyle?: CodingStyle): string
  getCode(name: string): string
  getLanguages(): LanguageItem[]
}

Other auxiliary types:

type LanguageData = Record<string, string>
 
interface LanguageMappingOptions {
  /**
   * Language code JSON data from `@iso-639/data` .
   *
   * @see https://github.com/ISO-639/language-code/tree/main/packages/data
   */
  data: LanguageData
  /**
   * The displayName string is used in debugging messages.
   * Usually, you don’t need to set it explicitly
   * because it has default value named `LanguageMapping`.
   * You might want to set it explicitly if you want to
   * display a different name for debugging purposes.
   *
   * @default ''
   */
  displayName?: string
  /**
   * When an error occurs in the program,
   * an error log will be output on the console.
   *
   * @default false
   */
  debug?: boolean
}
 
interface LanguageItem {
  code: string
  name: string
}
 
type CodingStyle = 'camelCase' | 'capitalize' | 'kebabCase' | 'pascalCase'

Release Notes

Please refer to CHANGELOG (opens in a new tab) for details.