Files
pluriwave/lib/l10n/gen/app_localizations_pt.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

1871 lines
46 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 Portuguese (`pt`).
class AppLocalizationsPt extends AppLocalizations {
AppLocalizationsPt([String locale = 'pt']) : super(locale);
@override
String get appTitle => 'PluriWave';
@override
String get navHome => 'Ouvir';
@override
String get navSearch => 'Buscar';
@override
String get navFavorites => 'Favoritos';
@override
String get navAlarms => 'Alarmes';
@override
String get navSettings => 'Configurações';
@override
String get actionOk => 'OK';
@override
String get sleepTimer => 'Timer de sono';
@override
String get sleepTimerDescription =>
'Desligamento suave da rádio com contagem regressiva exata.';
@override
String get cancelTimer => 'Cancelar timer';
@override
String get optionOther => 'Outro';
@override
String get customDurationTitle => 'Duração personalizada';
@override
String get durationGreaterThanZero => 'Escolha uma duração maior que zero.';
@override
String get hoursLabel => 'Horas';
@override
String get minutesLabel => 'Minutos';
@override
String get secondsLabel => 'Segundos';
@override
String durationHoursMinutesSeconds(
Object hours,
Object minutes,
Object seconds,
) {
return '$hours h $minutes min $seconds s';
}
@override
String durationMinutesSeconds(Object minutes, Object seconds) {
return '$minutes min $seconds s';
}
@override
String durationMinutesOnly(Object minutes) {
return '$minutes min';
}
@override
String durationSecondsOnly(Object seconds) {
return '$seconds s';
}
@override
String get saveQuickAccess => 'Salvar como acesso rápido';
@override
String get startTimer => 'Iniciar timer';
@override
String skipCurrentAlarmExecution(Object alarmName) {
return 'Esta execução de $alarmName foi ignorada.';
}
@override
String get settingsTitle => 'Configurações';
@override
String get settingsSubtitle =>
'Controle fino de som, backups e estações personalizadas.';
@override
String get settingsGroupAudioTitle => 'ÁUDIO';
@override
String get settingsGroupStationsTitle => 'ESTAÇÕES';
@override
String get settingsGroupRecordingsTitle => 'GRAVAÇÕES E MÚSICA';
@override
String get settingsGroupApplicationTitle => 'APLICATIVO';
@override
String get infoSectionTitle => 'Informações';
@override
String get languageSectionTitle => 'Idioma';
@override
String get languageSectionDescription =>
'Escolha como o idioma do app é exibido.';
@override
String get languageSystemDefault => 'Sistema';
@override
String get languageSpanish => 'Espanhol';
@override
String get languageEnglish => 'Inglês';
@override
String languageUpdated(Object languageName) {
return 'Idioma atualizado: $languageName';
}
@override
String get languageUpdatedSystem => 'Idioma atualizado: Sistema';
@override
String get timerSectionTitle => 'Timer de sono';
@override
String get timerSectionAdd => 'Adicionar';
@override
String get timerSectionDescription =>
'Personalize os acessos rápidos exibidos ao desligar a rádio automaticamente.';
@override
String get timerSectionRestoreRecommended => 'Restaurar tempos recomendados';
@override
String get newQuickAccessTitle => 'Novo acesso rápido';
@override
String get saveQuickAccessButton => 'Salvar acesso rápido';
@override
String get settingsSafeStatus => 'Seguro';
@override
String get recordingsSectionTitle => 'Gravações';
@override
String get recordingsFolderDialogTitle => 'Selecione a pasta de gravações';
@override
String get recordingsPathUpdated => 'Caminho de gravação atualizado';
@override
String recordingsPathSaveError(Object error) {
return 'Não foi possível salvar o caminho: $error';
}
@override
String get recordingsDefaultFolderRestored =>
'A pasta interna padrão será usada';
@override
String get recordingsFolderTitle => 'Pasta de gravação';
@override
String get recordingsPathCalculating => 'Calculando caminho...';
@override
String get recordingsChangePath => 'Alterar caminho';
@override
String get recordingsUseDefaultPath => 'Usar caminho padrão';
@override
String get recordingsOriginalStreamHint =>
'A rádio é salva a partir do stream original, sem recompressão.';
@override
String get equalizerActive => 'Ativo';
@override
String get equalizerDisabled => 'Desativado';
@override
String get equalizerEnable => 'Ativar equalizador';
@override
String get equalizerRealtimeSubtitle =>
'As alterações são aplicadas em tempo real à estação atual.';
@override
String get equalizerPendingSubtitle =>
'As alterações são salvas e serão aplicadas quando o Android habilitar o efeito.';
@override
String get equalizerPerStationTitle => 'Usar EQ próprio para este favorito';
@override
String equalizerPerStationActive(Object stationName) {
return 'Ativo para $stationName';
}
@override
String equalizerPerStationMain(Object stationName) {
return 'Usando o EQ principal para $stationName';
}
@override
String get equalizerBaseExplainer =>
'Este é o equalizador base: aplica-se a todas as estações sem ajuste próprio. O EQ próprio de uma estação é definido na sua própria tela de reprodução e tem prioridade sobre este.';
@override
String get equalizerActiveOutputLabel => 'Saída ativa';
@override
String get equalizerActiveOutputDefault => 'O alto-falante deste dispositivo';
@override
String get equalizerStationsWithOwnEqTitle => 'Estações com EQ próprio';
@override
String get equalizerStationsWithOwnEqSubtitle =>
'Ignoram este equalizador base';
@override
String get equalizerStationsWithOwnEqEmpty =>
'Nenhuma estação tem EQ próprio ainda.';
@override
String get equalizerSaveAsPresetAction => 'Salvar como Preset';
@override
String get equalizerResetToFlatAction => 'Repor para plano';
@override
String get equalizerSavePresetDialogTitle => 'Salvar como Preset';
@override
String get equalizerSavePresetNameLabel => 'Nome do Preset';
@override
String get equalizerSavePresetEmptyNameError =>
'Digite um nome para o Preset.';
@override
String get equalizerSavePresetConfirm => 'Salvar';
@override
String get preferredStationTitle => 'Estação preferida';
@override
String get preferredStationDescription =>
'Pré-selecionada ao criar alarmes e disponível para reprodução rápida.';
@override
String get preferredStationNoStationsTitle =>
'Ainda não há estações disponíveis';
@override
String get preferredStationNoStationsSubtitle =>
'Salve favoritas ou carregue estações para escolher uma preferida.';
@override
String get preferredStationAutomaticFallback => 'Fallback automático';
@override
String get preferredStationDefaultFavorite => 'Favorita padrão';
@override
String preferredStationCurrent(Object stationName) {
return 'Preferida atual: $stationName';
}
@override
String preferredStationAutoUsing(Object stationName) {
return 'Sem favoritas: usando automaticamente $stationName';
}
@override
String get preferredStationPlay => 'Reproduzir preferida';
@override
String get customStationsTitle => 'Estações personalizadas';
@override
String get customStationsAdd => 'Adicionar';
@override
String get customStationsEmpty => 'Não há estações personalizadas.';
@override
String get playAction => 'Reproduzir';
@override
String get deleteAction => 'Excluir';
@override
String get addStationTitle => 'Adicionar estação';
@override
String get stationNameLabel => 'Nome *';
@override
String get unnamedStation => 'Estação sem nome';
@override
String get requiredField => 'Campo obrigatório';
@override
String get streamUrlLabel => 'URL do stream *';
@override
String get invalidUrl => 'URL inválida';
@override
String get countryOptionalLabel => 'País (opcional)';
@override
String get saveStation => 'Salvar estação';
@override
String get backupSectionTitle => 'Backup';
@override
String get backupExportTitle => 'Exportar configuração';
@override
String get backupExportSubtitle =>
'Favoritos, estações personalizadas e presets de EQ';
@override
String get backupImportTitle => 'Importar configuração';
@override
String get backupImportSubtitle =>
'Restaurar a partir de um arquivo de backup';
@override
String get backupShareSubject => 'PluriWave — backup';
@override
String backupShareText(Object date) {
return 'Configuração do PluriWave exportada em $date';
}
@override
String backupExportError(Object error) {
return 'Erro ao exportar: $error';
}
@override
String get backupImportConfirmMessage =>
'Isso adicionará favoritos, estações e presets do arquivo. Continuar?';
@override
String get backupImportSuccess => 'Configuração importada com sucesso';
@override
String backupImportError(Object error) {
return 'Erro ao importar: $error';
}
@override
String get appVersionLoading => 'Carregando versão...';
@override
String appVersionSubtitle(Object version) {
return '$version - Rádio mundial';
}
@override
String get savedFavoritesTitle => 'Favoritos salvos';
@override
String get stationFilterTitle => 'Filtro de estações';
@override
String get stationFilterSubtitle => 'Apenas estações verificadas como ativas';
@override
String get backgroundAudioTitle => 'Áudio em segundo plano';
@override
String get backgroundAudioSubtitle => 'Continua ao desligar a tela';
@override
String get dash => '—';
@override
String get cancelAction => 'Cancelar';
@override
String get equalizerTitle => 'Equalizador';
@override
String get recordingsOpenFolder => 'Abrir pasta';
@override
String recordingsOpenFolderError(Object error) {
return 'Não foi possível abrir a pasta: $error';
}
@override
String get recordingsMaxSizeTitle => 'Tamanho máximo da gravação';
@override
String recordingsMaxSizeSubtitle(int size) {
return 'Limite atual: $size MB';
}
@override
String get recordingsMaxSizeDialogTitle => 'Tamanho máximo por gravação';
@override
String get recordingsMaxSizeMbLabel => 'Megabytes máximos';
@override
String recordingsMaxSizeSaved(int size) {
return 'Limite de gravação atualizado para $size MB';
}
@override
String get recordingsLibraryTitle => 'Minhas gravações';
@override
String recordingsLibraryStorageCaption(int usedMb, int totalMb) {
return '$usedMb MB de $totalMb MB usados';
}
@override
String get recordingsLibraryStorageFolderCaption =>
'Music/PluriWave · apaga as mais antigas ao atingir o limite';
@override
String get recordingsLibraryEmptyTitle => 'Ainda não há gravações';
@override
String get recordingsLibraryEmptySubtitle =>
'As gravações que você salvar vão aparecer aqui.';
@override
String get recordingActionRename => 'Renomear';
@override
String get recordingActionShare => 'Compartilhar';
@override
String get recordingActionDelete => 'Excluir';
@override
String get recordingRenameDialogTitle => 'Renomear gravação';
@override
String get recordingRenameLabel => 'Nome';
@override
String get recordingRenameEmptyError => 'Digite um nome';
@override
String get recordingDeleteConfirmTitle => 'Excluir gravação?';
@override
String get recordingDeleteConfirmMessage =>
'Esta ação não pode ser desfeita.';
@override
String get recordingsLibrarySettingsTooltip => 'Configurações de gravação';
@override
String get stationOrderTitle => 'Ordem das estações';
@override
String get stationOrderByName => 'Por nome';
@override
String get stationOrderByQuality => 'Por qualidade';
@override
String get stationOrderByPopularity => 'Por popularidade';
@override
String get stationOrderScopeDescription =>
'Aplica-se a favoritos, buscas, estações próximas e listas rápidas.';
@override
String get favoriteGroupsTitle => 'Listas de favoritos';
@override
String get favoriteGroupsDescription =>
'Crie listas curtas para organizar suas estações salvas.';
@override
String get favoriteGroupsAdd => 'Adicionar lista';
@override
String get favoriteGroupsEdit => 'Editar lista';
@override
String get favoriteGroupsDelete => 'Excluir lista';
@override
String get favoriteGroupsNameLabel => 'Nome da lista';
@override
String get favoriteGroupsNameTooLong => 'Máximo de 28 caracteres.';
@override
String get favoriteGroupsUnassigned => 'Sem atribuição';
@override
String get favoriteGroupsProtectedHint =>
'Lista padrão: não pode ser editada nem excluída.';
@override
String get favoriteGroupsCreated => 'Lista criada';
@override
String get favoriteGroupsUpdated => 'Lista atualizada';
@override
String get favoriteGroupsDeleted =>
'Lista excluída; suas estações voltam para Sem atribuição.';
@override
String get favoriteGroupsAssign => 'Mover para lista';
@override
String favoriteGroupsAssignSubtitle(Object groupName) {
return 'Lista atual: $groupName';
}
@override
String favoriteGroupsAssigned(Object stationName, Object groupName) {
return '$stationName movida para $groupName';
}
@override
String get favoritesTitle => 'Favoritos';
@override
String get favoritesEmptyTitle => 'Ainda sem favoritos';
@override
String get favoritesEmptySubtitle =>
'Toque no coração em qualquer estação para salvá-la na sua coleção.';
@override
String get favoritesHeaderSubtitle =>
'Organize sua coleção por listas e mantenha as rádios importantes por perto.';
@override
String get favoritesCollection => 'Coleção';
@override
String favoritesSavedCount(int count) {
return '$count salvas';
}
@override
String get favoritesRemoveTooltip => 'Remover dos favoritos';
@override
String favoritesRemovedMessage(Object stationName) {
return '$stationName removida dos favoritos';
}
@override
String get favoritesFilterAllLabel => 'Todas';
@override
String favoriteGroupsChipLabel(Object groupName, int count) {
return '$groupName · $count';
}
@override
String get favoriteGroupsManage => 'Gerenciar listas';
@override
String get customStationsAddCta => 'Adicionar estação personalizada';
@override
String get alarmPostponedCurrentExecution =>
'Alarme adiado para esta execução.';
@override
String get searchScreenTitle => 'Buscar sinal';
@override
String get searchScreenSubtitle =>
'Encontre estações por nome, país ou idioma com filtros rápidos e contraste elevado.';
@override
String get searchFiltersLabel => 'Filtros';
@override
String get searchHint => 'Rádio Horizonte, jazz, notícias...';
@override
String get searchCountryFilterLabel => 'País';
@override
String get searchLanguageFilterLabel => 'Idioma';
@override
String get searchMinQualityFilterLabel => 'Qualidade mínima';
@override
String get searchLoadingStationsLabel => 'PROCURANDO EMISSORAS…';
@override
String get searchEmptyTitle => 'Busque uma estação';
@override
String get searchNoResultsTitle => 'Sem resultados';
@override
String searchNoResultsForQueryTitle(Object query) {
return 'Nenhum resultado para \"$query\"';
}
@override
String get searchEmptySubtitle =>
'Use a barra superior ou os chips para descobrir estações do mundo todo.';
@override
String get searchNoResultsSubtitle =>
'Tente remover filtros ou digitar outro nome para encontrar uma estação ativa.';
@override
String searchResultsCount(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count resultados',
one: '1 resultado',
);
return '$_temp0';
}
@override
String searchClearFiltersAction(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'Remover $count filtros',
one: 'Remover filtro',
);
return '$_temp0';
}
@override
String get countriesScreenTitle => 'Países';
@override
String get countriesSearchHint => 'País ou código...';
@override
String get countriesYourLanguagesTitle => 'Seus idiomas';
@override
String get countriesAllTitle => 'Todos os países';
@override
String get radioCountriesError => 'Não foi possível carregar os países.';
@override
String get countrySpain => 'Espanha';
@override
String get countryUsa => 'EUA';
@override
String get countryMexico => 'México';
@override
String get countryArgentina => 'Argentina';
@override
String get countryUk => 'Reino Unido';
@override
String get countryFrance => 'França';
@override
String get countryGermany => 'Alemanha';
@override
String get countryItaly => 'Itália';
@override
String get countryBrazil => 'Brasil';
@override
String get countryJapan => 'Japão';
@override
String get languageNameSpanish => 'espanhol';
@override
String get languageNameEnglish => 'inglês';
@override
String get languageNameFrench => 'francês';
@override
String get languageNameGerman => 'alemão';
@override
String get languageNamePortuguese => 'português';
@override
String get languageNameItalian => 'italiano';
@override
String get languageNameJapanese => 'japonês';
@override
String get languageNameArabic => 'árabe';
@override
String get languageNameRussian => 'russo';
@override
String get homeScreenSubtitle =>
'Rádio global ao vivo com sinais limpos, favoritos inteligentes e uma experiência visual de game show.';
@override
String get exploreStations => 'Explorar estações';
@override
String stationsCount(int count) {
return '$count rádios';
}
@override
String get qualityHd => 'Qualidade HD';
@override
String get yourStationsTitle => 'Suas estações';
@override
String get seeAllAction => 'Ver todas';
@override
String get openFullPlayerTooltip => 'Abrir player completo';
@override
String get nowListeningLabel => 'Ouvindo agora';
@override
String get nothingPlayingTitle => 'Ainda não há nada tocando';
@override
String get nothingPlayingSubtitle =>
'Escolha uma estação em Suas estações ou pesquise uma para começar.';
@override
String get nearYou => 'Perto de você';
@override
String nearYouInCountry(Object country) {
return 'Perto de você · $country';
}
@override
String get detectAction => 'Detectar';
@override
String get liveRadar => 'Radar ao vivo';
@override
String get genresTitle => 'Gêneros';
@override
String get exploreByTitle => 'Navegar por';
@override
String get exploreTrendingTitle => 'Tendências';
@override
String get exploreTrendingSubtitle => 'Hoje';
@override
String get exploreNewTitle => 'Novidades';
@override
String get exploreNewSubtitle => 'Nesta semana';
@override
String get popularNowTitle => 'Populares agora';
@override
String get offlineBannerTitle => 'Sem conexão';
@override
String get retryAction => 'Tentar novamente';
@override
String get noStationsAvailable => 'Não há estações disponíveis';
@override
String get noStationsAvailableSubtitle =>
'Tente atualizar ou escolher outro gênero para captar sinal novamente.';
@override
String get genrePop => 'Pop';
@override
String get genreRock => 'Rock';
@override
String get genreJazz => 'Jazz';
@override
String get genreClassical => 'Clássica';
@override
String get genreElectronic => 'Eletrônica';
@override
String get genreNews => 'Notícias';
@override
String get genreTalk => 'Conversa';
@override
String get genreHipHop => 'Hip-hop';
@override
String get genreCountry => 'Country';
@override
String get genreMetal => 'Metal';
@override
String get genreReggae => 'Reggae';
@override
String get genreLatin => 'Latina';
@override
String get alarmScreenTitle => 'Despertar musical';
@override
String get alarmScreenSubtitle =>
'Alarmes com rádio, som seguro, férias inteligentes e próxima execução sempre visível.';
@override
String get createAlarmAction => 'Criar alarme';
@override
String alarmsCount(int count) {
return '$count alarmes';
}
@override
String get activeAlarmsWithoutNextTitle =>
'Alarmes ativos sem próxima execução';
@override
String get noActiveAlarms => 'Sem alarmes ativos';
@override
String get nextAlarmTitle => 'Próximo alarme';
@override
String activeAlarmsWithoutNextSubtitle(int count) {
return 'Há $count alarme(s) ativos, mas no momento não têm uma data futura válida. Verifique data, dias e férias.';
}
@override
String get createAlarmHint =>
'Crie um alarme e o PluriWave calculará automaticamente a próxima execução.';
@override
String get alarmVacationPlay => 'Toca durante as férias';
@override
String get alarmVacationPause => 'Pausa nas férias';
@override
String alarmFadeInLabel(int seconds) {
return 'Fade-in ${seconds}s';
}
@override
String alarmNextExecution(Object date) {
return 'Próxima execução: $date';
}
@override
String get alarmNoNextExecution => 'Não há próxima execução ativa.';
@override
String alarmSkippedExecution(Object date) {
return 'Uma execução foi ignorada: $date.';
}
@override
String get editAction => 'Editar';
@override
String get skipNextAction => 'Ignorar próxima';
@override
String get deleteTooltip => 'Excluir';
@override
String get alarmHeroSkipAction => 'Pular';
@override
String get alarmDeleteConfirmTitle => 'Excluir alarme?';
@override
String get alarmDeleteConfirmMessage => 'Esta ação não pode ser desfeita.';
@override
String get alarmSkippedNoNextSnackbar =>
'Alarme ignorado. Não resta próxima execução.';
@override
String alarmSkippedReturnsSnackbar(Object date) {
return 'Alarme ignorado. Voltará em $date.';
}
@override
String alarmVacationPausedNoNext(Object vacationName) {
return 'Está pausado por férias ($vacationName) e sem próxima execução.';
}
@override
String alarmVacationPausedReturns(Object vacationName, Object date) {
return 'Está pausado por férias ($vacationName) e volta em $date.';
}
@override
String alarmVacationReturns(Object date) {
return 'Com férias ativas, tocará novamente em $date.';
}
@override
String get defaultAlarmName => 'Despertador musical';
@override
String get newAlarmTitle => 'Novo alarme';
@override
String get editAlarmTitle => 'Editar alarme';
@override
String get nameField => 'Nome';
@override
String get timeField => 'Hora';
@override
String get dateField => 'Data';
@override
String get onceOption => 'Uma vez';
@override
String get dailyOption => 'Diária';
@override
String get weekdaysOption => 'Dias';
@override
String get soundAndVolumeSection => 'Som e volume';
@override
String get alarmFadeInTitle => 'Fade-in do alarme';
@override
String get alarmFadeInOff => '0 s (sem transição)';
@override
String alarmFadeInSummary(int seconds) {
return '$seconds s (de 5% ao volume escolhido)';
}
@override
String get internalSafeSoundLabel => 'Som seguro interno';
@override
String get soundWarmSunrise => 'Amanhecer acolhedor';
@override
String get soundSoftBell => 'Sino suave';
@override
String get soundDigitalPulse => 'Pulso digital';
@override
String get favoriteStationLabel => 'Estação favorita';
@override
String get noStationUseInternalSound => 'Sem estação: usar som interno';
@override
String get alarmFallbackStationLabel => 'Estação reserva';
@override
String get alarmStationPickerSearchHint => 'Buscar estação pelo nome';
@override
String get alarmSnoozeDurationTitle => 'Duração da soneca';
@override
String get snoozeAction => 'Soneca';
@override
String alarmSnoozeOptionLabel(int minutes) {
return '$minutes min';
}
@override
String get alarmSnoozeUsualLabel => 'usual';
@override
String get saveFavoritesAlarmHint =>
'Salve estações nos Favoritos para usá-las como alarme musical.';
@override
String get useCurrentStationAction => 'Usar estação atual';
@override
String get playDuringVacations => 'Tocar durante as férias';
@override
String get playDuringVacationsHint =>
'Se você desativar, a próxima execução saltará para o primeiro dia válido.';
@override
String get saveAlarmAction => 'Salvar alarme';
@override
String get chooseOneWeekdayError => 'Escolha pelo menos um dia da semana.';
@override
String get androidReliabilityReview => 'Revisar confiabilidade Android';
@override
String get statusOk => 'OK';
@override
String get statusPending => 'pendente';
@override
String androidReliabilityStatus(
Object exact,
Object notifications,
Object screen,
) {
return 'Confiabilidade: exatos $exact · notificações $notifications · tela $screen';
}
@override
String get vacationRangesTitle => 'Períodos de férias';
@override
String get addAction => 'Adicionar';
@override
String get vacationRangesHint =>
'Se um alarme tiver \"Pausa nas férias\", estes períodos serão ignorados automaticamente.';
@override
String get noVacationRangesLoaded => 'Nenhum período carregado.';
@override
String get deleteRangeTooltip => 'Excluir período';
@override
String vacationRangesCount(int count) {
return '$count períodos';
}
@override
String vacationSummaryActiveCountdown(int days) {
return 'Em andamento · faltam $days dias';
}
@override
String vacationSummaryUpcomingCountdown(int days) {
return 'Próximo período em $days dias';
}
@override
String vacationImpactPausedLabel(Object times) {
return 'Pausado: $times';
}
@override
String vacationImpactContinuesLabel(Object times) {
return 'Continua tocando: $times';
}
@override
String get vacationUpcomingSectionTitle => 'PROGRAMADOS';
@override
String get vacationPastSectionTitle => 'Períodos passados';
@override
String get addVacationRangeCta => 'Adicionar período';
@override
String get vacationExplainerBanner =>
'Durante esses periodos, os alarmes marcados como \"pausar nas ferias\" nao tocam. Os marcados como \"tocar sempre\" nao sao afetados.';
@override
String get vacationNoActiveRangeHint =>
'Não há período de férias ativo no momento.';
@override
String get vacationsDefaultName => 'Férias';
@override
String get newVacationRangeTitle => 'Novo período de férias';
@override
String get editVacationRangeTitle => 'Editar período de férias';
@override
String get vacationDeleteConfirmTitle => 'Excluir período de férias?';
@override
String get vacationDeleteConfirmMessage => 'Esta ação não pode ser desfeita.';
@override
String get startField => 'Início';
@override
String get endField => 'Fim';
@override
String get saveRangeAction => 'Salvar período';
@override
String get noAlarmsYetTitle => 'Ainda não há alarmes.';
@override
String get noAlarmsYetSubtitle =>
'Crie um para configurar seu despertar musical.';
@override
String get ringingInternalAudioActive => 'Tocando com som seguro interno.';
@override
String get ringingPreparingInternalAudio => 'Preparando som seguro interno.';
@override
String get stopAlarmAction => 'Parar alarme';
@override
String get alarmStopFailedMessage =>
'Não conseguimos confirmar que o alarme parou. Tente novamente.';
@override
String get alarmForceStopAction => 'Forçar parada';
@override
String get alarmMissedNotificationTitle => 'Alarme perdido';
@override
String alarmMissedNotificationText(Object name) {
return '$name foi silenciado automaticamente após 10 minutos.';
}
@override
String get pauseAction => 'Pausar';
@override
String miniPlayerOpenLabel(Object stationName) {
return 'Abrir reprodutor de $stationName';
}
@override
String get playerIconLabel => 'Reprodutor';
@override
String get playbackStatusConnecting => 'Conectando...';
@override
String get playbackStatusLive => 'Ao vivo';
@override
String get playbackStatusPaused => 'Pausado';
@override
String get playbackStatusReconnecting => 'Reconectando...';
@override
String get playbackStatusConnectionError => 'Erro de conexão';
@override
String get playbackStatusStopped => 'Parado';
@override
String stationSemanticLabel(Object stationName) {
return 'Estação $stationName';
}
@override
String get favoritesAddTooltip => 'Adicionar aos favoritos';
@override
String favoritesAddedMessage(Object stationName) {
return '$stationName adicionada aos favoritos';
}
@override
String get stationIconLabel => 'Ícone da estação';
@override
String get liveNow => 'Ao vivo';
@override
String equalizerBandLabel(Object band) {
return 'Banda $band';
}
@override
String equalizerBandValue(Object value) {
return '$value decibéis';
}
@override
String get equalizerPresetFlat => 'Plano';
@override
String get equalizerPresetRock => 'Rock';
@override
String get equalizerPresetPop => 'Pop';
@override
String get equalizerPresetBassBoost => 'Reforço de graves';
@override
String get equalizerPresetJazz => 'Jazz';
@override
String get equalizerPresetVoice => 'Voz';
@override
String get equalizerPresetCustom => 'Personalizado';
@override
String get onboardingTitle => 'Bem-vindo ao PluriWave';
@override
String get onboardingNewsTitle => 'Novidades';
@override
String get onboardingStartAction => 'Começar';
@override
String get onboardingCloseTooltip => 'Fechar';
@override
String radioRecordingError(Object error) {
return 'Erro ao gravar a rádio: $error';
}
@override
String get radioApiConnectionError => 'Sem conexão com a API de rádio';
@override
String get radioSearchError => 'Erro na busca. Verifique sua conexão.';
@override
String get radioLoadMoreStationsError =>
'Não foi possível carregar mais estações.';
@override
String get radioNearbyStationsError =>
'Não foi possível detectar estações próximas. Use filtros por país.';
@override
String radioCannotPlayStation(Object stationName) {
return 'Não é possível reproduzir \"$stationName\"';
}
@override
String get recordingSelectStationFirst =>
'Primeiro selecione uma estação para gravar.';
@override
String recordingStartError(Object error) {
return 'Não foi possível iniciar a gravação: $error';
}
@override
String get unsupportedConfigVersion =>
'Versão de configuração não compatível';
@override
String get audioErrorGeneric => 'Erro de reprodução';
@override
String get audioErrorNoInternet => 'Sem conexão com a internet';
@override
String get audioErrorInvalidUrl => 'A URL da rádio não é válida';
@override
String get audioErrorNotFound => 'A rádio não está disponível (erro 404)';
@override
String get audioErrorTimeout => 'Tempo esgotado ao conectar';
@override
String get audioErrorCannotConnect => 'Não é possível conectar à rádio';
@override
String get audioErrorUnsupportedFormat => 'Formato de stream não compatível';
@override
String get audioErrorDecode => 'Erro ao decodificar o stream de áudio';
@override
String get audioErrorCleartext =>
'Esta rádio usa HTTP sem criptografia, o que não é permitido';
@override
String get audioErrorSsl => 'Certificado SSL inválido na rádio';
@override
String get audioErrorCannotPlay => 'Não é possível reproduzir esta rádio';
@override
String get audioErrorUnexpectedPlayback => 'Erro inesperado ao reproduzir';
@override
String get androidExactAlarmScheduleError =>
'O Android não conseguiu agendar um alarme exato. Verifique a permissão de alarmes exatos.';
@override
String get recordingPathEmptyError =>
'O caminho de gravação não pode estar vazio';
@override
String get recordingMaxSizeInvalidError =>
'O tamanho máximo deve ser maior que zero';
@override
String get recordingAlreadyActiveError => 'Já há uma gravação em andamento';
@override
String get alarmRingingFallbackActive => 'Tocando com áudio interno seguro.';
@override
String get alarmRingingPreparingFallback =>
'Preparando áudio interno seguro.';
@override
String get alarmRingingTryingStation =>
'Tentando reproduzir sua estação com a maior qualidade disponível.';
@override
String get alarmScheduleDaily => 'Todas as manhãs';
@override
String alarmScheduleOnce(Object date) {
return 'Uma vez · $date';
}
@override
String alarmScheduleWeekdays(Object days) {
return 'Dias: $days';
}
@override
String get alarmRepeatSectionLabel => 'REPETIÇÃO';
@override
String get alarmVolumeLabel => 'Volume';
@override
String get androidReliabilityTitle => 'Revisar confiabilidade Android';
@override
String get closeAction => 'Fechar';
@override
String get customOption => 'Personalizada';
@override
String get endLabel => 'Fim';
@override
String get equalizerDisable => 'Desativar equalizador';
@override
String get helpTitle => 'Ajuda e tutorial';
@override
String get helpSubtitle => '9 ecrãs · reveja quando quiser';
@override
String get tutorialSkipAction => 'Pular';
@override
String get tutorialNextAction => 'Avançar';
@override
String get tutorialPage1Headline => 'Guarde as suas estações e agrupe-as';
@override
String get tutorialPage1Body =>
'Toque no coração para guardar uma estação. Em «Suas estações» pode criar grupos como «Todas as manhãs» ou «Carro» e reordená-las arrastando.';
@override
String get tutorialPage2Headline =>
'Um equalizador geral e outro por estação';
@override
String get tutorialPage2Body =>
'Em Definições define o equalizador geral. E, ao reproduzir uma estação específica, pode dar-lhe o seu próprio ajuste, que prevalece sobre o geral.';
@override
String get tutorialPage3Headline => 'Grave o que está a ouvir';
@override
String get tutorialPage3Body =>
'Na bandeja de ferramentas do leitor, «Gravar» guarda o stream original. Encontre as suas gravações em Definições Gravações.';
@override
String get tutorialPage4Headline => 'Alarmes que se adaptam a si';
@override
String get tutorialPage4Body =>
'Acorde com a sua estação favorita, adie 3, 5 ou 10 minutos, e adicione períodos de férias para que alguns alarmes se saltem sozinhos.';
@override
String get tutorialPage5Headline => 'Os seus favoritos, também no carro';
@override
String get tutorialPage5Body =>
'Ligue o telemóvel ao Android Auto e encontre Favoritos, Todas as estações, Suas estações e a sua Música local, com botões grandes pensados para conduzir.';
@override
String get tutorialPage6Headline => 'Reconecta-se sozinho';
@override
String get tutorialPage6Body =>
'Se o sinal cair, o PluriWave tenta novamente de forma automática e continua a mostrar os seus favoritos guardados mesmo sem ligação.';
@override
String get tutorialPage7Headline => 'Escolha quanto tempo adiar';
@override
String get tutorialPage7Body =>
'Quando um alarme toca, não existe um único «adiar»: escolhe 3, 5 ou 10 minutos conforme o que precisar nesse momento.';
@override
String get tutorialPage8Headline => 'Não a encontra? Adicione-a você mesmo';
@override
String get tutorialPage8Body =>
'Em «Suas estações» → Adicionar estação personalizada, cole o URL do stream de uma estação que não esteja na pesquisa. Fica guardada em «Suas estações», também disponível no carro.';
@override
String get tutorialPage9Headline => 'Pronto, já conhece o essencial';
@override
String get tutorialPage9BannerBody =>
'Para rever este tutorial quando quiser: Definições → Informação → Ajuda e tutorial.';
@override
String get indefiniteOption => 'Indefinida';
@override
String get invalidNumber => 'Número inválido';
@override
String get nameLabel => 'Nome';
@override
String get notPlaying => 'Não está reproduzindo';
@override
String get oneTimeOption => 'Uma vez';
@override
String get pausePlaybackTooltip => 'Pausar reprodução';
@override
String get playerQualityChangeAction => 'Alterar';
@override
String get playerToolEqLabel => 'EQ próprio';
@override
String qualityOriginal(Object quality) {
return 'Qualidade original: $quality';
}
@override
String get qualityUnknown => 'Qualidade não informada';
@override
String get recordAction => 'Gravar';
@override
String get recordDurationTitle => 'Duração da gravação';
@override
String get recordRadioSubtitle => 'Escolha por quanto tempo deseja gravar.';
@override
String get recordRadioTitle => 'Gravar rádio';
@override
String get recordingActiveTitle => 'Gravando rádio';
@override
String get recordingDirectTitle => 'Gravação direta';
@override
String get recordingsOpenFolderPlainError =>
'Não foi possível abrir a pasta de gravações';
@override
String get recordingsOpenLatest => 'Abrir última gravação';
@override
String get recordingsOpenLatestError =>
'Não foi possível abrir a última gravação';
@override
String get startLabel => 'Início';
@override
String get startPlaybackTooltip => 'Iniciar reprodução';
@override
String get stopAction => 'Parar';
@override
String get stopPlaybackTooltip => 'Parar reprodução';
@override
String get weekdayShortMonday => 'Seg';
@override
String get weekdayShortTuesday => 'Ter';
@override
String get weekdayShortWednesday => 'Qua';
@override
String get weekdayShortThursday => 'Qui';
@override
String get weekdayShortFriday => 'Sex';
@override
String get weekdayShortSaturday => 'Sáb';
@override
String get weekdayShortSunday => 'Dom';
@override
String stationCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count estações',
one: '1 estação',
);
return '$_temp0';
}
@override
String get alarmIconLabel => 'Alarme musical';
@override
String get vacationIconLabel => 'Modo férias';
@override
String get alarmAdvancedSectionTitle => 'Avançado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Aumentando o volume';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
@override
String get advancedEqSectionTitle => 'Opções avançadas de equalização';
@override
String get advancedEqEnableToggle => 'Ativar EQ por dispositivo';
@override
String get advancedEqEnableToggleSubtitle =>
'Aplica automaticamente um preset de EQ diferente quando a saída de áudio muda.';
@override
String get advancedEqKnownDevicesTitle => 'Dispositivos de áudio conhecidos';
@override
String get advancedEqKnownDevicesEmpty =>
'Nenhum dispositivo de áudio registrado ainda. Conecte um dispositivo para começar.';
@override
String advancedEqDevicePresetLabel(Object presetName) {
return 'Preset: $presetName';
}
@override
String preNoticeCountdown(int minutes) {
return 'Começa em $minutes min';
}
@override
String snoozeCountdown(int minutes) {
return 'Toca em $minutes min';
}
@override
String get snoozeAgainAction => 'Adiar novamente';
@override
String get alarmRingingNotificationTitle => 'Alarme PluriWave';
@override
String get alarmFireChannelName => 'Alarmes tocando';
@override
String get alarmFireChannelDescription =>
'Som e tela urgentes quando um alarme musical deve tocar';
@override
String get alarmPreNoticeChannelName => 'Avisos de alarme';
@override
String get alarmPreNoticeChannelDescription =>
'Notificações silenciosas antes do alarme';
@override
String get openFolderChooserTitle => 'Abrir pasta';
@override
String get openRecordingChooserTitle => 'Abrir gravação';
@override
String get eqDeviceEditTitle => 'Editar dispositivo';
@override
String get eqDeviceNameLabel => 'Nome do dispositivo';
@override
String get eqDeviceNameHint => 'Ex: Caixa da sala';
@override
String get eqDeviceNameConfirm => 'Salvar';
@override
String get eqDeviceConnected => 'Conectado';
@override
String get eqDeviceActiveOutput => 'O áudio está a sair por este dispositivo';
@override
String get eqDeviceRemove => 'Remover dispositivo';
@override
String eqDeviceRemoved(Object device) {
return '$device removido';
}
@override
String get localMusicSectionTitle => 'Música local (Android Auto)';
@override
String get localMusicSectionDescription =>
'Escolha uma pasta neste dispositivo para navegar e reproduzir os arquivos de áudio dela no carro.';
@override
String get localMusicFolderNotConfigured => 'Nenhuma pasta selecionada';
@override
String get localMusicFolderTitle => 'Pasta de música local';
@override
String get localMusicChoosePath => 'Escolher pasta';
@override
String get localMusicChangePath => 'Alterar pasta';
@override
String get localMusicFolderUpdated => 'Pasta de música local atualizada';
@override
String localMusicFolderSaveError(Object error) {
return 'Não foi possível salvar a pasta: $error';
}
@override
String get localMusicFolderGenericName => 'Pasta selecionada';
@override
String get welcomeHeadline => 'Seu mundo, ao vivo';
@override
String get welcomeBody =>
'53.412 estações de 238 países. Salve suas favoritas, leve-as para o carro e acorde com elas.';
@override
String get welcomeBullet1Title => 'Equalizador por estação';
@override
String get welcomeBullet1Subtitle =>
'Além de um Preset por dispositivo de saída';
@override
String get welcomeBullet2Title => 'Android Auto';
@override
String get welcomeBullet2Subtitle =>
'Suas favoritas e sua música local no carro';
@override
String get welcomeBullet3Title => 'Alarmes musicais';
@override
String get welcomeBullet3Subtitle =>
'Com aumento progressivo do volume e modo férias';
@override
String get welcomeCtaLabel => 'Começar a ouvir';
@override
String get eqCustomActionEnableLabel => 'Ativar equalizador';
@override
String get eqCustomActionDisableLabel => 'Desativar equalizador';
@override
String eqCustomActionPresetLabel(String preset) {
return 'Predefinição: $preset';
}
@override
String get alarmCardVacationPausedBadge => 'Pausada por férias';
@override
String get alarmCardSchedulingFailedMessage =>
'Este alarme não pôde ser registrado no sistema, por isso pode não tocar.';
@override
String get alarmCardPreNoticeFailedMessage =>
'Este alarme está agendado, mas seu aviso antecipado não pôde ser configurado.';
@override
String get alarmDiagnosticsExactAlarmsTitle => 'Agendamento exato do alarme';
@override
String get alarmDiagnosticsExactAlarmsHint =>
'Permite que o alarme toque no minuto exato definido, mesmo com o telefone em repouso.';
@override
String get alarmDiagnosticsNotificationsTitle => 'Notificações';
@override
String get alarmDiagnosticsNotificationsHint =>
'Necessárias para mostrar o alarme e o aviso prévio.';
@override
String get alarmDiagnosticsFullScreenTitle =>
'Exibição em tela cheia do alarme';
@override
String get alarmDiagnosticsFullScreenHint =>
'Permite que a tela do alarme apareça automaticamente, mesmo com o telefone bloqueado.';
@override
String get alarmDiagnosticsBatteryTitle => 'Otimização de bateria';
@override
String get alarmDiagnosticsBatteryHint =>
'Evita que o sistema feche o PluriWave em segundo plano, para que o alarme ainda possa tocar.';
@override
String get alarmDiagnosticsNativeCountTitle =>
'Alarmes registrados no Android';
@override
String alarmDiagnosticsNativeCountValue(int count) {
return 'Registrados agora: $count';
}
@override
String get alarmDiagnosticsNativeCountAttentionHint =>
'Você tem um alarme ativado, mas nenhum está registrado no sistema ainda. Reabra o PluriWave ou resolva primeiro os itens acima.';
@override
String get alarmDiagnosticsManufacturerLabel => 'Fabricante';
@override
String get alarmDiagnosticsSdkLabel => 'Versão do Android (SDK)';
@override
String get alarmDiagnosticsNeedsAttentionStatus => 'Precisa de atenção';
@override
String get alarmDiagnosticsAutostartTitle =>
'Mais uma etapa manual neste telefone';
@override
String alarmDiagnosticsAutostartBody(String manufacturer) {
return 'Telefones $manufacturer costumam fechar apps em segundo plano para economizar bateria. Não existe uma configuração que o PluriWave possa ativar sozinho: você precisa ativar por conta própria o Início automático (às vezes chamado de \"Autostart\" ou \"Atividade em segundo plano\") para o PluriWave. Procure em Configurações, em Apps ou Bateria, ou no próprio app de Segurança do telefone.';
}
@override
String get alarmDiagnosticsFixAction => 'Resolver';
@override
String get alarmDiagnosticsIntentUnavailable =>
'Não foi possível abrir essa tela de configurações neste telefone. Tente procurá-la manualmente nas Configurações.';
@override
String get alarmDiagnosticsUnavailableHint =>
'Ainda não conseguimos verificar as configurações do seu alarme.';
@override
String get autoEqDisableOption => 'Desativar';
@override
String get funcionPremium => 'Recurso Premium';
@override
String get limiteAlarmasAlcanzado =>
'Você atingiu o limite gratuito de 5 alarmes.';
@override
String get desbloquearPremium => 'Desbloquear Premium';
@override
String get restaurarCompras => 'Restaurar compras';
}