* [changes]add user_summary language unification * [add]Entity extraction, user memory, emotion suggestions, unified language type for writing * [add]Complete the switch between Chinese and English for the emotion labels and emotion suggestions fields. * [changes]add user_summary language unification * [add]Entity extraction, user memory, emotion suggestions, unified language type for writing * [add]Complete the switch between Chinese and English for the emotion labels and emotion suggestions fields. * [changes]Modify the code based on the AI review
83 lines
2.2 KiB
Python
83 lines
2.2 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""语言处理工具模块
|
||
|
||
本模块提供集中化的语言校验和处理功能,确保整个应用中语言参数的一致性。
|
||
|
||
Functions:
|
||
validate_language: 校验语言参数,确保其为有效值
|
||
get_language_from_header: 从请求头获取并校验语言参数
|
||
"""
|
||
|
||
from typing import Optional
|
||
|
||
from app.core.logging_config import get_logger
|
||
|
||
logger = get_logger(__name__)
|
||
|
||
# 支持的语言列表
|
||
SUPPORTED_LANGUAGES = {"zh", "en"}
|
||
|
||
# 默认回退语言
|
||
DEFAULT_LANGUAGE = "zh"
|
||
|
||
|
||
def validate_language(language: Optional[str]) -> str:
|
||
"""
|
||
校验语言参数,确保其为有效值。
|
||
|
||
Args:
|
||
language: 待校验的语言代码,可以是 None、"zh"、"en" 或其他值
|
||
|
||
Returns:
|
||
有效的语言代码("zh" 或 "en")
|
||
|
||
Examples:
|
||
>>> validate_language("zh")
|
||
'zh'
|
||
>>> validate_language("en")
|
||
'en'
|
||
>>> validate_language("EN") # 大小写不敏感
|
||
'en'
|
||
>>> validate_language(None) # None 回退到默认值
|
||
'zh'
|
||
>>> validate_language("fr") # 不支持的语言回退到默认值
|
||
'zh'
|
||
"""
|
||
if language is None:
|
||
return DEFAULT_LANGUAGE
|
||
|
||
# 标准化:转小写并去除空白
|
||
lang = str(language).lower().strip()
|
||
|
||
if lang in SUPPORTED_LANGUAGES:
|
||
return lang
|
||
|
||
logger.warning(
|
||
f"无效的语言参数 '{language}',已回退到默认值 '{DEFAULT_LANGUAGE}'。"
|
||
f"支持的语言: {SUPPORTED_LANGUAGES}"
|
||
)
|
||
return DEFAULT_LANGUAGE
|
||
|
||
|
||
def get_language_from_header(language_type: Optional[str]) -> str:
|
||
"""
|
||
从请求头获取并校验语言参数。
|
||
|
||
这是一个便捷函数,用于在 controller 层统一处理 X-Language-Type Header。
|
||
|
||
Args:
|
||
language_type: 从 X-Language-Type Header 获取的语言值
|
||
|
||
Returns:
|
||
有效的语言代码("zh" 或 "en")
|
||
|
||
Examples:
|
||
>>> get_language_from_header(None) # Header 未传递
|
||
'zh'
|
||
>>> get_language_from_header("en")
|
||
'en'
|
||
>>> get_language_from_header("invalid") # 无效值回退
|
||
'zh'
|
||
"""
|
||
return validate_language(language_type)
|