# Compression Language Packs (Tiếng Việt) 🌐 **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](../../../pt/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) · 🇳🇬 [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) --- Nén Caveman có thể tải các gói quy tắc dành riêng cho từng ngôn ngữ ngoài các quy tắc tiếng Anh tích hợp sẵn. Điều này giúp công cụ lõi duy trì ổn định, đồng thời cho phép các gói ngôn ngữ tiếng Bồ Đào Nha, Tây Ban Nha, Đức, Pháp, Ý, Nhật và các gói ngôn ngữ trong tương lai phát triển độc lập. ## Vị trí Các gói ngôn ngữ nằm trong: ```txt open-sse/services/compression/rules// ``` Các gói hiện được cung cấp (đã xác minh dựa trên nội dung thư mục `rules/`): | Ngôn ngữ | Thư mục | Các danh mục quy tắc hiện có | | ------------------------- | -------------- | --------------------------------------------------- | | Tiếng Anh | `rules/en/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Tiếng Tây Ban Nha | `rules/es/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Tiếng Bồ Đào Nha (Brazil) | `rules/pt-BR/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Tiếng Indonesia | `rules/id/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Tiếng Ý | `rules/it/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | Tiếng Đức | `rules/de/` | `context`, `filler`, `structural` | | Tiếng Pháp | `rules/fr/` | `context`, `filler`, `structural` | | Tiếng Nhật | `rules/ja/` | `context`, `filler`, `structural` | > **Lưu ý về tính tương đương:** Các gói `en`, `es`, `pt-BR`, `id` và `it` có đầy đủ 5 danh mục; `de`, `fr`, `ja` được cung cấp với 3 danh mục. Các danh mục `dedup` và `ultra` còn thiếu sẽ tự động chuyển sang sử dụng các quy tắc tiếng Anh tích hợp sẵn mà không đưa ra thông báo. Chúng tôi hoan nghênh các đóng góp bổ sung `dedup.json` và `ultra.json` cho những gói nhỏ hơn. > > Gói `pt-BR` dựa trên **[Troglodita](https://github.com/leninejunior/troglodita)** của Lenine Júnior — một hệ thống nén được thiết kế từ đầu cho ngữ pháp tiếng Bồ Đào Nha Brazil (giảm phép trùng ý, loại bỏ từ đệm PT-BR, các từ viết tắt kỹ thuật dành cho cộng đồng nhà phát triển Brazil). > > Danh sách danh mục chuẩn và lược đồ cho từng danh mục nằm trong [`open-sse/services/compression/rules/_schema.json`](../../open-sse/services/compression/rules/_schema.json) (JSON Schema bản nháp 2020-12). ## Phát hiện ngôn ngữ `languageDetector.ts` sử dụng các phương pháp suy đoán nhẹ để xác định ngôn ngữ từ văn bản lời nhắc. Ngôn ngữ mặc định đã cấu hình vẫn được ưu tiên, đồng thời có thể tắt tính năng phát hiện thông qua cấu hình khi cần kiểm soát chính xác. Kết quả phát hiện chỉ được dùng để chọn các gói quy tắc. Nó không thay đổi định tuyến nhà cung cấp, lựa chọn ngôn ngữ bản địa hoặc ngôn ngữ giao diện người dùng. ## Cấu trúc cấu hình Thiết lập nén có thể bao gồm: ```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` kiểm soát các giá trị mặc định của bảng điều khiển/bản xem trước. `cavemanConfig` là cấu hình công cụ khi chạy được sử dụng khi Caveman nén văn bản tin nhắn. ## Thêm Gói Ngôn ngữ 1. Tạo `open-sse/services/compression/rules//.json`. 2. Sử dụng định dạng quy tắc Caveman từ `docs/compression/COMPRESSION_RULES_FORMAT.md`. 3. Giữ các phép thay thế ở mức thận trọng và tránh thay đổi mã, định danh, URL hoặc JSON. 4. Thêm hoặc cập nhật các bài kiểm thử cho việc lựa chọn ngôn ngữ và hành vi thay thế. 5. Cung cấp các nhãn dashboard/i18n mới nếu ngôn ngữ xuất hiện trong các bộ chọn trên giao diện người dùng. ## API Có thể truy vấn các gói hiện có bằng: ```bash curl http://localhost:20128/api/compression/language-packs ``` Endpoint xem trước chấp nhận các giá trị ghi đè cấu hình ngôn ngữ: ```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) Cả 6 gói ngôn ngữ đều được bổ sung một mệnh đề `SHARED_BOUNDARIES` trong v3.8.0, được áp dụng ở mọi mức cường độ Caveman (LITE, FULL, ULTRA). Mệnh đề này chỉ thị cho công cụ giữ nguyên văn các mẫu sau, bất kể việc loại bỏ từ ngữ thừa xung quanh: | Loại mẫu | Ví dụ | | ------------------------------------- | -------------------------------------- | | Khối mã có hàng rào | ` ```python\n...\n``` ` | | Mã nội tuyến | `` `my_var` `` | | URL | `https://example.com/path` | | Đường dẫn tệp (tuyệt đối + tương đối) | `/etc/hosts`, `./src/index.ts` | | Tiêu đề lỗi | `Error:`, `TypeError:`, `SyntaxError:` | | Dòng dấu vết ngăn xếp | ` at functionName (file.ts:12:3)` | Các mẫu này được điền vào `DEFAULT_CAVEMAN_CONFIG.preservePatterns` (trước đây là `[]`). Hằng số này nằm trong `open-sse/services/compression/types.ts`. ### Tại sao điều này quan trọng Nếu không có SHARED_BOUNDARIES, các chế độ Caveman mạnh có thể loại bỏ nội dung trông giống văn bản lặp lại nhưng thực chất là đoạn mã, đường dẫn tệp hoặc ngăn xếp lỗi. SHARED_BOUNDARIES hoạt động như một lớp bảo vệ không phụ thuộc vào ngôn ngữ, được áp dụng trước khi các quy tắc loại bỏ từ ngữ thừa chạy. ### Tùy chỉnh preservePatterns Có thể thêm các mẫu bổ sung trong thời gian chạy thông qua cài đặt nén: ````json { "cavemanConfig": { "preservePatterns": [ "```[\\s\\S]*?```", "`[^`]+`", "https?://\\S+", "(?:/|\\./)[^\\s]+", "\\b(?:Error|TypeError|SyntaxError|RangeError):", "\\s+at\\s+\\S+\\s+\\(\\S+:\\d+:\\d+\\)" ] } } ```` Các mẫu tùy chỉnh sẽ mở rộng (không thay thế) 6 mẫu mặc định. --- ## Ghi chú Vận hành - Các quy tắc tiếng Anh tích hợp sẵn vẫn là phương án dự phòng khi thiếu gói ngôn ngữ. - Các gói JSON tích hợp sẵn không hợp lệ sẽ không vượt qua bước xác thực, nhờ đó tài nguyên phát hành không bị suy giảm một cách âm thầm. - Các gói quy tắc chỉ chứa dữ liệu và không được nhập mã hoặc chạy logic tùy ý. - Lớp phân tích nén ghi lại chế độ và công cụ đã chọn, không ghi toàn bộ văn bản lời nhắc.