feat: enhance load_all_scales function for language support
- Updated load_all_scales to accept an optional language parameter, allowing for the loading of scales based on the specified language. - Modified calls to load_all_scales in various endpoints to pass the user's detected language, ensuring consistent language handling across the application.
This commit is contained in:
parent
27794895c9
commit
e46d17eaf2
29
app.py
29
app.py
@ -95,7 +95,7 @@ for lang in os.listdir("templates"):
|
|||||||
templates[lang] = Jinja2Templates(directory="templates/"+lang)
|
templates[lang] = Jinja2Templates(directory="templates/"+lang)
|
||||||
|
|
||||||
# 加载所有问卷数据
|
# 加载所有问卷数据
|
||||||
def load_all_scales():
|
def load_all_scales(lang: str = None):
|
||||||
scales = {}
|
scales = {}
|
||||||
tags = []
|
tags = []
|
||||||
for root, dirs, files in os.walk(os.path.realpath('scales')):
|
for root, dirs, files in os.walk(os.path.realpath('scales')):
|
||||||
@ -104,22 +104,23 @@ def load_all_scales():
|
|||||||
try:
|
try:
|
||||||
with open(os.path.join(root, filename), 'r', encoding='utf-8') as f:
|
with open(os.path.join(root, filename), 'r', encoding='utf-8') as f:
|
||||||
scale = yaml.safe_load(f)
|
scale = yaml.safe_load(f)
|
||||||
scale['instructions']=markdown.markdown(scale['instructions'], extensions=['fenced_code','tables','mdx_math'])
|
if lang is None or (scale['lang'] and scale['lang'] == lang):
|
||||||
scale['descriptions']=markdown.markdown(scale['descriptions'], extensions=['fenced_code','tables','mdx_math'])
|
scale['instructions']=markdown.markdown(scale['instructions'], extensions=['fenced_code','tables','mdx_math'])
|
||||||
scale['abstract']=markdown.markdown(scale['abstract'], extensions=['fenced_code','tables','mdx_math'])
|
scale['descriptions']=markdown.markdown(scale['descriptions'], extensions=['fenced_code','tables','mdx_math'])
|
||||||
if 'tag' not in scale:
|
scale['abstract']=markdown.markdown(scale['abstract'], extensions=['fenced_code','tables','mdx_math'])
|
||||||
scale['tag']='其他'
|
if 'tag' not in scale:
|
||||||
if scale['tag'] not in tags:
|
scale['tag']='其他'
|
||||||
tags.append(scale['tag'])
|
if scale['tag'] not in tags:
|
||||||
scale_id = os.path.splitext(filename)[0] # 使用文件名作为标识
|
tags.append(scale['tag'])
|
||||||
scales[scale_id] = scale
|
scale_id = os.path.splitext(filename)[0] # 使用文件名作为标识
|
||||||
|
scales[scale_id] = scale
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Error loading scale {filename}: {e}")
|
print(f"Error loading scale {filename}: {e}")
|
||||||
return tags, scales
|
return tags, scales
|
||||||
|
|
||||||
@app.get("/", response_class=HTMLResponse)
|
@app.get("/", response_class=HTMLResponse)
|
||||||
async def index(request: Request):
|
async def index(request: Request):
|
||||||
tags, _ = load_all_scales()
|
tags, _ = load_all_scales(request.state.language)
|
||||||
# 新增读取README.md的逻辑
|
# 新增读取README.md的逻辑
|
||||||
readme_content = ""
|
readme_content = ""
|
||||||
try:
|
try:
|
||||||
@ -135,7 +136,7 @@ async def index(request: Request):
|
|||||||
|
|
||||||
@app.get("/tag/{tag}", response_class=HTMLResponse)
|
@app.get("/tag/{tag}", response_class=HTMLResponse)
|
||||||
async def list(request: Request, tag: str):
|
async def list(request: Request, tag: str):
|
||||||
tags, scales = load_all_scales()
|
tags, scales = load_all_scales(request.state.language)
|
||||||
return templates[request.state.language].TemplateResponse("list.html", {
|
return templates[request.state.language].TemplateResponse("list.html", {
|
||||||
"request": request,
|
"request": request,
|
||||||
"tags": tags,
|
"tags": tags,
|
||||||
@ -145,7 +146,7 @@ async def list(request: Request, tag: str):
|
|||||||
|
|
||||||
@app.get("/scales/{scale_id}", response_class=HTMLResponse)
|
@app.get("/scales/{scale_id}", response_class=HTMLResponse)
|
||||||
async def scale(request: Request, scale_id: str):
|
async def scale(request: Request, scale_id: str):
|
||||||
tags, scales = load_all_scales()
|
tags, scales = load_all_scales(request.state.language)
|
||||||
scale = scales.get(scale_id)
|
scale = scales.get(scale_id)
|
||||||
if scale:
|
if scale:
|
||||||
return templates[request.state.language].TemplateResponse("scale.html", {
|
return templates[request.state.language].TemplateResponse("scale.html", {
|
||||||
@ -159,7 +160,7 @@ async def scale(request: Request, scale_id: str):
|
|||||||
@app.post("/scales/{scale_id}", response_class=HTMLResponse)
|
@app.post("/scales/{scale_id}", response_class=HTMLResponse)
|
||||||
async def result(request: Request, scale_id: str, db: Session = Depends(get_db)):
|
async def result(request: Request, scale_id: str, db: Session = Depends(get_db)):
|
||||||
form_data = await request.form()
|
form_data = await request.form()
|
||||||
tags, scales = load_all_scales()
|
tags, scales = load_all_scales(request.state.language)
|
||||||
scale = scales.get(scale_id)
|
scale = scales.get(scale_id)
|
||||||
if scale:
|
if scale:
|
||||||
responses = {}
|
responses = {}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user