Skip to content

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