feat(i18n): 实现应用国际化支持,添加中英文翻译

- 为所有UI组件添加国际化支持,替换硬编码文本
- 新增useI18n钩子函数统一管理翻译
- 完善中英文翻译资源,覆盖统计、用药、通知设置等模块
- 优化Tab布局使用翻译键值替代静态文本
- 更新药品管理、个人资料编辑等页面的多语言支持
This commit is contained in:
richarjiang
2025-11-13 11:09:55 +08:00
parent 416d144387
commit 2dca3253e6
21 changed files with 1669 additions and 366 deletions

View File

@@ -2,6 +2,7 @@ import { fetchHRVWithStatus } from '@/utils/health';
import { Image } from 'expo-image';
import { LinearGradient } from 'expo-linear-gradient';
import React, { useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
import { StressAnalysisModal } from './StressAnalysisModal';
@@ -10,6 +11,7 @@ interface StressMeterProps {
}
export function StressMeter({ curDate }: StressMeterProps) {
const { t } = useTranslation();
// 将HRV值转换为压力指数0-100
// HRV值范围30-110ms映射到压力指数100-0
@@ -34,23 +36,23 @@ export function StressMeter({ curDate }: StressMeterProps) {
const getHrvData = async () => {
try {
console.log('StressMeter: 开始获取HRV数据...', curDate);
console.log('StressMeter: Starting to get HRV data...', curDate);
// 使用智能HRV数据获取功能
const result = await fetchHRVWithStatus(curDate);
console.log('StressMeter: HRV数据获取结果:', result);
console.log('StressMeter: HRV data fetch result:', result);
if (result.hrvData) {
setHrvValue(Math.round(result.hrvData.value));
console.log(`StressMeter: 使用${result.message}HRV: ${result.hrvData.value}ms`);
console.log(`StressMeter: Using ${result.message}, HRV value: ${result.hrvData.value}ms`);
} else {
console.log('StressMeter: 未获取到HRV数据');
console.log('StressMeter: No HRV data obtained');
// 可以设置一个默认值或者显示无数据状态
setHrvValue(0);
}
} catch (error) {
console.error('StressMeter: 获取HRV数据失败:', error);
console.error('StressMeter: Failed to get HRV data:', error);
setHrvValue(0);
}
}
@@ -84,7 +86,7 @@ export function StressMeter({ curDate }: StressMeterProps) {
source={require('@/assets/images/icons/icon-pressure.png')}
style={styles.titleIcon}
/>
<Text style={styles.title}></Text>
<Text style={styles.title}>{t('statistics.components.stress.title')}</Text>
</View>
{/* {updateTime && (
<Text style={styles.headerUpdateTime}>{formatUpdateTime(updateTime)}</Text>
@@ -94,7 +96,7 @@ export function StressMeter({ curDate }: StressMeterProps) {
{/* 数值显示区域 */}
<View style={styles.valueSection}>
<Text style={styles.value}>{hrvValue || '--'}</Text>
<Text>ms</Text>
<Text>{t('statistics.components.stress.unit')}</Text>
</View>
{/* 进度条区域 */}