Files
pluriwave/lib/l10n/gen/app_localizations_zh.dart
T
FreeTLab aa0b242374 feat(iap): add freemium unlock via one-time in-app purchase
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.
2026-08-10 20:37:07 +02:00

1792 lines
43 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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 => '恢复购买';
}