Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions agent/i18n.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
3. ``display.language`` from config.yaml
4. ``"en"`` (baseline)

Supported languages: en, zh, ja, de, es. Unknown values fall back to en.
Supported languages: en, zh, ja, de, es, it. Unknown values fall back to en.
"""

from __future__ import annotations
Expand All @@ -39,7 +39,7 @@

logger = logging.getLogger(__name__)

SUPPORTED_LANGUAGES: tuple[str, ...] = ("en", "zh", "ja", "de", "es")
SUPPORTED_LANGUAGES: tuple[str, ...] = ("en", "zh", "ja", "de", "es", "it")
DEFAULT_LANGUAGE = "en"

# Accept a few natural aliases so users who type "chinese" / "zh-CN" / "jp"
Expand All @@ -50,6 +50,7 @@
"japanese": "ja", "jp": "ja", "ja-jp": "ja",
"german": "de", "deutsch": "de", "de-de": "de",
"spanish": "es", "español": "es", "espanol": "es", "es-es": "es", "es-mx": "es",
"italian": "it", "italiano": "it", "it-it": "it",
}

_catalog_cache: dict[str, dict[str, str]] = {}
Expand Down
2 changes: 1 addition & 1 deletion hermes_cli/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -784,7 +784,7 @@ def _ensure_hermes_home_managed(home: Path):
# UI language for static user-facing messages (approval prompts, a
# handful of gateway slash-command replies). Does NOT affect agent
# responses, log lines, tool outputs, or slash-command descriptions.
# Supported: en, zh, ja, de, es. Unknown values fall back to en.
# Supported: en, zh, ja, de, es, it. Unknown values fall back to en.
"language": "en",
# TUI busy indicator style: kaomoji (default), emoji, unicode (braille
# spinner), or ascii. Live-swappable via `/indicator <style>`.
Expand Down
2 changes: 1 addition & 1 deletion locales/en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#
# Keys are dotted paths; nesting below is purely for readability. Values may
# contain {placeholder} tokens for str.format substitution. When adding a
# new key, add it to EVERY locale file (en/zh/ja/de/es) in the same commit --
# new key, add it to EVERY locale file (en/zh/ja/de/es/it) in the same commit --
# tests/agent/test_i18n.py asserts catalog parity.

approval:
Expand Down
24 changes: 24 additions & 0 deletions locales/it.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Catalogo dei messaggi statici di Hermes -- Italiano
# See locales/en.yaml for the source of truth; keep keys in sync.

approval:
dangerous_header: "⚠️ COMANDO PERICOLOSO: {description}"
choose_long: " [o]una volta | [s]sessione | [a]sempre | [d]nega"
choose_short: " [o]una volta | [s]sessione | [d]nega"
prompt_long: " Scelta [o/s/a/D]: "
prompt_short: " Scelta [o/s/D]: "
timeout: " ⏱ Timeout - comando negato"
allowed_once: " ✓ Consentito una volta"
allowed_session: " ✓ Consentito per questa sessione"
allowed_always: " ✓ Aggiunto alla allowlist permanente"
denied: " ✗ Negato"
cancelled: " ✗ Annullato"
blocklist_message: "Questo comando è nella blocklist incondizionata e non può essere approvato."

gateway:
approval_expired: "⚠️ Approvazione scaduta (l'agente non è più in attesa). Chiedi all'agente di riprovare."
draining: "⏳ Attendo il completamento di {count} agente/i attivo/i prima del riavvio..."
goal_cleared: "✓ Obiettivo cancellato."
no_active_goal: "Nessun obiettivo attivo."
config_read_failed: "⚠️ Impossibile leggere config.yaml: {error}"
config_save_failed: "⚠️ Impossibile salvare la configurazione: {error}"
1 change: 1 addition & 0 deletions scripts/release.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,7 @@
"daixin1204@gmail.com": "SimbaKingjoe",
"maxence@groine.fr": "MaxyMoos",
"61830395+leprincep35700@users.noreply.github.com": "leprincep35700",
"leprincep35700@users.noreply.github.com": "leprincep35700",
# OpenViking viking_read salvage (April 2026)
"hitesh@gmail.com": "htsh",
"pty819@outlook.com": "pty819",
Expand Down
2 changes: 2 additions & 0 deletions tests/agent/test_i18n.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ def test_normalize_lang_accepts_aliases():
assert i18n._normalize_lang("zh-CN") == "zh"
assert i18n._normalize_lang("Deutsch") == "de"
assert i18n._normalize_lang("español") == "es"
assert i18n._normalize_lang("italiano") == "it"
assert i18n._normalize_lang("it-IT") == "it"
assert i18n._normalize_lang("jp") == "ja"


Expand Down
Loading