Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

README.md

Inquirer Logo

@inquirer/i18n

npm

Internationalized Inquirer prompts — a 100% drop-in replacement for @inquirer/prompts with built-in localization.

Installation

npm yarn pnpm bun
npm install @inquirer/i18n
yarn add @inquirer/i18n
pnpm add @inquirer/i18n
bun add @inquirer/i18n

Usage

Auto-detected locale

The root import reads LANGUAGE, LC_ALL, LC_MESSAGES, and LANG environment variables (in that order) and falls back to the Intl API for Windows compatibility. If no supported locale is detected, English is used.

import { input, select, confirm } from '@inquirer/i18n';

Fixed locale

Pin to a specific language by using a sub-path import:

import { input, select, confirm } from '@inquirer/i18n/fr'; // French
import { input, select, confirm } from '@inquirer/i18n/zh'; // Chinese (Simplified)

Supported locales

Sub-path Language
@inquirer/i18n (auto) Auto-detected
@inquirer/i18n/en English (re-export of @inquirer/prompts)
@inquirer/i18n/fr French
@inquirer/i18n/es Spanish
@inquirer/i18n/zh Chinese (Simplified)
@inquirer/i18n/pt Portuguese

Adding a custom locale

Use createLocalizedPrompts to build a locale, then either export it directly or register it for auto-detection via registerLocale:

import { createLocalizedPrompts, registerLocale } from '@inquirer/i18n';
import type { Locale } from '@inquirer/i18n';

const deLocale: Locale = {
  confirm: { yesLabel: 'Ja', noLabel: 'Nein', hintYes: 'J/n', hintNo: 'j/N' },
  select: { helpNavigate: 'Navigieren', helpSelect: 'Auswählen' },
  checkbox: {
    helpNavigate: 'Navigieren',
    helpSelect: 'Auswählen',
    helpSubmit: 'Bestätigen',
    helpAll: 'Alle',
    helpInvert: 'Umkehren',
  },
  search: { helpNavigate: 'Navigieren', helpSelect: 'Auswählen' },
  editor: {
    loadingMessage: () => 'Überprüfung...',
    waitingMessage: (enterKey) => `Drücken Sie ${enterKey}, um Ihren Editor zu öffnen.`,
  },
  password: { maskedText: '[Eingabe verborgen]' },
};

// Option A — use directly
export const { input, select, confirm } = createLocalizedPrompts(deLocale);

// Option B — register so `@inquirer/i18n` auto-detects it when LANG=de
registerLocale('de', createLocalizedPrompts(deLocale));

registerLocale must be called before any prompt is invoked. After registration, import { confirm } from '@inquirer/i18n' will pick the German locale automatically whenever LANG (or the other sources) resolve to de.

License

Copyright (c) 2025 Simon Boudrias (twitter: @vaxilart)
Licensed under the MIT license.