XX-net/XX-Net · warning
get lang except:%r
Error message
get lang except:%r
What it means
While detecting the OS UI language in _get_os_language(), an unexpected exception occurred while reading locale info (e.g. from locale.getdefaultlocale() or Windows API calls); the code logs it and falls back to zh_CN (Chinese).
Source
Thrown at code/default/launcher/config.py:135
pass
elif sys_platform.platform == "android":
try:
res = request("GET", "http://localhost:8084/env/")
dat = json.loads(res.text)
lang_code = dat["lang_code"]
xlog.debug("lang_code:%s", lang_code)
if 'zh' in lang_code:
return 'zh_CN'
elif 'en' in lang_code:
return 'en_US'
elif 'fa' in lang_code:
return 'fa_IR'
elif 'ru' in lang_code:
return 'ru_RU'
else:
return None
except Exception as e:
xlog.warn("get lang except:%r", e)
return "zh_CN"
elif sys_platform.platform == "ios":
lang_code = os.environ["IOS_LANG"]
if 'zh' in lang_code:
return 'zh_CN'
elif 'en' in lang_code:
return 'en_US'
elif 'fa' in lang_code:
return 'fa_IR'
elif 'ru' in lang_code:
return 'ru_RU'
else:
return None
else:
try:
lang_code, code_page = locale.getdefaultlocale()
# ('en_GB', 'cp1252'), en_US,
return lang_codeView on GitHub (pinned to cfa5bc17b6)
Solutions
- Set a valid locale explicitly: export LANG=en_US.UTF-8 and LC_ALL=en_US.UTF-8
- Ensure locale data is installed in minimal environments (locale-gen / locales package)
- Pass the desired language via the app's config so detection is bypassed
- If zh_CN fallback surprises you, set the language setting in the launcher config
Example fix
// before
lang_code = locale.getdefaultlocale()[0] or ''
// after
try:
lang_code = locale.getdefaultlocale()[0] or os.environ.get('LANG', 'en_US')
except Exception:
lang_code = os.environ.get('LANG', 'en_US') Defensive patterns
Strategy: fallback
Validate before calling
import os
lang = os.environ.get('LANG', '') or os.environ.get('LC_ALL', '')
if not lang or lang in ('C', 'POSIX'):
# set a sane default before language detection runs Try / catch
try:
lang = get_language()
except Exception:
lang = 'en_US' # explicit app-level fallback Prevention
- Set LANG/LC_ALL explicitly in service/container environments
- Allow overriding language via config instead of relying on OS detection
- Install locale data in minimal images
When it happens
Trigger: Calling get_language() on a platform whose locale detection path raises — malformed locale environment (LC_ALL/LANG unset or garbage), missing locale module data, or Windows MUI API returning unexpected values.
Common situations: Containers/servers with no locale set (LANG=C or POSIX), minimal Docker images without locale data, or older Windows versions with unusual language codes.
Related errors
AI-assisted analysis of XX-net/XX-Net@cfa5bc17b6 (2026-08-27).
Data as JSON: /api/errors/29b19a4dbe87a00c.
Report an issue: GitHub.