chore: restore product scaffold to rollback baseline

This commit is contained in:
Edison Jwa
2026-05-29 14:02:04 +09:00
parent 2896f14ec9
commit fe6e07353e
434 changed files with 27278 additions and 63230 deletions
+58
View File
@@ -22,6 +22,8 @@
"refreshAction": "Refresh",
"diagnosticsAction": "Diagnostics",
"diagnosticsSaveAction": "Save export",
"diagnosticsLiveUpdating": "Live updating",
"shareAction": "Share",
"diagnosticsSaved": "Diagnostic export saved to {path}",
"@diagnosticsSaved": {
"placeholders": { "path": { "type": "String" } }
@@ -39,6 +41,16 @@
"aboutThirdPartyBody": "Chanora is built on tsclientlib, flutter_rust_bridge, platform-native audio backends, rusqlite, and the Flutter framework, among others. See the NOTICE file at the repository root for the current attribution list.",
"copyAction": "Copy",
"closeAction": "Close",
"openAction": "Open",
"cancelAction": "Cancel",
"retryAction": "Retry",
"chatAction": "Chat",
"chatCloseAction": "Close chat",
"chatNewPrivateAction": "New private chat",
"chatSearchClientsHint": "Search clients...",
"chatDirectMessageAction": "Private message",
"chatPokeAction": "Poke",
"clientInfoAction": "Info",
"startAudioAction": "Start audio",
"pttHoldToTalk": "Hold to talk",
"pttTransmitting": "Transmitting…",
@@ -119,6 +131,7 @@
"channelsHeading": "Channels",
"clientsHeading": "Online clients",
"serverWelcomeHeading": "Server welcome message",
"countChannelsAndClients": "{channels} channels • {clients} online",
"@countChannelsAndClients": {
"placeholders": {
@@ -172,6 +185,10 @@
"microphonePermissionBody": "Chanora needs permission to access the microphone. On macOS, go to System Settings → Privacy & Security → Microphone and enable Chanora.",
"microphonePermissionRequiredForVoice": "Microphone permission is required for voice transmission.",
"permissionGrantAction": "Grant",
"startupPermissionsTitle": "Permissions",
"startupPermissionsBody": "Chanora requests microphone, Bluetooth headset, and notification permissions at startup so voice, headset routing, and the foreground session work correctly.",
"startupPermissionsNotNow": "Not now",
"startupPermissionsAllow": "Allow",
"audioRouteSystemDefault": "System default",
"audioRouteEarpiece": "Earpiece",
"audioRouteUsbHeadset": "USB headset",
@@ -181,6 +198,47 @@
"audioRouteChangeFailed": "Could not change audio output.",
"iosAudioInterrupted": "Audio interrupted by system (phone call)",
"iosAudioResuming": "Audio resuming",
"linkTrustTitle": "Open external link?",
"linkTrustBody": "You are about to open a link to:\n\n{domain}",
"@linkTrustBody": {
"placeholders": {
"domain": { "type": "String" }
}
},
"linkTrustRememberDomain": "Trust all links from this domain",
"clientInfoFetchingProfile": "Fetching TeamSpeak profile",
"clientInfoLoadingProfile": "Loading profile...",
"clientInfoProfileUnavailable": "Profile unavailable",
"clientInfoProfileUnavailableBody": "The server did not return profile details for this client.",
"clientInfoIdentitySection": "Identity",
"clientInfoMembershipSection": "Membership",
"clientInfoConnectionSection": "Connection",
"clientInfoHistorySection": "History",
"clientInfoTransferSection": "Transfer",
"clientInfoClientId": "Client ID",
"clientInfoDatabaseId": "Database ID",
"clientInfoUniqueId": "Unique ID",
"clientInfoDescription": "Description",
"clientInfoAvatar": "Avatar",
"clientInfoServerGroups": "Server groups",
"clientInfoChannelGroup": "Channel group",
"clientInfoChannelId": "Channel ID",
"clientInfoOnline": "Online",
"clientInfoIdle": "Idle",
"clientInfoPing": "Ping",
"clientInfoAddress": "Address",
"clientInfoPacketLossClientToServer": "Packet loss C->S",
"clientInfoPacketLossServerToClient": "Packet loss S->C",
"clientInfoFirstConnected": "First connected",
"clientInfoLastConnected": "Last connected",
"clientInfoConnections": "Connections",
"clientInfoDownloadedMonth": "Downloaded this month",
"clientInfoUploadedMonth": "Uploaded this month",
"clientInfoDownloadedTotal": "Downloaded total",
"clientInfoUploadedTotal": "Uploaded total",
"clientInfoUnknown": "Unknown",
"clientInfoHidden": "Hidden",
"clientInfoNone": "None",
"pokeSnackBarClearAction": "Clear",
"pokeSnackBarMoreIndicator": "...",
"pokeSnackBarIncomingNoMessage": "{sender} pokes you",
+53
View File
@@ -21,6 +21,8 @@
"refreshAction": "刷新",
"diagnosticsAction": "诊断信息",
"diagnosticsSaveAction": "保存导出",
"diagnosticsLiveUpdating": "实时更新中",
"shareAction": "分享",
"diagnosticsSaved": "诊断导出已保存到 {path}",
"aboutAction": "关于",
"aboutVersion": "版本 {version}",
@@ -32,6 +34,16 @@
"aboutThirdPartyBody": "Chanora 基于 tsclientlib、flutter_rust_bridge、平台原生音频后端、rusqlite、Flutter 框架等开源组件构建。完整归属信息请参阅仓库根目录的 NOTICE 文件。",
"copyAction": "复制",
"closeAction": "关闭",
"openAction": "打开",
"cancelAction": "取消",
"retryAction": "重试",
"chatAction": "聊天",
"chatCloseAction": "关闭聊天",
"chatNewPrivateAction": "新建私聊",
"chatSearchClientsHint": "搜索用户...",
"chatDirectMessageAction": "私聊",
"chatPokeAction": "戳一下",
"clientInfoAction": "信息",
"startAudioAction": "启动语音",
"pttHoldToTalk": "按住说话",
"pttTransmitting": "正在发送…",
@@ -79,6 +91,7 @@
"channelsHeading": "频道",
"clientsHeading": "在线用户",
"serverWelcomeHeading": "服务器欢迎信息",
"countChannelsAndClients": "{channels} 个频道 • {clients} 在线",
"voiceModePtt": "按键说话",
@@ -126,6 +139,10 @@
"microphonePermissionBody": "Chanora 需要麦克风访问权限。请前往系统设置 → 隐私与安全性 → 麦克风,启用 Chanora。",
"microphonePermissionRequiredForVoice": "语音发送需要麦克风权限。",
"permissionGrantAction": "授权",
"startupPermissionsTitle": "权限",
"startupPermissionsBody": "Chanora 会在启动时请求麦克风、蓝牙耳机和通知权限,以确保语音、耳机路由和前台会话正常工作。",
"startupPermissionsNotNow": "暂不",
"startupPermissionsAllow": "允许",
"audioRouteSystemDefault": "系统默认",
"audioRouteEarpiece": "听筒",
"audioRouteUsbHeadset": "USB 耳机",
@@ -135,6 +152,42 @@
"audioRouteChangeFailed": "无法切换音频输出。",
"iosAudioInterrupted": "系统已中断音频(电话通话)",
"iosAudioResuming": "音频正在恢复",
"linkTrustTitle": "打开外部链接?",
"linkTrustBody": "你将打开指向以下域名的链接:\n\n{domain}",
"linkTrustRememberDomain": "信任来自此域名的所有链接",
"clientInfoFetchingProfile": "正在获取 TeamSpeak 资料",
"clientInfoLoadingProfile": "正在加载资料…",
"clientInfoProfileUnavailable": "资料不可用",
"clientInfoProfileUnavailableBody": "服务器没有返回此用户的资料详情。",
"clientInfoIdentitySection": "身份",
"clientInfoMembershipSection": "成员关系",
"clientInfoConnectionSection": "连接",
"clientInfoHistorySection": "历史",
"clientInfoTransferSection": "传输",
"clientInfoClientId": "用户 ID",
"clientInfoDatabaseId": "数据库 ID",
"clientInfoUniqueId": "唯一 ID",
"clientInfoDescription": "描述",
"clientInfoAvatar": "头像",
"clientInfoServerGroups": "服务器组",
"clientInfoChannelGroup": "频道组",
"clientInfoChannelId": "频道 ID",
"clientInfoOnline": "在线时长",
"clientInfoIdle": "空闲",
"clientInfoPing": "延迟",
"clientInfoAddress": "地址",
"clientInfoPacketLossClientToServer": "丢包 C->S",
"clientInfoPacketLossServerToClient": "丢包 S->C",
"clientInfoFirstConnected": "首次连接",
"clientInfoLastConnected": "上次连接",
"clientInfoConnections": "连接次数",
"clientInfoDownloadedMonth": "本月下载",
"clientInfoUploadedMonth": "本月上传",
"clientInfoDownloadedTotal": "总下载",
"clientInfoUploadedTotal": "总上传",
"clientInfoUnknown": "未知",
"clientInfoHidden": "隐藏",
"clientInfoNone": "无",
"pokeSnackBarClearAction": "清除",
"pokeSnackBarMoreIndicator": "...",
"pokeSnackBarIncomingNoMessage": "{sender} 戳了你一下",
@@ -199,6 +199,18 @@ abstract class AppL10n {
/// **'Save export'**
String get diagnosticsSaveAction;
/// No description provided for @diagnosticsLiveUpdating.
///
/// In en, this message translates to:
/// **'Live updating'**
String get diagnosticsLiveUpdating;
/// No description provided for @shareAction.
///
/// In en, this message translates to:
/// **'Share'**
String get shareAction;
/// No description provided for @diagnosticsSaved.
///
/// In en, this message translates to:
@@ -265,6 +277,66 @@ abstract class AppL10n {
/// **'Close'**
String get closeAction;
/// No description provided for @openAction.
///
/// In en, this message translates to:
/// **'Open'**
String get openAction;
/// No description provided for @cancelAction.
///
/// In en, this message translates to:
/// **'Cancel'**
String get cancelAction;
/// No description provided for @retryAction.
///
/// In en, this message translates to:
/// **'Retry'**
String get retryAction;
/// No description provided for @chatAction.
///
/// In en, this message translates to:
/// **'Chat'**
String get chatAction;
/// No description provided for @chatCloseAction.
///
/// In en, this message translates to:
/// **'Close chat'**
String get chatCloseAction;
/// No description provided for @chatNewPrivateAction.
///
/// In en, this message translates to:
/// **'New private chat'**
String get chatNewPrivateAction;
/// No description provided for @chatSearchClientsHint.
///
/// In en, this message translates to:
/// **'Search clients...'**
String get chatSearchClientsHint;
/// No description provided for @chatDirectMessageAction.
///
/// In en, this message translates to:
/// **'Private message'**
String get chatDirectMessageAction;
/// No description provided for @chatPokeAction.
///
/// In en, this message translates to:
/// **'Poke'**
String get chatPokeAction;
/// No description provided for @clientInfoAction.
///
/// In en, this message translates to:
/// **'Info'**
String get clientInfoAction;
/// No description provided for @startAudioAction.
///
/// In en, this message translates to:
@@ -523,6 +595,12 @@ abstract class AppL10n {
/// **'Online clients'**
String get clientsHeading;
/// No description provided for @serverWelcomeHeading.
///
/// In en, this message translates to:
/// **'Server welcome message'**
String get serverWelcomeHeading;
/// No description provided for @countChannelsAndClients.
///
/// In en, this message translates to:
@@ -769,6 +847,30 @@ abstract class AppL10n {
/// **'Grant'**
String get permissionGrantAction;
/// No description provided for @startupPermissionsTitle.
///
/// In en, this message translates to:
/// **'Permissions'**
String get startupPermissionsTitle;
/// No description provided for @startupPermissionsBody.
///
/// In en, this message translates to:
/// **'Chanora requests microphone, Bluetooth headset, and notification permissions at startup so voice, headset routing, and the foreground session work correctly.'**
String get startupPermissionsBody;
/// No description provided for @startupPermissionsNotNow.
///
/// In en, this message translates to:
/// **'Not now'**
String get startupPermissionsNotNow;
/// No description provided for @startupPermissionsAllow.
///
/// In en, this message translates to:
/// **'Allow'**
String get startupPermissionsAllow;
/// No description provided for @audioRouteSystemDefault.
///
/// In en, this message translates to:
@@ -823,6 +925,222 @@ abstract class AppL10n {
/// **'Audio resuming'**
String get iosAudioResuming;
/// No description provided for @linkTrustTitle.
///
/// In en, this message translates to:
/// **'Open external link?'**
String get linkTrustTitle;
/// No description provided for @linkTrustBody.
///
/// In en, this message translates to:
/// **'You are about to open a link to:\n\n{domain}'**
String linkTrustBody(String domain);
/// No description provided for @linkTrustRememberDomain.
///
/// In en, this message translates to:
/// **'Trust all links from this domain'**
String get linkTrustRememberDomain;
/// No description provided for @clientInfoFetchingProfile.
///
/// In en, this message translates to:
/// **'Fetching TeamSpeak profile'**
String get clientInfoFetchingProfile;
/// No description provided for @clientInfoLoadingProfile.
///
/// In en, this message translates to:
/// **'Loading profile...'**
String get clientInfoLoadingProfile;
/// No description provided for @clientInfoProfileUnavailable.
///
/// In en, this message translates to:
/// **'Profile unavailable'**
String get clientInfoProfileUnavailable;
/// No description provided for @clientInfoProfileUnavailableBody.
///
/// In en, this message translates to:
/// **'The server did not return profile details for this client.'**
String get clientInfoProfileUnavailableBody;
/// No description provided for @clientInfoIdentitySection.
///
/// In en, this message translates to:
/// **'Identity'**
String get clientInfoIdentitySection;
/// No description provided for @clientInfoMembershipSection.
///
/// In en, this message translates to:
/// **'Membership'**
String get clientInfoMembershipSection;
/// No description provided for @clientInfoConnectionSection.
///
/// In en, this message translates to:
/// **'Connection'**
String get clientInfoConnectionSection;
/// No description provided for @clientInfoHistorySection.
///
/// In en, this message translates to:
/// **'History'**
String get clientInfoHistorySection;
/// No description provided for @clientInfoTransferSection.
///
/// In en, this message translates to:
/// **'Transfer'**
String get clientInfoTransferSection;
/// No description provided for @clientInfoClientId.
///
/// In en, this message translates to:
/// **'Client ID'**
String get clientInfoClientId;
/// No description provided for @clientInfoDatabaseId.
///
/// In en, this message translates to:
/// **'Database ID'**
String get clientInfoDatabaseId;
/// No description provided for @clientInfoUniqueId.
///
/// In en, this message translates to:
/// **'Unique ID'**
String get clientInfoUniqueId;
/// No description provided for @clientInfoDescription.
///
/// In en, this message translates to:
/// **'Description'**
String get clientInfoDescription;
/// No description provided for @clientInfoAvatar.
///
/// In en, this message translates to:
/// **'Avatar'**
String get clientInfoAvatar;
/// No description provided for @clientInfoServerGroups.
///
/// In en, this message translates to:
/// **'Server groups'**
String get clientInfoServerGroups;
/// No description provided for @clientInfoChannelGroup.
///
/// In en, this message translates to:
/// **'Channel group'**
String get clientInfoChannelGroup;
/// No description provided for @clientInfoChannelId.
///
/// In en, this message translates to:
/// **'Channel ID'**
String get clientInfoChannelId;
/// No description provided for @clientInfoOnline.
///
/// In en, this message translates to:
/// **'Online'**
String get clientInfoOnline;
/// No description provided for @clientInfoIdle.
///
/// In en, this message translates to:
/// **'Idle'**
String get clientInfoIdle;
/// No description provided for @clientInfoPing.
///
/// In en, this message translates to:
/// **'Ping'**
String get clientInfoPing;
/// No description provided for @clientInfoAddress.
///
/// In en, this message translates to:
/// **'Address'**
String get clientInfoAddress;
/// No description provided for @clientInfoPacketLossClientToServer.
///
/// In en, this message translates to:
/// **'Packet loss C->S'**
String get clientInfoPacketLossClientToServer;
/// No description provided for @clientInfoPacketLossServerToClient.
///
/// In en, this message translates to:
/// **'Packet loss S->C'**
String get clientInfoPacketLossServerToClient;
/// No description provided for @clientInfoFirstConnected.
///
/// In en, this message translates to:
/// **'First connected'**
String get clientInfoFirstConnected;
/// No description provided for @clientInfoLastConnected.
///
/// In en, this message translates to:
/// **'Last connected'**
String get clientInfoLastConnected;
/// No description provided for @clientInfoConnections.
///
/// In en, this message translates to:
/// **'Connections'**
String get clientInfoConnections;
/// No description provided for @clientInfoDownloadedMonth.
///
/// In en, this message translates to:
/// **'Downloaded this month'**
String get clientInfoDownloadedMonth;
/// No description provided for @clientInfoUploadedMonth.
///
/// In en, this message translates to:
/// **'Uploaded this month'**
String get clientInfoUploadedMonth;
/// No description provided for @clientInfoDownloadedTotal.
///
/// In en, this message translates to:
/// **'Downloaded total'**
String get clientInfoDownloadedTotal;
/// No description provided for @clientInfoUploadedTotal.
///
/// In en, this message translates to:
/// **'Uploaded total'**
String get clientInfoUploadedTotal;
/// No description provided for @clientInfoUnknown.
///
/// In en, this message translates to:
/// **'Unknown'**
String get clientInfoUnknown;
/// No description provided for @clientInfoHidden.
///
/// In en, this message translates to:
/// **'Hidden'**
String get clientInfoHidden;
/// No description provided for @clientInfoNone.
///
/// In en, this message translates to:
/// **'None'**
String get clientInfoNone;
/// No description provided for @pokeSnackBarClearAction.
///
/// In en, this message translates to:
@@ -62,6 +62,12 @@ class AppL10nEn extends AppL10n {
@override
String get diagnosticsSaveAction => 'Save export';
@override
String get diagnosticsLiveUpdating => 'Live updating';
@override
String get shareAction => 'Share';
@override
String diagnosticsSaved(String path) {
return 'Diagnostic export saved to $path';
@@ -102,6 +108,36 @@ class AppL10nEn extends AppL10n {
@override
String get closeAction => 'Close';
@override
String get openAction => 'Open';
@override
String get cancelAction => 'Cancel';
@override
String get retryAction => 'Retry';
@override
String get chatAction => 'Chat';
@override
String get chatCloseAction => 'Close chat';
@override
String get chatNewPrivateAction => 'New private chat';
@override
String get chatSearchClientsHint => 'Search clients...';
@override
String get chatDirectMessageAction => 'Private message';
@override
String get chatPokeAction => 'Poke';
@override
String get clientInfoAction => 'Info';
@override
String get startAudioAction => 'Start audio';
@@ -256,6 +292,9 @@ class AppL10nEn extends AppL10n {
@override
String get clientsHeading => 'Online clients';
@override
String get serverWelcomeHeading => 'Server welcome message';
@override
String countChannelsAndClients(int channels, int clients) {
return '$channels channels • $clients online';
@@ -388,6 +427,19 @@ class AppL10nEn extends AppL10n {
@override
String get permissionGrantAction => 'Grant';
@override
String get startupPermissionsTitle => 'Permissions';
@override
String get startupPermissionsBody =>
'Chanora requests microphone, Bluetooth headset, and notification permissions at startup so voice, headset routing, and the foreground session work correctly.';
@override
String get startupPermissionsNotNow => 'Not now';
@override
String get startupPermissionsAllow => 'Allow';
@override
String get audioRouteSystemDefault => 'System default';
@@ -415,6 +467,117 @@ class AppL10nEn extends AppL10n {
@override
String get iosAudioResuming => 'Audio resuming';
@override
String get linkTrustTitle => 'Open external link?';
@override
String linkTrustBody(String domain) {
return 'You are about to open a link to:\n\n$domain';
}
@override
String get linkTrustRememberDomain => 'Trust all links from this domain';
@override
String get clientInfoFetchingProfile => 'Fetching TeamSpeak profile';
@override
String get clientInfoLoadingProfile => 'Loading profile...';
@override
String get clientInfoProfileUnavailable => 'Profile unavailable';
@override
String get clientInfoProfileUnavailableBody =>
'The server did not return profile details for this client.';
@override
String get clientInfoIdentitySection => 'Identity';
@override
String get clientInfoMembershipSection => 'Membership';
@override
String get clientInfoConnectionSection => 'Connection';
@override
String get clientInfoHistorySection => 'History';
@override
String get clientInfoTransferSection => 'Transfer';
@override
String get clientInfoClientId => 'Client ID';
@override
String get clientInfoDatabaseId => 'Database ID';
@override
String get clientInfoUniqueId => 'Unique ID';
@override
String get clientInfoDescription => 'Description';
@override
String get clientInfoAvatar => 'Avatar';
@override
String get clientInfoServerGroups => 'Server groups';
@override
String get clientInfoChannelGroup => 'Channel group';
@override
String get clientInfoChannelId => 'Channel ID';
@override
String get clientInfoOnline => 'Online';
@override
String get clientInfoIdle => 'Idle';
@override
String get clientInfoPing => 'Ping';
@override
String get clientInfoAddress => 'Address';
@override
String get clientInfoPacketLossClientToServer => 'Packet loss C->S';
@override
String get clientInfoPacketLossServerToClient => 'Packet loss S->C';
@override
String get clientInfoFirstConnected => 'First connected';
@override
String get clientInfoLastConnected => 'Last connected';
@override
String get clientInfoConnections => 'Connections';
@override
String get clientInfoDownloadedMonth => 'Downloaded this month';
@override
String get clientInfoUploadedMonth => 'Uploaded this month';
@override
String get clientInfoDownloadedTotal => 'Downloaded total';
@override
String get clientInfoUploadedTotal => 'Uploaded total';
@override
String get clientInfoUnknown => 'Unknown';
@override
String get clientInfoHidden => 'Hidden';
@override
String get clientInfoNone => 'None';
@override
String get pokeSnackBarClearAction => 'Clear';
@@ -59,6 +59,12 @@ class AppL10nZh extends AppL10n {
@override
String get diagnosticsSaveAction => '保存导出';
@override
String get diagnosticsLiveUpdating => '实时更新中';
@override
String get shareAction => '分享';
@override
String diagnosticsSaved(String path) {
return '诊断导出已保存到 $path';
@@ -99,6 +105,36 @@ class AppL10nZh extends AppL10n {
@override
String get closeAction => '关闭';
@override
String get openAction => '打开';
@override
String get cancelAction => '取消';
@override
String get retryAction => '重试';
@override
String get chatAction => '聊天';
@override
String get chatCloseAction => '关闭聊天';
@override
String get chatNewPrivateAction => '新建私聊';
@override
String get chatSearchClientsHint => '搜索用户...';
@override
String get chatDirectMessageAction => '私聊';
@override
String get chatPokeAction => '戳一下';
@override
String get clientInfoAction => '信息';
@override
String get startAudioAction => '启动语音';
@@ -249,6 +285,9 @@ class AppL10nZh extends AppL10n {
@override
String get clientsHeading => '在线用户';
@override
String get serverWelcomeHeading => '服务器欢迎信息';
@override
String countChannelsAndClients(int channels, int clients) {
return '$channels 个频道 • $clients 在线';
@@ -378,6 +417,19 @@ class AppL10nZh extends AppL10n {
@override
String get permissionGrantAction => '授权';
@override
String get startupPermissionsTitle => '权限';
@override
String get startupPermissionsBody =>
'Chanora 会在启动时请求麦克风、蓝牙耳机和通知权限,以确保语音、耳机路由和前台会话正常工作。';
@override
String get startupPermissionsNotNow => '暂不';
@override
String get startupPermissionsAllow => '允许';
@override
String get audioRouteSystemDefault => '系统默认';
@@ -405,6 +457,116 @@ class AppL10nZh extends AppL10n {
@override
String get iosAudioResuming => '音频正在恢复';
@override
String get linkTrustTitle => '打开外部链接?';
@override
String linkTrustBody(String domain) {
return '你将打开指向以下域名的链接:\n\n$domain';
}
@override
String get linkTrustRememberDomain => '信任来自此域名的所有链接';
@override
String get clientInfoFetchingProfile => '正在获取 TeamSpeak 资料';
@override
String get clientInfoLoadingProfile => '正在加载资料…';
@override
String get clientInfoProfileUnavailable => '资料不可用';
@override
String get clientInfoProfileUnavailableBody => '服务器没有返回此用户的资料详情。';
@override
String get clientInfoIdentitySection => '身份';
@override
String get clientInfoMembershipSection => '成员关系';
@override
String get clientInfoConnectionSection => '连接';
@override
String get clientInfoHistorySection => '历史';
@override
String get clientInfoTransferSection => '传输';
@override
String get clientInfoClientId => '用户 ID';
@override
String get clientInfoDatabaseId => '数据库 ID';
@override
String get clientInfoUniqueId => '唯一 ID';
@override
String get clientInfoDescription => '描述';
@override
String get clientInfoAvatar => '头像';
@override
String get clientInfoServerGroups => '服务器组';
@override
String get clientInfoChannelGroup => '频道组';
@override
String get clientInfoChannelId => '频道 ID';
@override
String get clientInfoOnline => '在线时长';
@override
String get clientInfoIdle => '空闲';
@override
String get clientInfoPing => '延迟';
@override
String get clientInfoAddress => '地址';
@override
String get clientInfoPacketLossClientToServer => '丢包 C->S';
@override
String get clientInfoPacketLossServerToClient => '丢包 S->C';
@override
String get clientInfoFirstConnected => '首次连接';
@override
String get clientInfoLastConnected => '上次连接';
@override
String get clientInfoConnections => '连接次数';
@override
String get clientInfoDownloadedMonth => '本月下载';
@override
String get clientInfoUploadedMonth => '本月上传';
@override
String get clientInfoDownloadedTotal => '总下载';
@override
String get clientInfoUploadedTotal => '总上传';
@override
String get clientInfoUnknown => '未知';
@override
String get clientInfoHidden => '隐藏';
@override
String get clientInfoNone => '';
@override
String get pokeSnackBarClearAction => '清除';