File indexing completed on 2024-05-05 17:52:55
0001 #!/usr/bin/env python3 0002 # coding: utf8 0003 0004 """ 0005 Fill in some comets' names that follow specific patterns. 0006 Run against kstars.po. 0007 0008 Sieve has no options. 0009 0010 @author: Alexander Potashev <aspotashev@gmail.com> 0011 @license: GPLv3 0012 """ 0013 0014 from pology import _, n_ 0015 from pology.report import report 0016 from pology.msgreport import report_msg_content 0017 import os 0018 import re 0019 0020 0021 def setup_sieve (p): 0022 0023 p.set_desc(_("@info sieve discription", 0024 "Fill in some comets' names that follow specific patterns." 0025 )) 0026 0027 0028 class Sieve (object): 0029 0030 def __init__ (self, params): 0031 pass 0032 # Other dates should have the following format: (yyyy-mm-dd) 0033 self.date_re = re.compile("^[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]$") 0034 0035 def translate (self, msg): 0036 if msg.msgctxt == "Asteroid name (optional)" and re.match(r'\([0-9]{4} [A-Z]{2}[0-9]{1,3}\)', msg.msgid): 0037 return msg.msgid 0038 if msg.msgctxt == 'Comet name (optional)': 0039 m = re.match(r'([CP]/[0-9]* [A-Z0-9\-]{2,5}) \(([a-zA-Z ]*)\)', msg.msgid) 0040 if m: 0041 code = m.group(1) 0042 name = m.group(2) 0043 0044 tr_name = { 0045 'Great comet': 'Большая комета', 0046 'PANSTARRS': 'Pan-STARRS', 0047 'LINEAR': 'LINEAR', 0048 'Lemmon': 'обзор Маунт-Леммон', 0049 'NEOWISE': 'NEOWISE', 0050 'Catalina': 'обзор Каталина', 0051 'Borisov': 'Борисов', 0052 'Messier': 'Мессье', 0053 'Pons': 'Понс', 0054 'Гершель': 'Гершель', 0055 'Olbers': 'Ольберс', 0056 'Winnecke': 'Виннеке', 0057 'WISE': 'WISE', 0058 'Tempel': 'Темпель', 0059 'STEREO': 'STEREO', 0060 'SOHO': 'SOHO', 0061 'Spacewatch': 'Spacewatch', 0062 'SOLWIND': 'Solwind', 0063 'Shoemaker': 'Шумейкер', 0064 'NEAT': 'NEAT', 0065 'McNaught': 'Макнот', 0066 'Christensen': 'Кристенсен', 0067 'Barnard': 'Барнард', 0068 'LONEOS': 'LONEOS', 0069 'Lovejoy': 'Лавджой', 0070 'Machholz': 'Макхольц', 0071 'Mechain': 'Мешен', 0072 'SMM': 'SolarMax', 0073 'Boattini': 'Боаттини', 0074 'Bradfield': 'Брэдфилд', 0075 'Mueller': 'Мюллер', 0076 'Alcock': 'Алкок', 0077 'Blathwayt': 'Блатуэйт', 0078 'Borrelly': 'Борелли', 0079 'Brorsen': 'Брорзен', 0080 'Burnham': 'Бёрнхем', 0081 'du Toit': 'Дю Туа', 0082 'Gambart': 'Гамбар', 0083 'Giacobini': 'Джакобини', 0084 'Gibbs': 'Гиббс', 0085 'Hill': 'Хилл', 0086 'Honda': 'Хонда', 0087 'IRAS': 'IRAS', 0088 'Klinkerfues': 'Клинкерфус', 0089 'Kohoutek': 'Когоутек', 0090 'Lovas': 'Ловас', 0091 'Mauvais': 'Мовэ', 0092 'Mellish': 'Меллиш', 0093 'Petersen': 'Петерсон', 0094 'Siding Spring': 'Сайдинг-Спринг', 0095 'Skjellerup': 'Скьеллеруп', 0096 'Swift': 'Свифт', 0097 'Yanaka': 'Янака', 0098 'Brooks': 'Брукс', 0099 'Galle': 'Галле', 0100 'Skiff': 'Скифф', 0101 'Wilson': 'Уилсон', 0102 'Herschel': 'Гершель', 0103 'Perrine': 'Перрайн', 0104 'Kowalski': 'Ковальский', 0105 'Garradd': 'Гаррэдд', 0106 'Beshore': 'Бешор', 0107 'Cardinal': 'Кардинал', 0108 'Denning': 'Деннинг', 0109 'Finsler': 'Финслер', 0110 'Harrington': 'Харрингтон', 0111 'Hartwig': 'Хартвиг', 0112 'Holvorcem': 'Ольворсем', 0113 'Humason': 'Хьюмасон', 0114 'Hyakutake': 'Хякутакэ', 0115 'Lagerkvist': 'Лагерквист', 0116 'Larsen': 'Ларсен', 0117 'Pajdusakova': 'Пайдушакова', 0118 'Palomar': 'Паломарская обсерватория', 0119 'Schaumasse': 'Шомасс', 0120 'Schaeberle': 'Шеберле', 0121 'Schwartz': 'Шварц', 0122 'Ikeya': 'Икэя', 0123 'Austin': 'Остин', 0124 'de Vico': 'де Вико', 0125 'Donati': 'Донати', 0126 'Elenin': 'Еленин', 0127 'Ferris': 'Феррис', 0128 'Johnson': 'Джонсон', 0129 'Metcalf': 'Меткалф', 0130 'Montani': 'Монтани', 0131 'Peltier': 'Пельтье', 0132 'Respighi': 'Респиги', 0133 'Tabur': 'Табур', 0134 'Torres': 'Торрес', 0135 'Wilk': 'Уилк', 0136 'Bester': 'Бестер', 0137 'Larson': 'Ларсон', 0138 'Meier': 'Майер', 0139 'Schweizer': 'Швейцер', 0140 'Wirtanen': 'Виртанен', 0141 'Bruhns': 'Брунс', 0142 'Coggia': 'Коджа', 0143 'Levy': 'Леви', 0144 'La Sagra': 'Ла Сагра', 0145 'Mrkos': 'Мркос', 0146 'Skotti': 'Скотти', 0147 'SWAN': 'SWAN', 0148 } 0149 if name in tr_name: 0150 return '{} ({})'.format(code, tr_name[name]) 0151 else: 0152 print('unknown: %s' % name) 0153 0154 return None 0155 0156 def process (self, msg, cat): 0157 new_msgstr = self.translate(msg) 0158 if new_msgstr is not None and (msg.fuzzy or msg.msgstr[0] != new_msgstr): 0159 msg.msgstr[0] = new_msgstr 0160 msg.unfuzzy() 0161 report_msg_content(msg, cat) 0162 0163 def finalize (self): 0164 ""