From d71adcfac7eba7d222029c3da1ed6ef11ca54d55 Mon Sep 17 00:00:00 2001 From: "itdrui.de" Date: Thu, 19 Feb 2026 14:55:58 +0100 Subject: [PATCH] ui: make user-visible texts clearer and more human --- addon/addon.xml | 4 +- addon/default.py | 96 ++++++++++++++-------------- addon/resources/settings.xml | 120 +++++++++++++++++------------------ docs/PLUGIN_DEVELOPMENT.md | 2 +- 4 files changed, 111 insertions(+), 111 deletions(-) diff --git a/addon/addon.xml b/addon/addon.xml index 9b4f369..23ff847 100644 --- a/addon/addon.xml +++ b/addon/addon.xml @@ -10,8 +10,8 @@ video - ViewIt Kodi Plugin - Streaming-Addon für Streamingseiten: Suche, Staffeln/Episoden und Wiedergabe. + Suche und Wiedergabe fuer mehrere Quellen + Findet Titel in unterstuetzten Quellen und startet Filme oder Episoden direkt in Kodi. icon.png diff --git a/addon/default.py b/addon/default.py index 0a1dc11..f5e8ff5 100644 --- a/addon/default.py +++ b/addon/default.py @@ -1128,7 +1128,7 @@ def _sync_update_version_settings() -> None: def _show_root_menu() -> None: handle = _get_handle() _log("Root-Menue wird angezeigt.") - _add_directory_item(handle, "Globale Suche", "search") + _add_directory_item(handle, "Suche in allen Quellen", "search") plugins = _discover_plugins() for plugin_name in sorted(plugins.keys(), key=lambda value: value.casefold()): @@ -1143,7 +1143,7 @@ def _show_plugin_menu(plugin_name: str) -> None: plugin_name = (plugin_name or "").strip() plugin = _discover_plugins().get(plugin_name) if not plugin: - xbmcgui.Dialog().notification("Plugin", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Quelle", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -1167,7 +1167,7 @@ def _show_plugin_menu(plugin_name: str) -> None: _add_directory_item(handle, "Serien", "series_catalog", {"plugin": plugin_name, "page": "1"}, is_folder=True) if _plugin_has_capability(plugin, "popular_series"): - _add_directory_item(handle, "Meist gesehen", "popular", {"plugin": plugin_name, "page": "1"}, is_folder=True) + _add_directory_item(handle, "Beliebte Serien", "popular", {"plugin": plugin_name, "page": "1"}, is_folder=True) xbmcplugin.endOfDirectory(handle) @@ -1176,7 +1176,7 @@ def _show_plugin_search(plugin_name: str) -> None: plugin_name = (plugin_name or "").strip() plugin = _discover_plugins().get(plugin_name) if not plugin: - xbmcgui.Dialog().notification("Suche", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Suche", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) _show_root_menu() return @@ -1197,7 +1197,7 @@ def _show_plugin_search_results(plugin_name: str, query: str) -> None: query = (query or "").strip() plugin = _discover_plugins().get(plugin_name) if not plugin: - xbmcgui.Dialog().notification("Suche", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Suche", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -1208,8 +1208,8 @@ def _show_plugin_search_results(plugin_name: str, query: str) -> None: list_items: list[dict[str, object]] = [] canceled = False try: - with _progress_dialog("Suche läuft", f"{plugin_name} (1/1) starte…") as progress: - canceled = progress(5, f"{plugin_name} (1/1) Suche…") + with _progress_dialog("Suche laeuft", f"{plugin_name} (1/1) startet...") as progress: + canceled = progress(5, f"{plugin_name} (1/1) Suche...") search_coro = plugin.search_titles(query) try: results = _run_async(search_coro) @@ -1240,7 +1240,7 @@ def _show_plugin_search_results(plugin_name: str, query: str) -> None: if _needs_tmdb(meta_labels, meta_art, want_plot=show_plot, want_art=show_art): tmdb_titles.append(title) if show_tmdb and tmdb_titles and not canceled: - canceled = progress(35, f"{plugin_name} (1/1) Metadaten…") + canceled = progress(35, f"{plugin_name} (1/1) Metadaten...") tmdb_prefetched = _tmdb_labels_and_art_bulk(list(tmdb_titles)) total_results = max(1, len(results)) @@ -1415,7 +1415,7 @@ def _series_url_params(plugin: BasisPlugin, title: str) -> dict[str, str]: def _show_search() -> None: _log("Suche gestartet.") dialog = xbmcgui.Dialog() - query = dialog.input("Serientitel eingeben", type=xbmcgui.INPUT_ALPHANUM).strip() + query = dialog.input("Titel eingeben", type=xbmcgui.INPUT_ALPHANUM).strip() if not query: _log("Suche abgebrochen (leere Eingabe).", xbmc.LOGDEBUG) _show_root_menu() @@ -1430,18 +1430,18 @@ def _show_search_results(query: str) -> None: _set_content(handle, "tvshows") plugins = _discover_plugins() if not plugins: - xbmcgui.Dialog().notification("Suche", "Keine Plugins gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Suche", "Keine Quellen gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return list_items: list[dict[str, object]] = [] canceled = False plugin_entries = list(plugins.items()) total_plugins = max(1, len(plugin_entries)) - with _progress_dialog("Suche läuft", "Suche gestartet…") as progress: + with _progress_dialog("Suche laeuft", "Suche startet...") as progress: for plugin_index, (plugin_name, plugin) in enumerate(plugin_entries, start=1): range_start = int(((plugin_index - 1) / float(total_plugins)) * 100) range_end = int((plugin_index / float(total_plugins)) * 100) - canceled = progress(range_start, f"{plugin_name} ({plugin_index}/{total_plugins}) Suche…") + canceled = progress(range_start, f"{plugin_name} ({plugin_index}/{total_plugins}) Suche...") if canceled: break search_coro = plugin.search_titles(query) @@ -1476,7 +1476,7 @@ def _show_search_results(query: str) -> None: if show_tmdb and tmdb_titles: canceled = progress( range_start + int((range_end - range_start) * 0.35), - f"{plugin_name} ({plugin_index}/{total_plugins}) Metadaten…", + f"{plugin_name} ({plugin_index}/{total_plugins}) Metadaten...", ) if canceled: break @@ -1519,7 +1519,7 @@ def _show_search_results(query: str) -> None: if canceled: break if not canceled: - progress(100, "Suche abgeschlossen") + progress(100, "Suche fertig") if canceled and not list_items: xbmcgui.Dialog().notification("Suche", "Suche abgebrochen.", xbmcgui.NOTIFICATION_INFO, 2500) xbmcplugin.endOfDirectory(handle) @@ -1544,7 +1544,7 @@ def _show_seasons(plugin_name: str, title: str, series_url: str = "") -> None: _log(f"Staffeln laden: {plugin_name} / {title}") plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Staffeln", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Staffeln", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return if series_url: @@ -1634,7 +1634,7 @@ def _show_seasons(plugin_name: str, title: str, series_url: str = "") -> None: seasons = plugin.seasons_for(title) except Exception as exc: _log(f"Staffeln laden fehlgeschlagen ({plugin_name}): {exc}", xbmc.LOGWARNING) - xbmcgui.Dialog().notification("Staffeln", "Konnte Staffeln nicht laden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Staffeln", "Staffeln konnten nicht geladen werden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -1715,7 +1715,7 @@ def _show_episodes(plugin_name: str, title: str, season: str, series_url: str = _log(f"Episoden laden: {plugin_name} / {title} / {season}") plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Episoden", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Episoden", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return if series_url: @@ -1839,7 +1839,7 @@ def _show_genre_sources() -> None: sources.append((plugin_name, plugin)) if not sources: - xbmcgui.Dialog().notification("Genres", "Keine Genre-Quellen gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Genres", "Keine Quellen mit Genres gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -1859,7 +1859,7 @@ def _show_genres(plugin_name: str) -> None: _log(f"Genres laden: {plugin_name}") plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Genres", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Genres", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return try: @@ -1896,7 +1896,7 @@ def _show_categories(plugin_name: str) -> None: _log(f"Kategorien laden: {plugin_name}") plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Kategorien", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Kategorien", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return getter = getattr(plugin, "categories", None) @@ -1929,14 +1929,14 @@ def _show_category_titles_page(plugin_name: str, category: str, page: int = 1) - handle = _get_handle() plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Kategorien", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Kategorien", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return page = max(1, int(page or 1)) paging_getter = getattr(plugin, "titles_for_genre_page", None) if not callable(paging_getter): - xbmcgui.Dialog().notification("Kategorien", "Paging nicht verfuegbar.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Kategorien", "Seitenwechsel nicht verfuegbar.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -2045,14 +2045,14 @@ def _show_genre_titles_page(plugin_name: str, genre: str, page: int = 1) -> None handle = _get_handle() plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Genres", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Genres", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return page = max(1, int(page or 1)) paging_getter = getattr(plugin, "titles_for_genre_page", None) if not callable(paging_getter): - xbmcgui.Dialog().notification("Genres", "Paging nicht verfügbar.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Genres", "Seitenwechsel nicht verfuegbar.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -2163,12 +2163,12 @@ def _show_alpha_index(plugin_name: str) -> None: _log(f"A-Z laden: {plugin_name}") plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("A-Z", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("A-Z", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return getter = getattr(plugin, "alpha_index", None) if not callable(getter): - xbmcgui.Dialog().notification("A-Z", "A-Z nicht verfügbar.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("A-Z", "A-Z nicht verfuegbar.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return try: @@ -2196,14 +2196,14 @@ def _show_alpha_titles_page(plugin_name: str, letter: str, page: int = 1) -> Non handle = _get_handle() plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("A-Z", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("A-Z", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return page = max(1, int(page or 1)) paging_getter = getattr(plugin, "titles_for_alpha_page", None) if not callable(paging_getter): - xbmcgui.Dialog().notification("A-Z", "Paging nicht verfügbar.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("A-Z", "Seitenwechsel nicht verfuegbar.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -2308,14 +2308,14 @@ def _show_series_catalog(plugin_name: str, page: int = 1) -> None: plugin_name = (plugin_name or "").strip() plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Serien", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Serien", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return page = max(1, int(page or 1)) paging_getter = getattr(plugin, "series_catalog_page", None) if not callable(paging_getter): - xbmcgui.Dialog().notification("Serien", "Serien nicht verfügbar.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Serien", "Serienkatalog nicht verfuegbar.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -2548,7 +2548,7 @@ def _show_popular(plugin_name: str | None = None, page: int = 1) -> None: if plugin_name: plugin = _discover_plugins().get(plugin_name) if plugin is None or not _plugin_has_capability(plugin, "popular_series"): - xbmcgui.Dialog().notification("Beliebte Serien", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Beliebte Serien", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return try: @@ -2667,13 +2667,13 @@ def _show_new_titles(plugin_name: str, page: int = 1) -> None: plugin_name = (plugin_name or "").strip() plugin = _discover_plugins().get(plugin_name) if plugin is None or not _plugin_has_capability(plugin, "new_titles"): - xbmcgui.Dialog().notification("Neue Titel", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Neue Titel", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return getter = getattr(plugin, "new_titles", None) if not callable(getter): - xbmcgui.Dialog().notification("Neue Titel", "Nicht verfügbar.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Neue Titel", "Diese Liste ist nicht verfuegbar.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -2715,7 +2715,7 @@ def _show_new_titles(plugin_name: str, page: int = 1) -> None: if total == 0: xbmcgui.Dialog().notification( "Neue Titel", - "Keine Titel gefunden (Basis-URL/Index prüfen).", + "Keine Titel gefunden. Bitte Basis-URL oder Index pruefen.", xbmcgui.NOTIFICATION_INFO, 4000, ) @@ -2806,13 +2806,13 @@ def _show_latest_episodes(plugin_name: str, page: int = 1) -> None: plugin_name = (plugin_name or "").strip() plugin = _discover_plugins().get(plugin_name) if not plugin: - xbmcgui.Dialog().notification("Neueste Folgen", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Neueste Folgen", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return getter = getattr(plugin, "latest_episodes", None) if not callable(getter): - xbmcgui.Dialog().notification("Neueste Folgen", "Nicht unterstützt.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Neueste Folgen", "Diese Quelle bietet das nicht an.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -2883,7 +2883,7 @@ def _show_genre_series_group(plugin_name: str, genre: str, group_code: str, page page = max(1, int(page or 1)) plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Genres", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Genres", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) xbmcplugin.endOfDirectory(handle) return @@ -3071,11 +3071,11 @@ def _run_update_check() -> None: builtin("UpdateAddonRepos") builtin("UpdateLocalAddons") builtin("ActivateWindow(addonbrowser,addons://updates/)") - xbmcgui.Dialog().notification("ViewIT Update", "Update-Pruefung gestartet.", xbmcgui.NOTIFICATION_INFO, 4000) + xbmcgui.Dialog().notification("Updates", "Update-Check gestartet.", xbmcgui.NOTIFICATION_INFO, 4000) except Exception as exc: _log(f"Update-Pruefung fehlgeschlagen: {exc}", xbmc.LOGWARNING) try: - xbmcgui.Dialog().notification("ViewIT Update", "Update-Pruefung fehlgeschlagen.", xbmcgui.NOTIFICATION_ERROR, 4000) + xbmcgui.Dialog().notification("Updates", "Update-Check fehlgeschlagen.", xbmcgui.NOTIFICATION_ERROR, 4000) except Exception: pass @@ -3249,7 +3249,7 @@ def _play_episode( _log(f"Play anfordern: {plugin_name} / {title} / {season} / {episode}") plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Play", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Wiedergabe", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) return available_hosters: list[str] = [] @@ -3266,7 +3266,7 @@ def _play_episode( if len(available_hosters) == 1: selected_hoster = available_hosters[0] else: - selected_index = xbmcgui.Dialog().select("Hoster wählen", available_hosters) + selected_index = xbmcgui.Dialog().select("Hoster waehlen", available_hosters) if selected_index is None or selected_index < 0: _log("Play abgebrochen (kein Hoster gewählt).", xbmc.LOGDEBUG) return @@ -3284,8 +3284,8 @@ def _play_episode( try: link = plugin.stream_link_for(title, season, episode) if not link: - _log("Kein Stream-Link gefunden.", xbmc.LOGWARNING) - xbmcgui.Dialog().notification("Play", "Kein Stream-Link gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + _log("Kein Stream gefunden.", xbmc.LOGWARNING) + xbmcgui.Dialog().notification("Wiedergabe", "Kein Stream gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) return _log(f"Stream-Link: {link}", xbmc.LOGDEBUG) final_link = plugin.resolve_stream_link(link) or link @@ -3333,7 +3333,7 @@ def _play_episode_url( _log(f"Play (URL) anfordern: {plugin_name} / {title} / {season_label} / {episode_label} / {episode_url}") plugin = _discover_plugins().get(plugin_name) if plugin is None: - xbmcgui.Dialog().notification("Play", "Plugin nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Wiedergabe", "Quelle nicht gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) return available_hosters: list[str] = [] @@ -3350,7 +3350,7 @@ def _play_episode_url( if len(available_hosters) == 1: selected_hoster = available_hosters[0] else: - selected_index = xbmcgui.Dialog().select("Hoster wählen", available_hosters) + selected_index = xbmcgui.Dialog().select("Hoster waehlen", available_hosters) if selected_index is None or selected_index < 0: _log("Play abgebrochen (kein Hoster gewählt).", xbmc.LOGDEBUG) return @@ -3367,12 +3367,12 @@ def _play_episode_url( try: link_getter = getattr(plugin, "stream_link_for_url", None) if not callable(link_getter): - xbmcgui.Dialog().notification("Play", "Nicht unterstützt.", xbmcgui.NOTIFICATION_INFO, 3000) + xbmcgui.Dialog().notification("Wiedergabe", "Diese Funktion wird von der Quelle nicht unterstuetzt.", xbmcgui.NOTIFICATION_INFO, 3000) return link = link_getter(episode_url) if not link: - _log("Kein Stream-Link gefunden.", xbmc.LOGWARNING) - xbmcgui.Dialog().notification("Play", "Kein Stream-Link gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) + _log("Kein Stream gefunden.", xbmc.LOGWARNING) + xbmcgui.Dialog().notification("Wiedergabe", "Kein Stream gefunden.", xbmcgui.NOTIFICATION_INFO, 3000) return _log(f"Stream-Link: {link}", xbmc.LOGDEBUG) final_link = plugin.resolve_stream_link(link) or link diff --git a/addon/resources/settings.xml b/addon/resources/settings.xml index f9e466c..d75ec60 100644 --- a/addon/resources/settings.xml +++ b/addon/resources/settings.xml @@ -1,85 +1,85 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + - - + + - - + + - - + + - - + + - - - - + + + + - - - + + + - - - + + + - - - - - - - - - + + + + + + + + + diff --git a/docs/PLUGIN_DEVELOPMENT.md b/docs/PLUGIN_DEVELOPMENT.md index 5133117..b167134 100644 --- a/docs/PLUGIN_DEVELOPMENT.md +++ b/docs/PLUGIN_DEVELOPMENT.md @@ -1,6 +1,6 @@ # ViewIT Plugin Entwicklung (`addon/plugins/*_plugin.py`) -Diese Datei beschreibt den Vertrag zwischen Router und Plugins. +Diese Datei zeigt, wie Plugins im Projekt aufgebaut sind und wie sie mit dem Router zusammenarbeiten. ## Grundlagen - Ein Plugin ist eine Python Datei in `addon/plugins/`.