# Compression Language Packs (ខ្មែរ) 🌐 **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) · 🇮🇳 [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) · 🇻🇳 [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) --- ការបង្ហាប់ Caveman អាចផ្ទុកកញ្ចប់ច្បាប់ជាក់លាក់តាមភាសា បន្ថែមពីលើច្បាប់ភាសាអង់គ្លេសដែលមានស្រាប់។ វិធីនេះរក្សាម៉ាស៊ីនស្នូលឱ្យមានស្ថិរភាព ខណៈដែលអនុញ្ញាតឱ្យកញ្ចប់ភាសាព័រទុយហ្គាល់ អេស្ប៉ាញ អាល្លឺម៉ង់ បារាំង អ៊ីតាលី ជប៉ុន និង កញ្ចប់ភាសានាពេលអនាគត អាចវិវឌ្ឍដោយឯករាជ្យ។ ## ទីតាំង កញ្ចប់ភាសាស្ថិតនៅក្រោម៖ ```txt open-sse/services/compression/rules// ``` កញ្ចប់ដែលបានចែកចាយបច្ចុប្បន្ន (បានផ្ទៀងផ្ទាត់ជាមួយមាតិកាថត `rules/`)៖ | ភាសា | ថត | ប្រភេទច្បាប់ដែលមាន | | ----------------------- | -------------- | --------------------------------------------------- | | អង់គ្លេស | `rules/en/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | អេស្ប៉ាញ | `rules/es/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | ព័រទុយហ្គាល់ (ប្រេស៊ីល) | `rules/pt-BR/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | ឥណ្ឌូណេស៊ី | `rules/id/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | អ៊ីតាលី | `rules/it/` | `context`, `dedup`, `filler`, `structural`, `ultra` | | អាល្លឺម៉ង់ | `rules/de/` | `context`, `filler`, `structural` | | បារាំង | `rules/fr/` | `context`, `filler`, `structural` | | ជប៉ុន | `rules/ja/` | `context`, `filler`, `structural` | > **កំណត់សម្គាល់អំពីភាពស្មើគ្នា៖** កញ្ចប់ `en`, `es`, `pt-BR`, `id`, និង `it` មានប្រភេទទាំង 5 ពេញលេញ ខណៈដែល `de`, `fr`, `ja` ចែកចាយជាមួយ 3 ប្រភេទ។ ប្រភេទ `dedup` និង `ultra` ដែលបាត់ នឹងត្រឡប់ទៅប្រើច្បាប់ភាសាអង់គ្លេសដែលមានស្រាប់ដោយស្ងៀមស្ងាត់។ សូមស្វាគមន៍ការរួមចំណែកដើម្បីបន្ថែម `dedup.json` និង `ultra.json` សម្រាប់កញ្ចប់ដែលមានទំហំតូចជាង។ > > កញ្ចប់ `pt-BR` ផ្អែកលើ **[Troglodita](https://github.com/leninejunior/troglodita)** ដោយ Lenine Júnior — ជាប្រព័ន្ធបង្ហាប់ដែលត្រូវបានរចនាឡើងពីដំបូងសម្រាប់វេយ្យាករណ៍ព័រទុយហ្គាល់ប្រេស៊ីល (ការកាត់បន្ថយពាក្យស្ទួនន័យ ការលុបពាក្យបំពេញ PT-BR និងអក្សរកាត់បច្ចេកទេសសម្រាប់សហគមន៍អ្នកអភិវឌ្ឍន៍ប្រេស៊ីល)។ > > បញ្ជីប្រភេទផ្លូវការ និងស្គីមាតាមប្រភេទនីមួយៗ មាននៅក្នុង [`open-sse/services/compression/rules/_schema.json`](../../open-sse/services/compression/rules/_schema.json) (JSON Schema draft 2020-12)។ ## ការរកឃើញភាសា `languageDetector.ts` ប្រើវិធីសាស្ត្រសន្និដ្ឋានស្រាលៗ ដើម្បីកំណត់ភាសាពីអត្ថបទប្រអប់បញ្ចូល។ ភាសាលំនាំដើមដែលបានកំណត់នៅតែត្រូវបានគោរព ហើយការរកឃើញអាចត្រូវបានបិទតាមរយៈការកំណត់រចនាសម្ព័ន្ធ នៅពេលត្រូវការការគ្រប់គ្រងយ៉ាងជាក់លាក់។ លទ្ធផលនៃការរកឃើញត្រូវបានប្រើសម្រាប់តែជ្រើសរើសកញ្ចប់ច្បាប់ប៉ុណ្ណោះ។ វាមិនផ្លាស់ប្តូរការបញ្ជូនទៅអ្នកផ្តល់សេវា ការជ្រើសរើសតំបន់ភាសា ឬភាសាចំណុចប្រទាក់អ្នកប្រើទេ។ ## ទម្រង់ការកំណត់រចនាសម្ព័ន្ធ ការកំណត់ការបង្ហាប់អាចរួមបញ្ចូល៖ ```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` គ្រប់គ្រងតម្លៃលំនាំដើមនៃផ្ទាំងគ្រប់គ្រង/ការមើលជាមុន។ `cavemanConfig` គឺជាការកំណត់រចនាសម្ព័ន្ធម៉ាស៊ីនពេលដំណើរការ ដែលត្រូវបានប្រើនៅពេល Caveman បង្ហាប់អត្ថបទសារ។ ## ការបន្ថែមកញ្ចប់ភាសា 1. បង្កើត `open-sse/services/compression/rules//.json`។ 2. ប្រើទម្រង់ច្បាប់ Caveman ពី `docs/compression/COMPRESSION_RULES_FORMAT.md`។ 3. រក្សាការជំនួសឱ្យមានលក្ខណៈប្រុងប្រយ័ត្ន និងជៀសវាងការផ្លាស់ប្តូរកូដ អត្តសញ្ញាណកម្ម URLs ឬ JSON។ 4. បន្ថែម ឬធ្វើបច្ចុប្បន្នភាពការធ្វើតេស្តសម្រាប់ការជ្រើសរើសភាសា និងឥរិយាបថនៃការជំនួស។ 5. បង្ហាញស្លាក dashboard/i18n ថ្មី ប្រសិនបើភាសានោះបង្ហាញនៅក្នុងឧបករណ៍ជ្រើសរើស UI។ ## API កញ្ចប់ដែលមានអាចត្រូវបានសួររកដោយប្រើ៖ ```bash curl http://localhost:20128/api/compression/language-packs ``` endpoint សម្រាប់មើលជាមុនទទួលយកការកំណត់រចនាសម្ព័ន្ធភាសាដែលកំណត់ជំនួស៖ ```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) កញ្ចប់ភាសាទាំង 6 បានទទួលឃ្លា `SHARED_BOUNDARIES` នៅក្នុង v3.8.0 ដែលត្រូវបានអនុវត្តនៅគ្រប់ កម្រិតអាំងតង់ស៊ីតេ Caveman (LITE, FULL, ULTRA)។ វាណែនាំឱ្យ engine រក្សាទុក pattern ទាំងនេះដដែលៗ ដោយមិនគិតពីការដកពាក្យបំពេញនៅជុំវិញ៖ | ប្រភេទ pattern | ឧទាហរណ៍ | | ----------------------------- | -------------------------------------- | | ប្លុកកូដដែលមានរបង | ` ```python\n...\n``` ` | | កូដក្នុងបន្ទាត់ | `` `my_var` `` | | URLs | `https://example.com/path` | | ផ្លូវឯកសារ (ដាច់ខាត + ទាក់ទង) | `/etc/hosts`, `./src/index.ts` | | បឋមកថាកំហុស | `Error:`, `TypeError:`, `SyntaxError:` | | បន្ទាត់ stack trace | ` at functionName (file.ts:12:3)` | pattern ទាំងនេះត្រូវបានបញ្ចូលក្នុង `DEFAULT_CAVEMAN_CONFIG.preservePatterns` (ពីមុនជា `[]`)។ constant នេះស្ថិតនៅក្នុង `open-sse/services/compression/types.ts`។ ### ហេតុអ្វីវាសំខាន់ បើគ្មាន SHARED_BOUNDARIES ទេ របៀប Caveman កម្រិតខ្លាំងអាចលុបមាតិកាដែលមើលទៅដូចជាអត្ថបទ ដដែលៗ ប៉ុន្តែតាមពិតជា snippet កូដ ផ្លូវឯកសារ ឬ error stack។ SHARED_BOUNDARIES ដើរតួជា សំណាញ់សុវត្ថិភាពដែលមិនអាស្រ័យលើភាសា ហើយត្រូវបានអនុវត្តមុនពេលច្បាប់ពាក្យបំពេញដំណើរការ។ ### ការកំណត់ `preservePatterns` តាមបំណង អាចបន្ថែម pattern ផ្សេងទៀតនៅពេលដំណើរការ តាមរយៈការកំណត់ការបង្ហាប់៖ ````json { "cavemanConfig": { "preservePatterns": [ "```[\\s\\S]*?```", "`[^`]+`", "https?://\\S+", "(?:/|\\./)[^\\s]+", "\\b(?:Error|TypeError|SyntaxError|RangeError):", "\\s+at\\s+\\S+\\s+\\(\\S+:\\d+:\\d+\\)" ] } } ```` pattern ផ្ទាល់ខ្លួនពង្រីកបន្ថែម (មិនមែនជំនួស) តម្លៃលំនាំដើមទាំង 6។ --- ## កំណត់សម្គាល់ប្រតិបត្តិការ - ច្បាប់ English ដែលមានស្រាប់នៅតែជា fallback នៅពេលគ្មានកញ្ចប់ភាសា។ - កញ្ចប់ JSON ដែលមានស្រាប់ និងមិនត្រឹមត្រូវនឹងបរាជ័យក្នុងការផ្ទៀងផ្ទាត់ ដើម្បីកុំឱ្យ release assets ចុះខ្សោយដោយមិនមានការជូនដំណឹង។ - កញ្ចប់ច្បាប់មានតែទិន្នន័យប៉ុណ្ណោះ ហើយមិនគួរ import កូដ ឬដំណើរការ logic ដោយសេរីទេ។ - ស្រទាប់ analytics នៃការបង្ហាប់កត់ត្រា mode និង engine ដែលបានជ្រើសរើស មិនមែនអត្ថបទ prompt ទាំងមូលទេ។