Audit 8.5 (t4:381): the "REPETIR" eyebrow above the weekday circles -- never rendered before. New ARB key alarmRepeatSectionLabel. Audit 8.6 (t4:392-401): the station picker, volume, fade-in and vacation toggle now share ONE bordered card with sangred divider lines -- were four separately-spaced widgets. Restyled _CampoSelectorEmisora as a flat nav row (icon/bold label/muted value/chevron, matching FilaAjuste's own convention) so it fits inside the card instead of drawing its own outlined InputDecoration chrome -- used by BOTH the primary and fallback (Advanced) station fields. Snooze duration, "use current station", and the Advanced section stay OUTSIDE the card, exactly where they were (audit 8.8's own documented deliberate extras). A transparent Material sits inside the card's coloured box so the fade-in ListTile and the vacation SwitchListTile still paint their ink/background correctly (the same class of constraint already documented for PluriGlassSurface elsewhere in this codebase). Audit 8.7 (t4:396): the volume row is now a compact 112px track with a live percentage label -- was a bare full-width Slider with no visible value. New ArtB key alarmVolumeLabel. Item 8.8 (extra name/type-selector/snooze-selector/"use current station"/Advanced fields) stays exactly as documented: deliberate, required by the hard constraint that the editor keep its date field, fallback-station picker and sound dropdown.
1614 lines
37 KiB
Dart
1614 lines
37 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 => 'PluriWave';
|
||
|
||
@override
|
||
String get navHome => '收听';
|
||
|
||
@override
|
||
String get navSearch => '搜索';
|
||
|
||
@override
|
||
String get navFavorites => '收藏';
|
||
|
||
@override
|
||
String get navAlarms => '闹钟';
|
||
|
||
@override
|
||
String get navSettings => '设置';
|
||
|
||
@override
|
||
String get actionOk => '确定';
|
||
|
||
@override
|
||
String get sleepTimer => '睡眠定时器';
|
||
|
||
@override
|
||
String get sleepTimerDescription => '通过精准倒计时平滑关闭电台。';
|
||
|
||
@override
|
||
String get cancelTimer => '取消定时器';
|
||
|
||
@override
|
||
String get optionOther => '其他';
|
||
|
||
@override
|
||
String get customDurationTitle => '自定义时长';
|
||
|
||
@override
|
||
String get durationGreaterThanZero => '请选择大于零的时长。';
|
||
|
||
@override
|
||
String get hoursLabel => '小时';
|
||
|
||
@override
|
||
String get minutesLabel => '分钟';
|
||
|
||
@override
|
||
String get secondsLabel => '秒';
|
||
|
||
@override
|
||
String durationHoursMinutesSeconds(
|
||
Object hours,
|
||
Object minutes,
|
||
Object seconds,
|
||
) {
|
||
return '$hours小时$minutes分钟$seconds秒';
|
||
}
|
||
|
||
@override
|
||
String durationMinutesSeconds(Object minutes, Object seconds) {
|
||
return '$minutes分钟$seconds秒';
|
||
}
|
||
|
||
@override
|
||
String durationMinutesOnly(Object minutes) {
|
||
return '$minutes分钟';
|
||
}
|
||
|
||
@override
|
||
String durationSecondsOnly(Object seconds) {
|
||
return '$seconds秒';
|
||
}
|
||
|
||
@override
|
||
String get saveQuickAccess => '保存为快捷入口';
|
||
|
||
@override
|
||
String get startTimer => '启动定时器';
|
||
|
||
@override
|
||
String skipCurrentAlarmExecution(Object alarmName) {
|
||
return '已跳过 $alarmName 本次执行。';
|
||
}
|
||
|
||
@override
|
||
String get settingsTitle => '设置';
|
||
|
||
@override
|
||
String get settingsSubtitle => '精细控制声音、备份和自定义电台。';
|
||
|
||
@override
|
||
String get settingsGroupAudioTitle => '音频';
|
||
|
||
@override
|
||
String get settingsGroupStationsTitle => '电台';
|
||
|
||
@override
|
||
String get settingsGroupRecordingsTitle => '录音与音乐';
|
||
|
||
@override
|
||
String get settingsGroupApplicationTitle => '应用';
|
||
|
||
@override
|
||
String get infoSectionTitle => '信息';
|
||
|
||
@override
|
||
String get languageSectionTitle => '语言';
|
||
|
||
@override
|
||
String get languageSectionDescription => '选择应用语言的显示方式。';
|
||
|
||
@override
|
||
String get languageSystemDefault => '系统';
|
||
|
||
@override
|
||
String get languageSpanish => '西班牙语';
|
||
|
||
@override
|
||
String get languageEnglish => '英语';
|
||
|
||
@override
|
||
String languageUpdated(Object languageName) {
|
||
return '语言已更新:$languageName';
|
||
}
|
||
|
||
@override
|
||
String get languageUpdatedSystem => '语言已更新:系统';
|
||
|
||
@override
|
||
String get timerSectionTitle => '睡眠定时器';
|
||
|
||
@override
|
||
String get timerSectionAdd => '添加';
|
||
|
||
@override
|
||
String get timerSectionDescription => '自定义自动关闭电台时显示的快捷预设。';
|
||
|
||
@override
|
||
String get timerSectionRestoreRecommended => '恢复推荐时长';
|
||
|
||
@override
|
||
String get newQuickAccessTitle => '新的快捷入口';
|
||
|
||
@override
|
||
String get saveQuickAccessButton => '保存快捷入口';
|
||
|
||
@override
|
||
String get settingsSafeStatus => '安全';
|
||
|
||
@override
|
||
String get recordingsSectionTitle => '录音';
|
||
|
||
@override
|
||
String get recordingsFolderDialogTitle => '选择录音文件夹';
|
||
|
||
@override
|
||
String get recordingsPathUpdated => '录音路径已更新';
|
||
|
||
@override
|
||
String recordingsPathSaveError(Object error) {
|
||
return '无法保存路径:$error';
|
||
}
|
||
|
||
@override
|
||
String get recordingsDefaultFolderRestored => '将使用默认内部文件夹';
|
||
|
||
@override
|
||
String get recordingsFolderTitle => '录音文件夹';
|
||
|
||
@override
|
||
String get recordingsPathCalculating => '正在计算路径...';
|
||
|
||
@override
|
||
String get recordingsChangePath => '更改路径';
|
||
|
||
@override
|
||
String get recordingsUseDefaultPath => '使用默认路径';
|
||
|
||
@override
|
||
String get recordingsOriginalStreamHint => '电台将从原始音频流保存,不重新编码。';
|
||
|
||
@override
|
||
String get equalizerActive => '已启用';
|
||
|
||
@override
|
||
String get equalizerDisabled => '已停用';
|
||
|
||
@override
|
||
String get equalizerEnable => '启用均衡器';
|
||
|
||
@override
|
||
String get equalizerRealtimeSubtitle => '更改会实时应用到当前电台。';
|
||
|
||
@override
|
||
String get equalizerPendingSubtitle => '更改已保存,并会在 Android 启用该效果后应用。';
|
||
|
||
@override
|
||
String get equalizerPerStationTitle => '为此收藏使用专属均衡器';
|
||
|
||
@override
|
||
String equalizerPerStationActive(Object stationName) {
|
||
return '已为 $stationName 启用';
|
||
}
|
||
|
||
@override
|
||
String equalizerPerStationMain(Object stationName) {
|
||
return '正在为 $stationName 使用主均衡器';
|
||
}
|
||
|
||
@override
|
||
String get equalizerBaseExplainer =>
|
||
'这是基础均衡器:适用于所有没有专属设置的电台。某个电台的专属EQ可在其自己的播放界面中设置,并优先于此设置生效。';
|
||
|
||
@override
|
||
String get equalizerActiveOutputLabel => '当前输出';
|
||
|
||
@override
|
||
String get equalizerActiveOutputDefault => '此设备的扬声器';
|
||
|
||
@override
|
||
String get equalizerStationsWithOwnEqTitle => '拥有专属EQ的电台';
|
||
|
||
@override
|
||
String get equalizerStationsWithOwnEqSubtitle => '忽略此基础均衡器';
|
||
|
||
@override
|
||
String get equalizerStationsWithOwnEqEmpty => '目前还没有电台设置专属EQ。';
|
||
|
||
@override
|
||
String get equalizerSaveAsPresetAction => '保存为预设';
|
||
|
||
@override
|
||
String get equalizerResetToFlatAction => '重置为平坦';
|
||
|
||
@override
|
||
String get equalizerSavePresetDialogTitle => '保存为预设';
|
||
|
||
@override
|
||
String get equalizerSavePresetNameLabel => '预设名称';
|
||
|
||
@override
|
||
String get equalizerSavePresetEmptyNameError => '请输入预设名称。';
|
||
|
||
@override
|
||
String get equalizerSavePresetConfirm => '保存';
|
||
|
||
@override
|
||
String get preferredStationTitle => '首选电台';
|
||
|
||
@override
|
||
String get preferredStationDescription => '创建闹钟时会预先选择,也可用于快速播放。';
|
||
|
||
@override
|
||
String get preferredStationNoStationsTitle => '暂时没有可用电台';
|
||
|
||
@override
|
||
String get preferredStationNoStationsSubtitle => '请先收藏或加载电台,再选择首选电台。';
|
||
|
||
@override
|
||
String get preferredStationAutomaticFallback => '自动后备';
|
||
|
||
@override
|
||
String get preferredStationDefaultFavorite => '默认收藏';
|
||
|
||
@override
|
||
String preferredStationCurrent(Object stationName) {
|
||
return '当前首选:$stationName';
|
||
}
|
||
|
||
@override
|
||
String preferredStationAutoUsing(Object stationName) {
|
||
return '没有收藏:自动使用 $stationName';
|
||
}
|
||
|
||
@override
|
||
String get preferredStationPlay => '播放首选电台';
|
||
|
||
@override
|
||
String get customStationsTitle => '自定义电台';
|
||
|
||
@override
|
||
String get customStationsAdd => '添加';
|
||
|
||
@override
|
||
String get customStationsEmpty => '没有自定义电台。';
|
||
|
||
@override
|
||
String get playAction => '播放';
|
||
|
||
@override
|
||
String get deleteAction => '删除';
|
||
|
||
@override
|
||
String get addStationTitle => '添加电台';
|
||
|
||
@override
|
||
String get stationNameLabel => '名称 *';
|
||
|
||
@override
|
||
String get unnamedStation => '未命名电台';
|
||
|
||
@override
|
||
String get requiredField => '必填字段';
|
||
|
||
@override
|
||
String get streamUrlLabel => '音频流 URL *';
|
||
|
||
@override
|
||
String get invalidUrl => 'URL 无效';
|
||
|
||
@override
|
||
String get countryOptionalLabel => '国家/地区(可选)';
|
||
|
||
@override
|
||
String get saveStation => '保存电台';
|
||
|
||
@override
|
||
String get backupSectionTitle => '备份';
|
||
|
||
@override
|
||
String get backupExportTitle => '导出配置';
|
||
|
||
@override
|
||
String get backupExportSubtitle => '收藏、自定义电台和均衡器预设';
|
||
|
||
@override
|
||
String get backupImportTitle => '导入配置';
|
||
|
||
@override
|
||
String get backupImportSubtitle => '从备份文件恢复';
|
||
|
||
@override
|
||
String get backupShareSubject => 'PluriWave — 备份';
|
||
|
||
@override
|
||
String backupShareText(Object date) {
|
||
return 'PluriWave 配置已于 $date 导出';
|
||
}
|
||
|
||
@override
|
||
String backupExportError(Object error) {
|
||
return '导出错误:$error';
|
||
}
|
||
|
||
@override
|
||
String get backupImportConfirmMessage => '这会添加文件中的收藏、电台和预设。要继续吗?';
|
||
|
||
@override
|
||
String get backupImportSuccess => '配置已成功导入';
|
||
|
||
@override
|
||
String backupImportError(Object error) {
|
||
return '导入错误:$error';
|
||
}
|
||
|
||
@override
|
||
String get appVersionLoading => '正在加载版本...';
|
||
|
||
@override
|
||
String appVersionSubtitle(Object version) {
|
||
return '$version - 全球电台';
|
||
}
|
||
|
||
@override
|
||
String get savedFavoritesTitle => '已保存的收藏';
|
||
|
||
@override
|
||
String get stationFilterTitle => '电台筛选';
|
||
|
||
@override
|
||
String get stationFilterSubtitle => '仅显示已验证为活跃的电台';
|
||
|
||
@override
|
||
String get backgroundAudioTitle => '后台音频';
|
||
|
||
@override
|
||
String get backgroundAudioSubtitle => '屏幕关闭后继续播放';
|
||
|
||
@override
|
||
String get dash => '—';
|
||
|
||
@override
|
||
String get cancelAction => '取消';
|
||
|
||
@override
|
||
String get equalizerTitle => '均衡器';
|
||
|
||
@override
|
||
String get recordingsOpenFolder => '打开文件夹';
|
||
|
||
@override
|
||
String recordingsOpenFolderError(Object error) {
|
||
return '无法打开文件夹:$error';
|
||
}
|
||
|
||
@override
|
||
String get recordingsMaxSizeTitle => '最大录音大小';
|
||
|
||
@override
|
||
String recordingsMaxSizeSubtitle(int size) {
|
||
return '当前限制:$size MB';
|
||
}
|
||
|
||
@override
|
||
String get recordingsMaxSizeDialogTitle => '每段录音的最大大小';
|
||
|
||
@override
|
||
String get recordingsMaxSizeMbLabel => '最大兆字节数';
|
||
|
||
@override
|
||
String recordingsMaxSizeSaved(int size) {
|
||
return '录音限制已更新为 $size MB';
|
||
}
|
||
|
||
@override
|
||
String get recordingsLibraryTitle => '我的录音';
|
||
|
||
@override
|
||
String recordingsLibraryStorageCaption(int usedMb, int totalMb) {
|
||
return '已使用 $usedMb MB / 共 $totalMb MB';
|
||
}
|
||
|
||
@override
|
||
String get recordingsLibraryStorageFolderCaption =>
|
||
'Music/PluriWave · 达到上限时会删除最旧的文件';
|
||
|
||
@override
|
||
String get recordingsLibraryEmptyTitle => '暂无录音';
|
||
|
||
@override
|
||
String get recordingsLibraryEmptySubtitle => '你保存的录音会显示在这里。';
|
||
|
||
@override
|
||
String get recordingActionRename => '重命名';
|
||
|
||
@override
|
||
String get recordingActionShare => '分享';
|
||
|
||
@override
|
||
String get recordingActionDelete => '删除';
|
||
|
||
@override
|
||
String get recordingRenameDialogTitle => '重命名录音';
|
||
|
||
@override
|
||
String get recordingRenameLabel => '名称';
|
||
|
||
@override
|
||
String get recordingRenameEmptyError => '请输入名称';
|
||
|
||
@override
|
||
String get recordingDeleteConfirmTitle => '删除录音?';
|
||
|
||
@override
|
||
String get recordingDeleteConfirmMessage => '此操作无法撤销。';
|
||
|
||
@override
|
||
String get recordingsLibrarySettingsTooltip => '录音设置';
|
||
|
||
@override
|
||
String get stationOrderTitle => '电台排序';
|
||
|
||
@override
|
||
String get stationOrderByName => '按名称';
|
||
|
||
@override
|
||
String get stationOrderByQuality => '按质量';
|
||
|
||
@override
|
||
String get stationOrderByPopularity => '按热度';
|
||
|
||
@override
|
||
String get stationOrderScopeDescription => '适用于收藏、搜索、附近电台和快捷列表。';
|
||
|
||
@override
|
||
String get favoriteGroupsTitle => '收藏列表';
|
||
|
||
@override
|
||
String get favoriteGroupsDescription => '创建短列表来整理已保存的电台。';
|
||
|
||
@override
|
||
String get favoriteGroupsAdd => '添加列表';
|
||
|
||
@override
|
||
String get favoriteGroupsEdit => '编辑列表';
|
||
|
||
@override
|
||
String get favoriteGroupsDelete => '删除列表';
|
||
|
||
@override
|
||
String get favoriteGroupsNameLabel => '列表名称';
|
||
|
||
@override
|
||
String get favoriteGroupsNameTooLong => '最多 28 个字符。';
|
||
|
||
@override
|
||
String get favoriteGroupsUnassigned => '未分配';
|
||
|
||
@override
|
||
String get favoriteGroupsProtectedHint => '默认列表:不能编辑或删除。';
|
||
|
||
@override
|
||
String get favoriteGroupsCreated => '列表已创建';
|
||
|
||
@override
|
||
String get favoriteGroupsUpdated => '列表已更新';
|
||
|
||
@override
|
||
String get favoriteGroupsDeleted => '列表已删除;其中的电台已回到未分配。';
|
||
|
||
@override
|
||
String get favoriteGroupsAssign => '移动到列表';
|
||
|
||
@override
|
||
String favoriteGroupsAssignSubtitle(Object groupName) {
|
||
return '当前列表:$groupName';
|
||
}
|
||
|
||
@override
|
||
String favoriteGroupsAssigned(Object stationName, Object groupName) {
|
||
return '$stationName 已移动到 $groupName';
|
||
}
|
||
|
||
@override
|
||
String get favoritesTitle => '收藏';
|
||
|
||
@override
|
||
String get favoritesEmptyTitle => '还没有收藏';
|
||
|
||
@override
|
||
String get favoritesEmptySubtitle => '点按任意电台上的爱心,将它保存到你的收藏。';
|
||
|
||
@override
|
||
String get favoritesHeaderSubtitle => '按列表整理你的收藏,把重要电台放在手边。';
|
||
|
||
@override
|
||
String get favoritesCollection => '收藏集';
|
||
|
||
@override
|
||
String favoritesSavedCount(int count) {
|
||
return '已保存 $count 个';
|
||
}
|
||
|
||
@override
|
||
String get favoritesRemoveTooltip => '从收藏中移除';
|
||
|
||
@override
|
||
String favoritesRemovedMessage(Object stationName) {
|
||
return '$stationName 已从收藏中移除';
|
||
}
|
||
|
||
@override
|
||
String get favoritesFilterAllLabel => '全部';
|
||
|
||
@override
|
||
String favoriteGroupsChipLabel(Object groupName, int count) {
|
||
return '$groupName · $count';
|
||
}
|
||
|
||
@override
|
||
String get favoriteGroupsManage => '管理列表';
|
||
|
||
@override
|
||
String get customStationsAddCta => '添加自定义电台';
|
||
|
||
@override
|
||
String get alarmPostponedCurrentExecution => '本次闹钟已推迟。';
|
||
|
||
@override
|
||
String get searchScreenTitle => '搜索信号';
|
||
|
||
@override
|
||
String get searchScreenSubtitle => '按名称、国家/地区或语言查找电台,支持快速筛选和高对比度显示。';
|
||
|
||
@override
|
||
String get searchFiltersLabel => '筛选';
|
||
|
||
@override
|
||
String get searchHint => '地平线电台、爵士、新闻...';
|
||
|
||
@override
|
||
String get searchCountryFilterLabel => '国家/地区';
|
||
|
||
@override
|
||
String get searchLanguageFilterLabel => '语言';
|
||
|
||
@override
|
||
String get searchMinQualityFilterLabel => '最低质量';
|
||
|
||
@override
|
||
String get searchLoadingStationsLabel => '正在搜索电台…';
|
||
|
||
@override
|
||
String get searchEmptyTitle => '搜索电台';
|
||
|
||
@override
|
||
String get searchNoResultsTitle => '没有结果';
|
||
|
||
@override
|
||
String searchNoResultsForQueryTitle(Object query) {
|
||
return '未找到与\"$query\"相关的结果';
|
||
}
|
||
|
||
@override
|
||
String get searchEmptySubtitle => '使用顶部搜索栏或筛选标签,发现世界各地的电台信号。';
|
||
|
||
@override
|
||
String get searchNoResultsSubtitle => '尝试减少筛选条件,或换个名称搜索,找到正在播出的电台。';
|
||
|
||
@override
|
||
String searchResultsCount(num count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count 个结果',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String searchClearFiltersAction(num count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '清除 $count 个筛选条件',
|
||
one: '清除筛选条件',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String get countriesScreenTitle => '国家';
|
||
|
||
@override
|
||
String get countriesSearchHint => '国家或代码...';
|
||
|
||
@override
|
||
String get countriesYourLanguagesTitle => '你的语言';
|
||
|
||
@override
|
||
String get countriesAllTitle => '所有国家';
|
||
|
||
@override
|
||
String get radioCountriesError => '无法加载国家列表。';
|
||
|
||
@override
|
||
String get countrySpain => '西班牙';
|
||
|
||
@override
|
||
String get countryUsa => '美国';
|
||
|
||
@override
|
||
String get countryMexico => '墨西哥';
|
||
|
||
@override
|
||
String get countryArgentina => '阿根廷';
|
||
|
||
@override
|
||
String get countryUk => '英国';
|
||
|
||
@override
|
||
String get countryFrance => '法国';
|
||
|
||
@override
|
||
String get countryGermany => '德国';
|
||
|
||
@override
|
||
String get countryItaly => '意大利';
|
||
|
||
@override
|
||
String get countryBrazil => '巴西';
|
||
|
||
@override
|
||
String get countryJapan => '日本';
|
||
|
||
@override
|
||
String get languageNameSpanish => '西班牙语';
|
||
|
||
@override
|
||
String get languageNameEnglish => '英语';
|
||
|
||
@override
|
||
String get languageNameFrench => '法语';
|
||
|
||
@override
|
||
String get languageNameGerman => '德语';
|
||
|
||
@override
|
||
String get languageNamePortuguese => '葡萄牙语';
|
||
|
||
@override
|
||
String get languageNameItalian => '意大利语';
|
||
|
||
@override
|
||
String get languageNameJapanese => '日语';
|
||
|
||
@override
|
||
String get languageNameArabic => '阿拉伯语';
|
||
|
||
@override
|
||
String get languageNameRussian => '俄语';
|
||
|
||
@override
|
||
String get homeScreenSubtitle => '全球直播电台,清晰信号、智能收藏和竞赛风格的视觉体验。';
|
||
|
||
@override
|
||
String get exploreStations => '探索电台';
|
||
|
||
@override
|
||
String stationsCount(int count) {
|
||
return '$count 个电台';
|
||
}
|
||
|
||
@override
|
||
String get qualityHd => '高清音质';
|
||
|
||
@override
|
||
String get yourStationsTitle => '你的电台';
|
||
|
||
@override
|
||
String get seeAllAction => '查看全部';
|
||
|
||
@override
|
||
String get openFullPlayerTooltip => '打开完整播放器';
|
||
|
||
@override
|
||
String get nowListeningLabel => '正在收听';
|
||
|
||
@override
|
||
String get nothingPlayingTitle => '目前没有正在播放的内容';
|
||
|
||
@override
|
||
String get nothingPlayingSubtitle => '从“你的电台”中选择一个电台,或搜索一个开始收听。';
|
||
|
||
@override
|
||
String get nearYou => '你附近';
|
||
|
||
@override
|
||
String nearYouInCountry(Object country) {
|
||
return '你附近 · $country';
|
||
}
|
||
|
||
@override
|
||
String get detectAction => '检测';
|
||
|
||
@override
|
||
String get liveRadar => '直播雷达';
|
||
|
||
@override
|
||
String get genresTitle => '类型';
|
||
|
||
@override
|
||
String get exploreByTitle => '浏览分类';
|
||
|
||
@override
|
||
String get exploreTrendingTitle => '热门';
|
||
|
||
@override
|
||
String get exploreTrendingSubtitle => '今天';
|
||
|
||
@override
|
||
String get exploreNewTitle => '最新';
|
||
|
||
@override
|
||
String get exploreNewSubtitle => '本周';
|
||
|
||
@override
|
||
String get popularNowTitle => '当前热门';
|
||
|
||
@override
|
||
String get offlineBannerTitle => '无连接';
|
||
|
||
@override
|
||
String get retryAction => '重试';
|
||
|
||
@override
|
||
String get noStationsAvailable => '没有可用电台';
|
||
|
||
@override
|
||
String get noStationsAvailableSubtitle => '尝试刷新或选择其他类型,重新捕捉信号。';
|
||
|
||
@override
|
||
String get genrePop => '流行';
|
||
|
||
@override
|
||
String get genreRock => '摇滚';
|
||
|
||
@override
|
||
String get genreJazz => '爵士';
|
||
|
||
@override
|
||
String get genreClassical => '古典';
|
||
|
||
@override
|
||
String get genreElectronic => '电子';
|
||
|
||
@override
|
||
String get genreNews => '新闻';
|
||
|
||
@override
|
||
String get genreTalk => '谈话';
|
||
|
||
@override
|
||
String get genreHipHop => '嘻哈';
|
||
|
||
@override
|
||
String get genreCountry => '乡村';
|
||
|
||
@override
|
||
String get genreMetal => '金属';
|
||
|
||
@override
|
||
String get genreReggae => '雷鬼';
|
||
|
||
@override
|
||
String get genreLatin => '拉丁';
|
||
|
||
@override
|
||
String get alarmScreenTitle => '音乐唤醒';
|
||
|
||
@override
|
||
String get alarmScreenSubtitle => '带电台、安全声音、智能假期和始终可见下次执行时间的闹钟。';
|
||
|
||
@override
|
||
String get createAlarmAction => '创建闹钟';
|
||
|
||
@override
|
||
String alarmsCount(int count) {
|
||
return '$count 个闹钟';
|
||
}
|
||
|
||
@override
|
||
String get activeAlarmsWithoutNextTitle => '没有下次执行时间的活跃闹钟';
|
||
|
||
@override
|
||
String get noActiveAlarms => '没有活跃闹钟';
|
||
|
||
@override
|
||
String get nextAlarmTitle => '下一个闹钟';
|
||
|
||
@override
|
||
String activeAlarmsWithoutNextSubtitle(int count) {
|
||
return '有 $count 个活跃闹钟,但现在没有有效的未来日期。请检查日期、星期和假期。';
|
||
}
|
||
|
||
@override
|
||
String get createAlarmHint => '创建闹钟后,PluriWave 会自动计算下次执行时间。';
|
||
|
||
@override
|
||
String get alarmVacationPlay => '假期时响铃';
|
||
|
||
@override
|
||
String get alarmVacationPause => '假期时暂停';
|
||
|
||
@override
|
||
String alarmFadeInLabel(int seconds) {
|
||
return '渐入 ${seconds}s';
|
||
}
|
||
|
||
@override
|
||
String alarmNextExecution(Object date) {
|
||
return '下次执行:$date';
|
||
}
|
||
|
||
@override
|
||
String get alarmNoNextExecution => '没有活跃的下次执行。';
|
||
|
||
@override
|
||
String alarmSkippedExecution(Object date) {
|
||
return '已跳过一次执行:$date。';
|
||
}
|
||
|
||
@override
|
||
String get editAction => '编辑';
|
||
|
||
@override
|
||
String get skipNextAction => '跳过下一个';
|
||
|
||
@override
|
||
String get deleteTooltip => '删除';
|
||
|
||
@override
|
||
String get alarmHeroSkipAction => '跳过';
|
||
|
||
@override
|
||
String get alarmDeleteConfirmTitle => '删除闹钟?';
|
||
|
||
@override
|
||
String get alarmDeleteConfirmMessage => '此操作无法撤销。';
|
||
|
||
@override
|
||
String get alarmSkippedNoNextSnackbar => '已跳过闹钟。没有剩余的下次执行。';
|
||
|
||
@override
|
||
String alarmSkippedReturnsSnackbar(Object date) {
|
||
return '已跳过闹钟。将于 $date 恢复。';
|
||
}
|
||
|
||
@override
|
||
String alarmVacationPausedNoNext(Object vacationName) {
|
||
return '因假期($vacationName)暂停,且没有下次执行。';
|
||
}
|
||
|
||
@override
|
||
String alarmVacationPausedReturns(Object vacationName, Object date) {
|
||
return '因假期($vacationName)暂停,将于 $date 恢复。';
|
||
}
|
||
|
||
@override
|
||
String alarmVacationReturns(Object date) {
|
||
return '假期启用时,将于 $date 再次响铃。';
|
||
}
|
||
|
||
@override
|
||
String get defaultAlarmName => '音乐闹钟';
|
||
|
||
@override
|
||
String get newAlarmTitle => '新闹钟';
|
||
|
||
@override
|
||
String get editAlarmTitle => '编辑闹钟';
|
||
|
||
@override
|
||
String get nameField => '名称';
|
||
|
||
@override
|
||
String get timeField => '时间';
|
||
|
||
@override
|
||
String get dateField => '日期';
|
||
|
||
@override
|
||
String get onceOption => '一次';
|
||
|
||
@override
|
||
String get dailyOption => '每天';
|
||
|
||
@override
|
||
String get weekdaysOption => '星期';
|
||
|
||
@override
|
||
String get soundAndVolumeSection => '声音和音量';
|
||
|
||
@override
|
||
String get alarmFadeInTitle => '闹钟渐入';
|
||
|
||
@override
|
||
String get alarmFadeInOff => '0 s(无过渡)';
|
||
|
||
@override
|
||
String alarmFadeInSummary(int seconds) {
|
||
return '$seconds s(从 5% 到所选音量)';
|
||
}
|
||
|
||
@override
|
||
String get internalSafeSoundLabel => '内部安全声音';
|
||
|
||
@override
|
||
String get soundWarmSunrise => '温暖日出';
|
||
|
||
@override
|
||
String get soundSoftBell => '柔和铃声';
|
||
|
||
@override
|
||
String get soundDigitalPulse => '数字脉冲';
|
||
|
||
@override
|
||
String get favoriteStationLabel => '收藏电台';
|
||
|
||
@override
|
||
String get noStationUseInternalSound => '无电台:使用内部声音';
|
||
|
||
@override
|
||
String get alarmFallbackStationLabel => '备用电台';
|
||
|
||
@override
|
||
String get alarmStationPickerSearchHint => '按名称搜索电台';
|
||
|
||
@override
|
||
String get alarmSnoozeDurationTitle => '贪睡时长';
|
||
|
||
@override
|
||
String get snoozeAction => '贪睡';
|
||
|
||
@override
|
||
String alarmSnoozeOptionLabel(int minutes) {
|
||
return '$minutes 分钟';
|
||
}
|
||
|
||
@override
|
||
String get alarmSnoozeUsualLabel => '常用';
|
||
|
||
@override
|
||
String get saveFavoritesAlarmHint => '将电台保存到收藏,即可把它们用作音乐闹钟。';
|
||
|
||
@override
|
||
String get useCurrentStationAction => '使用当前电台';
|
||
|
||
@override
|
||
String get playDuringVacations => '假期期间响铃';
|
||
|
||
@override
|
||
String get playDuringVacationsHint => '如果关闭,下次执行会跳到第一个有效日期。';
|
||
|
||
@override
|
||
String get saveAlarmAction => '保存闹钟';
|
||
|
||
@override
|
||
String get chooseOneWeekdayError => '请至少选择一周中的一天。';
|
||
|
||
@override
|
||
String get androidReliabilityReview => '检查 Android 可靠性';
|
||
|
||
@override
|
||
String get statusOk => '正常';
|
||
|
||
@override
|
||
String get statusPending => '待处理';
|
||
|
||
@override
|
||
String androidReliabilityStatus(
|
||
Object exact,
|
||
Object notifications,
|
||
Object screen,
|
||
) {
|
||
return '可靠性:精确闹钟 $exact · 通知 $notifications · 屏幕 $screen';
|
||
}
|
||
|
||
@override
|
||
String get vacationRangesTitle => '假期范围';
|
||
|
||
@override
|
||
String get addAction => '添加';
|
||
|
||
@override
|
||
String get vacationRangesHint => '如果闹钟设置为“假期时暂停”,会自动跳过这些范围。';
|
||
|
||
@override
|
||
String get noVacationRangesLoaded => '未加载范围。';
|
||
|
||
@override
|
||
String get deleteRangeTooltip => '删除范围';
|
||
|
||
@override
|
||
String vacationRangesCount(int count) {
|
||
return '$count 个时间段';
|
||
}
|
||
|
||
@override
|
||
String vacationSummaryActiveCountdown(int days) {
|
||
return '进行中 · 还剩 $days 天';
|
||
}
|
||
|
||
@override
|
||
String vacationSummaryUpcomingCountdown(int days) {
|
||
return '下一个时间段在 $days 天后';
|
||
}
|
||
|
||
@override
|
||
String vacationImpactPausedLabel(Object times) {
|
||
return '暂停:$times';
|
||
}
|
||
|
||
@override
|
||
String vacationImpactContinuesLabel(Object times) {
|
||
return '仍会响铃:$times';
|
||
}
|
||
|
||
@override
|
||
String get vacationUpcomingSectionTitle => '已安排';
|
||
|
||
@override
|
||
String get vacationPastSectionTitle => '过往时间段';
|
||
|
||
@override
|
||
String get addVacationRangeCta => '添加时间段';
|
||
|
||
@override
|
||
String get vacationNoActiveRangeHint => '目前没有正在生效的假期时间段。';
|
||
|
||
@override
|
||
String get vacationsDefaultName => '假期';
|
||
|
||
@override
|
||
String get newVacationRangeTitle => '新的假期范围';
|
||
|
||
@override
|
||
String get startField => '开始';
|
||
|
||
@override
|
||
String get endField => '结束';
|
||
|
||
@override
|
||
String get saveRangeAction => '保存范围';
|
||
|
||
@override
|
||
String get noAlarmsYetTitle => '还没有闹钟。';
|
||
|
||
@override
|
||
String get noAlarmsYetSubtitle => '创建一个,设计你的音乐唤醒。';
|
||
|
||
@override
|
||
String get ringingInternalAudioActive => '正在使用内部安全音频响铃。';
|
||
|
||
@override
|
||
String get ringingPreparingInternalAudio => '正在准备内部安全音频。';
|
||
|
||
@override
|
||
String get stopAlarmAction => '停止闹钟';
|
||
|
||
@override
|
||
String get alarmStopFailedMessage => '无法确认闹钟已停止,请重试。';
|
||
|
||
@override
|
||
String get alarmForceStopAction => '强制停止';
|
||
|
||
@override
|
||
String get alarmMissedNotificationTitle => '错过的闹钟';
|
||
|
||
@override
|
||
String alarmMissedNotificationText(Object name) {
|
||
return '$name已在10分钟后自动静音。';
|
||
}
|
||
|
||
@override
|
||
String get pauseAction => '暂停';
|
||
|
||
@override
|
||
String miniPlayerOpenLabel(Object stationName) {
|
||
return '打开 $stationName 的播放器';
|
||
}
|
||
|
||
@override
|
||
String get playerIconLabel => '播放器';
|
||
|
||
@override
|
||
String get playbackStatusConnecting => '正在连接...';
|
||
|
||
@override
|
||
String get playbackStatusLive => '直播中';
|
||
|
||
@override
|
||
String get playbackStatusPaused => '已暂停';
|
||
|
||
@override
|
||
String get playbackStatusReconnecting => '正在重新连接...';
|
||
|
||
@override
|
||
String get playbackStatusConnectionError => '连接错误';
|
||
|
||
@override
|
||
String get playbackStatusStopped => '已停止';
|
||
|
||
@override
|
||
String stationSemanticLabel(Object stationName) {
|
||
return '电台 $stationName';
|
||
}
|
||
|
||
@override
|
||
String get favoritesAddTooltip => '添加到收藏';
|
||
|
||
@override
|
||
String favoritesAddedMessage(Object stationName) {
|
||
return '已将 $stationName 添加到收藏';
|
||
}
|
||
|
||
@override
|
||
String get stationIconLabel => '电台图标';
|
||
|
||
@override
|
||
String get liveNow => '直播中';
|
||
|
||
@override
|
||
String equalizerBandLabel(Object band) {
|
||
return '$band 频段';
|
||
}
|
||
|
||
@override
|
||
String equalizerBandValue(Object value) {
|
||
return '$value 分贝';
|
||
}
|
||
|
||
@override
|
||
String get equalizerPresetFlat => '平直';
|
||
|
||
@override
|
||
String get equalizerPresetRock => '摇滚';
|
||
|
||
@override
|
||
String get equalizerPresetPop => '流行';
|
||
|
||
@override
|
||
String get equalizerPresetBassBoost => '低音增强';
|
||
|
||
@override
|
||
String get equalizerPresetJazz => '爵士';
|
||
|
||
@override
|
||
String get equalizerPresetVoice => '人声';
|
||
|
||
@override
|
||
String get equalizerPresetCustom => '自定义';
|
||
|
||
@override
|
||
String get onboardingTitle => '欢迎使用 PluriWave';
|
||
|
||
@override
|
||
String get onboardingNewsTitle => '新功能';
|
||
|
||
@override
|
||
String get onboardingStartAction => '开始';
|
||
|
||
@override
|
||
String get onboardingCloseTooltip => '关闭';
|
||
|
||
@override
|
||
String radioRecordingError(Object error) {
|
||
return '录制电台时出错:$error';
|
||
}
|
||
|
||
@override
|
||
String get radioApiConnectionError => '无法连接到电台 API';
|
||
|
||
@override
|
||
String get radioSearchError => '搜索出错。请检查你的连接。';
|
||
|
||
@override
|
||
String get radioLoadMoreStationsError => '无法加载更多电台。';
|
||
|
||
@override
|
||
String get radioNearbyStationsError => '未能检测到附近的电台。请使用国家/地区筛选器。';
|
||
|
||
@override
|
||
String radioCannotPlayStation(Object stationName) {
|
||
return '无法播放“$stationName”';
|
||
}
|
||
|
||
@override
|
||
String get recordingSelectStationFirst => '请先选择一个电台再录制。';
|
||
|
||
@override
|
||
String recordingStartError(Object error) {
|
||
return '无法开始录制:$error';
|
||
}
|
||
|
||
@override
|
||
String get unsupportedConfigVersion => '不支持的配置版本';
|
||
|
||
@override
|
||
String get audioErrorGeneric => '播放错误';
|
||
|
||
@override
|
||
String get audioErrorNoInternet => '无互联网连接';
|
||
|
||
@override
|
||
String get audioErrorInvalidUrl => '电台 URL 无效';
|
||
|
||
@override
|
||
String get audioErrorNotFound => '该电台不可用(404 错误)';
|
||
|
||
@override
|
||
String get audioErrorTimeout => '连接超时';
|
||
|
||
@override
|
||
String get audioErrorCannotConnect => '无法连接到电台';
|
||
|
||
@override
|
||
String get audioErrorUnsupportedFormat => '不支持的音频流格式';
|
||
|
||
@override
|
||
String get audioErrorDecode => '解码音频流时出错';
|
||
|
||
@override
|
||
String get audioErrorCleartext => '此电台使用未加密的 HTTP,不被允许';
|
||
|
||
@override
|
||
String get audioErrorSsl => '电台的 SSL 证书无效';
|
||
|
||
@override
|
||
String get audioErrorCannotPlay => '无法播放此电台';
|
||
|
||
@override
|
||
String get audioErrorUnexpectedPlayback => '播放时出现意外错误';
|
||
|
||
@override
|
||
String get androidExactAlarmScheduleError => 'Android 无法安排精确闹钟。请检查精确闹钟权限。';
|
||
|
||
@override
|
||
String get recordingPathEmptyError => '录制路径不能为空';
|
||
|
||
@override
|
||
String get recordingMaxSizeInvalidError => '最大大小必须大于零';
|
||
|
||
@override
|
||
String get recordingAlreadyActiveError => '已有录制正在进行';
|
||
|
||
@override
|
||
String get alarmRingingFallbackActive => '正在使用内部安全音频播放。';
|
||
|
||
@override
|
||
String get alarmRingingPreparingFallback => '正在准备内部安全音频。';
|
||
|
||
@override
|
||
String get alarmRingingTryingStation => '正在尝试以最高可用音质播放你的电台。';
|
||
|
||
@override
|
||
String get alarmScheduleDaily => '每天早上';
|
||
|
||
@override
|
||
String alarmScheduleOnce(Object date) {
|
||
return '一次 · $date';
|
||
}
|
||
|
||
@override
|
||
String alarmScheduleWeekdays(Object days) {
|
||
return '星期:$days';
|
||
}
|
||
|
||
@override
|
||
String get alarmRepeatSectionLabel => '重复';
|
||
|
||
@override
|
||
String get alarmVolumeLabel => '音量';
|
||
|
||
@override
|
||
String get androidReliabilityTitle => '检查 Android 可靠性';
|
||
|
||
@override
|
||
String get closeAction => '关闭';
|
||
|
||
@override
|
||
String get customOption => '自定义';
|
||
|
||
@override
|
||
String get endLabel => '结束';
|
||
|
||
@override
|
||
String get equalizerDisable => '关闭均衡器';
|
||
|
||
@override
|
||
String get helpTitle => '帮助和教程';
|
||
|
||
@override
|
||
String get helpSubtitle => '查看 PluriWave 的功能、技巧和新内容。';
|
||
|
||
@override
|
||
String get indefiniteOption => '不限时';
|
||
|
||
@override
|
||
String get invalidNumber => '数字无效';
|
||
|
||
@override
|
||
String get nameLabel => '名称';
|
||
|
||
@override
|
||
String get notPlaying => '未播放';
|
||
|
||
@override
|
||
String get oneTimeOption => '一次';
|
||
|
||
@override
|
||
String get pausePlaybackTooltip => '暂停播放';
|
||
|
||
@override
|
||
String get playerQualityChangeAction => '更改';
|
||
|
||
@override
|
||
String get playerToolEqLabel => '专属EQ';
|
||
|
||
@override
|
||
String qualityOriginal(Object quality) {
|
||
return '原始质量:$quality';
|
||
}
|
||
|
||
@override
|
||
String get qualityUnknown => '未提供质量信息';
|
||
|
||
@override
|
||
String get recordAction => '录制';
|
||
|
||
@override
|
||
String get recordDurationTitle => '录制时长';
|
||
|
||
@override
|
||
String get recordRadioSubtitle => '选择要录制多长时间。';
|
||
|
||
@override
|
||
String get recordRadioTitle => '录制电台';
|
||
|
||
@override
|
||
String get recordingActiveTitle => '正在录制电台';
|
||
|
||
@override
|
||
String get recordingDirectTitle => '直接录制';
|
||
|
||
@override
|
||
String get recordingsOpenFolderPlainError => '无法打开录音文件夹';
|
||
|
||
@override
|
||
String get recordingsOpenLatest => '打开最新录音';
|
||
|
||
@override
|
||
String get recordingsOpenLatestError => '无法打开最新录音';
|
||
|
||
@override
|
||
String get startLabel => '开始';
|
||
|
||
@override
|
||
String get startPlaybackTooltip => '开始播放';
|
||
|
||
@override
|
||
String get stopAction => '停止';
|
||
|
||
@override
|
||
String get stopPlaybackTooltip => '停止播放';
|
||
|
||
@override
|
||
String get weekdayShortMonday => '周一';
|
||
|
||
@override
|
||
String get weekdayShortTuesday => '周二';
|
||
|
||
@override
|
||
String get weekdayShortWednesday => '周三';
|
||
|
||
@override
|
||
String get weekdayShortThursday => '周四';
|
||
|
||
@override
|
||
String get weekdayShortFriday => '周五';
|
||
|
||
@override
|
||
String get weekdayShortSaturday => '周六';
|
||
|
||
@override
|
||
String get weekdayShortSunday => '周日';
|
||
|
||
@override
|
||
String stationCount(int count) {
|
||
String _temp0 = intl.Intl.pluralLogic(
|
||
count,
|
||
locale: localeName,
|
||
other: '$count 个电台',
|
||
);
|
||
return '$_temp0';
|
||
}
|
||
|
||
@override
|
||
String get alarmIconLabel => '音乐闹钟';
|
||
|
||
@override
|
||
String get vacationIconLabel => '假期模式';
|
||
|
||
@override
|
||
String get alarmAdvancedSectionTitle => '高级';
|
||
|
||
@override
|
||
String get alarmInlineHourLabel => '时';
|
||
|
||
@override
|
||
String get alarmInlineMinuteLabel => '分';
|
||
|
||
@override
|
||
String get alarmVolumeRisingStatus => '音量渐强中';
|
||
|
||
@override
|
||
String get streamUrlHint => 'https://stream.example.com:8000/radio';
|
||
|
||
@override
|
||
String get advancedEqSectionTitle => '高级均衡器选项';
|
||
|
||
@override
|
||
String get advancedEqEnableToggle => '启用每设备 EQ';
|
||
|
||
@override
|
||
String get advancedEqEnableToggleSubtitle => '当音频输出更改时,自动应用不同的 EQ 预设。';
|
||
|
||
@override
|
||
String get advancedEqKnownDevicesTitle => '已知音频设备';
|
||
|
||
@override
|
||
String get advancedEqKnownDevicesEmpty => '尚未记录任何音频设备。连接设备以开始使用。';
|
||
|
||
@override
|
||
String advancedEqDevicePresetLabel(Object presetName) {
|
||
return '预设:$presetName';
|
||
}
|
||
|
||
@override
|
||
String preNoticeCountdown(int minutes) {
|
||
return '$minutes分钟后开始';
|
||
}
|
||
|
||
@override
|
||
String snoozeCountdown(int minutes) {
|
||
return '$minutes分钟后响铃';
|
||
}
|
||
|
||
@override
|
||
String get snoozeAgainAction => '再次小睡';
|
||
|
||
@override
|
||
String get alarmRingingNotificationTitle => 'PluriWave 闹钟';
|
||
|
||
@override
|
||
String get alarmFireChannelName => '响铃的闹钟';
|
||
|
||
@override
|
||
String get alarmFireChannelDescription => '音乐闹钟需要响起时的紧急声音和屏幕';
|
||
|
||
@override
|
||
String get alarmPreNoticeChannelName => '闹钟预告';
|
||
|
||
@override
|
||
String get alarmPreNoticeChannelDescription => '闹钟前的静音通知';
|
||
|
||
@override
|
||
String get openFolderChooserTitle => '打开文件夹';
|
||
|
||
@override
|
||
String get openRecordingChooserTitle => '打开录音';
|
||
|
||
@override
|
||
String get eqDeviceEditTitle => '编辑设备';
|
||
|
||
@override
|
||
String get eqDeviceNameLabel => '设备名称';
|
||
|
||
@override
|
||
String get eqDeviceNameHint => '例:客厅音箱';
|
||
|
||
@override
|
||
String get eqDeviceNameConfirm => '保存';
|
||
|
||
@override
|
||
String get eqDeviceConnected => '已连接';
|
||
|
||
@override
|
||
String get eqDeviceActiveOutput => '音频正通过此设备播放';
|
||
|
||
@override
|
||
String get eqDeviceRemove => '移除设备';
|
||
|
||
@override
|
||
String eqDeviceRemoved(Object device) {
|
||
return '已移除 $device';
|
||
}
|
||
|
||
@override
|
||
String get localMusicSectionTitle => '本地音乐(Android Auto)';
|
||
|
||
@override
|
||
String get localMusicSectionDescription => '选择此设备上的一个文件夹,以便在车内浏览和播放其中的音频文件。';
|
||
|
||
@override
|
||
String get localMusicFolderNotConfigured => '未选择文件夹';
|
||
|
||
@override
|
||
String get localMusicFolderTitle => '本地音乐文件夹';
|
||
|
||
@override
|
||
String get localMusicChoosePath => '选择文件夹';
|
||
|
||
@override
|
||
String get localMusicChangePath => '更改文件夹';
|
||
|
||
@override
|
||
String get localMusicFolderUpdated => '本地音乐文件夹已更新';
|
||
|
||
@override
|
||
String localMusicFolderSaveError(Object error) {
|
||
return '无法保存文件夹:$error';
|
||
}
|
||
|
||
@override
|
||
String get localMusicFolderGenericName => '已选文件夹';
|
||
|
||
@override
|
||
String get welcomeHeadline => '你的世界,直播中';
|
||
|
||
@override
|
||
String get welcomeBody => '来自238个国家的53,412个电台。保存你喜爱的电台,带上车,用它们唤醒你的每一天。';
|
||
|
||
@override
|
||
String get welcomeBullet1Title => '分电台均衡器';
|
||
|
||
@override
|
||
String get welcomeBullet1Subtitle => '还支持为每个输出设备设置独立预设';
|
||
|
||
@override
|
||
String get welcomeBullet2Title => 'Android Auto';
|
||
|
||
@override
|
||
String get welcomeBullet2Subtitle => '车内畅享你的收藏电台和本地音乐';
|
||
|
||
@override
|
||
String get welcomeBullet3Title => '音乐闹钟';
|
||
|
||
@override
|
||
String get welcomeBullet3Subtitle => '支持音量渐强唤醒和假期模式';
|
||
|
||
@override
|
||
String get welcomeCtaLabel => '开始收听';
|
||
}
|