From bf5203348b35c0df22dbb4f24b27f3ef8cde8b0b Mon Sep 17 00:00:00 2001 From: Leonardo Date: Fri, 11 Apr 2025 13:06:41 -0300 Subject: [PATCH] feat: add portuguese (pt-BR) translation (#625) --- i18n.ts | 3 + translations/pt-BR.json | 477 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 480 insertions(+) create mode 100644 translations/pt-BR.json diff --git a/i18n.ts b/i18n.ts index 040e1a4f..42c8ed28 100644 --- a/i18n.ts +++ b/i18n.ts @@ -10,6 +10,7 @@ import it from "./translations/it.json"; import ja from "./translations/ja.json"; import nl from "./translations/nl.json"; import pl from "./translations/pl.json"; +import ptBR from "./translations/pt-BR.json"; import sv from "./translations/sv.json"; import tr from "./translations/tr.json"; import ua from "./translations/ua.json"; @@ -26,6 +27,7 @@ export const APP_LANGUAGES = [ { label: "Türkçe", value: "tr" }, { label: "Nederlands", value: "nl" }, { label: "Polski", value: "pl" }, + { label: "Português (Brasil)", value: "pt-BR" }, { label: "Svenska", value: "sv" }, { label: "Українська", value: "ua" }, { label: "简体中文", value: "zh-CN" }, @@ -43,6 +45,7 @@ i18n.use(initReactI18next).init({ ja: { translation: ja }, nl: { translation: nl }, pl: { translation: pl }, + "pt-BR": { translation: ptBR }, sv: { translation: sv }, tr: { translation: tr }, ua: { translation: ua }, diff --git a/translations/pt-BR.json b/translations/pt-BR.json new file mode 100644 index 00000000..28224375 --- /dev/null +++ b/translations/pt-BR.json @@ -0,0 +1,477 @@ +{ + "login": { + "username_required": "Usuário obrigatório", + "error_title": "Erro", + "login_title": "Entrar", + "login_to_title": "Entrar em", + "username_placeholder": "Usuário", + "password_placeholder": "Senha", + "login_button": "Entrar", + "quick_connect": "Quick Connect", + "enter_code_to_login": "Insira o código {{code}} para entrar", + "failed_to_initiate_quick_connect": "Erro ao iniciar o Quick Connect", + "got_it": "Ok", + "connection_failed": "Conexão falhou", + "could_not_connect_to_server": "Não foi possível conectar com o servidor. Verifique a URL e sua conexão de internet.", + "an_unexpected_error_occured": "Um erro inesperado aconteceu", + "change_server": "Alterar servidor", + "invalid_username_or_password": "Usuário ou senha inválido", + "user_does_not_have_permission_to_log_in": "Usuário não possui permissão para entrar", + "server_is_taking_too_long_to_respond_try_again_later": "O servidor está demorando para responder, tente novamente mais tarde", + "server_received_too_many_requests_try_again_later": "O servidor recebeu muitas requisições, tente novamente mais tarde", + "there_is_a_server_error": "Erro no servidor", + "an_unexpected_error_occured_did_you_enter_the_correct_url": "Um erro inesperado aconteceu. Você digitou a URL corretamente?" + }, + "server": { + "enter_url_to_jellyfin_server": "Digite a URL do servidor Jellyfin", + "server_url_placeholder": "http(s)://seu-servidor.com", + "connect_button": "Conectar", + "previous_servers": "Servidores anteriores", + "clear_button": "Limpar", + "search_for_local_servers": "Buscar por servidores locais", + "searching": "Buscando...", + "servers": "Servidores" + }, + "home": { + "no_internet": "Sem internet", + "no_items": "Sem itens", + "no_internet_message": "Sem problema, você ainda pode assistir\nconteúdos baixados.", + "go_to_downloads": "Vá para downloads", + "oops": "Oops!", + "error_message": "Algo deu errado.\nPor favor, saia e entre novamente.", + "continue_watching": "Continue assistindo", + "next_up": "Próximo em", + "recently_added_in": "Adicionados recentemente em {{libraryName}}", + "suggested_movies": "Filmes sugeridos", + "suggested_episodes": "Episódios sugeridos", + "intro": { + "welcome_to_streamyfin": "Bem-vindo ao Streamyfin", + "a_free_and_open_source_client_for_jellyfin": "Um cliente gratuito e de código livre para o Jellyfin.", + "features_title": "Recursos", + "features_description": "Streamyfin possui vários recursos e integra com uma variadade de programas que você pode encontrar no menu de configurações, entre eles:", + "jellyseerr_feature_description": "Conecte sua instância de Jellyfin e solicite filmes diretamente pelo app.", + "downloads_feature_title": "Downloads", + "downloads_feature_description": "Baixe filmes e séries para assistir sem internet. Use o método padrão ou instale o servidor de otimização para fazer o download de arquivos em segundo plano.", + "chromecast_feature_description": "Transmita filmes e séries para seu dispositivo Chromecast.", + "centralised_settings_plugin_title": "Plugin de configurações centralizado", + "centralised_settings_plugin_description": "Configure configurações através de um local centralizado no seu servidor Jellyfin. Todos as configurações de cliente serão sincronizadas para todos os usuários.", + "done_button": "Ok", + "go_to_settings_button": "Vá para configurações", + "read_more": "Leia mais" + }, + "settings": { + "settings_title": "Configurações", + "log_out_button": "Sair", + "user_info": { + "user_info_title": "Informações de usuário", + "user": "Usuário", + "server": "Servidor", + "token": "Token", + "app_version": "Versão do aplicativo" + }, + "quick_connect": { + "quick_connect_title": "Quick Connect", + "authorize_button": "Autorizar Quick Connect", + "enter_the_quick_connect_code": "Digite o código do Quick Connect...", + "success": "Successo", + "quick_connect_autorized": "Quick Connect autorizado", + "error": "Erro", + "invalid_code": "Código inválido", + "authorize": "Autorizar" + }, + "media_controls": { + "media_controls_title": "Controles de mídia", + "forward_skip_length": "Tempo do botão de avançar", + "rewind_length": "Tempo do botão de retroceder", + "seconds_unit": "s" + }, + "audio": { + "audio_title": "Áudio", + "set_audio_track": "Escolher faixa de áudio do item anterior", + "audio_language": "Idioma", + "audio_hint": "Escolha um idioma de áudio padrão.", + "none": "Nenhum", + "language": "Idioma" + }, + "subtitles": { + "subtitle_title": "Legendas", + "subtitle_language": "Idioma", + "subtitle_mode": "Modo", + "set_subtitle_track": "Escolher faixa de legenda do item anterior", + "subtitle_size": "Tamanho", + "subtitle_hint": "Configure as preferências das legendas.", + "none": "Nenhum", + "language": "Idioma", + "loading": "Carregando", + "modes": { + "Default": "Padrão", + "Smart": "Inteligente", + "Always": "Sempre", + "None": "Nenhuma", + "OnlyForced": "ApenasForçado" + } + }, + "other": { + "other_title": "Outros", + "follow_device_orientation": "Rotação automática", + "video_orientation": "Orientação do vídeo", + "orientation": "Orientação", + "orientations": { + "DEFAULT": "Padrão", + "ALL": "Todos", + "PORTRAIT": "Retrato", + "PORTRAIT_UP": "Retrato para cima", + "PORTRAIT_DOWN": "Retrato para baixo", + "LANDSCAPE": "Paisagem", + "LANDSCAPE_LEFT": "Paisagem para esquerda", + "LANDSCAPE_RIGHT": "Paisagem para direita", + "OTHER": "Outro", + "UNKNOWN": "Desconhecido" + }, + "safe_area_in_controls": "Área segura nos controles", + "video_player": "Tocador de vídeo", + "video_players": { + "VLC_3": "VLC 3", + "VLC_4": "VLC 4 (Experimental + PiP)" + }, + "show_custom_menu_links": "Mostrar Custom Links no Menu", + "hide_libraries": "Ocultar bibliotecas", + "select_liraries_you_want_to_hide": "Selecione as bibliotecas que você deseja ocultar das abas Biblioteca e Início.", + "disable_haptic_feedback": "Desativar o feedback háptico", + "default_quality": "Qualidade padrão" + }, + "downloads": { + "downloads_title": "Downloads", + "download_method": "Método de download", + "remux_max_download": "Remux max download", + "auto_download": "Download automático", + "optimized_versions_server": "Servidor do optimized versions", + "save_button": "Salvar", + "optimized_server": "Optimized Server", + "optimized": "Otimizado", + "default": "Padrão", + "optimized_version_hint": "Digite a URL do optimized server. A URL deve incluir http ou https e opcionalmente a porta.", + "read_more_about_optimized_server": "Leia mais sobre o optimize server.", + "url": "URL", + "server_url_placeholder": "http(s)://dominio.org:porta" + }, + "plugins": { + "plugins_title": "Plugins", + "jellyseerr": { + "jellyseerr_warning": "Esta integração está nos estágios iniciais. Espere alterações.", + "server_url": "URL do servidor", + "server_url_hint": "Exemplo: http(s)://seu-host.url\n(adicione a porta caso necessário)", + "server_url_placeholder": "Jellyseerr URL...", + "password": "Senha", + "password_placeholder": "Digite a senha do seu usuário Jellyfin {{username}}", + "save_button": "Salvar", + "clear_button": "Limpar", + "login_button": "Entrar", + "total_media_requests": "Total de solicitações", + "movie_quota_limit": "Limite de cota de filmes", + "movie_quota_days": "Dias de cota de filmes", + "tv_quota_limit": "Limite de cota de séries", + "tv_quota_days": "Dias de cota de séries", + "reset_jellyseerr_config_button": "Redefinir configurações do Jellyseerr", + "unlimited": "Ilimitado", + "plus_n_more": "+{{n}} mais", + "order_by": { + "DEFAULT": "Padrão", + "VOTE_COUNT_AND_AVERAGE": "Contador de votação e média", + "POPULARITY": "Popularidade" + } + }, + "marlin_search": { + "enable_marlin_search": "Ativar Marlin Search ", + "url": "URL", + "server_url_placeholder": "http(s)://domínio.org:porta", + "marlin_search_hint": "Digite a URL do servidor Marlin. A URL deve incluir http ou https e opcionalmente a porta.", + "read_more_about_marlin": "Leia mais sobre o Marlin.", + "save_button": "Salvar", + "toasts": { + "saved": "Salvo" + } + } + }, + "storage": { + "storage_title": "Armazenamento", + "app_usage": "App {{usedSpace}}%", + "device_usage": "Dispositivo {{availableSpace}}%", + "size_used": "{{used}} de {{total}} usado", + "delete_all_downloaded_files": "Remover todo conteúdo baixado" + }, + "intro": { + "show_intro": "Mostrar introdução", + "reset_intro": "Redefinir introdução" + }, + "logs": { + "logs_title": "Logs", + "no_logs_available": "Sem logs disponíveis", + "delete_all_logs": "Remover todos os logs" + }, + "languages": { + "title": "Idiomas", + "app_language": "Idioma do app", + "app_language_description": "Selecione o idioma do aplicativo.", + "system": "Sistema" + }, + "toasts": { + "error_deleting_files": "Erro ao remover arquivos", + "background_downloads_enabled": "Downloads em segundo plano ativado", + "background_downloads_disabled": "Downloads em segundo plano desativado", + "connected": "Conectado", + "could_not_connect": "Não foi possível conectar", + "invalid_url": "URL inválida" + } + }, + "sessions": { + "title": "Sessões", + "no_active_sessions": "Sem sessões ativas" + }, + "downloads": { + "downloads_title": "Downloads", + "tvseries": "TV/Séries", + "movies": "Filmes", + "queue": "Fila", + "queue_hint": "A fila e os downloads serão perdidos ao reiniciar o aplicativo", + "no_items_in_queue": "Nenhum item na fila", + "no_downloaded_items": "Nenhum item baixado", + "delete_all_movies_button": "Remover todos os filmes", + "delete_all_tvseries_button": "Remover todos as TV/Séries", + "delete_all_button": "Remover tudo", + "active_download": "Downloads ativos", + "no_active_downloads": "Nenhum download ativo", + "active_downloads": "Downloads ativos", + "new_app_version_requires_re_download": "Nova versão do aplicativo requer re-download", + "new_app_version_requires_re_download_description": "A nova atualização requer que o conteúdo seja baixado novamente. Remova todos os conteúdos baixados e tente novamente.", + "back": "Voltar", + "delete": "Remover", + "something_went_wrong": "Algo deu errado", + "could_not_get_stream_url_from_jellyfin": "Não foi possível obter a URL de stream do Jellyfin", + "eta": "Tempo estimado {{eta}}", + "methods": "Métodos", + "toasts": { + "you_are_not_allowed_to_download_files": "Você não tem permissão para baixar arquivos.", + "deleted_all_movies_successfully": "Todos os filmes foram removidos com sucesso!", + "failed_to_delete_all_movies": "Falha ao remover todos os filmes", + "deleted_all_tvseries_successfully": "Todos as TV/Séries foram removidos com sucesso!", + "failed_to_delete_all_tvseries": "Falha ao remover todos as TV/Séries", + "download_cancelled": "Download cancelado", + "could_not_cancel_download": "Não foi possível cancelar o download", + "download_completed": "Download completo", + "download_started_for": "Download iniciado para {{item}}", + "item_is_ready_to_be_downloaded": "{{item}} está pronto para ser baixado", + "download_stated_for_item": "Download iniciado para {{item}}", + "download_failed_for_item": "Download falhou para {{item}} - {{error}}", + "download_completed_for_item": "Download completo para {{item}}", + "queued_item_for_optimization": "{{item}} foi adicionado na fila para otimização", + "failed_to_start_download_for_item": "Falha ao iniciar o download de {{item}}: {{message}}", + "server_responded_with_status_code": "Servidor respondeu com status {{statusCode}}", + "no_response_received_from_server": "Sem resposta recebida do servidor", + "error_setting_up_the_request": "Erro ao configurar a solicitação", + "failed_to_start_download_for_item_unexpected_error": "Falha ao iniciar o download de {{item}}: Erro inesperado", + "all_files_folders_and_jobs_deleted_successfully": "Todos arquivos, pastas e jobs removidos com sucesso", + "an_error_occured_while_deleting_files_and_jobs": "Ocorreu um erro ao remover os arquivos e jobs", + "go_to_downloads": "Vá para downloads" + } + } + }, + "search": { + "search_here": "Busque aqui...", + "search": "Buscar...", + "x_items": "{{count}} itens", + "library": "Biblioteca", + "discover": "Explorar", + "no_results": "Nenhum resultado", + "no_results_found_for": "Nenhum resultado encontrado para", + "movies": "Filmes", + "series": "Séries", + "episodes": "Episódios", + "collections": "Coleções", + "actors": "Atores", + "request_movies": "Solicitar filmes", + "request_series": "Solicitar séries", + "recently_added": "Adicionados recentemente", + "recent_requests": "Solicitações recentes", + "plex_watchlist": "Watchlist do Plex", + "trending": "Tendências", + "popular_movies": "Filmes populares", + "movie_genres": "Gêneros de filmes", + "upcoming_movies": "Filmes a serem lançados", + "studios": "Estúdios", + "popular_tv": "Séries populares", + "tv_genres": "Gêneros de séries", + "upcoming_tv": "Séries a serem lançadas", + "networks": "Redes", + "tmdb_movie_keyword": "Palavras-chave filmes TMDB", + "tmdb_movie_genre": "Gêneros de filme TMDB", + "tmdb_tv_keyword": "Palavras-chave TMDB TV", + "tmdb_tv_genre": "Gêneros TV TMDB", + "tmdb_search": "Busca TMDB", + "tmdb_studio": "Estúdio TMDB", + "tmdb_network": "Rede TMDB", + "tmdb_movie_streaming_services": "Serviço de streaming de filmes TMDB", + "tmdb_tv_streaming_services": "Serviço de streaming de TV TMDB" + }, + "library": { + "no_items_found": "Nenhum item encontrado", + "no_results": "Sem resultado", + "no_libraries_found": "Nenhuma Biblioteca encontrada", + "item_types": { + "movies": "filmes", + "series": "séries", + "boxsets": "box sets", + "items": "itens" + }, + "options": { + "display": "Exibição", + "row": "Linhas", + "list": "Lista", + "image_style": "Estilo de imagem", + "poster": "Poster", + "cover": "Cover", + "show_titles": "Mostrar nomes", + "show_stats": "Mostrar quantidade" + }, + "filters": { + "genres": "Gênero", + "years": "Ano", + "sort_by": "Filtrar por", + "sort_order": "Ordem do filtro", + "asc": "Crescente", + "desc": "Decrescente", + "tags": "Tags" + } + }, + "favorites": { + "series": "Séries", + "movies": "Filmes", + "episodes": "Episódios", + "videos": "Vídeos", + "boxsets": "Boxsets", + "playlists": "Playlists", + "noDataTitle": "Sem favoritos ainda", + "noData": "Favorite algum item para acesso rápido." + }, + "custom_links": { + "no_links": "Nenhum link" + }, + "player": { + "error": "Erro", + "failed_to_get_stream_url": "Falha ao obter a URL de stream", + "an_error_occured_while_playing_the_video": "Ocorreu um erro ao tocar o vídeo. Verifique os logs nas configurações.", + "client_error": "Erro no cliente", + "could_not_create_stream_for_chromecast": "Não foi possível criar um stream para o Chromecast", + "message_from_server": "Mensagem do servidor: {{message}}", + "video_has_finished_playing": "O vídeo terminou!", + "no_video_source": "Nenhuma fonte de vídeo...", + "next_episode": "Próximo episódio", + "refresh_tracks": "Atualizar faixas", + "subtitle_tracks": "Faixas da legenda:", + "audio_tracks": "Faixas do áudio:", + "playback_state": "Playback State:", + "no_data_available": "Nenhum dado disponível", + "index": "Índice:" + }, + "item_card": { + "next_up": "Próximo em", + "no_items_to_display": "Sem itens a mostrar", + "cast_and_crew": "Elenco e equipe", + "series": "Séries", + "seasons": "Temporadas", + "season": "Temporada", + "no_episodes_for_this_season": "Sem episódios para esta temporada", + "overview": "Sinopse", + "more_with": "Mais itens como {{name}}", + "similar_items": "Itens similares", + "no_similar_items_found": "Nenhum item similar encontrado", + "video": "Vídeo", + "more_details": "Mais detalhes", + "quality": "Bitrate", + "audio": "Áudio", + "subtitles": "Legenda", + "show_more": "Mostrar mais", + "show_less": "Mostrar menos", + "appeared_in": "Apareceu em", + "could_not_load_item": "Não foi possível carregar item", + "none": "Nenhum", + "download": { + "download_season": "Baixar temporada", + "download_series": "Baixar série", + "download_episode": "Baixar episódio", + "download_movie": "Baixar filme", + "download_x_item": "Baixar {{item_count}} itens", + "download_button": "Baixar", + "using_optimized_server": "Utilizando optimized server", + "using_default_method": "Utilizando método padrão" + } + }, + "live_tv": { + "next": "Próximo", + "previous": "Anterior", + "live_tv": "TV ao vivo", + "coming_soon": "Em breve", + "on_now": "Agora", + "shows": "Séries", + "movies": "Filmes", + "sports": "Esportes", + "for_kids": "Para crianças", + "news": "Notícias" + }, + "jellyseerr": { + "confirm": "Confirmar", + "cancel": "Cancelar", + "yes": "Sim", + "whats_wrong": "O que há de errado?", + "issue_type": "Tipo de problema", + "select_an_issue": "Selecione um problema", + "types": "Tipos", + "describe_the_issue": "(Opcional) Descreva o problema...", + "submit_button": "Enviar", + "report_issue_button": "Reportar problema", + "request_button": "Solicitar", + "are_you_sure_you_want_to_request_all_seasons": "Você tem certeza que quer solicitar todas as temporadas?", + "failed_to_login": "Falha no login", + "cast": "Elenco", + "details": "Detalhes", + "status": "Status", + "original_title": "Título original", + "series_type": "Tipos de série", + "release_dates": "Data de lançamento", + "first_air_date": "Primeira data de exibição", + "next_air_date": "Próxima data de exibição", + "revenue": "Receita", + "budget": "Orçamento", + "original_language": "Idioma original", + "production_country": "País de produção", + "studios": "Estúdio", + "network": "Rede", + "currently_streaming_on": "Atualmente sendo exibido em", + "advanced": "Avançado", + "request_as": "Solicitar como", + "tags": "Tags", + "quality_profile": "Perfil de qualidade", + "root_folder": "Pasta padrão", + "season_all": "Temporada (todas)", + "season_number": "Temporada {{season_number}}", + "number_episodes": "{{episode_number}} episódios", + "born": "Nascido em", + "appearances": "Aparece em", + "toasts": { + "jellyseer_does_not_meet_requirements": "Servidor Jellyseerr não atingiu a versão mínima! Atualize no mínimo para a versão 2.0.0", + "jellyseerr_test_failed": "Teste Jellyseerr falhou. Tente novamente.", + "failed_to_test_jellyseerr_server_url": "Falha ao testar a URL do servidor jellyseerr", + "issue_submitted": "Problema enviado!", + "requested_item": "Solicitado {{item}}!", + "you_dont_have_permission_to_request": "Você não possui permissão para solicitar!", + "something_went_wrong_requesting_media": "Algo deu errado ao solicitar!" + } + }, + "tabs": { + "home": "Início", + "search": "Buscar", + "library": "Biblioteca", + "custom_links": "Custom Links", + "favorites": "Favoritos" + } +}