From 01dbb23623e6a16c930d94bad0189fd3f9eeab37 Mon Sep 17 00:00:00 2001 From: ehrmann Date: Tue, 28 Aug 2018 15:10:39 +0300 Subject: [PATCH] Add tests. Change initializedb. Decode translation_base --- lingvodoc/scripts/initializedb.py | 582 ++---- lingvodoc/scripts/translations_base.json | 1652 +++--------------- lingvodoc/utils/creation.py | 2 +- test_gql/__init__.py | 0 test_gql/alembictests.ini | 39 + test_gql/snapshots/__init__.py | 0 test_gql/snapshots/snap_tests without ban.py | 948 ++++++++++ test_gql/snapshots/snap_tests.py | 894 ++++++++++ test_gql/test_ids.txt | 23 + test_gql/testing.ini | 148 ++ test_gql/tests.py | 1030 +++++++++++ 11 files changed, 3542 insertions(+), 1776 deletions(-) create mode 100644 test_gql/__init__.py create mode 100644 test_gql/alembictests.ini create mode 100644 test_gql/snapshots/__init__.py create mode 100644 test_gql/snapshots/snap_tests without ban.py create mode 100644 test_gql/snapshots/snap_tests.py create mode 100644 test_gql/test_ids.txt create mode 100644 test_gql/testing.ini create mode 100755 test_gql/tests.py diff --git a/lingvodoc/scripts/initializedb.py b/lingvodoc/scripts/initializedb.py index b188e26a9..9c455102a 100644 --- a/lingvodoc/scripts/initializedb.py +++ b/lingvodoc/scripts/initializedb.py @@ -1,9 +1,19 @@ import os import sys +from configparser import ConfigParser + import transaction from sqlalchemy import engine_from_config +from lingvodoc.utils.creation import (create_perspective, + create_dbdictionary, + create_dictionary_persp_to_field, + edit_role, + create_lexicalentry + ) +from lingvodoc.utils.starling_converter import create_entity + from pyramid.paster import ( get_appsettings, setup_logging, @@ -31,7 +41,7 @@ ) import json - +from sqlalchemy import create_engine test_init = True @@ -49,7 +59,7 @@ def create_translation(client_id, contents=list(), gist_type='Service'): for content in contents: atom = TranslationAtom(client_id=client_id, content=content[0], locale_id=content[1], parent=gist) DBSession.add(atom) - DBSession.flush() + DBSession.flush() return gist @@ -65,14 +75,18 @@ def find_service_translation(content, locale_id=2): def find_translation(content, locale_id=2): - atom = DBSession.query(TranslationAtom).filter_by(content=content, locale_id=locale_id).first() + atom = DBSession.query(TranslationAtom).filter_by(content=content, locale_id=locale_id).order_by(TranslationAtom.client_id).first() if atom: return atom.parent else: return None -def data_init(manager, accounts): +def data_init(manager, accounts, dbname): + + + engine = create_engine(dbname) + DBSession.configure(bind=engine) with manager: # creating base locales @@ -190,7 +204,7 @@ def data_init(manager, accounts): gist_type='Service') translations = dict() try: - with open('lingvodoc/scripts/translations_base.json', 'r') as json_file: + with open(os.path.dirname(__file__) + '/translations_base.json', 'r') as json_file: translations = json.loads(json_file.read()) except Exception as e: import traceback @@ -329,18 +343,6 @@ def data_init(manager, accounts): action="create", perspective_default=True)) - create_gist_from_string("Can delete lexical entries") - base_groups.append(BaseGroup(name="Can delete lexical entries", - subject="lexical_entries_and_entities", - action="delete", - perspective_default=True)) - - # create_gist_from_string("Can delete lexical entries") - # base_groups.append(BaseGroup(name="Can delete lexical entries", - # subject="lexical_entries_and_entities", - # action="delete", - # perspective_default=True)) - create_gist_from_string("Can view unpublished lexical entries") base_groups.append(BaseGroup(name="Can view unpublished lexical entries", subject="lexical_entries_and_entities", @@ -365,6 +367,12 @@ def data_init(manager, accounts): action="create", dictionary_default=True)) + create_gist_from_string("Can delete lexical entries and entities") + base_groups.append(BaseGroup(name="Can delete lexical entries and entities", + subject="lexical_entries_and_entities", + action="delete", + perspective_default=True)) + create_gist_from_string("Can edit translationatom") base_groups.append(BaseGroup(name="Can edit translationatom", subject="translations", @@ -375,6 +383,44 @@ def data_init(manager, accounts): subject="translations", action="delete")) + create_gist_from_string("Can create grants") + base_groups.append(BaseGroup(name="Can create grants ", + subject="grant", + action="create")) + + create_gist_from_string("Can approve grants") + base_groups.append(BaseGroup(name="Can approve grants", + subject="grant", + action="approve")) + + create_gist_from_string("Can approve organizations") + base_groups.append(BaseGroup(name="Can approve organizations", + subject="organization", + action="approve")) + + create_gist_from_string("Can edit dictionary status") + base_groups.append(BaseGroup(name="Can edit dictionary status", + subject="dictionary_status", + action="edit", + dictionary_default=True)) + + create_gist_from_string("Can edit perspective status") + base_groups.append(BaseGroup(name="Can edit perspective status", + subject="perspective_status", + action="edit", + perspective_default=True)) + + + # create_gist_from_string("Can delete lexical entries") + # base_groups.append(BaseGroup(name="Can delete lexical entries", + # subject="lexical_entries_and_entities", + # action="delete", + # perspective_default=True)) + + + + + for base_group in base_groups: DBSession.add(base_group) @@ -396,7 +442,7 @@ def data_init(manager, accounts): name="Test", intl_name="Test" ) - test_pwd = Passhash(password="123456") + test_pwd = Passhash(password="12345") test_email = Email(email="test@test.ru") test_account.password = test_pwd DBSession.add(test_pwd) @@ -418,8 +464,6 @@ def data_init(manager, accounts): if group not in test_account.groups: test_account.groups.append(group) DBSession.flush() - - translationatom = DBSession.query(TranslationAtom)\ .join(TranslationGist).\ filter(TranslationAtom.content == "WiP", @@ -428,7 +472,8 @@ def data_init(manager, accounts): .one() state_gist = translationatom.parent dict_name_gist = find_translation('Dictionary of Middle-Ob dialect Mansi') - persp_name_gist = find_translation('Lingvodoc 0.98 etymology dictionary') + le_persp_name_gist = find_translation('Lexical Entries') + par_persp_name_gist = find_translation('Paradigms') text_type_gist = find_service_translation('Text') sound_type_gist = find_service_translation('Sound') link_type_gist = find_service_translation('Link') @@ -439,9 +484,9 @@ def data_init(manager, accounts): transcription_gist = find_translation('Transcription') sound_gist = find_translation('Sound') paradigm_gist = find_translation('Paradigmatic forms') - praat_gist = find_translation('Spectrogram') - image_gist = find_translation('Image ') - elan_gist = find_translation('ELAN markup ') + #praat_gist = find_translation('Spectrogram') + image_gist = find_translation('Image') + elan_gist = find_translation('ELAN markup') test_dict = Dictionary(client_id=test_client.id, translation_gist_client_id=dict_name_gist.client_id, translation_gist_object_id=dict_name_gist.object_id, @@ -449,26 +494,44 @@ def data_init(manager, accounts): parent_object_id=russian_language.object_id, state_translation_gist_client_id=state_gist.client_id, state_translation_gist_object_id=state_gist.object_id) + for base in DBSession.query(BaseGroup).filter_by(dictionary_default=True): + new_group = Group(parent=base, + subject_object_id=test_dict.object_id, + subject_client_id=test_dict.client_id) + DBSession.add(new_group) + DBSession.flush() DBSession.add(test_dict) DBSession.flush() test_persp = DictionaryPerspective(client_id=test_client.id, - translation_gist_client_id=persp_name_gist.client_id, - translation_gist_object_id=persp_name_gist.object_id, + translation_gist_client_id=le_persp_name_gist.client_id, + translation_gist_object_id=le_persp_name_gist.object_id, parent_client_id=test_dict.client_id, parent_object_id=test_dict.object_id, state_translation_gist_client_id=state_gist.client_id, state_translation_gist_object_id=state_gist.object_id) + for base in DBSession.query(BaseGroup).filter_by(perspective_default=True): + new_group = Group(parent=base, + subject_object_id=test_persp.object_id, + subject_client_id=test_persp.client_id) + DBSession.add(new_group) + DBSession.flush() DBSession.add(test_persp) DBSession.flush() test_persp_link = DictionaryPerspective(client_id=test_client.id, - translation_gist_client_id=persp_name_gist.client_id, - translation_gist_object_id=persp_name_gist.object_id, + translation_gist_client_id=par_persp_name_gist.client_id, + translation_gist_object_id=par_persp_name_gist.object_id, parent_client_id=test_dict.client_id, parent_object_id=test_dict.object_id, state_translation_gist_client_id=state_gist.client_id, state_translation_gist_object_id=state_gist.object_id) + for base in DBSession.query(BaseGroup).filter_by(perspective_default=True): + new_group = Group(parent=base, + subject_object_id=test_persp_link.object_id, + subject_client_id=test_persp_link.client_id) + DBSession.add(new_group) + DBSession.flush() DBSession.add(test_persp_link) DBSession.flush() @@ -516,13 +579,13 @@ def data_init(manager, accounts): data_type_translation_gist_object_id=elan_type_gist.object_id) DBSession.add(elan_field) - - praat_field = Field(client_id=test_client.id, - translation_gist_client_id=praat_gist.client_id, - translation_gist_object_id=praat_gist.object_id, - data_type_translation_gist_client_id=praat_type_gist.client_id, - data_type_translation_gist_object_id=praat_type_gist.object_id) - DBSession.add(praat_field) + # + # praat_field = Field(client_id=test_client.id, + # translation_gist_client_id=praat_gist.client_id, + # translation_gist_object_id=praat_gist.object_id, + # data_type_translation_gist_client_id=praat_type_gist.client_id, + # data_type_translation_gist_object_id=praat_type_gist.object_id) + # DBSession.add(praat_field) field_1 = DictionaryPerspectiveToField(client_id=test_client.id, parent=test_persp, @@ -567,6 +630,79 @@ def data_init(manager, accounts): for field in [field_1,field_2, field_3]: DBSession.add(field) + for group in base_groups: + if group.name == "Can edit dictionary status": + test_group = group + edit_role(test_dict, test_account.id, test_group.id, admin_account.id, dictionary_default=True) + + lex_entry_1 = create_lexicalentry([test_client.id, None], [test_persp.client_id, test_persp.object_id], + save_object=True) + lex_entry_2 = create_lexicalentry([test_client.id, None], [test_persp.client_id, test_persp.object_id], + save_object=True) + link_lex_entry_1 = create_lexicalentry([test_client.id, None], [test_persp_link.client_id, + test_persp_link.object_id], + save_object=True) + link_lex_entry_2 = create_lexicalentry([test_client.id, None], [test_persp_link.client_id, + test_persp_link.object_id], + save_object=True) + lex_entity_1 = create_entity(id=[test_client.id, None], parent_id=[lex_entry_1.client_id, + lex_entry_1.object_id], + additional_metadata=None, field_id=[word_field.client_id, + word_field.object_id], + self_id=None, link_id=None, + locale_id= locale_id, filename=None, content="lex entity 1", + registry=None, request=None, save_object=False) + + lex_entity_2 = create_entity(id=[test_client.id, None], parent_id=[lex_entry_2.client_id, + lex_entry_2.object_id], + additional_metadata=None, field_id=[word_field.client_id, + word_field.object_id], + self_id=None, link_id=None, + locale_id=locale_id, filename=None, content="lex entity 2", + registry=None, request=None, save_object=False) + + link_lex_entity_1 = create_entity(id=[test_client.id, None], parent_id=[link_lex_entry_1.client_id, + link_lex_entry_1.object_id], + additional_metadata=None, field_id=[word_field.client_id, + word_field.object_id], + self_id=None, link_id=None, + locale_id=locale_id, filename=None, content="link lex entity 1", + registry=None, request=None, save_object=False) + + link_lex_entity_2 = create_entity(id=[test_client.id, None], parent_id=[link_lex_entry_2.client_id, + link_lex_entry_2.object_id], + additional_metadata=None, field_id=[word_field.client_id, + word_field.object_id], + self_id=None, link_id=None, + locale_id=locale_id, filename=None, content="link lex entity 2", + registry=None, request=None, save_object=False) + + ''' + with open(os.path.dirname(__file__) + '/test_ids.txt', 'w', encoding='utf-8') as file: + file.write("Test ids: \n") + file.write("lex_entry 1: [%s, %s] \n" % (lex_entry_1.client_id, lex_entry_1.object_id)) + file.write("lex_entry 2: [%s, %s] \n" % (lex_entry_2.client_id, lex_entry_2.object_id)) + file.write("lex_link_entry 1: [%s, %s] \n" % (link_lex_entry_1.client_id, link_lex_entry_1.object_id)) + file.write("lex_link_entry 2: [%s, %s] \n" % (link_lex_entry_2.client_id, link_lex_entry_2.object_id)) + file.write("\n") + file.write("lex_entity_1: [%s, %s] \n" % (lex_entity_1.client_id, lex_entity_1.object_id)) + file.write("lex_entity_2: [%s, %s] \n" % (lex_entity_2.client_id, lex_entity_2.object_id)) + file.write("link_lex_entity_1: [%s, %s] \n" % (link_lex_entity_1.client_id, link_lex_entity_1.object_id)) + file.write("link_lex_entity_2: [%s, %s] \n" % (link_lex_entity_2.client_id, link_lex_entity_2.object_id)) + file.write("\n Field ids: \n") + file.write("Field: [%s, %s] \n" % (word_field.client_id, word_field.object_id)) + file.write("\n") + file.write("Test_dict: [%s, %s] \n" % (test_dict.client_id, test_dict.object_id)) + file.write("Test_persp: [%s, %s] \n" % (test_persp.client_id, test_persp.object_id)) + file.write("Test_persp_link: [%s, %s] \n" % (test_persp_link.client_id, test_persp_link.object_id)) + file.write("\n") + file.write("Word gist: [%s, %s] \n" % (word_gist.client_id, word_gist.object_id)) + file.write("\n") + file.write("Test gist: [%s, %s] \n" % (dict_name_gist.client_id, dict_name_gist.object_id)) + file.write("\n") + file.write("English atom: [%s, %s] \n" % (english_atom.client_id, english_atom.object_id)) + ''' + except Exception as e: import traceback print('couldn\'t create all test data') @@ -575,371 +711,6 @@ def data_init(manager, accounts): pass - # fake_dictionary = Dictionary(client_id=client.id, - # #object_id=1, - # translation_string="Fake dictionary", - # state="Service") - # DBSession.add(fake_dictionary) - # DBSession.flush() - # - # dialeqt_template = DictionaryPerspective(client_id=client.id, - # #object_id=1, - # parent_client_id=fake_dictionary.client_id, - # parent_object_id=fake_dictionary.object_id, - # is_template=True, - # state="Service", - # translation_string="Lingvodoc desktop version") - # DBSession.add(dialeqt_template) - # DBSession.flush() - # - # word_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # #object_id=1, - # client_id=client.id, - # entity_type="Word", data_type="text", level="leveloneentity", position=1, - # state="enabled") - # transcription_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # #object_id=2, - # client_id=client.id, - # entity_type="Transcription", data_type="text", - # level="leveloneentity", position=2, - # state="enabled") - # translation_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # #object_id=3, - # client_id=client.id, - # entity_type="Translation", - # data_type="text", level="leveloneentity", position=3, - # state="enabled") - # sound_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # #object_id=4, - # client_id=client.id, - # entity_type="Sound", data_type="sound", level="leveloneentity", position=4, - # state="enabled") - # for field in [word_ld, transcription_ld, translation_ld, sound_ld]: - # DBSession.add(field) - # DBSession.flush() - # praat_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # entity_object_id=sound_ld.object_id, entity_client_id=sound_ld.client_id, - # #object_id=5, - # client_id=client.id, - # entity_type="Praat markup", data_type="markup", level="leveltwoentity", position=5, - # state="enabled") - # paradigm_word_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # #object_id=6, - # client_id=client.id, - # entity_type="Paradigm word", data_type="text", level="leveloneentity", - # group="Paradigm", position=6, - # state="enabled") - # paradigm_transcription_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # #object_id=7, - # client_id=client.id, - # entity_type="Paradigm transcription", data_type="text", - # level="leveloneentity", - # group="Paradigm", - # position=7, - # state="enabled") - # paradigm_translation_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # #object_id=8, - # client_id=client.id, - # entity_type="Paradigm translation", data_type="text", - # group="Paradigm", - # level="leveloneentity", position=8, - # state="enabled") - # paradigm_sound_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # #object_id=9, - # client_id=client.id, - # group="Paradigm", - # entity_type="Paradigm sound", data_type="sound", level="leveloneentity", - # position=9, - # state="enabled") - # for field in [praat_ld, paradigm_word_ld, paradigm_transcription_ld, - # paradigm_translation_ld, paradigm_sound_ld]: - # DBSession.add(field) - # DBSession.flush() - # paradigm_praat_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # entity_object_id=paradigm_sound_ld.object_id, entity_client_id=paradigm_sound_ld.client_id, - # #object_id=10, - # client_id=client.id, - # group="Paradigm", - # entity_type="Paradigm Praat markup", data_type="markup", - # level="leveltwoentity", position=10, - # state="enabled") - # etymology_ld = DictionaryPerspectiveField(parent_object_id=dialeqt_template.object_id, parent_client_id=dialeqt_template.client_id, - # #object_id=11, - # client_id=client.id, - # entity_type="Etymology", data_type="grouping_tag", level="groupingentity", - # position=11, - # state="enabled") - # for field in [paradigm_praat_ld, etymology_ld]: - # DBSession.add(field) - # - # regular_dictionary_template = DictionaryPerspective(client_id=client.id, - # #object_id=1, - # parent_client_id=fake_dictionary.client_id, - # parent_object_id=fake_dictionary.object_id, - # is_template=True, - # state="Service", - # translation_string="Regular dictionary") - # DBSession.add(regular_dictionary_template) - # DBSession.flush() - # - # protoform_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=1, - # entity_type="Protoform" - # ) - # word_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=2, - # entity_type="Word" - # ) - # transcription_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=3, - # entity_type="Transcription" - # ) - # duration_1_vowel_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=4, - # entity_type="Duration 1 vowel" - # ) - # - # intensity_1_vowel_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=5, - # entity_type="Intensity 1 vowel" - # ) - # native_speaker_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=6, - # entity_type="Native speaker" - # ) - # dialect_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=1, - # entity_type="Dialect" - # ) - # translation_ld_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=7, - # entity_type="Translation" - # ) - # grammatical_form_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=8, - # entity_type="Grammatical form" - # ) - # it_is_formed_from_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=9, - # entity_type="It is formed from" - # ) - # similarity_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=10, - # entity_type="Similarity" - # ) - # the_page_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=11, - # entity_type="the Page" - # ) - # the_line_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=12, - # entity_type="the Line" - # ) - # the_head_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=13, - # entity_type="the Head" - # ) - # the_verse_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=14, - # entity_type="the Verse" - # ) - # notes_ordinary = DictionaryPerspectiveField(parent_client_id=regular_dictionary_template.client_id, - # parent_object_id=regular_dictionary_template.object_id, - # client_id=client.id, - # data_type="text", - # level='leveloneentity', - # state="enabled", - # position=15, - # entity_type="Notes" - # ) - # for field in [protoform_ordinary, word_ordinary, transcription_ordinary, duration_1_vowel_ordinary, intensity_1_vowel_ordinary, - # native_speaker_ordinary, dialect_ordinary, translation_ld_ordinary, grammatical_form_ordinary, - # it_is_formed_from_ordinary, similarity_ordinary, the_page_ordinary, the_line_ordinary, - # the_head_ordinary, the_verse_ordinary, notes_ordinary]: - # DBSession.add(field) - # - # - # morphodict = DictionaryPerspective(client_id=client.id, - # parent_client_id=fake_dictionary.client_id, - # parent_object_id=fake_dictionary.object_id, - # is_template=True, - # state="Service", - # translation_string="Morhological dictionary") - # DBSession.add(morphodict) - # DBSession.flush() - # - # morph_cate = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=0, - # entity_type="Grammatical category") - # - # form_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=1, - # entity_type="Form") - # transcription_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=2, - # entity_type="Transcription") - # variants_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=3, - # entity_type="Variants") - # native_speaker_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=4, - # entity_type="Native speaker") - # text_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=5, - # entity_type="Text") - # dialect_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=6, - # entity_type="Dialect") - # in_combination_with_cat_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=7, - # entity_type="in combination with categories") - # frequency_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=8, - # entity_type="Frequency") - # number_of_an_affix_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=9, - # entity_type="Number of an affix") - # the_page_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=10, - # entity_type="the Page") - # the_line_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=11, - # entity_type="the Line") - # notes_morph = DictionaryPerspectiveField(parent_client_id=morphodict.client_id, - # parent_object_id=morphodict.object_id, - # client_id=client.id, - # data_type="text", level="leveloneentity", - # state='enabled', - # position=12, - # entity_type="Notes") - # - # for field in [morph_cate, form_morph, transcription_morph, variants_morph, native_speaker_morph, text_morph, - # dialect_morph, in_combination_with_cat_morph, frequency_morph, number_of_an_affix_morph, - # the_page_morph, the_line_morph, notes_morph]: - # DBSession.add(field) def main(argv=sys.argv): @@ -955,4 +726,13 @@ def main(argv=sys.argv): DBSession.configure(bind=engine) # Base.metadata.create_all(engine) # with transaction.manager: - data_init(transaction.manager, accounts) + # alembic_ini_path = os.path.join( + # os.path.dirname(__file__), 'alembic.ini') + # parser = ConfigParser() + # parser.read(alembic_ini_path) + # alembic_conf = dict() + # for k, v in parser.items('alembic'): + # alembic_conf[k] = v + #dbname = alembic_conf['sqlalchemy.url'] + dbname = 'postgresql+psycopg2://postgres:@/test_base_1' + data_init(transaction.manager, accounts, dbname) diff --git a/lingvodoc/scripts/translations_base.json b/lingvodoc/scripts/translations_base.json index 8f8c74158..6cc219929 100644 --- a/lingvodoc/scripts/translations_base.json +++ b/lingvodoc/scripts/translations_base.json @@ -1,1376 +1,280 @@ { - "": { - "type": "Field", - "1": "" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043a\u043e\u043d\u0434\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u043c\u0430\u043d\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043a\u043e\u043d\u0434\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u043c\u0430\u043d\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Konda Dialekt vom Wogulischen", - "2": "Dictionary of Konda dialect of Mansi" - }, - "Paradigm Praat markup": { - "type": "Field", - "1": "\u0420\u0430\u0437\u043c\u0435\u0442\u043a\u0430 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u044b", - "3": "Spektrogrammen im Paradigma", - "2": "Spectrograms of Paradigmatic forms" - }, - "\u041d\u0430\u0440\u044b\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041d\u0430\u0440\u044b\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Narym Dialekt", - "2": "Narym dialect" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043a\u0438 1-2 - \u041c\u0430\u0440\u0438\u044f": { - "type": "Dictionary", - "1": "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043a\u0438 1-2 - \u041c\u0430\u0440\u0438\u044f" - }, - "Paradigm word": { - "type": "Field", - "1": "\u0421\u043b\u043e\u0432\u043e \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u044b", - "3": "Wort im Paradigma", - "2": "Word of Paradigmatic forms" - }, - "French language": { - "type": "Language", - "1": "\u0424\u0440\u0430\u043d\u0446\u0443\u0437\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Franz\u00f6sisch Sprache", - "2": "French language" - }, - "\u0420\u041d\u0424 \u2116 15-18-00044 \u00ab\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0430\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043d\u0430\u0440\u043e\u0434\u043e\u0432 \u043c\u0438\u0440\u0430. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0439 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u0438\u0445 \u0438 \u0443\u0440\u0430\u043b\u044c\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0433\u0440\u0430\u043d\u0438 \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u044f\u00bb, 2015-2017 (\u0440\u0443\u043a. \u0412.\u041c.\u0410\u043b\u043f\u0430\u0442\u043e\u0432)": { - "type": "Service", - "1": "\u0420\u041d\u0424 \u2116 15-18-00044 \u00ab\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0430\u043b\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043d\u0430\u0440\u043e\u0434\u043e\u0432 \u043c\u0438\u0440\u0430. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0439 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u0438\u0445 \u0438 \u0443\u0440\u0430\u043b\u044c\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u0420\u043e\u0441\u0441\u0438\u0438, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u0433\u0440\u0430\u043d\u0438 \u0438\u0441\u0447\u0435\u0437\u043d\u043e\u0432\u0435\u043d\u0438\u044f\u00bb, 2015-2017 (\u0440\u0443\u043a. \u0412.\u041c.\u0410\u043b\u043f\u0430\u0442\u043e\u0432)", - "3": "RNF \u2116 15-18-00044 \u00abInformationssystem f\u00fcr die Beschreibung von den Minderheitensprachen der Welt. Die Beschreibungen von den uralischen und altaischen Sprachen vom Russland \", 2015-2017 (Projektleiter V.M.Alpatov)", - "2": "RNF \u2116 15-18-00044 \"Information system for description of minority languages of the world. Development of descriptions for endangered Altaic and Uralic languages of Russia\", 2015-2017 (head V.M.Alpatov)" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 1 - \u041c\u0430\u0440\u0438\u043d\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 1, \u041c\u0430\u0440\u0438\u043d\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 1, Marina)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 1, Marina)" - }, - "Word": { - "type": "Field", - "1": "\u0421\u043b\u043e\u0432\u043e", - "3": "Wort", - "2": "Word" - }, - "\u042d\u043d\u0435\u0446\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u042d\u043d\u0435\u0446\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Enzische Sprache", - "2": "Enets language" - }, - "\u0427\u0430\u043b\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0427\u0430\u043b\u043a\u0430\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Chelkan Dialekt", - "2": "Chalkan dialect" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u0430\u043b\u044b\u043c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0445\u0430\u043d\u0442\u044b\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u0430\u043b\u044b\u043c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0445\u0430\u043d\u0442\u044b\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Salym Dialekt vom Ostjakischen", - "2": "Dictionary of Salym Khanty language dialect" - }, - "Create dictionary...": { - "type": "Service", - "1": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u044c...", - "3": "Create W\u00f6rterbuch...", - "2": "Create dictionary..." - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u043e\u0433\u043e \u0438\u0434\u0438\u043e\u043c\u0430, \u0433\u043e\u0432\u043e\u0440 \u043d\u043f \u0419\u043e\u0433\u0430\u0447": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u043e\u0433\u043e \u0438\u0434\u0438\u043e\u043c\u0430, \u0433\u043e\u0432\u043e\u0440 \u043d\u043f \u0419\u043e\u0433\u0430\u0447", - "3": "W\u00f6rterbuch vom Tubalar Dialekt (Dorf Jogatsch)", - "2": "Dictionary of Tubalar (Yogach)" - }, - "Variants": { - "type": "Field", - "1": "\u0412\u0430\u0440\u0438\u0430\u043d\u0442\u044b", - "2": "Variants" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0433\u044b\u0434\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0442\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u043d\u0435\u043d\u0435\u0446\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0433\u044b\u0434\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0442\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u043d\u0435\u043d\u0435\u0446\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch von Gydan Dialekt vom Tundra Nenzischen", - "2": "Dictionary of Gydan dialect" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 2 - \u0418\u043d\u0433\u0430 \u0421\u044b\u0440\u0431\u0430\u0433\u0430\u043d\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 2, \u0418\u043d\u0433\u0430 \u0421\u044b\u0440\u0431\u0430\u0433\u0430\u043d\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, Liste 2, Inga Syrbaganova)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 2, Inga Syrbaganova)" - }, - "markup": { - "type": "Service", - "1": "\u0437\u0432\u0443\u043a" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043c\u0430\u043b\u043e\u043a\u0430\u0440\u0430\u0447\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0447\u0443\u0432\u0430\u0448\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043c\u0430\u043b\u043e\u043a\u0430\u0440\u0430\u0447\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0447\u0443\u0432\u0430\u0448\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Malokarach Dialekt vom Tschuwasischen", - "2": "Dictionary of malokarach dialect of Chuvash" - }, - "\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u043e \u0432\u0441\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439, \u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043a \u0441\u043b\u043e\u0432\u0430\u0440\u044f\u043c, \u043f\u043e\u0438\u0441\u043a\u0443 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0433\u0435\u043e\u043b\u043e\u043a\u0430\u0446\u0438\u0439, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0438\u0437 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438/\u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.": { - "type": "Service", - "1": "\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435! \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a\u043e \u0432\u0441\u0435\u043c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u044b (\u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u043d\u043e\u043c\u0443 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e \u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439, \u0438\u0445 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438, \u043f\u0440\u0438\u0432\u044f\u0437\u043a\u0438 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u043a \u0441\u043b\u043e\u0432\u0430\u0440\u044f\u043c, \u043f\u043e\u0438\u0441\u043a\u0443 \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0433\u0435\u043e\u043b\u043e\u043a\u0430\u0446\u0438\u0439, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0438\u0437 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b) \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u0432\u043e\u0439\u0442\u0438 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443. \u041a\u043d\u043e\u043f\u043a\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438/\u0432\u0445\u043e\u0434\u0430 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u043f\u0440\u0430\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.", - "3": "Achtung! Um alle Funktionen des Systems zu benutzen (die gemeinsame Erstellung und Bearbeitung von W\u00f6rterb\u00fcchern, die W\u00f6rterb\u00fccherver\u00f6ffentlichung, die Metadaten von W\u00f6rterb\u00fccher Zusammenlegung, die Suche vom geographischen Standort, das Herunterladen von den W\u00f6rterb\u00fccher aus der Desktop-Version), m\u00fcssen Sie sich registrieren und einloggen. Die Anmeldung / Login ist in der oberen rechten Ecke der Seite.", - "2": "Attention! To access all capability of the system (including the creation and editing of dictionaries, their publication, binding metadata dictionaries, search based on geolocation, download dictionaries from the desktop version), you must register and log in. The registration / login there is in the upper right corner of the page." - }, - "the Verse": { - "type": "Field", - "1": "\u0421\u0442\u0438\u0445", - "2": "the Verse" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 2 - \u041c\u0430\u0440\u0438\u044f": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 2, \u041c\u0430\u0440\u0438\u044f)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, Liste 2, Maria)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 2, Maria)" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 2 - \u0417\u0438\u043d\u0430\u0438\u0434\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 2, \u0417\u0438\u043d\u0430\u0438\u0434\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, Liste 2, Zinaida)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 2, Zinaida)" - }, - "\u042d\u0432\u0435\u043d\u043a\u0438\u0439\u0441\u043a\u0438\u0439": { - "type": "Language", - "1": "\u042d\u0432\u0435\u043d\u043a\u0438\u0439\u0441\u043a\u0438\u0439", - "3": "Ewenk", - "2": "Evenki" - }, - "in combination with categories": { - "type": "Field", - "1": "\u0412\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f\u043c\u0438", - "2": "in combination with categories" - }, - "Nganasan": { - "type": "Perspective", - "1": "Nganasan" - }, - "\u041a\u043e\u043c\u0438-\u0417\u044b\u0440\u044f\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u041a\u043e\u043c\u0438-\u0417\u044b\u0440\u044f\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Komi-Syrj\u00e4nische Sprache", - "2": "Komi-Zyrian language" - }, - "\u0421\u0435\u043b\u043e \u0411\u0435\u043b\u043e\u044f\u0440\u0441\u043a \u041f\u0440\u0438\u0443\u0440\u0430\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u042f\u041d\u0410\u041e": { - "type": "Dictionary", - "1": "\u0421\u0435\u043b\u043e \u0411\u0435\u043b\u043e\u044f\u0440\u0441\u043a \u041f\u0440\u0438\u0443\u0440\u0430\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u042f\u041d\u0410\u041e", - "3": "Das Dorf Beloyarsk Bezirk Priuralsky JANAO", - "2": "The village Beloyarsk district Priuralsky YaNAO" - }, - "\u0420\u0443\u0441\u0441\u043a\u043e-\u043e\u0441\u0442\u044f\u0446\u043a\u043e-\u0441\u0430\u043c\u043e\u0435\u0434\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, 1910": { - "type": "Dictionary", - "1": "\u0420\u0443\u0441\u0441\u043a\u043e-\u043e\u0441\u0442\u044f\u0446\u043a\u043e-\u0441\u0430\u043c\u043e\u0435\u0434\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, 1910", - "3": "Russisch-Ostyak-Samojedischen W\u00f6rterbuch 1910", - "2": "Russian-Ostyak-Dictionary of Samoyed 1910." - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043d\u0430\u0440\u044b\u043c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u043b\u0435\u043a\u0442\u0430 \u0441\u0435\u043b\u044c\u043a\u0443\u043f\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043d\u0430\u0440\u044b\u043c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u043b\u0435\u043a\u0442\u0430 \u0441\u0435\u043b\u044c\u043a\u0443\u043f\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Narym Dialekt vom Selkupischen", - "2": "Dictionary of Narym dialect of Selkup" - }, - "\u041a\u0435\u0442\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041a\u0435\u0442\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Ket Dialekt", - "2": "Ket dialect" - }, - "\u0421\u0440\u0435\u0434\u043d\u0435\u043e\u0431\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0421\u0440\u0435\u0434\u043d\u0435\u043e\u0431\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Ob Dialekt", - "2": "Middle-Ob dialect" - }, - "\u041d\u0438\u0437\u044f\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041d\u0438\u0437\u044f\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Nizyam Dialekt", - "2": "Nizyam dialect" - }, - "grouping_tag": { - "type": "Service", - "1": "grouping_tag" - }, - "Avaliable dictionaries": { - "type": "Service", - "1": "\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u0438", - "3": "erh\u00e4ltlich W\u00f6rterb\u00fccher", - "2": "Available dictionaries" - }, - "Languages": { - "type": "Service", - "1": "\u042f\u0437\u044b\u043a\u0438", - "3": "Sprachen", - "2": "Languages" - }, - "\u041d\u0433\u0430\u043d\u0430\u0441\u0430\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a 28.12": { - "type": "Perspective", - "1": "\u041d\u0433\u0430\u043d\u0430\u0441\u0430\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a 28.12", - "3": "Nganasanische Sprache 28.12", - "2": "Nganasan language 28.12" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 1 - \u041c\u0430\u0440\u0438\u044f": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 1, \u041c\u0430\u0440\u0438\u044f)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 1, Maria)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 1, Maria)" - }, - "\u0410\u043b\u0442\u0430\u0439-\u043a\u0438\u0436\u0438 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0410\u043b\u0442\u0430\u0439-\u043a\u0438\u0436\u0438 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Altai-Kischi Dialekt", - "2": "Altai-Kizhi dialect" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u041c\u0430\u0440\u0438\u044f": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u041c\u0430\u0440\u0438\u044f)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Maria)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, Maria)" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043a \u0415\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u044e \u0413\u0435\u043d\u0435\u0442\u0446\u0430 1878": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043a \u0415\u0432\u0430\u043d\u0433\u0435\u043b\u0438\u044e \u0413\u0435\u043d\u0435\u0442\u0446\u0430 1878", - "3": "W\u00f6rterbuch des Evangeliums von [Genetz 1878]", - "2": "Dictionary of the Evangelium [Genetz 1878]" - }, - "\u0411\u0435\u0441\u0435\u0440\u043c\u044f\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0411\u0435\u0441\u0435\u0440\u043c\u044f\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Bessermenen Dialekt", - "2": "Besermyan dialect" - }, - "\u044f\u0433\u043d\u0446\u0443 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0410\u043a\u0441\u0443\u043a\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430" - }, - "\u0412\u0435\u0440\u0445\u043d\u0435-\u043f\u0435\u043b\u044b\u043c\u0441\u043a\u0438\u0439 (\u0437\u0430\u043f\u0430\u0434\u043d\u044b\u0439) \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0412\u0435\u0440\u0445\u043d\u0435-\u043f\u0435\u043b\u044b\u043c\u0441\u043a\u0438\u0439 (\u0437\u0430\u043f\u0430\u0434\u043d\u044b\u0439) \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Ob Pelym (Western) Dialekt", - "2": "Upper Pelym (Western) dialect" - }, - "\u041d\u0430\u0447\u0430\u0442\u043a\u0438 \u0445\u0440\u0438\u0441\u0442\u0438\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0435\u043d\u0438\u044f (Mari 1841)": { - "type": "Dictionary", - "2": "\u041d\u0430\u0447\u0430\u0442\u043a\u0438 \u0445\u0440\u0438\u0441\u0442\u0438\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0435\u043d\u0438\u044f (Mari 1841)" - }, - "Russian language": { - "type": "Language", - "1": "\u0420\u0443\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Russische Sprache", - "2": "Russian language" - }, - "\u0413\u043e\u0440\u043d\u043e-\u0410\u043b\u0442\u0430\u0439\u0441\u043a - \u041d\u0430\u0434\u044f": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0430\u043b\u0442\u0430\u0439-\u043a\u0438\u0436\u0438 \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433. \u0413\u043e\u0440\u043d\u043e-\u0410\u043b\u0442\u0430\u0439\u0441\u043a, \u041d\u0430\u0434\u044f)", - "3": "W\u00f6rterbuch vom Altai Kischi Dialekt des Altai-Sprache (Gorno-Altaisk, Nagy)", - "2": "Dictionary of Altai Kizhi dialect of the Altai language (Gorno-Altaisk, Nagy)" - }, - "\u042d\u0432\u0435\u043d\u043a\u0438\u0439\u0441\u043a\u0438\u0439, \u0422\u0443\u0442\u043e\u043d\u0447\u0430\u043d\u044b 2008, \u041a. \u0414. \u0425\u0443\u0442\u043e\u043a\u043e\u0433\u0438\u0440": { - "type": "Dictionary", - "1": "\u042d\u0432\u0435\u043d\u043a\u0438\u0439\u0441\u043a\u0438\u0439, \u0422\u0443\u0442\u043e\u043d\u0447\u0430\u043d\u044b 2008, \u041a. \u0414. \u0425\u0443\u0442\u043e\u043a\u043e\u0433\u0438\u0440", - "3": "Ewenk, Tutonchana 2008 KD Hutokogir", - "2": "Evenki, Tutonchana 2008, (K.D. Hutokogir)" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u0440\u0435\u0434\u0438\u043d\u043d\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0430 \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u0440\u0435\u0434\u0438\u043d\u043d\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0430 \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0434. \u0412\u044b\u043b\u044b\u043d\u0433\u0443\u0440\u0442 \u0421\u044e\u043c\u0441\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0423\u0420)", - "3": "W\u00f6rterbuch vom Mittlere Dialekt der Udmurtischen Sprache (Dorf Vylyngurt)", - "2": "Dictionary of middle dialect of the Udmurt language (village Vylyngurt Syumsinsky District)" - }, - "\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b": { - "type": "Service", - "1": "\u041a\u043e\u043d\u0442\u0430\u043a\u0442\u044b", - "3": "Kontakte", - "2": "Contacts" - }, - "\u0421\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u043d\u0430\u0440\u0435\u0447\u0438\u0435": { - "type": "Language", - "1": "\u0421\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u043d\u0430\u0440\u0435\u0447\u0438\u0435", - "3": "Nordlische Dialekt", - "2": "Northern dialect" - }, - "Create dictionary": { - "type": "Service", - "1": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u044c", - "3": "Create W\u00f6rterbuch", - "2": "Create dictionary" - }, - "\u0421\u0440\u0435\u0434\u0438\u043d\u043d\u044b\u0439 \u0433\u043e\u0432\u043e\u0440": { - "type": "Language", - "1": "\u0421\u0440\u0435\u0434\u0438\u043d\u043d\u044b\u0439 \u0433\u043e\u0432\u043e\u0440", - "3": "Mittlere Dialekt", - "2": "Middle dialect" - }, - "\u0410\u043b\u0442\u0430\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0410\u043b\u0442\u0430\u0439\u0441\u043a\u0438\u0439", - "3": "Altaische Sprache", - "2": "Altai language" - }, - "\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u043e\u0431\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u043c\u0430\u043d\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u043e\u0431\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u043c\u0430\u043d\u0441\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Ob Dialekt vom Wogulischen", - "2": "Dictionary of Middle-Ob dialect Mansi" - }, - "\u0422\u0443\u043d\u0434\u0440\u043e\u0432\u044b\u0439 \u044d\u043d\u0435\u0446\u043a\u0438\u0439": { - "type": "Dictionary", - "1": "\u0422\u0443\u043d\u0434\u0440\u043e\u0432\u044b\u0439 \u044d\u043d\u0435\u0446\u043a\u0438\u0439", - "3": "Tundra Enets Sprache", - "2": "Tundra Enets language" - }, - "\u0420\u0413\u041d\u0424 \u2116 14-04-12019 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0441\u0430\u043c\u043e\u0434\u0438\u0439\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u00bb, 2014-2016 (\u0440\u0443\u043a.\u042e.\u0412.\u041d\u043e\u0440\u043c\u0430\u043d\u0441\u043a\u0430\u044f)": { - "type": "Service", - "1": "\u0420\u0413\u041d\u0424 \u2116 14-04-12019 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0445 \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0441\u0430\u043c\u043e\u0434\u0438\u0439\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u00bb, 2014-2016 (\u0440\u0443\u043a.\u042e.\u0412.\u041d\u043e\u0440\u043c\u0430\u043d\u0441\u043a\u0430\u044f)", - "3": "RFH \u211614-04-12019 \"Erstellen von Multimedia-W\u00f6rterb\u00fccher Samojeden Sprachen\", 2014-2016 (Projektleiter Ju.V. Normanskaja)", - "2": "RFH \u211614-04-12019 \"Creating multimedia dictionaries Samoyed languages\", 2014-2016 (head Ju.V. Normanskaja)" - }, - "Notes": { - "type": "Field", - "1": "\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u044f", - "2": "Notes" - }, - "\u041a\u044b\u0437\u044b\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041a\u044b\u0437\u044b\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442" - }, - "\u041a\u0438\u043b\u044c\u0434\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 (\u0432\u043e\u0440\u043e\u043d\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440) \u0441\u0430\u0430\u043c\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u041a\u0438\u043b\u044c\u0434\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 (\u0432\u043e\u0440\u043e\u043d\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440) \u0441\u0430\u0430\u043c\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "Kildin Dialekt (Dorf Voronino) Lappische", - "2": "Kildin dialect (village Voronino) Saami language" - }, - "\u0414\u0436\u0430\u043c\u0431\u0443\u043b\u044c\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0414\u0436\u0430\u043c\u0431\u0443\u043b\u044c\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 4 - \u0420\u0430\u0438\u0441\u0430 \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432\u043d\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 4, \u0420\u0430\u0438\u0441\u0430 \u0412\u0430\u0441\u0438\u043b\u044c\u0435\u0432\u043d\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 4, Raisa)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 4, Raisa)" - }, - "\u0412\u043e\u043b\u0436\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u043c\u0430\u0440\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0412\u043e\u043b\u0436\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u043c\u0430\u0440\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 5 - \u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0430 \u0422\u0430\u043d\u0442\u044b\u0435\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 5, \u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0430 \u0422\u0430\u043d\u0442\u044b\u0435\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 5, Catherine Tantyeva)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 5, Catherine Tantyeva)" - }, - "Paradigm transcription": { - "type": "Field", - "1": "\u0422\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0446\u0438\u044f \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u044b", - "3": "Transkription im Paradigma", - "2": "Transcription of Paradigmatic forms" - }, - "\u0422\u0440\u043e\u0448\u043a\u0438\u043d\u043e - \u042e\u0440\u0438\u0439 \u0418\u0433\u043d\u0430\u0442\u044c\u0435\u0432\u0438\u0447": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043a\u0430\u0447\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0445\u0430\u043a\u0430\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0422\u0440\u043e\u0448\u043a\u0438\u043d\u043e, \u042e. \u0418. \u0422\u0440\u043e\u0448\u043a\u0438\u043d)" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0431\u0430\u0432\u043b\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0430 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u043e-\u044e\u0436\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0431\u0430\u0432\u043b\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0433\u043e\u0432\u043e\u0440\u0430 \u043f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u043e-\u044e\u0436\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch von Bavly Dialekt der Udmurtischen Sprache", - "2": "Dictionary of Bavly dialect of the southern dialect of the Udmurt language" - }, - "\u041a\u044b\u0437\u044b\u043b-\u043e\u0440\u0434\u044b\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u041a\u044b\u0437\u044b\u043b\u043e\u0440\u0434\u044b\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430" - }, - "\u0421\u0435\u043c\u0438\u043f\u0430\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u0435\u043c\u0438\u043f\u0430\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430" - }, - "\u0421\u0440\u0435\u0434\u043d\u0435\u0447\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0421\u0440\u0435\u0434\u043d\u0435\u0447\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a (\u0411\u0443\u0434\u0435\u0435\u0432, \u0411\u0443\u0434\u0435\u0435\u0432\u0430, \u0422\u0430\u043c\u044b\u0447\u0435\u0432\u0430, \u0422\u0430\u0442\u044b\u043d\u043a\u0438\u043d\u0430)", - "3": "Mittlere Tschulym Sprache (Budeev, Budeeva, Tamycheva, Tatynkina)", - "2": "Middle-Chulym language (Budeev, Budeeva, Tamycheva, Tatynkina)" - }, - "\u041d\u0430\u0440\u044b\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u0441\u0435\u043b\u044c\u043a\u0443\u043f\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u043f\u043e\u043b\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f - \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435)": { - "type": "Dictionary", - "1": "\u041d\u0430\u0440\u044b\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u0441\u0435\u043b\u044c\u043a\u0443\u043f\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u043f\u043e\u043b\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f - \u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435)", - "3": "Narym Dialekt vom Selkupischen", - "2": "Narym dialect of Selkup" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0431\u0435\u0441\u0435\u0440\u043c\u044f\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0433\u043e\u0432\u043e\u0440 \u0434. \u0428\u0430\u043c\u0430\u0440\u0434\u0430\u043d": { - "type": "Dictionary", - "1": "\u0423\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u0431\u0435\u0441\u0435\u0440\u043c\u044f\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442, \u0433\u043e\u0432\u043e\u0440 \u0434. \u0428\u0430\u043c\u0430\u0440\u0434\u0430\u043d", - "3": "Wotjakische Sprache, Bessermen Dialekt", - "2": "Besermyan dialect of Udmurt language" - }, - "\u0423\u0439\u0433\u0443\u0440\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0423\u0439\u0433\u0443\u0440\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Uigur Sprache", - "2": "Ujguri language" - }, - "My dictionaries": { - "type": "Service", - "1": "\u041c\u043e\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0438", - "3": "Meine W\u00f6rterb\u00fccher", - "2": "My dictionaries" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043d\u0433\u0430\u043d\u0430\u0441\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043d\u0433\u0430\u043d\u0430\u0441\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Nganasanischen", - "2": "Dictionary of Nganasan language" - }, - "text": { - "type": "Service", - "1": "Текст", - "2": "Text", - "3": "Text" - }, - "N\u0430\u043b\u0434\u044b-\u043a\u0443\u0440\u0433\u0430\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430,": { - "type": "Dictionary", - "1": "\u0422\u0430\u043b\u0434\u044b\u043a\u043e\u0440\u0433\u0430\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440 \u043a\u0430\u0437\u0430\u0445\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430," - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 4 - \u0427\u043e\u043a\u0443\u0440\u0431\u0430\u0448\u0435\u0432": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 4, \u0427\u043e\u043a\u0443\u0440\u0431\u0430\u0448\u0435\u0432)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 4, Chokurbashev)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 4, Chokurbashev)" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0417. \u0418. \u0422\u043e\u0439\u0434\u043e\u043d\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0417. \u0418. \u0422\u043e\u0439\u0434\u043e\u043d\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, ZI Toydonova)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, ZI Toydonova)" - }, - "\u0433\u043e\u0432\u043e\u0440 \u0434\u0435\u0440\u0435\u0432\u043d\u0438 \u0428\u0430\u043c\u0430\u0440\u0434\u0430\u043d": { - "type": "Language", - "1": "\u0433\u043e\u0432\u043e\u0440 \u0434\u0435\u0440\u0435\u0432\u043d\u0438 \u0428\u0430\u043c\u0430\u0440\u0434\u0430\u043d", - "3": "(Dorf Shamardan)", - "2": "(village Shamardan)" - }, - "\u0425\u0430\u043a\u0430\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0425\u0430\u043a\u0430\u0441\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a" - }, - "Similarity": { - "type": "Field", - "1": "\u0421\u0445\u043e\u0434\u0441\u0442\u0432\u043e", - "2": "Similarity" - }, - "Paradigm": { - "type": "Field", - "1": "\u041f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0430", - "3": "Paradigma", - "2": "Paradigmatic forms" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0431\u0435\u0441\u0435\u0440\u043c\u044f\u043d\u0441\u043a\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0431\u0435\u0441\u0435\u0440\u043c\u044f\u043d\u0441\u043a\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0434. \u0412\u043e\u0440\u0446\u0430 \u042f\u0440\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0423\u0420)", - "3": "W\u00f6rterbuch vom Bessermen Dialekt der Udmurtischen Sprache (Dorf Vortsa)", - "2": "Dictionary of Besermyan dialect of Udmurt language (village Vortsa Yar district)" - }, - "\u0412\u0435\u0440\u0445\u043d\u0435-\u043f\u0435\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u0432\u043e\u0433\u0443\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, 1905": { - "type": "Dictionary", - "1": "\u0412\u0435\u0440\u0445\u043d\u0435-\u043f\u0435\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u0432\u043e\u0433\u0443\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, 1905", - "3": "Ob Pelym Wogul W\u00f6rterbuch 1905", - "2": "Upper Pelym Wogul Dictionary of 1905" - }, - "\u0420\u0443\u0441\u0441\u043a\u043e-\u041e\u0441\u0442\u044f\u0446\u043a\u043e-\u0421\u0430\u043c\u043e\u0435\u0434\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c (\u043d\u0435\u043d\u0435\u0446\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u0410.\u0410.\u0414\u0443\u043d\u0438\u043d-\u0413\u043e\u0440\u043a\u0430\u0432\u0438\u0447), 1910": { - "type": "Perspective", - "1": "\u0420\u0443\u0441\u0441\u043a\u043e-\u041e\u0441\u0442\u044f\u0446\u043a\u043e-\u0421\u0430\u043c\u043e\u0435\u0434\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c (\u043d\u0435\u043d\u0435\u0446\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u0410.\u0410.\u0414\u0443\u043d\u0438\u043d-\u0413\u043e\u0440\u043a\u0430\u0432\u0438\u0447), 1910", - "3": "Russisch-Ostyak-Samojedischen W\u00f6rterbuch (Nenzischen W\u00f6rterbuch von A.A.Dunin-Gorkavich, 1910)", - "2": "Russian-Ostyak-Dictionary of Samoyed (Nenets Dictionary of A.A.Dunin-Gorkavich) 1910." - }, - "Transcription": { - "type": "Field", - "1": "\u0422\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0446\u0438\u044f", - "3": "Transkription", - "2": "Transcription" - }, - "\u0414\u0436\u0430\u043c\u0431\u0443\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Dictionary", - "1": "\u0414\u0436\u0430\u043c\u0431\u0443\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 4 - \u041c\u0430\u0440\u0438\u044f \u0418\u0432\u0430\u043d\u043e\u0432\u043d\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 4, \u041c\u0430\u0440\u0438\u044f \u0418\u0432\u0430\u043d\u043e\u0432\u043d\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 4, Maria Iwanowna)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 4, Maria Ivanovna)" - }, - "\u0427\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u043e\u0442 \u0412.\u041c. \u0413\u0430\u0431\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u0440\u0435\u0434\u043d\u0435\u0447\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a (\u0442\u0443\u0442\u0430\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442, \u0412.\u041c. \u0413\u0430\u0431\u043e\u0432)", - "3": "Mittlere Tschulym Sprache (Dialekt vom Tutal, V.M. Gabov)", - "2": "Middle-Chulym language (Tutal dialect, V.M. Gabov)" - }, - "\u041d\u0433\u0430\u043d\u0430\u0441\u0430\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u041d\u0433\u0430\u043d\u0430\u0441\u0430\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Nganasanische Sprache", - "2": "Nganasan language" - }, - "\u0421\u0435\u043c\u0438\u043f\u0430\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Dictionary", - "1": "\u0421\u0435\u043c\u0438\u043f\u0430\u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442" - }, - "\u041f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u043e-\u044e\u0436\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041f\u0435\u0440\u0438\u0444\u0435\u0440\u0438\u0439\u043d\u043e-\u044e\u0436\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "S\u00fcdliche Dialekt", - "2": "Peripheral southern dialect" - }, - "the Head": { - "type": "Field", - "1": "\u0413\u043b\u0430\u0432\u0430", - "2": "the Head" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 1 - \u0410\u043b\u0435\u043d\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 1, \u0410\u043b\u0435\u043d\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 1, Alain)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 1, Alain)" - }, - "Sound": { - "type": "Field", - "1": "\u0417\u0432\u0443\u043a", - "3": "Audio", - "2": "Sound" - }, - "\u0422\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0422\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Tubalar Dialekt", - "2": "Tubalars dialect" - }, - "Maps search": { - "type": "Service", - "1": "\u041f\u043e\u0438\u0441\u043a \u043f\u043e \u043a\u0430\u0440\u0442\u0430\u043c", - "3": "Karten Suche", - "2": "Maps search" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0447\u0430\u043b\u043a\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0434. \u0421\u0443\u0440\u0430\u043d\u0430\u0448 \u0422\u0443\u0440\u0430\u0447\u0430\u043a\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0410\u043b\u0442\u0430\u0439)": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0447\u0430\u043b\u043a\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0434. \u0421\u0443\u0440\u0430\u043d\u0430\u0448 \u0422\u0443\u0440\u0430\u0447\u0430\u043a\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0420\u0435\u0441\u043f\u0443\u0431\u043b\u0438\u043a\u0438 \u0410\u043b\u0442\u0430\u0439)", - "3": "W\u00f6rterbuch vom TschalkanischenChalkan Sprache (Dorf Suranasch)", - "2": "Dictionary of Chalkan language (village Suranash)" - }, - "\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u0438": { - "type": "Service", - "1": "\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u043b\u043e\u0432\u0430\u0440\u0438", - "3": "Ver\u00f6ffentlichte W\u00f6rterb\u00fccher", - "2": "Published dictionaries" - }, - "\u0414\u0435\u0440\u0435\u0432\u043d\u044f \u041b\u0435\u0441\u043d\u043e\u0435 \u0426\u0438\u0431\u0430\u0435\u0432\u043e": { - "type": "Dictionary", - "1": "\u0414\u0435\u0440\u0435\u0432\u043d\u044f \u041b\u0435\u0441\u043d\u043e\u0435 \u0426\u0438\u0431\u0430\u0435\u0432\u043e", - "3": "Dorf Tsibaevo", - "2": "(village Forest Tsibaevo)" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 2 - \u041d\u0430\u0434\u0435\u0436\u0434\u0430 \u0411\u044b\u0434\u044b\u0448\u0435\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 2, \u041d\u0430\u0434\u0435\u0436\u0434\u0430 \u0411\u044b\u0434\u044b\u0448\u0435\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, Liste 2, Hoffnung Bydysheva)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 2, Hope Bydysheva)" - }, - "\u041d\u0435\u043d\u0435\u0446\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u041d\u0435\u043d\u0435\u0446\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Nenzische Sprache", - "2": "Nenets language" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0410\u0440\u0436\u0430\u043d\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0410\u0440\u0436\u0430\u043d\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, Arjan)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, Arjan)" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 2 - \u0421\u0435\u0440\u0433\u0435\u0439 \u0411\u0430\u0447\u0438\u043c\u043e\u0432": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 2, \u0421\u0435\u0440\u0433\u0435\u0439 \u0411\u0430\u0447\u0438\u043c\u043e\u0432)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, Liste 2, Sergey Bachimov)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 2, Sergey Bachimov)" - }, - "sound": { - "type": "Service", - "1": "Звук", - "3": "Audio", - "2": "Sound" - }, - "\u04de\u0435\u0447 \u043a\u044b\u043b\u044a\u0451\u0441. \u0421\u0432\u044f\u0442\u043e\u0439 \u0422\u0438\u0445\u043e\u043d\u043b\u044d\u043d \u04df\u0435\u0447\u043b\u044b \u0434\u044b\u0448\u0435\u0442\u044d\u043c \u043a\u044b\u043b\u044a\u0451\u0441\u044b\u0437 (1891)": { - "type": "Dictionary", - "1": "\u04de\u0435\u0447 \u043a\u044b\u043b\u044a\u0451\u0441. \u0421\u0432\u044f\u0442\u043e\u0439 \u0422\u0438\u0445\u043e\u043d\u043b\u044d\u043d \u04df\u0435\u0447\u043b\u044b \u0434\u044b\u0448\u0435\u0442\u044d\u043c \u043a\u044b\u043b\u044a\u0451\u0441\u044b\u0437 (1891)", - "3": "\u04de\u0435\u0447 \u043a\u044b\u043b\u044a\u0451\u0441. \u0421\u0432\u044f\u0442\u043e\u0439 \u0422\u0438\u0445\u043e\u043d\u043b\u044d\u043d \u04df\u0435\u0447\u043b\u044b \u0434\u044b\u0448\u0435\u0442\u044d\u043c \u043a\u044b\u043b\u044a\u0451\u0441\u044b\u0437 (1891)", - "2": "\u04de\u0435\u0447 \u043a\u044b\u043b\u044a\u0451\u0441. \u0421\u0432\u044f\u0442\u043e\u0439 \u0422\u0438\u0445\u043e\u043d\u043b\u044d\u043d \u04df\u0435\u0447\u043b\u044b \u0434\u044b\u0448\u0435\u0442\u044d\u043c \u043a\u044b\u043b\u044a\u0451\u0441\u044b\u0437 (1891)" - }, - "\u0443\u0439\u0433\u0443\u0440\u0441\u043a\u0438\u0439": { - "type": "Dictionary", - "1": "\u0443\u0439\u0433\u0443\u0440\u0441\u043a\u0438\u0439", - "3": "uigur", - "2": "ujguri" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043a\u0430\u043d\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0442\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u043d\u0435\u043d\u0435\u0446\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043a\u0430\u043d\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0442\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u043d\u0435\u043d\u0435\u0446\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Kanin Dialekt vom Tundra Nenzischen", - "2": "Dictionary of Kanin tundra dialect" - }, - "the Page": { - "type": "Field", - "1": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430", - "2": "the Page" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u043e\u0433\u043e \u0438\u0434\u0438\u043e\u043c\u0430, \u0433\u043e\u0432\u043e\u0440 \u043d\u043f \u0422\u0440\u043e\u0438\u0446\u043a": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u043e\u0433\u043e \u0438\u0434\u0438\u043e\u043c\u0430, \u0433\u043e\u0432\u043e\u0440 \u043d\u043f \u0422\u0440\u043e\u0438\u0446\u043a", - "3": "W\u00f6rterbuch vom Tubalar Dialekt (Dorf Troitzk)", - "2": "Dictionary of Tubalar (Troitsk)" - }, - "\u0421\u0435\u043b\u044c\u043a\u0443\u043f\u0441\u043a\u0438\u0439 \u042e, \u0421\u0442\u0435\u043f\u0430\u043d\u043e\u0432\u043a\u0430, \u0410\u0440\u0431\u0430\u043b\u0434\u0430\u0435\u0432 \u0412\u0412": { - "type": "Dictionary", - "1": "\u0421\u0435\u043b\u044c\u043a\u0443\u043f\u0441\u043a\u0438\u0439 \u042e, \u0421\u0442\u0435\u043f\u0430\u043d\u043e\u0432\u043a\u0430, \u0410\u0440\u0431\u0430\u043b\u0434\u0430\u0435\u0432 \u0412\u0412", - "3": "S\u00fcdselkupisch, Stepanowka, Arbaldaev B.B.", - "2": "SouthSelkup, Stepanovka, Arbaldaev BB" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e-\u044e\u0436\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e-\u044e\u0436\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0412\u0430\u0440\u043a\u043b\u0435\u0442-\u0411\u043e\u0434\u044c\u044f \u0410\u0433\u0440\u044b\u0437\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0420\u0422)", - "3": "W\u00f6rterbuch vom zentral-s\u00fcdlichen Dialekt vom Udmurtischen (Dorf Varklet-Bodya)", - "2": "Dictionary of central-southern dialect of the Udmurt language (village Varklet-Bodya)" - }, - "the Line": { - "type": "Field", - "1": "\u0421\u0442\u0440\u043e\u043a\u0430", - "2": "the Line" - }, - "\u0427\u0443\u0432\u0430\u0448\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0427\u0443\u0432\u0430\u0448\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Tschuwaschische Sprache", - "2": "Chuvash language" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u0440\u0435\u0434\u043d\u0435-\u0447\u0435\u043f\u0435\u0446\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0441\u0435\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u0440\u0435\u0434\u043d\u0435\u0447\u0435\u043f\u0435\u0446\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0441\u0435\u0432\u0435\u0440\u043d\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u0443\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0434. \u041a\u0430\u0431\u0430\u043a\u043e\u0432\u043e \u0413\u043b\u0430\u0437\u043e\u0432\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0439\u043e\u043d\u0430 \u0423\u0420)", - "3": "W\u00f6rterbuch vom Mittlere Chepec Mundart vom Udmurtischen (Dorf Kabakovo)", - "2": "Dictionary of srednechepets dialect of the northern dialect of the Udmurt language (village Kabakovo Glazov district)" - }, - "English language": { - "type": "Language", - "1": "\u0410\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Englische Sprache", - "2": "English language" - }, - "\u0421\u0435\u043b\u044c\u043a\u0443\u043f\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0421\u0435\u043b\u044c\u043a\u0443\u043f\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Selkupische Sprache", - "2": "Selkup language" - }, - "\u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440 - \u0411. \u0413. \u0414\u0430\u0434\u044b\u044f\u043d\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440, \u0411. \u0413. \u0414\u0430\u0434\u044b\u044f\u043d\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Dzhazator, BG Dadyyanova)", - "2": "Dictionary of Telengit dialect of the Altai language (Dzhazator dialect, BG Dadyyanova)" - }, - "\u041d\u0430\u0447\u0430\u0442\u043a\u0438 \u0445\u0440\u0438\u0441\u0442\u0438\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0435\u043d\u0438\u044f 1841": { - "type": "Dictionary", - "1": "\u041d\u0430\u0447\u0430\u0442\u043a\u0438 \u0445\u0440\u0438\u0441\u0442\u0438\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0435\u043d\u0438\u044f 1841" - }, - "\u0421\u0440\u0435\u0434\u043d\u0435-\u0447\u0435\u043f\u0435\u0446\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0421\u0440\u0435\u0434\u043d\u0435-\u0447\u0435\u043f\u0435\u0446\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Mittlere Tschepets Dialekt", - "2": "Middle-Chepetsk dialect" - }, - "Intensity 1 vowel": { - "type": "Field", - "1": "\u0418\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e\u0441\u0442\u044c 1 \u0433\u043b\u0430\u0441\u043d\u043e\u0433\u043e", - "2": "Intensity 1 vowel" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u043e\u0433\u043e \u0438\u0434\u0438\u043e\u043c\u0430, \u0433\u043e\u0432\u043e\u0440 \u043d\u043f \u041f\u044b\u0436\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u043e\u0433\u043e \u0438\u0434\u0438\u043e\u043c\u0430, \u0433\u043e\u0432\u043e\u0440 \u043d\u043f \u041f\u044b\u0436\u0430", - "3": "W\u00f6rterbuch vom Tubalar Dialekt (Dorf Pyzha)", - "2": "Dictionary of Tubalar (Pyzha)" - }, - "Grammatical form": { - "type": "Field", - "1": "\u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0444\u043e\u0440\u043c\u0430", - "2": "Grammatical form" - }, - "\u042e\u0436\u043d\u043e\u0435 \u043d\u0430\u0440\u0435\u0447\u0438\u0435": { - "type": "Language", - "1": "\u042e\u0436\u043d\u043e\u0435 \u043d\u0430\u0440\u0435\u0447\u0438\u0435", - "3": "S\u00fcdliche Dialekt", - "2": "Southern dialect" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 6 - \u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0430 \u0422\u0430\u043d\u0442\u044b\u0435\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 6, \u0415\u043a\u0430\u0442\u0435\u0440\u0438\u043d\u0430 \u0422\u0430\u043d\u0442\u044b\u0435\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 6, Catherine Tantyeva)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 6, Catherine Tantyeva)" - }, - "\u0421\u0435\u0432\u0435\u0440\u043d\u043e-\u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u0438\u0439 (\u0442\u0451\u043b\u0451\u0441) \u043f\u043e\u0434\u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0421\u0435\u0432\u0435\u0440\u043d\u043e-\u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u0438\u0439 (\u0442\u0451\u043b\u0451\u0441) \u043f\u043e\u0434\u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Nordliche Telengit (t\u0451l\u0451s) Dialekt", - "2": "North Telengit (t\u0451l\u0451s) dialects" - }, - "Translation": { - "type": "Field", - "1": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434", - "3": "\u00dcbersetzung", - "2": "Translation" - }, - "\u041b\u0435\u0441\u043d\u043e\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041b\u0435\u0441\u043d\u043e\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Wald Dialekt", - "2": "Forest dialect" - }, - "\u0411\u0430\u0432\u043b\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440": { - "type": "Language", - "1": "\u0411\u0430\u0432\u043b\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440", - "3": "Bavlin Dialekt", - "2": "Bavlin dialect" - }, - "Argut - Radik": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0410\u0440\u0433\u0443\u0442, \u0420\u0430\u0434\u0438\u043a)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Argut, Radik)", - "2": "Dictionary of Telengit dialect of the Altai language (Argut dialect, Radik)" - }, - "\u0427\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u043e\u0442 \u041a.\u041f. \u0421\u0435\u0440\u0433\u0435\u0435\u0432\u043e\u0439": { - "type": "Dictionary", - "1": "\u0421\u0440\u0435\u0434\u043d\u0435\u0447\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a (\u043c\u0435\u043b\u0435\u0442\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442, \u041a.\u041f. \u0421\u0435\u0440\u0433\u0435\u0435\u0432\u0430)", - "3": "Mittlere Tschulym Sprache (Dialekt vom Melet, K.P. Sergeeva)", - "2": "Middle-Chulym language (Melet dialect, K.P. Sergeeva)" - }, - "\u0422\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0422\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Tubalarische Sprache", - "2": "Tubalars language" - }, - "\u0422\u0443\u043d\u0434\u0440\u043e\u0432\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0422\u0443\u043d\u0434\u0440\u043e\u0432\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Tundra Enets", - "2": "Tundra Enets" - }, - "\u041f\u0430\u043c\u044f\u0442\u043d\u0438\u043a \u043f\u0438\u0441\u044c\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438: \u0420\u0443\u0441\u0441\u043a\u043e-\u041e\u0441\u0442\u044f\u0446\u043a\u043e-\u0421\u0430\u043c\u043e\u0435\u0434\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c (\u043d\u0435\u043d\u0435\u0446\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u0410.\u0410.\u0414\u0443\u043d\u0438\u043d-\u0413\u043e\u0440\u043a\u0430\u0432\u0438\u0447), 1910": { - "type": "Dictionary", - "1": "\u041f\u0430\u043c\u044f\u0442\u043d\u0438\u043a \u043f\u0438\u0441\u044c\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438: \u0420\u0443\u0441\u0441\u043a\u043e-\u041e\u0441\u0442\u044f\u0446\u043a\u043e-\u0421\u0430\u043c\u043e\u0435\u0434\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c (\u043d\u0435\u043d\u0435\u0446\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c, \u0410.\u0410.\u0414\u0443\u043d\u0438\u043d-\u0413\u043e\u0440\u043a\u0430\u0432\u0438\u0447), 1910", - "3": "Russisch-Ostyak-Samojedischen W\u00f6rterbuch (Nenzischen W\u00f6rterbuch von A.A.Dunin-Gorkavich, 1910)", - "2": "Russian-Ostyak-Dictionary of Samoyed (Nenets Dictionary of A.A.Dunin-Gorkavich) 1910" - }, - "Sign out": { - "type": "Service", - "1": "\u0412\u044b\u0439\u0442\u0438", - "3": "Ausloggen", - "2": "Sign out" - }, - "\u042e\u0436\u043d\u043e-\u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u042e\u0436\u043d\u043e-\u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u0438\u0439 \u043f\u043e\u0434\u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "S\u00fcd Telengit Dialekt", - "2": "South Telengit dialects" - }, - "\u041a\u0438\u043b\u044c\u0434\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041a\u0438\u043b\u044c\u0434\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Kildin Dialekt", - "2": "Kildin dialect" - }, - "Paradigm translation": { - "type": "Field", - "1": "\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u044b", - "3": "\u00dcbersetzung im Paradigma", - "2": "Translation of Paradigmatic forms" - }, - "\u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440, \u0410. \u0418. \u0421\u0430\u0434\u0443\u043a\u043e\u0432)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Dzhazator AI Saduq)", - "2": "Dictionary of Telengit dialect of the Altai language (Dzhazator dialect, AI Saduq)" - }, - "\u041a\u0430\u043d\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041a\u0430\u043d\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Kanin Dialekt", - "2": "Kanin dialect" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 4 - \u041c\u0430\u0434\u044b\u0448\u0435\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 4, \u041c. \u0418. \u041c\u0430\u0434\u044b\u0448\u0435\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 4, Madysheva)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 4, Madysheva)" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 4 - \u0413. \u0413. \u0421\u044b\u0440\u0442\u0430\u043a\u043e\u0432": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 4, \u0413. \u0413. \u0421\u044b\u0440\u0442\u0430\u043a\u043e\u0432)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 4, GG Syrtakov)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 4, GG Syrtakov)" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 1 - \u041f\u0440\u0430\u0441\u043a\u043e\u0432\u044c\u044f": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 1, \u041f\u0440\u0430\u0441\u043a\u043e\u0432\u044c\u044f)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 1, Praskovya)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 1, Praskovya)" - }, - "\u0412\u043e\u0440\u043e\u043d\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440": { - "type": "Language", - "1": "\u0412\u043e\u0440\u043e\u043d\u0438\u043d\u0441\u043a\u0438\u0439 \u0433\u043e\u0432\u043e\u0440", - "3": "Voronin Dialekt", - "2": "Voron dialect" - }, - "\u0418\u0436\u0435\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u043a\u043e\u043c\u0438-\u0437\u044b\u0440\u044f\u043d\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0435\u043b\u043e\u044f\u0440\u0441\u043a \u041f\u0440\u0438\u0443\u0440\u0430\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0440-\u043d\u0430 \u042f\u041d\u0410\u041e": { - "type": "Dictionary", - "1": "\u0418\u0436\u0435\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442 \u043a\u043e\u043c\u0438-\u0437\u044b\u0440\u044f\u043d\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430, \u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0435\u043b\u043e\u044f\u0440\u0441\u043a \u041f\u0440\u0438\u0443\u0440\u0430\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0440-\u043d\u0430 \u042f\u041d\u0410\u041e", - "3": "Izhma Dialekt Komi-Syrj\u00e4nische Sprache (Beloyarsk Priuralsky Bezirk JaNAO)", - "2": "Izhma dialect Komi-Zyrian language (Beloyarsk Priuralsky district YaNAO)" - }, - "Selkup": { - "type": "Dictionary", - "1": "Selkup" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 3 - \u0421\u0443\u0440\u0430\u0439\u044f": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 3, \u0421\u0443\u0440\u0430\u0439\u044f)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 3, Suraya)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 3, Suraya)" - }, - "\u0419\u043e\u0433\u0430\u0447 - \u0412. \u0421. \u0418\u043a\u0438\u0436\u0435\u043a\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0443\u0431\u0430\u043b\u0430\u0440\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0419\u043e\u0433\u0430\u0447, \u0412. \u0421. \u0418\u043a\u0438\u0436\u0435\u043a\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Tubalar Dialekt vom Altaischen", - "2": "Dictionary of Tubalar dialect of the Altai language (village Yogach)" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421. \u0415. \u0422\u0435\u0440\u0435\u0448\u043a\u0438\u043d\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0421. \u0415. \u0422\u0435\u0440\u0435\u0448\u043a\u0438\u043d\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, SE Tereschkina)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, SE Tereshkina)" - }, - "\u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440 - \u0410. \u041f. \u041c\u0438\u043d\u0447\u0438\u043d\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440, \u0410. \u041f. \u041c\u0438\u043d\u0447\u0438\u043d\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Dzhazator, AP Minchinova)", - "2": "Dictionary of Telengit dialect of the Altai language (Dzhazator dialect, AP Minchinova)" - }, - "\u0411\u0435\u0441\u0435\u0440\u043c\u044f\u043d\u0441\u043a\u043e\u0435 \u043d\u0430\u0440\u0435\u0447\u0438\u0435": { - "type": "Language", - "1": "\u0411\u0435\u0441\u0435\u0440\u043c\u044f\u043d\u0441\u043a\u043e\u0435 \u043d\u0430\u0440\u0435\u0447\u0438\u0435", - "3": "Bessermenen Dialekt", - "2": "Besermyan dialect" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u044f\u043c\u0430\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0442\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u043d\u0435\u043d\u0435\u0446\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u044f\u043c\u0430\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0442\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u043d\u0435\u043d\u0435\u0446\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Jamal Dialekt vom Tundranenzischen", - "2": "Dictionary of dialect Yamal Nenets dialect" - }, - "\u0423\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0423\u0434\u043c\u0443\u0440\u0442\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Wotjakische Sprache", - "2": "Udmurt language" - }, - "Form": { - "type": "Field", - "1": "\u0413\u0440\u0430\u043c\u043c\u0435\u043c\u0430", - "2": "Form" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0413. \u0413. \u0421\u0430\u0440\u0442\u0430\u043a\u043e\u0432": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0413. \u0413. \u0421\u044b\u0440\u0442\u0430\u043a\u043e\u0432)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, GG Syrtakov)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, GG Syrtakov)" - }, - "Duration 1 vowel": { - "type": "Field", - "1": "\u0414\u043e\u043b\u0433\u043e\u0442\u0430 1 \u0433\u043b\u0430\u0441\u043d\u043e\u0433\u043e", - "2": "Duration 1 vowel" - }, - "German language": { - "type": "Language", - "1": "\u041d\u0435\u043c\u0435\u0446\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Deutsche Sprache", - "2": "German language" - }, - "\u0413\u044b\u0434\u0430\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0413\u044b\u0434\u0430\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Gydan Dialekt", - "2": "Gydans dialect" - }, - "\u0425\u0430\u043d\u0442\u044b\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0425\u0430\u043d\u0442\u044b\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Ostjakische Sprache", - "2": "Khanty language" - }, - "\u041d\u0430\u0447\u0430\u0442\u043a\u0438 \u0445\u0440\u0438\u0441\u0442\u0438\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0435\u043d\u0438\u044f 1841 (\u041a\u043b\u044e\u0447\u0435\u0432\u0430, 15.05.2-16)": { - "type": "Dictionary", - "1": "\u041d\u0430\u0447\u0430\u0442\u043a\u0438 \u0445\u0440\u0438\u0441\u0442\u0438\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0435\u043d\u0438\u044f 1841 (\u041a\u043b\u044e\u0447\u0435\u0432\u0430, 15.05.2016)" - }, - "My files": { - "type": "Service", - "1": "\u041c\u043e\u0438 \u0444\u0430\u0439\u043b\u044b", - "3": "Meine Akten", - "2": "My files" - }, - "\u041d\u0430\u0447\u0430\u0442\u043a\u0438 \u0445\u0440\u0438\u0441\u0442\u0438\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0435\u043d\u0438\u044f (\u041c\u0430\u0440\u0438 1841)": { - "type": "Dictionary", - "1": "\u041d\u0430\u0447\u0430\u0442\u043a\u0438 \u0445\u0440\u0438\u0441\u0442\u0438\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0443\u0447\u0435\u043d\u0438\u044f (\u041c\u0430\u0440\u0438 1841)" - }, - "\u0427\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Dictionary", - "1": "\u0421\u0440\u0435\u0434\u043d\u0435\u0447\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a (\u0411\u0443\u0434\u0435\u0435\u0432, \u0411\u0443\u0434\u0435\u0435\u0432\u0430, \u0422\u0430\u043c\u044b\u0447\u0435\u0432\u0430, \u0422\u0430\u0442\u044b\u043d\u043a\u0438\u043d\u0430)", - "3": "Mittlere Tschulym Sprache (Budeev, Budeeva, Tamycheva, Tatynkina)", - "2": "Middle-Chulym language (Budeev, Budeeva, Tamycheva, Tatynkina)" - }, - "\u041f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0433\u0440\u0430\u043d\u0442\u043e\u0432:": { - "type": "Service", - "1": "\u041f\u0440\u043e\u0435\u043a\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0435 \u0433\u0440\u0430\u043d\u0442\u043e\u0432:", - "3": "Das Projekt wird mit finanzieller Unterst\u00fctzung gef\u00f6dert", - "2": "The project was supported by" - }, - "\u041a\u043e\u043d\u0434\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041a\u043e\u043d\u0434\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Kondin Dialekt", - "2": "Kondin dialect" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0431\u043e\u043b\u044c\u0448\u0435\u0437\u0435\u043c\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0442\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u043d\u0435\u043d\u0435\u0446\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0431\u043e\u043b\u044c\u0448\u0435\u0437\u0435\u043c\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0442\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0440\u0435\u0447\u0438\u044f \u043d\u0435\u043d\u0435\u0446\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Bolshezemels Dialekt vom Tundra Nenzischen", - "2": "Dictionary of Bolshezemel dialect" - }, - "Argut": { - "type": "Dictionary", - "1": "Argut" - }, - "\u0427\u0435\u0440\u043d\u043e\u0435 \u041e\u0437\u0435\u0440\u043e - \u041c\u0430\u0440\u0438\u044f \u0420\u043e\u043c\u0430\u043d\u043e\u0432\u043d\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043a\u044b\u0437\u044b\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0445\u0430\u043a\u0430\u0441\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0427\u0435\u0440\u043d\u043e\u0435 \u041e\u0437\u0435\u0440\u043e, \u041c\u0430\u0440\u0438\u044f \u0420\u043e\u043c\u0430\u043d\u043e\u0432\u043d\u0430)" - }, - "\u0422\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0422\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Telengit Dialekt", - "2": "Telengit dialect" - }, - "Protoform": { - "type": "Field", - "1": "\u041f\u0440\u0430\u0444\u043e\u0440\u043c\u0430", - "2": "Protoform" - }, - "\u042d\u0432\u0435\u043d\u043a\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u042d\u0432\u0435\u043d\u043a\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Ewenkische Sprache", - "2": "Evenki language" - }, - "It is formed from": { - "type": "Field", - "1": "\u041e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u043e \u043e\u0442", - "2": "It is formed from" - }, - "\u0421\u0430\u0430\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u0421\u0430\u0430\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Lappische Sprache", - "2": "Saami language" - }, - "\u041c\u0430\u0440\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u041c\u0430\u0440\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Tscheremissische Sprache", - "2": "Mari language" - }, - "Finnish language": { - "type": "Language", - "1": "\u0424\u0438\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Finnische Sprache", - "2": "Finnish language" - }, - "\u042d\u043d\u0435\u0446\u043a\u0438\u0439": { - "type": "Dictionary", - "1": "\u042d\u043d\u0435\u0446\u043a\u0438\u0439", - "3": "Enetzische", - "2": "Enets" - }, - "\u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440 - \u0417\u0438\u043d\u0430\u0438\u0434\u0430 \u041a\u0435\u0431\u0435\u0440\u0435\u043a\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440, \u0417\u0438\u043d\u0430\u0438\u0434\u0430 \u041a\u0435\u0431\u0435\u0440\u0435\u043a\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Dzhazator, Zinaida Keberekova)", - "2": "Dictionary of Telengit dialect of the Altai language (Dzhazator dialect, Zinaida Keberekova)" - }, - "Number of an affix": { - "type": "Field", - "1": "\u041d\u043e\u043c\u0435\u0440 \u0430\u0444\u0444\u0438\u043a\u0441\u0430", - "2": "Number of an affix" - }, - "\u0420\u0443\u0441\u0441\u043a\u043e-\u041e\u0441\u0442\u044f\u0446\u043a\u043e-\u0421\u0430\u043c\u043e\u0435\u0434\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c (\u043d\u0435\u043d\u0435\u0446\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c) 1910\u0433.": { - "type": "Dictionary", - "1": "\u0420\u0443\u0441\u0441\u043a\u043e-\u041e\u0441\u0442\u044f\u0446\u043a\u043e-\u0421\u0430\u043c\u043e\u0435\u0434\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c (\u043d\u0435\u043d\u0435\u0446\u043a\u0430\u044f \u0447\u0430\u0441\u0442\u044c) 1910\u0433.", - "3": "Russisch-Ostyak-Samojedischen W\u00f6rterbuch (Nenzischen W\u00f6rterbuch von A.A.Dunin-Gorkavich, 1910)", - "2": "Russian-Ostyak-Dictionary of Samoyed (Nenets part) 1910." - }, - "\u0427\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u043e\u0442 \u0410.\u0424. \u041a\u043e\u043d\u0434\u0438\u044f\u043a\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u0440\u0435\u0434\u043d\u0435\u0447\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a (\u043c\u0435\u043b\u0435\u0442\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442, \u0410.\u0424. \u041a\u043e\u043d\u0434\u0438\u044f\u043a\u043e\u0432)", - "3": "Mittlere Tschulym Sprache (Dialekt vom Melet, A.F. Kondiyakov)", - "2": "Middle-Chulym language (Melet dialect, A.F. Kondiyakov)" - }, - "Paradigm sound": { - "type": "Field", - "1": "\u0417\u0432\u0443\u043a \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u044b", - "3": "Audio im Paradigma", - "2": "Sounds of Paradigmatic forms" - }, - "Native speaker": { - "type": "Field", - "1": "\u041d\u043e\u0441\u0438\u0442\u0435\u043b\u044c", - "2": "Native speaker" - }, - "\u0427\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u043e\u0442 \u0412. \u0422\u0430\u043c\u043e\u0447\u0435\u0432\u043e\u0439": { - "type": "Dictionary", - "1": "\u0421\u0440\u0435\u0434\u043d\u0435\u0447\u0443\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a (\u0442\u0443\u0442\u0430\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442, \u0412. \u0422\u0430\u043c\u043e\u0447\u0435\u0432\u0430)", - "3": "Mittlere Tschulym Sprache (Dialekt vom Tutal, B. Tamocheva)", - "2": "Middle-Chulym language (Tutal dialect, B. Tamocheva)" - }, - "\u042f\u043c\u0430\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u042f\u043c\u0430\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Jamal Dialekt", - "2": "Yamal dialect" - }, - "\u0421\u0430\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0421\u0430\u043b\u044b\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Salym Dialekt", - "2": "Salym dialect" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 1 - \u0417\u0438\u043d\u0430\u0438\u0434\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 1, \u0417\u0438\u043d\u0430\u0438\u0434\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 1, Zinaida)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 1, Zinaida)" - }, - "Dashboard": { - "type": "Service", - "1": "\u041f\u0430\u043d\u0435\u043b\u044c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f", - "3": "Instrumententafel", - "2": "Dashboard" - }, - "Frequency": { - "type": "Field", - "1": "\u0427\u0430\u0441\u0442\u043e\u0442\u0430", - "2": "Frequency" - }, - "\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0447\u0430\u043b\u043a\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0447\u0430\u043b\u043a\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Chalkan Dialekt vom Altaischen", - "2": "Dictionary of Chalkan dialect of the Altai language" - }, - "\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438\u043b\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Ili Dialect von Kazakhischen", - "2": "Dictionary of Ili dialect of Kazakh" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0410\u043d\u0434\u0430\u0434\u0438\u043a\u043e\u0432\u0430 \u041f. \u041f.": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u041f. \u041f. \u0410\u043d\u0434\u0430\u0434\u0438\u043a\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, PP Andadikova)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, PP Andadikova)" - }, - "Argut - Nikolaj Grigorevich": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0410\u0440\u0433\u0443\u0442, \u041d\u0438\u043a\u043e\u043b\u0430\u0439 \u0413\u0440\u0438\u0433\u043e\u0440\u044c\u0435\u0432\u0438\u0447)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Argut, Nicholas G.)", - "2": "Dictionary of Telengit dialect of the Altai language (Argut dialect, Nicholas G.)" - }, - "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430": { - "type": "Service", - "1": "\u0423\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430", - "3": "Die Teilnehmer des Projekts", - "2": "Participants of the project" - }, - "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e-\u044e\u0436\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e-\u044e\u0436\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Zentral-S\u00fcdliche Dialekt", - "2": "Central-southern dialect" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 4 - \u0411\u0435\u043b\u044f\u043a\u043e\u0432": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 4, \u0411\u0435\u043b\u044f\u043a\u043e\u0432)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 4, Belyakov)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 4, Belyakov)" - }, - "Etymology": { - "type": "Field", - "1": "\u042d\u0442\u0438\u043c\u043e\u043b\u043e\u0433\u0438\u044f", - "3": "Etymologie", - "2": "Etymology" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u041b. \u0412. \u0421\u0438\u043b\u0447\u0430\u043a\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u041b. \u0412. \u0421\u0438\u043b\u0447\u0430\u043a\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, LV Silchakova)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, LV Silchakova)" - }, - "\u041a\u0430\u0447\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u041a\u0430\u0447\u0438\u043d\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442" - }, - "\u041c\u0430\u043d\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u041c\u0430\u043d\u0441\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Wogulische Sprache", - "2": "Mansi language" - }, - "\u041c\u043e\u043a\u0448\u0430\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u041c\u043e\u043a\u0448\u0430\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a", - "3": "Mokshanische Sprache", - "2": "Moksha language" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 3 - \u0418\u0440\u0438\u043d\u0430 \u0422\u0443\u0436\u0430\u043b\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 3, \u0418\u0440\u0438\u043d\u0430 \u0422\u0443\u0436\u0430\u043b\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 3, Irina Tuzhalova)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 3, Irina Tuzhalova)" - }, - "\u042d\u0432\u0435\u043d\u043a\u0438\u0439\u0441\u043a\u0438\u0439, \u0427\u0438\u0440\u0438\u043d\u0434\u0430 2007, \u0425. \u0422. \u0415\u043b\u0434\u043e\u0433\u0438\u0440": { - "type": "Dictionary", - "1": "\u042d\u0432\u0435\u043d\u043a\u0438\u0439\u0441\u043a\u0438\u0439, \u0427\u0438\u0440\u0438\u043d\u0434\u0430 2007, \u0425. \u0422. \u0415\u043b\u0434\u043e\u0433\u0438\u0440", - "3": "Ewenk, Chirinda 2007 HT Eldogir", - "2": "Evenki, Chirinda 2007 HT Eldogir" - }, - "\u041f\u0440\u0435\u0437\u0438\u0434\u0435\u043d\u0442\u0430 \u0420\u0424 \u041c\u0414 -7005.2015.6 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e-\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u043e\u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0443\u0440\u0430\u043b\u044c\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u00bb, 2015-2016 (\u0440\u0443\u043a. \u042e.\u0412.\u041d\u043e\u0440\u043c\u0430\u043d\u0441\u043a\u0430\u044f)": { - "type": "Service", - "1": "\u041f\u0440\u0435\u0437\u0438\u0434\u0435\u043d\u0442\u0430\u043c\u0438 \u0420\u0424 \u041c\u0414 -7005.2015.6 \u00ab\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0440\u0430\u0432\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e-\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u043e\u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0443\u0440\u0430\u043b\u044c\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432\u00bb, 2015-2016 (\u0440\u0443\u043a. \u042e.\u0412.\u041d\u043e\u0440\u043c\u0430\u043d\u0441\u043a\u0430\u044f)", - "3": "Russischen Pr\u00e4sident MD -7005.2015.6 \"Vergleichendedialektologische Audio-Wortschatz von uralischen Sprachen \", 2015-2016 (Projektleiter Ju.V.Normanskaja)", - "2": "grant of President of Russia MD -7005.2015.6 \"Comparative historical dialect audioditionary of Uralic languages\", 2015-2016 (head Ju.V.Normanskaja)" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0447\u0430\u043b\u043a\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0412\u0438\u0431\u0435\u043b\u044c \u041e\u043a\u0441\u0430\u043d\u0430 \u041c\u0438\u0445\u0430\u0439\u043b\u043e\u0432\u043d\u0430)": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0447\u0430\u043b\u043a\u0430\u043d\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0412\u0438\u0431\u0435\u043b\u044c \u041e\u043a\u0441\u0430\u043d\u0430 \u041c\u0438\u0445\u0430\u0439\u043b\u043e\u0432\u043d\u0430)", - "3": "W\u00f6rterbuch vom Chalkan Dialekt vom Altaischen (Vibel Oksana M.)", - "2": "Dictionary of Chalkan dialect of the Altai language (Vibel Oksana M.)" - }, - "\u0418\u0436\u0435\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0418\u0436\u0435\u043c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Izhma Dialekt", - "2": "Izhma dialect" - }, - "Praat markup": { - "type": "Field", - "1": "\u0420\u0430\u0437\u043c\u0435\u0442\u043a\u0430", - "3": "Spektrogramm", - "2": "Spectrogram" - }, - "Merge master": { - "type": "Service", - "1": "\u041c\u0430\u0441\u0442\u0435\u0440 \u0441\u043b\u0438\u044f\u043d\u0438\u044f", - "3": "Verschmelzen Meister", - "2": "Merge master" - }, - "\u0411\u043e\u043b\u044c\u0448\u0435\u0437\u0435\u043c\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0411\u043e\u043b\u044c\u0448\u0435\u0437\u0435\u043c\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Bolshezemel Dialekt", - "2": "Bolshezemel dialect" - }, - "Lingvodoc 0.98 etymology dictionary": { - "type": "Perspective", - "1": "\u042d\u0442\u0438\u043c\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0438\u0437 Lingvodoc 0.98", - "3": "Lingvodoc 0,98 Etymologie W\u00f6rterbuch", - "2": "Lingvodoc 0.98 etymology dictionary" - }, - "\u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440 - \u0422. \u0418. \u0421\u0430\u0434\u0443\u043a\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440, \u0422. \u0418. \u0421\u0430\u0434\u0443\u043a\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Dzhazator, TI Sadukova)", - "2": "Dictionary of Telengit dialect of the Altai language (Dzhazator dialect, TI Sadukova)" - }, - "Dialect": { - "type": "Field", - "1": "\u0414\u0438\u0430\u043b\u0435\u043a\u0442", - "2": "Dialect" - }, - "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442": { - "type": "Language", - "1": "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442", - "3": "Zentral Dialekt", - "2": "Central dialect" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 4 - \u0417. \u0418. \u0422\u043e\u0439\u0434\u043e\u043d\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 4, \u0417. \u0418. \u0422\u043e\u0439\u0434\u043e\u043d\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha Liste 4, ZI Toydonova)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 4, ZI Toydonova)" - }, - "Mok\u0161\u0259n' valks": { - "type": "Dictionary", - "1": "\u041c\u043e\u043a\u0448\u0430\u043d\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a, \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0430\u043b\u0435\u043a\u0442, \u0433\u043e\u0432\u043e\u0440 \u0434. \u041b\u0435\u0441\u043d\u043e\u0435 \u0426\u0438\u0431\u0430\u0435\u0432\u043e", - "3": "Mokshanische Sprache, Zentraldialekt (Dorf Tsibaevo)", - "2": "Moksha language, the central dialect (village Forest Tsibaevo)" - }, - "\u041d\u0433\u0430\u043d\u0430\u0441\u0430\u043d\u0441\u043a\u0438\u0439 28.12": { - "type": "Dictionary", - "1": "\u041d\u0433\u0430\u043d\u0430\u0441\u0430\u043d\u0441\u043a\u0438\u0439 28.12", - "3": "Nganasan 28.12", - "2": "Nganasan 28.12" - }, - "\u0420\u0413\u041d\u0424 \u2116 15-04-00361 \"\u041f\u0435\u0440\u0432\u044b\u0435 \u043f\u0430\u043c\u044f\u0442\u043d\u0438\u043a\u0438 \u043f\u0438\u0441\u044c\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0443\u0440\u0430\u043b\u044c\u0441\u043a\u0438\u0445 \u0438 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445\" (\u0440\u0443\u043a. \u042e.\u0412.\u041d\u043e\u0440\u043c\u0430\u043d\u0441\u043a\u0430\u044f).": { - "type": "Service", - "1": "\u0420\u0413\u041d\u0424 \u2116 15-04-00361 \"\u041f\u0435\u0440\u0432\u044b\u0435 \u043f\u0430\u043c\u044f\u0442\u043d\u0438\u043a\u0438 \u043f\u0438\u0441\u044c\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0443\u0440\u0430\u043b\u044c\u0441\u043a\u0438\u0445 \u0438 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u0438\u0445 \u044f\u0437\u044b\u043a\u0430\u0445\" (\u0440\u0443\u043a. \u042e.\u0412.\u041d\u043e\u0440\u043c\u0430\u043d\u0441\u043a\u0430\u044f).", - "3": "RFH \u2116 15-04-00361 \"Die ersten schriftlichen Texten auf den uralischen und altaischen Sprachen \" (Projektleiter Ju.V.Normanskaja).", - "2": "RFH \u2116 15-04-00361 \"The first written texts on the Ural and Altai languages\" (head Ju.V. Normanskaja)." - }, - "Organizations": { - "type": "Service", - "1": "\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u0438", - "3": "Organisationen", - "2": "Organizations" - }, - "\u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440 - \u041d. \u0412. \u0421\u043e\u0441\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440, \u041d. \u0412. \u0421\u043e\u0441\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Dzhazator, NV Pumpen)", - "2": "Dictionary of Telengit dialect of the Altai language (Dzhazator dialect, NV pumps)" - }, - "Grammatical category": { - "type": "Field", - "1": "\u0413\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f", - "2": "Grammatical category" - }, - "Text": { - "type": "Field", - "1": "\u0422\u0435\u043a\u0441\u0442", - "2": "Text" - }, - "\u0422\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0435 \u043d\u0430\u0440\u0435\u0447\u0438\u0435": { - "type": "Language", - "1": "\u0422\u0443\u043d\u0434\u0440\u043e\u0432\u043e\u0435 \u043d\u0430\u0440\u0435\u0447\u0438\u0435", - "3": "Tundra Dialekt", - "2": "Tundra dialect" - }, - "\u0411\u0430\u043b\u044b\u043a\u0447\u0430 - \u0421\u043f\u0438\u0441\u043e\u043a 2 - \u0418\u0440\u0438\u043d\u0430 \u0422\u0443\u0436\u0430\u043b\u043e\u0432\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0411\u0430\u043b\u044b\u043a\u0447\u0430, \u0441\u043f\u0438\u0441\u043e\u043a 2, \u0418\u0440\u0438\u043d\u0430 \u0422\u0443\u0436\u0430\u043b\u043e\u0432\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Balykcha, Liste 2, Irina Tuzhalova)", - "2": "Dictionary of Telengit dialect of the Altai language (Balykcha dialect, list 2, Irina Tuzhalova)" - }, - "Argut - Janna": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0410\u0440\u0433\u0443\u0442, \u0416\u0430\u043d\u043d\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen", - "2": "Dictionary of Telengit dialect of the Altai language (Argut, Jeanne)" - }, - "\u041a\u0430\u0437\u0430\u0445\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a": { - "type": "Language", - "1": "\u041a\u0430\u0437\u0430\u0445\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a" - }, - "\u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440 - \u041c\u0430\u0440\u0438\u043d\u0430 \u041f\u0430\u0432\u043b\u043e\u0432\u043d\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u043b\u0435\u043d\u0433\u0438\u0442\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0430\u043b\u0442\u0430\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 (\u0433\u043e\u0432\u043e\u0440 \u0441. \u0414\u0436\u0430\u0437\u0430\u0442\u043e\u0440, \u041c\u0430\u0440\u0438\u043d\u0430 \u041f\u0430\u0432\u043b\u043e\u0432\u043d\u0430)", - "3": "W\u00f6rterbuch vom Telengit Dialekt vom Altaischen (Dialekt vom Dzhazator, Marina P.)", - "2": "Dictionary of Telengit dialect of the Altai language (Dzhazator dialect, Marina P.)" - }, - "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043d\u0438\u0437\u044f\u043c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0445\u0430\u043d\u0442\u044b\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430": { - "type": "Dictionary", - "1": "\u0421\u043b\u043e\u0432\u0430\u0440\u044c \u043d\u0438\u0437\u044f\u043c\u0441\u043a\u043e\u0433\u043e \u0434\u0438\u0430\u043b\u0435\u043a\u0442\u0430 \u0445\u0430\u043d\u0442\u044b\u0439\u0441\u043a\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430", - "3": "W\u00f6rterbuch vom Nizyam Dialekt vom Ostjakischen", - "2": "Dictionary of Nizyam dialect of the Khanty language" - }, - "Finnish": { - "type": "Dictionary", - "1": "Finnish" - }, - "Language": { - "type": "Service", - "1": "Язык", - "2": "Language", - "3": "Sprache" - }, - "WiP": { - "type": "Service", - "1": "WiP", - "2": "WiP", - "3": "WiP" - }, - "Published": { - "type": "Service", - "1": "Опубликованный", - "2": "Published", - "3": "Veröffentlicht" - }, - "link": { - "type": "Service", - "1": "Ссылка", - "2": "Link", - "3": "Link" - }, - "praat markup": { - "type": "Service", - "1": "Praat разметка", - "2": "Praat markup", - "3": "Praat markup" - }, - "ELAN markup": { - "type": "Service", - "1": "ELAN разметка", - "2": "ELAN markup", - "3": "ELAN markup" - }, - "elan markup": { - "type": "Field", - "1": "ELAN разметка", - "2": "ELAN markup ", - "3": "ELAN markup" - }, - "Image": { - "type": "Service", - "1": "Изображение", - "2": "Image", - "3": "Image" - }, - "image": { - "type": "Field", - "1": "Изображение", - "2": "Image ", - "3": "Image" - }, - "Limited access": { - "type": "Service", - "1": "Ограниченный доступ", - "2": "Limited access", - "3": "Limited access" - }, - "Hidden": { - "type": "Service", - "1": "Скрыт", - "2": "Hidden", - "3": "Hidden" - }, - "Grouping Tag": { - "type": "Service", - "1": "Группировочный тэг", - "2": "Grouping Tag", - "3": "Grouping Tag" - } + "Dashboard":{ + "1":"Панель управления", + "2":"Dashboard", + "3":"Instrumententafel", + "type":"Service" + }, + "Image":{ + "1":"Изображение", + "2":"Image", + "3":"Image", + "type":"Service" + }, + "Limited access":{ + "1":"Limited access", + "2":"Limited access", + "3":"Limited access", + "type":"Service" + }, + "Create dictionary...":{ + "1":"Создать словарь...", + "2":"Create dictionary...", + "3":"Create Wörterbuch...", + "type":"Service" + }, + "Sign out":{ + "1":"Выйти", + "2":"Sign out", + "3":"Ausloggen", + "type":"Service" + }, + "Language":{ + "1":"Language", + "2":"Language", + "3":"Language", + "type":"Service" + }, + "Attention! To access all capability of the system (including the creation and editing of dictionaries, their publication, binding metadata dictionaries, search based on geolocation, download dictionaries from the desktop version), you must register and log in. The registration / login there is in the upper right corner of the page.":{ + "1":"Внимание! Для доступа ко всем возможностям системы (в том числе совместному созданию и редактированию словарей, их публикации, привязки метаданных к словарям, поиску с учетом геолокаций, загрузки словарей из настольной версии программы) необходимо зарегистрироваться и войти в систему. Кнопки регистрации/входа в систему находятся в правом верхнем углу страницы.", + "2":"Attention! To access all capability of the system (including the creation and editing of dictionaries, their publication, binding metadata dictionaries, search based on geolocation, download dictionaries from the desktop version), you must register and log in. The registration / login there is in the upper right corner of the page.", + "3":"Achtung! Um alle Funktionen des Systems zu benutzen (die gemeinsame Erstellung und Bearbeitung von Wörterbüchern, die Wörterbücherveröffentlichung, die Metadaten von Wörterbücher Zusammenlegung, die Suche vom geographischen Standort, das Herunterladen von den Wörterbücher aus der Desktop-Version), müssen Sie sich registrieren und einloggen. Die Anmeldung / Login ist in der oberen rechten Ecke der Seite.", + "type":"Service" + }, + "The project was supported by ":{ + "1":"Проект выполняется при финансовой поддержке грантов:", + "2":"The project was supported by ", + "3":"Das Projekt wird mit finanzieller Unterstützung gefödert", + "type":"Service" + }, + "Can edit translationatom":{ + "2":"Can edit translationatom", + "type":"Service" + }, + "Organizations":{ + "1":"Организации", + "2":"Organizations", + "3":"Organisationen", + "type":"Service" + }, + "Languages":{ + "1":"Языки", + "2":"Languages", + "3":"Sprachen", + "type":"Service" + }, + "Grouping Tag":{ + "1":"Группировочный тэг", + "2":"Grouping Tag", + "3":"Grouping Tag", + "type":"Service" + }, + "grant of President of Russia MD -7005.2015.6 \"Comparative historical dialect audioditionary of Uralic languages\", 2015-2016 (head Ju.V.Normanskaja)":{ + "1":"Президентами РФ МД -7005.2015.6 «Создание сравнительно-исторического диалектного аудиословаря уральских языков», 2015-2016 (рук. Ю.В.Норманская)", + "2":"grant of President of Russia MD -7005.2015.6 \"Comparative historical dialect audioditionary of Uralic languages\", 2015-2016 (head Ju.V.Normanskaja)", + "3":"Russischen Präsident MD -7005.2015.6 \"Vergleichendedialektologische Audio-Wortschatz von uralischen Sprachen \", 2015-2016 (Projektleiter Ju.V.Normanskaja)", + "type":"Service" + }, + "Available dictionaries":{ + "1":"Доступные словари", + "2":"Available dictionaries", + "3":"erhältlich Wörterbücher", + "type":"Service" + }, + "Published":{ + "1":"Published", + "2":"Published", + "3":"Published", + "type":"Service" + }, + "RFH №14-04-12019 \"Creating multimedia dictionaries Samoyed languages\", 2014-2016 (head Ju.V. Normanskaja)":{ + "1":"РГНФ № 14-04-12019 «Создание мультимедийных словарей самодийских языков», 2014-2016 (рук.Ю.В.Норманская)", + "2":"RFH №14-04-12019 \"Creating multimedia dictionaries Samoyed languages\", 2014-2016 (head Ju.V. Normanskaja)", + "3":"RFH №14-04-12019 \"Erstellen von Multimedia-Wörterbücher Samojeden Sprachen\", 2014-2016 (Projektleiter Ju.V. Normanskaja)", + "type":"Service" + }, + "My files":{ + "1":"Мои файлы", + "2":"My files", + "3":"Meine Akten", + "type":"Service" + }, + "Markup":{ + "1":"Разметка", + "2":"Markup", + "3":"Markup", + "type":"Service" + }, + "Participants of the project":{ + "1":"Участники проекта", + "2":"Participants of the project", + "3":"Die Teilnehmer des Projekts", + "type":"Service" + }, + "WiP":{ + "1":"WiP", + "2":"WiP", + "3":"WiP", + "type":"Service" + }, + "Create dictionary":{ + "1":"Создать словарь", + "2":"Create dictionary", + "3":"Create Wörterbuch", + "type":"Service" + }, + "Service":{ + "1":"Service", + "2":"Service", + "3":"Service", + "type":"Service" + }, + "Converting":{ + "1":"Converting", + "2":"Converting", + "3":"Converting", + "type":"Service" + }, + "Converting 80%":{ + "1":"Converting 80%", + "2":"Converting 80%", + "3":"Converting 80%", + "type":"Service" + }, + "Merge master":{ + "1":"Мастер слияния", + "2":"Merge master", + "3":"Verschmelzen Meister", + "type":"Service" + }, + "(village Forest Tsibaevo)":{ + "1":"Деревня Лесное Цибаево", + "2":"(village Forest Tsibaevo)", + "3":"Dorf Tsibaevo", + "type":"Service" + }, + "Converting 15%":{ + "1":"Converting 15%", + "2":"Converting 15%", + "3":"Converting 15%", + "type":"Service" + }, + "RFH № 15-04-00361 \"The first written texts on the Ural and Altai languages\" (head Ju.V. Normanskaja).":{ + "1":"РГНФ № 15-04-00361 \"Первые памятники письменности на уральских и алтайских языках\" (рук. Ю.В.Норманская).", + "2":"RFH № 15-04-00361 \"The first written texts on the Ural and Altai languages\" (head Ju.V. Normanskaja).", + "3":"RFH № 15-04-00361 \"Die ersten schriftlichen Texten auf den uralischen und altaischen Sprachen \" (Projektleiter Ju.V.Normanskaja).", + "type":"Service" + }, + "Can delete translationgist":{ + "2":"Can delete translationgist", + "type":"Service" + }, + "Hidden":{ + "1":"Hidden", + "2":"Hidden", + "3":"Hidden", + "type":"Service" + }, + "Link":{ + "1":"Ссылка", + "2":"Link", + "3":"Link", + "type":"Service" + }, + "The village Beloyarsk district Priuralsky YaNAO":{ + "1":"Село Белоярск Приуральского района ЯНАО", + "2":"The village Beloyarsk district Priuralsky YaNAO", + "3":"Das Dorf Beloyarsk Bezirk Priuralsky JANAO", + "type":"Service" + }, + "Paradigmatic forms":{ + "1":"Paradigm", + "2":"Paradigmatic forms", + "3":"Paradigma", + "type":"Service" + }, + "Sound":{ + "1":"Звук", + "2":"Sound", + "3":"Audio", + "type":"Service" + }, + "Contacts":{ + "1":"Контакты", + "2":"Contacts", + "3":"Kontakte", + "type":"Service" + }, + "My dictionaries":{ + "1":"Мои словари", + "2":"My dictionaries", + "3":"Meine Wörterbücher", + "type":"Service" + }, + "Text":{ + "1":"Текст", + "2":"Text", + "3":"Text", + "type":"Service" + }, + "Maps search":{ + "1":"Поиск по картам", + "2":"Maps search", + "3":"Karten Suche", + "type":"Service" + }, + "Published dictionaries":{ + "1":"Опубликованные словари", + "2":"Published dictionaries", + "3":"Veröffentlichte Wörterbücher", + "type":"Service" + }, + "Kildin dialect (village Voronino) Saami language":{ + "1":"Кильдинский диалект (воронинский говор) саамского языка", + "2":"Kildin dialect (village Voronino) Saami language", + "3":"Kildin Dialekt (Dorf Voronino) Lappische", + "type":"Service" + }, + "ELAN markup":{ + "1":"ELAN разметка", + "2":"ELAN markup", + "3":"ELAN markup", + "type":"Service" + }, + "RNF № 15-18-00044 \"Information system for description of minority languages of the world. Development of descriptions for endangered Altaic and Uralic languages of Russia\", 2015-2017 (head V.M.Alpatov)":{ + "1":"РНФ № 15-18-00044 «Информационная система для описания малочисленных языков народов мира. Создание описаний алтайских и уральских языков России, находящихся на грани исчезновения», 2015-2017 (рук. В.М.Алпатов)", + "2":"RNF № 15-18-00044 \"Information system for description of minority languages of the world. Development of descriptions for endangered Altaic and Uralic languages of Russia\", 2015-2017 (head V.M.Alpatov)", + "3":"RNF № 15-18-00044 «Informationssystem für die Beschreibung von den Minderheitensprachen der Welt. Die Beschreibungen von den uralischen und altaischen Sprachen vom Russland \", 2015-2017 (Projektleiter V.M.Alpatov)", + "type":"Service" + }, + "Dictionary of Middle-Ob dialect Mansi":{ + "1":"Словарь среднеобского диалекта мансийского языка", + "2":"Dictionary of Middle-Ob dialect Mansi", + "3":"Wörterbuch vom Ob Dialekt vom Wogulischen", + "type":"Dictionary" + }, + "Lexical Entries":{ + "2":"Lexical Entries", + "3":"Leksikaalinen Merkinnät", + "1":"Лексические входы", + "type":"Perspective" + }, + "Word":{ + "1":"Word", + "2":"Word", + "3":"Wort", + "type":"Field" + }, + "Transcription":{ + "1":"Transcription", + "2":"Transcription", + "3":"Transkription", + "type":"Field" + }, + "Paradigms":{ + "3":"Paradigmat", + "2":"Paradigms", + "1":"Парадигмы", + "type":"Perspective" + } } \ No newline at end of file diff --git a/lingvodoc/utils/creation.py b/lingvodoc/utils/creation.py index e614f69c5..c56002a7c 100644 --- a/lingvodoc/utils/creation.py +++ b/lingvodoc/utils/creation.py @@ -229,7 +229,7 @@ def create_dblanguage(id=None, 'younger_siblings'].desc()).first() dblanguage.additional_metadata = dict() dblanguage.additional_metadata['younger_siblings'] = list() - if prev_sibling: + if prev_sibling and prev_sibling.additional_metadata: dblanguage.additional_metadata['younger_siblings'] = prev_sibling.additional_metadata.get('younger_siblings') dblanguage.additional_metadata['younger_siblings'].append([prev_sibling.client_id, prev_sibling.object_id]) diff --git a/test_gql/__init__.py b/test_gql/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/test_gql/alembictests.ini b/test_gql/alembictests.ini new file mode 100644 index 000000000..ef5c85dc4 --- /dev/null +++ b/test_gql/alembictests.ini @@ -0,0 +1,39 @@ +[app:main] +sqlalchemy.url = postgresql+psycopg2://postgres@/test_base_1 + +[alembic] +script_location = alembic +sqlalchemy.url = postgresql+psycopg2://postgres@/test_base_1 +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/test_gql/snapshots/__init__.py b/test_gql/snapshots/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/test_gql/snapshots/snap_tests without ban.py b/test_gql/snapshots/snap_tests without ban.py new file mode 100644 index 000000000..2930fc866 --- /dev/null +++ b/test_gql/snapshots/snap_tests without ban.py @@ -0,0 +1,948 @@ +# -*- coding: utf-8 -*- +# snapshottest: v1 - https://goo.gl/zC4yUc +from __future__ import unicode_literals + +from snapshottest import Snapshot + + +snapshots = Snapshot() + +snapshots['TestConnection.test_give_roles_to_user 1'] = { + 'data': { + 'add_perspective_roles': { + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_language 1'] = { + 'data': { + 'language': { + 'dictionaries': [ + ], + 'id': [ + 1, + 13 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'English language', + 'translation_gist_id': [ + 1, + 3 + ] + } + } +} + +snapshots['TestConnection.test_get_all_languages 1'] = { + 'data': { + 'languages': [ + { + 'dictionaries': [ + { + 'category': 0, + 'domain': 0, + 'id': [ + 2, + 2 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 12 + ], + 'state_translation_gist_id': [ + 1, + 189 + ], + 'status': 'WiP', + 'translation': 'Dictionary of Middle-Ob dialect Mansi', + 'translation_gist_id': [ + 1, + 61 + ] + } + ], + 'id': [ + 1, + 12 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'Russian language', + 'translation_gist_id': [ + 1, + 2 + ] + }, + { + 'dictionaries': [ + ], + 'id': [ + 1, + 13 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'English language', + 'translation_gist_id': [ + 1, + 3 + ] + }, + { + 'dictionaries': [ + ], + 'id': [ + 1, + 14 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'Finnish language', + 'translation_gist_id': [ + 1, + 4 + ] + }, + { + 'dictionaries': [ + ], + 'id': [ + 1, + 15 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'French language', + 'translation_gist_id': [ + 1, + 5 + ] + }, + { + 'dictionaries': [ + ], + 'id': [ + 1, + 16 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'German language', + 'translation_gist_id': [ + 1, + 6 + ] + } + ] + } +} + +snapshots['TestConnection.test_create_language_with_old_gist_none_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_language_with_old_gist_user_header 1'] = { + 'data': { + 'create_language': { + 'language': { + 'id': [ + 4, + 2 + ], + 'translation_gist_id': [ + 1, + 4 + ] + } + } + } +} + +snapshots['TestConnection.test_create_language_with_old_gist_admin_header 1'] = { + 'data': { + 'create_language': { + 'language': { + 'id': [ + 3, + 2 + ], + 'translation_gist_id': [ + 1, + 4 + ] + } + } + } +} + +snapshots['TestConnection.test_create_language_with_new_gist_none_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_language_with_new_gist_user_header 1'] = { + 'data': { + 'create_language': { + 'language': { + 'id': [ + 4, + 5 + ], + 'translation_gist_id': [ + 4, + 3 + ] + } + } + } +} + +snapshots['TestConnection.test_create_language_with_new_gist_admin_header 1'] = { + 'data': { + 'create_language': { + 'language': { + 'id': [ + 3, + 5 + ], + 'translation_gist_id': [ + 3, + 3 + ] + } + } + } +} + +snapshots['TestConnection.test_update_language_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'edit' permissions for 'language' [1, 14]." + } + ] +} + +snapshots['TestConnection.test_update_language_user_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'edit' permissions for 'language' [1, 14]." + } + ] +} + +snapshots['TestConnection.test_update_language_admin_header 1'] = { + 'data': { + 'update_language': { + 'language': { + 'id': [ + 1, + 14 + ], + 'translation_gist_id': [ + 1, + 2 + ] + } + } + } +} + +snapshots['TestConnection.test_delete_language_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'delete' permissions for 'language' [1, 14]." + } + ] +} + +snapshots['TestConnection.test_delete_language_user_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'delete' permissions for 'language' [1, 14]." + } + ] +} + +snapshots['TestConnection.test_delete_language_admin_header 1'] = { + 'data': { + 'delete_language': { + 'language': { + 'id': [ + 1, + 14 + ], + 'marked_for_deletion': True, + 'translation': 'Russian language' + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_entity 1'] = { + 'data': { + 'entity': { + 'content': 'lex entity 1', + 'id': [ + 2, + 22 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ] + } + } +} + +snapshots['TestConnection.test_create_entity_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_entity_user_header 1'] = { + 'data': { + 'create_entity': { + 'entity': { + 'content': 'test_content', + 'id': [ + 4, + 6 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ], + 'published': False + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_create_entity_admin_header 1'] = { + 'data': { + 'create_entity': { + 'entity': { + 'content': 'test_content', + 'id': [ + 3, + 6 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ], + 'published': False + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_update_entity_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'create' permissions for 'approve_entities' (2, 3)." + } + ] +} + +snapshots['TestConnection.test_update_entity_user_header 1'] = { + 'data': { + 'update_entity': { + 'entity': { + 'content': 'lex entity 2', + 'id': [ + 2, + 23 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 19 + ], + 'published': True + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_update_entity_admin_header 1'] = { + 'data': { + 'update_entity': { + 'entity': { + 'content': 'lex entity 1', + 'id': [ + 2, + 22 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ], + 'published': True + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_delete_entity_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'delete' permissions for 'lexical_entries_and_entities' (2, 3)." + } + ] +} + +snapshots['TestConnection.test_delete_entity_not_owner_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'delete' permissions for 'lexical_entries_and_entities' (2, 4)." + } + ] +} + +snapshots['TestConnection.test_delete_entity_owner_header 1'] = { + 'data': { + 'delete_entity': { + 'entity': { + 'content': 'lex entity 1', + 'id': [ + 2, + 22 + ], + 'marked_for_deletion': True, + 'parent_id': [ + 2, + 18 + ], + 'published': True + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_delete_entity_admin_header 1'] = { + 'data': { + 'delete_entity': { + 'entity': { + 'content': 'link lex entity 2', + 'id': [ + 2, + 25 + ], + 'marked_for_deletion': True, + 'parent_id': [ + 2, + 21 + ], + 'published': False + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_gist 1'] = { + 'data': { + 'translationgist': { + 'id': [ + 1, + 193 + ], + 'marked_for_deletion': False, + 'translation': 'Word', + 'translationatoms': [ + { + 'content': 'Word', + 'id': [ + 1, + 194 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 193 + ] + }, + { + 'content': 'Wort', + 'id': [ + 1, + 195 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 193 + ] + }, + { + 'content': 'Word', + 'id': [ + 1, + 196 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 193 + ] + } + ], + 'type': 'Field' + } + } +} + +snapshots['TestConnection.test_create_gist_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_gist_user_header 1'] = { + 'data': { + 'create_translationgist': { + 'translationgist': { + 'id': [ + 4, + 7 + ], + 'marked_for_deletion': False, + 'translation': 'Translation missing for all locales', + 'translationatoms': [ + ], + 'type': 'Text' + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_create_gist_admin_header 1'] = { + 'data': { + 'create_translationgist': { + 'translationgist': { + 'id': [ + 3, + 7 + ], + 'marked_for_deletion': False, + 'translation': 'Translation missing for all locales', + 'translationatoms': [ + ], + 'type': 'Text' + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_delete_gist_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'delete' permissions for 'translations' [4, 4]." + } + ] +} + +snapshots['TestConnection.test_delete_gist_not_owners_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'delete' permissions for 'translations' [3, 4]." + } + ] +} + +snapshots['TestConnection.test_delete_gist_owner_header 1'] = { + 'data': { + 'delete_translationgist': { + 'translationgist': { + 'id': [ + 4, + 7 + ], + 'marked_for_deletion': True, + 'translation': 'Translation missing for all locales', + 'translationatoms': [ + ], + 'type': 'Text' + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_delete_gist_admin_header 1'] = { + 'data': { + 'delete_translationgist': { + 'translationgist': { + 'id': [ + 3, + 7 + ], + 'marked_for_deletion': True, + 'translation': 'Translation missing for all locales', + 'translationatoms': [ + ], + 'type': 'Text' + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_atom 1'] = { + 'data': { + 'translationatom': { + 'content': 'English language', + 'id': [ + 1, + 8 + ], + 'locale_id': 2, + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 3 + ] + } + } +} + +snapshots['TestConnection.test_create_atom_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_atom_user_header 1'] = { + 'data': { + 'create_translationatom': { + 'translationatom': { + 'content': 'test atom content', + 'id': [ + 4, + 8 + ], + 'locale_id': 5, + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 61 + ] + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_create_atom_admin_header 1'] = { + 'data': { + 'create_translationatom': { + 'translationatom': { + 'content': 'test atom content', + 'id': [ + 3, + 8 + ], + 'locale_id': 6, + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 61 + ] + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_update_atom_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'edit' permissions for 'translations' [4, 8]." + } + ] +} + +snapshots['TestConnection.test_update_atom_not_owner_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'edit' permissions for 'translations' [3, 8]." + } + ] +} + +snapshots['TestConnection.test_update_atom_owner_header 1'] = { + 'data': { + 'update_translationatom': { + 'translationatom': { + 'content': 'test updated content', + 'id': [ + 4, + 8 + ], + 'locale_id': 21, + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 61 + ] + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_update_atom_admin_header 1'] = { + 'data': { + 'update_translationatom': { + 'translationatom': { + 'content': 'test content updated by admin', + 'id': [ + 3, + 8 + ], + 'locale_id': 22, + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 61 + ] + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_perspective_list 1'] = { + 'data': { + 'perspective': { + 'authors': [ + { + 'id': 2, + 'name': 'Test' + }, + { + 'id': 1, + 'name': 'Администратор' + }, + { + 'id': 3, + 'name': 'tester' + } + ], + 'columns': [ + { + 'id': [ + 2, + 11 + ], + 'parent_id': [ + 2, + 3 + ], + 'position': 1 + }, + { + 'id': [ + 2, + 12 + ], + 'parent_id': [ + 2, + 3 + ], + 'position': 2 + }, + { + 'id': [ + 2, + 13 + ], + 'parent_id': [ + 2, + 3 + ], + 'position': 3 + }, + { + 'id': [ + 2, + 14 + ], + 'parent_id': [ + 2, + 3 + ], + 'position': 4 + } + ], + 'id': [ + 2, + 3 + ], + 'lexical_entries': [ + { + 'entities': [ + { + 'content': 'lex entity 2', + 'data_type': 'Text', + 'id': [ + 2, + 23 + ], + 'locale_id': 2, + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 19 + ] + } + ], + 'id': [ + 2, + 19 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 3 + ] + }, + { + 'entities': [ + { + 'content': 'test_content', + 'data_type': 'Text', + 'id': [ + 4, + 6 + ], + 'locale_id': 2, + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ] + }, + { + 'content': 'test_content', + 'data_type': 'Text', + 'id': [ + 3, + 6 + ], + 'locale_id': 2, + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ] + } + ], + 'id': [ + 2, + 18 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 3 + ] + } + ], + 'marked_for_deletion': False, + 'tree': [ + { + 'id': [ + 2, + 3 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 2 + ], + 'translation': 'Lexical Entries', + 'translation_gist_id': [ + 1, + 93 + ] + }, + { + 'id': [ + 2, + 2 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 12 + ], + 'translation': 'Dictionary of Middle-Ob dialect Mansi', + 'translation_gist_id': [ + 1, + 61 + ] + }, + { + 'id': [ + 1, + 12 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'Russian language', + 'translation_gist_id': [ + 1, + 2 + ] + } + ] + } + } +} diff --git a/test_gql/snapshots/snap_tests.py b/test_gql/snapshots/snap_tests.py new file mode 100644 index 000000000..e2919836f --- /dev/null +++ b/test_gql/snapshots/snap_tests.py @@ -0,0 +1,894 @@ +# -*- coding: utf-8 -*- +# snapshottest: v1 - https://goo.gl/zC4yUc +from __future__ import unicode_literals + +from snapshottest import Snapshot + + +snapshots = Snapshot() + +snapshots['TestConnection.test_USE_BANHAMMER 1'] = { + 'data': { + 'activate_deactivate_user': { + 'triumph': True + } + } +} + +snapshots['TestConnection.test_give_roles_to_user 1'] = { + 'data': { + 'add_perspective_roles': { + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_language 1'] = { + 'data': { + 'language': { + 'dictionaries': [ + ], + 'id': [ + 1, + 13 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'English language', + 'translation_gist_id': [ + 1, + 3 + ] + } + } +} + +snapshots['TestConnection.test_get_all_languages 1'] = { + 'data': { + 'languages': [ + { + 'dictionaries': [ + { + 'category': 0, + 'domain': 0, + 'id': [ + 2, + 2 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 12 + ], + 'state_translation_gist_id': [ + 1, + 189 + ], + 'status': 'WiP', + 'translation': 'Dictionary of Middle-Ob dialect Mansi', + 'translation_gist_id': [ + 1, + 61 + ] + } + ], + 'id': [ + 1, + 12 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'Russian language', + 'translation_gist_id': [ + 1, + 2 + ] + }, + { + 'dictionaries': [ + ], + 'id': [ + 1, + 13 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'English language', + 'translation_gist_id': [ + 1, + 3 + ] + }, + { + 'dictionaries': [ + ], + 'id': [ + 1, + 14 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'Finnish language', + 'translation_gist_id': [ + 1, + 4 + ] + }, + { + 'dictionaries': [ + ], + 'id': [ + 1, + 15 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'French language', + 'translation_gist_id': [ + 1, + 5 + ] + }, + { + 'dictionaries': [ + ], + 'id': [ + 1, + 16 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'German language', + 'translation_gist_id': [ + 1, + 6 + ] + } + ] + } +} + +snapshots['TestConnection.test_create_language_with_old_gist_none_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_language_with_old_gist_user_header 1'] = { + 'data': { + 'create_language': { + 'language': { + 'id': [ + 4, + 2 + ], + 'translation_gist_id': [ + 1, + 4 + ] + } + } + } +} + +snapshots['TestConnection.test_create_language_with_old_gist_admin_header 1'] = { + 'data': { + 'create_language': { + 'language': { + 'id': [ + 3, + 2 + ], + 'translation_gist_id': [ + 1, + 4 + ] + } + } + } +} + +snapshots['TestConnection.test_create_language_with_new_gist_none_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_language_with_new_gist_user_header 1'] = { + 'data': { + 'create_language': { + 'language': { + 'id': [ + 4, + 5 + ], + 'translation_gist_id': [ + 4, + 3 + ] + } + } + } +} + +snapshots['TestConnection.test_create_language_with_new_gist_admin_header 1'] = { + 'data': { + 'create_language': { + 'language': { + 'id': [ + 3, + 5 + ], + 'translation_gist_id': [ + 3, + 3 + ] + } + } + } +} + +snapshots['TestConnection.test_update_language_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'edit' permissions for 'language' [1, 14]." + } + ] +} + +snapshots['TestConnection.test_update_language_user_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'edit' permissions for 'language' [1, 14]." + } + ] +} + +snapshots['TestConnection.test_update_language_admin_header 1'] = { + 'data': { + 'update_language': { + 'language': { + 'id': [ + 1, + 14 + ], + 'translation_gist_id': [ + 1, + 2 + ] + } + } + } +} + +snapshots['TestConnection.test_delete_language_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'delete' permissions for 'language' [1, 14]." + } + ] +} + +snapshots['TestConnection.test_delete_language_user_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'delete' permissions for 'language' [1, 14]." + } + ] +} + +snapshots['TestConnection.test_delete_language_admin_header 1'] = { + 'data': { + 'delete_language': { + 'language': { + 'id': [ + 1, + 14 + ], + 'marked_for_deletion': True, + 'translation': 'Russian language' + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_entity 1'] = { + 'data': { + 'entity': { + 'content': 'lex entity 1', + 'id': [ + 2, + 22 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ] + } + } +} + +snapshots['TestConnection.test_create_entity_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_entity_user_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'create' permissions for 'lexical_entries_and_entities' (2, 3)." + } + ] +} + +snapshots['TestConnection.test_create_entity_admin_header 1'] = { + 'data': { + 'create_entity': { + 'entity': { + 'content': 'test_content', + 'id': [ + 3, + 6 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ], + 'published': False + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_update_entity_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'create' permissions for 'approve_entities' (2, 3)." + } + ] +} + +snapshots['TestConnection.test_update_entity_user_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'create' permissions for 'approve_entities' (2, 3)." + } + ] +} + +snapshots['TestConnection.test_update_entity_admin_header 1'] = { + 'data': { + 'update_entity': { + 'entity': { + 'content': 'lex entity 1', + 'id': [ + 2, + 22 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ], + 'published': True + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_delete_entity_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'delete' permissions for 'lexical_entries_and_entities' (2, 3)." + } + ] +} + +snapshots['TestConnection.test_delete_entity_not_owner_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'delete' permissions for 'lexical_entries_and_entities' (2, 4)." + } + ] +} + +snapshots['TestConnection.test_delete_entity_owner_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'delete' permissions for 'lexical_entries_and_entities' (2, 3)." + } + ] +} + +snapshots['TestConnection.test_delete_entity_admin_header 1'] = { + 'data': { + 'delete_entity': { + 'entity': { + 'content': 'link lex entity 2', + 'id': [ + 2, + 25 + ], + 'marked_for_deletion': True, + 'parent_id': [ + 2, + 21 + ], + 'published': False + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_gist 1'] = { + 'data': { + 'translationgist': { + 'id': [ + 1, + 193 + ], + 'marked_for_deletion': False, + 'translation': 'Word', + 'translationatoms': [ + { + 'content': 'Wort', + 'id': [ + 1, + 196 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 193 + ] + }, + { + 'content': 'Word', + 'id': [ + 1, + 195 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 193 + ] + }, + { + 'content': 'Word', + 'id': [ + 1, + 194 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 193 + ] + } + ], + 'type': 'Field' + } + } +} + +snapshots['TestConnection.test_create_gist_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_gist_user_header 1'] = { + 'data': { + 'create_translationgist': { + 'translationgist': { + 'id': [ + 4, + 6 + ], + 'marked_for_deletion': False, + 'translation': 'Translation missing for all locales', + 'translationatoms': [ + ], + 'type': 'Text' + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_create_gist_admin_header 1'] = { + 'data': { + 'create_translationgist': { + 'translationgist': { + 'id': [ + 3, + 7 + ], + 'marked_for_deletion': False, + 'translation': 'Translation missing for all locales', + 'translationatoms': [ + ], + 'type': 'Text' + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_delete_gist_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'delete' permissions for 'translations' [4, 4]." + } + ] +} + +snapshots['TestConnection.test_delete_gist_not_owners_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'delete' permissions for 'translations' [3, 4]." + } + ] +} + +snapshots['TestConnection.test_delete_gist_owner_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'delete' permissions for 'translations' [4, 7]." + } + ] +} + +snapshots['TestConnection.test_delete_gist_admin_header 1'] = { + 'data': { + 'delete_translationgist': { + 'translationgist': { + 'id': [ + 3, + 7 + ], + 'marked_for_deletion': True, + 'translation': 'Translation missing for all locales', + 'translationatoms': [ + ], + 'type': 'Text' + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_atom 1'] = { + 'data': { + 'translationatom': { + 'content': 'English language', + 'id': [ + 1, + 8 + ], + 'locale_id': 2, + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 3 + ] + } + } +} + +snapshots['TestConnection.test_create_atom_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "('Invalid client id (not registered on server). Try to logout and then login.', None)" + } + ] +} + +snapshots['TestConnection.test_create_atom_user_header 1'] = { + 'data': { + 'create_translationatom': { + 'translationatom': { + 'content': 'test atom content', + 'id': [ + 4, + 7 + ], + 'locale_id': 5, + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 61 + ] + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_create_atom_admin_header 1'] = { + 'data': { + 'create_translationatom': { + 'translationatom': { + 'content': 'test atom content', + 'id': [ + 3, + 8 + ], + 'locale_id': 6, + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 61 + ] + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_update_atom_no_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client None doesn't have 'edit' permissions for 'translations' [4, 8]." + } + ] +} + +snapshots['TestConnection.test_update_atom_not_owner_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'edit' permissions for 'translations' [3, 8]." + } + ] +} + +snapshots['TestConnection.test_update_atom_owner_header 1'] = { + 'data': None, + 'errors': [ + { + 'message': "Client 4 doesn't have 'edit' permissions for 'translations' [4, 8]." + } + ] +} + +snapshots['TestConnection.test_update_atom_admin_header 1'] = { + 'data': { + 'update_translationatom': { + 'translationatom': { + 'content': 'test content updated by admin', + 'id': [ + 3, + 8 + ], + 'locale_id': 22, + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 61 + ] + }, + 'triumph': True + } + } +} + +snapshots['TestConnection.test_get_perspective_list 1'] = { + 'data': { + 'perspective': { + 'authors': [ + { + 'id': 2, + 'name': 'Test' + }, + { + 'id': 1, + 'name': 'Администратор' + } + ], + 'columns': [ + { + 'id': [ + 2, + 11 + ], + 'parent_id': [ + 2, + 3 + ], + 'position': 1 + }, + { + 'id': [ + 2, + 12 + ], + 'parent_id': [ + 2, + 3 + ], + 'position': 2 + }, + { + 'id': [ + 2, + 13 + ], + 'parent_id': [ + 2, + 3 + ], + 'position': 3 + }, + { + 'id': [ + 2, + 14 + ], + 'parent_id': [ + 2, + 3 + ], + 'position': 4 + } + ], + 'id': [ + 2, + 3 + ], + 'lexical_entries': [ + { + 'entities': [ + { + 'content': 'lex entity 2', + 'data_type': 'Text', + 'id': [ + 2, + 23 + ], + 'locale_id': 2, + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 19 + ] + } + ], + 'id': [ + 2, + 19 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 3 + ] + }, + { + 'entities': [ + { + 'content': 'test_content', + 'data_type': 'Text', + 'id': [ + 3, + 6 + ], + 'locale_id': 2, + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ] + }, + { + 'content': 'lex entity 1', + 'data_type': 'Text', + 'id': [ + 2, + 22 + ], + 'locale_id': 2, + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 18 + ] + } + ], + 'id': [ + 2, + 18 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 3 + ] + } + ], + 'marked_for_deletion': False, + 'tree': [ + { + 'id': [ + 2, + 3 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 2, + 2 + ], + 'translation': 'Lexical Entries', + 'translation_gist_id': [ + 1, + 93 + ] + }, + { + 'id': [ + 2, + 2 + ], + 'marked_for_deletion': False, + 'parent_id': [ + 1, + 12 + ], + 'translation': 'Dictionary of Middle-Ob dialect Mansi', + 'translation_gist_id': [ + 1, + 61 + ] + }, + { + 'id': [ + 1, + 12 + ], + 'marked_for_deletion': False, + 'parent_id': None, + 'translation': 'Russian language', + 'translation_gist_id': [ + 1, + 2 + ] + } + ] + } + } +} diff --git a/test_gql/test_ids.txt b/test_gql/test_ids.txt new file mode 100644 index 000000000..7d16a5e4d --- /dev/null +++ b/test_gql/test_ids.txt @@ -0,0 +1,23 @@ +Test ids: +lex_entry 1: [2, 18] +lex_entry 2: [2, 19] +lex_link_entry 1: [2, 20] +lex_link_entry 2: [2, 21] + +lex_entity_1: [2, 22] +lex_entity_2: [2, 23] +link_lex_entity_1: [2, 24] +link_lex_entity_2: [2, 25] + + Field ids: +Field: [2, 5] + +Test_dict: [2, 2] +Test_persp: [2, 3] +Test_persp_link: [2, 4] + +Word gist: [1, 193] + +Test gist: [1, 61] + +English atom: [1, 8] diff --git a/test_gql/testing.ini b/test_gql/testing.ini new file mode 100644 index 000000000..378e3fc4f --- /dev/null +++ b/test_gql/testing.ini @@ -0,0 +1,148 @@ +### +# app configuration +# http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/environment.html +### + +[app:main] +use = egg:lingvodoc + +secret = 'secret string' + +pyramid.reload_templates = true +pyramid.debug_authorization = false +pyramid.debug_notfound = false +pyramid.debug_routematch = false +pyramid.default_locale_name = en +pyramid.includes = + pyramid_debugtoolbar + pyramid_tm + +#sqlalchemy.url = postgresql+psycopg2://postgres:@/lingvodoc_v_2_0 +sqlalchemy.url = postgresql+psycopg2://postgres:@/test_base_1 + +# By default, the toolbar only appears for clients from IP addresses +# '127.0.0.1' and '::1'. +# debugtoolbar.hosts = 127.0.0.1 ::1 + +### +# wsgi server configuration +### + +[alembic] + +sqlalchemy.url = postgresql+psycopg2://postgres:@/test_base_1 +script_location = alembic + +[server:main] +use = egg:waitress#main +host = 0.0.0.0 +port = 6543 +channel_timeout = 600 +cleanup_interval = 600 +max_request_body_size = 3073741824 +### +# logging configuration +# http://docs.pylonsproject.org/projects/pyramid/en/1.5-branch/narr/logging.html +### + +[loggers] +keys = root, lingvodoc, sqlalchemy + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console + +[logger_lingvodoc] +level = WARN +handlers = +qualname = lingvodoc + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine +# "level = INFO" logs SQL queries. +# "level = DEBUG" logs SQL queries and results. +# "level = WARN" logs neither. (Recommended for production systems.) + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(asctime)s %(levelname)-5.5s [%(name)s][%(threadName)s] %(message)s + +[app:accounts] +use = egg:lingvodoc +# no emphasis or special symbols should be used. +administrator_login = admin +administrator_password = password + +[backend:storage] +# disk or openstack +type = disk +path = /home/ehrmann/objects/ +prefix = http://localhost:6543/ +static_route = objects/ +#authurl = http://10.10.10.121:5000/v2.0 +#store = http://adelaide.intra.ispras.ru/horizon/project/containers +#user = admin +#key = tester +#auth_version = 2.0 +#tenant_name = admin + +[uwsgi] +socket = 0.0.0.0:6543 +protocol = http +master = true + +processes = 4 + +harakiri = 60 +harakiri-verbose = true +limit-post = 65536 +post-buffering = 8192 + +listen = 256 + +max-requests = 1000 + +reload-on-as = 128 +reload-on-rss = 96 +no-orphans = true + +log-slow = true + +virtualenv = /Users/al/environments/lingvodocenv/ + +callable = lingvodoc + +# Caching. +[cache:dogpile] +expiration_time = 36000 +backend = dogpile.cache.redis +;backend = dogpile.cache.memcached + +[cache:dogpile:args] +;redis_expiration_time = 60*60*2 +host = localhost +port = 6379 +db = 0 +distributed_lock = True + + +[smtp] +host = la.ru +username = noreply +password = norep +port = 25 +tls = True +debug = 0 diff --git a/test_gql/tests.py b/test_gql/tests.py new file mode 100755 index 000000000..c9aa94a3f --- /dev/null +++ b/test_gql/tests.py @@ -0,0 +1,1030 @@ +import pytest + +import os + +from subprocess import PIPE, Popen +from configparser import ConfigParser + +import transaction +from pyramid.httpexceptions import HTTPForbidden +from pyramid.paster import get_appsettings + + +from lingvodoc.scripts.initializedb import data_init +#from lingvodoc.utils.creation import create_dbdictionary +#from lingvodoc.schema.gql_holders import ResponseError +from lingvodoc.utils.search import translation_gist_search +from lingvodoc.models import ( + Dictionary, + DBSession, + Group, + BaseGroup, + Language, +) + +from graphene.test import Client + +#from lingvodoc.scheme import schema + +from sqlalchemy import create_engine +import webtest.http +import webtest +from pyramid import paster + + +class TestConnection: + + def setup_class(self): + self.alembic_ini_path = os.path.join( + os.path.dirname(__file__), 'testing.ini') + parser = ConfigParser() + parser.read(self.alembic_ini_path) + alembic_conf = dict() + for k, v in parser.items('alembic'): + alembic_conf[k] = v + dbname = alembic_conf['sqlalchemy.url'] + my_env = os.environ + pathdir = os.path.dirname(os.path.realpath(__file__)) + bashcommand = "alembic -c %s upgrade head" % self.alembic_ini_path + myapp = paster.get_app(self.alembic_ini_path) + self.app = webtest.TestApp(myapp) + args = bashcommand.split() + pathdir = "/".join(pathdir.split("/")[:-1]) + proc = Popen(args, cwd=pathdir, env=my_env) + proc.communicate() + + self.ws = webtest.http.StopableWSGIServer.create(myapp, port=6543, host="0.0.0.0") # todo: change to pserve + self.ws.wait() + self.set_server_is_up = True + + accounts = get_appsettings(self.alembic_ini_path, 'accounts') + # Create dictionary for tests + #engine = create_engine(dbname) + #DBSession.configure(bind=engine) + #self.create_dbdictionary(id=[1, None], parent_id=[1, 13]) + data_init(transaction.manager, accounts, dbname) + + # Get admin's and user's headers + self.admin_header = self.return_header_for_admin(self) + self.user_header = self.return_header_of_new_user(self) + #with open(os.path.dirname(__file__) + '/test_file.txt', 'w', encoding='utf-8') as file: + # file.write("one") + a = 2+1 + print(a) + + + + def teardown_class(self): + + bashcommand = "alembic -c %s downgrade base" % self.alembic_ini_path + args = bashcommand.split() + pathdir = os.path.dirname(os.path.realpath(__file__)) + pathdir = "/".join(pathdir.split("/")[:-1]) + my_env = os.environ + proc = Popen(args, cwd=pathdir, env=my_env) + #proc.communicate() + + # def create_dbdictionary(id=None, + # parent_id=None, + # translation_gist_id=None, + # additional_metadata=None, + # domain=0, + # category=0): + # client_id, object_id = id + # + # if not parent_id: + # raise + # parent_client_id, parent_object_id = parent_id + # translation_gist_client_id, translation_gist_object_id = translation_gist_id if translation_gist_id else ( + # None, None) + # + # duplicate_check = DBSession.query(Dictionary).filter_by(client_id=client_id, object_id=object_id).all() + # if duplicate_check: + # raise + # parent = DBSession.query(Language).filter_by(client_id=parent_client_id, object_id=parent_object_id).first() + # if not parent: + # raise + # + # resp = translation_gist_search("WiP") + # state_translation_gist_object_id, state_translation_gist_client_id = resp.object_id, resp.client_id + # dbdictionary_obj = Dictionary(client_id=client_id, + # object_id=object_id, + # state_translation_gist_object_id=state_translation_gist_object_id, + # state_translation_gist_client_id=state_translation_gist_client_id, + # parent=parent, + # translation_gist_client_id=translation_gist_client_id, + # translation_gist_object_id=translation_gist_object_id, + # additional_metadata=additional_metadata, + # domain=domain, + # category=category + # ) + # + # client = DBSession.query(Client).filter_by(id=client_id).first() + # user = client.user + # for base in DBSession.query(BaseGroup).filter_by(dictionary_default=True): + # new_group = Group(parent=base, + # subject_object_id=dbdictionary_obj.object_id, + # subject_client_id=dbdictionary_obj.client_id) + # if user not in new_group.users: + # new_group.users.append(user) + # DBSession.add(new_group) + # DBSession.flush() + # return dbdictionary_obj + + def graphql_request(self, query, variables="{}", header="", content_type="application/json"): + # if variables is None: + # params = query + # else: + #params = '{"variables":' + variables + ', "query": "' + query + '"}' + params = '{"variables":%s, "query": "%s"}' % (variables, query) + params = params.replace("\n", " ").replace("\t", ' ') + #params = params.replace("\\'", "") + response = self.app.post('/graphql', + params=params, + content_type=content_type, + headers={"Cookie": header}) + return response + + + def get_cookie_from_headers(self, headers): + string_headers = str(headers) + start_of_auth = string_headers.find("auth_tkt=", 0, 120) + finish_of_auth = string_headers.find("Max-Age=315360000", 120, 290) + auth_tkt = string_headers[start_of_auth:finish_of_auth] + start_of_client_id = string_headers.find("client_id", 900, 1000) + finish_of_client_id = string_headers.find("; Max-Age=315360000", start_of_client_id, start_of_client_id + 30) + client_id = string_headers[start_of_client_id:finish_of_client_id] + cookie = auth_tkt + "locale_id=2; " + client_id + return cookie + + def return_header_for_admin(self): + response = self.app.post('/login', params={'login': "admin", + 'password': 'password'}, headers={"Cookie": "locale_id=2"}) + return self.get_cookie_from_headers(self, response.headers) + + + def return_header_of_new_user(self): + self.app.post('/signup', params='''{"login":"tester", + "name":"tester", + "email":"tester@test.com", + "password":"password", + "day":2, + "month":3, + "year":1980}''', + content_type="application/json", + headers = {"Cookie" : "locale_id=2"}) + #response = self.app.post('/logout') + response = self.app.post('/login', params={'login': "tester", + 'password': "password"}, headers={"Cookie" : "locale_id=2"}) + return self.get_cookie_from_headers(self, response.headers) + + +# def test_hey(self, snapshot): +# response = self.app.post('/graphql', +# params='''query myQuery { +# dictionary(id: [2, 2]) { +# id +# translation +# parent_id +# marked_for_deletion +# translation_gist_id +# additional_metadata { +# blob_description +# } +# perspectives{id translation} +# +# } +# }''', +# content_type = "application/graphql", +# headers = {"Cookie" : self.admin_header}) +# snapshot.assert_match(response.json_body) +# +# + # def test_test(self, snapshot): + # variables = '{"id": [%s, %s]}' % ('2', '2') + # query = '''query myQuery($id:LingvodocID){ + # dictionary(id: $id) { + # id + # }}''' + # response = self.graphql_request(query, variables) + # snapshot.assert_match(response.json_body) +# +################################################################# +# Languages tests +################################################################# + def test_USE_BANHAMMER(self, snapshot): + query = '''mutation { + activate_deactivate_user(user_id: 3, is_active: false) { triumph } } + ''' + response = self.graphql_request(query, header=self.admin_header) + snapshot.assert_match(response.json_body) + + + def test_give_roles_to_user(self, snapshot): + query = '''mutation Add_roles { + add_perspective_roles(id: [2, 3], user_id:3 , roles_users:[8, 12, 13, 15, 20, 21, 22, 23, 24, 26]){ + triumph + + } + }''' + response = self.graphql_request(query, header=self.admin_header) + snapshot.assert_match(response.json_body) + + + def test_get_language(self, snapshot): + variables = '{"id": [%s, %s]}' % ('1', '13') # English language + query = '''query Language ($id: LingvodocID){ + language(id: $id) { + id + translation + parent_id + translation_gist_id + marked_for_deletion + dictionaries { + id + parent_id + translation + translation_gist_id + marked_for_deletion + state_translation_gist_id + category + domain + status + } + } + }''' + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_get_all_languages(self, snapshot): + query = '''query LanguagesList{ + languages { + id + translation + parent_id + translation_gist_id + marked_for_deletion + dictionaries { + id + parent_id + translation + translation_gist_id + marked_for_deletion + state_translation_gist_id + category + domain + status + } + } + }''' + response = self.graphql_request(query) + snapshot.assert_match(response.json_body) + + + def test_create_language_with_old_gist_none_header(self, snapshot): + query = '''mutation create_language{ + create_language(translation_gist_id: [1, 4], + parent_id: [1, 13]) + { + language { + id + translation_gist_id + } + } + }''' + response = self.graphql_request(query) + snapshot.assert_match(response.json_body) + + def test_create_language_with_old_gist_user_header(self, snapshot): + query = '''mutation create_language{ + create_language(translation_gist_id: [1, 4], + parent_id: [1, 13]) + { + language { + id + translation_gist_id + } + } + }''' + response = self.graphql_request(query, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_create_language_with_old_gist_admin_header(self, snapshot): + query = '''mutation create_language{ + create_language(translation_gist_id: [1, 4], + parent_id: [1, 13]) + { + language { + id + translation_gist_id + } + } + }''' + response = self.graphql_request(query, header=self.admin_header) + snapshot.assert_match(response.json_body) + + def test_create_language_with_new_gist_none_header(self, snapshot): + objectval = '[{"locale_id": 2, "content": "test content"}]' + variables = '{"atoms": %s}' % objectval + query = '''mutation create_language ($atoms: [ObjectVal]){ + create_language (translation_atoms: $atoms) + { + language { + id + translation_gist_id + } + } + }''' + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_create_language_with_new_gist_user_header(self, snapshot): + objectval = '[{"locale_id": 2, "content": "test content"}]' + variables = '{"atoms": %s}' % objectval + query = '''mutation create_language ($atoms: [ObjectVal]){ + create_language (translation_atoms: $atoms) + { + language { + id + translation_gist_id + } + } + }''' + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_create_language_with_new_gist_admin_header(self, snapshot): + objectval = '[{"locale_id": 2, "content": "test content 2"}]' + variables = '{"atoms": %s}' % objectval + query = '''mutation create_language ($atoms: [ObjectVal]){ + create_language (translation_atoms: $atoms) + { + language { + id + translation_gist_id + } + } + }''' + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + + def test_update_language_no_header(self, snapshot): + variables = '{"lang_id": [%s, %s], "gist_id": [%s, %s]}'%('1', '14', '1', '2') # Finnish language, Russian gist + query = '''mutation update_lang($lang_id: LingvodocID!, $gist_id: LingvodocID!) { + update_language(id: $lang_id, translation_gist_id: $gist_id) { + language { + id + translation_gist_id + } + } + }''' + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_update_language_user_header(self, snapshot): + variables = '{"lang_id": [%s, %s], "gist_id": [%s, %s]}'%('1', '14', '1', '2') # Finnish language, Russian gist + query = '''mutation update_lang($lang_id: LingvodocID!, $gist_id: LingvodocID!) { + update_language(id: $lang_id, translation_gist_id: $gist_id) { + language { + id + translation_gist_id + } + } + }''' + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_update_language_admin_header(self, snapshot): + variables = '{"lang_id": [%s, %s], "gist_id": [%s, %s]}'%('1', '14', '1', '2') # Finnish language, Russian gist + query = '''mutation update_lang($lang_id: LingvodocID!, $gist_id: LingvodocID!) { + update_language(id: $lang_id, translation_gist_id: $gist_id) { + language { + id + translation_gist_id + } + } + }''' + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + + def test_delete_language_no_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('1', '14') # Finnish language + query = '''mutation del_language($id: LingvodocID!) { + delete_language(id: $id) { + triumph + language { + id + translation + marked_for_deletion + } + } + }''' + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_delete_language_user_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('1', '14') # Finnish language + query = '''mutation del_language($id: LingvodocID!) { + delete_language(id: $id) { + triumph + language { + id + translation + marked_for_deletion + } + } + }''' + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_delete_language_admin_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('1', '14') # Finnish language + query = '''mutation del_language($id: LingvodocID!) { + delete_language(id: $id) { + triumph + language { + id + translation + marked_for_deletion + } + } + }''' + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + + +################################################################# +# Entities tests +################################################################# + + def test_get_entity(self, snapshot): + variables = '{"id": [%s, %s]}' % ('2', '22') + query = '''query getEntities ($id: LingvodocID!){ + entity(id: $id) { + id + marked_for_deletion + parent_id + content + } + }''' + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_create_entity_no_header(self, snapshot): + variables = '{"parent_id": [%s, %s], "field_id": [%s, %s], "content": "%s"}' % ( + '2', '18', '2', '5', 'test_content') + query = '''mutation createEntity ($parent_id: LingvodocID!, $field_id: LingvodocID!, $content: String){ + create_entity(parent_id: $parent_id, field_id: $field_id, content: $content) { + entity { + id + parent_id + content + marked_for_deletion + } + triumph + } + }''' + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_create_entity_user_header(self, snapshot): + variables = '{"parent_id": [%s, %s], "field_id": [%s, %s], "content": "%s"}' % ( + '2', '18', '2', '5', 'test_content') + query = '''mutation createEntity ($parent_id: LingvodocID!, $field_id: LingvodocID!, $content: String){ + create_entity(parent_id: $parent_id, field_id: $field_id, content: $content) { + entity { + id + parent_id + content + marked_for_deletion + published + } + triumph + } + }''' + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_create_entity_admin_header(self, snapshot): + variables = '{"parent_id": [%s, %s], "field_id": [%s, %s], "content": "%s"}' % ( + '2', '18', '2', '5', 'test_content') + query = '''mutation createEntity ($parent_id: LingvodocID!, $field_id: LingvodocID!, $content: String){ + create_entity(parent_id: $parent_id, field_id: $field_id, content: $content) { + entity { + id + parent_id + content + marked_for_deletion + published + } + triumph + } + }''' + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + + def test_update_entity_no_header(self, snapshot): + variables = '{"id": [%s, %s], "published": %s}' % ('2', '22', 'true') + query = '''mutation updateEntity ($id: LingvodocID!, $published: Boolean){ + update_entity(id: $id, published: $published) { + entity { + id + parent_id + content + marked_for_deletion + published + } + triumph + } + }''' + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_update_entity_user_header(self, snapshot): + variables = '{"id": [%s, %s], "published": %s}' % ('2', '23', 'true') + query = '''mutation updateEntity ($id: LingvodocID!, $published: Boolean){ + update_entity(id: $id, published: $published) { + entity { + id + parent_id + content + marked_for_deletion + published + } + triumph + } + }''' + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_update_entity_admin_header(self, snapshot): + variables = '{"id": [%s, %s], "published": %s}' % ('2', '22', 'true') + query = '''mutation updateEntity ($id: LingvodocID!, $published: Boolean){ + update_entity(id: $id, published: $published) { + entity { + id + parent_id + content + marked_for_deletion + published + } + triumph + } + }''' + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + + def test_delete_entity_no_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('2', '23') + query = '''mutation deleteEntity ($id: LingvodocID!){ + delete_entity(id: $id) { + entity { + id + parent_id + content + marked_for_deletion + published + } + triumph + } + }''' + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_delete_entity_not_owner_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('2', '24') + query = '''mutation deleteEntity ($id: LingvodocID!){ + delete_entity(id: $id) { + entity { + id + parent_id + content + marked_for_deletion + published + } + triumph + } + }''' + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_delete_entity_owner_header(self, snapshot): + #variables = '{"id": [%s, %s]}' % ('4', '3') + variables = '{"id": [%s, %s]}' % ('2', '22') + query = '''mutation deleteEntity ($id: LingvodocID!){ + delete_entity(id: $id) { + entity { + id + parent_id + content + marked_for_deletion + published + } + triumph + } + }''' + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_delete_entity_admin_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('2', '25') + query = '''mutation deleteEntity ($id: LingvodocID!){ + delete_entity(id: $id) { + entity { + id + parent_id + content + marked_for_deletion + published + } + triumph + } + }''' + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + +################################################################# +# Gists tests +################################################################# + + def test_get_gist(self, snapshot): + variables = '{"id": [%s, %s]}' % ('1', '193') + query = """query getTranslationGist($id:LingvodocID){ + translationgist (id: $id) { + id + marked_for_deletion + type + translation + translationatoms { + id + parent_id + marked_for_deletion + content + } + } + }""" + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_create_gist_no_header(self, snapshot): + variables = '{"type": "%s"}' % ("Text") + query = """mutation create_trans_gist($type: String!){ + create_translationgist(type: $type) { + translationgist { + id + type + marked_for_deletion + translation + translationatoms{ + id + parent_id + content + } + } + triumph + } + }""" + + + + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + + def test_create_gist_user_header(self, snapshot): + variables = '{"type": "%s"}' % ("Text") + query = """mutation create_trans_gist($type: String!){ + create_translationgist(type: $type) { + translationgist { + id + type + marked_for_deletion + translation + translationatoms{ + id + parent_id + content + } + } + triumph + } + }""" + + + + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_create_gist_admin_header(self, snapshot): + variables = '{"type": "%s"}' % ("Text") + query = """mutation create_trans_gist($type: String!){ + create_translationgist(type: $type) { + translationgist { + id + type + marked_for_deletion + translation + translationatoms{ + id + parent_id + content + } + } + triumph + } + }""" + + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + + def test_delete_gist_no_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('4', '4') + query = """mutation delete_translationgist($id: LingvodocID!){ + delete_translationgist(id: $id) { + translationgist { + id + type + marked_for_deletion + translation + translationatoms{ + id + parent_id + content + } + } + triumph + } + }""" + + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_delete_gist_not_owners_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('3', '4') + query = """mutation delete_translationgist($id: LingvodocID!){ + delete_translationgist(id: $id) { + translationgist { + id + type + marked_for_deletion + translation + translationatoms{ + id + parent_id + content + } + } + triumph + } + }""" + + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_delete_gist_owner_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('4', '7') + query = """mutation delete_translationgist($id: LingvodocID!){ + delete_translationgist(id: $id) { + translationgist { + id + type + marked_for_deletion + translation + translationatoms{ + id + parent_id + content + } + } + triumph + } + }""" + + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_delete_gist_admin_header(self, snapshot): + variables = '{"id": [%s, %s]}' % ('3', '7') + query = """mutation delete_translationgist($id: LingvodocID!){ + delete_translationgist(id: $id) { + translationgist { + id + type + marked_for_deletion + translation + translationatoms{ + id + parent_id + content + } + } + triumph + } + }""" + + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + +################################################################# +# Atoms tests +################################################################# + + def test_get_atom(self, snapshot): + variables = '{"id": [%s, %s]}' % ('1', '8') + query = '''query getAtom ($id: LingvodocID!){ + translationatom(id: $id) { + id + parent_id + marked_for_deletion + content + locale_id + } + }''' + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_create_atom_no_header(self, snapshot): + variables = '{"parent_id": [%s, %s], "locale_id": %s, "content": "%s"}' % ('1', '61', '7', "test atom content") + query = """mutation create_atom ($parent_id: LingvodocID!, $locale_id: Int!, $content: String!){ + create_translationatom(parent_id: $parent_id, locale_id: $locale_id, content: $content) { + translationatom{ + id + parent_id + content + marked_for_deletion + locale_id + } + triumph + } + }""" + + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_create_atom_user_header(self, snapshot): + variables = '{"parent_id": [%s, %s], "locale_id": %s, "content": "%s"}' % ('1', '61', '5', "test atom content") + query = """mutation create_atom ($parent_id: LingvodocID!, $locale_id: Int!, $content: String!){ + create_translationatom(parent_id: $parent_id, locale_id: $locale_id, content: $content) { + translationatom{ + id + parent_id + content + marked_for_deletion + locale_id + } + triumph + } + }""" + + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_create_atom_admin_header(self, snapshot): + variables = '{"parent_id": [%s, %s], "locale_id": %s, "content": "%s"}' % ('1', '61', '6', "test atom content") + query = """mutation create_atom ($parent_id: LingvodocID!, $locale_id: Int!, $content: String!){ + create_translationatom(parent_id: $parent_id, locale_id: $locale_id, content: $content) { + translationatom{ + id + parent_id + content + marked_for_deletion + locale_id + } + triumph + } + }""" + + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + + def test_update_atom_no_header(self, snapshot): + variables = '{"id": [%s, %s], "content": "%s", "locale_id": %s}' % ('4', '8', 'never happends', '20') + query = """mutation update_translationatom ($id: LingvodocID!, $content: String, $locale_id: Int){ + update_translationatom (id: $id, content: $content, locale_id: $locale_id) { + translationatom{ + id + parent_id + content + marked_for_deletion + locale_id + } + triumph + } + }""" + + response = self.graphql_request(query, variables) + snapshot.assert_match(response.json_body) + + def test_update_atom_not_owner_header(self, snapshot): + variables = '{"id": [%s, %s], "content": "%s", "locale_id": %s}' % ('3', '8', 'never happends', '20') + query = """mutation update_translationatom ($id: LingvodocID!, $content: String, $locale_id: Int){ + update_translationatom (id: $id, content: $content, locale_id: $locale_id) { + translationatom{ + id + parent_id + content + marked_for_deletion + locale_id + } + triumph + } + }""" + + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_update_atom_owner_header(self, snapshot): + variables = '{"id": [%s, %s], "content": "%s", "locale_id": %s}' % ('4', '8', 'test updated content', '21') + query = """mutation update_translationatom ($id: LingvodocID!, $content: String, $locale_id: Int){ + update_translationatom (id: $id, content: $content, locale_id: $locale_id) { + translationatom{ + id + parent_id + content + marked_for_deletion + locale_id + } + triumph + } + }""" + + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) + + def test_update_atom_admin_header(self, snapshot): + variables = '{"id": [%s, %s], "content": "%s", "locale_id": %s}' % ('3', '8', 'test content updated by admin', '22') + query = """mutation update_translationatom ($id: LingvodocID!, $content: String, $locale_id: Int){ + update_translationatom (id: $id, content: $content, locale_id: $locale_id) { + translationatom{ + id + parent_id + content + marked_for_deletion + locale_id + } + triumph + } + }""" + + response = self.graphql_request(query, variables, header=self.admin_header) + snapshot.assert_match(response.json_body) + + +################################################################# +# Dictionary tests +################################################################# + # + # def test_get_all_dictionaries_published_true(self, snapshot): + # query = '''query DictionaryList { + # dictionaries(published: true, mode:1) { + # id + # translation + # parent_id + # translation_gist_id + # state_translation_gist_id + # category + # domain + # } + # }''' + # response = self.graphql_request(query, header=self.user_header) + # snapshot.assert_match(response.json_body) + + def test_get_perspective_list(self, snapshot): + variables = '{"id": [%s, %s], "mode": "%s"}' % ('2', '3', 'all') + query = """query PerspectiveList($id:LingvodocID, $mode:String){ + perspective (id: $id) { + id + lexical_entries (mode: $mode){ + id + marked_for_deletion + parent_id + entities { + id + marked_for_deletion + parent_id + content + locale_id + data_type + } + } + columns{ + id + parent_id + position + } + marked_for_deletion + authors { + id + name + } + tree { + translation + translation_gist_id + parent_id + id + marked_for_deletion + } + } + }""" + response = self.graphql_request(query, variables, header=self.user_header) + snapshot.assert_match(response.json_body) \ No newline at end of file