import 'package:flutter/foundation.dart'; import 'package:shared_preferences/shared_preferences.dart'; class S { static const _languagePreferenceKey = 'is_english'; static final ValueNotifier langNotifier = ValueNotifier(false); static bool get isEn => langNotifier.value; static set isEn(bool value) => langNotifier.value = value; static Future loadLanguagePreference() async { try { final preferences = await SharedPreferences.getInstance(); isEn = preferences.getBool(_languagePreferenceKey) ?? false; } catch (error) { debugPrint('Failed to load language preference: $error'); isEn = false; } } static Future setLanguagePreference(bool value) async { isEn = value; try { final preferences = await SharedPreferences.getInstance(); await preferences.setBool(_languagePreferenceKey, value); } catch (error) { debugPrint('Failed to save language preference: $error'); } } // App Title static String get title => isEn ? 'Demo' : '示例'; // Tabs static String get tabInit => isEn ? 'Login' : '登录'; static String get tabScan => isEn ? 'Scan' : '设备扫描'; static String get tabLock => isEn ? 'Lock' : '蓝牙控锁'; static String get tabWifi => isEn ? 'WiFi' : 'WiFi配网'; static String get tabTalk => isEn ? 'Talk' : '视频对讲'; // Common Logs & Buttons static String get logFailed => isEn ? 'Failed' : '失败'; static String get logSuccess => isEn ? 'Success' : '成功'; static String get btnProcessing => isEn ? 'Processing...' : '处理中...'; // Auth Tab static String get sdkStatus => isEn ? 'SDK Status' : 'SDK 状态'; static String get cloudUserStatus => isEn ? 'Signed-in Account' : '登录账户'; static String get clientId => isEn ? 'Client ID *' : '客户ID *'; static String get clientSecret => isEn ? 'Client Secret' : '客户端密钥'; static String get envUrl => isEn ? 'Env URL' : '环境地址'; static String get step1Init => isEn ? 'Step 1: Register a cloud account to get client_id and client_secret, then initialize the SDK' : '第1步:注册星云账号填写后初始化SDK'; static String get step2User => isEn ? 'Step 2: Sign In' : '第 2 步:登录账号'; static String get btnCreateTestCloudAccount => isEn ? 'Step 2: Create a new SDK cloud account (testing only)' : '第2步:仅测试创建新的 SDK 星云账户'; static String get btnLoginForWifiAuthorization => isEn ? 'Step 3: Sign in with the app account for WiFi authorization' : '第3步:填写 app 登录账号,支持 WIFI 授权账号'; static String get accountLabel => isEn ? 'Account' : '账号'; static String get passwordLabel => isEn ? 'Password' : '密码'; static String get logFillId => isEn ? 'Please fill Client ID' : '请先填写 Client ID'; static String get logInitSuccess => isEn ? 'SDK Initialized' : 'SDK 初始化成功'; static String get logUserReady => isEn ? 'Account ready' : '账号登录成功'; // Scan Tab static String get btnScan => isEn ? 'Scan' : '扫描'; static String get btnScanning => isEn ? 'Scanning...' : '扫描中...'; static String get btnStop => isEn ? 'Stop' : '停止'; static String get scanHint => isEn ? 'Tap "Scan" to start' : '点击"扫描设备"开始'; static String get pairedStatus => isEn ? 'Paired' : '已配对'; static String get btnPair => isEn ? 'Pair' : '配对'; static String get logScanning => isEn ? 'Scanning (10s)...' : '开始扫描(10 秒超时)...'; static String get logScanDone => isEn ? 'Scan done' : '扫描完成'; // Lock Tab static String get lockIdLabel => isEn ? 'Lock ID' : '锁定ID'; static String get notPaired => isEn ? 'Not Paired' : '未配对'; static String get btnOpen => isEn ? 'Open' : '开锁'; static String get btnClose => isEn ? 'Close' : '关锁'; // WiFi Tab static String get wifiTitle => isEn ? 'WiFi Config' : 'WiFi配网'; static String get wifiModeDirect => isEn ? 'Direct Mode (Lock Board)' : '锁板直连模式'; static String get wifiModeGateway => isEn ? 'Gateway Mode' : '网关模式'; static String get wifiConfigSec => isEn ? 'WiFi Settings' : 'WiFi 配置'; static String get btnStartConfig => isEn ? 'Step 2: WiFi Setup' : '第2步:wifi配网'; static String get logConfigSent => isEn ? 'Config Sent' : '指令已发送'; static String get currentLoggedInAccountPrefix => isEn ? 'Current signed-in account: ' : '当前登录账号:'; static String get wifiUsesAuthorizedSession => isEn ? 'WiFi setup will use this account\'s authorized session.' : 'WIFI 配网将使用此账号的授权会话。'; static String get logConfigCancelledNeedTalkInitialization => isEn ? 'WiFi setup cancelled: Please tap “Step 1: Initialize Video Talk” on this page first.' : '已取消配网:请先点击本页“第1步:初始化视频对讲”。'; static String get logUsingLoginSessionForGatewayConfig => isEn ? 'Using the signed-in session to get the gateway configuration and send it via BLE...' : '已使用登录会话,正在获取网关配置并通过 BLE 下发...'; static String get logWifiConfigCompleted => isEn ? 'SUCCESS: BLE WiFi provisioning and deviceNetwork/setting are complete.' : 'SUCCESS: BLE 配网及 deviceNetwork/setting 均已完成。'; // Talk Tab static String get talkServer => isEn ? 'Server Address' : '服务器地址'; static String get btnInitTalk => isEn ? 'Step 1: Initialize Video Talk' : '第1步:初始化视频对讲'; static String get initialized => isEn ? 'Initialized' : '已初始化'; static String get completeWifiTalkInitialization => isEn ? 'Please complete Step 1: Initialize Video Talk on the WiFi Setup tab.' : '请先在“WiFi配网”页完成第1步:初始化视频对讲。'; static String get incomingCall => isEn ? 'Incoming Call' : '来电'; static String get btnAccept => isEn ? 'Accept' : '接听'; static String get btnReject => isEn ? 'Reject' : '拒绝'; static String get btnHangup => isEn ? 'Hang up' : '挂断'; static String get btnMonitor => isEn ? 'Monitor' : '监控'; static String get logTalkReady => isEn ? 'Talk Ready' : '视频对讲就绪'; static String get deviceIdLabel => isEn ? 'Device ID' : '设备ID'; }