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)
Exemple #2
0
 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
Exemple #5
0
	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)
Exemple #6
0
    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)
Exemple #7
0
 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)
Exemple #8
0
    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])
Exemple #9
0
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)
Exemple #10
0
                        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)
Exemple #11
0
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
Exemple #13
0
    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()
Exemple #14
0
 def hide_weapons(self, event):
     self.weapons_label.configure(text=translate(TAKE_LOOK) + "...",
                                  background=GRAY_COLOR)