// Oil English names map const OIL_EN = { '薰衣草': 'Lavender', '茶树': 'Tea Tree', '乳香': 'Frankincense', '柠檬': 'Lemon', '椒样薄荷': 'Peppermint', '丝柏': 'Cypress', '尤加利': 'Eucalyptus', '迷迭香': 'Rosemary', '天竺葵': 'Geranium', '依兰依兰': 'Ylang Ylang', '佛手柑': 'Bergamot', '生姜': 'Ginger', '没药': 'Myrrh', '檀香': 'Sandalwood', '雪松': 'Cedarwood', '罗马洋甘菊': 'Roman Chamomile', '永久花': 'Helichrysum', '快乐鼠尾草': 'Clary Sage', '广藿香': 'Patchouli', '百里香': 'Thyme', '牛至': 'Oregano', '冬青': 'Wintergreen', '肉桂': 'Cinnamon', '丁香': 'Clove', '黑胡椒': 'Black Pepper', '葡萄柚': 'Grapefruit', '橙花': 'Neroli', '玫瑰': 'Rose', '岩兰草': 'Vetiver', '马郁兰': 'Marjoram', '芫荽': 'Coriander', '柠檬草': 'Lemongrass', '杜松浆果': 'Juniper Berry', '甜橙': 'Wild Orange', '香茅': 'Citronella', '薄荷': 'Peppermint', '扁柏': 'Arborvitae', '古巴香脂': 'Copaiba', '椰子油': 'Coconut Oil', '芳香调理': 'AromaTouch', '保卫复方': 'On Guard', '保卫': 'On Guard', '乐活复方': 'Balance', '乐活': 'DigestZen', '舒缓复方': 'Past Tense', '舒缓': 'Deep Blue', '净化复方': 'Purify', '净化清新': 'Purify', '呼吸复方': 'Breathe', '顺畅呼吸': 'Breathe', '舒压复方': 'Adaptiv', '安定情绪': 'Balance', '安宁神气': 'Serenity', '多特瑞': 'doTERRA', '野橘': 'Wild Orange', '柑橘清新': 'Citrus Bliss', '新瑞活力': 'MetaPWR', '元气': 'Zendocrine', '温柔呵护': 'ClaryCalm', '西洋蓍草': 'Yarrow|Pom', '西班牙牛至': 'Oregano', } export function oilEn(name) { if (OIL_EN[name]) return OIL_EN[name] // Try without common suffixes const base = name.replace(/复方$|呵护$/, '') if (base !== name && OIL_EN[base]) return OIL_EN[base] // Try adding suffixes if (OIL_EN[name + '复方']) return OIL_EN[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) { 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) const customTranslations = {} export function setCustomTranslation(zhName, enName) { customTranslations[zhName] = enName } export function getCustomTranslation(zhName) { return customTranslations[zhName] }