diff --git a/README.en.md b/README.en.md index f1363ba..7bcd5bc 100644 --- a/README.en.md +++ b/README.en.md @@ -86,6 +86,7 @@ SITE_URL=http://localhost DNS_SERVERS=1.1.1.1, 8.8.8.8 DEBUG=true SELENIUM_HOST=selenium-hub:4444 +LANGUAGE=pt-br ``` 4. Run everything: @@ -105,7 +106,10 @@ The configurations are organized in `data/`: - `global_rules.php`: Rules that apply to all sites - `blocked_domains.php`: List of blocked sites - `user_agents.php`: User Agents configurations -- `messages.php`: System messages + +### Translations + +- `/languages/`: Each language is in its ISO id (`pt-br, en or es`) and can be defined in the `LANGUAGE` environment ### S3 Cache diff --git a/README.md b/README.md index 67af8e6..e810a7e 100644 --- a/README.md +++ b/README.md @@ -86,6 +86,7 @@ SITE_URL=http://localhost DNS_SERVERS=1.1.1.1, 8.8.8.8 DEBUG=true SELENIUM_HOST=selenium-hub:4444 +LANGUAGE=pt-br ``` 4. Roda tudo: @@ -105,7 +106,10 @@ As configurações estão organizadas em `data/`: - `global_rules.php`: Regras que se aplicam a todos os sites - `blocked_domains.php`: Lista de sites bloqueados - `user_agents.php`: Configurações de User Agents -- `messages.php`: Mensagens do sistema + +### Traduções + +- `/languages/`: Cada lingua está em seu ISO id (`pt-br, en ou es`) e pode ser definida no environment `LANGUAGE` ### Cache S3 diff --git a/app/.env.sample b/app/.env.sample index e4e99df..8b33b99 100644 --- a/app/.env.sample +++ b/app/.env.sample @@ -7,6 +7,12 @@ SITE_NAME=Marreta # Descrição do site usada em meta tags e SEO SITE_DESCRIPTION="Chapéu de paywall é marreta!" +# Idioma do site (opções disponíveis: pt-br, en, es) +# pt-br = Português do Brasil +# en = English +# es = Español +LANGUAGE=pt-br + # URL base do site (sem barra no final) # Use https://localhost para desenvolvimento local SITE_URL=https://localhost diff --git a/app/config.php b/app/config.php index f33a2b1..5c23bfc 100644 --- a/app/config.php +++ b/app/config.php @@ -7,7 +7,6 @@ * - Carregamento de variáveis de ambiente * - Definições de constantes do sistema * - Configurações de segurança - * - Mensagens do sistema * - Configurações de bots e user agents * - Lista de domínios bloqueados * - Configurações de cache S3 @@ -30,6 +29,7 @@ define('DISABLE_CACHE', isset($_ENV['DISABLE_CACHE']) ? filter_var($_ENV['DISABL define('SELENIUM_HOST', isset($_ENV['SELENIUM_HOST']) ? $_ENV['SELENIUM_HOST'] : 'localhost:4444'); define('CACHE_DIR', __DIR__ . '/cache'); define('DEBUG', isset($_ENV['DEBUG']) ? filter_var($_ENV['DEBUG'], FILTER_VALIDATE_BOOLEAN) : false); +define('LANGUAGE', isset($_ENV['LANGUAGE']) ? $_ENV['LANGUAGE'] : 'pt-br'); /** * Configurações de Redis @@ -60,7 +60,6 @@ if (S3_CACHE_ENABLED) { /** * Carrega as configurações do sistema */ -define('MESSAGES', require __DIR__ . '/data/messages.php'); define('USER_AGENTS', require __DIR__ . '/data/user_agents.php'); define('BLOCKED_DOMAINS', require __DIR__ . '/data/blocked_domains.php'); define('DOMAIN_RULES', require __DIR__ . '/data/domain_rules.php'); diff --git a/app/data/messages.php b/app/data/messages.php deleted file mode 100644 index 4f993b2..0000000 --- a/app/data/messages.php +++ /dev/null @@ -1,42 +0,0 @@ - [ - 'message' => 'Este domínio está bloqueado para extração.', - 'type' => 'error' - ], - 'DNS_FAILURE' => [ - 'message' => 'Falha ao resolver DNS para o domínio. Verifique se a URL está correta.', - 'type' => 'warning' - ], - 'HTTP_ERROR' => [ - 'message' => 'O servidor retornou um erro ao tentar acessar a página. Tente novamente mais tarde.', - 'type' => 'warning' - ], - 'CONNECTION_ERROR' => [ - 'message' => 'Erro ao conectar com o servidor. Verifique sua conexão e tente novamente.', - 'type' => 'warning' - ], - 'CONTENT_ERROR' => [ - 'message' => 'Não foi possível obter o conteúdo. Tente usar os serviços de arquivo.', - 'type' => 'warning' - ], - 'INVALID_URL' => [ - 'message' => 'Formato de URL inválido', - 'type' => 'error' - ], - 'NOT_FOUND' => [ - 'message' => 'Página não encontrada', - 'type' => 'error' - ], - 'GENERIC_ERROR' => [ - 'message' => 'Ocorreu um erro ao processar sua solicitação.', - 'type' => 'warning' - ] -]; diff --git a/app/inc/Language.php b/app/inc/Language.php new file mode 100644 index 0000000..d571a41 --- /dev/null +++ b/app/inc/Language.php @@ -0,0 +1,34 @@ + 'Unknown message', + 'type' => 'error' + ]; + } + + public static function getCurrentLanguage() { + return self::$currentLanguage; + } +} \ No newline at end of file diff --git a/app/index.php b/app/index.php index 66599cb..3bb0802 100644 --- a/app/index.php +++ b/app/index.php @@ -13,6 +13,10 @@ require_once 'config.php'; require_once 'inc/Cache.php'; +require_once 'inc/Language.php'; + +// Initialize language +Language::init(LANGUAGE); // Inicialização de variáveis $message = ''; @@ -20,10 +24,11 @@ $message_type = ''; $url = ''; // Processa mensagens de erro/alerta da query string -if (isset($_GET['message']) && isset(MESSAGES[$_GET['message']])) { +if (isset($_GET['message'])) { $message_key = $_GET['message']; - $message = MESSAGES[$message_key]['message']; - $message_type = MESSAGES[$message_key]['type']; + $messageData = Language::getMessage($message_key); + $message = $messageData['message']; + $message_type = $messageData['type']; } // Processa submissão do formulário @@ -33,8 +38,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['url'])) { header('Location: ' . SITE_URL . '/p/' . urlencode($url)); exit; } else { - $message = MESSAGES['INVALID_URL']['message']; - $message_type = MESSAGES['INVALID_URL']['type']; + $messageData = Language::getMessage('INVALID_URL'); + $message = $messageData['message']; + $message_type = $messageData['type']; } } @@ -43,7 +49,7 @@ $cache = new Cache(); $cache_folder = $cache->getCacheFileCount(); ?> - +
@@ -61,19 +67,19 @@ $cache_folder = $cache->getCacheFileCount();- - - - paredes derrubadas! -
-+ + + + +
+
- Acesso direto:
+
/p/https://exemplo.com
- Arraste o botão abaixo para sua barra de favoritos para acessar o rapidamente em qualquer página: +
- O disponibiliza uma API REST para integração com outros sistemas: +
GET /api/https://exemplo.com
{ "status": 200, @@ -199,25 +205,24 @@ $cache_folder = $cache->getCacheFileCount(); }
{ "status": 400, "error": { "code": "INVALID_URL", - "message": "URL inválida" + "message": "" } }
- Este é um projeto de código aberto feito com ❤️!
- Você pode contribuir, reportar problemas ou fazer sugestões através do GitHub.
+