# Compression Language Packs (Português (Portugal)) 🌐 **Languages:** 🇺🇸 [English](../../../../compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇪🇹 [am](../../../am/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇸🇦 [ar](../../../ar/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇦🇿 [az](../../../az/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇧🇬 [bg](../../../bg/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇧🇩 [bn](../../../bn/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇧🇦 [bs](../../../bs/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇨🇿 [cs](../../../cs/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇩🇰 [da](../../../da/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇩🇪 [de](../../../de/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇬🇷 [el](../../../el/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇪🇸 [es](../../../es/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇪🇪 [et](../../../et/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇷 [fa](../../../fa/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇫🇮 [fi](../../../fi/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇫🇷 [fr](../../../fr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇪 [ga](../../../ga/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [gu](../../../gu/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇬 [ha](../../../ha/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇱 [he](../../../he/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [hi](../../../hi/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇭🇷 [hr](../../../hr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇭🇺 [hu](../../../hu/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇦🇲 [hy](../../../hy/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇩 [id](../../../id/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇬 [ig](../../../ig/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇹 [it](../../../it/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇯🇵 [ja](../../../ja/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇬🇪 [ka](../../../ka/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇰🇭 [km](../../../km/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [kn](../../../kn/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇰🇷 [ko](../../../ko/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇱🇹 [lt](../../../lt/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇱🇻 [lv](../../../lv/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [ml](../../../ml/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [mr](../../../mr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇲🇾 [ms](../../../ms/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇲🇹 [mt](../../../mt/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇲🇲 [my](../../../my/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇵 [ne](../../../ne/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇱 [nl](../../../nl/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇴 [no](../../../no/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [or](../../../or/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [pa](../../../pa/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇵🇭 [phi](../../../phi/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇵🇱 [pl](../../../pl/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇷🇴 [ro](../../../ro/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇷🇺 [ru](../../../ru/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇱🇰 [si](../../../si/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇸🇰 [sk](../../../sk/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇸🇮 [sl](../../../sl/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇷🇸 [sr](../../../sr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇸🇪 [sv](../../../sv/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇰🇪 [sw](../../../sw/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [ta](../../../ta/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇮🇳 [te](../../../te/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇹🇭 [th](../../../th/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇹🇷 [tr](../../../tr/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇵🇰 [ur](../../../ur/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇺🇿 [uz](../../../uz/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇻🇳 [vi](../../../vi/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇳🇬 [yo](../../../yo/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/compression/COMPRESSION_LANGUAGE_PACKS.md) --- A compressão Caveman pode carregar pacotes de regras específicos de cada idioma, além das regras integradas para inglês. Isto mantém o motor principal estável, permitindo simultaneamente que os pacotes de português, espanhol, alemão, francês, italiano, japonês e de idiomas futuros evoluam de forma independente. ## Localização Os pacotes de idiomas encontram-se em: ```txt open-sse/services/compression/rules// ``` Pacotes atualmente distribuídos (verificados face ao conteúdo do diretório `rules/`): | Idioma | Diretório | Categorias de regras presentes | | ------------------ | -------------- | --------------------------------------------------- | | Inglês | `rules/en/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Espanhol | `rules/es/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Português (Brasil) | `rules/pt-BR/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Indonésio | `rules/id/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Italiano | `rules/it/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Alemão | `rules/de/` | `context`, `filler`, `structural` | | Francês | `rules/fr/` | `context`, `filler`, `structural` | | Japonês | `rules/ja/` | `context`, `filler`, `structural` | > **Nota de paridade:** Os pacotes `en`, `es`, `pt-BR`, `id` e `it` têm as 5 categorias completas; `de`, `fr` e `ja` incluem 3 categorias. As categorias `dedup` e `ultra` em falta recorrem silenciosamente às regras integradas para inglês. Aceitam-se contribuições para adicionar `dedup.json` e `ultra.json` aos pacotes mais pequenos. > > O pacote `pt-BR` baseia-se no **[Troglodita](https://github.com/leninejunior/troglodita)** de Lenine Júnior — um sistema de compressão concebido de raiz para a gramática do português do Brasil (redução de pleonasmos, remoção de expressões de preenchimento em PT-BR e abreviaturas técnicas para a comunidade brasileira de programadores). > > A lista canónica de categorias e o esquema de cada categoria encontram-se em [`open-sse/services/compression/rules/_schema.json`](../../open-sse/services/compression/rules/_schema.json) (JSON Schema draft 2020-12). ## Deteção do idioma `languageDetector.ts` utiliza heurísticas simples para inferir o idioma a partir do texto do prompt. O idioma predefinido configurado continua a ser respeitado, e a deteção pode ser desativada na configuração quando é necessário um controlo exato. O resultado da deteção é utilizado apenas para escolher os pacotes de regras. Não altera o encaminhamento para fornecedores, a seleção da região nem o idioma da interface. ## Estrutura da configuração As definições de compressão podem incluir: ```json { "languageConfig": { "enabled": true, "defaultLanguage": "en", "autoDetect": true, "enabledPacks": ["en", "pt-BR", "es", "id", "de", "fr", "ja"] }, "cavemanConfig": { "language": "en", "autoDetectLanguage": true, "enabledLanguagePacks": ["en", "pt-BR", "es", "id", "de", "fr", "ja"] } } ``` `languageConfig` controla as predefinições do painel e da pré-visualização. `cavemanConfig` é a configuração do motor em tempo de execução utilizada quando o Caveman comprime o texto das mensagens. ## Adicionar um Pacote de Idioma 1. Crie `open-sse/services/compression/rules//.json`. 2. Utilize o formato de regras Caveman descrito em `docs/compression/COMPRESSION_RULES_FORMAT.md`. 3. Mantenha as substituições conservadoras e evite alterar código, identificadores, URLs ou JSON. 4. Adicione ou atualize testes para a seleção de idioma e o comportamento das substituições. 5. Disponibilize novas etiquetas de dashboard/i18n se o idioma aparecer nos seletores da interface. ## API Os pacotes disponíveis podem ser consultados com: ```bash curl http://localhost:20128/api/compression/language-packs ``` O endpoint de pré-visualização aceita substituições da configuração de idioma: ```bash curl -X POST http://localhost:20128/api/compression/preview \ -H "Content-Type: application/json" \ -d '{ "mode": "standard", "text": "Por favor, eu gostaria que voce basicamente resumisse isso.", "config": { "languageConfig": { "defaultLanguage": "pt-BR", "autoDetect": true } } }' ``` ## SHARED_BOUNDARIES (v3.8.0) Todos os 6 pacotes de idioma receberam uma cláusula `SHARED_BOUNDARIES` na v3.8.0, que é aplicada em todas as intensidades Caveman (LITE, FULL, ULTRA). Esta instrui o motor a preservar estes padrões literalmente, independentemente da remoção de conteúdo supérfluo circundante: | Tipo de padrão | Exemplo | | --------------------------------------------- | -------------------------------------- | | Blocos de código delimitados | ` ```python\n...\n``` ` | | Código em linha | `` `my_var` `` | | URLs | `https://example.com/path` | | Caminhos de ficheiros (absolutos + relativos) | `/etc/hosts`, `./src/index.ts` | | Cabeçalhos de erro | `Error:`, `TypeError:`, `SyntaxError:` | | Linhas de rastreio da pilha | ` at functionName (file.ts:12:3)` | Estes padrões são preenchidos em `DEFAULT_CAVEMAN_CONFIG.preservePatterns` (anteriormente `[]`). A constante encontra-se em `open-sse/services/compression/types.ts`. ### Por que motivo isto é importante Sem `SHARED_BOUNDARIES`, os modos Caveman agressivos poderiam remover conteúdo que parecesse texto repetitivo, mas que fosse, na realidade, um fragmento de código, um caminho de ficheiro ou um rastreio de erros. `SHARED_BOUNDARIES` funciona como uma rede de segurança independente do idioma, aplicada antes da execução das regras de remoção de conteúdo supérfluo. ### Personalizar preservePatterns É possível adicionar padrões adicionais em tempo de execução através das definições de compressão: ````json { "cavemanConfig": { "preservePatterns": [ "```[\\s\\S]*?```", "`[^`]+`", "https?://\\S+", "(?:/|\\./)[^\\s]+", "\\b(?:Error|TypeError|SyntaxError|RangeError):", "\\s+at\\s+\\S+\\s+\\(\\S+:\\d+:\\d+\\)" ] } } ```` Os padrões personalizados complementam (não substituem) os 6 padrões predefinidos. --- ## Notas Operacionais - As regras incorporadas para inglês continuam a ser a alternativa quando falta um pacote de idioma. - Os pacotes JSON incorporados inválidos falham na validação, para que os recursos de lançamento não se degradem silenciosamente. - Os pacotes de regras contêm apenas dados e não devem importar código nem executar lógica arbitrária. - A camada de análise de compressão regista o modo e o motor selecionados, não o texto integral do prompt.