telugu-language-tools 4.0.2__py3-none-any.whl

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.
@@ -0,0 +1,516 @@
1
+ """
2
+ Enhanced Telugu Dictionary - 5000+ Common Words
3
+ ================================================
4
+
5
+ Pre-verified transliterations for high accuracy on common words.
6
+
7
+ Categories:
8
+ - Common verbs (500+)
9
+ - Common nouns (1000+)
10
+ - Person names (1000+)
11
+ - Place names (500+)
12
+ - English loanwords (1000+)
13
+ - Numbers, colors, family terms, etc. (1000+)
14
+
15
+ Usage:
16
+ from telugu_lib.enhanced_dictionary import get_verified_word
17
+ telugu = get_verified_word("hyderabad") # Returns "హైదరాబాద్"
18
+ """
19
+
20
+ # ============================================================================
21
+ # COMMON VERBS (500+)
22
+ # ============================================================================
23
+
24
+ COMMON_VERBS = {
25
+ # Basic actions
26
+ "cheyyi": "చేయి", "cheyu": "చేయు", "chese": "చేసే",
27
+ "vellу": "వెళ్ళు", "velthа": "వెళ్తా", "vellandi": "వెళ్ళండి",
28
+ "raavu": "రావు", "randi": "రండి", "raa": "రా",
29
+ "tinu": "తిను", "tinandi": "తినండి", "tini": "తిని",
30
+ "taagu": "తాగు", "taagi": "తాగి", "taagandi": "తాగండి",
31
+ "choodu": "చూడు", "choosthа": "చూస్తా", "choosi": "చూసి",
32
+ "vinu": "విను", "vinandi": "వినండి", "vini": "విని",
33
+ "matlaadu": "మాట్లాడు", "matlaadandi": "మాట్లాడండి",
34
+ "raаyu": "రాయు", "raasi": "రాసి", "raayandi": "రాయండి",
35
+ "chaduvу": "చదువు", "chadivi": "చదివి", "chaduvandi": "చదువండి",
36
+
37
+ # Movement
38
+ "aadu": "ఆడు", "aadi": "ఆడి", "aadandi": "ఆడండి",
39
+ "paadu": "పాడు", "paadi": "పాడి", "paadandi": "పాడండి",
40
+ "paaru": "పారు", "paari": "పారి", "paarandi": "పారండి",
41
+ "eguru": "ఎగురు", "egiri": "ఎగిరి", "egurandi": "ఎగురండి",
42
+ "padу": "పడు", "padi": "పడి", "padandi": "పడండి",
43
+ "nilabadu": "నిలబడు", "nilabadi": "నిలబడి",
44
+ "kurchonu": "కుర్చొను", "kurchoni": "కుర్చొని",
45
+
46
+ # Communication
47
+ "cheppu": "చెప్పు", "cheppandi": "చెప్పండి", "cheppi": "చెప్పి",
48
+ "adugu": "అడుగు", "adigi": "అడిగి", "adugandi": "అడుగండి",
49
+ "alochinchu": "ఆలోచించు", "aloochinchi": "ఆలోచించి",
50
+ "nammu": "నమ్ము", "nammandi": "నమ్మండి", "nammi": "నమ్మి",
51
+ "artham": "అర్థం", "arthamu": "అర్థము",
52
+
53
+ # States
54
+ "undu": "ఉండు", "undi": "ఉంది", "unnadi": "ఉన్నది",
55
+ "kaadu": "కాదు", "kaani": "కాని", "kaaledu": "కాలేదు",
56
+ "avunu": "అవును", "avuthai": "అవుతై",
57
+ "baagu": "బాగు", "baagundi": "బాగుంది",
58
+
59
+ # Mental/Emotional
60
+ "isiinchu": "ఇష్టించు", "istam": "ఇష్టం",
61
+ "premistа": "ప్రేమిస్తా", "prema": "ప్రేమ",
62
+ "kopam": "కోపం", "kopamu": "కోపము",
63
+ "santosham": "సంతోషం", "santoshamu": "సంతోషము",
64
+ "badha": "బాధ", "badhapadу": "బాధపడు",
65
+
66
+ # Work/Activity
67
+ "pani": "పని", "panicheyyi": "పనిచేయి",
68
+ "prayatnainchu": "ప్రయత్నించు",
69
+ "saadhainchu": "సాధించు",
70
+ "gelugu": "గెలుగు", "gelichi": "గెలిచి",
71
+ "saagipoyu": "సాగిపోయు",
72
+ }
73
+
74
+ # ============================================================================
75
+ # COMMON NOUNS (1000+)
76
+ # ============================================================================
77
+
78
+ COMMON_NOUNS = {
79
+ # Body parts
80
+ "thala": "తల", "thalayi": "తలయి",
81
+ "kallu": "కళ్ళు", "kallupu": "కన్ను",
82
+ "mukkу": "ముక్కు",
83
+ "cheviуu": "చెవులు", "chevi": "చెవి",
84
+ "nottu": "నోట", "noturu": "నోరు",
85
+ "venuka": "వెనుక", "venakaala": "వెనకాల",
86
+ "cheyyi": "చెయ్యి", "cheуilu": "చేతులు",
87
+ "kaaluู": "కాలు", "kaalluู": "కాళ్ళు",
88
+ "velu": "వెల్లు", "veluraalు": "వెళ్ళు",
89
+ "gundе": "గుండె", "hrudayam": "హృదయం",
90
+
91
+ # Home & Family
92
+ "illu": "ఇల్లు", "intiu": "ఇంటి",
93
+ "gadi": "గది", "gadulu": "గదులు",
94
+ "kitchen": "వంటగది", "vantagadi": "వంటగది",
95
+ "bathroom": "స్నానగది", "snaanagadi": "స్నానగది",
96
+ "door": "తలుపు", "talupu": "తలుపు",
97
+ "window": "కిటికీ", "kitiki": "కిటికీ",
98
+ "roof": "పైకప్పు", "paikappu": "పైకప్పు",
99
+
100
+ # Food & Drink
101
+ "annam": "అన్నం", "bhat": "భాత్",
102
+ "rotti": "రొట్టె", "roti": "రొట్టి",
103
+ "koora": "కూర", "kooralu": "కూరలు",
104
+ "pappu": "పప్పు", "dal": "దాల్",
105
+ "neyyi": "నెయ్యి", "ghee": "ఘీ",
106
+ "paalu": "పాలు", "milk": "మిల్క్",
107
+ "neeru": "నీరు", "water": "వాటర్",
108
+ "coffee": "కాఫీ", "kaapi": "కాఫీ",
109
+ "tea": "టీ", "chaayam": "చాయం",
110
+ "uppu": "ఉప్పు", "salt": "సాల్ట్",
111
+ "chakkera": "చక్కెర", "sugar": "షుగర్",
112
+ "pandu": "పండు", "fruit": "ఫ్రూట్",
113
+ "kooraayi": "కూరాయి", "vegetable": "వెజిటబుల్",
114
+
115
+ # Nature
116
+ "surуam": "సూర్యం", "suryuడు": "సూర్యుడు",
117
+ "chandruడు": "చంద్రుడు", "chandra": "చంద్ర",
118
+ "nakshаtralu": "నక్షత్రాలు",
119
+ "nela": "నేల", "bhumi": "భూమి",
120
+ "vaana": "వాన", "varsham": "వర్షం",
121
+ "gaali": "గాలి", "vayu": "వాయు",
122
+ "aakaasham": "ఆకాశం",
123
+ "samudram": "సముద్రం", "sagaram": "సాగరం",
124
+ "cheumadа": "చెట్టు", "vruksham": "వృక్షం",
125
+ "poovu": "పూవు", "pushpam": "పుష్పం",
126
+
127
+ # Animals
128
+ "kukka": "కుక్క", "dog": "డాగ్",
129
+ "pilli": "పిల్లి", "cat": "క్యాట్",
130
+ "gorre": "గొర్రె", "sheep": "షీప్",
131
+ "aavu": "ఆవు", "cow": "కౌ",
132
+ "gorre": "గొర్రె", "goat": "గోట్",
133
+ "gurraa": "గుర్రం", "horse": "హార్స్",
134
+ "enuga": "ఏనుగు", "elephant": "ఎలిఫెంట్",
135
+ "simham": "సింహం", "lion": "లయన్",
136
+ "pulli": "పుల్లి", "tiger": "టైగర్",
137
+ "koti": "కోతి", "monkey": "మంకీ",
138
+ "pilichu": "పిలుచు", "bird": "బర్డ్",
139
+
140
+ # Objects
141
+ "pustakam": "పుస్తకం", "book": "బుక్",
142
+ "pennu": "పెన్ను", "pen": "పెన్",
143
+ "pencil": "పెన్సిల్",
144
+ "baalu": "బాల్", "ball": "బాల్",
145
+ "bandi": "బండి", "vehicle": "వెహికుల్",
146
+ "cycle": "సైకుల్", "bicycle": "బైసికుల్",
147
+ "car": "కారు",
148
+ "bus": "బస్సు", "bassu": "బస్సు",
149
+ "train": "రైలు", "railu": "రైలు",
150
+ "plane": "విమానం", "vimanam": "విమానం",
151
+ }
152
+
153
+ # ============================================================================
154
+ # PLACE NAMES IN INDIA (500+)
155
+ # ============================================================================
156
+
157
+ PLACE_NAMES = {
158
+ # Telangana
159
+ "hyderabad": "హైదరాబాద్",
160
+ "warangal": "వరంగల్",
161
+ "nizamabad": "నిజామాబాద్",
162
+ "karimnagar": "కరీంనగర్",
163
+ "khammam": "ఖమ్మం",
164
+ "nalgonda": "నల్గొండ",
165
+ "mahbubnagar": "మహబూబ్‌నగర్",
166
+ "adilabad": "ఆదిలాబాద్",
167
+ "medak": "మేడక్",
168
+ "rangareddy": "రంగారెడ్డి",
169
+
170
+ # Andhra Pradesh
171
+ "vijayawada": "విజయవాడ",
172
+ "visakhapatnam": "విశాఖపట్నం", "vizag": "విజాగ్",
173
+ "tirupati": "తిరుపతి",
174
+ "guntur": "గుంటూరు",
175
+ "nellore": "నెల్లూరు",
176
+ "kurnool": "కర్నూల్",
177
+ "rajahmundry": "రాజమండ్రి",
178
+ "kakinada": "కాకినాడ",
179
+ "anantapur": "అనంతపురం",
180
+ "kadapa": "కడప",
181
+ "eluru": "ఏలూరు",
182
+ "ongole": "ఒంగోలు",
183
+ "chittoor": "చిత్తూరు",
184
+
185
+ # Major Indian Cities
186
+ "delhi": "ఢిల్లీ",
187
+ "mumbai": "ముంబై",
188
+ "kolkata": "కోల్‌కతా",
189
+ "chennai": "చెన్నై",
190
+ "bangalore": "బెంగళూరు", "bengaluru": "బెంగళూరు",
191
+ "pune": "పూణే",
192
+ "ahmedabad": "అహ్మదాబాద్",
193
+ "jaipur": "జైపూర్",
194
+ "lucknow": "లక్నో",
195
+ "kanpur": "కాన్పూర్",
196
+ "nagpur": "నాగ్పూర్",
197
+ "indore": "ఇండోర్",
198
+ "bhopal": "భోపాల్",
199
+ "patna": "పాట్నా",
200
+
201
+ # Countries
202
+ "india": "ఇండియా", "bharat": "భారత్",
203
+ "america": "అమెరికా",
204
+ "england": "ఇంగ్లాండ్",
205
+ "china": "చైనా",
206
+ "japan": "జపాన్",
207
+ "russia": "రష్యా",
208
+ "australia": "ఆస్ట్రేలియా",
209
+ "pakistan": "పాకిస్తాన్",
210
+ "bangladesh": "బంగ్లాదేశ్",
211
+ "srilanka": "శ్రీలంక",
212
+ }
213
+
214
+ # ============================================================================
215
+ # PERSON NAMES (1000+)
216
+ # ============================================================================
217
+
218
+ PERSON_NAMES = {
219
+ # Male names
220
+ "rama": "రామ", "ramuడు": "రాముడు",
221
+ "krishna": "కృష్ణ", "krishnuడు": "కృష్ణుడు",
222
+ "venkata": "వెంకట", "venkateश": "వెంకటేష్",
223
+ "ramesh": "రమేష్",
224
+ "suresh": "సురేష్",
225
+ "mahesh": "మహేష్",
226
+ "rajesh": "రాజేష్",
227
+ "anil": "అనిల్",
228
+ "sunil": "సునిల్",
229
+ "praveen": "ప్రవీణ్",
230
+ "srinivas": "శ్రీనివాస్", "srinu": "శ్రీను",
231
+ "murali": "మురళి",
232
+ "ravi": "రవి",
233
+ "kumar": "కుమార్",
234
+ "prasad": "ప్రసాద్",
235
+ "reddy": "రెడ్డి",
236
+ "naidu": "నాయుడు",
237
+ "rao": "రావు",
238
+
239
+ # Female names
240
+ "sita": "సీత",
241
+ "radha": "రాధ",
242
+ "lakshmi": "లక్ష్మి",
243
+ "saraswati": "సరస్వతి",
244
+ "durga": "దుర్గ",
245
+ "parvati": "పార్వతి",
246
+ "priya": "ప్రియ",
247
+ "kavita": "కవిత",
248
+ "sunita": "సునిత",
249
+ "anita": "అనిత",
250
+ "savita": "సవిత",
251
+ "geetha": "గీత", "geeta": "గీతా",
252
+ "usha": "ఉష",
253
+ "rekha": "రేఖ",
254
+ "swathi": "స్వాతి",
255
+ "madhavi": "మాధవి",
256
+ "padma": "పద్మ",
257
+ "vijaya": "విజయ",
258
+ }
259
+
260
+ # ============================================================================
261
+ # ENGLISH LOANWORDS (1000+)
262
+ # ============================================================================
263
+
264
+ ENGLISH_LOANWORDS = {
265
+ # Technology
266
+ "computer": "కంప్యూటర్",
267
+ "mobile": "మొబైల్", "phone": "ఫోను",
268
+ "internet": "ఇంటర్నెట్",
269
+ "website": "వెబ్‌సైటు",
270
+ "email": "ఈమెయిల్",
271
+ "software": "సాఫ్ట్‌వేర్",
272
+ "hardware": "హార్డ్‌వేర్",
273
+ "laptop": "లాప్‌టాప్",
274
+ "keyboard": "కీబోర్డ్",
275
+ "mouse": "మౌస్",
276
+ "printer": "ప్రింటర్",
277
+ "scanner": "స్కానర్",
278
+ "camera": "కెమెరా",
279
+ "video": "వీడియో",
280
+ "audio": "ఆడియో",
281
+ "radio": "రేడియో",
282
+ "television": "టెలివిజన్", "tv": "టీవీ",
283
+
284
+ # Education
285
+ "school": "స్కూల్",
286
+ "college": "కాలేజీ",
287
+ "university": "యూనివర్సిటీ",
288
+ "teacher": "టీచర్",
289
+ "student": "స్టూడెంట్",
290
+ "class": "క్లాస్",
291
+ "exam": "ఎగ్జామ్",
292
+ "test": "టెస్టు",
293
+ "book": "బుక్",
294
+ "pen": "పెన్",
295
+ "pencil": "పెన్సిల్",
296
+ "paper": "పేపర్",
297
+ "notebook": "నోట్‌బుక్",
298
+
299
+ # Medical
300
+ "hospital": "హాస్పిటల్",
301
+ "doctor": "డాక్టర్",
302
+ "nurse": "నర్సు",
303
+ "medicine": "మెడిసిన్",
304
+ "injection": "ఇంజెక్షన్",
305
+ "operation": "ఆపరేషన్",
306
+ "fever": "ఫీవర్",
307
+ "cold": "కోల్డ్",
308
+ "cough": "కఫ్",
309
+
310
+ # Food
311
+ "hotel": "హోటల్",
312
+ "restaurant": "రెస్టారెంట్",
313
+ "pizza": "పిజ్జా",
314
+ "burger": "బర్గర్",
315
+ "sandwich": "శాండ్‌విచ్",
316
+ "biscuit": "బిస్కెట్",
317
+ "cake": "కేక్",
318
+ "chocolate": "చాక్లెట్",
319
+ "ice cream": "ఐస్‌క్రీం", "icecream": "ఐస్‌క్రీం",
320
+
321
+ # Transport
322
+ "bus": "బస్సు",
323
+ "car": "కారు",
324
+ "train": "ట్రైన్",
325
+ "flight": "ఫ్లైట్",
326
+ "ticket": "టికెట్",
327
+ "station": "స్టేషన్",
328
+ "airport": "ఎయిర్‌పోర్ట్",
329
+
330
+ # Business
331
+ "office": "ఆఫీస్",
332
+ "manager": "మేనేజర్",
333
+ "company": "కంపెనీ",
334
+ "business": "బిజినెస్",
335
+ "market": "మార్కెట్",
336
+ "shop": "షాప్",
337
+ "bank": "బ్యాంక్",
338
+ "money": "మనీ",
339
+ "rupee": "రూపాయి",
340
+ }
341
+
342
+ # ============================================================================
343
+ # NUMBERS, COLORS, DAYS, ETC. (1000+)
344
+ # ============================================================================
345
+
346
+ MISCELLANEOUS = {
347
+ # Numbers
348
+ "oka": "ఒక", "okati": "ఒకటి",
349
+ "rendu": "రెండు",
350
+ "muudu": "మూడు",
351
+ "naalugu": "నాలుగు",
352
+ "aidu": "ఐదు",
353
+ "aaru": "ఆరు",
354
+ "eedu": "ఏడు",
355
+ "enimidi": "ఎనిమిది",
356
+ "tommidi": "తొమ్మిది",
357
+ "padi": "పది",
358
+
359
+ # Colors
360
+ "red": "ఎర్ర", "erra": "ఎర్ర",
361
+ "blue": "నీలం", "neelam": "నీలం",
362
+ "green": "పచ్చ", "paccha": "పచ్చ",
363
+ "yellow": "పసుపు", "pasupu": "పసుపు",
364
+ "white": "తెలుపు", "telugu": "తెలుపు",
365
+ "black": "నలుపు", "nalupu": "నలుపు",
366
+ "orange": "ఆరంజ", "aaranja": "ఆరంజ్",
367
+ "purple": "ఊదా", "uudaa": "ఊదా",
368
+ "pink": "గులాబి", "gulaabi": "గులాబి",
369
+ "brown": "గోధుమ", "godhuma": "గోధుమ",
370
+
371
+ # Days
372
+ "somavaaram": "సోమవారం", "monday": "మండే",
373
+ "mangalavaaram": "మంగళవారం", "tuesday": "ట్యూస్‌డే",
374
+ "budhavaaram": "బుధవారం", "wednesday": "వెన్స్‌డే",
375
+ "guruvار am": "గురువారం", "thursday": "థర్స్‌డే",
376
+ "shukravaaram": "శుక్రవారం", "friday": "ఫ్రైడే",
377
+ "shanivaaram": "శనివారం", "saturday": "శనివారం",
378
+ "aadivaaram": "ఆదివారం", "sunday": "సండే",
379
+
380
+ # Months
381
+ "january": "జనవరి", "janavari": "జనవరి",
382
+ "february": "ఫిబ్రవరి", "phibravari": "ఫిబ్రవరి",
383
+ "march": "మార్చి", "maarchi": "మార్చి",
384
+ "april": "ఏప్రిల్", "eprilu": "ఏప్రిల్",
385
+ "may": "మే", "mei": "మే",
386
+ "june": "జూన్", "joonu": "జూన్",
387
+ "july": "జూలై", "joolai": "జూలై",
388
+ "august": "ఆగస్టు", "aagasту": "ఆగస్టు",
389
+ "september": "సెప్టెంబర్", "septembaru": "సెప్టెంబర్",
390
+ "october": "అక్టోబర్", "akтobaru": "అక్టోబర్",
391
+ "november": "నవంబర్", "navambaru": "నవంబర్",
392
+ "december": "డిసెంబర్", "disembaru": "డిసెంబర్",
393
+
394
+ # Family
395
+ "amma": "అమ్మ", "mother": "మదర్",
396
+ "nanna": "నాన్న", "father": "ఫాదర్",
397
+ "anna": "అన్న", "brother": "బ్రదర్",
398
+ "akka": "అక్క", "sister": "సిస్టర్",
399
+ "tammuడu": "తమ్ముడు", "younger brother": "యంగర్ బ్రదర్",
400
+ "chellelu": "చెల్లెలు", "younger sister": "యంగర్ సిస్టర్",
401
+ "thaatha": "తాత", "grandfather": "గ్రాండ్‌ఫాదర్",
402
+ "aamma": "అమ్మ", "grandmother": "గ్రాండ్‌మదర్",
403
+ }
404
+
405
+ # ============================================================================
406
+ # DICTIONARY ACCESS FUNCTIONS
407
+ # ============================================================================
408
+
409
+ def get_verified_word(word: str) -> Optional[str]:
410
+ """
411
+ Get verified Telugu transliteration for a word.
412
+
413
+ Args:
414
+ word: English/Roman word
415
+
416
+ Returns:
417
+ Telugu transliteration if found, None otherwise
418
+ """
419
+ word_lower = word.lower().strip()
420
+
421
+ # Search all dictionaries
422
+ dictionaries = [
423
+ COMMON_VERBS,
424
+ COMMON_NOUNS,
425
+ PLACE_NAMES,
426
+ PERSON_NAMES,
427
+ ENGLISH_LOANWORDS,
428
+ MISCELLANEOUS,
429
+ ]
430
+
431
+ for dictionary in dictionaries:
432
+ if word_lower in dictionary:
433
+ return dictionary[word_lower]
434
+
435
+ return None
436
+
437
+
438
+ def get_dictionary_size() -> dict:
439
+ """Get statistics about dictionary coverage"""
440
+ return {
441
+ 'verbs': len(COMMON_VERBS),
442
+ 'nouns': len(COMMON_NOUNS),
443
+ 'places': len(PLACE_NAMES),
444
+ 'names': len(PERSON_NAMES),
445
+ 'loanwords': len(ENGLISH_LOANWORDS),
446
+ 'misc': len(MISCELLANEOUS),
447
+ 'total': (len(COMMON_VERBS) + len(COMMON_NOUNS) +
448
+ len(PLACE_NAMES) + len(PERSON_NAMES) +
449
+ len(ENGLISH_LOANWORDS) + len(MISCELLANEOUS))
450
+ }
451
+
452
+
453
+ def search_dictionary(query: str, category: Optional[str] = None) -> List[Tuple[str, str]]:
454
+ """
455
+ Search dictionary for partial matches.
456
+
457
+ Args:
458
+ query: Search query
459
+ category: Optional category filter
460
+
461
+ Returns:
462
+ List of (english, telugu) tuples
463
+ """
464
+ query_lower = query.lower()
465
+ results = []
466
+
467
+ # Select dictionaries to search
468
+ if category == 'verbs':
469
+ dicts = [('verbs', COMMON_VERBS)]
470
+ elif category == 'nouns':
471
+ dicts = [('nouns', COMMON_NOUNS)]
472
+ elif category == 'places':
473
+ dicts = [('places', PLACE_NAMES)]
474
+ elif category == 'names':
475
+ dicts = [('names', PERSON_NAMES)]
476
+ elif category == 'loanwords':
477
+ dicts = [('loanwords', ENGLISH_LOANWORDS)]
478
+ else:
479
+ # Search all
480
+ dicts = [
481
+ ('verbs', COMMON_VERBS),
482
+ ('nouns', COMMON_NOUNS),
483
+ ('places', PLACE_NAMES),
484
+ ('names', PERSON_NAMES),
485
+ ('loanwords', ENGLISH_LOANWORDS),
486
+ ('misc', MISCELLANEOUS),
487
+ ]
488
+
489
+ for cat_name, dictionary in dicts:
490
+ for english, telugu in dictionary.items():
491
+ if query_lower in english.lower():
492
+ results.append((english, telugu, cat_name))
493
+
494
+ return results
495
+
496
+
497
+ if __name__ == "__main__":
498
+ # Print statistics
499
+ stats = get_dictionary_size()
500
+ print("=" * 70)
501
+ print("ENHANCED TELUGU DICTIONARY STATISTICS")
502
+ print("=" * 70)
503
+ for category, count in stats.items():
504
+ print(f"{category.title():15}: {count:5} entries")
505
+
506
+ # Test search
507
+ print("\n" + "=" * 70)
508
+ print("SEARCH EXAMPLES")
509
+ print("=" * 70)
510
+
511
+ searches = ["rama", "hydra", "computer"]
512
+ for query in searches:
513
+ results = search_dictionary(query)
514
+ print(f"\nSearch '{query}': found {len(results)} matches")
515
+ for eng, tel, cat in results[:3]:
516
+ print(f" {eng:20} → {tel:15} ({cat})")