georgian-hyphenation 2.0.1 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +1 -1
- package/README.md +71 -341
- package/data/exceptions.json +144 -0
- package/package.json +13 -6
- package/src/javascript/index.js +112 -96
- package/README-NPM.md +0 -620
package/LICENSE.txt
CHANGED
package/README.md
CHANGED
|
@@ -1,424 +1,154 @@
|
|
|
1
|
-
# Georgian Language Hyphenation
|
|
1
|
+
# Georgian Language Hyphenation
|
|
2
2
|
|
|
3
|
-
[](https://www.python.org/downloads/)
|
|
3
|
+
[](https://www.npmjs.com/package/georgian-hyphenation)
|
|
5
4
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
[](https://www.ecma-international.org/)
|
|
5
|
+
[](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules)
|
|
8
6
|
|
|
9
|
-
**Version 2.
|
|
7
|
+
**Version 2.2.1** - Academic Logic with Automatic Sanitization & Dictionary Support
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
ქართული ენის სრული დამარცვლის ბიბლიოთეკა, რომელიც იყენებს თანამედროვე ლინგვისტურ ალგორითმებს ზუსტი მარცვლების გამოყოფისთვის.
|
|
9
|
+
ქართული ენის სრული დამარცვლის ბიბლიოთეკა. ვერსია 2.2.1 მოიცავს ავტომატურ გასუფთავებას (Sanitization) და გამონაკლისების ლექსიკონის მხარდაჭერას.
|
|
14
10
|
|
|
15
11
|
---
|
|
16
12
|
|
|
17
|
-
## ✨
|
|
18
|
-
|
|
19
|
-
### 🎓 **v2.0 Academic Logic**
|
|
20
|
-
- **Phonological Distance Analysis**: Intelligent vowel-to-vowel distance calculation
|
|
21
|
-
- **Anti-Orphan Protection**: Prevents single-character splits (minimum 2 chars per side)
|
|
22
|
-
- **'R' Rule**: Special handling for Georgian 'რ' in consonant clusters
|
|
23
|
-
- **Hiatus Handling**: Proper V-V split detection (e.g., გა-ა-ნა-ლი-ზა)
|
|
24
|
-
- **98%+ Accuracy**: Validated on 10,000+ Georgian words
|
|
13
|
+
## ✨ New in v2.2.1
|
|
25
14
|
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
- ✅ **Browser Extension** - Automatic hyphenation on any website
|
|
31
|
-
- ✅ **Web-ready** with HTML/CSS/JS demo
|
|
32
|
-
- ✅ **Export capabilities**: JSON, TeX, Hunspell
|
|
33
|
-
- ✅ **Well-tested** with comprehensive Georgian word corpus
|
|
15
|
+
- 🧹 **Automatic Sanitization**: Automatically strips existing soft-hyphens or markers before processing to prevent "double-hyphenation" bugs.
|
|
16
|
+
- 📚 **Dictionary Support**: Integrated exception handling for irregular words.
|
|
17
|
+
- 🚀 **Performance Boost**: Harmonic cluster lookups optimized using `Set` (O(1) complexity).
|
|
18
|
+
- 📦 **Modern ESM Support**: Native support for `import/export` syntax.
|
|
34
19
|
|
|
35
20
|
---
|
|
36
21
|
|
|
37
|
-
##
|
|
38
|
-
|
|
39
|
-
### Version 2.0: Academic Approach
|
|
40
|
-
|
|
41
|
-
The v2.0 algorithm uses **phonological distance analysis** instead of pattern matching:
|
|
42
|
-
|
|
43
|
-
#### **Core Principles:**
|
|
44
|
-
|
|
45
|
-
1. **Vowel Distance Analysis** (ხმოვანთა მანძილის ანალიზი)
|
|
46
|
-
- Finds all vowel positions in the word
|
|
47
|
-
- Analyzes consonant cluster distance between vowels
|
|
48
|
-
- Applies context-aware splitting rules
|
|
49
|
-
|
|
50
|
-
2. **Splitting Rules:**
|
|
51
|
-
- **V-V** (distance = 0): Split between vowels → `გა-ა-ნა`
|
|
52
|
-
- **V-C-V** (distance = 1): Split before consonant → `მა-მა`
|
|
53
|
-
- **V-CC-V** (distance ≥ 2): Split after first consonant → `საქ-მე`
|
|
54
|
-
|
|
55
|
-
3. **Special Rules:**
|
|
56
|
-
- **'R' Rule**: If cluster starts with 'რ', keep it left → `ბარ-ბი` (not `ბა-რბი`)
|
|
57
|
-
- **Anti-Orphan**: Minimum 2 characters on each side → `არა` stays intact
|
|
58
|
-
|
|
59
|
-
4. **Safety Filters:**
|
|
60
|
-
- Words < 4 characters: Never hyphenated
|
|
61
|
-
- Single vowel words: Cannot be split
|
|
62
|
-
- Punctuation preserved in text processing
|
|
63
|
-
|
|
64
|
-
#### **Examples:**
|
|
65
|
-
|
|
66
|
-
| Word | Analysis | Result |
|
|
67
|
-
|------|----------|--------|
|
|
68
|
-
| **საქართველო** | V(ა)-C(ქ)-C(რ)-V(ე) | სა-ქარ-თვე-ლო |
|
|
69
|
-
| **იარაღი** | V(ი)-V(ა)-C(რ)-V(ა) | ი-ა-რა-ღი |
|
|
70
|
-
| **ბარბი** | V(ა)-C(**რ**)-C(ბ)-V(ი) | ბარ-ბი *(R Rule)* |
|
|
71
|
-
| **არა** | V(ა)-C(რ)-V(ა) | არა *(Anti-Orphan)* |
|
|
72
|
-
| **კომპიუტერი** | Complex cluster | კომ-პი-უ-ტე-რი |
|
|
73
|
-
|
|
74
|
-
---
|
|
75
|
-
|
|
76
|
-
## 📦 Installation / ინსტალაცია
|
|
77
|
-
|
|
78
|
-
### Python
|
|
79
|
-
```bash
|
|
80
|
-
pip install georgian-hyphenation
|
|
81
|
-
```
|
|
22
|
+
## 📦 Installation
|
|
82
23
|
|
|
83
|
-
### JavaScript (NPM)
|
|
84
24
|
```bash
|
|
85
25
|
npm install georgian-hyphenation
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Browser Extension
|
|
89
|
-
|
|
90
|
-
**Firefox:** [Install from Firefox Add-ons](https://addons.mozilla.org/firefox/addon/georgian-hyphenation/)
|
|
91
|
-
**Chrome:** *Coming soon to Chrome Web Store*
|
|
92
26
|
|
|
93
|
-
### Manual Installation
|
|
94
|
-
```bash
|
|
95
|
-
git clone https://github.com/guramzhgamadze/georgian-hyphenation.git
|
|
96
|
-
cd georgian-hyphenation
|
|
97
|
-
python setup.py install
|
|
98
27
|
```
|
|
99
28
|
|
|
100
29
|
---
|
|
101
30
|
|
|
102
|
-
## 📖 Usage /
|
|
31
|
+
## 📖 Usage (Modern JavaScript / ESM)
|
|
103
32
|
|
|
104
|
-
###
|
|
105
|
-
```python
|
|
106
|
-
from georgian_hyphenation import GeorgianHyphenator
|
|
33
|
+
### Basic Usage
|
|
107
34
|
|
|
108
|
-
|
|
109
|
-
|
|
35
|
+
```javascript
|
|
36
|
+
import GeorgianHyphenator from 'georgian-hyphenation';
|
|
110
37
|
|
|
111
|
-
|
|
112
|
-
word = "საქართველო"
|
|
113
|
-
result = hyphenator.hyphenate(word)
|
|
114
|
-
print(result) # საქართველო (with U+00AD soft hyphens)
|
|
38
|
+
const hyphenator = new GeorgianHyphenator('-'); // Use '-' for visible results
|
|
115
39
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
40
|
+
// 1. Hyphenate a word
|
|
41
|
+
console.log(hyphenator.hyphenate('საქართველო'));
|
|
42
|
+
// Output: "სა-ქარ-თვე-ლო"
|
|
119
43
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
44
|
+
// 2. Automatic Sanitization (New!)
|
|
45
|
+
// If the word already contains hyphens, it cleans them first
|
|
46
|
+
const messyWord = 'სა-ქარ-თვე-ლო';
|
|
47
|
+
console.log(hyphenator.hyphenate(messyWord));
|
|
48
|
+
// Output: "სა-ქარ-თვე-ლო" (Correctly re-processed)
|
|
123
49
|
|
|
124
|
-
# Hyphenate entire text (preserves punctuation)
|
|
125
|
-
text = "საქართველო არის ლამაზი ქვეყანა."
|
|
126
|
-
print(hyphenator.hyphenate_text(text))
|
|
127
|
-
# Output: საქართველო არის ლამაზი ქვეყანა.
|
|
128
50
|
```
|
|
129
51
|
|
|
130
|
-
###
|
|
131
|
-
```javascript
|
|
132
|
-
const { GeorgianHyphenator } = require('georgian-hyphenation');
|
|
52
|
+
### Loading Exceptions Dictionary
|
|
133
53
|
|
|
134
|
-
|
|
135
|
-
//
|
|
54
|
+
```javascript
|
|
55
|
+
// Load the built-in dictionary of exceptions
|
|
56
|
+
await hyphenator.loadDefaultLibrary();
|
|
136
57
|
|
|
137
|
-
|
|
138
|
-
const hyphenator = new GeorgianHyphenator();
|
|
58
|
+
console.log(hyphenator.hyphenate('ობიექტი'));
|
|
139
59
|
|
|
140
|
-
|
|
141
|
-
const word = "საქართველო";
|
|
142
|
-
const result = hyphenator.hyphenate(word);
|
|
143
|
-
console.log(result); // საქართველო (with U+00AD)
|
|
60
|
+
```
|
|
144
61
|
|
|
145
|
-
|
|
146
|
-
const syllables = hyphenator.getSyllables(word);
|
|
147
|
-
console.log(syllables); // ['სა', 'ქარ', 'თვე', 'ლო']
|
|
62
|
+
### Hyphenate Entire Text
|
|
148
63
|
|
|
149
|
-
|
|
150
|
-
const text = "საქართველო
|
|
64
|
+
```javascript
|
|
65
|
+
const text = "გამარჯობა, საქართველო მშვენიერი ქვეყანაა!";
|
|
151
66
|
console.log(hyphenator.hyphenateText(text));
|
|
152
|
-
```
|
|
153
67
|
|
|
154
|
-
### HTML/CSS Integration
|
|
155
|
-
```html
|
|
156
|
-
<!DOCTYPE html>
|
|
157
|
-
<html lang="ka">
|
|
158
|
-
<head>
|
|
159
|
-
<style>
|
|
160
|
-
.hyphenated {
|
|
161
|
-
hyphens: manual;
|
|
162
|
-
-webkit-hyphens: manual;
|
|
163
|
-
text-align: justify;
|
|
164
|
-
}
|
|
165
|
-
</style>
|
|
166
|
-
</head>
|
|
167
|
-
<body>
|
|
168
|
-
<p class="hyphenated" id="text"></p>
|
|
169
|
-
|
|
170
|
-
<script src="https://cdn.jsdelivr.net/npm/georgian-hyphenation"></script>
|
|
171
|
-
<script>
|
|
172
|
-
const hyphenator = new GeorgianHyphenator('\u00AD');
|
|
173
|
-
const text = "საქართველო არის ძალიან ლამაზი ქვეყანა";
|
|
174
|
-
document.getElementById('text').textContent =
|
|
175
|
-
hyphenator.hyphenateText(text);
|
|
176
|
-
</script>
|
|
177
|
-
</body>
|
|
178
|
-
</html>
|
|
179
68
|
```
|
|
180
69
|
|
|
181
70
|
---
|
|
182
71
|
|
|
183
|
-
##
|
|
184
|
-
|
|
185
|
-
### TeX Patterns
|
|
186
|
-
```python
|
|
187
|
-
from georgian_hyphenation import to_tex_pattern
|
|
188
|
-
|
|
189
|
-
words = ["საქართველო", "მთავრობა", "დედაქალაქი"]
|
|
190
|
-
for word in words:
|
|
191
|
-
print(to_tex_pattern(word))
|
|
192
|
-
|
|
193
|
-
# Output:
|
|
194
|
-
# .სა1ქარ1თვე1ლო.
|
|
195
|
-
# .მთავ1რო1ბა.
|
|
196
|
-
# .დე1და1ქა1ლა1ქი.
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Use in LaTeX:
|
|
200
|
-
```latex
|
|
201
|
-
\documentclass{article}
|
|
202
|
-
\usepackage{polyglossia}
|
|
203
|
-
\setmainlanguage{georgian}
|
|
72
|
+
## 🧠 Algorithm Logic
|
|
204
73
|
|
|
205
|
-
|
|
206
|
-
\input{georgian-patterns.tex}
|
|
207
|
-
|
|
208
|
-
\begin{document}
|
|
209
|
-
საქართველო არის ძალიან ლამაზი ქვეყანა
|
|
210
|
-
\end{document}
|
|
211
|
-
```
|
|
74
|
+
The v2.2 algorithm continues to use **phonological distance analysis** combined with academic rules:
|
|
212
75
|
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
words = ["საქართველო", "მთავრობა"]
|
|
218
|
-
for word in words:
|
|
219
|
-
print(to_hunspell_format(word))
|
|
220
|
-
|
|
221
|
-
# Output:
|
|
222
|
-
# სა=ქარ=თვე=ლო
|
|
223
|
-
# მთავ=რო=ბა
|
|
224
|
-
```
|
|
76
|
+
1. **V-V (Hiatus)**: Split between vowels → `გა-ა-ნა`
|
|
77
|
+
2. **V-C-V**: Split before consonant → `მა-მა`
|
|
78
|
+
3. **Harmonic Clusters**: Special Georgian clusters (ბრ, წვ, მს) stay together.
|
|
79
|
+
4. **Anti-Orphan**: Minimum 2 characters on each side.
|
|
225
80
|
|
|
226
81
|
---
|
|
227
82
|
|
|
228
|
-
##
|
|
83
|
+
## 🎨 API Reference
|
|
229
84
|
|
|
230
|
-
###
|
|
231
|
-
[](https://addons.mozilla.org/firefox/addon/georgian-hyphenation/)
|
|
85
|
+
### `new GeorgianHyphenator(hyphenChar)`
|
|
232
86
|
|
|
233
|
-
**
|
|
87
|
+
* **hyphenChar** (string): Character for hyphenation. Default: `\u00AD` (soft-hyphen).
|
|
234
88
|
|
|
235
|
-
###
|
|
236
|
-
**Chrome Web Store** *(coming soon)*
|
|
89
|
+
### `.hyphenate(word)`
|
|
237
90
|
|
|
238
|
-
|
|
91
|
+
Hyphenates a single word. Strips existing hyphens first.
|
|
239
92
|
|
|
240
|
-
|
|
241
|
-
1. Download [latest release](https://github.com/guramzhgamadze/georgian-hyphenation/releases)
|
|
242
|
-
2. Extract `browser-extension-chrome.zip`
|
|
243
|
-
3. Chrome → `chrome://extensions/`
|
|
244
|
-
4. Enable "Developer mode"
|
|
245
|
-
5. Click "Load unpacked"
|
|
246
|
-
6. Select `browser-extension-chrome` folder
|
|
93
|
+
### `.hyphenateText(text)`
|
|
247
94
|
|
|
248
|
-
|
|
249
|
-
1. Download [latest release](https://github.com/guramzhgamadze/georgian-hyphenation/releases)
|
|
250
|
-
2. Firefox → `about:debugging#/runtime/this-firefox`
|
|
251
|
-
3. Click "Load Temporary Add-on"
|
|
252
|
-
4. Select `manifest.json` from `browser-extension-firefox` folder
|
|
95
|
+
Processes a full string, preserving punctuation and non-Georgian characters.
|
|
253
96
|
|
|
254
|
-
###
|
|
255
|
-
- ✅ Automatic hyphenation on all Georgian websites
|
|
256
|
-
- ✅ Works on Facebook, Twitter, Wikipedia, News sites
|
|
257
|
-
- ✅ Toggle on/off per site
|
|
258
|
-
- ✅ Real-time statistics
|
|
259
|
-
- ✅ Zero performance impact
|
|
260
|
-
- ✅ Supports dynamic content (React, Vue, Angular)
|
|
261
|
-
- ✅ Respects editable fields (no interference with typing)
|
|
262
|
-
|
|
263
|
-
---
|
|
97
|
+
### `.loadDefaultLibrary()`
|
|
264
98
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
**Interactive Demo:** https://guramzhgamadze.github.io/georgian-hyphenation/
|
|
268
|
-
|
|
269
|
-
Try it yourself:
|
|
270
|
-
- See before/after comparison with hard and soft hyphens
|
|
271
|
-
- Test with your own Georgian text
|
|
272
|
-
- Adjust browser width to see automatic line breaking
|
|
273
|
-
- View syllable breakdown
|
|
274
|
-
- Compare different output formats
|
|
99
|
+
(Async) Fetches or imports the `exceptions.json` data.
|
|
275
100
|
|
|
276
101
|
---
|
|
277
102
|
|
|
278
|
-
##
|
|
103
|
+
## 🧪 Testing
|
|
279
104
|
|
|
280
|
-
|
|
281
|
-
| --- | --- | --- | --- |
|
|
282
|
-
| საქართველო | სა, ქარ, თვე, ლო | სა-ქარ-თვე-ლო | .სა1ქარ1თვე1ლო |
|
|
283
|
-
| მთავრობა | მთავ, რო, ბა | მთავ-რო-ბა | .მთავ1რო1ბა |
|
|
284
|
-
| დედაქალაქი | დე, და, ქა, ლა, ქი | დე-და-ქა-ლა-ქი | .დე1და1ქა1ლა1ქი |
|
|
285
|
-
| ტელევიზორი | ტე, ლე, ვი, ზო, რი | ტე-ლე-ვი-ზო-რი | .ტე1ლე1ვი1ზო1რი |
|
|
286
|
-
| კომპიუტერი | კომ, პი, უ, ტე, რი | კომ-პი-უ-ტე-რი | .კომ1პი1უ1ტე1რი |
|
|
287
|
-
| უნივერსიტეტი | უ, ნი, ვერ, სი, ტე, ტი | უ-ნი-ვერ-სი-ტე-ტი | .უ1ნი1ვერ1სი1ტე1ტი |
|
|
288
|
-
| იარაღი | ი, ა, რა, ღი | ი-ა-რა-ღი | .ი1ა1რა1ღი |
|
|
289
|
-
| ბარბი | ბარ, ბი | ბარ-ბი | .ბარ1ბი |
|
|
290
|
-
|
|
291
|
-
---
|
|
105
|
+
We use a comprehensive test suite to ensure 98%+ accuracy.
|
|
292
106
|
|
|
293
|
-
## 🧪 Testing / ტესტირება
|
|
294
107
|
```bash
|
|
295
|
-
# Python tests
|
|
296
|
-
cd georgian-hyphenation
|
|
297
|
-
python -m pytest tests/
|
|
298
|
-
|
|
299
|
-
# JavaScript tests
|
|
300
108
|
npm test
|
|
301
109
|
|
|
302
|
-
# Run test script
|
|
303
|
-
python test_v2.py
|
|
304
110
|
```
|
|
305
111
|
|
|
306
|
-
**Test Coverage:**
|
|
307
|
-
- ✅ 10,000+ Georgian words validated
|
|
308
|
-
- ✅ Edge cases (V-V, consonant clusters, short words)
|
|
309
|
-
- ✅ Unicode handling
|
|
310
|
-
- ✅ Punctuation preservation
|
|
311
|
-
- ✅ Performance benchmarks
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
## 🤝 Contributing / წვლილის შეტანა
|
|
316
|
-
|
|
317
|
-
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
318
|
-
|
|
319
|
-
მოხარული ვიქნებით თქვენი წვლილით! გთხოვთ გამოგზავნოთ Pull Request.
|
|
320
|
-
|
|
321
|
-
1. Fork the repository
|
|
322
|
-
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
|
323
|
-
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
|
324
|
-
4. Push to the branch (`git push origin feature/AmazingFeature`)
|
|
325
|
-
5. Open a Pull Request
|
|
326
|
-
|
|
327
112
|
---
|
|
328
113
|
|
|
329
114
|
## 📝 Changelog
|
|
330
115
|
|
|
331
|
-
### Version 2.
|
|
116
|
+
### Version 2.2.1 (Current)
|
|
332
117
|
|
|
333
|
-
|
|
118
|
+
* Added `_stripHyphens` for input sanitization.
|
|
119
|
+
* Converted `harmonicClusters` to `Set` for high-performance processing.
|
|
120
|
+
* Switched to **ES Modules (ESM)** as default.
|
|
121
|
+
* Added `loadDefaultLibrary` for browser/node dictionary fetching.
|
|
334
122
|
|
|
335
|
-
|
|
336
|
-
- ✅ **Anti-Orphan protection** - Minimum 2 characters on each side
|
|
337
|
-
- ✅ **'R' Rule implementation** - Special handling for 'რ' consonant clusters
|
|
338
|
-
- ✅ **Hiatus detection** - Proper V-V split handling
|
|
339
|
-
- ✅ **Improved accuracy** - 95% → 98%+ on test corpus
|
|
340
|
-
- ✅ **Cleaner codebase** - 60 lines vs 100+ lines (v1.0)
|
|
341
|
-
- ✅ **Better edge cases** - Handles unusual Georgian words
|
|
342
|
-
- ✅ **Modern packaging** - `pyproject.toml` support
|
|
123
|
+
### Version 2.0.1
|
|
343
124
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
- Minimum word length: 4 characters (was 3)
|
|
347
|
-
|
|
348
|
-
### Version 1.0.1 (2025-01-XX)
|
|
349
|
-
- Bug fixes
|
|
350
|
-
- Browser extension improvements
|
|
351
|
-
- Facebook chat cursor fix
|
|
352
|
-
|
|
353
|
-
### Version 1.0.0 (2025-01-XX)
|
|
354
|
-
- Initial release
|
|
355
|
-
- 12-rule regex-based system
|
|
356
|
-
- PyPI and NPM packages
|
|
357
|
-
- Browser extensions (Chrome, Firefox)
|
|
358
|
-
|
|
359
|
-
---
|
|
360
|
-
|
|
361
|
-
## 🗺️ Roadmap / სამომავლო გეგმები
|
|
362
|
-
|
|
363
|
-
### Short-term (2025 Q1-Q2)
|
|
364
|
-
- ✅ v2.0 Academic Logic - **DONE**
|
|
365
|
-
- ✅ PyPI v2.0.0 release - **DONE**
|
|
366
|
-
- 🔄 Chrome Web Store submission
|
|
367
|
-
- 📝 TeX/LaTeX integration guide
|
|
368
|
-
- 📱 Mobile app (React Native)
|
|
369
|
-
|
|
370
|
-
### Mid-term (2025 Q3-Q4)
|
|
371
|
-
- 📄 Submit to TeX Live hyphenation database
|
|
372
|
-
- 📚 Academic paper publication
|
|
373
|
-
- 🔌 WordPress plugin with Elementor support
|
|
374
|
-
- 🎨 Adobe InDesign plugin
|
|
375
|
-
- 📊 Microsoft Word add-in
|
|
376
|
-
|
|
377
|
-
### Long-term (2026+)
|
|
378
|
-
- 🌍 Unicode CLDR proposal
|
|
379
|
-
- 🏛️ Official endorsement (Georgian Language Institute)
|
|
380
|
-
- 🤖 Integration into major OS (Windows, macOS, iOS, Android)
|
|
381
|
-
- 🌐 Browser native support proposal
|
|
125
|
+
* Academic logic rewrite.
|
|
126
|
+
* Phonological distance analysis.
|
|
382
127
|
|
|
383
128
|
---
|
|
384
129
|
|
|
385
|
-
## 📄 License
|
|
130
|
+
## 📄 License
|
|
386
131
|
|
|
387
|
-
|
|
132
|
+
MIT License - see [LICENSE.txt](https://www.google.com/search?q=LICENSE.txt) for details.
|
|
388
133
|
|
|
389
134
|
---
|
|
390
135
|
|
|
391
|
-
## 📧 Contact
|
|
136
|
+
## 📧 Contact
|
|
392
137
|
|
|
393
|
-
**Guram Zhgamadze**
|
|
138
|
+
**Guram Zhgamadze** - guramzhgamadze@gmail.com
|
|
394
139
|
|
|
395
|
-
|
|
396
|
-
- Email: guramzhgamadze@gmail.com
|
|
397
|
-
- Issues: [Report bugs or request features](https://github.com/guramzhgamadze/georgian-hyphenation/issues)
|
|
398
|
-
|
|
399
|
-
---
|
|
400
|
-
|
|
401
|
-
## 🙏 Acknowledgments / მადლობა
|
|
402
|
-
|
|
403
|
-
- Based on Georgian phonological research
|
|
404
|
-
- Inspired by TeX hyphenation algorithms (Liang, 1983)
|
|
405
|
-
- Thanks to the Georgian linguistic community
|
|
406
|
-
- Special thanks to early testers and contributors
|
|
140
|
+
```
|
|
407
141
|
|
|
408
142
|
---
|
|
409
143
|
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
- Unicode Standard for Georgian Script (U+10A0–U+10FF)
|
|
416
|
-
- CLDR Language Data
|
|
417
|
-
|
|
418
|
-
---
|
|
144
|
+
### 💡 რა შევცვალე და რატომ:
|
|
145
|
+
1. **ESM სინტაქსი**: კოდის მაგალითებში `require` შევცვალე `import`-ით, რადგან ჩვენი `package.json` ახლა `"type": "module"`-ია.
|
|
146
|
+
2. **Sanitization**: დავამატე სექცია, რომელიც ხსნის, რომ ბიბლიოთეკა ახლა თავად ასუფთავებს "ნაგავ" სიმბოლოებს.
|
|
147
|
+
3. **Async Logic**: დავამატე `await hyphenator.loadDefaultLibrary()`, რადგან ეს v2.2.1-ის ერთ-ერთი მთავარი სიახლეა.
|
|
148
|
+
4. **Badge-ები**: განვაახლე JavaScript badge, რათა მივუთითოთ ESM-ის მხარდაჭერა.
|
|
419
149
|
|
|
420
|
-
|
|
150
|
+
ეს `README.md` პროექტს ბევრად უფრო პროფესიონალურ იერს აძლევს და მომხმარებელს უადვილებს ახალი ფუნქციების ათვისებას.
|
|
421
151
|
|
|
422
|
-
|
|
152
|
+
**გსურთ, რომ სხვა ფაილშიც (მაგალითად `README-NPM.md`) შევიტანოთ ცვლილებები?**
|
|
423
153
|
|
|
424
|
-
|
|
154
|
+
```
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
{
|
|
2
|
+
"კომპიუტერი": "კომ-პიუ-ტე-რი",
|
|
3
|
+
"ფეისბუქი": "ფეის-ბუ-ქი",
|
|
4
|
+
"იუთუბი": "იუ-თუ-ბი",
|
|
5
|
+
"ინსტაგრამი": "ინს-ტაგ-რა-მი",
|
|
6
|
+
"სქრინშოთი": "სქრინ-შო-თი",
|
|
7
|
+
"გუგლი": "გუგ-ლი",
|
|
8
|
+
"ტვიტერი": "ტვი-ტე-რი",
|
|
9
|
+
"მესენჯერი": "მე-სენ-ჯე-რი",
|
|
10
|
+
"ვოთსაპი": "ვოთ-სა-პი",
|
|
11
|
+
"ტიკტოკი": "ტიკ-ტო-კი",
|
|
12
|
+
"ლინკდინი": "ლინკ-დი-ნი",
|
|
13
|
+
"ბრაუზერი": "ბრაუ-ზე-რი",
|
|
14
|
+
"ინტერნეტი": "ინ-ტერ-ნე-ტი",
|
|
15
|
+
"ვებგვერდი": "ვებ-გვერ-დი",
|
|
16
|
+
"პლატფორმა": "პლატ-ფორ-მა",
|
|
17
|
+
"სმარტფონი": "სმარტ-ფო-ნი",
|
|
18
|
+
"ლეპტოპი": "ლეპ-ტო-პი",
|
|
19
|
+
"პლანშეტი": "პლან-შე-ტი",
|
|
20
|
+
"ინფლუენსერი": "ინ-ფლუ-ენ-სე-რი",
|
|
21
|
+
"ბლოგერი": "ბლო-გე-რი",
|
|
22
|
+
"ჩელენჯი": "ჩე-ლენ-ჯი",
|
|
23
|
+
"ქოფირაითინგი": "ქო-ფი-რაი-თინ-გი",
|
|
24
|
+
"მარკეტინგი": "მარ-კე-ტინ-გი",
|
|
25
|
+
"მენეჯმენტი": "მე-ნეჯ-მენ-ტი",
|
|
26
|
+
"სტარტაპი": "სტარ-ტა-პი",
|
|
27
|
+
"დეველოპერი": "დე-ვე-ლო-პე-რი",
|
|
28
|
+
"ფრონტენდი": "ფრონ-ტენ-დი",
|
|
29
|
+
"ბექენდი": "ბე-ქენ-დი",
|
|
30
|
+
"ინტერფეისი": "ინ-ტერ-ფეი-სი",
|
|
31
|
+
"სერვერი": "სერ-ვე-რი",
|
|
32
|
+
"სოფტვერი": "სოფტ-ვე-რი",
|
|
33
|
+
"ჰარდვერი": "ჰარდ-ვე-რი",
|
|
34
|
+
"აფდეითი": "აფ-დეი-თი",
|
|
35
|
+
"დაუნლოდი": "დაუნ-ლო-დი",
|
|
36
|
+
"ონლაინი": "ონ-ლაი-ნი",
|
|
37
|
+
"ოფლაინი": "ოფ-ლაი-ნი",
|
|
38
|
+
"სტრიმინგი": "სტრი-მინ-გი",
|
|
39
|
+
"პოდკასტი": "პოდ-კას-ტი",
|
|
40
|
+
"ფლეილისტი": "ფლეი-ლის-ტი",
|
|
41
|
+
"საბსქრაიბერი": "საბ-სქრაი-ბე-რი",
|
|
42
|
+
"ფოლოვერი": "ფო-ლო-ვე-რი",
|
|
43
|
+
"ლაიქი": "ლაი-ქი",
|
|
44
|
+
"კომენტარი": "კო-მენ-ტა-რი",
|
|
45
|
+
"შარები": "შე-რე-ბი",
|
|
46
|
+
"პოსტი": "პოს-ტი",
|
|
47
|
+
"სთორი": "სთო-რი",
|
|
48
|
+
"რილსი": "რილ-სი",
|
|
49
|
+
"აღმოსავლეთი": "აღ-მო-სავ-ლე-თი",
|
|
50
|
+
"დასავლეთი": "და-სავ-ლე-თი",
|
|
51
|
+
"ჩრდილოეთი": "ჩრდი-ლო-ე-თი",
|
|
52
|
+
"სამხრეთი": "სამ-ხრე-თი",
|
|
53
|
+
"გვარსახელი": "გვარ-სა-ხე-ლი",
|
|
54
|
+
"თავმჯდომარე": "თავ-მჯდო-მა-რე",
|
|
55
|
+
"ხელფასი": "ხელ-ფა-სი",
|
|
56
|
+
"ხელმძღვანელი": "ხელ-მძღვა-ნე-ლი",
|
|
57
|
+
"უზრუნველყოფა": "უზ-რუნ-ველ-ყო-ფა",
|
|
58
|
+
"კეთილდღეობა": "კე-თილ-დღე-ო-ბა",
|
|
59
|
+
"გულკეთილი": "გულ-კე-თი-ლი",
|
|
60
|
+
"თავდადებული": "თავ-და-დე-ბუ-ლი",
|
|
61
|
+
"ცისარტყელა": "ცის-არ-ტყე-ლა",
|
|
62
|
+
"წყალდიდობა": "წყალ-დი-დო-ბა",
|
|
63
|
+
"მიწისძვრა": "მი-წის-ძვრა",
|
|
64
|
+
"გულმავიწყი": "გულ-მა-ვი-წყი",
|
|
65
|
+
"სახელმწიფო": "სა-ხელ-მწი-ფო",
|
|
66
|
+
"საზოგადოება": "სა-ზო-გა-დო-ე-ბა",
|
|
67
|
+
"მსოფლიო": "მსოფ-ლი-ო",
|
|
68
|
+
"საქართველო": "სა-ქარ-თვე-ლო",
|
|
69
|
+
"თბილისი": "თბი-ლი-სი",
|
|
70
|
+
"პასუხისმგებლობა": "პა-სუ-ხის-მგებ-ლო-ბა",
|
|
71
|
+
"დამოუკიდებლობა": "და-მო-უ-კი-დებ-ლო-ბა",
|
|
72
|
+
"თავისუფლება": "თა-ვი-სუფ-ლე-ბა",
|
|
73
|
+
"ღირსშესანიშნაობა": "ღირს-შე-სა-ნიშ-ნა-ო-ბა",
|
|
74
|
+
"წარმომადგენელი": "წარ-მო-მად-გე-ნე-ლი",
|
|
75
|
+
"გამომცემლობა": "გა-მომ-ცემ-ლო-ბა",
|
|
76
|
+
"შემოქმედება": "შე-მოქ-მე-დე-ბა",
|
|
77
|
+
"მასწავლებელი": "მას-წავ-ლე-ბე-ლი",
|
|
78
|
+
"მოსწავლე": "მოს-წავ-ლე",
|
|
79
|
+
"უნივერსიტეტი": "უ-ნი-ვერ-სი-ტე-ტი",
|
|
80
|
+
"ფაკულტეტი": "ფა-კულ-ტე-ტი",
|
|
81
|
+
"აუდიტორია": "ა-უ-დი-ტო-რი-ა",
|
|
82
|
+
"ლაბორატორია": "ლა-ბო-რა-ტო-რი-ა",
|
|
83
|
+
"ექსპედიცია": "ექს-პე-დი-ცი-ა",
|
|
84
|
+
"კონსტიტუცია": "კონ-სტი-ტუ-ცი-ა",
|
|
85
|
+
"რევოლუცია": "რე-ვო-ლუ-ცი-ა",
|
|
86
|
+
"დემოკრატია": "დე-მო-კრა-ტი-ა",
|
|
87
|
+
"რესპუბლიკა": "რეს-პუბ-ლი-კა",
|
|
88
|
+
"პრეზიდენტი": "პრე-ზი-დენ-ტი",
|
|
89
|
+
"პრემიერი": "პრე-მი-ე-რი",
|
|
90
|
+
"მინისტრი": "მი-ნის-ტრი",
|
|
91
|
+
"პარლამენტი": "პარ-ლა-მენ-ტი",
|
|
92
|
+
"დეპუტატი": "დე-პუ-ტა-ტი",
|
|
93
|
+
"არჩევნები": "არ-ჩევ-ნე-ბი",
|
|
94
|
+
"პოლიტიკა": "პო-ლი-ტი-კა",
|
|
95
|
+
"ეკონომიკა": "ე-კო-ნო-მი-კა",
|
|
96
|
+
"ბიზნესი": "ბიზ-ნე-სი",
|
|
97
|
+
"ფინანსები": "ფი-ნან-სე-ბი",
|
|
98
|
+
"ინვესტიცია": "ინ-ვეს-ტი-ცი-ა",
|
|
99
|
+
"კრედიტი": "კრე-დი-ტი",
|
|
100
|
+
"ვალუტა": "ვა-ლუ-ტა",
|
|
101
|
+
"პროცენტი": "პრო-ცენ-ტი",
|
|
102
|
+
"სტატისტიკა": "სტა-ტის-ტი-კა",
|
|
103
|
+
"ანალიტიკა": "ა-ნა-ლი-ტი-კა",
|
|
104
|
+
"სტრატეგია": "სტრა-ტე-გი-ა",
|
|
105
|
+
"ტექნოლოგია": "ტექ-ნო-ლო-გი-ა",
|
|
106
|
+
"ინოვაცია": "ი-ნო-ვა-ცი-ა",
|
|
107
|
+
"ციფრული": "ციფ-რუ-ლი",
|
|
108
|
+
"ვირტუალური": "ვირ-ტუ-ა-ლუ-რი",
|
|
109
|
+
"ელექტრონული": "ე-ლექ-ტრო-ნუ-ლი",
|
|
110
|
+
"ავტომატური": "ავ-ტო-მა-ტუ-რი",
|
|
111
|
+
"მექანიკური": "მე-ქა-ნი-კუ-რი",
|
|
112
|
+
"ფიზიკური": "ფი-ზი-კუ-რი",
|
|
113
|
+
"ქიმიური": "ქი-მი-უ-რი",
|
|
114
|
+
"ბიოლოგიური": "ბი-ო-ლო-გი-უ-რი",
|
|
115
|
+
"გეოგრაფიული": "გე-ოგ-რა-ფი-უ-ლი",
|
|
116
|
+
"ისტორიული": "ის-ტო-რი-უ-ლი",
|
|
117
|
+
"კულტურული": "კულ-ტუ-რუ-ლი",
|
|
118
|
+
"სოციალური": "სო-ცი-ა-ლუ-რი",
|
|
119
|
+
"ფსიქოლოგიური": "ფსი-ქო-ლო-გი-უ-რი",
|
|
120
|
+
"ფილოსოფიური": "ფი-ლო-სო-ფი-უ-რი",
|
|
121
|
+
"რელიგიური": "რე-ლი-გი-უ-რი",
|
|
122
|
+
"ტრადიციული": "ტრა-დი-ცი-უ-ლი",
|
|
123
|
+
"თანამედროვე": "თა-ნა-მედ-რო-ვე",
|
|
124
|
+
"საერთაშორისო": "სა-ერ-თა-შო-რი-სო",
|
|
125
|
+
"ნაციონალური": "ნა-ცი-ო-ნა-ლუ-რი",
|
|
126
|
+
"რეგიონალური": "რე-გი-ო-ნა-ლუ-რი",
|
|
127
|
+
"მუნიციპალური": "მუ-ნი-ცი-პა-ლუ-რი",
|
|
128
|
+
"ადმინისტრაციული": "ად-მი-ნის-ტრა-ცი-უ-ლი",
|
|
129
|
+
"იურიდიული": "ი-უ-რი-დი-უ-ლი",
|
|
130
|
+
"სამართლებრივი": "სა-მარ-თლებ-რი-ვი",
|
|
131
|
+
"კრიმინალური": "კრი-მი-ნა-ლუ-რი",
|
|
132
|
+
"სამედიცინო": "სა-მე-დი-ცი-ნო",
|
|
133
|
+
"ფარმაცევტული": "ფარ-მა-ცევ-ტუ-ლი",
|
|
134
|
+
"ქირურგიული": "ქი-რურ-გი-უ-ლი",
|
|
135
|
+
"დიაგნოსტიკა": "დი-აგ-ნოს-ტი-კა",
|
|
136
|
+
"პროფილაქტიკა": "პრო-ფი-ლაქ-ტი-კა",
|
|
137
|
+
"რეაბილიტაცია": "რე-ა-ბი-ლი-ტა-ცი-ა",
|
|
138
|
+
"კომუნიკაცია": "კო-მუ-ნი-კა-ცი-ა",
|
|
139
|
+
"ტრანსპორტი": "ტრანს-პორ-ტი",
|
|
140
|
+
"ინფრასტრუქტურა": "ინ-ფრას-ტრუქ-ტუ-რა",
|
|
141
|
+
"არქიტექტურა": "არ-ქი-ტექ-ტუ-რა",
|
|
142
|
+
"მშენებლობა": "მშე-ნებ-ლო-ბა",
|
|
143
|
+
"რეკონსტრუქცია": "რე-კონ-სტრუქ-ცი-ა"
|
|
144
|
+
}
|