def initialise(self, basedir, filename=None): self.component_manager = new_component_manager() self.register_components() self.config().basedir = basedir self.config().resource_limited = self.resource_limited self.activate_components() self.initialise_error_handling() register_component_manager(self.component_manager, self.config()["user_id"]) self.execute_user_plugin_dir() self.activate_saved_plugins() # Loading the database should come after all user plugins have been # loaded, since these could be needed e.g. for a card type in the # database. self.load_database(filename) self.log().started_program() self.log().started_scheduler() self.log().loaded_database() # Finally, we can activate the main widget and upgrade if needed. self.main_widget().activate() if self.upgrade_needed: from mnemosyne.libmnemosyne.upgrades.upgrade_database \ import UpgradeDatabase UpgradeDatabase(self.component_manager).run(self.file_to_upgrade)
def __init__(self, upload_science_logs, interested_in_old_reps, asynchronous_database=False): """When 'upload_science_logs' is set to 'None', it means that its value is user-specified through the GUI. Explicitly setting this to True or False overrides the user choice. For mobile clients, it is recommended that you set 'upload_science_logs' to 'False'. We need to specify this as an argument here, so that we can inject it on time to prevent the uploader thread from starting. 'interested_in_old_reps' can be set to 'False' on a mobile client which does not show historical statistical data, in order to speed up the initial sync and save disk space. We've specified this as a non-default argument here, in order to force front-end writers to consider it. Setting 'asynchronous_database' to True increases the risk of data loss and should only be done to speed up the test suite. """ sys.excepthook = self.handle_exception self.upload_science_logs = upload_science_logs self.interested_in_old_reps = interested_in_old_reps self.asynchronous_database = asynchronous_database self.component_manager = new_component_manager() self.components = [ ("mnemosyne.libmnemosyne.databases.SQLite", "SQLite"), ("mnemosyne.libmnemosyne.configuration", "Configuration"), ("mnemosyne.libmnemosyne.loggers.database_logger", "DatabaseLogger"), ("mnemosyne.libmnemosyne.schedulers.SM2_mnemosyne", "SM2Mnemosyne"), ("mnemosyne.libmnemosyne.stopwatch", "Stopwatch"), ("mnemosyne.libmnemosyne.card_types.front_to_back", "FrontToBack"), ("mnemosyne.libmnemosyne.card_types.both_ways", "BothWays"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "Vocabulary"), ("mnemosyne.libmnemosyne.card_types.both_ways", "FrontToBackToBothWays"), ("mnemosyne.libmnemosyne.card_types.both_ways", "BothWaysToFrontToBack"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "FrontToBackToVocabulary"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "BothWaysToVocabulary"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "VocabularyToFrontToBack"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "VocabularyToBothWays"), ("mnemosyne.libmnemosyne.render_chains.default_render_chain", "DefaultRenderChain"), ("mnemosyne.libmnemosyne.render_chains.plain_text_chain", "PlainTextChain"), ("mnemosyne.libmnemosyne.render_chains.sync_to_card_only_client", "SyncToCardOnlyClient"), ("mnemosyne.libmnemosyne.render_chains.card_browser_render_chain", "CardBrowserRenderChain"), ("mnemosyne.libmnemosyne.filters.latex", "CheckForUpdatedLatexFiles"), ("mnemosyne.libmnemosyne.filters.latex", "LatexFilenamesFromData"), ("mnemosyne.libmnemosyne.filters.latex", "DeleteUnusedLatexFiles"), ("mnemosyne.libmnemosyne.filters.latex", "PreprocessClozeLatex"), ("mnemosyne.libmnemosyne.filters.latex", "PostprocessQAClozeLatex"), ("mnemosyne.libmnemosyne.controllers.default_controller", "DefaultController"), ("mnemosyne.libmnemosyne.review_controllers.SM2_controller", "SM2Controller"), ("mnemosyne.libmnemosyne.card_types.map", "MapPlugin"), ("mnemosyne.libmnemosyne.card_types.cloze", "ClozePlugin"), ("mnemosyne.libmnemosyne.card_types.sentence", "SentencePlugin"), ("mnemosyne.libmnemosyne.criteria.default_criterion", "DefaultCriterion"), ("mnemosyne.libmnemosyne.databases.SQLite_criterion_applier", "DefaultCriterionApplier"), ("mnemosyne.libmnemosyne.plugins.cramming_plugin", "CrammingPlugin"), ("mnemosyne.libmnemosyne.statistics_pages.schedule", "Schedule"), ("mnemosyne.libmnemosyne.statistics_pages.retention_score", "RetentionScore"), ("mnemosyne.libmnemosyne.statistics_pages.cards_added", "CardsAdded"), ("mnemosyne.libmnemosyne.statistics_pages.cards_learned", "CardsLearned"), ("mnemosyne.libmnemosyne.statistics_pages.grades", "Grades"), ("mnemosyne.libmnemosyne.statistics_pages.easiness", "Easiness"), ("mnemosyne.libmnemosyne.statistics_pages.current_card", "CurrentCard"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_mem", "Mnemosyne1Mem"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_xml", "Mnemosyne1XML"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_cards", "Mnemosyne2Cards"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_db", "Mnemosyne2Db"), ("mnemosyne.libmnemosyne.file_formats.tsv", "Tsv"), ("mnemosyne.libmnemosyne.file_formats.supermemo_7_txt", "SuperMemo7Txt"), ("mnemosyne.libmnemosyne.file_formats.smconv_XML", "Smconv_XML"), ("mnemosyne.libmnemosyne.file_formats.cuecard_wcu", "CuecardWcu") ] self.extra_components_for_plugin = {}
def __init__(self, upload_science_logs, interested_in_old_reps, asynchronous_database=False): """When 'upload_science_logs' is set to 'None', it means that its value is user-specified through the GUI. Explicitly setting this to True or False overrides the user choice. For mobile clients, it is recommended that you set 'upload_science_logs' to 'False'. We need to specify this as an argument here, so that we can inject it on time to prevent the uploader thread from starting. 'interested_in_old_reps' can be set to 'False' on a mobile client which does not show historical statistical data, in order to speed up the initial sync and save disk space. We've specified this as a non-default argument here, in order to force front-end writers to consider it. Setting 'asynchronous_database' to True increases the risk of data loss and should only be done to speed up the test suite. """ sys.excepthook = self.handle_exception self.upload_science_logs = upload_science_logs self.interested_in_old_reps = interested_in_old_reps self.asynchronous_database = asynchronous_database self.component_manager = new_component_manager() self.components = [ ("mnemosyne.libmnemosyne.databases.SQLite", "SQLite"), ("mnemosyne.libmnemosyne.database", "DatabaseMaintenance"), ("mnemosyne.libmnemosyne.configuration", "Configuration"), ("mnemosyne.libmnemosyne.loggers.database_logger", "DatabaseLogger"), ("mnemosyne.libmnemosyne.schedulers.SM2_mnemosyne", "SM2Mnemosyne"), ("mnemosyne.libmnemosyne.stopwatch", "Stopwatch"), ("mnemosyne.libmnemosyne.card_types.front_to_back", "FrontToBack"), ("mnemosyne.libmnemosyne.card_types.both_ways", "BothWays"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "Vocabulary"), ("mnemosyne.libmnemosyne.card_types.both_ways", "FrontToBackToBothWays"), ("mnemosyne.libmnemosyne.card_types.both_ways", "BothWaysToFrontToBack"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "FrontToBackToVocabulary"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "BothWaysToVocabulary"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "VocabularyToFrontToBack"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "VocabularyToBothWays"), ("mnemosyne.libmnemosyne.render_chains.default_render_chain", "DefaultRenderChain"), ("mnemosyne.libmnemosyne.render_chains.plain_text_chain", "PlainTextChain"), ("mnemosyne.libmnemosyne.render_chains.sync_to_card_only_client", "SyncToCardOnlyClient"), ("mnemosyne.libmnemosyne.render_chains.card_browser_render_chain", "CardBrowserRenderChain"), ("mnemosyne.libmnemosyne.filters.latex", "CheckForUpdatedLatexFiles"), ("mnemosyne.libmnemosyne.filters.latex", "LatexFilenamesFromData"), ("mnemosyne.libmnemosyne.filters.latex", "DeleteUnusedLatexFiles"), ("mnemosyne.libmnemosyne.filters.latex", "PreprocessClozeLatex"), ("mnemosyne.libmnemosyne.filters.latex", "PostprocessQAClozeLatex"), ("mnemosyne.libmnemosyne.controllers.default_controller", "DefaultController"), ("mnemosyne.libmnemosyne.review_controllers.SM2_controller", "SM2Controller"), ("mnemosyne.libmnemosyne.card_types.map", "MapPlugin"), ("mnemosyne.libmnemosyne.card_types.cloze", "ClozePlugin"), ("mnemosyne.libmnemosyne.card_types.sentence", "SentencePlugin"), ("mnemosyne.libmnemosyne.criteria.default_criterion", "DefaultCriterion"), ("mnemosyne.libmnemosyne.databases.SQLite_criterion_applier", "DefaultCriterionApplier"), ("mnemosyne.libmnemosyne.plugins.cramming_plugin", "CrammingPlugin"), ("mnemosyne.libmnemosyne.statistics_pages.schedule", "Schedule"), ("mnemosyne.libmnemosyne.statistics_pages.retention_score", "RetentionScore"), ("mnemosyne.libmnemosyne.statistics_pages.cards_added", "CardsAdded"), ("mnemosyne.libmnemosyne.statistics_pages.cards_learned", "CardsLearned"), ("mnemosyne.libmnemosyne.statistics_pages.grades", "Grades"), ("mnemosyne.libmnemosyne.statistics_pages.easiness", "Easiness"), ("mnemosyne.libmnemosyne.statistics_pages.current_card", "CurrentCard"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_mem", "Mnemosyne1Mem"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_xml", "Mnemosyne1XML"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_cards", "Mnemosyne2Cards"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_db", "Mnemosyne2Db"), ("mnemosyne.libmnemosyne.file_formats.tsv", "Tsv"), ("mnemosyne.libmnemosyne.file_formats.supermemo_7_txt", "SuperMemo7Txt"), ("mnemosyne.libmnemosyne.file_formats.smconv_XML", "Smconv_XML"), ("mnemosyne.libmnemosyne.file_formats.cuecard_wcu", "CuecardWcu")] self.extra_components_for_plugin = {}
def __init__(self, upload_science_logs, interested_in_old_reps, asynchronous_database=False): """When 'upload_science_logs' is set to 'None', it means that its value is user-specified through the GUI. Explicitly setting this to True or False overrides the user choice. For mobile clients, it is recommended that you set 'upload_science_logs' to 'False'. We need to specify this as an argument here, so that we can inject it on time to prevent the uploader thread from starting. 'interested_in_old_reps' can be set to 'False' on a mobile client which does not show historical statistical data, in order to speed up the initial sync and save disk space. We've specified this as a non-default argument here, in order to force front-end writers to consider it. Setting 'asynchronous_database' to True increases the risk of data loss and should only be done to speed up the test suite. """ sys.excepthook = self.handle_exception self.upload_science_logs = upload_science_logs self.interested_in_old_reps = interested_in_old_reps self.asynchronous_database = asynchronous_database self.component_manager = new_component_manager() self.components = [ ("mnemosyne.libmnemosyne.databases.SQLite", "SQLite"), ("mnemosyne.libmnemosyne.database", "DatabaseMaintenance"), ("mnemosyne.libmnemosyne.configuration", "Configuration"), ("mnemosyne.libmnemosyne.loggers.database_logger", "DatabaseLogger"), ("mnemosyne.libmnemosyne.stopwatch", "Stopwatch"), ("mnemosyne.libmnemosyne.card_types.front_to_back", "FrontToBack"), ("mnemosyne.libmnemosyne.card_types.both_ways", "BothWays"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "Vocabulary"), ("mnemosyne.libmnemosyne.card_types.both_ways", "FrontToBackToBothWays"), ("mnemosyne.libmnemosyne.card_types.both_ways", "BothWaysToFrontToBack"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "FrontToBackToVocabulary"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "BothWaysToVocabulary"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "VocabularyToFrontToBack"), ("mnemosyne.libmnemosyne.card_types.vocabulary", "VocabularyToBothWays"), ("mnemosyne.libmnemosyne.render_chains.default_render_chain", "DefaultRenderChain"), ("mnemosyne.libmnemosyne.render_chains.plain_text_chain", "PlainTextChain"), ("mnemosyne.libmnemosyne.render_chains.sync_to_card_only_client", "SyncToCardOnlyClient"), ("mnemosyne.libmnemosyne.render_chains.card_browser_render_chain", "CardBrowserRenderChain"), ("mnemosyne.libmnemosyne.filters.latex", "CheckForUpdatedLatexFiles"), ("mnemosyne.libmnemosyne.filters.latex", "LatexFilenamesFromData"), ("mnemosyne.libmnemosyne.filters.latex", "DeleteUnusedLatexFiles"), ("mnemosyne.libmnemosyne.filters.latex", "PreprocessClozeLatex"), ("mnemosyne.libmnemosyne.filters.latex", "PostprocessQAClozeLatex"), ("mnemosyne.libmnemosyne.controllers.default_controller", "DefaultController"), ("mnemosyne.libmnemosyne.study_modes.scheduled_forgotten_new", "ScheduledForgottenNew"), ("mnemosyne.libmnemosyne.study_modes.new_only", "NewOnly"), ("mnemosyne.libmnemosyne.study_modes.cram_all", "CramAll"), ("mnemosyne.libmnemosyne.study_modes.cram_recent", "CramRecent"), ("mnemosyne.libmnemosyne.card_types.map", "MapPlugin"), ("mnemosyne.libmnemosyne.card_types.cloze", "ClozePlugin"), ("mnemosyne.libmnemosyne.card_types.sentence", "SentencePlugin"), ("mnemosyne.libmnemosyne.card_types.M_sided", "MSided"), ("mnemosyne.libmnemosyne.criteria.default_criterion", "DefaultCriterion"), ("mnemosyne.libmnemosyne.databases.SQLite_criterion_applier", "DefaultCriterionApplier"), ("mnemosyne.libmnemosyne.statistics_pages.schedule", "Schedule"), ("mnemosyne.libmnemosyne.statistics_pages.retention_score", "RetentionScore"), ("mnemosyne.libmnemosyne.statistics_pages.cards_added", "CardsAdded"), ("mnemosyne.libmnemosyne.statistics_pages.cards_learned", "CardsLearned"), ("mnemosyne.libmnemosyne.statistics_pages.grades", "Grades"), ("mnemosyne.libmnemosyne.statistics_pages.easiness", "Easiness"), ("mnemosyne.libmnemosyne.statistics_pages.current_card", "CurrentCard"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_mem", "Mnemosyne1Mem"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne1_xml", "Mnemosyne1XML"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_cards", "Mnemosyne2Cards"), ("mnemosyne.libmnemosyne.file_formats.mnemosyne2_db", "Mnemosyne2Db"), ("mnemosyne.libmnemosyne.file_formats.tsv", "Tsv"), ("mnemosyne.libmnemosyne.file_formats.anki2", "Anki2"), ("mnemosyne.libmnemosyne.file_formats.supermemo_7_txt", "SuperMemo7Txt"), ("mnemosyne.libmnemosyne.file_formats.smconv_XML", "Smconv_XML"), ("mnemosyne.libmnemosyne.file_formats.cuecard_wcu", "CuecardWcu"), ("mnemosyne.libmnemosyne.translator", "Translator"), ("mnemosyne.libmnemosyne.pronouncer", "Pronouncer"), ("mnemosyne.libmnemosyne.translators.google_translator", "GoogleTranslator"), ("mnemosyne.libmnemosyne.pronouncers.google_pronouncer", "GooglePronouncer"), ("mnemosyne.libmnemosyne.languages.afrikaans", "Afrikaans"), ("mnemosyne.libmnemosyne.languages.albanian", "Albanian"), ("mnemosyne.libmnemosyne.languages.amharic", "Amharic"), ("mnemosyne.libmnemosyne.languages.arabic", "Arabic"), ("mnemosyne.libmnemosyne.languages.armenian", "Armenian"), ("mnemosyne.libmnemosyne.languages.azerbaijani", "Azerbaijani"), ("mnemosyne.libmnemosyne.languages.basque", "Basque"), ("mnemosyne.libmnemosyne.languages.belarusian", "Belarusian"), ("mnemosyne.libmnemosyne.languages.bengali", "Bengali"), ("mnemosyne.libmnemosyne.languages.bosnian", "Bosnian"), ("mnemosyne.libmnemosyne.languages.bulgarian", "Bulgarian"), ("mnemosyne.libmnemosyne.languages.catalan", "Catalan"), ("mnemosyne.libmnemosyne.languages.cebuano", "Cebuano"), ("mnemosyne.libmnemosyne.languages.chinese", "Chinese"), ("mnemosyne.libmnemosyne.languages.corsican", "Corsican"), ("mnemosyne.libmnemosyne.languages.croatian", "Croatian"), ("mnemosyne.libmnemosyne.languages.czech", "Czech"), ("mnemosyne.libmnemosyne.languages.danish", "Danish"), ("mnemosyne.libmnemosyne.languages.dutch", "Dutch"), ("mnemosyne.libmnemosyne.languages.english", "English"), ("mnemosyne.libmnemosyne.languages.esperanto", "Esperanto"), ("mnemosyne.libmnemosyne.languages.estonian", "Estonian"), ("mnemosyne.libmnemosyne.languages.finnish", "Finnish"), ("mnemosyne.libmnemosyne.languages.french", "French"), ("mnemosyne.libmnemosyne.languages.frisian", "Frisian"), ("mnemosyne.libmnemosyne.languages.gaelic", "Gaelic"), ("mnemosyne.libmnemosyne.languages.galician", "Galician"), ("mnemosyne.libmnemosyne.languages.georgian", "Georgian"), ("mnemosyne.libmnemosyne.languages.german", "German"), ("mnemosyne.libmnemosyne.languages.greek", "Greek"), ("mnemosyne.libmnemosyne.languages.gujarati", "Gujarati"), ("mnemosyne.libmnemosyne.languages.haitian", "Haitian"), ("mnemosyne.libmnemosyne.languages.hausa", "Hausa"), ("mnemosyne.libmnemosyne.languages.hawaiian", "Hawaiian"), ("mnemosyne.libmnemosyne.languages.hebrew", "Hebrew"), ("mnemosyne.libmnemosyne.languages.hindi", "Hindi"), ("mnemosyne.libmnemosyne.languages.hmong", "Hmong"), ("mnemosyne.libmnemosyne.languages.hungarian", "Hungarian"), ("mnemosyne.libmnemosyne.languages.icelandic", "Icelandic"), ("mnemosyne.libmnemosyne.languages.igbo", "Igbo"), ("mnemosyne.libmnemosyne.languages.indonesian", "Indonesian"), ("mnemosyne.libmnemosyne.languages.irish", "Irish"), ("mnemosyne.libmnemosyne.languages.italian", "Italian"), ("mnemosyne.libmnemosyne.languages.japanese", "Japanese"), ("mnemosyne.libmnemosyne.languages.javanese", "Javanese"), ("mnemosyne.libmnemosyne.languages.kannada", "Kannada"), ("mnemosyne.libmnemosyne.languages.kazakh", "Kazakh"), ("mnemosyne.libmnemosyne.languages.khmer", "Khmer"), ("mnemosyne.libmnemosyne.languages.korean", "Korean"), ("mnemosyne.libmnemosyne.languages.kurdish", "Kurdish"), ("mnemosyne.libmnemosyne.languages.kyrgyz", "Kyrgyz"), ("mnemosyne.libmnemosyne.languages.lao", "Lao"), ("mnemosyne.libmnemosyne.languages.latin", "Latin"), ("mnemosyne.libmnemosyne.languages.latvian", "Latvian"), ("mnemosyne.libmnemosyne.languages.lithuanian", "Lithuanian"), ("mnemosyne.libmnemosyne.languages.luxembourgish", "Luxembourgish"), ("mnemosyne.libmnemosyne.languages.macedonian", "Macedonian"), ("mnemosyne.libmnemosyne.languages.malagasy", "Malagasy"), ("mnemosyne.libmnemosyne.languages.malay", "Malay"), ("mnemosyne.libmnemosyne.languages.malayalam", "Malayalam"), ("mnemosyne.libmnemosyne.languages.maltese", "Maltese"), ("mnemosyne.libmnemosyne.languages.maori", "Maori"), ("mnemosyne.libmnemosyne.languages.marathi", "Marathi"), ("mnemosyne.libmnemosyne.languages.mongolian", "Mongolian"), ("mnemosyne.libmnemosyne.languages.myanmar", "Myanmar"), ("mnemosyne.libmnemosyne.languages.nepali", "Nepali"), ("mnemosyne.libmnemosyne.languages.norwegian", "Norwegian"), ("mnemosyne.libmnemosyne.languages.nyanja", "Nyanja"), ("mnemosyne.libmnemosyne.languages.pashto", "Pashto"), ("mnemosyne.libmnemosyne.languages.persian", "Persian"), ("mnemosyne.libmnemosyne.languages.polish", "Polish"), ("mnemosyne.libmnemosyne.languages.portuguese", "Portuguese"), ("mnemosyne.libmnemosyne.languages.punjabi", "Punjabi"), ("mnemosyne.libmnemosyne.languages.romanian", "Romanian"), ("mnemosyne.libmnemosyne.languages.russian", "Russian"), ("mnemosyne.libmnemosyne.languages.samoan", "Samoan"), ("mnemosyne.libmnemosyne.languages.serbian", "Serbian"), ("mnemosyne.libmnemosyne.languages.sesotho", "Sesotho"), ("mnemosyne.libmnemosyne.languages.shona", "Shona"), ("mnemosyne.libmnemosyne.languages.sindhi", "Sindhi"), ("mnemosyne.libmnemosyne.languages.sinhala", "Sinhala"), ("mnemosyne.libmnemosyne.languages.slovak", "Slovak"), ("mnemosyne.libmnemosyne.languages.slovenian", "Slovenian"), ("mnemosyne.libmnemosyne.languages.somali", "Somali"), ("mnemosyne.libmnemosyne.languages.spanish", "Spanish"), ("mnemosyne.libmnemosyne.languages.sundanese", "Sundanese"), ("mnemosyne.libmnemosyne.languages.swahili", "Swahili"), ("mnemosyne.libmnemosyne.languages.swedish", "Swedish"), ("mnemosyne.libmnemosyne.languages.tagalog", "Tagalog"), ("mnemosyne.libmnemosyne.languages.tajik", "Tajik"), ("mnemosyne.libmnemosyne.languages.tamil", "Tamil"), ("mnemosyne.libmnemosyne.languages.telugu", "Telugu"), ("mnemosyne.libmnemosyne.languages.thai", "Thai"), ("mnemosyne.libmnemosyne.languages.turkish", "Turkish"), ("mnemosyne.libmnemosyne.languages.ukrainian", "Ukrainian"), ("mnemosyne.libmnemosyne.languages.urdu", "Urdu"), ("mnemosyne.libmnemosyne.languages.uzbek", "Uzbek"), ("mnemosyne.libmnemosyne.languages.vietnamese", "Vietnamese"), ("mnemosyne.libmnemosyne.languages.welsh", "Welsh"), ("mnemosyne.libmnemosyne.languages.xhosa", "Xhosa"), ("mnemosyne.libmnemosyne.languages.yiddish", "Yiddish"), ("mnemosyne.libmnemosyne.languages.yoruba", "Yoruba"), ("mnemosyne.libmnemosyne.languages.zulu", "Zulu") ] self.gui_for_component = {}