# Localization

Language, region, timezone, and model reply-language settings via nikcli locale. Source: packages/nikcli/src/cli/cmd/locale.ts.

## Overview

The `locale` command controls the language and regional settings used by nikcli and, optionally, the language in which the underlying model replies. Settings are stored in the global nikcli config by default (`--global` is `true`). Pass `--global false` to write to the project-level `nikcli.json` instead.

When no overrides are set, nikcli auto-detects locale from the environment (`LANG`, `LC_ALL`, system timezone, etc.). Auto-detection can be disabled permanently with `--no-auto-detect` in a `set` call, or overridden for a single invocation with the environment variables described below.

Terminal

bash 

```
nikcli locale           # show resolved locale (same as "locale show")
      nikcli locale show      # print current language, region, timezone, currency, reply language
      nikcli locale set ...   # apply one or more overrides
      nikcli locale reset     # clear all overrides and return to auto-detect
```

$ shell · paste into your terminal

## Actions

| Action | Description |
| --- | --- |
| `show` (default) | Print the fully resolved locale fields: locale tag, language name, region, timezone, currency, reply language, and source (`auto-detect`, `config`, or `override`). |
| `set` | Apply one or more locale overrides. Any flags that are not supplied are left unchanged. |
| `reset` | Delete all stored locale overrides and revert to auto-detection from the environment. |

## Flags

All flags apply to the `set` action. Unrecognised values are stored as-is and resolved at runtime.

| Flag | Format | Description |
| --- | --- | --- |
| `--language` | BCP-47 language subtag (e.g. `it`, `ja`, `ar`) | Sets the primary language for display and model interaction. |
| `--region` | ISO-3166 country code (e.g. `IT`, `JP`, `US`) | Sets the regional variant used for formatting numbers, dates, and currency. |
| `--locale` | BCP-47 full tag (e.g. `it-IT`, `ja-JP`) | Sets both language and region in a single value. Overrides `--language` and `--region` when all three are supplied. |
| `--timezone` | IANA timezone (e.g. `Europe/Rome`, `Asia/Tokyo`, `America/New_York`) | Sets the timezone used in timestamps and date formatting. |
| `--currency` | ISO-4217 code (e.g. `EUR`, `JPY`, `USD`) | Sets the currency used in cost and usage displays. |
| `--reply-language` | `true` | `false` | BCP-47 tag (e.g. `fr`, `de`) | Steers the model's answer language independently of the CLI display language. See [Reply Language](#reply-language) below. |
| `--no-auto-detect` | boolean | Disables automatic locale detection from the environment. Only the stored config values are used. |
| `--global` | boolean (default `true`) | Write to the global config file. Pass `--global false` to write to the project-level `nikcli.json` instead. |

## Reply Language

`--reply-language` controls the language in which the underlying model responds. This is independent of the CLI display language — for example you can display the UI in English while asking the model to answer in French.

| Value | Behaviour |
| --- | --- |
| `true` / `on` / `yes` | The model replies in the same language as the configured `--language`. |
| `false` / `off` / `no` | Reply-language steering is disabled; the model answers in its default language (usually English). |
| A BCP-47 tag (e.g. `fr`, `de`, `zh-TW`) | The model is steered to respond in the specified language, regardless of the CLI display language. |

Terminal

bash 

```
# CLI stays in English but model answers in French
      nikcli locale set --reply-language fr

      # Match reply language to the current --language setting
      nikcli locale set --language ja --reply-language true

      # Disable reply-language steering entirely
      nikcli locale set --reply-language false
```

$ shell · paste into your terminal

Model support

Reply-language steering is a best-effort instruction injected into the system prompt. Model compliance varies by provider and model capability.

## Environment Variable Overrides

Three environment variables override the stored config for a single invocation. They take effect even if auto-detection is disabled. The resolved locale source shows `override` when any of these is set.

| Variable | Description |
| --- | --- |
| `NIKCLI_LOCALE` | Full BCP-47 locale tag, e.g. `it-IT`. Overrides both language and region. |
| `NIKCLI_LANGUAGE` | Language subtag only, e.g. `ja`. |
| `NIKCLI_REGION` | ISO-3166 country code only, e.g. `DE`. |

Terminal

bash 

```
# One-off run in Italian, regardless of stored config
      NIKCLI_LOCALE=it-IT nikcli run "spiega questo codice"

      # Override just the language
      NIKCLI_LANGUAGE=de nikcli run "erkläre diesen Code"
```

$ shell · paste into your terminal

## Examples

Terminal

bash 

```
# Show the current resolved locale
      nikcli locale

      # Set Italian locale with Rome timezone and Euro currency
      nikcli locale set --language it --region IT --timezone Europe/Rome --currency EUR

      # Use the combined BCP-47 tag instead
      nikcli locale set --locale it-IT --timezone Europe/Rome --currency EUR

      # Ask the model to always reply in Japanese (CLI remains in English)
      nikcli locale set --reply-language ja

      # Set a project-level override (does not touch global config)
      nikcli locale set --language fr --global false

      # Disable auto-detection globally
      nikcli locale set --no-auto-detect

      # Reset all overrides and return to auto-detect
      nikcli locale reset
```

$ shell · paste into your terminal

---

Source: https://nikcli-ai.dev/docs/localization
