You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.5 KiB

import 'package:get/get.dart';
import 'package:flutter/material.dart';
import '../../../../routes/app_routes.dart';
/// 翻译中间层控制器
/// 负责管理翻译功能入口的导航和状态
class TranslationMiddlewareController extends GetxController {
/// 翻译功能选项列表
final List<TranslationOption> translationOptions = [
TranslationOption(
translationId: 'simultaneous',
title: 'simultaneousTranslation', // 实时翻译
description: 'realtimeTranslationDescription', // 实时语音翻译,支持多种语言
icon: Icons.record_voice_over,
iconColor: 0xFF2196F3, // 蓝色
targetRoute: Routes.translation,
),
TranslationOption(
translationId: 'call',
title: 'callTranslation', // 电话翻译
description: 'simultaneousTranslationInfo', // 双向对话翻译,面对面交流
icon: Icons.call,
iconColor: 0xFF4CAF50, // 绿色
targetRoute: Routes.translation,
),
TranslationOption(
translationId: 'faceToFace',
title: 'faceToFaceTranslation', // 面对面翻译
description: 'faceToFaceTranslationDescription', // 面对面交流,支持多种语言
icon: Icons.people,
iconColor: 0xFFFF9800, // 橙色
targetRoute: Routes.translation,
),
TranslationOption(
translationId: 'audioVideo',
title: 'audioVideoTranslation', // 音频视频翻译
description: 'audioVideoTranslationDescription', // 支持音频和视频翻译
icon: Icons.videocam,
iconColor: 0xFF9C27B0, // 紫色
targetRoute: Routes.translation,
),
];
/// 导航到指定的翻译功能
void navigateToTranslationFeature(TranslationOption option) {
Get.toNamed(option.targetRoute,
arguments: {'translationId': option.translationId});
}
/// 获取翻译选项的本地化标题
String getLocalizedTitle(TranslationOption option) {
return option.title.tr;
}
/// 获取翻译选项的本地化描述
String getLocalizedDescription(TranslationOption option) {
return option.description.tr;
}
}
/// 翻译功能选项数据模型
class TranslationOption {
final String translationId;
final String title;
final String description;
final IconData icon;
final int iconColor;
final String targetRoute;
TranslationOption({
required this.translationId,
required this.title,
required this.description,
required this.icon,
required this.iconColor,
required this.targetRoute,
});
}