fix(i18n): localize hardcoded UI strings

close #1257
This commit is contained in:
edde746
2026-06-06 11:45:34 +02:00
parent f74314bbf0
commit 4c4b18e2cd
64 changed files with 4391 additions and 258 deletions
+174 -6
View File
@@ -77,6 +77,7 @@ class TranslationsPt extends Translations with BaseTranslations<AppLocale, Trans
@override late final _TranslationsShadersPt shaders = _TranslationsShadersPt._(_root);
@override late final _TranslationsCompanionRemotePt companionRemote = _TranslationsCompanionRemotePt._(_root);
@override late final _TranslationsVideoSettingsPt videoSettings = _TranslationsVideoSettingsPt._(_root);
@override late final _TranslationsPerformanceOverlayPt performanceOverlay = _TranslationsPerformanceOverlayPt._(_root);
@override late final _TranslationsExternalPlayerPt externalPlayer = _TranslationsExternalPlayerPt._(_root);
@override late final _TranslationsMetadataEditPt metadataEdit = _TranslationsMetadataEditPt._(_root);
@override late final _TranslationsMatchScreenPt matchScreen = _TranslationsMatchScreenPt._(_root);
@@ -159,6 +160,9 @@ class _TranslationsCommonPt extends TranslationsCommonEn {
@override String get settings => 'Configurações';
@override String get mute => 'Silenciar';
@override String get ok => 'OK';
@override String get off => 'Desativado';
@override String seasonNumber({required Object number}) => 'Temporada ${number}';
@override String chapterNumber({required Object number}) => 'Capítulo ${number}';
@override String get reconnect => 'Reconectar';
@override String get exit => 'Sair';
@override String get viewAll => 'Ver Tudo';
@@ -385,6 +389,10 @@ class _TranslationsSettingsPt extends TranslationsSettingsEn {
@override String get dvConversionNative => 'Nativo / desativado';
@override String get dvConversionDv81 => 'P7 → P8.1';
@override String get dvConversionHevcStrip => 'P7 → HEVC';
@override String get dvConversionAutoDescription => 'Usar detecção de recursos do dispositivo e comportamento normal de fallback';
@override String get dvConversionNativeDescription => 'Forçar DV7 nativo e suprimir nova tentativa de conversão DV';
@override String get dvConversionDv81Description => 'Forçar conversão RPU inline para Dolby Vision perfil 8.1';
@override String get dvConversionHevcStripDescription => 'Remover camadas RPU/EL do Dolby Vision e apresentar HEVC simples';
@override String get requireProfileSelectionOnOpen => 'Pedir perfil ao abrir o app';
@override String get requireProfileSelectionOnOpenDescription => 'Mostrar seleção de perfil toda vez que o app for aberto';
@override String get forceTvMode => 'Forçar modo TV';
@@ -432,6 +440,8 @@ class _TranslationsHotkeysPt extends TranslationsHotkeysEn {
// Translations
@override String setShortcutFor({required Object actionName}) => 'Definir Atalho para ${actionName}';
@override String get clearShortcut => 'Limpar atalho';
@override String get noShortcutSet => 'Nenhum atalho definido';
@override String get currentShortcut => 'Atalho atual:';
@override late final _TranslationsHotkeysActionsPt actions = _TranslationsHotkeysActionsPt._(_root);
}
@@ -482,6 +492,7 @@ class _TranslationsMediaMenuPt extends TranslationsMediaMenuEn {
@override String get goToSeries => 'Ir para a série';
@override String get goToSeason => 'Ir para a temporada';
@override String get shufflePlay => 'Reprodução Aleatória';
@override String get shuffleNotAvailableOffline => 'Reprodução aleatória indisponível offline';
@override String get fileInfo => 'Info do Arquivo';
@override String get deleteFromServer => 'Excluir do servidor';
@override String get confirmDelete => 'Excluir esta mídia e seus arquivos do servidor?';
@@ -620,6 +631,10 @@ class _TranslationsVideoControlsPt extends TranslationsVideoControlsEn {
@override String get searchSubtitles => 'Pesquisar legendas';
@override String get language => 'Idioma';
@override String get noSubtitlesFound => 'Nenhuma legenda encontrada';
@override String get downloadedSubtitle => 'Baixado';
@override String get noSubtitlesAvailable => 'Nenhuma legenda disponível';
@override String get noAudioTracksAvailable => 'Nenhuma faixa de áudio disponível';
@override String get noTracksAvailable => 'Nenhuma faixa disponível';
@override String get subtitleDownloaded => 'Legenda baixada';
@override String get subtitleDownloadFailed => 'Falha ao baixar legenda';
@override String get searchLanguages => 'Pesquisar idiomas...';
@@ -808,6 +823,7 @@ class _TranslationsProfilesPt extends TranslationsProfilesEn {
@override String get pinExplain => 'PIN de 4 dígitos necessário para trocar perfis.';
@override String get continueButton => 'Continuar';
@override String get pinsDontMatch => 'Os PINs não correspondem';
@override String get initializeServicesFailed => 'Falha ao inicializar serviços de perfil';
}
// Path: connections
@@ -854,6 +870,7 @@ class _TranslationsDiscoverPt extends TranslationsDiscoverEn {
@override String get movie => 'Filme';
@override String get tvShow => 'Série de TV';
@override String minutesLeft({required Object minutes}) => '${minutes} min restantes';
@override String get moreLikeThis => 'Mais como este';
}
// Path: errors
@@ -886,6 +903,7 @@ class _TranslationsLibrariesPt extends TranslationsLibrariesEn {
// Translations
@override String get title => 'Bibliotecas';
@override String get fallbackTitle => 'Biblioteca';
@override String get scanLibraryFiles => 'Escanear Arquivos da Biblioteca';
@override String get scanLibrary => 'Escanear Biblioteca';
@override String get analyze => 'Analisar';
@@ -1018,6 +1036,12 @@ class _TranslationsLiveTvPt extends TranslationsLiveTvEn {
@override String get noChannels => 'Nenhum canal disponível';
@override String get noDvr => 'Nenhum DVR configurado em nenhum servidor';
@override String get noPrograms => 'Nenhum dado de programação disponível';
@override String get liveStreamFailed => 'Falha no stream ao vivo';
@override String get unknownProgram => 'Programa desconhecido';
@override String get unknownHub => 'Desconhecido';
@override String get unknownError => 'Erro desconhecido';
@override String channelNumber({required Object number}) => 'Canal ${number}';
@override String get unknownChannel => 'Canal desconhecido';
@override String get live => 'AO VIVO';
@override String get reloadGuide => 'Recarregar Guia';
@override String get now => 'Agora';
@@ -1224,12 +1248,21 @@ class _TranslationsDownloadsPt extends TranslationsDownloadsEn {
@override String get deleteDownload => 'Excluir download';
@override String get retryDownload => 'Tentar download novamente';
@override String get downloadQueued => 'Download na fila';
@override String get downloadResumed => 'Download retomado';
@override String get serverErrorBitrate => 'Erro do servidor: o arquivo pode exceder o limite remoto de bitrate';
@override String episodesQueued({required Object count}) => '${count} episódios na fila de download';
@override String get downloadDeleted => 'Download excluído';
@override String deleteConfirm({required Object title}) => 'Excluir "${title}" deste dispositivo?';
@override String deletingWithProgress({required Object title, required Object current, required Object total}) => 'Excluindo ${title}... (${current} de ${total})';
@override String get cancelledDownloadTitle => 'Download cancelado';
@override String get cancelledDownloadMessage => 'Este download foi cancelado. O que você deseja fazer?';
@override String get allEpisodesAlreadyDownloaded => 'Todos os episódios já foram baixados';
@override String get resumeDownload => 'Retomar download';
@override String get cancelledDownload => 'Download cancelado';
@override String syncingFile({required Object file, required Object status}) => '${file} (sincronizando ${status})';
@override String downloadedFileClickToComplete({required Object file}) => '${file} baixado — clique para concluir';
@override String get partialDownloadClickToComplete => 'Parcialmente baixado — clique para concluir';
@override String get deleting => 'Excluindo...';
@override String deletingWithProgress({required Object title, required Object current, required Object total}) => 'Excluindo ${title}... (${current} de ${total})';
@override String get queuedTooltip => 'Na fila';
@override String queuedFilesTooltip({required Object files}) => 'Na fila: ${files}';
@override String get downloadingTooltip => 'Baixando...';
@@ -1304,9 +1337,11 @@ class _TranslationsCompanionRemotePt extends TranslationsCompanionRemoteEn {
// Translations
@override String get title => 'Controle Remoto';
@override String connectedTo({required Object name}) => 'Conectado a ${name}';
@override String get unknownDevice => 'Dispositivo desconhecido';
@override late final _TranslationsCompanionRemoteSessionPt session = _TranslationsCompanionRemoteSessionPt._(_root);
@override late final _TranslationsCompanionRemotePairingPt pairing = _TranslationsCompanionRemotePairingPt._(_root);
@override late final _TranslationsCompanionRemoteRemotePt remote = _TranslationsCompanionRemoteRemotePt._(_root);
@override late final _TranslationsCompanionRemoteErrorsPt errors = _TranslationsCompanionRemoteErrorsPt._(_root);
}
// Path: videoSettings
@@ -1328,6 +1363,49 @@ class _TranslationsVideoSettingsPt extends TranslationsVideoSettingsEn {
@override String get audioNormalization => 'Normalizar Volume';
}
// Path: performanceOverlay
class _TranslationsPerformanceOverlayPt extends TranslationsPerformanceOverlayEn {
_TranslationsPerformanceOverlayPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get color => 'Cor';
@override String get performance => 'Desempenho';
@override String get buffer => 'Buffer';
@override String get app => 'App';
@override String get decoder => 'Decodificador';
@override String get rawDecoder => 'Decodificador bruto';
@override String get tunneling => 'Túnel';
@override String get aspect => 'Aspecto';
@override String get rotation => 'Rotação';
@override String get dvSource => 'Fonte DV';
@override String get dvPath => 'Caminho DV';
@override String get p7Conversion => 'Conv. P7';
@override String get sampleRate => 'Taxa de amostragem';
@override String get pixelFormat => 'Formato de pixel';
@override String get hwFormat => 'Formato HW';
@override String get matrix => 'Matriz';
@override String get primaries => 'Primárias';
@override String get transfer => 'Transferência';
@override String get renderFps => 'FPS render';
@override String get displayFps => 'FPS tela';
@override String get avSync => 'Sync A/V';
@override String get dropped => 'Descartados';
@override String get dvRpus => 'DV RPUs';
@override String get dvRpuAverage => 'Média DV RPU';
@override String get dvSampleAverage => 'Média amostra DV';
@override String get maxLuma => 'Luma máx.';
@override String get minLuma => 'Luma mín.';
@override String get maxCll => 'MaxCLL';
@override String get maxFall => 'MaxFALL';
@override String get cacheUsed => 'Cache usado';
@override String get speed => 'Velocidade';
@override String get player => 'Player';
@override String get memory => 'Memória';
@override String get uiFps => 'UI FPS';
}
// Path: externalPlayer
class _TranslationsExternalPlayerPt extends TranslationsExternalPlayerEn {
_TranslationsExternalPlayerPt._(TranslationsPt root) : this._root = root, super.internal(root);
@@ -1343,6 +1421,7 @@ class _TranslationsExternalPlayerPt extends TranslationsExternalPlayerEn {
@override String get systemDefault => 'Padrão do Sistema';
@override String get addCustomPlayer => 'Adicionar Player Personalizado';
@override String get playerName => 'Nome do Player';
@override String get playerNameHint => 'Meu player';
@override String get playerCommand => 'Comando';
@override String get playerPackage => 'Nome do Pacote';
@override String get playerUrlScheme => 'Esquema de URL';
@@ -1755,6 +1834,21 @@ class _TranslationsCompanionRemoteRemotePt extends TranslationsCompanionRemoteRe
@override String get searchHint => 'Buscar no desktop...';
}
// Path: companionRemote.errors
class _TranslationsCompanionRemoteErrorsPt extends TranslationsCompanionRemoteErrorsEn {
_TranslationsCompanionRemoteErrorsPt._(TranslationsPt root) : this._root = root, super.internal(root);
final TranslationsPt _root; // ignore: unused_field
// Translations
@override String get noNetworkInterface => 'Nenhuma interface de rede encontrada';
@override String get authenticationFailed => 'Falha na autenticação';
@override String get joinTimedOut => 'Tempo esgotado ao entrar na sessão';
@override String get failedToConnectAnyAddress => 'Falha ao conectar a qualquer endereço';
@override String connectionLostAfterAttempts({required Object attempts}) => 'Conexão perdida após ${attempts} tentativas';
@override String get connectionLost => 'Conexão perdida';
}
// Path: trackers.services
class _TranslationsTrackersServicesPt extends TranslationsTrackersServicesEn {
_TranslationsTrackersServicesPt._(TranslationsPt root) : this._root = root, super.internal(root);
@@ -1871,6 +1965,9 @@ extension on TranslationsPt {
'common.settings' => 'Configurações',
'common.mute' => 'Silenciar',
'common.ok' => 'OK',
'common.off' => 'Desativado',
'common.seasonNumber' => ({required Object number}) => 'Temporada ${number}',
'common.chapterNumber' => ({required Object number}) => 'Capítulo ${number}',
'common.reconnect' => 'Reconectar',
'common.exit' => 'Sair',
'common.viewAll' => 'Ver Tudo',
@@ -2070,6 +2167,10 @@ extension on TranslationsPt {
'settings.dvConversionNative' => 'Nativo / desativado',
'settings.dvConversionDv81' => 'P7 → P8.1',
'settings.dvConversionHevcStrip' => 'P7 → HEVC',
'settings.dvConversionAutoDescription' => 'Usar detecção de recursos do dispositivo e comportamento normal de fallback',
'settings.dvConversionNativeDescription' => 'Forçar DV7 nativo e suprimir nova tentativa de conversão DV',
'settings.dvConversionDv81Description' => 'Forçar conversão RPU inline para Dolby Vision perfil 8.1',
'settings.dvConversionHevcStripDescription' => 'Remover camadas RPU/EL do Dolby Vision e apresentar HEVC simples',
'settings.requireProfileSelectionOnOpen' => 'Pedir perfil ao abrir o app',
'settings.requireProfileSelectionOnOpenDescription' => 'Mostrar seleção de perfil toda vez que o app for aberto',
'settings.forceTvMode' => 'Forçar modo TV',
@@ -2099,6 +2200,8 @@ extension on TranslationsPt {
'search.enterTitleActorOrKeyword' => 'Insira um título, ator ou palavra-chave',
'hotkeys.setShortcutFor' => ({required Object actionName}) => 'Definir Atalho para ${actionName}',
'hotkeys.clearShortcut' => 'Limpar atalho',
'hotkeys.noShortcutSet' => 'Nenhum atalho definido',
'hotkeys.currentShortcut' => 'Atalho atual:',
'hotkeys.actions.playPause' => 'Reproduzir/Pausar',
'hotkeys.actions.volumeUp' => 'Aumentar Volume',
'hotkeys.actions.volumeDown' => 'Diminuir Volume',
@@ -2155,6 +2258,7 @@ extension on TranslationsPt {
'mediaMenu.goToSeries' => 'Ir para a série',
'mediaMenu.goToSeason' => 'Ir para a temporada',
'mediaMenu.shufflePlay' => 'Reprodução Aleatória',
'mediaMenu.shuffleNotAvailableOffline' => 'Reprodução aleatória indisponível offline',
'mediaMenu.fileInfo' => 'Info do Arquivo',
'mediaMenu.deleteFromServer' => 'Excluir do servidor',
'mediaMenu.confirmDelete' => 'Excluir esta mídia e seus arquivos do servidor?',
@@ -2263,6 +2367,10 @@ extension on TranslationsPt {
'videoControls.searchSubtitles' => 'Pesquisar legendas',
'videoControls.language' => 'Idioma',
'videoControls.noSubtitlesFound' => 'Nenhuma legenda encontrada',
'videoControls.downloadedSubtitle' => 'Baixado',
'videoControls.noSubtitlesAvailable' => 'Nenhuma legenda disponível',
'videoControls.noAudioTracksAvailable' => 'Nenhuma faixa de áudio disponível',
'videoControls.noTracksAvailable' => 'Nenhuma faixa disponível',
'videoControls.subtitleDownloaded' => 'Legenda baixada',
'videoControls.subtitleDownloadFailed' => 'Falha ao baixar legenda',
'videoControls.searchLanguages' => 'Pesquisar idiomas...',
@@ -2321,6 +2429,8 @@ extension on TranslationsPt {
'subtitlingStyling.borderColor' => 'Cor da Borda',
'subtitlingStyling.backgroundOpacity' => 'Opacidade do Fundo',
'subtitlingStyling.backgroundColor' => 'Cor de Fundo',
_ => null,
} ?? switch (path) {
'subtitlingStyling.position' => 'Posição',
'subtitlingStyling.assOverride' => 'Substituição ASS',
'subtitlingStyling.bold' => 'Negrito',
@@ -2335,8 +2445,6 @@ extension on TranslationsPt {
'mpvConfig.loadPreset' => 'Carregar',
'mpvConfig.deletePreset' => 'Excluir',
'mpvConfig.presetSaved' => 'Predefinição salva',
_ => null,
} ?? switch (path) {
'mpvConfig.presetLoaded' => 'Predefinição carregada',
'mpvConfig.presetDeleted' => 'Predefinição excluída',
'mpvConfig.confirmDeletePreset' => 'Tem certeza que deseja excluir esta predefinição?',
@@ -2399,6 +2507,7 @@ extension on TranslationsPt {
'profiles.pinExplain' => 'PIN de 4 dígitos necessário para trocar perfis.',
'profiles.continueButton' => 'Continuar',
'profiles.pinsDontMatch' => 'Os PINs não correspondem',
'profiles.initializeServicesFailed' => 'Falha ao inicializar serviços de perfil',
'connections.sectionTitle' => 'Conexões',
'connections.addConnection' => 'Adicionar conexão',
'connections.addConnectionSubtitleNoProfile' => 'Faça login com Plex ou conecte um servidor Jellyfin',
@@ -2427,6 +2536,7 @@ extension on TranslationsPt {
'discover.movie' => 'Filme',
'discover.tvShow' => 'Série de TV',
'discover.minutesLeft' => ({required Object minutes}) => '${minutes} min restantes',
'discover.moreLikeThis' => 'Mais como este',
'errors.searchFailed' => ({required Object error}) => 'Falha na busca: ${error}',
'errors.connectionTimeout' => ({required Object context}) => 'Tempo de conexão esgotado ao carregar ${context}',
'errors.connectionFailed' => 'Não foi possível conectar ao servidor de mídia',
@@ -2441,6 +2551,7 @@ extension on TranslationsPt {
'errors.failedToDeleteProfile' => ({required Object displayName}) => 'Falha ao excluir ${displayName}',
'errors.failedToRate' => 'Não foi possível atualizar a classificação',
'libraries.title' => 'Bibliotecas',
'libraries.fallbackTitle' => 'Biblioteca',
'libraries.scanLibraryFiles' => 'Escanear Arquivos da Biblioteca',
'libraries.scanLibrary' => 'Escanear Biblioteca',
'libraries.analyze' => 'Analisar',
@@ -2541,6 +2652,12 @@ extension on TranslationsPt {
'liveTv.noChannels' => 'Nenhum canal disponível',
'liveTv.noDvr' => 'Nenhum DVR configurado em nenhum servidor',
'liveTv.noPrograms' => 'Nenhum dado de programação disponível',
'liveTv.liveStreamFailed' => 'Falha no stream ao vivo',
'liveTv.unknownProgram' => 'Programa desconhecido',
'liveTv.unknownHub' => 'Desconhecido',
'liveTv.unknownError' => 'Erro desconhecido',
'liveTv.channelNumber' => ({required Object number}) => 'Canal ${number}',
'liveTv.unknownChannel' => 'Canal desconhecido',
'liveTv.live' => 'AO VIVO',
'liveTv.reloadGuide' => 'Recarregar Guia',
'liveTv.now' => 'Agora',
@@ -2711,12 +2828,21 @@ extension on TranslationsPt {
'downloads.deleteDownload' => 'Excluir download',
'downloads.retryDownload' => 'Tentar download novamente',
'downloads.downloadQueued' => 'Download na fila',
'downloads.downloadResumed' => 'Download retomado',
'downloads.serverErrorBitrate' => 'Erro do servidor: o arquivo pode exceder o limite remoto de bitrate',
'downloads.episodesQueued' => ({required Object count}) => '${count} episódios na fila de download',
'downloads.downloadDeleted' => 'Download excluído',
'downloads.deleteConfirm' => ({required Object title}) => 'Excluir "${title}" deste dispositivo?',
'downloads.deletingWithProgress' => ({required Object title, required Object current, required Object total}) => 'Excluindo ${title}... (${current} de ${total})',
'downloads.cancelledDownloadTitle' => 'Download cancelado',
'downloads.cancelledDownloadMessage' => 'Este download foi cancelado. O que você deseja fazer?',
'downloads.allEpisodesAlreadyDownloaded' => 'Todos os episódios já foram baixados',
'downloads.resumeDownload' => 'Retomar download',
'downloads.cancelledDownload' => 'Download cancelado',
'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (sincronizando ${status})',
'downloads.downloadedFileClickToComplete' => ({required Object file}) => '${file} baixado — clique para concluir',
'downloads.partialDownloadClickToComplete' => 'Parcialmente baixado — clique para concluir',
'downloads.deleting' => 'Excluindo...',
'downloads.deletingWithProgress' => ({required Object title, required Object current, required Object total}) => 'Excluindo ${title}... (${current} de ${total})',
'downloads.queuedTooltip' => 'Na fila',
'downloads.queuedFilesTooltip' => ({required Object files}) => 'Na fila: ${files}',
'downloads.downloadingTooltip' => 'Baixando...',
@@ -2773,6 +2899,7 @@ extension on TranslationsPt {
'shaders.deleteShaderConfirm' => ({required Object name}) => 'Excluir "${name}"?',
'companionRemote.title' => 'Controle Remoto',
'companionRemote.connectedTo' => ({required Object name}) => 'Conectado a ${name}',
'companionRemote.unknownDevice' => 'Dispositivo desconhecido',
'companionRemote.session.startingServer' => 'A iniciar servidor remoto...',
'companionRemote.session.failedToCreate' => 'Falha ao iniciar o servidor remoto:',
'companionRemote.session.hostAddress' => 'Endereço do host',
@@ -2816,6 +2943,8 @@ extension on TranslationsPt {
'companionRemote.remote.tabSettings' => 'Configurações',
'companionRemote.remote.previous' => 'Anterior',
'companionRemote.remote.playPause' => 'Reproduzir/Pausar',
_ => null,
} ?? switch (path) {
'companionRemote.remote.next' => 'Próximo',
'companionRemote.remote.seekBack' => 'Retroceder',
'companionRemote.remote.stop' => 'Parar',
@@ -2827,6 +2956,12 @@ extension on TranslationsPt {
'companionRemote.remote.subtitles' => 'Legendas',
'companionRemote.remote.audio' => 'Áudio',
'companionRemote.remote.searchHint' => 'Buscar no desktop...',
'companionRemote.errors.noNetworkInterface' => 'Nenhuma interface de rede encontrada',
'companionRemote.errors.authenticationFailed' => 'Falha na autenticação',
'companionRemote.errors.joinTimedOut' => 'Tempo esgotado ao entrar na sessão',
'companionRemote.errors.failedToConnectAnyAddress' => 'Falha ao conectar a qualquer endereço',
'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Conexão perdida após ${attempts} tentativas',
'companionRemote.errors.connectionLost' => 'Conexão perdida',
'videoSettings.playbackSpeed' => 'Velocidade de Reprodução',
'videoSettings.zoom' => 'Zoom',
'videoSettings.sleepTimer' => 'Timer de Sono',
@@ -2837,6 +2972,40 @@ extension on TranslationsPt {
'videoSettings.performanceOverlay' => 'Overlay de Desempenho',
'videoSettings.audioPassthrough' => 'Passagem de Áudio',
'videoSettings.audioNormalization' => 'Normalizar Volume',
'performanceOverlay.color' => 'Cor',
'performanceOverlay.performance' => 'Desempenho',
'performanceOverlay.buffer' => 'Buffer',
'performanceOverlay.app' => 'App',
'performanceOverlay.decoder' => 'Decodificador',
'performanceOverlay.rawDecoder' => 'Decodificador bruto',
'performanceOverlay.tunneling' => 'Túnel',
'performanceOverlay.aspect' => 'Aspecto',
'performanceOverlay.rotation' => 'Rotação',
'performanceOverlay.dvSource' => 'Fonte DV',
'performanceOverlay.dvPath' => 'Caminho DV',
'performanceOverlay.p7Conversion' => 'Conv. P7',
'performanceOverlay.sampleRate' => 'Taxa de amostragem',
'performanceOverlay.pixelFormat' => 'Formato de pixel',
'performanceOverlay.hwFormat' => 'Formato HW',
'performanceOverlay.matrix' => 'Matriz',
'performanceOverlay.primaries' => 'Primárias',
'performanceOverlay.transfer' => 'Transferência',
'performanceOverlay.renderFps' => 'FPS render',
'performanceOverlay.displayFps' => 'FPS tela',
'performanceOverlay.avSync' => 'Sync A/V',
'performanceOverlay.dropped' => 'Descartados',
'performanceOverlay.dvRpus' => 'DV RPUs',
'performanceOverlay.dvRpuAverage' => 'Média DV RPU',
'performanceOverlay.dvSampleAverage' => 'Média amostra DV',
'performanceOverlay.maxLuma' => 'Luma máx.',
'performanceOverlay.minLuma' => 'Luma mín.',
'performanceOverlay.maxCll' => 'MaxCLL',
'performanceOverlay.maxFall' => 'MaxFALL',
'performanceOverlay.cacheUsed' => 'Cache usado',
'performanceOverlay.speed' => 'Velocidade',
'performanceOverlay.player' => 'Player',
'performanceOverlay.memory' => 'Memória',
'performanceOverlay.uiFps' => 'UI FPS',
'externalPlayer.title' => 'Player Externo',
'externalPlayer.useExternalPlayer' => 'Usar Player Externo',
'externalPlayer.useExternalPlayerDescription' => 'Abrir vídeos em outro app',
@@ -2845,12 +3014,11 @@ extension on TranslationsPt {
'externalPlayer.systemDefault' => 'Padrão do Sistema',
'externalPlayer.addCustomPlayer' => 'Adicionar Player Personalizado',
'externalPlayer.playerName' => 'Nome do Player',
'externalPlayer.playerNameHint' => 'Meu player',
'externalPlayer.playerCommand' => 'Comando',
'externalPlayer.playerPackage' => 'Nome do Pacote',
'externalPlayer.playerUrlScheme' => 'Esquema de URL',
'externalPlayer.off' => 'Desativado',
_ => null,
} ?? switch (path) {
'externalPlayer.launchFailed' => 'Falha ao abrir player externo',
'externalPlayer.appNotInstalled' => ({required Object name}) => '${name} não está instalado',
'externalPlayer.playInExternalPlayer' => 'Reproduzir no Player Externo',