Fixes 9 of 10 review findings (10th requires a manual Play Console step, no code change): 1. app.dart/banner_anuncio_superior.dart: move the top SafeArea inside BannerAnuncioSuperior so it only reserves status-bar height when an ad actually renders, restoring edge-to-edge layout for premium and free-unloaded users. 2. servicio_anuncios.dart: bound every interstitial await (load, presentation, and the injected implementation itself) with injectable timeouts so a callback that never fires can no longer hang a caller. 3. estado_entitlement.dart/hoja_premium.dart: expose a typed resultadoUsuario signal for purchase/restore failures and restore-found-nothing, with dedicated localized messages (compraError, restauracionSinCompras) across all 13 locales -- never the raw developer/exception string. 4. main.dart/servicio_consentimiento.dart: add a GDPR/UMP consent flow (ConsentInformation/ConsentForm) that gates Mobile Ads SDK init on canRequestAds(); premium users never see a consent form; failures degrade to no ads instead of crashing or blocking startup. 6. servicio_anuncios.dart: track real ad presentation (onAdShowedFullScreenContent) so a failed-to-show interstitial no longer consumes a session cap slot. 7. banner_anuncio_superior.dart: add an explicit load-attempted guard so repeated didChangeDependencies (e.g. entitlement notifyListeners during a purchase) can only ever trigger one banner load attempt. 8. servicio_anuncios.dart: make esPremium a required constructor parameter, matching the hardened contract already applied to EstadoAlarmas/EstadoGrabacion/EstadoRadio. 9. hoja_premium.dart: add a dedicated premiumActivo localized string instead of reusing the equalizer's equalizerActive translation, across all 13 locales. All fixes implemented RED-first (failing test before production code). Full suite: 1261 passed, 2 pre-existing skips, 0 failures. flutter analyze: 5 pre-existing issues only, 0 new. [version set]
1882 lines
46 KiB
Dart
1882 lines
46 KiB
Dart
// 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';
|
||
|
||
@override
|
||
String get compraError =>
|
||
'Não foi possível concluir a compra. Tente novamente.';
|
||
|
||
@override
|
||
String get restauracionSinCompras =>
|
||
'Não encontramos nenhuma compra anterior nesta conta.';
|
||
|
||
@override
|
||
String get premiumActivo => 'Premium ativo';
|
||
}
|