def format_holidays(list_of_jsons) -> list: try: result = [] for holiday in list_of_jsons: # print(holiday) eng_name = find_by_key('lang', 'en', holiday['holidayName'], "text") eng_country = holiday['countryFullName'] my_holiday = [[translate(eng_name), translate(eng_country)], [eng_name, eng_country]] result.append(my_holiday) clear_from_repeating = [] for holiday in result: holiday_dict = dict() holiday_dict['name'] = holiday[0][0] countries_for_this_holiday = [[x[0][1], x[1][1]] for x in result if x[0][0] == holiday[0][0]] if len(countries_for_this_holiday) > 5: countries_for_this_holiday = [] holiday_dict['countries'] = ', '.join([x[0] for x in countries_for_this_holiday]) holiday_dict['en'] = f"{holiday[1][0]} in {', '.join([x[1] for x in countries_for_this_holiday]) if countries_for_this_holiday else 'the world'}" if not any(x['name'] == holiday_dict['name'] for x in clear_from_repeating): clear_from_repeating.append(holiday_dict) result = clear_from_repeating # pprint(result) return result except BaseException as be: logging.fatal(be)
def close_application(self): """ Safely close app, with saving data first after displaying dialog to user. """ if mb.askyesno(translate(QUIT_TITLE), message=translate(QUIT_DIALOG), icon="question"): self.main_frame.destroy()
def get_flat_meanings(text, target_lang): source_lang = translator.detect_language(text) translation = translator.translate(text, target_lang, source_lang) dict_dir = source_lang + '-' + target_lang response = requests.get( (settings.YA_TRANSLATOR['URL'] + '&lang=%(dictDir)s&text=%(text)s') % { 'yaDictKey': settings.YA_TRANSLATOR['KEY'], 'dictDir': dict_dir, 'text': text }) ya_dict = response.json() meanings = set() meanings.add(translation.lower()) if len(ya_dict['def']): for yaDef in ya_dict['def']: for yaDefTr in yaDef['tr']: meaning = yaDefTr['text'].lower() meanings.add(meaning) if 'syn' in yaDefTr: for yaDefTrSyn in yaDefTr['syn']: meaning = yaDefTrSyn['text'].lower() meanings.add(meaning) return meanings
def test(hits, facets, conditions): global count print '#%s' % count data = translate(hits, facets, conditions) pprint(data) import connection.esjson as J print J.dumps(data) count += 1 return data
def run_fixel_on_input(self, source, expected_python): fixel_output = translator.translate(source) # post process is too simple to test, just call to get proper output expected_python_post_process = post_process.create_program(expected_python[0], expected_python[1]) d = difflib.Differ() diff = d.compare(fixel_output.splitlines(), expected_python_post_process.splitlines()) diff_string = '\n'.join(diff) self.assertEqual(fixel_output, expected_python_post_process, 'diff\n' + diff_string)
def get(self, request): """ --- parameters: - name: string description: a string to translate required: true type: string paramType: query - name: lang description: a target language required: true type: string paramType: query """ text = self.get_text(request) target_lang = self.get_lang(request) history_serializer = self.init_history_serializer(request, text) history_serializer.is_valid(raise_exception=True) history_serializer.save(user=request.user) source_lang = translator.detect_language(text) translation = '' ya_translation_direction = source_lang + '-' + target_lang ya_url = (settings.YA_TRANSLATOR['URL'] + '&lang=%(dictDir)s&text=%(text)s') % \ { 'yaDictKey': settings.YA_TRANSLATOR['KEY'], 'dictDir': ya_translation_direction, 'text': text } ya_response = requests.get(ya_url) if ya_response.status_code != status.HTTP_200_OK or len(ya_response.json()['def']) == 0: translation = translator.translate(text, target_lang, source_lang) response = { 'translation_history': history_serializer.data, 'translation': translation, 'ya_dict': ya_response.json() } if ya_response.status_code == status.HTTP_200_OK: response['ya_dict'] = ya_response.json() else: response['ya_dict'] = {} card_serializer = self.init_card_serializer(request, text) if card_serializer is not None: response['card'] = card_serializer.data return Response(response, status=status.HTTP_200_OK)
def open_image(self, event): """ TODO: image choice by user [x], setting chosen image as self.portrait [x], updating self.photo_label [x] """ img = fd.askopenfile(initialdir=PORTRAITS_PATH, title=translate(ASK_OPEN_IMAGE), filetypes=()) if img: path_and_file = img.name.rpartition("/") self.portrait = self.load_image_from_file( path_and_file[2], path_and_file[0] + path_and_file[1]) self.photo_label.configure(image=self.portrait)
def load_character_from_file(self): """ TODO: dialog for user for file choice [ ], search for file [ ] read [ ] :return: """ file = fd.askopenfile(initialdir=CHARACTERS_PATH, title=translate(ASK_OPEN_TITLE), filetypes=()) if file: with open(file.name, "r") as file: data = file.readlines() categories = (self.name_and_surname, self.ethnicity, self.sex, self.age, self.years, self.weight, self.kilograms, self.height, self.centimeters, self.short_desc, self.description, self.clothes, self.pockets, self.weapons) for i in range(len(data)): if isinstance(categories[i], IntVar): categories[i].set(int(data[i].split(" = ")[1])) else: categories[i].set(data[i].split(" = ")[1])
def choose_holiday(update, context): try: logging.info('making info about holiday') query = update.callback_query choice = translate(query.data) logging.info('connecting to wiki') wiki_result = search_in_wiki(choice) logging.info(f'wiki found: {wiki_result["completed"]}') if wiki_result["completed"]: new_url = decode_cyrillic_urls(wiki_result['url']) logging.info('cyrillic url decoded') caption = '\n\n'.join([ "Результат поиска в Википедии:", wiki_result["title"], wiki_result["body"], new_url ]) else: caption = choice holiday_name = choice.split(' в ')[0] byte_im = create_picture(holiday_name) context.bot.send_photo(query.message.chat.id, photo=byte_im) context.bot.send_message(text=caption, chat_id=query.message.chat.id) except BaseException as be: logging.error(be)
default=False) arg_parser.add_argument('-f', '--fixel-file', type=argparse.FileType('r')) namespace = arg_parser.parse_args() if namespace.fixel_file: path, name = os.path.split(namespace.fixel_file.name) source_string = namespace.fixel_file.read() namespace.fixel_file.close() pwd = os.getcwd() script_dir = os.path.dirname(__file__) # directory this script is in os.chdir( script_dir) # change directory so parse outputs are in right place try: result = translator.translate(source_string, namespace.verbose) os.chdir(pwd) # go back to original pwd before writing out file outname = os.path.join(path, name.split('.')[0] + '.py') f = open(outname, 'w') f.write(result) f.close() except translator.parser.ParsingError as e: print e.value sys.exit(1) else: try: result = translator.translate(verbose=namespace.verbose) except translator.parser.ParsingError as e: print e.value sys.exit(1)
arg_parser.add_argument('-v', '--verbose', help='prints every intermediate step in translation', action='store_true', default=False) arg_parser.add_argument('-f', '--fixel-file', type=argparse.FileType('r')) namespace = arg_parser.parse_args() if namespace.fixel_file: path, name = os.path.split(namespace.fixel_file.name) source_string = namespace.fixel_file.read() namespace.fixel_file.close() pwd = os.getcwd() script_dir = os.path.dirname(__file__) # directory this script is in os.chdir(script_dir) # change directory so parse outputs are in right place try: result = translator.translate(source_string, namespace.verbose) os.chdir(pwd) # go back to original pwd before writing out file outname = os.path.join(path, name.split('.')[0] + '.py') f = open(outname, 'w') f.write(result) f.close() except translator.parser.ParsingError as e: print e.value sys.exit(1) else: try: result = translator.translate(verbose=namespace.verbose) except translator.parser.ParsingError as e: print e.value sys.exit(1)
def parse_countries(list_of_jsons): result = [] for country in list_of_jsons: result.append([translate(country["fullName"]), country["regions"]]) return result
def __init__(self, master): """ Initialize new application window. :param master: Tk instance """ # two dicts will keep names and surnames for all sexes and races: self.names = self.load_names() self.surnames = self.load_surnames() self.pistols_list = self.load_list_from_file(PISTOLS) self.rifles_list = self.load_list_from_file(RIFLES) self.portrait = None self.short_desc = StringVar() # character info self.description = StringVar() self.name = StringVar() self.surname = StringVar() self.name_and_surname = StringVar() self.ethnicity = StringVar() self.sex = StringVar() self.age, self.years = StringVar(), IntVar() self.height, self.centimeters = StringVar(), IntVar() self.weight, self.kilograms = StringVar(), IntVar() self.professions = self.load_list_from_file(PROFFESIONS) self.profession = StringVar() self.profession.set(translate(CHOOSE_PROFESSION)) # for current character's inventory and weapons: self.clothes = StringVar() self.pockets = StringVar() self.weapons = StringVar() # hints displayed at the bottom of the window: self.hint = StringVar() self.randomize = {t: BooleanVar() for t in types_.values()} for bool_ in self.randomize.values(): bool_.set(True) # GUI: self.main_frame = master self.main_frame.geometry(WINDOW_SIZE) self.main_frame.title(translate(TITLE)) self.main_frame.protocol('WM_DELETE_WINDOW', self.close_application) self.menubar = Menu(self.main_frame) self.file_menu = Menu(self.menubar, tearoff=0) self.file_menu.add_command(label=translate(LOAD), command=self.load_character_from_file) self.file_menu.add_command(label=translate(SAVE), command=self.save_character_to_file) self.menubar.add_cascade(label=translate(FILE), menu=self.file_menu) self.main_frame.config(menu=self.menubar) self.parameters = LabelFrame(self.main_frame) self.parameters_desc = Label(self.parameters, text=translate(PARAMETRES_DESC), height=2, width=500, background=HINT_COLOR) [x.pack(side=TOP) for x in (self.parameters, self.parameters_desc)] self.buttons = pack(Frame(self.parameters), side=LEFT) self.top_buttons = pack(Frame(self.buttons), side=TOP) self.middle_buttons = pack(Frame(self.buttons), side=TOP) self.bottom_buttons = pack(Frame(self.buttons), side=TOP) self.ethnicity_buttons = LabelFrame(self.top_buttons, text=translate(ETHNICITY)) self.age_buttons = LabelFrame(self.top_buttons, text=translate(AGE)) self.sex_buttons = LabelFrame(self.top_buttons, text=translate(SEX)) self.height_buttons = LabelFrame(self.middle_buttons, text=translate(HEIGHT)) self.weight_buttons = LabelFrame(self.middle_buttons, text=translate(WEIGHT)) self.profession_frame = LabelFrame(self.middle_buttons, text=translate(PROFESSION)) self.is_armed_frame = LabelFrame(self.middle_buttons, text=translate(IS_ARMED)) buttons = self.top_buttons.winfo_children() + \ self.middle_buttons.winfo_children() [x.pack(side=LEFT, expand=YES, fill=BOTH) for x in buttons] # creating and packing buttons all at once: categories = (ETHNICITIES, AGES, SEXES, WEIGHTS, HEIGHTS) for category in categories: # prepare buttons name: cat = types_[category].lower() buttons = cat + "_buttons" level = "_top" if categories.index(category) < 3 else "_bottom" self.__dict__[cat + level + "_buttons_list"] = [] # actual buttons: for elem in category: b = Radiobutton(self.__dict__[buttons], text=translate(elem), variable=self.__dict__[cat], value=elem, bg=BUTTON_COLOR_OFF, height=2, width=len(translate(elem)) + 2, selectcolor=BUTTON_COLOR_ON, indicatoron=0) b.pack(side=LEFT, fill=BOTH, expand=YES) if category == AGES: b.bind("<Button-1>", self.new_age_value) if category == WEIGHTS: b.bind("<Button-1>", self.new_weight_value) if category == HEIGHTS: b.bind("<Button-1>", self.new_height_value) # label displaying exact (numerical) value: if category not in (SEXES, ETHNICITIES): v_name = assigned[category] v = pack( Label(self.__dict__[buttons], text="", height=2, width=5, relief=RAISED, background=LABEL_COLOR, textvariable=self.__dict__[v_name]), LEFT, BOTH, YES) # checkbutton setting if category should be randomized: rb = Checkbutton(self.__dict__[buttons], variable=self.randomize[types_[category]], selectcolor=GOLD_COLOR, onvalue=True, offvalue=False) rb.variable = self.randomize[types_[category]] rb.pack(side=LEFT, fill=BOTH, expand=YES) # profession-choice window top-level: self.profession_window = Toplevel() self.profession_window.title(translate(PROF_CHOICE_TITLE)) self.scrollbar = pack(Scrollbar(self.profession_window, orient=VERTICAL), side=RIGHT, fill=Y) self.professions_list = pack( Listbox(self.profession_window, yscrollcommand=self.scrollbar.set, height=30, width=35)) self.scrollbar.config(command=self.professions_list.yview) for profession in self.professions: self.professions_list.insert(END, profession.title()) self.professions_list.bind("<Button-1>", self.change_profession) self.profession_window.protocol( 'WM_DELETE_WINDOW', partial(self.close_window, self.profession_window)) self.profession_window.withdraw() self.profession_btn = Button(self.profession_frame, text=self.profession.get(), bg=BUTTON_COLOR_OFF, height=2, width=len(self.profession.get()) + 2, command=partial(self.open_window, self.profession_window)) self.profession_btn.pack(side=LEFT, fill=BOTH, expand=YES) # checkbutton: self.profession_boolean = Checkbutton( self.profession_frame, variable=self.randomize[PROFESSION], selectcolor=GOLD_COLOR, onvalue=True, offvalue=False) self.profession_boolean.variable = self.randomize[PROFESSION] self.profession_boolean.pack(side=LEFT, fill=BOTH, expand=YES) # if person is armed: self.is_armed_checkbutton = Checkbutton(self.is_armed_frame, variable=self.randomize[ARMED], selectcolor=GOLD_COLOR, onvalue=True, offvalue=False) self.is_armed_checkbutton.variable = self.randomize[ARMED] self.is_armed_checkbutton.pack(side=LEFT, fill=BOTH, expand=YES) # button used to randomize every attribute value: self.randomize_button = Button(self.bottom_buttons, text=translate(RANDOMIZE_CHECKED), height=2, width=33, background=GOLD_COLOR, command=self.randomize_everything) self.randomize_button.pack(side=RIGHT, fill=BOTH, expand=YES) # name and description section: self.result_frame = pack(LabelFrame(self.main_frame), side=TOP, fill=BOTH) self.result_desc = pack(Label(self.result_frame, text=translate(RESULT_DESC), height=2, width=500, background=HINT_COLOR), side=TOP) self.name_l_frame = LabelFrame(self.result_frame, text=translate(NAME, AND, SURNAME) + ":") self.name_l_frame.pack(side=LEFT, fill=Y) self.name_label = pack( Label(self.name_l_frame, text="", font=("Helvetica", 16), height=2, width=20, relief=SUNKEN, background=LABEL_COLOR, textvariable=self.name_and_surname), TOP) self.name_buttons = pack(LabelFrame(self.name_l_frame, relief=FLAT, text=translate(NEW) + ":"), side=TOP) # name generator's buttons: self.r_n_btn = Button(self.name_buttons, text=translate(NAME), command=partial(self.new_name, 1)) self.r_s_btn = Button(self.name_buttons, text=translate(SURNAME), command=partial(self.new_name, 2)) self.r_b_btn = Button(self.name_buttons, text=translate(BOTH_NAMES), command=partial(self.new_name, 1, 2)) [b.pack(side=LEFT) for b in (self.r_n_btn, self.r_s_btn, self.r_b_btn)] # Portrait section: self.portrait = self.load_image_from_file(BASIC_PORTRAIT) self.portrait_frame = pack(LabelFrame(self.result_frame, text=translate(PORTRAIT)), side=LEFT, expand=YES, fill=BOTH) self.photo_label = pack( Label(self.portrait_frame, compound=BOTTOM, width=150, height=150, borderwidth=1, relief=SUNKEN, image=self.portrait)) self.photo_label.bind("<Button-1>", self.open_image) # descriptions section: self.short_desc_frame = pack( LabelFrame(self.result_frame, text=translate(DESCRIPTION) + ":")) self.short_desc_label = pack(Label(self.short_desc_frame, relief=SUNKEN, width=60, height=7, wraplength=600, textvariable=self.short_desc, background=LABEL_COLOR), side=TOP) self.full_desc_button = pack(Button( self.short_desc_frame, text=translate(LONG_DESCRIPTION), height=1, bg=BUTTON_COLOR_OFF, command=self.show_full_description), side=LEFT, fill=BOTH, expand=YES) # description-editing top-level: self.desc_edit_window = Toplevel() self.desc_edit_window.title(translate(EDIT)) self.edit_entry = pack(Text(self.desc_edit_window, height=7, width=60, wrap=WORD, background=LABEL_COLOR), side=TOP) self.desc_edit_window.protocol( 'WM_DELETE_WINDOW', partial(self.close_window, self.desc_edit_window, self.edit_entry)) self.desc_edit_window.withdraw() # button to accept changes: self.save_edit_button = pack(Button( self.desc_edit_window, text=translate(SAVE), height=1, bg=GREEN_COLOR, command=partial(self.save_changes, self.edit_entry, self.short_desc)), side=RIGHT) # button to cancel edits: self.edit_cancel_button = pack(Button( self.desc_edit_window, text=translate(CANCEL), height=1, bg=RED_COLOR, command=partial(self.close_window, self.desc_edit_window, self.edit_entry)), side=RIGHT) # button to show above window: self.edit_desc_button = pack(Button(self.short_desc_frame, text=translate(EDIT), height=1, bg=BUTTON_COLOR_OFF, command=partial( self.open_window, self.desc_edit_window)), side=LEFT, fill=BOTH, expand=YES) # clothes section: self.clothes_frame = pack(LabelFrame(self.main_frame, text=translate(CLOTHES) + ":"), side=TOP, fill=BOTH) self.clothes_label = pack( Label(self.clothes_frame, relief=SUNKEN, width=120, height=8, wraplength=1200, textvariable=self.clothes, background=LABEL_COLOR)) # inventory section: self.pockets_frame = pack(LabelFrame(self.main_frame, text=translate(POCKETS) + ":"), side=TOP, fill=BOTH) self.pockets_label = pack( Label(self.pockets_frame, relief=SUNKEN, width=120, height=8, wraplength=1200, text=translate(TAKE_LOOK) + "...", background=GRAY_COLOR)) self.pockets_label.bind("<Enter>", self.show_pockets) self.pockets_label.bind("<Leave>", self.hide_pockets) # weapons section: self.weapons_frame = pack(LabelFrame(self.main_frame, text=translate(WEAPONS) + ":"), side=TOP, fill=BOTH) self.weapons_label = pack( Label(self.weapons_frame, relief=SUNKEN, width=120, height=8, wraplength=1200, text=translate(TAKE_LOOK) + "...", background=GRAY_COLOR)) self.weapons_label.bind("<Enter>", self.show_weapons) self.weapons_label.bind("<Leave>", self.hide_weapons) self.randomize_everything()
def hide_weapons(self, event): self.weapons_label.configure(text=translate(TAKE_LOOK) + "...", background=GRAY_COLOR)