- Android端注入按键时显式设置SOURCE_KEYBOARD,修复IME丢弃事件导致输入框无法输入文字的问题 - Flutter端新增Flutter逻辑键到Android keyCode的转换映射,避免功能键误触发 - 重构RemoteController,分离信令连接与远程控制逻辑,支持设备列表选择与配对码兑换 - AuthRepository接口新增getBindings、getOnlineDevices、redeemPairingCode方法 - DioAuthRepository实现401自动刷新token重试机制 - ConnectionSessionState扩展设备列表、在线状态、配对码等状态字段
266 lines
6.1 KiB
Dart
266 lines
6.1 KiB
Dart
// ignore: unused_import
|
||
import 'package:intl/intl.dart' as intl;
|
||
import 'app_localizations.dart';
|
||
|
||
// ignore_for_file: type=lint
|
||
|
||
/// The translations for Chinese (`zh`).
|
||
class AppLocalizationsZh extends AppLocalizations {
|
||
AppLocalizationsZh([String locale = 'zh']) : super(locale);
|
||
|
||
@override
|
||
String get appTitle => 'WebRTC 控制端';
|
||
|
||
@override
|
||
String get login => '登录';
|
||
|
||
@override
|
||
String get logout => '退出登录';
|
||
|
||
@override
|
||
String get registerAccount => '注册新账号';
|
||
|
||
@override
|
||
String get registerSuccess => '注册成功,请登录';
|
||
|
||
@override
|
||
String registerFailed(Object error) {
|
||
return '注册失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get loginSubtitle => '登录后可连接已绑定的被控设备';
|
||
|
||
@override
|
||
String get cancel => '取消';
|
||
|
||
@override
|
||
String get confirm => '确定';
|
||
|
||
@override
|
||
String get connect => '连接';
|
||
|
||
@override
|
||
String get connecting => '正在连接...';
|
||
|
||
@override
|
||
String get loginAccount => '登录账号';
|
||
|
||
@override
|
||
String get connectDevice => '连接被控设备';
|
||
|
||
@override
|
||
String get deviceId => '本机设备ID(连接后由服务端下发,无需填写):';
|
||
|
||
@override
|
||
String get deviceIdPlaceholder => '连接后由服务端下发';
|
||
|
||
@override
|
||
String get targetDeviceId => '目标被控设备ID:';
|
||
|
||
@override
|
||
String get targetDeviceIdPlaceholder => '被控端设备ID';
|
||
|
||
@override
|
||
String get username => '用户名';
|
||
|
||
@override
|
||
String get password => '密码';
|
||
|
||
@override
|
||
String loginFailed(Object error) {
|
||
return '登录失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get usernamePasswordRequired => '请输入用户名和密码';
|
||
|
||
@override
|
||
String get targetRequired => '请填写目标设备ID';
|
||
|
||
@override
|
||
String get authTitle => '连接鉴权';
|
||
|
||
@override
|
||
String get authNone => '免密连接';
|
||
|
||
@override
|
||
String get authNoneDesc => '被控端弹出手动确认框,无需验证码或密码';
|
||
|
||
@override
|
||
String get authCode => '动态验证码';
|
||
|
||
@override
|
||
String get authCodeDesc => '使用一次性动态验证码鉴权';
|
||
|
||
@override
|
||
String get authPassword => '固定密码';
|
||
|
||
@override
|
||
String get authPasswordDesc => '使用固定连接密码鉴权';
|
||
|
||
@override
|
||
String get authNonePlaceholder => '免密连接,无需填写';
|
||
|
||
@override
|
||
String get authPasswordPlaceholder => '请输入固定密码';
|
||
|
||
@override
|
||
String get authCodePlaceholder => '请输入动态验证码';
|
||
|
||
@override
|
||
String get authValueRequired => '请输入验证码或密码';
|
||
|
||
@override
|
||
String get statusStopped => '状态: 已停止';
|
||
|
||
@override
|
||
String get statusConnectingSignal => '状态: 正在连接信令服务器...';
|
||
|
||
@override
|
||
String get statusConnected => '状态: 已连接 - 远程控制中';
|
||
|
||
@override
|
||
String get statusDisconnected => '状态: 远端已断开';
|
||
|
||
@override
|
||
String get statusSignalConnected => '状态: 已连接信令服务器,等待注册...';
|
||
|
||
@override
|
||
String statusRegistered(Object deviceId) {
|
||
return '状态: 已注册 ($deviceId),正在发起连接...';
|
||
}
|
||
|
||
@override
|
||
String statusAuthFailed(Object error) {
|
||
return '状态: 认证失败 - $error';
|
||
}
|
||
|
||
@override
|
||
String statusConnectError(Object error) {
|
||
return '状态: 连接错误 - $error';
|
||
}
|
||
|
||
@override
|
||
String get statusTargetAccept => '状态: 被控端已接受连接,正在建立连接...';
|
||
|
||
@override
|
||
String statusTokenRefreshFailed(Object error) {
|
||
return '状态: 令牌刷新失败 - $error';
|
||
}
|
||
|
||
@override
|
||
String get statusForceLogout => '状态: 账号已在其他位置登录,已强制下线';
|
||
|
||
@override
|
||
String connectedBindings(Object uids) {
|
||
return '已绑定设备: $uids';
|
||
}
|
||
|
||
@override
|
||
String get resolutionSwitch => '切换分辨率';
|
||
|
||
@override
|
||
String get fpsSwitch => '切换帧率';
|
||
|
||
@override
|
||
String get selfCodec => '自编码';
|
||
|
||
@override
|
||
String get record => '录制';
|
||
|
||
@override
|
||
String get stop => '停止';
|
||
|
||
@override
|
||
String get recording => '录制中...';
|
||
|
||
@override
|
||
String recordSaved(Object path) {
|
||
return '已保存:$path';
|
||
}
|
||
|
||
@override
|
||
String get recordStopped => '录制已停止';
|
||
|
||
@override
|
||
String get recordNoStream => '尚未连接或没有视频画面,无法录制';
|
||
|
||
@override
|
||
String get recordSwitchToStd => '正在切回标准模式以开始录制...';
|
||
|
||
@override
|
||
String recordStartFailed(Object error) {
|
||
return '开始录制失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get recordNoVideoTrack => '尚未接收到视频画面,无法录制';
|
||
|
||
@override
|
||
String get selfCodecNotSupported => '当前平台不支持自编码硬解,已回退到 WebRTC 媒体流。';
|
||
|
||
@override
|
||
String get iceDisconnected => 'ICE 连接已断开';
|
||
|
||
@override
|
||
String get targetOffline => '目标被控端不在线,请确认设备已开启并连接服务器';
|
||
|
||
@override
|
||
String connectionFailed(Object error) {
|
||
return '连接失败:$error';
|
||
}
|
||
|
||
@override
|
||
String get tokenExpired => '登录已失效,请重新登录后再连接。';
|
||
|
||
@override
|
||
String get forceLogout => '账号已在其他位置登录,已强制下线。';
|
||
|
||
@override
|
||
String get loginFirst => '请先登录后再连接';
|
||
|
||
@override
|
||
String get pleaseFillAuth => '请输入验证码或密码';
|
||
|
||
@override
|
||
String get streamModeSelfCodecDesc => '当前平台不支持自编码硬解。';
|
||
|
||
@override
|
||
String get boundDevices => '已绑定设备';
|
||
|
||
@override
|
||
String get online => '在线';
|
||
|
||
@override
|
||
String get offline => '离线';
|
||
|
||
@override
|
||
String get noBoundDevices => '暂无已绑定设备';
|
||
|
||
@override
|
||
String get refreshDevices => '刷新';
|
||
|
||
@override
|
||
String get redeemPairingCode => '使用配对码绑定';
|
||
|
||
@override
|
||
String get pairingCodeHint => '请输入被控端显示的配对码';
|
||
|
||
@override
|
||
String bindingFailed(Object error) {
|
||
return '绑定失败:$error';
|
||
}
|
||
|
||
@override
|
||
String deviceOfflineCannotConnect(Object name) {
|
||
return '设备「$name」当前不在线,无法连接';
|
||
}
|
||
|
||
@override
|
||
String get pleaseSelectDevice => '请先选择一个绑定的设备';
|
||
|
||
@override
|
||
String get bindSuccess => '绑定成功';
|
||
}
|