mirror of
https://github.com/usestrix/strix.git
synced 2026-09-09 22:31:07 +00:00
fix(i18n): resolve config format and argparse language pre-scan
- Fix config file reading to use canonical format {env: {STRIX_LANGUAGE: es}}
- Pre-scan sys.argv for --language/-l before argparse runs
- This allows --help to display translated text when language is set
- Addresses review feedback from greptile-apps[bot]
This commit is contained in:
parent
6bb9dda3ea
commit
b76a5b7b88
2 changed files with 29 additions and 9 deletions
|
|
@ -41,14 +41,17 @@ def _detect_language() -> str:
|
|||
if env_lang:
|
||||
return _normalize_lang(env_lang)
|
||||
|
||||
# 3. Config file
|
||||
# 3. Config file (canonical format: {"env": {"STRIX_LANGUAGE": "es"}})
|
||||
try:
|
||||
config_path = Path.home() / ".strix" / "cli-config.json"
|
||||
if config_path.exists():
|
||||
data = json.loads(config_path.read_text(encoding="utf-8"))
|
||||
config_lang = data.get("language", "").strip().lower()
|
||||
if config_lang:
|
||||
return _normalize_lang(config_lang)
|
||||
if isinstance(data, dict):
|
||||
env_block = data.get("env", {})
|
||||
if isinstance(env_block, dict):
|
||||
config_lang = env_block.get("STRIX_LANGUAGE", "").strip().lower()
|
||||
if config_lang:
|
||||
return _normalize_lang(config_lang)
|
||||
except (json.JSONDecodeError, OSError):
|
||||
pass
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,25 @@ from strix.interface.utils import (
|
|||
)
|
||||
|
||||
|
||||
def _pre_resolve_language() -> None:
|
||||
"""Set language from --language/-l before argparse runs.
|
||||
|
||||
Argparse evaluates help text at parse time, so we must set the language
|
||||
BEFORE parse_args() is called. This pre-scans sys.argv for the flag.
|
||||
"""
|
||||
argv = sys.argv[1:]
|
||||
for i, arg in enumerate(argv):
|
||||
if arg in ("-l", "--language") and i + 1 < len(argv):
|
||||
from strix.i18n import set_language
|
||||
set_language(argv[i + 1])
|
||||
return
|
||||
# Handle --language=es form
|
||||
if arg.startswith("--language="):
|
||||
from strix.i18n import set_language
|
||||
set_language(arg.split("=", 1)[1])
|
||||
return
|
||||
|
||||
|
||||
def get_version() -> str:
|
||||
try:
|
||||
from importlib.metadata import version
|
||||
|
|
@ -50,6 +69,9 @@ def _positive_int(value: str) -> int:
|
|||
|
||||
|
||||
def parse_arguments() -> argparse.Namespace:
|
||||
# Pre-scan for --language before argparse runs so help text can be translated
|
||||
_pre_resolve_language()
|
||||
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Strix Multi-Agent Cybersecurity Penetration Testing Tool",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
|
|
@ -256,11 +278,6 @@ Examples:
|
|||
args.diff_scope = {"active": False}
|
||||
args.run_name = None
|
||||
|
||||
# Set language from CLI flag (highest priority in resolution chain)
|
||||
if args.language:
|
||||
from strix.i18n import set_language
|
||||
set_language(args.language)
|
||||
|
||||
if args.config:
|
||||
apply_config_override(validate_config_file(args.config))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue