Rev 294 | Rev 297 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 294 | Rev 296 | ||
---|---|---|---|
Line 22... | Line 22... | ||
22 | }
|
22 | }
|
23 | 23 | ||
24 | def cli_help(): |
24 | def cli_help(): |
25 | print('Usage: {0} TEXT...'.format(basename(argv[0]))) |
25 | print('Usage: {0} TEXT...'.format(basename(argv[0]))) |
26 | 26 | ||
27 | def get_sort_dict_alnum_vulcan_key(): |
27 | def get_sort_dict_alnum_vulcan_key (): |
28 | letters = list(map(str.lower, [ |
28 | letters = list(map(str.lower, [ |
29 | " ", 'S', 'T', 'P', 'K', 'R', 'L', 'A', 'Sh', 'O', 'U', 'D', |
29 | " ", 'S', 'T', 'P', 'K', 'R', 'L', 'A', 'Sh', 'O', 'U', 'D', |
30 | 'V', 'Kh', 'E', 'H', 'G', 'Ch', 'I', 'N', 'Zh', 'M', 'Y', 'F', 'Z', |
30 | 'V', 'Kh', 'E', 'H', 'G', 'Ch', 'I', 'N', 'Zh', 'M', 'Y', 'F', 'Z', |
31 | 'Th', 'W', 'B', "'", '-'])) |
31 | 'Th', 'W', 'B', "'", '-'])) |
32 | letter_values = dict(map(lambda x: (x[1], x[0]), enumerate(letters))) |
32 | letter_values = dict(map(lambda x: (x[1], x[0]), enumerate(letters))) |
Line 52... | Line 52... | ||
52 | 52 | ||
53 | return 1 if len(b) < len(a) else 0 |
53 | return 1 if len(b) < len(a) else 0 |
54 | 54 | ||
55 | return cmp_to_key(sort_dict_alnum_vulcan) |
55 | return cmp_to_key(sort_dict_alnum_vulcan) |
56 | 56 | ||
57 | class VulcanDictionary(Dictionary): |
57 | class VulcanDictionary (Dictionary): |
58 | def translate (self, phrase, search_prefix=True, search_plural=True): |
58 | def translate (self, phrase, search_prefix=True, search_plural=True): |
59 | dictionary = self |
59 | dictionary = self |
60 | 60 | ||
61 | translation = dictionary.get(phrase.lower(), None) |
61 | translation = super().translate(phrase) |
62 | if translation is not None: |
62 | if translation is not None: |
63 | translation['vuh'] = phrase |
- | |
64 | return translation
|
63 | return translation
|
65 | else:
|
64 | else:
|
- | 65 | expr_translation = dictionary.translate_expression(phrase) |
|
- | 66 | if expr_translation is not None: |
|
- | 67 | return expr_translation
|
|
- | 68 | ||
66 | if search_prefix:
|
69 | if search_prefix:
|
67 | # find prefix
|
70 | # find prefix
|
68 | for preposition in prepositions: |
71 | for preposition in prepositions: |
69 | prefix = match(escape(preposition), phrase) |
72 | prefix = match(escape(preposition), phrase) |
70 | if prefix is not None: |
73 | if prefix is not None: |
Line 91... | Line 94... | ||
91 | if len(argv) < 2: |
94 | if len(argv) < 2: |
92 | print('Nothing to translate.', end='\n\n', file=stderr) |
95 | print('Nothing to translate.', end='\n\n', file=stderr) |
93 | cli_help() |
96 | cli_help() |
94 | exit(1) |
97 | exit(1) |
95 | 98 | ||
96 | text = argv[1] |
99 | text = ' '.join(argv[1:]) |
97 | 100 | ||
98 | dictionary = VulcanDictionary(dictionary) |
101 | dictionary = VulcanDictionary(dictionary) |
99 | dictionary.load('vuh-gol-en.dict.zdb.txt', 'vuh') |
102 | dictionary.load('vuh-gol-en.dict.zdb.txt', 'vuh') |
100 | dictionary.clean() |
103 | dictionary.clean() |
101 | 104 | ||
Line 144... | Line 147... | ||
144 | if translation is None: |
147 | if translation is None: |
145 | dmsg("phrase-translation:", translation, min_level=2) |
148 | dmsg("phrase-translation:", translation, min_level=2) |
146 | offset += 1 |
149 | offset += 1 |
147 | 150 | ||
148 | dmsg("words-translation:", words, min_level=2) |
151 | dmsg("words-translation:", words, min_level=2) |
- | 152 | dmsg("words-translation-reduced:", |
|
- | 153 | list(map( |
|
- | 154 | lambda word:
|
|
- | 155 | word['en'] |
|
- | 156 | if (hasattr(word, "get") and word.get('en', None) is not None) |
|
- | 157 | else word, |
|
- | 158 | words)), |
|
- | 159 | min_level=2) |
|
- | 160 | # dmsg(dictionary._expressions)
|