From 28ab51c4375e29cf142954d163c5990449146e90 Mon Sep 17 00:00:00 2001 From: Hera Zhao Date: Sun, 12 Apr 2026 13:51:36 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20RecipeIn=E5=8A=A0en=5Fname=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E4=BF=AE=E5=A4=8D=E5=85=B1=E4=BA=AB500=E9=94=99?= =?UTF-8?q?=E8=AF=AF=20+=20=E5=89=8D=E7=AB=AF=E9=85=8D=E6=96=B9=E5=90=8D?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RecipeIn 模型添加 en_name 字段,修复共享配方500错误 - recipeNameEn 使用关键词字典翻译,预览卡片英文名不再显示中文 Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/main.py | 1 + frontend/src/composables/useOilTranslation.js | 54 +++++++++++++++++-- 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/backend/main.py b/backend/main.py index c42e324..b07511b 100644 --- a/backend/main.py +++ b/backend/main.py @@ -99,6 +99,7 @@ class RecipeIn(BaseModel): note: str = "" ingredients: list[IngredientIn] tags: list[str] = [] + en_name: Optional[str] = None class RecipeUpdate(BaseModel): diff --git a/frontend/src/composables/useOilTranslation.js b/frontend/src/composables/useOilTranslation.js index 8a12960..c5697ba 100644 --- a/frontend/src/composables/useOilTranslation.js +++ b/frontend/src/composables/useOilTranslation.js @@ -37,10 +37,58 @@ export function oilEn(name) { return '' } +const RECIPE_KEYWORDS = { + '头疗':'Scalp Therapy','头痛':'Headache','偏头痛':'Migraine','头皮':'Scalp','头发':'Hair', + '肩颈':'Neck & Shoulder','颈椎':'Cervical','肩':'Shoulder','腰椎':'Lumbar','腰':'Lower Back', + '关节':'Joint','膝':'Knee','背':'Back','胸':'Chest','腹部':'Abdominal', + '乳腺':'Breast','子宫':'Uterine','私密':'Intimate','卵巢':'Ovarian', + '淋巴':'Lymph','肝':'Liver','肾':'Kidney','脾':'Spleen','胃':'Stomach','肺':'Lung','肠':'Intestinal', + '酸痛':'Pain Relief','疼痛':'Pain Relief','止痛':'Pain Relief', + '感冒':'Cold','发烧':'Fever','咳嗽':'Cough','咽喉':'Throat', + '过敏':'Allergy','鼻炎':'Rhinitis','哮喘':'Asthma', + '湿疹':'Eczema','痘痘':'Acne','粉刺':'Acne', + '消炎':'Anti-Inflammatory','便秘':'Constipation','消化':'Digestion', + '失眠':'Insomnia','助眠':'Sleep Aid','好眠':'Sleep Well','安眠':'Sleep', + '焦虑':'Anxiety','抑郁':'Depression','情绪':'Emotional', + '压力':'Stress','放松':'Relaxation','舒缓':'Soothing', + '水肿':'Edema','痛经':'Menstrual Pain','月经':'Menstrual','更年期':'Menopause','荷尔蒙':'Hormone', + '结节':'Nodule','囊肿':'Cyst','灰指甲':'Nail Fungus','脚气':'Athlete\'s Foot', + '白发':'Gray Hair','脱发':'Hair Loss','生发':'Hair Growth', + '瘦身':'Slimming','紫外线':'UV','抗衰':'Anti-Aging','美白':'Whitening','补水':'Hydrating', + '排毒':'Detox','净化':'Purifying','驱蚊':'Mosquito Repellent', + '护理':'Care','调理':'Therapy','修复':'Repair','养护':'Nourish', + '按摩':'Massage','刮痧':'Gua Sha','泡脚':'Foot Soak','精油浴':'Oil Bath', + '喷雾':'Spray','扩香':'Diffuser', + '疏通':'Unblock','祛湿':'Dampness Relief','驱寒':'Warming','健脾':'Spleen Wellness', + '美容':'Beauty','面膜':'Face Mask','发膜':'Hair Mask', + '配方':'Blend','方':'Blend','包':'Blend', + '增强版':'Enhanced','高配版':'Premium','男士':'Men\'s','儿童':'Children\'s', + '呼吸系统':'Respiratory System','呼吸':'Respiratory','免疫':'Immunity', + '缓解':'Relief','改善':'Improve','预防':'Prevention', + '带脉':'Belt Meridian','经络':'Meridian','静脉曲张':'Varicose Veins', + '口腔溃疡':'Mouth Ulcer','口唇疱疹':'Cold Sore','蚊虫叮咬':'Insect Bite', + '暖宫':'Uterus Warming','调经':'Menstrual Regulation', +} +const _SORTED = Object.keys(RECIPE_KEYWORDS).sort((a, b) => b.length - a.length) + export function recipeNameEn(name) { - // Try to translate known keywords - // Simple approach: return original name for now, user can customize - return name + if (!name) return name + const parts = [] + let i = 0 + while (i < name.length) { + let matched = false + for (const key of _SORTED) { + if (name.substring(i, i + key.length) === key) { + const en = RECIPE_KEYWORDS[key] + if (!parts.includes(en)) parts.push(en) + i += key.length + matched = true + break + } + } + if (!matched) i++ + } + return parts.length ? parts.join(' ') : name } // Custom translations (can be set by admin)