Adds a permanent, non-consumable premium unlock (EstadoEntitlement + PuertoCompras/ServicioComprasPlayBilling) that removes ads and unlocks alarm vacations, alarms past a 5-alarm free cap, recording start, and full Android Auto browsing. The phone equalizer stays free for everyone. - Entitlement is prefs-backed (compra_premium_v1), fail-open, and resolvable headlessly via esPremiumPersistido() for the Android Auto audio handler, which registers before runApp. - Android Auto reduced mode keeps the real root folder labels for free users; browsing into any of them (and playFromMediaId/playFromSearch/ skipToNext/skipToPrevious) is blocked at the getChildren/servicio_audio choke points, with a locked "Función Premium" item as the backstop. Current-station play/pause/stop stays untouched. A free -> premium transition actively invalidates the head unit's cached browse tree. - Ads (top banner + capped interstitial before adding a station or an alarm) are gated behind entitlement via ServicioAnuncios, using official Google test ad unit IDs pending AdMob provisioning. - Alarm cap UX shows an explanatory message with a secondary unlock action rather than a bare paywall jump; existing data is grandfathered. - 4 new localization keys translated across all 13 supported locales. Co-located tests use strict TDD (RED test before implementation) for every new pure-logic unit; full existing suite passes unchanged.
1792 lines
43 KiB
Dart
1792 lines
43 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 vacationExplainerBanner =>
|
||
'在这些时间段内,标记为“假期暂停”的闹钟不会响铃;标记为“始终响铃”的闹钟不受影响。';
|
||
|
||
@override
|
||
String get vacationNoActiveRangeHint => '目前没有正在生效的假期时间段。';
|
||
|
||
@override
|
||
String get vacationsDefaultName => '假期';
|
||
|
||
@override
|
||
String get newVacationRangeTitle => '新的假期范围';
|
||
|
||
@override
|
||
String get editVacationRangeTitle => '编辑假期范围';
|
||
|
||
@override
|
||
String get vacationDeleteConfirmTitle => '删除假期范围?';
|
||
|
||
@override
|
||
String get vacationDeleteConfirmMessage => '此操作无法撤销。';
|
||
|
||
@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 => '共9屏 · 随时可重新查看';
|
||
|
||
@override
|
||
String get tutorialSkipAction => '跳过';
|
||
|
||
@override
|
||
String get tutorialNextAction => '下一步';
|
||
|
||
@override
|
||
String get tutorialPage1Headline => '保存并整理你的电台';
|
||
|
||
@override
|
||
String get tutorialPage1Body =>
|
||
'点击心形图标即可保存电台。在“你的电台”中,你可以创建“每天早上”或“车载”等分组,并通过拖动重新排序。';
|
||
|
||
@override
|
||
String get tutorialPage2Headline => '一个通用均衡器,外加每个电台专属的均衡器';
|
||
|
||
@override
|
||
String get tutorialPage2Body =>
|
||
'在设置中可以调整通用均衡器。播放某个电台时,你还可以为它单独设置均衡器,该设置优先于通用设置。';
|
||
|
||
@override
|
||
String get tutorialPage3Headline => '录制正在收听的内容';
|
||
|
||
@override
|
||
String get tutorialPage3Body =>
|
||
'在播放器工具栏中点击“录制”,即可保存原始音频流。录音内容可在 设置 › 录音 中查看。';
|
||
|
||
@override
|
||
String get tutorialPage4Headline => '会迁就你的闹钟';
|
||
|
||
@override
|
||
String get tutorialPage4Body =>
|
||
'用喜欢的电台唤醒自己,可以推迟3分钟、5分钟或10分钟,还能添加假期时间段,让部分闹钟自动跳过。';
|
||
|
||
@override
|
||
String get tutorialPage5Headline => '收藏的电台,车载也能用';
|
||
|
||
@override
|
||
String get tutorialPage5Body =>
|
||
'将手机连接到Android Auto,即可看到收藏、全部电台、你的电台和本地音乐,大按钮专为驾驶设计。';
|
||
|
||
@override
|
||
String get tutorialPage6Headline => '自动重新连接';
|
||
|
||
@override
|
||
String get tutorialPage6Body =>
|
||
'信号中断时,PluriWave会自动重试连接,即使暂时没有网络也会继续显示已保存的收藏电台。';
|
||
|
||
@override
|
||
String get tutorialPage7Headline => '自选推迟时长';
|
||
|
||
@override
|
||
String get tutorialPage7Body =>
|
||
'闹钟响起时,“推迟”并非只有一种选择:你可以根据当下需要选择推迟3分钟、5分钟或10分钟。';
|
||
|
||
@override
|
||
String get tutorialPage8Headline => '找不到?自己添加';
|
||
|
||
@override
|
||
String get tutorialPage8Body =>
|
||
'在“你的电台”→添加自定义电台中,粘贴搜索结果里没有的电台的流媒体URL即可。它会保存在“你的电台”中,车载模式下同样可用。';
|
||
|
||
@override
|
||
String get tutorialPage9Headline => '完成,你已经了解核心功能';
|
||
|
||
@override
|
||
String get tutorialPage9BannerBody => '想随时重新观看本教程:设置 → 信息 → 帮助与教程。';
|
||
|
||
@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 => '开始收听';
|
||
|
||
@override
|
||
String get eqCustomActionEnableLabel => '启用均衡器';
|
||
|
||
@override
|
||
String get eqCustomActionDisableLabel => '关闭均衡器';
|
||
|
||
@override
|
||
String eqCustomActionPresetLabel(String preset) {
|
||
return '预设:$preset';
|
||
}
|
||
|
||
@override
|
||
String get alarmCardVacationPausedBadge => '因假期已暂停';
|
||
|
||
@override
|
||
String get alarmCardSchedulingFailedMessage => '该闹钟未能在系统中注册,因此可能不会响铃。';
|
||
|
||
@override
|
||
String get alarmCardPreNoticeFailedMessage => '该闹钟已设置,但其提前提醒未能设置成功。';
|
||
|
||
@override
|
||
String get alarmDiagnosticsExactAlarmsTitle => '精确闹钟排程';
|
||
|
||
@override
|
||
String get alarmDiagnosticsExactAlarmsHint => '即使手机处于休眠状态,也能让闹钟在设定的准确时间响起。';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNotificationsTitle => '通知';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNotificationsHint => '显示闹钟和提前提醒需要用到。';
|
||
|
||
@override
|
||
String get alarmDiagnosticsFullScreenTitle => '闹钟全屏显示';
|
||
|
||
@override
|
||
String get alarmDiagnosticsFullScreenHint => '即使手机已锁屏,也能让响铃界面自动出现。';
|
||
|
||
@override
|
||
String get alarmDiagnosticsBatteryTitle => '电池优化';
|
||
|
||
@override
|
||
String get alarmDiagnosticsBatteryHint => '防止系统在后台关闭PluriWave,让闹钟仍然可以响起。';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNativeCountTitle => '已在Android系统注册的闹钟';
|
||
|
||
@override
|
||
String alarmDiagnosticsNativeCountValue(int count) {
|
||
return '当前已注册:$count';
|
||
}
|
||
|
||
@override
|
||
String get alarmDiagnosticsNativeCountAttentionHint =>
|
||
'你已开启一个闹钟,但目前还没有闹钟在系统中注册。请重新打开PluriWave,或先解决上面列出的问题。';
|
||
|
||
@override
|
||
String get alarmDiagnosticsManufacturerLabel => '制造商';
|
||
|
||
@override
|
||
String get alarmDiagnosticsSdkLabel => 'Android版本(SDK)';
|
||
|
||
@override
|
||
String get alarmDiagnosticsNeedsAttentionStatus => '需要注意';
|
||
|
||
@override
|
||
String get alarmDiagnosticsAutostartTitle => '此手机还需要一步手动设置';
|
||
|
||
@override
|
||
String alarmDiagnosticsAutostartBody(String manufacturer) {
|
||
return '$manufacturer手机经常会关闭后台运行的应用以节省电量。没有任何设置可以让PluriWave自行开启——你需要自己为PluriWave开启自启动(有时也叫\"Autostart\"或\"后台活动\")。请在设置中查找应用或电池选项,或者查看手机自带的安全应用。';
|
||
}
|
||
|
||
@override
|
||
String get alarmDiagnosticsFixAction => '解决';
|
||
|
||
@override
|
||
String get alarmDiagnosticsIntentUnavailable => '无法在此手机上打开该设置界面。请尝试在设置中手动查找。';
|
||
|
||
@override
|
||
String get alarmDiagnosticsUnavailableHint => '我们还无法检查你的闹钟设置。';
|
||
|
||
@override
|
||
String get autoEqDisableOption => '关闭';
|
||
|
||
@override
|
||
String get funcionPremium => '高级功能';
|
||
|
||
@override
|
||
String get limiteAlarmasAlcanzado => '您已达到免费版 5 个闹钟的上限。';
|
||
|
||
@override
|
||
String get desbloquearPremium => '解锁高级版';
|
||
|
||
@override
|
||
String get restaurarCompras => '恢复购买';
|
||
}
|