Runtime Error Message i18n
Runtime Error Message i18n¶
pyrs-yaml supports runtime internationalization of error messages. Error messages can be displayed in English, Chinese (zh-CN), Japanese (ja-JP), and Korean (ko-KR).
For site-wide documentation i18n (MkDocs), see Site-wide i18n.
Available Functions¶
set_language()¶
Set the language for error messages.
Signature
set_language(lang: str) -> None
Supported languages: "en", "zh-CN", "ja-JP", "ko-KR"
get_language()¶
Get the current error message language.
Signature
get_language() -> str
list_languages()¶
List all supported languages.
Signature
list_languages() -> list[str]
detect_language()¶
Auto-detect the user's preferred language from environment variables.
Signature
detect_language() -> str
Checks LANG, LC_MESSAGES, and LC_ALL environment variables (in that order).
negotiate_language()¶
BCP 47 language negotiation — returns the best match from supported languages.
Signature
negotiate_language(user_locales: list[str], default: str = "en") -> str
Example¶
Switch error message language
import pyrs_yaml
# Switch to Chinese error messages
pyrs_yaml.set_language("zh-CN")
try:
pyrs_yaml.parse("invalid: yaml: [")
except pyrs_yaml.YamlParseError as e:
print(e)
# "YAML 解析错误: 第 1 行, 第 14 列: ..."
# Auto-detect from LANG env var
lang = pyrs_yaml.detect_language()
print(lang) # e.g. "zh-CN" if LANG=zh_CN.UTF-8
# BCP 47 negotiation
best = pyrs_yaml.negotiate_language(["zh-Hans", "en"])
print(best) # "zh-CN"
Supported Languages¶
| Code | Language | Example |
|---|---|---|
en |
English | "YAML parse error: line 1, column 14: ..." |
zh-CN |
Chinese (Simplified) | "YAML 解析错误: 第 1 行, 第 14 列: ..." |
ja-JP |
Japanese | "YAML 解析エラー: 1 行目, 14 列目: ..." |
ko-KR |
Korean | "YAML 구문 분석 오류: 1번째 줄, 14번째 열: ..." |
Error Types with i18n¶
All public error types support i18n:
-
YamlParseError— parse failures -
YamlSerializeError— serialization failures -
YamlTypeError— type conversion errors -
YamlValidateError— JSON Schema validation errors -
YamlEditError— edit failures -
YamlPathError— malformed edit path errors -
YamlDuplicateKeyError— duplicate key detection -
YamlMaxDepthError— nesting depth exceeded
Best Practices¶
Configure i18n once at startup
import os
import pyrs_yaml
def setup_i18n():
"""Configure i18n from environment or user preference."""
lang = pyrs_yaml.detect_language()
pyrs_yaml.set_language(lang)
return lang
See Also¶
- Site-wide i18n — Documentation site localization
- i18n API Reference — Language detection and negotiation functions