- Introduced new translation files for medication, personal, and weight management in Chinese. - Updated the main index file to include the new translation modules. - Enhanced the medication type definitions to include 'ointment'. - Refactored workout type labels to utilize i18n for better localization support. - Improved sleep quality descriptions and recommendations with i18n integration.
551 lines
14 KiB
TypeScript
551 lines
14 KiB
TypeScript
export const nutritionRecords = {
|
||
title: '营养记录',
|
||
listTitle: '今日餐食',
|
||
recordCount: '{{count}} 条记录',
|
||
empty: {
|
||
title: '今天还没有记录',
|
||
action: '记一笔',
|
||
},
|
||
footer: {
|
||
end: '- 已经到底啦 -',
|
||
loadMore: '加载更多',
|
||
},
|
||
delete: {
|
||
title: '确认删除',
|
||
message: '确定要删除这条营养记录吗?此操作无法撤销。',
|
||
cancel: '取消',
|
||
confirm: '删除',
|
||
},
|
||
mealTypes: {
|
||
breakfast: '早餐',
|
||
lunch: '午餐',
|
||
dinner: '晚餐',
|
||
snack: '加餐',
|
||
other: '其他',
|
||
},
|
||
nutrients: {
|
||
protein: '蛋白质',
|
||
fat: '脂肪',
|
||
carbs: '碳水',
|
||
unit: 'g',
|
||
caloriesUnit: '千卡',
|
||
},
|
||
overlay: {
|
||
title: '记录方式',
|
||
scan: 'AI识别',
|
||
foodLibrary: '食物库',
|
||
voiceRecord: '一句话记录',
|
||
},
|
||
chart: {
|
||
remaining: '还能吃',
|
||
formula: '还能吃 = 代谢 + 运动 - 饮食',
|
||
metabolism: '代谢',
|
||
exercise: '运动',
|
||
diet: '饮食',
|
||
},
|
||
};
|
||
|
||
export const foodCamera = {
|
||
title: '食物拍摄',
|
||
hint: '确保食物在取景框内',
|
||
permission: {
|
||
title: '需要相机权限',
|
||
description: '为了拍摄食物并进行AI识别,需要访问您的相机',
|
||
button: '授权访问',
|
||
},
|
||
guide: {
|
||
title: '拍摄示例',
|
||
description: '请上传或拍摄清晰的食物照片,有助于提高识别准确率',
|
||
button: '知道了',
|
||
good: '光线充足,主体清晰',
|
||
bad: '模糊不清,光线昏暗',
|
||
},
|
||
buttons: {
|
||
album: '相册',
|
||
capture: '拍照',
|
||
help: '帮助',
|
||
},
|
||
alerts: {
|
||
captureFailed: {
|
||
title: '拍照失败',
|
||
message: '请重试',
|
||
},
|
||
pickFailed: {
|
||
title: '选择失败',
|
||
message: '请重试',
|
||
},
|
||
},
|
||
};
|
||
|
||
export const foodRecognition = {
|
||
title: '食物识别',
|
||
header: {
|
||
confirm: '确认食物',
|
||
recognizing: 'AI 识别中',
|
||
},
|
||
errors: {
|
||
noImage: '未找到图片',
|
||
generic: '食物识别失败,请重试',
|
||
unknown: '未知错误',
|
||
noFoodDetected: '识别失败:未检测到食物',
|
||
processError: '识别过程出错',
|
||
},
|
||
logs: {
|
||
uploading: '📤 正在上传图片到云端...',
|
||
uploadSuccess: '✅ 图片上传完成',
|
||
analyzing: '🤖 AI大模型分析中...',
|
||
analysisSuccess: '✅ AI分析完成',
|
||
confidence: '🎯 识别置信度: {{value}}%',
|
||
itemsFound: '🍽️ 识别到 {{count}} 种食物',
|
||
failed: '❌ 识别失败:未检测到食物',
|
||
error: '❌ 识别过程出错',
|
||
},
|
||
status: {
|
||
idle: {
|
||
title: '准备就绪',
|
||
subtitle: '请稍候...',
|
||
},
|
||
uploading: {
|
||
title: '上传图片',
|
||
subtitle: '正在上传图片到云端服务器...',
|
||
},
|
||
recognizing: {
|
||
title: 'AI 分析中',
|
||
subtitle: '智能模型正在分析食物成分...',
|
||
},
|
||
completed: {
|
||
title: '识别成功',
|
||
subtitle: '即将跳转到分析结果页面',
|
||
},
|
||
failed: {
|
||
title: '识别失败',
|
||
subtitle: '请检查网络或稍后重试',
|
||
},
|
||
processing: {
|
||
title: '处理中...',
|
||
subtitle: '请稍候...',
|
||
},
|
||
},
|
||
mealTypes: {
|
||
breakfast: '早餐',
|
||
lunch: '午餐',
|
||
dinner: '晚餐',
|
||
snack: '加餐',
|
||
unknown: '未知',
|
||
},
|
||
info: {
|
||
title: '智能食物识别',
|
||
description: 'AI 将分析照片,自动识别食物种类并估算营养成分,生成详细报告。',
|
||
},
|
||
actions: {
|
||
start: '开始识别',
|
||
retry: '返回重试',
|
||
logs: '处理日志',
|
||
logsPlaceholder: '准备开始...',
|
||
},
|
||
alerts: {
|
||
recognizing: {
|
||
title: '正在识别中',
|
||
message: '识别过程尚未完成,确定要返回吗?',
|
||
continue: '继续识别',
|
||
back: '返回',
|
||
},
|
||
},
|
||
};
|
||
|
||
export const foodAnalysisResult = {
|
||
title: '分析结果',
|
||
error: {
|
||
notFound: '未找到图片或识别结果',
|
||
},
|
||
placeholder: '营养记录',
|
||
nutrients: {
|
||
caloriesUnit: '千卡',
|
||
protein: '蛋白质',
|
||
fat: '脂肪',
|
||
carbs: '碳水',
|
||
unit: '克',
|
||
},
|
||
sections: {
|
||
recognitionResult: '识别结果',
|
||
foodIntake: '食物摄入',
|
||
},
|
||
nonFood: {
|
||
title: '未识别到食物',
|
||
suggestions: {
|
||
title: '建议:',
|
||
item1: '• 确保图片中包含食物',
|
||
item2: '• 尝试更清晰的照片角度',
|
||
item3: '• 避免过度模糊或光线不足',
|
||
},
|
||
},
|
||
actions: {
|
||
retake: '重新拍照',
|
||
record: '记录',
|
||
close: '关闭',
|
||
},
|
||
mealSelector: {
|
||
title: '选择餐次',
|
||
},
|
||
editModal: {
|
||
title: '编辑食物信息',
|
||
fields: {
|
||
name: '食物名称',
|
||
namePlaceholder: '输入食物名称',
|
||
amount: '重量 (克)',
|
||
amountPlaceholder: '输入重量',
|
||
calories: '卡路里 (千卡)',
|
||
caloriesPlaceholder: '输入卡路里',
|
||
},
|
||
actions: {
|
||
cancel: '取消',
|
||
save: '保存',
|
||
},
|
||
},
|
||
confidence: '置信度: {{value}}%',
|
||
dateFormats: {
|
||
today: 'YYYY年M月D日',
|
||
full: 'YYYY年M月D日 HH:mm',
|
||
},
|
||
};
|
||
|
||
export const foodLibrary = {
|
||
title: '食物库',
|
||
custom: '自定义',
|
||
search: {
|
||
placeholder: '搜索食物...',
|
||
loading: '搜索中...',
|
||
empty: '未找到相关食物',
|
||
noData: '暂无食物数据',
|
||
},
|
||
loading: '加载食物库中...',
|
||
retry: '重试',
|
||
mealTypes: {
|
||
breakfast: '早餐',
|
||
lunch: '午餐',
|
||
dinner: '晚餐',
|
||
snack: '加餐',
|
||
},
|
||
actions: {
|
||
record: '记录',
|
||
selectMeal: '选择餐次',
|
||
},
|
||
alerts: {
|
||
deleteFailed: {
|
||
title: '删除失败',
|
||
message: '删除食物时发生错误,请稍后重试',
|
||
},
|
||
createFailed: {
|
||
title: '创建失败',
|
||
message: '创建自定义食物时发生错误,请稍后重试',
|
||
},
|
||
},
|
||
};
|
||
|
||
export const createCustomFood = {
|
||
title: '创建自定义食物',
|
||
save: '保存',
|
||
preview: {
|
||
title: '效果预览',
|
||
defaultName: '食物名称',
|
||
},
|
||
basicInfo: {
|
||
title: '基本信息',
|
||
name: '食物名称',
|
||
namePlaceholder: '例如,汉堡',
|
||
defaultAmount: '默认数量',
|
||
calories: '食物热量',
|
||
},
|
||
optionalInfo: {
|
||
title: '可选信息',
|
||
photo: '照片',
|
||
addPhoto: '添加照片',
|
||
protein: '蛋白质',
|
||
fat: '脂肪',
|
||
carbohydrate: '碳水化合物',
|
||
},
|
||
units: {
|
||
kcal: '千卡',
|
||
g: 'g',
|
||
gram: '克',
|
||
},
|
||
alerts: {
|
||
permissionDenied: {
|
||
title: '权限不足',
|
||
message: '需要相册权限以选择照片',
|
||
},
|
||
uploadFailed: {
|
||
title: '上传失败',
|
||
message: '照片上传失败,请重试',
|
||
},
|
||
error: {
|
||
title: '发生错误',
|
||
message: '选择照片失败,请重试',
|
||
},
|
||
validation: {
|
||
title: '提示',
|
||
nameRequired: '请输入食物名称',
|
||
caloriesRequired: '请输入有效的热量值',
|
||
},
|
||
},
|
||
};
|
||
|
||
export const voiceRecord = {
|
||
title: '一句话记录',
|
||
intro: {
|
||
description: '通过语音描述您的饮食内容,AI将智能分析营养成分和卡路里',
|
||
},
|
||
status: {
|
||
idle: '轻触麦克风开始录音',
|
||
listening: '正在聆听中,请开始说话...',
|
||
processing: 'AI正在处理语音内容...',
|
||
analyzing: 'AI大模型深度分析营养成分中...',
|
||
result: '语音识别完成,请确认结果',
|
||
},
|
||
hints: {
|
||
listening: '说出您想记录的食物内容',
|
||
},
|
||
examples: {
|
||
title: '记录示例:',
|
||
items: [
|
||
'今早吃了两个煎蛋、一片全麦面包和一杯牛奶',
|
||
'午饭吃了红烧肉约150克、米饭一小碗、青菜一份',
|
||
'晚饭吃了蒸蛋羹、紫菜蛋花汤、小米粥一碗',
|
||
],
|
||
},
|
||
analysis: {
|
||
progress: '分析进度: {{progress}}%',
|
||
hint: 'AI正在深度分析您的食物描述...',
|
||
},
|
||
result: {
|
||
label: '识别结果:',
|
||
},
|
||
actions: {
|
||
retry: '重新录音',
|
||
confirm: '确认使用',
|
||
},
|
||
alerts: {
|
||
noVoiceInput: '没有检测到语音输入,请重试',
|
||
networkError: '网络连接异常,请检查网络后重试',
|
||
voiceError: '语音识别出现问题,请重试',
|
||
noValidContent: '未识别到有效内容,请重新录音',
|
||
pleaseRecordFirst: '请先进行语音识别',
|
||
recordingFailed: '录音失败',
|
||
recordingPermissionError: '无法启动语音识别,请检查麦克风权限设置',
|
||
analysisFailed: '分析失败',
|
||
},
|
||
};
|
||
|
||
export const nutritionLabelAnalysis = {
|
||
title: '成分表分析',
|
||
camera: {
|
||
permissionDenied: '权限不足',
|
||
permissionMessage: '需要相机权限才能拍摄成分表',
|
||
},
|
||
actions: {
|
||
takePhoto: '拍摄',
|
||
selectFromAlbum: '相册',
|
||
startAnalysis: '开始分析',
|
||
close: '关闭',
|
||
},
|
||
placeholder: {
|
||
text: '拍摄或选择成分表照片',
|
||
},
|
||
status: {
|
||
uploading: '正在上传图片...',
|
||
analyzing: '正在分析成分表...',
|
||
},
|
||
errors: {
|
||
analysisFailed: {
|
||
title: '分析失败',
|
||
message: '分析图片时发生错误,请重试',
|
||
defaultMessage: '分析服务暂时不可用',
|
||
},
|
||
cannotRecognize: '无法识别成分表,请尝试拍摄更清晰的照片',
|
||
cameraPermissionDenied: '需要相机权限才能拍摄成分表',
|
||
},
|
||
results: {
|
||
title: '营养成分详细分析',
|
||
detailedAnalysis: '营养成分详细分析',
|
||
},
|
||
imageViewer: {
|
||
close: '关闭',
|
||
dateFormat: 'YYYY年M月D日 HH:mm',
|
||
},
|
||
};
|
||
|
||
export const nutritionAnalysisHistory = {
|
||
title: '历史记录',
|
||
dateFormat: 'YYYY年M月D日 HH:mm',
|
||
recognized: '识别 {{count}} 项营养素',
|
||
loadingMore: '加载更多...',
|
||
loading: '加载历史记录...',
|
||
filter: {
|
||
all: '全部',
|
||
},
|
||
filters: {
|
||
all: '全部',
|
||
success: '成功',
|
||
failed: '失败',
|
||
},
|
||
status: {
|
||
success: '成功',
|
||
failed: '失败',
|
||
processing: '处理中',
|
||
unknown: '未知',
|
||
},
|
||
nutrients: {
|
||
energy: '热量',
|
||
protein: '蛋白质',
|
||
carbs: '碳水',
|
||
fat: '脂肪',
|
||
},
|
||
delete: {
|
||
confirmTitle: '确认删除',
|
||
confirmMessage: '确定要删除这条记录吗?',
|
||
cancel: '取消',
|
||
delete: '删除',
|
||
successTitle: '删除成功',
|
||
successMessage: '记录已成功删除',
|
||
},
|
||
actions: {
|
||
expand: '展开详情',
|
||
collapse: '收起详情',
|
||
expandDetails: '展开详情',
|
||
collapseDetails: '收起详情',
|
||
confirmDelete: '确认删除',
|
||
delete: '删除',
|
||
cancel: '取消',
|
||
retry: '重试',
|
||
},
|
||
empty: {
|
||
title: '暂无历史记录',
|
||
subtitle: '开始识别营养成分表吧',
|
||
},
|
||
errors: {
|
||
error: '错误',
|
||
loadFailed: '加载失败',
|
||
unknownError: '未知错误',
|
||
fetchFailed: '获取历史记录失败',
|
||
fetchFailedRetry: '获取历史记录失败,请重试',
|
||
deleteFailed: '删除失败,请稍后重试',
|
||
},
|
||
loadingState: {
|
||
records: '加载历史记录...',
|
||
more: '加载更多...',
|
||
},
|
||
details: {
|
||
title: '详细营养成分',
|
||
nutritionDetails: '详细营养成分',
|
||
aiModel: 'AI 模型',
|
||
provider: '服务提供商',
|
||
serviceProvider: '服务提供商',
|
||
},
|
||
records: {
|
||
nutritionCount: '识别 {{count}} 项营养素',
|
||
},
|
||
imageViewer: {
|
||
close: '关闭',
|
||
},
|
||
};
|
||
|
||
export const waterDetail = {
|
||
title: '饮水详情',
|
||
waterRecord: '饮水记录',
|
||
today: '今日',
|
||
total: '总计:',
|
||
goal: '目标:',
|
||
noRecords: '暂无饮水记录',
|
||
noRecordsSubtitle: '点击"添加记录"开始记录饮水量',
|
||
deleteConfirm: {
|
||
title: '确认删除',
|
||
message: '确定要删除这条饮水记录吗?此操作无法撤销。',
|
||
cancel: '取消',
|
||
confirm: '删除',
|
||
},
|
||
deleteButton: '删除',
|
||
water: '水',
|
||
loadingUserPreferences: '加载用户偏好设置失败',
|
||
};
|
||
|
||
export const waterSettings = {
|
||
title: '饮水设置',
|
||
sections: {
|
||
dailyGoal: '每日饮水目标',
|
||
quickAdd: '快速添加默认值',
|
||
reminder: '喝水提醒',
|
||
},
|
||
descriptions: {
|
||
quickAdd: '设置点击"+"按钮时添加的默认饮水量',
|
||
reminder: '设置定时提醒您补充水分',
|
||
},
|
||
labels: {
|
||
ml: 'ml',
|
||
disabled: '已关闭',
|
||
},
|
||
alerts: {
|
||
goalSuccess: {
|
||
title: '设置成功',
|
||
message: '每日饮水目标已设置为 {{amount}}ml',
|
||
},
|
||
quickAddSuccess: {
|
||
title: '设置成功',
|
||
message: '快速添加默认值已设置为 {{amount}}ml',
|
||
},
|
||
quickAddFailed: {
|
||
title: '设置失败',
|
||
message: '无法保存快速添加默认值,请重试',
|
||
},
|
||
},
|
||
buttons: {
|
||
cancel: '取消',
|
||
confirm: '确定',
|
||
},
|
||
status: {
|
||
reminderEnabled: '{{startTime}}-{{endTime}}, 每{{interval}}分钟',
|
||
},
|
||
};
|
||
|
||
export const waterReminderSettings = {
|
||
title: '喝水提醒',
|
||
sections: {
|
||
notifications: '推送提醒',
|
||
timeRange: '提醒时间段',
|
||
interval: '提醒间隔',
|
||
},
|
||
descriptions: {
|
||
notifications: '开启后将在指定时间段内定期推送喝水提醒',
|
||
timeRange: '只在指定时间段内发送提醒,避免打扰您的休息',
|
||
interval: '选择提醒的频率,建议30-120分钟为宜',
|
||
},
|
||
labels: {
|
||
startTime: '开始时间',
|
||
endTime: '结束时间',
|
||
interval: '提醒间隔',
|
||
saveSettings: '保存设置',
|
||
hours: '小时',
|
||
timeRangePreview: '时间段预览',
|
||
minutes: '分钟',
|
||
},
|
||
alerts: {
|
||
timeValidation: {
|
||
title: '时间设置提示',
|
||
startTimeInvalid: '开始时间不能晚于或等于结束时间,请重新选择',
|
||
endTimeInvalid: '结束时间不能早于或等于开始时间,请重新选择',
|
||
},
|
||
success: {
|
||
enabled: '设置成功',
|
||
enabledMessage: '喝水提醒已开启\n\n时间段:{{timeRange}}\n提醒间隔:{{interval}}\n\n我们将在指定时间段内定期提醒您喝水',
|
||
disabled: '设置成功',
|
||
disabledMessage: '喝水提醒已关闭',
|
||
},
|
||
error: {
|
||
title: '保存失败',
|
||
message: '无法保存喝水提醒设置,请重试',
|
||
},
|
||
},
|
||
buttons: {
|
||
confirm: '确定',
|
||
cancel: '取消',
|
||
},
|
||
}; |