feat(plugins): plugin system scaffold — registry tables + admin panel

First slice of the plugin system. Lays down the data model and a read-only
admin surface; nothing executes yet.

- Migration 155: plugins, plugin_meta_migrations, plugin_error_log and
  plugin_settings_fields tables. Plugin data will live in a per-plugin sqlite
  file under /plugins-data, never in these tables.
- New Nest module server/src/nest/plugins with GET /api/admin/plugins
  (admin-gated, returns the installed list + the runtime-enabled flag).
- TREK_PLUGINS_ENABLED kill switch (config.pluginsEnabled), off by default.
- Admin → Plugins tab with a read-only panel: installed list, status badges,
  and a clear banner when the runtime is disabled by server config.
- i18n keys for the tab and panel across all locales.

Install, activation, the isolated runtime and the registry browser follow in
later slices.
This commit is contained in:
mauriceboe
2026-07-03 15:27:11 +02:00
parent 452360683c
commit 252eae368d
31 changed files with 555 additions and 2 deletions
+13
View File
@@ -177,6 +177,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'فشل حذف القالب',
'admin.packingTemplates.saveError': 'فشل الحفظ',
'admin.tabs.addons': 'الإضافات',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'الإضافات',
'admin.addons.subtitle': 'فعّل أو عطّل الميزات لتخصيص تجربة TREK.',
'admin.addons.catalog.packing.name': 'القوائم',
+13
View File
@@ -156,6 +156,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Falha ao excluir modelo',
'admin.packingTemplates.saveError': 'Falha ao salvar',
'admin.tabs.addons': 'Complementos',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Complementos',
'admin.addons.subtitle': 'Ative ou desative recursos para personalizar sua experiência no TREK.',
'admin.addons.catalog.memories.name': 'Memórias',
+13
View File
@@ -157,6 +157,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Nepodařilo se smazat šablonu',
'admin.packingTemplates.saveError': 'Uložení se nezdařilo',
'admin.tabs.addons': 'Doplňky',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Doplňky',
'admin.addons.subtitle': 'Zapněte nebo vypněte funkce a přizpůsobte si TREK.',
'admin.addons.catalog.memories.name': 'Fotky (Immich)',
+13
View File
@@ -159,6 +159,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Vorlage konnte nicht gelöscht werden',
'admin.packingTemplates.saveError': 'Fehler beim Speichern',
'admin.tabs.addons': 'Addons',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Plugins von Drittanbietern auf deiner Instanz installieren und verwalten.',
'admin.plugins.disabledTitle': 'Plugins sind deaktiviert',
'admin.plugins.disabledBody': 'Die Plugin-Laufzeit ist ausgeschaltet (TREK_PLUGINS_ENABLED). Es kann kein Plugin laufen, bis ein Admin sie in der Serverkonfiguration aktiviert.',
'admin.plugins.empty': 'Noch keine Plugins installiert.',
'admin.plugins.loadError': 'Plugins konnten nicht geladen werden.',
'admin.plugins.scaffoldNote': 'Installation und Aktivierung von Plugins folgen in einem späteren Update. Dieses Panel zeigt derzeit nur installierte Plugins an.',
'admin.plugins.status.active': 'Aktiv',
'admin.plugins.status.inactive': 'Inaktiv',
'admin.plugins.status.disabled': 'Deaktiviert',
'admin.plugins.status.error': 'Fehler',
'admin.plugins.status.incompatible': 'Inkompatibel',
'admin.addons.title': 'Addons',
'admin.addons.subtitle': 'Aktiviere oder deaktiviere Funktionen, um TREK nach deinen Wünschen anzupassen.',
'admin.addons.catalog.packing.name': 'Listen',
+13
View File
@@ -211,6 +211,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Failed to delete template',
'admin.packingTemplates.saveError': 'Failed to save',
'admin.tabs.addons': 'Addons',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Addons',
'admin.addons.subtitle': 'Enable or disable features to customize your TREK experience.',
'admin.addons.catalog.packing.name': 'Lists',
+13
View File
@@ -158,6 +158,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Error al eliminar plantilla',
'admin.packingTemplates.saveError': 'Error al guardar',
'admin.tabs.addons': 'Complementos',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Complementos',
'admin.addons.subtitle': 'Activa o desactiva funciones para personalizar tu experiencia en TREK.',
'admin.addons.subtitleBefore': 'Activa o desactiva funciones para personalizar tu experiencia en ',
+13
View File
@@ -160,6 +160,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Erreur de suppression du modèle',
'admin.packingTemplates.saveError': 'Erreur de sauvegarde',
'admin.tabs.addons': 'Extensions',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Extensions',
'admin.addons.subtitle': 'Activez ou désactivez des fonctionnalités pour personnaliser votre expérience TREK.',
'admin.addons.catalog.memories.name': 'Photos (Immich)',
+13
View File
@@ -205,6 +205,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Αποτυχία διαγραφής προτύπου',
'admin.packingTemplates.saveError': 'Αποτυχία αποθήκευσης',
'admin.tabs.addons': 'Πρόσθετα',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Πρόσθετα',
'admin.addons.subtitle':
'Ενεργοποιήστε ή απενεργοποιήστε λειτουργίες για να εξατομικεύσετε την εμπειρία σας στο TREK.',
+13
View File
@@ -159,6 +159,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Nem sikerült törölni a sablont',
'admin.packingTemplates.saveError': 'Nem sikerült menteni',
'admin.tabs.addons': 'Bővítmények',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Bővítmények',
'admin.addons.subtitle': 'Funkciók engedélyezése vagy letiltása a TREK testreszabásához.',
'admin.addons.catalog.packing.name': 'Listák',
+13
View File
@@ -201,6 +201,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Gagal menghapus template',
'admin.packingTemplates.saveError': 'Gagal menyimpan',
'admin.tabs.addons': 'Addon',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Addon',
'admin.addons.subtitle': 'Aktifkan atau nonaktifkan fitur untuk menyesuaikan pengalaman TREK kamu.',
'admin.addons.catalog.packing.name': 'Daftar',
+13
View File
@@ -158,6 +158,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Impossibile eliminare il modello',
'admin.packingTemplates.saveError': 'Impossibile salvare',
'admin.tabs.addons': 'Moduli',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Moduli',
'admin.addons.subtitle': 'Abilita o disabilita le funzionalità per personalizzare la tua esperienza TREK.',
'admin.addons.catalog.packing.name': 'Liste',
+13
View File
@@ -190,6 +190,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'テンプレートの削除に失敗しました',
'admin.packingTemplates.saveError': '保存に失敗しました',
'admin.tabs.addons': 'アドオン',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'アドオン',
'admin.addons.subtitle': '機能を有効/無効にしてTREKをカスタマイズします。',
'admin.addons.catalog.packing.name': 'リスト',
+13
View File
@@ -196,6 +196,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': '템플릿 삭제 실패',
'admin.packingTemplates.saveError': '저장 실패',
'admin.tabs.addons': '애드온',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': '애드온',
'admin.addons.subtitle': '기능을 활성화 또는 비활성화하여 TREK 경험을 맞춤 설정하세요.',
'admin.addons.catalog.packing.name': '목록',
+13
View File
@@ -159,6 +159,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Fout bij verwijderen van sjabloon',
'admin.packingTemplates.saveError': 'Fout bij opslaan',
'admin.tabs.addons': 'Add-ons',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Add-ons',
'admin.addons.subtitle': 'Schakel functies in of uit om je TREK-ervaring aan te passen.',
'admin.addons.catalog.memories.name': "Foto's (Immich)",
+13
View File
@@ -152,6 +152,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Nie udało się usunąć szablonu',
'admin.packingTemplates.saveError': 'Nie udało się zapisać szablonu',
'admin.tabs.addons': 'Dodatki',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Dodatki',
'admin.addons.subtitle': 'Włączaj lub wyłączaj funkcje, aby dostosować swoje doświadczenie w TREK.',
'admin.addons.catalog.packing.name': 'Listy',
+13
View File
@@ -159,6 +159,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Ошибка удаления шаблона',
'admin.packingTemplates.saveError': 'Ошибка сохранения',
'admin.tabs.addons': 'Дополнения',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Дополнения',
'admin.addons.subtitle': 'Включайте или отключайте функции для настройки TREK под себя.',
'admin.addons.catalog.memories.name': 'Фото (Immich)',
+13
View File
@@ -211,6 +211,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Det gick inte att ta bort mallen',
'admin.packingTemplates.saveError': 'Det gick inte att spara',
'admin.tabs.addons': 'Tillägg',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Tillägg',
'admin.addons.subtitle': 'Aktivera eller inaktivera funktioner för att anpassa din TREK-upplevelse.',
'admin.addons.catalog.packing.name': 'Listor',
+13
View File
@@ -203,6 +203,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Şablon silinemedi',
'admin.packingTemplates.saveError': 'Kaydedilemedi',
'admin.tabs.addons': 'Eklentiler',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Eklentiler',
'admin.addons.subtitle': 'TREK deneyiminizi özelleştirmek için özellikleri etkinleştirin veya devre dışı bırakın.',
'admin.addons.catalog.packing.name': 'Listeler',
+13
View File
@@ -159,6 +159,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Помилка видалення шаблону',
'admin.packingTemplates.saveError': 'Помилка збереження',
'admin.tabs.addons': 'Дополнения',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Доповнення',
'admin.addons.subtitle': 'Увімкніть або вимкніть функції, щоб налаштувати TREK під себе.',
'admin.addons.catalog.memories.name': 'Фото (Immich)',
+13
View File
@@ -211,6 +211,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': 'Không xóa được mẫu',
'admin.packingTemplates.saveError': 'Không lưu được',
'admin.tabs.addons': 'Tiện ích bổ sung',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': 'Tiện ích bổ sung',
'admin.addons.subtitle': 'Bật hoặc tắt các tính năng để tùy chỉnh trải nghiệm TREK của bạn.',
'admin.addons.catalog.packing.name': 'Danh sách',
+13
View File
@@ -193,6 +193,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': '刪除模板失敗',
'admin.packingTemplates.saveError': '儲存失敗',
'admin.tabs.addons': '擴充套件',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': '擴充套件',
'admin.addons.subtitle': '啟用或停用功能以自定義你的 TREK 體驗。',
'admin.addons.catalog.memories.name': '照片 (Immich)',
+13
View File
@@ -154,6 +154,19 @@ const admin: TranslationStrings = {
'admin.packingTemplates.deleteError': '删除模板失败',
'admin.packingTemplates.saveError': '保存失败',
'admin.tabs.addons': '扩展',
'admin.tabs.plugins': 'Plugins',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Install and manage third-party plugins on your instance.',
'admin.plugins.disabledTitle': 'Plugins are disabled',
'admin.plugins.disabledBody': 'The plugin runtime is turned off (TREK_PLUGINS_ENABLED). No plugin can run until an admin enables it in the server configuration.',
'admin.plugins.empty': 'No plugins installed yet.',
'admin.plugins.loadError': 'Could not load plugins.',
'admin.plugins.scaffoldNote': 'Plugin installation and activation are coming in a later update. This panel currently lists installed plugins only.',
'admin.plugins.status.active': 'Active',
'admin.plugins.status.inactive': 'Inactive',
'admin.plugins.status.disabled': 'Disabled',
'admin.plugins.status.error': 'Error',
'admin.plugins.status.incompatible': 'Incompatible',
'admin.addons.title': '扩展',
'admin.addons.subtitle': '启用或禁用功能以自定义你的 TREK 体验。',
'admin.addons.catalog.memories.name': '照片 (Immich)',