diff --git a/oAI.xcodeproj/project.pbxproj b/oAI.xcodeproj/project.pbxproj
index be3380f..3e2321f 100644
--- a/oAI.xcodeproj/project.pbxproj
+++ b/oAI.xcodeproj/project.pbxproj
@@ -270,6 +270,11 @@
ENABLE_PREVIEWS = YES;
ENABLE_USER_SELECTED_FILES = readonly;
GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
+ INFOPLIST_KEY_NSCalendarsFullAccessUsageDescription = "oAI can read and create calendar events when you ask it to, if you enable Calendar access in Settings.";
+ INFOPLIST_KEY_NSContactsUsageDescription = "oAI can search your contacts when you ask it to, if you enable Contacts access in Settings.";
+ INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "oAI can use your current location to answer questions, if you enable Location & Maps access in Settings.";
+ INFOPLIST_KEY_NSRemindersFullAccessUsageDescription = "oAI can read and create reminders when you ask it to, if you enable Reminders access in Settings.";
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
@@ -283,8 +288,8 @@
IPHONEOS_DEPLOYMENT_TARGET = 27.0;
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 27.0;
- MARKETING_VERSION = 2.4.0;
+ MACOSX_DEPLOYMENT_TARGET = 26.2;
+ MARKETING_VERSION = 2.4.1;
PRODUCT_BUNDLE_IDENTIFIER = com.oai.oAI;
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = YES;
@@ -314,6 +319,11 @@
ENABLE_PREVIEWS = YES;
ENABLE_USER_SELECTED_FILES = readonly;
GENERATE_INFOPLIST_FILE = YES;
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.utilities";
+ INFOPLIST_KEY_NSCalendarsFullAccessUsageDescription = "oAI can read and create calendar events when you ask it to, if you enable Calendar access in Settings.";
+ INFOPLIST_KEY_NSContactsUsageDescription = "oAI can search your contacts when you ask it to, if you enable Contacts access in Settings.";
+ INFOPLIST_KEY_NSLocationWhenInUseUsageDescription = "oAI can use your current location to answer questions, if you enable Location & Maps access in Settings.";
+ INFOPLIST_KEY_NSRemindersFullAccessUsageDescription = "oAI can read and create reminders when you ask it to, if you enable Reminders access in Settings.";
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphoneos*]" = YES;
"INFOPLIST_KEY_UIApplicationSceneManifest_Generation[sdk=iphonesimulator*]" = YES;
"INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents[sdk=iphoneos*]" = YES;
@@ -327,8 +337,8 @@
IPHONEOS_DEPLOYMENT_TARGET = 27.0;
LD_RUNPATH_SEARCH_PATHS = "@executable_path/Frameworks";
"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks";
- MACOSX_DEPLOYMENT_TARGET = 27.0;
- MARKETING_VERSION = 2.4.0;
+ MACOSX_DEPLOYMENT_TARGET = 26.2;
+ MARKETING_VERSION = 2.4.1;
PRODUCT_BUNDLE_IDENTIFIER = com.oai.oAI;
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = YES;
diff --git a/oAI/Localizable.xcstrings b/oAI/Localizable.xcstrings
index 2577421..99e92c5 100644
--- a/oAI/Localizable.xcstrings
+++ b/oAI/Localizable.xcstrings
@@ -385,6 +385,40 @@
}
}
},
+ "%@ tokens" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "%@ tokens"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "%@ tokens"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "%@ tokens"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "%@ tokens"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "%@ tokens"
+ }
+ }
+ }
+ },
"%@s" : {
"localizations" : {
"da" : {
@@ -593,6 +627,40 @@
}
}
},
+ "^[%@ file](inflect: true)" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ fil](inflect: true)"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ Datei](inflect: true)"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ fichier](inflect: true)"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ fil](inflect: true)"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ fil](inflect: true)"
+ }
+ }
+ }
+ },
"^[%@ message](inflect: true)" : {
"localizations" : {
"da" : {
@@ -627,6 +695,142 @@
}
}
},
+ "^[%@ running](inflect: true)" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ kørende](inflect: true)"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ laufend](inflect: true)"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ en cours](inflect: true)"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ kjørende](inflect: true)"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ igång](inflect: true)"
+ }
+ }
+ }
+ },
+ "^[%@ skill](inflect: true) active — appended to every system prompt" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ færdighed](inflect: true) aktiv — tilføjet til hver systemprompt"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ Skill](inflect: true) aktiv — an jeden System-Prompt angehängt"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ skill](inflect: true) actif — ajouté à chaque prompt système"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ ferdighet](inflect: true) aktiv — lagt til i hver systemprompt"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ färdighet](inflect: true) aktiv — lagd till i varje systemprompt"
+ }
+ }
+ }
+ },
+ "^[%@ skill](inflect: true) exported to Downloads" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ færdighed](inflect: true) eksporteret til Downloads"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ Skill](inflect: true) nach Downloads exportiert"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ skill](inflect: true) exporté vers Téléchargements"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ ferdighet](inflect: true) eksportert til Nedlastinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ färdighet](inflect: true) exporterad till Nedladdningar"
+ }
+ }
+ }
+ },
+ "^[%@ skill](inflect: true) imported" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ færdighed](inflect: true) importeret"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ Skill](inflect: true) importiert"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ skill](inflect: true) importé"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ ferdighet](inflect: true) importert"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "^[%@ färdighet](inflect: true) importerad"
+ }
+ }
+ }
+ },
"^[%@ token](inflect: true)" : {
"localizations" : {
"da" : {
@@ -1360,6 +1564,40 @@
}
}
},
+ "1K tokens" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "1K tokens"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "1K Tokens"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "1K tokens"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "1K tokens"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "1K tokens"
+ }
+ }
+ }
+ },
"2. Create a new API key" : {
"comment" : "A step in the process of getting an API key from Anytype.",
"isCommentAutoGenerated" : true,
@@ -1468,6 +1706,74 @@
}
}
},
+ "10K tokens" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "10K tokens"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "10K Tokens"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "10K tokens"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "10K tokens"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "10K tokens"
+ }
+ }
+ }
+ },
+ "100K tokens" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "100K tokens"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "100K Tokens"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "100K tokens"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "100K tokens"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "100K tokens"
+ }
+ }
+ }
+ },
"A model reads all the source messages and rewrites them into one coherent, de-duplicated conversation." : {
"localizations" : {
"da" : {
@@ -1502,6 +1808,40 @@
}
}
},
+ "A new version is available — click to open the releases page" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "En ny version er tilgængelig — klik for at åbne udgivelsessiden"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eine neue Version ist verfügbar — klicke, um die Release-Seite zu öffnen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Une nouvelle version est disponible — clique pour ouvrir la page des versions"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "En ny versjon er tilgjengelig — klikk for å åpne utgivelsessiden"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "En ny version är tillgänglig — klicka för att öppna utgivningssidan"
+ }
+ }
+ }
+ },
"A shortcut with command %@ already exists." : {
"comment" : "A warning message that appears when a user tries to import a shortcut that already exists in their settings. The argument is the command of the conflicting shortcut.",
"isCommentAutoGenerated" : true,
@@ -1538,6 +1878,142 @@
}
}
},
+ "About oAI" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Om oAI"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Über oAI"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "À propos d'oAI"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Om oAI"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Om oAI"
+ }
+ }
+ }
+ },
+ "Access denied — enable in System Settings" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Adgang nægtet — aktiver i Systemindstillinger"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Zugriff verweigert — in den Systemeinstellungen aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Accès refusé — active-le dans Réglages Système"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tilgang avslått — aktiver i Systeminnstillinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Åtkomst nekad — aktivera i Systeminställningar"
+ }
+ }
+ }
+ },
+ "Access granted" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Adgang givet"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Zugriff gewährt"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Accès accordé"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tilgang gitt"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Åtkomst beviljad"
+ }
+ }
+ }
+ },
+ "Access not granted" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Adgang ikke givet"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Zugriff nicht gewährt"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Accès non accordé"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tilgang ikke gitt"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Åtkomst inte beviljad"
+ }
+ }
+ }
+ },
"Access Token" : {
"localizations" : {
"da" : {
@@ -1572,6 +2048,74 @@
}
}
},
+ "ACTION" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "HANDLING"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AKTION"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "ACTION"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "HANDLING"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "ÅTGÄRD"
+ }
+ }
+ }
+ },
+ "Actions" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Handlinger"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktionen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Actions"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Handlinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Åtgärder"
+ }
+ }
+ }
+ },
"active" : {
"comment" : "A label for an active skill.",
"isCommentAutoGenerated" : true,
@@ -1680,6 +2224,176 @@
}
}
},
+ "Activity" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivitet"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivität"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activité"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivitet"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivitet"
+ }
+ }
+ }
+ },
+ "Add File" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tilføj fil"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Datei hinzufügen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ajouter un fichier"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Legg til fil"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lägg till fil"
+ }
+ }
+ }
+ },
+ "Add Folder…" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tilføj mappe…"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ordner hinzufügen…"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ajouter un dossier…"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Legg til mappe…"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lägg till mapp…"
+ }
+ }
+ }
+ },
+ "Advanced search — semantic search, bulk delete, export" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Avanceret søgning — semantisk søgning, massesletning, eksport"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Erweiterte Suche — semantische Suche, Massenlöschung, Export"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Recherche avancée — recherche sémantique, suppression groupée, export"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Avansert søk — semantisk søk, massesletting, eksport"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Avancerad sökning — semantisk sökning, massradering, export"
+ }
+ }
+ }
+ },
+ "After idle timeout" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Efter inaktivitetstid"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nach Inaktivitäts-Timeout"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Après délai d'inactivité"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Etter inaktivitetstid"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Efter inaktivitetstid"
+ }
+ }
+ }
+ },
"Agent" : {
"localizations" : {
"da" : {
@@ -1714,6 +2428,40 @@
}
}
},
+ "Agent name" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Agentnavn"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Agentenname"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nom de l'agent"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Agentnavn"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Agentnamn"
+ }
+ }
+ }
+ },
"Agent Skills" : {
"localizations" : {
"da" : {
@@ -1782,6 +2530,142 @@
}
}
},
+ "AI Configuration" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI-konfiguration"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-Konfiguration"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Configuration de l'IA"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-konfigurasjon"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI-konfiguration"
+ }
+ }
+ }
+ },
+ "AI Email Handler" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI-e-mailbehandler"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-E-Mail-Handler"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gestionnaire d'e-mails IA"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-e-postbehandler"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI-e-posthanterare"
+ }
+ }
+ }
+ },
+ "AI Model" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI-model"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-Modell"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modèle IA"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-modell"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI-modell"
+ }
+ }
+ }
+ },
+ "AI Provider" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI-udbyder"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-Anbieter"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fournisseur IA"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-tilbyder"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI-leverantör"
+ }
+ }
+ }
+ },
"AI-Assisted Merge" : {
"localizations" : {
"da" : {
@@ -1816,6 +2700,74 @@
}
}
},
+ "Allow for Session" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillad for sessionen"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Für Sitzung erlauben"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Autoriser pour la session"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillat for sesjonen"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillåt för sessionen"
+ }
+ }
+ }
+ },
+ "Allow Once" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillad denne gang"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Einmal erlauben"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Autoriser une fois"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillat denne gangen"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillåt denna gång"
+ }
+ }
+ }
+ },
"Allow Shell Command?" : {
"comment" : "A title for a modal that asks the user if they want to allow a shell command.",
"isCommentAutoGenerated" : true,
@@ -1886,6 +2838,74 @@
}
}
},
+ "Allow This Action?" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillad denne handling?"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Diese Aktion zulassen?"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Autoriser cette action ?"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillat denne handlingen?"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillåt denna åtgärd?"
+ }
+ }
+ }
+ },
+ "Allowed Folders" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tilladte mapper"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Erlaubte Ordner"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dossiers autorisés"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillatte mapper"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillåtna mappar"
+ }
+ }
+ }
+ },
"Anthropic Balance" : {
"comment" : "A label displayed above the user's balance on the Anthropic platform.",
"isCommentAutoGenerated" : true,
@@ -1922,6 +2942,74 @@
}
}
},
+ "API Key" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-nøgle"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-Schlüssel"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Clé API"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-nøkkel"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-nyckel"
+ }
+ }
+ }
+ },
+ "API Keys" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-nøgler"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-Schlüssel"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Clés API"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-nøkler"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-nycklar"
+ }
+ }
+ }
+ },
"API keys and credentials are **not** included in the backup. You will need to re-enter them after restoring on a new machine." : {
"comment" : "A warning message displayed in the settings tab of the app.",
"isCommentAutoGenerated" : true,
@@ -1958,6 +3046,176 @@
}
}
},
+ "API Token" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-token"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-Token"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Token API"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-token"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-token"
+ }
+ }
+ }
+ },
+ "API URL" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-URL"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-URL"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "URL API"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-URL"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "API-URL"
+ }
+ }
+ }
+ },
+ "Architecture" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Arkitektur"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Architektur"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Architecture"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Arkitektur"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Arkitektur"
+ }
+ }
+ }
+ },
+ "Attach file" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vedhæft fil"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Datei anhängen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Joindre un fichier"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Legg til fil"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bifoga fil"
+ }
+ }
+ }
+ },
+ "Authentication" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Godkendelse"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Authentifizierung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Authentification"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Autentisering"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Autentisering"
+ }
+ }
+ }
+ },
"Auto-execute mode: commands run without approval. Use with caution." : {
"localizations" : {
"da" : {
@@ -1992,6 +3250,108 @@
}
}
},
+ "Auto-export on save" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auto-eksporter ved gem"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Automatisch exportieren beim Speichern"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exporter automatiquement à l'enregistrement"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auto-eksporter ved lagring"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auto-exportera vid sparande"
+ }
+ }
+ }
+ },
+ "Auto-pull on launch" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auto-hent ved start"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Automatisch abrufen beim Start"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Récupérer automatiquement au démarrage"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auto-hent ved oppstart"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auto-hämta vid start"
+ }
+ }
+ }
+ },
+ "Auto-Save" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auto-gem"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Automatisches Speichern"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Enregistrement automatique"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auto-lagring"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auto-spara"
+ }
+ }
+ }
+ },
"Auto-sync can cause conflicts if running on multiple machines simultaneously." : {
"localizations" : {
"da" : {
@@ -2166,6 +3526,40 @@
}
}
},
+ "Base URL" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Base-URL"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Basis-URL"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "URL de base"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Base-URL"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bas-URL"
+ }
+ }
+ }
+ },
"Bash Execution" : {
"localizations" : {
"da" : {
@@ -2234,6 +3628,74 @@
}
}
},
+ "Brief description shown in the command dropdown" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kort beskrivelse vist i kommando-rullemenuen"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kurze Beschreibung im Befehlsmenü"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Brève description affichée dans le menu de commandes"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kort beskrivelse vist i kommando-rullegardinmenyen"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kort beskrivning som visas i kommandomenyn"
+ }
+ }
+ }
+ },
+ "Brief summary (optional — auto-extracted from content if left blank)" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kort resumé (valgfrit — udtrækkes automatisk fra indholdet, hvis det er tomt)"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kurze Zusammenfassung (optional — wird automatisch aus dem Inhalt extrahiert, wenn leer)"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Résumé bref (facultatif — extrait automatiquement du contenu si laissé vide)"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kort sammendrag (valgfritt — hentes automatisk fra innholdet hvis tomt)"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kort sammanfattning (valfritt — extraheras automatiskt från innehållet om tomt)"
+ }
+ }
+ }
+ },
"Built with SwiftUI" : {
"comment" : "A label that says that the app is built with SwiftUI.",
"isCommentAutoGenerated" : true,
@@ -2270,6 +3732,74 @@
}
}
},
+ "Calendar" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kalender"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kalender"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Calendrier"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kalender"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kalender"
+ }
+ }
+ }
+ },
+ "Cancel" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Annuller"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Abbrechen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Annuler"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Avbryt"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Avbryt"
+ }
+ }
+ }
+ },
"Capabilities" : {
"comment" : "A label displayed under the list of capabilities of a model.",
"isCommentAutoGenerated" : true,
@@ -2306,6 +3836,40 @@
}
}
},
+ "Categories" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kategorier"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kategorien"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Catégories"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kategorier"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kategorier"
+ }
+ }
+ }
+ },
"Category" : {
"localizations" : {
"da" : {
@@ -2480,6 +4044,74 @@
}
}
},
+ "Choose…" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vælg…"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auswählen…"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Choisir…"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Velg…"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Välj…"
+ }
+ }
+ }
+ },
+ "Clear" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ryd"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Leeren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Effacer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tøm"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rensa"
+ }
+ }
+ }
+ },
"Clear All" : {
"comment" : "A button to clear all email activity logs.",
"isCommentAutoGenerated" : true,
@@ -2516,6 +4148,74 @@
}
}
},
+ "Clear Chat" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ryd chat"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Chat leeren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Effacer la discussion"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tøm chat"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rensa chatt"
+ }
+ }
+ }
+ },
+ "Clear Email Log?" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ryd e-maillog?"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-Mail-Protokoll löschen?"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Effacer le journal e-mail ?"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tøm e-postlogg?"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rensa e-postlogg?"
+ }
+ }
+ }
+ },
"Click 'Add Folder' below or drag folders here from Finder" : {
"localizations" : {
"da" : {
@@ -2550,6 +4250,40 @@
}
}
},
+ "Combine" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sammenlæg"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Zusammenführen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fusionner"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slå sammen"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slå samman"
+ }
+ }
+ }
+ },
"Combine (%@)" : {
"localizations" : {
"da" : {
@@ -2794,6 +4528,74 @@
}
}
},
+ "Connection" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Forbindelse"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verbindung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Connexion"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tilkobling"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Anslutning"
+ }
+ }
+ }
+ },
+ "Contacts" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kontakter"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kontakte"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Contacts"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kontakter"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kontakter"
+ }
+ }
+ }
+ },
"Content (Markdown)" : {
"comment" : "A",
"isCommentAutoGenerated" : true,
@@ -2830,6 +4632,40 @@
}
}
},
+ "Context Window" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kontekstvindue"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kontextfenster"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fenêtre de contexte"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kontekstvindu"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kontextfönster"
+ }
+ }
+ }
+ },
"Controls which messages are written to ~/Library/Logs/oAI.log" : {
"localizations" : {
"da" : {
@@ -2864,6 +4700,40 @@
}
}
},
+ "Conversation Memory" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Samtalehukommelse"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gesprächsspeicher"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Mémoire de conversation"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Samtaleminne"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Konversationsminne"
+ }
+ }
+ }
+ },
"Conversations" : {
"localizations" : {
"da" : {
@@ -2934,6 +4804,40 @@
}
}
},
+ "Copy Image" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kopiér billede"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bild kopieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Copier l'image"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kopier bilde"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kopiera bild"
+ }
+ }
+ }
+ },
"Cost" : {
"localizations" : {
"da" : {
@@ -3004,6 +4908,43 @@
}
}
},
+ "Cost warning: each sub-agent runs its own full chain of model calls. A single request that spawns several agents can cost several times a normal reply. The AI is instructed to only use this for genuinely parallel research, but model behavior can vary — leave this off unless you want that tradeoff." : {
+
+ },
+ "Costs" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Omkostninger"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kosten"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Coûts"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kostnader"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kostnader"
+ }
+ }
+ }
+ },
"Create a dedicated email account specifically for AI handling. Do NOT use your personal email address." : {
"localizations" : {
"da" : {
@@ -3074,6 +5015,176 @@
}
}
},
+ "Create Directories" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Opret mapper"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verzeichnisse erstellen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Créer des dossiers"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Opprett mapper"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skapa mappar"
+ }
+ }
+ }
+ },
+ "Creating calendar events or reminders, and completing reminders, will ask for your approval first." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Oprettelse af kalenderbegivenheder eller påmindelser samt afslutning af påmindelser vil først bede om din godkendelse."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Das Erstellen von Kalenderereignissen oder Erinnerungen sowie das Abschließen von Erinnerungen fragt zuerst nach deiner Genehmigung."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "La création d'événements de calendrier ou de rappels, ainsi que la finalisation de rappels, demandera d'abord ton approbation."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Å opprette kalenderhendelser eller påminnelser, og å fullføre påminnelser, vil først be om din godkjenning."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Att skapa kalenderhändelser eller påminnelser, samt att slutföra påminnelser, kommer först att be om ditt godkännande."
+ }
+ }
+ }
+ },
+ "Credits" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kreditter"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Guthaben"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Crédits"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kreditter"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Krediter"
+ }
+ }
+ }
+ },
+ "Cron expression (e.g. 0 * * * *)" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Cron-udtryk (f.eks. 0 * * * *)"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Cron-Ausdruck (z. B. 0 * * * *)"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Expression cron (ex. 0 * * * *)"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Cron-uttrykk (f.eks. 0 * * * *)"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Cron-uttryck (t.ex. 0 * * * *)"
+ }
+ }
+ }
+ },
+ "Default Model" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Standardmodel"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Standardmodell"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modèle par défaut"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Standardmodell"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Standardmodell"
+ }
+ }
+ }
+ },
"Default Prompt" : {
"localizations" : {
"da" : {
@@ -3108,6 +5219,74 @@
}
}
},
+ "Default Provider" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Standardudbyder"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Standardanbieter"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fournisseur par défaut"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Standardtilbyder"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Standardleverantör"
+ }
+ }
+ }
+ },
+ "Delete" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slet"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Löschen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Supprimer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slett"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ta bort"
+ }
+ }
+ }
+ },
"Delete (%@)" : {
"localizations" : {
"da" : {
@@ -3142,6 +5321,210 @@
}
}
},
+ "Delete conversation" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slet samtale"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gespräch löschen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Supprimer la conversation"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slett samtale"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ta bort konversation"
+ }
+ }
+ }
+ },
+ "Delete Files" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slet filer"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dateien löschen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Supprimer des fichiers"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slett filer"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ta bort filer"
+ }
+ }
+ }
+ },
+ "Delete original conversations after combining" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slet de oprindelige samtaler efter sammenlægning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ursprüngliche Gespräche nach dem Zusammenführen löschen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Supprimer les conversations d'origine après la fusion"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slett originalsamtalene etter sammenslåing"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ta bort originalkonversationerna efter sammanslagning"
+ }
+ }
+ }
+ },
+ "Delete shortcut" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slet genvej"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verknüpfung löschen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Supprimer le raccourci"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slett snarvei"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ta bort genväg"
+ }
+ }
+ }
+ },
+ "Delete skill" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slet færdighed"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skill löschen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Supprimer le skill"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Slett ferdighet"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ta bort färdighet"
+ }
+ }
+ }
+ },
+ "Deny" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Afvis"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verweigern"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Refuser"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Avslå"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Neka"
+ }
+ }
+ }
+ },
"Description" : {
"comment" : "A label",
"isCommentAutoGenerated" : true,
@@ -3178,6 +5561,40 @@
}
}
},
+ "Dialog Text" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dialogtekst"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dialogtext"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Texte des boîtes de dialogue"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dialogtekst"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dialogtext"
+ }
+ }
+ }
+ },
"Disabled" : {
"localizations" : {
"da" : {
@@ -3212,6 +5629,176 @@
}
}
},
+ "Dismiss" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Luk"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Schließen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fermer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lukk"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stäng"
+ }
+ }
+ }
+ },
+ "Done" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Færdig"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fertig"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Terminé"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ferdig"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Klar"
+ }
+ }
+ }
+ },
+ "Download v%@" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hent v%@"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "v%@ herunterladen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Télécharger v%@"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Last ned v%@"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ladda ner v%@"
+ }
+ }
+ }
+ },
+ "Duplicate Shortcut" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dupliker genvej"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verknüpfung duplizieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dupliquer le raccourci"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dupliser snarvei"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Duplicera genväg"
+ }
+ }
+ }
+ },
+ "e.g. Code Review, Test Writer, Security Auditor" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "f.eks. Kodegennemgang, Testskribent, Sikkerhedsrevisor"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "z. B. Code-Review, Test-Autor, Sicherheitsprüfer"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "ex. Revue de code, Rédacteur de tests, Auditeur sécurité"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "f.eks. Kodegjennomgang, Testskriving, Sikkerhetsrevisor"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "t.ex. Kodgranskning, Testskrivare, Säkerhetsgranskare"
+ }
+ }
+ }
+ },
"Each command will require your approval before running." : {
"localizations" : {
"da" : {
@@ -3386,6 +5973,74 @@
}
}
},
+ "Email Log" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-maillog"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-Mail-Protokoll"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Journal e-mail"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-postlogg"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-postlogg"
+ }
+ }
+ }
+ },
+ "Email Server" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-mailserver"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-Mail-Server"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Serveur e-mail"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-postserver"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-postserver"
+ }
+ }
+ }
+ },
"Email tasks have READ-ONLY access to MCP folders. The AI cannot write, delete, or modify files when processing emails." : {
"localizations" : {
"da" : {
@@ -3420,6 +6075,74 @@
}
}
},
+ "Email Trigger" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-mailudløser"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-Mail-Trigger"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Déclencheur e-mail"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-postutløser"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-postutlösare"
+ }
+ }
+ }
+ },
+ "Embed All Conversations" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Indlejr alle samtaler"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Alle Gespräche einbetten"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Intégrer toutes les conversations"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bygg inn alle samtaler"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bädda in alla konversationer"
+ }
+ }
+ }
+ },
"Enable AI-powered semantic search using %@ embeddings. Cost: ~$0.02–0.15/1M tokens." : {
"localizations" : {
"da" : {
@@ -3454,6 +6177,142 @@
}
}
},
+ "Enable Anytype" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Anytype"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Anytype aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer Anytype"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Anytype"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera Anytype"
+ }
+ }
+ }
+ },
+ "Enable Auto-Save" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver auto-gem"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Automatisches Speichern aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer l'enregistrement automatique"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver auto-lagring"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera auto-spara"
+ }
+ }
+ }
+ },
+ "Enable Bash Execution" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Bash-udførelse"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bash-Ausführung aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer l'exécution Bash"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Bash-kjøring"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera Bash-körning"
+ }
+ }
+ }
+ },
+ "Enable Email Handler" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver e-mailbehandler"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-Mail-Handler aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer le gestionnaire d'e-mails"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver e-postbehandler"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera e-posthanterare"
+ }
+ }
+ }
+ },
"Enable email handler in Settings to start monitoring emails" : {
"comment" : "A message displayed when the email handler is disabled.",
"isCommentAutoGenerated" : true,
@@ -3490,6 +6349,380 @@
}
}
},
+ "Enable Embeddings" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver indlejringer"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Embeddings aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer les embeddings"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver innbygginger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera embeddings"
+ }
+ }
+ }
+ },
+ "Enable Git Sync" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Git-synkronisering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Git-Synchronisierung aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer la synchronisation Git"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Git-synkronisering"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera Git-synkronisering"
+ }
+ }
+ }
+ },
+ "Enable Jarvis" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Jarvis"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Jarvis aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer Jarvis"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Jarvis"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera Jarvis"
+ }
+ }
+ }
+ },
+ "Enable MCP" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver MCP"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "MCP aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer MCP"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver MCP"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera MCP"
+ }
+ }
+ }
+ },
+ "Enable Online Mode" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver onlinetilstand"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Online-Modus aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer le mode en ligne"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver nettmodus"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera onlineläge"
+ }
+ }
+ }
+ },
+ "Enable Paperless" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Paperless"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Paperless aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer Paperless"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver Paperless"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera Paperless"
+ }
+ }
+ }
+ },
+ "Enable Rate Limit" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver hastighedsbegrænsning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ratenbegrenzung aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer la limitation de débit"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver frekvensbegrensning"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera hastighetsbegränsning"
+ }
+ }
+ }
+ },
+ "Enable Streaming" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver streaming"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Streaming aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer le streaming"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver strømming"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera streaming"
+ }
+ }
+ }
+ },
+ "Enable Summarization" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver opsummering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Zusammenfassung aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activer le résumé"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiver sammendrag"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivera sammanfattning"
+ }
+ }
+ }
+ },
+ "Enabled" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiveret"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiviert"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Activé"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktivert"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktiverad"
+ }
+ }
+ }
+ },
+ "Enter your Ollama server URL to enable the Ollama provider" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Indtast din Ollama-server-URL for at aktivere Ollama-udbyderen"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gib die URL deines Ollama-Servers ein, um den Ollama-Anbieter zu aktivieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Saisis l'URL de ton serveur Ollama pour activer le fournisseur Ollama"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skriv inn Ollama-serverens URL for å aktivere Ollama-tilbyderen"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ange din Ollama-servers URL för att aktivera Ollama-leverantören"
+ }
+ }
+ }
+ },
"Error: %@" : {
"comment" : "A label displaying an error message in the checkout view.",
"isCommentAutoGenerated" : true,
@@ -3596,6 +6829,210 @@
}
}
},
+ "Executes immediately — no extra input needed" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Udføres umiddelbart — ingen ekstra input nødvendig"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Wird sofort ausgeführt — keine zusätzliche Eingabe nötig"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "S'exécute immédiatement — aucune saisie supplémentaire nécessaire"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Utføres umiddelbart — ingen ekstra input nødvendig"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Körs omedelbart — ingen extra indata behövs"
+ }
+ }
+ }
+ },
+ "Export" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eksporter"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exportieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exporter"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eksporter"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exportera"
+ }
+ }
+ }
+ },
+ "Export All" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eksporter alle"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Alle exportieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tout exporter"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eksporter alle"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exportera alla"
+ }
+ }
+ }
+ },
+ "Export as Markdown…" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eksporter som Markdown…"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Als Markdown exportieren…"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exporter en Markdown…"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eksporter som Markdown…"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exportera som Markdown…"
+ }
+ }
+ }
+ },
+ "Export shortcut" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eksporter genvej"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verknüpfung exportieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exporter le raccourci"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eksporter snarvei"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exportera genväg"
+ }
+ }
+ }
+ },
+ "Features" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Funktioner"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Funktionen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fonctionnalités"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Funksjoner"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Funktioner"
+ }
+ }
+ }
+ },
"File Access Permissions" : {
"localizations" : {
"da" : {
@@ -3666,6 +7103,40 @@
}
}
},
+ "Filter by category" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Filtrer efter kategori"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nach Kategorie filtern"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Filtrer par catégorie"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Filtrer etter kategori"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Filtrera efter kategori"
+ }
+ }
+ }
+ },
"Filter by Category" : {
"localizations" : {
"da" : {
@@ -3700,6 +7171,40 @@
}
}
},
+ "Filtering" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Filtrering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Filterung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Filtrage"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Filtrering"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Filtrering"
+ }
+ }
+ }
+ },
"Generate an API key in your Jarvis settings and paste it above." : {
"localizations" : {
"da" : {
@@ -3734,6 +7239,74 @@
}
}
},
+ "Generate embeddings for all existing messages (one-time operation)" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Generer indlejringer for alle eksisterende beskeder (enkeltstående handling)"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Embeddings für alle vorhandenen Nachrichten generieren (einmaliger Vorgang)"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Générer des embeddings pour tous les messages existants (opération unique)"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Generer innbygginger for alle eksisterende meldinger (engangsoperasjon)"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Generera embeddings för alla befintliga meddelanden (engångsoperation)"
+ }
+ }
+ }
+ },
+ "Git Sync" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Git-synkronisering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Git-Synchronisierung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Synchronisation Git"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Git-synkronisering"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Git-synkronisering"
+ }
+ }
+ }
+ },
"Google (Gemini embedding)" : {
"localizations" : {
"da" : {
@@ -3768,6 +7341,108 @@
}
}
},
+ "Google API Key" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Google API-nøgle"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Google-API-Schlüssel"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Clé API Google"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Google API-nøkkel"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Google API-nyckel"
+ }
+ }
+ }
+ },
+ "Got It" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Forstået"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verstanden"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Compris"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skjønner"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Förstått"
+ }
+ }
+ }
+ },
+ "GUI Text" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "GUI-tekst"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "GUI-Text"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Texte de l'interface"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "GUI-tekst"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "GUI-text"
+ }
+ }
+ }
+ },
"Help" : {
"comment" : "A heading for the help screen",
"isCommentAutoGenerated" : true,
@@ -3804,6 +7479,74 @@
}
}
},
+ "Hide" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skjul"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verbergen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Masquer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skjul"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dölj"
+ }
+ }
+ }
+ },
+ "Hide Reasoning in Response" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skjul ræsonnement i svar"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Reasoning in Antwort verbergen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Masquer le raisonnement dans la réponse"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skjul resonnering i svar"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dölj resonemang i svar"
+ }
+ }
+ }
+ },
"High (~80%)" : {
"localizations" : {
"da" : {
@@ -3942,6 +7685,380 @@
}
}
},
+ "iCloud Drive Backup" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iCloud Drive-sikkerhedskopi"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iCloud-Drive-Sicherung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sauvegarde iCloud Drive"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iCloud Drive-sikkerhetskopi"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "iCloud Drive-säkerhetskopia"
+ }
+ }
+ }
+ },
+ "Icon Size" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ikonstørrelse"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Symbolgröße"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Taille des icônes"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ikonstørrelse"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ikonstorlek"
+ }
+ }
+ }
+ },
+ "ID" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "ID"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "ID"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "ID"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "ID"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "ID"
+ }
+ }
+ }
+ },
+ "Idle" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inaktiv"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inaktiv"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inactif"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inaktiv"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inaktiv"
+ }
+ }
+ }
+ },
+ "Idle Timeout" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inaktivitetstid"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inaktivitäts-Timeout"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Délai d'inactivité"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inaktivitetstid"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inaktivitetstid"
+ }
+ }
+ }
+ },
+ "Image Gen" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Billedgenerering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bildgenerierung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Génération d'images"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bildegenerering"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bildgenerering"
+ }
+ }
+ }
+ },
+ "IMAP Host" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "IMAP-vært"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "IMAP-Host"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hôte IMAP"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "IMAP-vert"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "IMAP-värd"
+ }
+ }
+ }
+ },
+ "IMAP Port" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "IMAP-port"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "IMAP-Port"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Port IMAP"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "IMAP-port"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "IMAP-port"
+ }
+ }
+ }
+ },
+ "immediate" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "umiddelbar"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "sofort"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "immédiat"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "umiddelbar"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "omedelbar"
+ }
+ }
+ }
+ },
+ "Import" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Importer"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Importieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Importer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Importer"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Importera"
+ }
+ }
+ }
+ },
+ "In-App Help" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hjælp i appen"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hilfe in der App"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aide dans l'app"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hjelp i appen"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hjälp i appen"
+ }
+ }
+ }
+ },
"Initialize Repository" : {
"localizations" : {
"da" : {
@@ -4044,6 +8161,210 @@
}
}
},
+ "Input Text" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inputtekst"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Eingabetext"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Texte de saisie"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inndatatekst"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inmatningstext"
+ }
+ }
+ }
+ },
+ "Instruct Type" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Instruktionstype"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Anweisungstyp"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Type d'instruction"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Instruksjonstype"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Instruktionstyp"
+ }
+ }
+ }
+ },
+ "Intel Mac Support Ending" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Intel Mac-support afsluttes"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Intel-Mac-Unterstützung endet"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fin du support Intel Mac"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Intel Mac-støtte avsluttes"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Intel Mac-support upphör"
+ }
+ }
+ }
+ },
+ "Jarvis" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Jarvis"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Jarvis"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Jarvis"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Jarvis"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Jarvis"
+ }
+ }
+ }
+ },
+ "Keep Both" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Behold begge"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Beide behalten"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Garder les deux"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Behold begge"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Behåll båda"
+ }
+ }
+ }
+ },
+ "Keyboard Shortcuts" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tastaturgenveje"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tastenkombinationen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Raccourcis clavier"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tastatursnarveier"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tangentbordsgenvägar"
+ }
+ }
+ }
+ },
"Large files inflate the system prompt and may hit token limits." : {
"comment" : "A warning displayed when a user adds a large file to a skill.",
"isCommentAutoGenerated" : true,
@@ -4080,6 +8401,40 @@
}
}
},
+ "Last Backup" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Seneste sikkerhedskopi"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Letzte Sicherung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dernière sauvegarde"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Siste sikkerhetskopi"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Senaste säkerhetskopia"
+ }
+ }
+ }
+ },
"Last sync: %@" : {
"localizations" : {
"da" : {
@@ -4114,6 +8469,74 @@
}
}
},
+ "Later" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Senere"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Später"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Plus tard"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Senere"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Senare"
+ }
+ }
+ }
+ },
+ "Leave blank for default" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lad stå tomt for standard"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Leer lassen für Standard"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Laisser vide pour la valeur par défaut"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "La stå tomt for standard"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lämna tomt för standard"
+ }
+ }
+ }
+ },
"Leave empty to use the default email handler system prompt." : {
"localizations" : {
"da" : {
@@ -4148,6 +8571,247 @@
}
}
},
+ "Let the AI access your Calendar, Reminders, and Location & Maps to answer questions about your schedule and surroundings. Each service is opt-in and uses standard macOS permission prompts. This functionality is in beta and may change." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lad AI'en få adgang til din kalender, dine påmindelser og placering/kort for at besvare spørgsmål om din tidsplan og dine omgivelser. Hver tjeneste er valgfri og bruger macOS' standardtilladelsesanmodninger. Denne funktionalitet er i beta og kan ændre sig."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Erlaube der KI den Zugriff auf deinen Kalender, deine Erinnerungen und Standort/Karten, um Fragen zu deinem Terminplan und deiner Umgebung zu beantworten. Jeder Dienst ist optional und nutzt die Standard-Berechtigungsabfragen von macOS. Diese Funktion befindet sich in der Beta-Phase und kann sich ändern."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Autorise l'IA à accéder à ton calendrier, tes rappels et ta position/cartes pour répondre à des questions sur ton emploi du temps et ton environnement. Chaque service est facultatif et utilise les demandes d'autorisation standard de macOS. Cette fonctionnalité est en bêta et peut évoluer."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "La KI-en få tilgang til kalenderen, påminnelsene og posisjon/kart for å svare på spørsmål om timeplanen og omgivelsene dine. Hver tjeneste er valgfri og bruker standard tillatelsesforespørsler fra macOS. Denne funksjonaliteten er i beta og kan endre seg."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Låt AI:n få åtkomst till din kalender, dina påminnelser och plats/kartor för att svara på frågor om ditt schema och din omgivning. Varje tjänst är valfri och använder standardbehörighetsförfrågningar från macOS. Den här funktionen är i beta och kan komma att ändras."
+ }
+ }
+ }
+ },
+ "Let the AI spawn read-only research sub-agents to investigate multiple things in parallel (read files, list/search directories, search the web — no writing, no bash). Intended for genuinely independent research tasks, not everyday questions." : {
+
+ },
+ "Loading usage…" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Indlæser forbrug…"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nutzung wird geladen…"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Chargement de l'utilisation…"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Laster forbruk…"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Laddar användning…"
+ }
+ }
+ }
+ },
+ "Loading..." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Indlæser..."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Wird geladen..."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Chargement..."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Laster..."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Laddar..."
+ }
+ }
+ }
+ },
+ "Local Path" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lokal sti"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lokaler Pfad"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Chemin local"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lokal bane"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lokal sökväg"
+ }
+ }
+ }
+ },
+ "Location & Maps" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Placering og kort"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Standort & Karten"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Position et cartes"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Posisjon og kart"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Plats och kartor"
+ }
+ }
+ }
+ },
+ "Log Level" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Logniveau"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Protokollstufe"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Niveau de journalisation"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Loggnivå"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Loggnivå"
+ }
+ }
+ }
+ },
+ "Logging" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Logning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Protokollierung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Journalisation"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Logging"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Loggning"
+ }
+ }
+ }
+ },
"Low (~20%)" : {
"localizations" : {
"da" : {
@@ -4218,6 +8882,40 @@
}
}
},
+ "Manual Sync" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Manuel synkronisering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Manuelle Synchronisierung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Synchronisation manuelle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Manuell synkronisering"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Manuell synkronisering"
+ }
+ }
+ }
+ },
"Markdown instruction files injected into the system prompt. Compatible with SKILL.md format." : {
"comment" : "A description of the format of agent skills.",
"isCommentAutoGenerated" : true,
@@ -4254,6 +8952,142 @@
}
}
},
+ "Max Context Tokens" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks konteksttokens"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maximale Kontext-Tokens"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokens de contexte max"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks kontekst-tokens"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Max kontext-tokens"
+ }
+ }
+ }
+ },
+ "Max Emails Per Hour" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks e-mails pr. time"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Max. E-Mails pro Stunde"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "E-mails max par heure"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks e-poster per time"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Max e-post per timme"
+ }
+ }
+ }
+ },
+ "Max Response Tokens" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks svartokens"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maximale Antwort-Tokens"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokens de réponse max"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks svar-tokens"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Max svars-tokens"
+ }
+ }
+ }
+ },
+ "Max Tokens" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks tokens"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maximale Tokens"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokens max"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks tokens"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Max tokens"
+ }
+ }
+ }
+ },
"Max Tokens: set to 0 to use model default. Higher values allow longer responses." : {
"localizations" : {
"da" : {
@@ -4288,6 +9122,40 @@
}
}
},
+ "Max Tool Calls" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks værktøjskald"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Max. Tool-Aufrufe"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Appels d'outils max"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Maks verktøykall"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Max verktygsanrop"
+ }
+ }
+ }
+ },
"MCP gives the AI controlled access to read and optionally write files on your computer. The AI can search, read, and analyze files in allowed folders to help with coding, analysis, and other tasks." : {
"localizations" : {
"da" : {
@@ -4356,6 +9224,40 @@
}
}
},
+ "Memory & Context" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hukommelse og kontekst"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Speicher und Kontext"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Mémoire et contexte"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Minne og kontekst"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Minne och kontext"
+ }
+ }
+ }
+ },
"Merge method" : {
"localizations" : {
"da" : {
@@ -4390,6 +9292,40 @@
}
}
},
+ "Message Threshold" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Beskedtærskel"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nachrichtenschwelle"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Seuil de messages"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Meldingsterskel"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Meddelandetröskel"
+ }
+ }
+ }
+ },
"messages" : {
"localizations" : {
"da" : {
@@ -4458,6 +9394,74 @@
}
}
},
+ "Method" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Metode"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Methode"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Méthode"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Metode"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Metod"
+ }
+ }
+ }
+ },
+ "Min Messages" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Min. beskeder"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Min. Nachrichten"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Messages min."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Min. meldinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Min. meddelanden"
+ }
+ }
+ }
+ },
"Minimal (~10%)" : {
"localizations" : {
"da" : {
@@ -4492,6 +9496,74 @@
}
}
},
+ "Modality" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modalitet"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modalität"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modalité"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modalitet"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modalitet"
+ }
+ }
+ }
+ },
+ "Model" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Model"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modell"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modèle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modell"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modell"
+ }
+ }
+ }
+ },
"Model Context Protocol" : {
"localizations" : {
"da" : {
@@ -4526,6 +9598,40 @@
}
}
},
+ "Model Details" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modeldetaljer"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modelldetails"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Détails du modèle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modelldetaljer"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modelldetaljer"
+ }
+ }
+ }
+ },
"Model Info" : {
"comment" : "A title for a view that displays information about a model.",
"isCommentAutoGenerated" : true,
@@ -4562,6 +9668,74 @@
}
}
},
+ "Model Parameters" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modelparametre"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modellparameter"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Paramètres du modèle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modellparametere"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modellparametrar"
+ }
+ }
+ }
+ },
+ "Model Settings" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modelindstillinger"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modelleinstellungen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Réglages du modèle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modellinnstillinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modellinställningar"
+ }
+ }
+ }
+ },
"Model thinks internally but reasoning is not shown in chat" : {
"localizations" : {
"da" : {
@@ -4596,6 +9770,40 @@
}
}
},
+ "Move & Copy Files" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Flyt og kopiér filer"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dateien verschieben und kopieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Déplacer et copier des fichiers"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Flytt og kopier filer"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Flytta och kopiera filer"
+ }
+ }
+ }
+ },
"Multi-provider AI chat client" : {
"comment" : "A description of oAI.",
"isCommentAutoGenerated" : true,
@@ -4668,6 +9876,74 @@
}
}
},
+ "needs input" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "kræver input"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "benötigt Eingabe"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "nécessite une saisie"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "krever input"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "kräver indata"
+ }
+ }
+ }
+ },
+ "Needs input — user types after the command" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kræver input — brugeren skriver efter kommandoen"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Benötigt Eingabe — Benutzer tippt nach dem Befehl"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nécessite une saisie — l'utilisateur tape après la commande"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Krever input — brukeren skriver etter kommandoen"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kräver indata — användaren skriver efter kommandot"
+ }
+ }
+ }
+ },
"Never" : {
"comment" : "A label displayed in the settings view that indicates when the last backup was taken.",
"isCommentAutoGenerated" : true,
@@ -4704,6 +9980,40 @@
}
}
},
+ "New Agent" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ny agent"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Neuer Agent"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nouvel agent"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ny agent"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ny agent"
+ }
+ }
+ }
+ },
"New Chat" : {
"localizations" : {
"da" : {
@@ -4772,6 +10082,74 @@
}
}
},
+ "New Shortcut" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ny genvej"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Neue Verknüpfung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nouveau raccourci"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ny snarvei"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ny genväg"
+ }
+ }
+ }
+ },
+ "New Skill" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ny færdighed"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Neuer Skill"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nouveau skill"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ny ferdighet"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ny färdighet"
+ }
+ }
+ }
+ },
"No credit data available" : {
"comment" : "A message displayed when there is no credit data available.",
"isCommentAutoGenerated" : true,
@@ -4808,6 +10186,40 @@
}
}
},
+ "No default model configured — set one in Settings → General." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ingen standardmodel konfigureret — angiv en i Indstillinger → Generelt."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kein Standardmodell konfiguriert — lege eines in Einstellungen → Allgemein fest."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aucun modèle par défaut configuré — définis-en un dans Réglages → Général."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ingen standardmodell konfigurert — sett en i Innstillinger → Generelt."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ingen standardmodell konfigurerad — ställ in en i Inställningar → Allmänt."
+ }
+ }
+ }
+ },
"No email activity yet" : {
"comment" : "A message displayed when the user has not yet received any email activity.",
"isCommentAutoGenerated" : true,
@@ -5200,6 +10612,40 @@
}
}
},
+ "oAI Help" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "oAI-hjælp"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "oAI-Hilfe"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aide oAI"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "oAI-hjelp"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "oAI-hjälp"
+ }
+ }
+ }
+ },
"oAI v2.4 is the last version to support Intel Macs and Rosetta. Starting with macOS 28, oAI will require Apple Silicon. Consider upgrading your Mac to continue receiving updates." : {
"comment" : "A warning that Intel Macs are no longer supported.",
"isCommentAutoGenerated" : true,
@@ -5236,6 +10682,40 @@
}
}
},
+ "OK" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "OK"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "OK"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "OK"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "OK"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "OK"
+ }
+ }
+ }
+ },
"Ollama (Local)" : {
"comment" : "A label displayed above the credits information for the local Ollie.",
"isCommentAutoGenerated" : true,
@@ -5272,6 +10752,244 @@
}
}
},
+ "Ollama URL" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ollama-URL"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ollama-URL"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "URL Ollama"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ollama-URL"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ollama-URL"
+ }
+ }
+ }
+ },
+ "On app quit" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ved app-afslutning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Beim Beenden der App"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "À la fermeture de l'app"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ved avslutning av app"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vid app-avslut"
+ }
+ }
+ }
+ },
+ "On model switch" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ved modelskift"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Beim Modellwechsel"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Au changement de modèle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ved modellbytte"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vid modellbyte"
+ }
+ }
+ }
+ },
+ "Online" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Online"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Online"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "En ligne"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Online"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Online"
+ }
+ }
+ }
+ },
+ "Online Mode (Web Search)" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Onlinetilstand (websøgning)"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Online-Modus (Websuche)"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Mode en ligne (recherche web)"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nettmodus (websøk)"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Onlineläge (webbsökning)"
+ }
+ }
+ }
+ },
+ "Online Mode: Off" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Onlinetilstand: Fra"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Online-Modus: Aus"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Mode en ligne : désactivé"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nettmodus: Av"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Onlineläge: Av"
+ }
+ }
+ }
+ },
+ "Online Mode: On" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Onlinetilstand: Til"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Online-Modus: An"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Mode en ligne : activé"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nettmodus: På"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Onlineläge: På"
+ }
+ }
+ }
+ },
"Only emails with this text in the subject line will be processed. Example: \"[OAIBOT] What's the weather?\"" : {
"localizations" : {
"da" : {
@@ -5306,6 +11024,74 @@
}
}
},
+ "Open Chat…" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Åbn chat…"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Chat öffnen…"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ouvrir une discussion…"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Åpne chat…"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Öppna chatt…"
+ }
+ }
+ }
+ },
+ "Open System Settings" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Åbn Systemindstillinger"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Systemeinstellungen öffnen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ouvrir Réglages Système"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Åpne Systeminnstillinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Öppna Systeminställningar"
+ }
+ }
+ }
+ },
"OpenAI (text-embedding-3-large)" : {
"localizations" : {
"da" : {
@@ -5582,6 +11368,40 @@
}
}
},
+ "Optional description" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Valgfri beskrivelse"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Optionale Beschreibung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Description facultative"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Valgfri beskrivelse"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Valfri beskrivning"
+ }
+ }
+ }
+ },
"Output" : {
"localizations" : {
"da" : {
@@ -5616,6 +11436,244 @@
}
}
},
+ "Overview" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Overblik"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Übersicht"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aperçu"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Oversikt"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Översikt"
+ }
+ }
+ }
+ },
+ "Password" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Adgangskode"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Passwort"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Mot de passe"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Passord"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lösenord"
+ }
+ }
+ }
+ },
+ "Paused" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Pauset"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Pausiert"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "En pause"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Pauset"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Pausad"
+ }
+ }
+ }
+ },
+ "Permissions" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tilladelser"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Berechtigungen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Autorisations"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tillatelser"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Behörigheter"
+ }
+ }
+ }
+ },
+ "Personal Data" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Personlige data"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Persönliche Daten"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Données personnelles"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Personlige data"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Personliga data"
+ }
+ }
+ }
+ },
+ "Pricing" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Priser"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Preise"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tarification"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Priser"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Priser"
+ }
+ }
+ }
+ },
+ "Progressive Summarization" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Progressiv opsummering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Progressive Zusammenfassung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Résumé progressif"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Progressiv sammendrag"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Progressiv sammanfattning"
+ }
+ }
+ }
+ },
"Prompt" : {
"localizations" : {
"da" : {
@@ -5650,6 +11708,74 @@
}
}
},
+ "Provider" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Udbyder"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Anbieter"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fournisseur"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tilbyder"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Leverantör"
+ }
+ }
+ }
+ },
+ "Rate Limiting" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hastighedsbegrænsning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ratenbegrenzung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Limitation de débit"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Frekvensbegrensning"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hastighetsbegränsning"
+ }
+ }
+ }
+ },
"Read access (always enabled)" : {
"localizations" : {
"da" : {
@@ -5718,6 +11844,210 @@
}
}
},
+ "Reasoning (Thinking)" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ræsonnement (tænkning)"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Reasoning (Denkprozess)"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Raisonnement (réflexion)"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Resonnering (tenking)"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Resonemang (tänkande)"
+ }
+ }
+ }
+ },
+ "Reasoning Effort" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ræsonnementniveau"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Reasoning-Aufwand"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Effort de raisonnement"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Resonneringsnivå"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Resonemangsnivå"
+ }
+ }
+ }
+ },
+ "Refresh" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Opdater"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Aktualisieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Actualiser"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Oppdater"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Uppdatera"
+ }
+ }
+ }
+ },
+ "Refresh agents" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Opdater agenter"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Agenten aktualisieren"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Actualiser les agents"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Oppdater agenter"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Uppdatera agenter"
+ }
+ }
+ }
+ },
+ "Release Page" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Udgivelsesside"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Release-Seite"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Page de version"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Utgivelsesside"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Utgivningssida"
+ }
+ }
+ }
+ },
+ "Reminders" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Påmindelser"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Erinnerungen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rappels"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Påminnelser"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Påminnelser"
+ }
+ }
+ }
+ },
"Remote: %@" : {
"localizations" : {
"da" : {
@@ -5752,6 +12082,349 @@
}
}
},
+ "Remove file" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fjern fil"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Datei entfernen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Supprimer le fichier"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fjern fil"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ta bort fil"
+ }
+ }
+ }
+ },
+ "Rename" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Omdøb"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Umbenennen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Renommer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gi nytt navn"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Byt namn"
+ }
+ }
+ }
+ },
+ "Rename conversation" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Omdøb samtale"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gespräch umbenennen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Renommer la conversation"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gi samtalen nytt navn"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Byt namn på konversation"
+ }
+ }
+ }
+ },
+ "Replace" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Erstat"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ersetzen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Remplacer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Erstatt"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ersätt"
+ }
+ }
+ }
+ },
+ "Request Access" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Anmod om adgang"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Zugriff anfordern"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Demander l'accès"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Be om tilgang"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Begär åtkomst"
+ }
+ }
+ }
+ },
+ "Require Approval" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kræver godkendelse"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Genehmigung erforderlich"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Approbation requise"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Krever godkjenning"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kräver godkännande"
+ }
+ }
+ }
+ },
+ "Require Approval for Changes" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kræver godkendelse for ændringer"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Genehmigung für Änderungen erforderlich"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Approbation requise pour les modifications"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Krever godkjenning for endringer"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kräver godkännande för ändringar"
+ }
+ }
+ }
+ },
+ "Research Agents" : {
+
+ },
+ "Respect .gitignore" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Respekter .gitignore"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : ".gitignore beachten"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Respecter .gitignore"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Respekter .gitignore"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Respektera .gitignore"
+ }
+ }
+ }
+ },
+ "Response Generation" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Svargenerering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Antwortgenerierung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Génération de réponses"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Svargenerering"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Svarsgenerering"
+ }
+ }
+ }
+ },
+ "Response Settings" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Svarindstillinger"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Antworteinstellungen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Réglages de réponse"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Svarinnstillinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Svarsinställningar"
+ }
+ }
+ }
+ },
"Restore from File…" : {
"comment" : "A button that allows the user to restore their data from a file.",
"isCommentAutoGenerated" : true,
@@ -5788,6 +12461,74 @@
}
}
},
+ "Retry" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Prøv igen"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Erneut versuchen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Réessayer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Prøv igjen"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Försök igen"
+ }
+ }
+ }
+ },
+ "Run agent now" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kør agent nu"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Agent jetzt ausführen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Exécuter l'agent maintenant"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kjør agent nå"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Kör agent nu"
+ }
+ }
+ }
+ },
"Run History" : {
"localizations" : {
"da" : {
@@ -5928,6 +12669,482 @@
}
}
},
+ "Save" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gem"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Speichern"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Enregistrer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lagre"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Spara"
+ }
+ }
+ }
+ },
+ "Save Chat" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gem chat"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Chat speichern"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Enregistrer la discussion"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lagre chat"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Spara chatt"
+ }
+ }
+ }
+ },
+ "Save Chat As…" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gem chat som…"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Chat speichern als…"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Enregistrer la discussion sous…"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lagre chat som…"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Spara chatt som…"
+ }
+ }
+ }
+ },
+ "Save to Downloads" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gem til Downloads"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "In Downloads speichern"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Enregistrer dans Téléchargements"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Lagre til Nedlastinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Spara till Nedladdningar"
+ }
+ }
+ }
+ },
+ "Schedule" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tidsplan"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Zeitplan"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Planification"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tidsplan"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Schema"
+ }
+ }
+ }
+ },
+ "Search by sender, subject, or content..." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søg efter afsender, emne eller indhold..."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nach Absender, Betreff oder Inhalt suchen..."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rechercher par expéditeur, objet ou contenu..."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søk etter avsender, emne eller innhold..."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sök efter avsändare, ämne eller innehåll..."
+ }
+ }
+ }
+ },
+ "Search by text or date (dd.mm.yyyy)..." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søg efter tekst eller dato (dd.mm.åååå)..."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nach Text oder Datum suchen (TT.MM.JJJJ)..."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rechercher par texte ou date (jj.mm.aaaa)..."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søk etter tekst eller dato (dd.mm.åååå)..."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sök efter text eller datum (dd.mm.åååå)..."
+ }
+ }
+ }
+ },
+ "Search commands, shortcuts, features..." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søg i kommandoer, genveje, funktioner..."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Befehle, Verknüpfungen, Funktionen durchsuchen..."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rechercher des commandes, raccourcis, fonctionnalités..."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søk i kommandoer, snarveier, funksjoner..."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sök i kommandon, genvägar, funktioner..."
+ }
+ }
+ }
+ },
+ "Search Conversations" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søg i samtaler"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gespräche durchsuchen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rechercher dans les conversations"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søk i samtaler"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sök i konversationer"
+ }
+ }
+ }
+ },
+ "Search conversations..." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søg i samtaler..."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gespräche durchsuchen..."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rechercher dans les conversations..."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søk i samtaler..."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sök i konversationer..."
+ }
+ }
+ }
+ },
+ "Search conversations…" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søg i samtaler…"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Gespräche durchsuchen…"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rechercher dans les conversations…"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søk i samtaler…"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sök i konversationer…"
+ }
+ }
+ }
+ },
+ "Search Engine ID" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søgemaskine-ID"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Suchmaschinen-ID"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "ID du moteur de recherche"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søkemotor-ID"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sökmotor-ID"
+ }
+ }
+ }
+ },
+ "Search models..." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søg modeller..."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modelle durchsuchen..."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Rechercher des modèles..."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søk modeller..."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sök modeller..."
+ }
+ }
+ }
+ },
+ "Search Provider" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søgeudbyder"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Suchanbieter"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Fournisseur de recherche"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Søketilbyder"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sökleverantör"
+ }
+ }
+ }
+ },
"Security Recommendation" : {
"localizations" : {
"da" : {
@@ -5962,6 +13179,414 @@
}
}
},
+ "Select" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vælg"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Auswählen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sélectionner"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Velg"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Välj"
+ }
+ }
+ }
+ },
+ "Select model" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vælg model"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modell auswählen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sélectionner le modèle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Velg modell"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Välj modell"
+ }
+ }
+ }
+ },
+ "Select Model" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vælg model"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modell auswählen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sélectionner le modèle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Velg modell"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Välj modell"
+ }
+ }
+ }
+ },
+ "Select model..." : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vælg model..."
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modell auswählen..."
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sélectionner le modèle..."
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Velg modell..."
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Välj modell..."
+ }
+ }
+ }
+ },
+ "Semantic" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Semantisk"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Semantisch"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sémantique"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Semantisk"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Semantisk"
+ }
+ }
+ }
+ },
+ "Semantic Search" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Semantisk søgning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Semantische Suche"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Recherche sémantique"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Semantisk søk"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Semantisk sökning"
+ }
+ }
+ }
+ },
+ "Send message" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Send besked"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nachricht senden"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Envoyer le message"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Send melding"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skicka meddelande"
+ }
+ }
+ }
+ },
+ "Server URL" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Server-URL"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Server-URL"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "URL du serveur"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Server-URL"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Server-URL"
+ }
+ }
+ }
+ },
+ "Services" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tjenester"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dienste"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Services"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tjenester"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tjänster"
+ }
+ }
+ }
+ },
+ "Session Info" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sessionsinfo"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sitzungsinfo"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Infos de session"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sesjonsinfo"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sessionsinfo"
+ }
+ }
+ }
+ },
+ "Settings" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Indstillinger"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Einstellungen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Réglages"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Innstillinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inställningar"
+ }
+ }
+ }
+ },
+ "Settings…" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Indstillinger…"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Einstellungen…"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Réglages…"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Innstillinger…"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Inställningar…"
+ }
+ }
+ }
+ },
"Shell commands have full access to your system. Only approve commands you understand and trust." : {
"comment" : "A warning banner displayed in the Bash Approval Sheet.",
"isCommentAutoGenerated" : true,
@@ -5998,6 +13623,142 @@
}
}
},
+ "Show" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vis"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Anzeigen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Afficher"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vis"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Visa"
+ }
+ }
+ }
+ },
+ "Show favorites only" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vis kun favoritter"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nur Favoriten anzeigen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Afficher seulement les favoris"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vis bare favoritter"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Visa endast favoriter"
+ }
+ }
+ }
+ },
+ "Show Icon Labels" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vis ikonetiketter"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Symbolbeschriftungen anzeigen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Afficher les libellés des icônes"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vis ikonetiketter"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Visa ikonetiketter"
+ }
+ }
+ }
+ },
+ "Show model info" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vis modelinfo"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Modellinfo anzeigen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Afficher les infos du modèle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vis modellinfo"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Visa modellinfo"
+ }
+ }
+ }
+ },
"Show text labels below toolbar icons (helpful for new users)" : {
"comment" : "A description of the feature that shows text labels below toolbar icons.",
"isCommentAutoGenerated" : true,
@@ -6138,6 +13899,176 @@
}
}
},
+ "Skip" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Spring over"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Überspringen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ignorer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hopp over"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hoppa över"
+ }
+ }
+ }
+ },
+ "Smart Context Selection" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Smart kontekstvalg"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Intelligente Kontextauswahl"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Sélection intelligente du contexte"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Smart kontekstvalg"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Smart kontextval"
+ }
+ }
+ }
+ },
+ "SMTP Host" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "SMTP-vært"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "SMTP-Host"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Hôte SMTP"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "SMTP-vert"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "SMTP-värd"
+ }
+ }
+ }
+ },
+ "SMTP Port" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "SMTP-port"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "SMTP-Port"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Port SMTP"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "SMTP-port"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "SMTP-port"
+ }
+ }
+ }
+ },
+ "Software Update" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Softwareopdatering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Software-Update"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Mise à jour logicielle"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Programvareoppdatering"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Programvaruuppdatering"
+ }
+ }
+ }
+ },
"Sort" : {
"localizations" : {
"da" : {
@@ -6206,6 +14137,210 @@
}
}
},
+ "Star this message to always include it in context" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stjernemarkér denne besked for altid at inkludere den i konteksten"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Markiere diese Nachricht mit einem Stern, um sie immer in den Kontext einzubeziehen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Marque ce message d'une étoile pour toujours l'inclure dans le contexte"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stjernemerk denne meldingen for alltid å inkludere den i konteksten"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stjärnmärk detta meddelande för att alltid inkludera det i kontexten"
+ }
+ }
+ }
+ },
+ "Statistics" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistik"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistiken"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistiques"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistikk"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistik"
+ }
+ }
+ }
+ },
+ "Stats" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistik"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistik"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistiques"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistikk"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statistik"
+ }
+ }
+ }
+ },
+ "Status" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Status"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Status"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Statut"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Status"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Status"
+ }
+ }
+ }
+ },
+ "Stop agent" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stop agent"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Agent stoppen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Arrêter l'agent"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stopp agent"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stoppa agent"
+ }
+ }
+ }
+ },
+ "Stop generation" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stop generering"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Generierung stoppen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Arrêter la génération"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stopp generering"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Stoppa generering"
+ }
+ }
+ }
+ },
"Stream responses as they're generated. Disable for single, complete responses." : {
"localizations" : {
"da" : {
@@ -6240,6 +14375,74 @@
}
}
},
+ "Subject Identifier" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Emneidentifikator"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Betreff-Kennung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Identifiant d'objet"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Emneidentifikator"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ämnesidentifierare"
+ }
+ }
+ }
+ },
+ "Switch provider" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skift udbyder"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Anbieter wechseln"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Changer de fournisseur"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bytt tilbyder"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Byt leverantör"
+ }
+ }
+ }
+ },
"Sync conversations and settings across multiple machines using Git." : {
"localizations" : {
"da" : {
@@ -6308,6 +14511,142 @@
}
}
},
+ "Sync Options" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Synkroniseringsindstillinger"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Synchronisierungsoptionen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Options de synchronisation"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Synkroniseringsalternativer"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Synkroniseringsalternativ"
+ }
+ }
+ }
+ },
+ "System Prompt (Optional)" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Systemprompt (valgfri)"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "System-Prompt (optional)"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Prompt système (facultatif)"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Systemprompt (valgfri)"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Systemprompt (valfri)"
+ }
+ }
+ }
+ },
+ "System Prompts" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Systemprompter"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "System-Prompts"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Prompts système"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Systemprompter"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Systemprompter"
+ }
+ }
+ }
+ },
+ "Temperature" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Temperatur"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Temperatur"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Température"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Temperatur"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Temperatur"
+ }
+ }
+ }
+ },
"Temperature: 0 = model default · 0.0–0.7 = focused · 0.8–2.0 = creative" : {
"localizations" : {
"da" : {
@@ -6448,6 +14787,40 @@
}
}
},
+ "Text Sizes" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tekststørrelser"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Textgrößen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tailles de texte"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tekststørrelser"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Textstorlekar"
+ }
+ }
+ }
+ },
"The AI can read and search files in allowed folders" : {
"localizations" : {
"da" : {
@@ -6516,6 +14889,40 @@
}
}
},
+ "The AI wants to make a change to your calendar or reminders" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI'en vil foretage en ændring i din kalender eller dine påmindelser"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Die KI möchte eine Änderung an deinem Kalender oder deinen Erinnerungen vornehmen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "L'IA souhaite apporter une modification à ton calendrier ou tes rappels"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-en vil gjøre en endring i kalenderen eller påminnelsene dine"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "AI:n vill göra en ändring i din kalender eller dina påminnelser"
+ }
+ }
+ }
+ },
"The AI wants to run the following command" : {
"comment" : "A description of the command that the AI wants to run.",
"isCommentAutoGenerated" : true,
@@ -6552,6 +14959,40 @@
}
}
},
+ "Thinking" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tænkning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Denken"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Réflexion"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tenking"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tänkande"
+ }
+ }
+ }
+ },
"Thinking…" : {
"localizations" : {
"da" : {
@@ -6656,6 +15097,74 @@
}
}
},
+ "Timeout (seconds)" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Timeout (sekunder)"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Timeout (Sekunden)"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Délai (secondes)"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tidsavbrudd (sekunder)"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tidsgräns (sekunder)"
+ }
+ }
+ }
+ },
+ "Token" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Token"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Token"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Token"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Token"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Token"
+ }
+ }
+ }
+ },
"Token Distribution" : {
"comment" : "A label displayed under the token distribution bar.",
"isCommentAutoGenerated" : true,
@@ -6692,6 +15201,74 @@
}
}
},
+ "Token Usage" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokenforbrug"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Token-Nutzung"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Utilisation des tokens"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokenbruk"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokenanvändning"
+ }
+ }
+ }
+ },
+ "Tokenizer" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokenizer"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokenizer"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokenizer"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokenizer"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tokenizer"
+ }
+ }
+ }
+ },
"tokens" : {
"localizations" : {
"da" : {
@@ -6726,6 +15303,74 @@
}
}
},
+ "Toolbar" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Værktøjslinje"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Symbolleiste"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Barre d'outils"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verktøylinje"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verktygsfält"
+ }
+ }
+ }
+ },
+ "Tools" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Værktøjer"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Werkzeuge"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Outils"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verktøy"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Verktyg"
+ }
+ }
+ }
+ },
"Total" : {
"localizations" : {
"da" : {
@@ -7006,6 +15651,40 @@
}
}
},
+ "URL" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "URL"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "URL"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "URL"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "URL"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "URL"
+ }
+ }
+ }
+ },
"Usage" : {
"localizations" : {
"da" : {
@@ -7148,6 +15827,142 @@
}
}
},
+ "Use AI-powered semantic search instead of keyword matching" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Brug AI-drevet semantisk søgning i stedet for nøgleordssøgning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "KI-gestützte semantische Suche statt Schlüsselwortabgleich verwenden"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Utiliser la recherche sémantique par IA au lieu de la correspondance par mots-clés"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bruk KI-drevet semantisk søk i stedet for nøkkelordsøk"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Använd AI-driven semantisk sökning istället för nyckelordsmatchning"
+ }
+ }
+ }
+ },
+ "Use Only Your Prompt" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Brug kun din prompt"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nur deinen Prompt verwenden"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Utiliser uniquement ton prompt"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Bruk bare din prompt"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Använd endast din prompt"
+ }
+ }
+ }
+ },
+ "username" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "brugernavn"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Benutzername"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "nom d'utilisateur"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "brukernavn"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "användarnamn"
+ }
+ }
+ }
+ },
+ "Username" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Brugernavn"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Benutzername"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Nom d'utilisateur"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Brukernavn"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Användarnamn"
+ }
+ }
+ }
+ },
"Username + Password" : {
"localizations" : {
"da" : {
@@ -7261,6 +16076,40 @@
}
}
},
+ "View" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Visning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Ansicht"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Affichage"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Visning"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Visning"
+ }
+ }
+ }
+ },
"View Email Log" : {
"localizations" : {
"da" : {
@@ -7295,6 +16144,74 @@
}
}
},
+ "Vision" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vision"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vision"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vision"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vision"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Vision"
+ }
+ }
+ }
+ },
+ "Web Search" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Websøgning"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Websuche"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Recherche web"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Websøk"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Webbsökning"
+ }
+ }
+ }
+ },
"When enabled, listing and searching skip gitignored files. Write operations always ignore .gitignore." : {
"localizations" : {
"da" : {
@@ -7329,6 +16246,40 @@
}
}
},
+ "Working Directory" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Arbejdsmappe"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Arbeitsverzeichnis"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Répertoire de travail"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Arbeidsmappe"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Arbetskatalog"
+ }
+ }
+ }
+ },
"Working directory:" : {
"comment" : "A label displayed under the working directory of a pending shell command.",
"isCommentAutoGenerated" : true,
@@ -7365,6 +16316,74 @@
}
}
},
+ "Write & Edit Files" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skriv og rediger filer"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dateien schreiben und bearbeiten"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Écrire et modifier des fichiers"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skriv og rediger filer"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skriv och redigera filer"
+ }
+ }
+ }
+ },
+ "Write Actions" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skrivehandlinger"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Schreibaktionen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Actions d'écriture"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skrivehandlinger"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Skrivåtgärder"
+ }
+ }
+ }
+ },
"You can import any SKILL.md file from skill0.io or write your own." : {
"comment" : "A description of how to use skills.",
"isCommentAutoGenerated" : true,
@@ -7401,6 +16420,40 @@
}
}
},
+ "Your Shortcuts" : {
+ "localizations" : {
+ "da" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dine genveje"
+ }
+ },
+ "de" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Deine Verknüpfungen"
+ }
+ },
+ "fr" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Tes raccourcis"
+ }
+ },
+ "nb" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dine snarveier"
+ }
+ },
+ "sv" : {
+ "stringUnit" : {
+ "state" : "translated",
+ "value" : "Dina genvägar"
+ }
+ }
+ }
+ },
"β" : {
"comment" : "A beta badge.",
"isCommentAutoGenerated" : true,
@@ -7436,8438 +16489,6 @@
}
}
}
- },
- "Cancel" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Annuller"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Abbrechen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Annuler"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avbryt"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avbryt"
- }
- }
- }
- },
- "Save" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gem"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Speichern"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Enregistrer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lagre"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Spara"
- }
- }
- }
- },
- "Done" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Færdig"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fertig"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Terminé"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ferdig"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Klar"
- }
- }
- }
- },
- "Delete" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slet"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slett"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort"
- }
- }
- }
- },
- "Rename" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Omdøb"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Umbenennen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Renommer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gi nytt navn"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Byt namn"
- }
- }
- }
- },
- "Export" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eksporter"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exportieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exporter"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eksporter"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exportera"
- }
- }
- }
- },
- "Import" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importer"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Importera"
- }
- }
- }
- },
- "Retry" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Prøv igen"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Erneut versuchen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Réessayer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Prøv igjen"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Försök igen"
- }
- }
- }
- },
- "Refresh" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Opdater"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktualisieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Actualiser"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Oppdater"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Uppdatera"
- }
- }
- }
- },
- "Dismiss" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Luk"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Schließen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fermer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lukk"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stäng"
- }
- }
- }
- },
- "Select" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vælg"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auswählen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sélectionner"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Velg"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Välj"
- }
- }
- }
- },
- "Clear" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ryd"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Leeren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Effacer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tøm"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rensa"
- }
- }
- }
- },
- "Skip" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Spring over"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Überspringen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ignorer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hopp over"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hoppa över"
- }
- }
- }
- },
- "Replace" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Erstat"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ersetzen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Remplacer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Erstatt"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ersätt"
- }
- }
- }
- },
- "Keep Both" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Behold begge"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Beide behalten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Garder les deux"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Behold begge"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Behåll båda"
- }
- }
- }
- },
- "Got It" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Forstået"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verstanden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Compris"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skjønner"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Förstått"
- }
- }
- }
- },
- "Later" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Senere"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Später"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Plus tard"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Senere"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Senare"
- }
- }
- }
- },
- "OK" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "OK"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "OK"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "OK"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "OK"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "OK"
- }
- }
- }
- },
- "Release Page" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Udgivelsesside"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Release-Seite"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Page de version"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Utgivelsesside"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Utgivningssida"
- }
- }
- }
- },
- "Download v%@" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hent v%@"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "v%@ herunterladen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Télécharger v%@"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Last ned v%@"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ladda ner v%@"
- }
- }
- }
- },
- "Allow Once" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tillad denne gang"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Einmal erlauben"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Autoriser une fois"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tillat denne gangen"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tillåt denna gång"
- }
- }
- }
- },
- "Allow for Session" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tillad for sessionen"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Für Sitzung erlauben"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Autoriser pour la session"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tillat for sesjonen"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tillåt för sessionen"
- }
- }
- }
- },
- "Deny" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Afvis"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verweigern"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Refuser"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avslå"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Neka"
- }
- }
- }
- },
- "Choose…" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vælg…"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auswählen…"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Choisir…"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Velg…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Välj…"
- }
- }
- }
- },
- "Save to Downloads" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gem til Downloads"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "In Downloads speichern"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Enregistrer dans Téléchargements"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lagre til Nedlastinger"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Spara till Nedladdningar"
- }
- }
- }
- },
- "Copy Image" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kopiér billede"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bild kopieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Copier l'image"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kopier bilde"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kopiera bild"
- }
- }
- }
- },
- "Add File" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tilføj fil"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Datei hinzufügen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ajouter un fichier"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Legg til fil"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lägg till fil"
- }
- }
- }
- },
- "New Skill" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ny færdighed"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Neuer Skill"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nouveau skill"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ny ferdighet"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ny färdighet"
- }
- }
- }
- },
- "Export All" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eksporter alle"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Alle exportieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tout exporter"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eksporter alle"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exportera alla"
- }
- }
- }
- },
- "Your Shortcuts" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dine genveje"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Deine Verknüpfungen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tes raccourcis"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dine snarveier"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dina genvägar"
- }
- }
- }
- },
- "New Shortcut" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ny genvej"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Neue Verknüpfung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nouveau raccourci"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ny snarvei"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ny genväg"
- }
- }
- }
- },
- "needs input" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "kræver input"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "benötigt Eingabe"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "nécessite une saisie"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "krever input"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "kräver indata"
- }
- }
- }
- },
- "immediate" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "umiddelbar"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "sofort"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "immédiat"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "umiddelbar"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "omedelbar"
- }
- }
- }
- },
- "No default model configured — set one in Settings → General." : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ingen standardmodel konfigureret — angiv en i Indstillinger → Generelt."
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kein Standardmodell konfiguriert — lege eines in Einstellungen → Allgemein fest."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aucun modèle par défaut configuré — définis-en un dans Réglages → Général."
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ingen standardmodell konfigurert — sett en i Innstillinger → Generelt."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ingen standardmodell konfigurerad — ställ in en i Inställningar → Allmänt."
- }
- }
- }
- },
- "Delete original conversations after combining" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slet de oprindelige samtaler efter sammenlægning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ursprüngliche Gespräche nach dem Zusammenführen löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer les conversations d'origine après la fusion"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slett originalsamtalene etter sammenslåing"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort originalkonversationerna efter sammanslagning"
- }
- }
- }
- },
- "Combine" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sammenlæg"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Zusammenführen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fusionner"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slå sammen"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slå samman"
- }
- }
- }
- },
- "Semantic" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Semantisk"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Semantisch"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sémantique"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Semantisk"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Semantisk"
- }
- }
- }
- },
- "Keyboard Shortcuts" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tastaturgenveje"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tastenkombinationen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Raccourcis clavier"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tastatursnarveier"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tangentbordsgenvägar"
- }
- }
- }
- },
- "Jarvis" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Jarvis"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Jarvis"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Jarvis"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Jarvis"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Jarvis"
- }
- }
- }
- },
- "New Agent" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ny agent"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Neuer Agent"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nouvel agent"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ny agent"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ny agent"
- }
- }
- }
- },
- "Paused" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pauset"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pausiert"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "En pause"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pauset"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Pausad"
- }
- }
- }
- },
- "Idle" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inaktiv"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inaktiv"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inactif"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inaktiv"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inaktiv"
- }
- }
- }
- },
- "Add Folder…" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tilføj mappe…"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ordner hinzufügen…"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ajouter un dossier…"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Legg til mappe…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lägg till mapp…"
- }
- }
- }
- },
- "Embed All Conversations" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Indlejr alle samtaler"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Alle Gespräche einbetten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Intégrer toutes les conversations"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bygg inn alle samtaler"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bädda in alla konversationer"
- }
- }
- }
- },
- "Needs input — user types after the command" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kræver input — brugeren skriver efter kommandoen"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Benötigt Eingabe — Benutzer tippt nach dem Befehl"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nécessite une saisie — l'utilisateur tape après la commande"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Krever input — brukeren skriver etter kommandoen"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kräver indata — användaren skriver efter kommandot"
- }
- }
- }
- },
- "Executes immediately — no extra input needed" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Udføres umiddelbart — ingen ekstra input nødvendig"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wird sofort ausgeführt — keine zusätzliche Eingabe nötig"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "S'exécute immédiatement — aucune saisie supplémentaire nécessaire"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Utføres umiddelbart — ingen ekstra input nødvendig"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Körs omedelbart — ingen extra indata behövs"
- }
- }
- }
- },
- "About oAI" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om oAI"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Über oAI"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "À propos d'oAI"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om oAI"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Om oAI"
- }
- }
- }
- },
- "Settings…" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Indstillinger…"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Einstellungen…"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Réglages…"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Innstillinger…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inställningar…"
- }
- }
- }
- },
- "Clear Chat" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ryd chat"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chat leeren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Effacer la discussion"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tøm chat"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rensa chatt"
- }
- }
- }
- },
- "Open Chat…" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Åbn chat…"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chat öffnen…"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ouvrir une discussion…"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Åpne chat…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Öppna chatt…"
- }
- }
- }
- },
- "Search Conversations" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søg i samtaler"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gespräche durchsuchen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rechercher dans les conversations"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søk i samtaler"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sök i konversationer"
- }
- }
- }
- },
- "Save Chat" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gem chat"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chat speichern"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Enregistrer la discussion"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lagre chat"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Spara chatt"
- }
- }
- }
- },
- "Save Chat As…" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gem chat som…"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chat speichern als…"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Enregistrer la discussion sous…"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lagre chat som…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Spara chatt som…"
- }
- }
- }
- },
- "Stats" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistik"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistik"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistiques"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistikk"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistik"
- }
- }
- }
- },
- "Export as Markdown…" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eksporter som Markdown…"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Als Markdown exportieren…"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exporter en Markdown…"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eksporter som Markdown…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exportera som Markdown…"
- }
- }
- }
- },
- "View" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ansicht"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Affichage"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visning"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visning"
- }
- }
- }
- },
- "Select Model" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vælg model"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modell auswählen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sélectionner le modèle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Velg modell"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Välj modell"
- }
- }
- }
- },
- "In-App Help" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hjælp i appen"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hilfe in der App"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aide dans l'app"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hjelp i appen"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hjälp i appen"
- }
- }
- }
- },
- "Credits" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kreditter"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Guthaben"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Crédits"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kreditter"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Krediter"
- }
- }
- }
- },
- "oAI Help" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "oAI-hjælp"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "oAI-Hilfe"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aide oAI"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "oAI-hjelp"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "oAI-hjälp"
- }
- }
- }
- },
- "%@ tokens" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ tokens"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ tokens"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ tokens"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ tokens"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "%@ tokens"
- }
- }
- }
- },
- "^[%@ skill](inflect: true) imported" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ færdighed](inflect: true) importeret"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ Skill](inflect: true) importiert"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ skill](inflect: true) importé"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ ferdighet](inflect: true) importert"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ färdighet](inflect: true) importerad"
- }
- }
- }
- },
- "^[%@ skill](inflect: true) exported to Downloads" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ færdighed](inflect: true) eksporteret til Downloads"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ Skill](inflect: true) nach Downloads exportiert"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ skill](inflect: true) exporté vers Téléchargements"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ ferdighet](inflect: true) eksportert til Nedlastinger"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ färdighet](inflect: true) exporterad till Nedladdningar"
- }
- }
- }
- },
- "^[%@ file](inflect: true)" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ fil](inflect: true)"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ Datei](inflect: true)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ fichier](inflect: true)"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ fil](inflect: true)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ fil](inflect: true)"
- }
- }
- }
- },
- "^[%@ skill](inflect: true) active — appended to every system prompt" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ færdighed](inflect: true) aktiv — tilføjet til hver systemprompt"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ Skill](inflect: true) aktiv — an jeden System-Prompt angehängt"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ skill](inflect: true) actif — ajouté à chaque prompt système"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ ferdighet](inflect: true) aktiv — lagt til i hver systemprompt"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ färdighet](inflect: true) aktiv — lagd till i varje systemprompt"
- }
- }
- }
- },
- "^[%@ running](inflect: true)" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ kørende](inflect: true)"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ laufend](inflect: true)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ en cours](inflect: true)"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ kjørende](inflect: true)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "^[%@ igång](inflect: true)"
- }
- }
- }
- },
- "Search conversations…" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søg i samtaler…"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gespräche durchsuchen…"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rechercher dans les conversations…"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søk i samtaler…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sök i konversationer…"
- }
- }
- }
- },
- "e.g. Code Review, Test Writer, Security Auditor" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "f.eks. Kodegennemgang, Testskribent, Sikkerhedsrevisor"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "z. B. Code-Review, Test-Autor, Sicherheitsprüfer"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "ex. Revue de code, Rédacteur de tests, Auditeur sécurité"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "f.eks. Kodegjennomgang, Testskriving, Sikkerhetsrevisor"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "t.ex. Kodgranskning, Testskrivare, Säkerhetsgranskare"
- }
- }
- }
- },
- "Brief summary (optional — auto-extracted from content if left blank)" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kort resumé (valgfrit — udtrækkes automatisk fra indholdet, hvis det er tomt)"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kurze Zusammenfassung (optional — wird automatisch aus dem Inhalt extrahiert, wenn leer)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Résumé bref (facultatif — extrait automatiquement du contenu si laissé vide)"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kort sammendrag (valgfritt — hentes automatisk fra innholdet hvis tomt)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kort sammanfattning (valfritt — extraheras automatiskt från innehållet om tomt)"
- }
- }
- }
- },
- "Search conversations..." : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søg i samtaler..."
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gespräche durchsuchen..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rechercher dans les conversations..."
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søk i samtaler..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sök i konversationer..."
- }
- }
- }
- },
- "Loading..." : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Indlæser..."
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Wird geladen..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chargement..."
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Laster..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Laddar..."
- }
- }
- }
- },
- "Search by sender, subject, or content..." : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søg efter afsender, emne eller indhold..."
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nach Absender, Betreff oder Inhalt suchen..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rechercher par expéditeur, objet ou contenu..."
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søk etter avsender, emne eller innhold..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sök efter avsändare, ämne eller innehåll..."
- }
- }
- }
- },
- "Search commands, shortcuts, features..." : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søg i kommandoer, genveje, funktioner..."
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Befehle, Verknüpfungen, Funktionen durchsuchen..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rechercher des commandes, raccourcis, fonctionnalités..."
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søk i kommandoer, snarveier, funksjoner..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sök i kommandon, genvägar, funktioner..."
- }
- }
- }
- },
- "Search by text or date (dd.mm.yyyy)..." : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søg efter tekst eller dato (dd.mm.åååå)..."
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nach Text oder Datum suchen (TT.MM.JJJJ)..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rechercher par texte ou date (jj.mm.aaaa)..."
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søk etter tekst eller dato (dd.mm.åååå)..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sök efter text eller datum (dd.mm.åååå)..."
- }
- }
- }
- },
- "Loading usage…" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Indlæser forbrug…"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nutzung wird geladen…"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chargement de l'utilisation…"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Laster forbruk…"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Laddar användning…"
- }
- }
- }
- },
- "Agent name" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Agentnavn"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Agentenname"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nom de l'agent"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Agentnavn"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Agentnamn"
- }
- }
- }
- },
- "Optional description" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Valgfri beskrivelse"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Optionale Beschreibung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Description facultative"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Valgfri beskrivelse"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Valfri beskrivning"
- }
- }
- }
- },
- "Cron expression (e.g. 0 * * * *)" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cron-udtryk (f.eks. 0 * * * *)"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cron-Ausdruck (z. B. 0 * * * *)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Expression cron (ex. 0 * * * *)"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cron-uttrykk (f.eks. 0 * * * *)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Cron-uttryck (t.ex. 0 * * * *)"
- }
- }
- }
- },
- "Leave blank for default" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lad stå tomt for standard"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Leer lassen für Standard"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Laisser vide pour la valeur par défaut"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "La stå tomt for standard"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lämna tomt för standard"
- }
- }
- }
- },
- "Search models..." : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søg modeller..."
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modelle durchsuchen..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rechercher des modèles..."
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søk modeller..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sök modeller..."
- }
- }
- }
- },
- "username" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "brugernavn"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Benutzername"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "nom d'utilisateur"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "brukernavn"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "användarnamn"
- }
- }
- }
- },
- "Brief description shown in the command dropdown" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kort beskrivelse vist i kommando-rullemenuen"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kurze Beschreibung im Befehlsmenü"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Brève description affichée dans le menu de commandes"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kort beskrivelse vist i kommando-rullegardinmenyen"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kort beskrivning som visas i kommandomenyn"
- }
- }
- }
- },
- "Session Info" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sessionsinfo"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sitzungsinfo"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Infos de session"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sesjonsinfo"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sessionsinfo"
- }
- }
- }
- },
- "Token Usage" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokenforbrug"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Token-Nutzung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Utilisation des tokens"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokenbruk"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokenanvändning"
- }
- }
- }
- },
- "Costs" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Omkostninger"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kosten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Coûts"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kostnader"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kostnader"
- }
- }
- }
- },
- "Model Details" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modeldetaljer"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modelldetails"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Détails du modèle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modelldetaljer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modelldetaljer"
- }
- }
- }
- },
- "Intel Mac Support Ending" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Intel Mac-support afsluttes"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Intel-Mac-Unterstützung endet"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fin du support Intel Mac"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Intel Mac-støtte avsluttes"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Intel Mac-support upphör"
- }
- }
- }
- },
- "Software Update" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Softwareopdatering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Software-Update"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mise à jour logicielle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Programvareoppdatering"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Programvaruuppdatering"
- }
- }
- }
- },
- "A new version is available — click to open the releases page" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "En ny version er tilgængelig — klik for at åbne udgivelsessiden"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eine neue Version ist verfügbar — klicke, um die Release-Seite zu öffnen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Une nouvelle version est disponible — clique pour ouvrir la page des versions"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "En ny versjon er tilgjengelig — klikk for å åpne utgivelsessiden"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "En ny version är tillgänglig — klicka för att öppna utgivningssidan"
- }
- }
- }
- },
- "Switch provider" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skift udbyder"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anbieter wechseln"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Changer de fournisseur"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bytt tilbyder"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Byt leverantör"
- }
- }
- }
- },
- "Select model" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vælg model"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modell auswählen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sélectionner le modèle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Velg modell"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Välj modell"
- }
- }
- }
- },
- "Attach file" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vedhæft fil"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Datei anhängen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Joindre un fichier"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Legg til fil"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bifoga fil"
- }
- }
- }
- },
- "Stop generation" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stop generering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Generierung stoppen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Arrêter la génération"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stopp generering"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stoppa generering"
- }
- }
- }
- },
- "Send message" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Send besked"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nachricht senden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Envoyer le message"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Send melding"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skicka meddelande"
- }
- }
- }
- },
- "Star this message to always include it in context" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stjernemarkér denne besked for altid at inkludere den i konteksten"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Markiere diese Nachricht mit einem Stern, um sie immer in den Kontext einzubeziehen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Marque ce message d'une étoile pour toujours l'inclure dans le contexte"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stjernemerk denne meldingen for alltid å inkludere den i konteksten"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stjärnmärk detta meddelande för att alltid inkludera det i kontexten"
- }
- }
- }
- },
- "Advanced search — semantic search, bulk delete, export" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avanceret søgning — semantisk søgning, massesletning, eksport"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Erweiterte Suche — semantische Suche, Massenlöschung, Export"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Recherche avancée — recherche sémantique, suppression groupée, export"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avansert søk — semantisk søk, massesletting, eksport"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Avancerad sökning — semantisk sökning, massradering, export"
- }
- }
- }
- },
- "Remove file" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fjern fil"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Datei entfernen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer le fichier"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fjern fil"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort fil"
- }
- }
- }
- },
- "Delete skill" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slet færdighed"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skill löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer le skill"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slett ferdighet"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort färdighet"
- }
- }
- }
- },
- "Use AI-powered semantic search instead of keyword matching" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Brug AI-drevet semantisk søgning i stedet for nøgleordssøgning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "KI-gestützte semantische Suche statt Schlüsselwortabgleich verwenden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Utiliser la recherche sémantique par IA au lieu de la correspondance par mots-clés"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bruk KI-drevet semantisk søk i stedet for nøkkelordsøk"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Använd AI-driven semantisk sökning istället för nyckelordsmatchning"
- }
- }
- }
- },
- "Rename conversation" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Omdøb samtale"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gespräch umbenennen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Renommer la conversation"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gi samtalen nytt navn"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Byt namn på konversation"
- }
- }
- }
- },
- "Delete conversation" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slet samtale"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gespräch löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer la conversation"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slett samtale"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort konversation"
- }
- }
- }
- },
- "Clear Email Log?" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ryd e-maillog?"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-Mail-Protokoll löschen?"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Effacer le journal e-mail ?"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tøm e-postlogg?"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Rensa e-postlogg?"
- }
- }
- }
- },
- "Refresh agents" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Opdater agenter"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Agenten aktualisieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Actualiser les agents"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Oppdater agenter"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Uppdatera agenter"
- }
- }
- }
- },
- "Stop agent" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stop agent"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Agent stoppen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Arrêter l'agent"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stopp agent"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Stoppa agent"
- }
- }
- }
- },
- "Run agent now" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kør agent nu"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Agent jetzt ausführen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exécuter l'agent maintenant"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kjør agent nå"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kör agent nu"
- }
- }
- }
- },
- "Filter by category" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrer efter kategori"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nach Kategorie filtern"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrer par catégorie"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrer etter kategori"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrera efter kategori"
- }
- }
- }
- },
- "Show favorites only" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vis kun favoritter"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nur Favoriten anzeigen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Afficher seulement les favoris"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vis bare favoritter"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visa endast favoriter"
- }
- }
- }
- },
- "Show model info" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vis modelinfo"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modellinfo anzeigen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Afficher les infos du modèle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vis modellinfo"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visa modellinfo"
- }
- }
- }
- },
- "Enter your Ollama server URL to enable the Ollama provider" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Indtast din Ollama-server-URL for at aktivere Ollama-udbyderen"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gib die URL deines Ollama-Servers ein, um den Ollama-Anbieter zu aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Saisis l'URL de ton serveur Ollama pour activer le fournisseur Ollama"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skriv inn Ollama-serverens URL for å aktivere Ollama-tilbyderen"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ange din Ollama-servers URL för att aktivera Ollama-leverantören"
- }
- }
- }
- },
- "Generate embeddings for all existing messages (one-time operation)" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Generer indlejringer for alle eksisterende beskeder (enkeltstående handling)"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Embeddings für alle vorhandenen Nachrichten generieren (einmaliger Vorgang)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Générer des embeddings pour tous les messages existants (opération unique)"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Generer innbygginger for alle eksisterende meldinger (engangsoperasjon)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Generera embeddings för alla befintliga meddelanden (engångsoperation)"
- }
- }
- }
- },
- "Duplicate Shortcut" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dupliker genvej"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verknüpfung duplizieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dupliquer le raccourci"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dupliser snarvei"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Duplicera genväg"
- }
- }
- }
- },
- "Export shortcut" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eksporter genvej"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verknüpfung exportieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exporter le raccourci"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eksporter snarvei"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exportera genväg"
- }
- }
- }
- },
- "Delete shortcut" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slet genvej"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verknüpfung löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer le raccourci"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slett snarvei"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort genväg"
- }
- }
- }
- },
- "Statistics" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistik"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistiken"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistiques"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistikk"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statistik"
- }
- }
- }
- },
- "Select model..." : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vælg model..."
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modell auswählen..."
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sélectionner le modèle..."
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Velg modell..."
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Välj modell..."
- }
- }
- }
- },
- "Hide" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skjul"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verbergen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Masquer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skjul"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dölj"
- }
- }
- }
- },
- "Show" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vis"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anzeigen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Afficher"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vis"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visa"
- }
- }
- }
- },
- "Provider" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Udbyder"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anbieter"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fournisseur"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tilbyder"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Leverantör"
- }
- }
- }
- },
- "Default Provider" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standardudbyder"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standardanbieter"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fournisseur par défaut"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standardtilbyder"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standardleverantör"
- }
- }
- }
- },
- "API Keys" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-nøgler"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-Schlüssel"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Clés API"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-nøkler"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-nycklar"
- }
- }
- }
- },
- "Ollama URL" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ollama-URL"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ollama-URL"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "URL Ollama"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ollama-URL"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ollama-URL"
- }
- }
- }
- },
- "Features" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Funktioner"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Funktionen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fonctionnalités"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Funksjoner"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Funktioner"
- }
- }
- }
- },
- "Online Mode (Web Search)" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Onlinetilstand (websøgning)"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Online-Modus (Websuche)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mode en ligne (recherche web)"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nettmodus (websøk)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Onlineläge (webbsökning)"
- }
- }
- }
- },
- "Conversation Memory" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Samtalehukommelse"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gesprächsspeicher"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mémoire de conversation"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Samtaleminne"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Konversationsminne"
- }
- }
- }
- },
- "Reasoning (Thinking)" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ræsonnement (tænkning)"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Reasoning (Denkprozess)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Raisonnement (réflexion)"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Resonnering (tenking)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Resonemang (tänkande)"
- }
- }
- }
- },
- "Reasoning Effort" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ræsonnementniveau"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Reasoning-Aufwand"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Effort de raisonnement"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Resonneringsnivå"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Resonemangsnivå"
- }
- }
- }
- },
- "Hide Reasoning in Response" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skjul ræsonnement i svar"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Reasoning in Antwort verbergen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Masquer le raisonnement dans la réponse"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skjul resonnering i svar"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dölj resonemang i svar"
- }
- }
- }
- },
- "Web Search" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Websøgning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Websuche"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Recherche web"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Websøk"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Webbsökning"
- }
- }
- }
- },
- "Search Provider" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søgeudbyder"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Suchanbieter"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fournisseur de recherche"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søketilbyder"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sökleverantör"
- }
- }
- }
- },
- "Google API Key" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Google API-nøgle"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Google-API-Schlüssel"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Clé API Google"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Google API-nøkkel"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Google API-nyckel"
- }
- }
- }
- },
- "Search Engine ID" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søgemaskine-ID"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Suchmaschinen-ID"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "ID du moteur de recherche"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Søkemotor-ID"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sökmotor-ID"
- }
- }
- }
- },
- "Model Settings" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modelindstillinger"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modelleinstellungen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Réglages du modèle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modellinnstillinger"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modellinställningar"
- }
- }
- }
- },
- "Default Model" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standardmodel"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standardmodell"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modèle par défaut"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standardmodell"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Standardmodell"
- }
- }
- }
- },
- "Logging" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Logning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Protokollierung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Journalisation"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Logging"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Loggning"
- }
- }
- }
- },
- "Log Level" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Logniveau"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Protokollstufe"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Niveau de journalisation"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Loggnivå"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Loggnivå"
- }
- }
- }
- },
- "Status" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Status"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Status"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Statut"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Status"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Status"
- }
- }
- }
- },
- "Enable MCP" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver MCP"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "MCP aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer MCP"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver MCP"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera MCP"
- }
- }
- }
- },
- "Allowed Folders" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tilladte mapper"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Erlaubte Ordner"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dossiers autorisés"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tillatte mapper"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tillåtna mappar"
- }
- }
- }
- },
- "Permissions" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tilladelser"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Berechtigungen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Autorisations"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tillatelser"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Behörigheter"
- }
- }
- }
- },
- "Write & Edit Files" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skriv og rediger filer"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dateien schreiben und bearbeiten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Écrire et modifier des fichiers"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skriv og rediger filer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skriv och redigera filer"
- }
- }
- }
- },
- "Delete Files" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slet filer"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dateien löschen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Supprimer des fichiers"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Slett filer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ta bort filer"
- }
- }
- }
- },
- "Create Directories" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Opret mapper"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verzeichnisse erstellen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Créer des dossiers"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Opprett mapper"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Skapa mappar"
- }
- }
- }
- },
- "Move & Copy Files" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Flyt og kopiér filer"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dateien verschieben und kopieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Déplacer et copier des fichiers"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Flytt og kopier filer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Flytta och kopiera filer"
- }
- }
- }
- },
- "Filtering" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filterung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrage"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrering"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Filtrering"
- }
- }
- }
- },
- "Respect .gitignore" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Respekter .gitignore"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : ".gitignore beachten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Respecter .gitignore"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Respekter .gitignore"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Respektera .gitignore"
- }
- }
- }
- },
- "Enable Bash Execution" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Bash-udførelse"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bash-Ausführung aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer l'exécution Bash"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Bash-kjøring"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera Bash-körning"
- }
- }
- }
- },
- "Settings" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Indstillinger"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Einstellungen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Réglages"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Innstillinger"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inställningar"
- }
- }
- }
- },
- "Require Approval" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kræver godkendelse"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Genehmigung erforderlich"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Approbation requise"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Krever godkjenning"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kräver godkännande"
- }
- }
- }
- },
- "Working Directory" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Arbejdsmappe"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Arbeitsverzeichnis"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Répertoire de travail"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Arbeidsmappe"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Arbetskatalog"
- }
- }
- }
- },
- "Timeout (seconds)" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Timeout (sekunder)"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Timeout (Sekunden)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Délai (secondes)"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tidsavbrudd (sekunder)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tidsgräns (sekunder)"
- }
- }
- }
- },
- "Text Sizes" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tekststørrelser"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Textgrößen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tailles de texte"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tekststørrelser"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Textstorlekar"
- }
- }
- }
- },
- "GUI Text" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "GUI-tekst"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "GUI-Text"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Texte de l'interface"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "GUI-tekst"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "GUI-text"
- }
- }
- }
- },
- "Dialog Text" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dialogtekst"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dialogtext"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Texte des boîtes de dialogue"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dialogtekst"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dialogtext"
- }
- }
- }
- },
- "Input Text" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inputtekst"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Eingabetext"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Texte de saisie"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inndatatekst"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inmatningstext"
- }
- }
- }
- },
- "Toolbar" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Værktøjslinje"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Symbolleiste"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Barre d'outils"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verktøylinje"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verktygsfält"
- }
- }
- }
- },
- "Icon Size" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ikonstørrelse"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Symbolgröße"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Taille des icônes"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ikonstørrelse"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ikonstorlek"
- }
- }
- }
- },
- "Show Icon Labels" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vis ikonetiketter"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Symbolbeschriftungen anzeigen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Afficher les libellés des icônes"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vis ikonetiketter"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Visa ikonetiketter"
- }
- }
- }
- },
- "Response Generation" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Svargenerering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Antwortgenerierung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Génération de réponses"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Svargenerering"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Svarsgenerering"
- }
- }
- }
- },
- "Enable Streaming" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver streaming"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Streaming aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer le streaming"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver strømming"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera streaming"
- }
- }
- }
- },
- "Model Parameters" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modelparametre"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modellparameter"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Paramètres du modèle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modellparametere"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modellparametrar"
- }
- }
- }
- },
- "Max Tokens" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks tokens"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maximale Tokens"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokens max"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks tokens"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Max tokens"
- }
- }
- }
- },
- "Temperature" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Temperatur"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Temperatur"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Température"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Temperatur"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Temperatur"
- }
- }
- }
- },
- "System Prompts" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Systemprompter"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "System-Prompts"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Prompts système"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Systemprompter"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Systemprompter"
- }
- }
- }
- },
- "Use Only Your Prompt" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Brug kun din prompt"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nur deinen Prompt verwenden"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Utiliser uniquement ton prompt"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bruk bare din prompt"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Använd endast din prompt"
- }
- }
- }
- },
- "Memory & Context" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hukommelse og kontekst"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Speicher und Kontext"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mémoire et contexte"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Minne og kontekst"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Minne och kontext"
- }
- }
- }
- },
- "Smart Context Selection" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Smart kontekstvalg"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Intelligente Kontextauswahl"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sélection intelligente du contexte"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Smart kontekstvalg"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Smart kontextval"
- }
- }
- }
- },
- "Max Context Tokens" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks konteksttokens"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maximale Kontext-Tokens"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokens de contexte max"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks kontekst-tokens"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Max kontext-tokens"
- }
- }
- }
- },
- "Semantic Search" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Semantisk søgning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Semantische Suche"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Recherche sémantique"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Semantisk søk"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Semantisk sökning"
- }
- }
- }
- },
- "Enable Embeddings" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver indlejringer"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Embeddings aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer les embeddings"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver innbygginger"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera embeddings"
- }
- }
- }
- },
- "Model" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Model"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modell"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modèle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modell"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modell"
- }
- }
- }
- },
- "Progressive Summarization" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Progressiv opsummering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Progressive Zusammenfassung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Résumé progressif"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Progressiv sammendrag"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Progressiv sammanfattning"
- }
- }
- }
- },
- "Enable Summarization" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver opsummering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Zusammenfassung aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer le résumé"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver sammendrag"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera sammanfattning"
- }
- }
- }
- },
- "Message Threshold" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Beskedtærskel"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nachrichtenschwelle"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Seuil de messages"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Meldingsterskel"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Meddelandetröskel"
- }
- }
- }
- },
- "Git Sync" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Git-synkronisering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Git-Synchronisierung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Synchronisation Git"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Git-synkronisering"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Git-synkronisering"
- }
- }
- }
- },
- "Enable Git Sync" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Git-synkronisering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Git-Synchronisierung aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer la synchronisation Git"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Git-synkronisering"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera Git-synkronisering"
- }
- }
- }
- },
- "Connection" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Forbindelse"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verbindung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Connexion"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tilkobling"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anslutning"
- }
- }
- }
- },
- "URL" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "URL"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "URL"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "URL"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "URL"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "URL"
- }
- }
- }
- },
- "Local Path" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lokal sti"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lokaler Pfad"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Chemin local"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lokal bane"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lokal sökväg"
- }
- }
- }
- },
- "Authentication" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Godkendelse"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Authentifizierung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Authentification"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Autentisering"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Autentisering"
- }
- }
- }
- },
- "Method" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Metode"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Methode"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Méthode"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Metode"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Metod"
- }
- }
- }
- },
- "Username" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Brugernavn"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Benutzername"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nom d'utilisateur"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Brukernavn"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Användarnamn"
- }
- }
- }
- },
- "Password" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Adgangskode"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Passwort"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mot de passe"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Passord"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Lösenord"
- }
- }
- }
- },
- "Token" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Token"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Token"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Token"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Token"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Token"
- }
- }
- }
- },
- "Sync Options" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Synkroniseringsindstillinger"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Synchronisierungsoptionen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Options de synchronisation"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Synkroniseringsalternativer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Synkroniseringsalternativ"
- }
- }
- }
- },
- "Auto-export on save" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auto-eksporter ved gem"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Automatisch exportieren beim Speichern"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Exporter automatiquement à l'enregistrement"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auto-eksporter ved lagring"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auto-exportera vid sparande"
- }
- }
- }
- },
- "Auto-pull on launch" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auto-hent ved start"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Automatisch abrufen beim Start"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Récupérer automatiquement au démarrage"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auto-hent ved oppstart"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auto-hämta vid start"
- }
- }
- }
- },
- "Auto-Save" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auto-gem"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Automatisches Speichern"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Enregistrement automatique"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auto-lagring"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Auto-spara"
- }
- }
- }
- },
- "Enable Auto-Save" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver auto-gem"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Automatisches Speichern aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer l'enregistrement automatique"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver auto-lagring"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera auto-spara"
- }
- }
- }
- },
- "Min Messages" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Min. beskeder"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Min. Nachrichten"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Messages min."
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Min. meldinger"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Min. meddelanden"
- }
- }
- }
- },
- "On model switch" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ved modelskift"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Beim Modellwechsel"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Au changement de modèle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ved modellbytte"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vid modellbyte"
- }
- }
- }
- },
- "On app quit" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ved app-afslutning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Beim Beenden der App"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "À la fermeture de l'app"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ved avslutning av app"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vid app-avslut"
- }
- }
- }
- },
- "After idle timeout" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Efter inaktivitetstid"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nach Inaktivitäts-Timeout"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Après délai d'inactivité"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Etter inaktivitetstid"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Efter inaktivitetstid"
- }
- }
- }
- },
- "Idle Timeout" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inaktivitetstid"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inaktivitäts-Timeout"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Délai d'inactivité"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inaktivitetstid"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Inaktivitetstid"
- }
- }
- }
- },
- "Manual Sync" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Manuel synkronisering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Manuelle Synchronisierung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Synchronisation manuelle"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Manuell synkronisering"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Manuell synkronisering"
- }
- }
- }
- },
- "AI Email Handler" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "AI-e-mailbehandler"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "KI-E-Mail-Handler"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Gestionnaire d'e-mails IA"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "KI-e-postbehandler"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "AI-e-posthanterare"
- }
- }
- }
- },
- "Enable Email Handler" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver e-mailbehandler"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-Mail-Handler aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer le gestionnaire d'e-mails"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver e-postbehandler"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera e-posthanterare"
- }
- }
- }
- },
- "AI Configuration" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "AI-konfiguration"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "KI-Konfiguration"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Configuration de l'IA"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "KI-konfigurasjon"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "AI-konfiguration"
- }
- }
- }
- },
- "AI Provider" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "AI-udbyder"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "KI-Anbieter"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fournisseur IA"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "KI-tilbyder"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "AI-leverantör"
- }
- }
- }
- },
- "AI Model" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "AI-model"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "KI-Modell"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modèle IA"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "KI-modell"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "AI-modell"
- }
- }
- }
- },
- "Email Server" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-mailserver"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-Mail-Server"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Serveur e-mail"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-postserver"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-postserver"
- }
- }
- }
- },
- "IMAP Host" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "IMAP-vært"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "IMAP-Host"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hôte IMAP"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "IMAP-vert"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "IMAP-värd"
- }
- }
- }
- },
- "SMTP Host" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "SMTP-vært"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "SMTP-Host"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hôte SMTP"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "SMTP-vert"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "SMTP-värd"
- }
- }
- }
- },
- "IMAP Port" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "IMAP-port"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "IMAP-Port"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Port IMAP"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "IMAP-port"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "IMAP-port"
- }
- }
- }
- },
- "SMTP Port" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "SMTP-port"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "SMTP-Port"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Port SMTP"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "SMTP-port"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "SMTP-port"
- }
- }
- }
- },
- "Email Trigger" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-mailudløser"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-Mail-Trigger"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Déclencheur e-mail"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-postutløser"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-postutlösare"
- }
- }
- }
- },
- "Subject Identifier" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Emneidentifikator"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Betreff-Kennung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Identifiant d'objet"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Emneidentifikator"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ämnesidentifierare"
- }
- }
- }
- },
- "Rate Limiting" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hastighedsbegrænsning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ratenbegrenzung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Limitation de débit"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Frekvensbegrensning"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Hastighetsbegränsning"
- }
- }
- }
- },
- "Enable Rate Limit" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver hastighedsbegrænsning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Ratenbegrenzung aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer la limitation de débit"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver frekvensbegrensning"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera hastighetsbegränsning"
- }
- }
- }
- },
- "Max Emails Per Hour" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks e-mails pr. time"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Max. E-Mails pro Stunde"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-mails max par heure"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks e-poster per time"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Max e-post per timme"
- }
- }
- }
- },
- "Response Settings" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Svarindstillinger"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Antworteinstellungen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Réglages de réponse"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Svarinnstillinger"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Svarsinställningar"
- }
- }
- }
- },
- "Max Response Tokens" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks svartokens"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maximale Antwort-Tokens"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokens de réponse max"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks svar-tokens"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Max svars-tokens"
- }
- }
- }
- },
- "Enable Online Mode" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver onlinetilstand"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Online-Modus aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer le mode en ligne"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver nettmodus"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera onlineläge"
- }
- }
- }
- },
- "System Prompt (Optional)" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Systemprompt (valgfri)"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "System-Prompt (optional)"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Prompt système (facultatif)"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Systemprompt (valgfri)"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Systemprompt (valfri)"
- }
- }
- }
- },
- "Activity" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivitet"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivität"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activité"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivitet"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivitet"
- }
- }
- }
- },
- "Email Log" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-maillog"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-Mail-Protokoll"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Journal e-mail"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-postlogg"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "E-postlogg"
- }
- }
- }
- },
- "Enable Paperless" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Paperless"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Paperless aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer Paperless"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Paperless"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera Paperless"
- }
- }
- }
- },
- "Base URL" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Base-URL"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Basis-URL"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "URL de base"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Base-URL"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bas-URL"
- }
- }
- }
- },
- "API Token" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-token"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-Token"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Token API"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-token"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-token"
- }
- }
- }
- },
- "Enable Anytype" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Anytype"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anytype aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer Anytype"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Anytype"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera Anytype"
- }
- }
- }
- },
- "API URL" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-URL"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-URL"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "URL API"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-URL"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-URL"
- }
- }
- }
- },
- "API Key" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-nøgle"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-Schlüssel"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Clé API"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-nøkkel"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "API-nyckel"
- }
- }
- }
- },
- "Enable Jarvis" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Jarvis"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Jarvis aktivieren"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activer Jarvis"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiver Jarvis"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivera Jarvis"
- }
- }
- }
- },
- "Server URL" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Server-URL"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Server-URL"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "URL du serveur"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Server-URL"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Server-URL"
- }
- }
- }
- },
- "iCloud Drive Backup" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "iCloud Drive-sikkerhedskopi"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "iCloud-Drive-Sicherung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Sauvegarde iCloud Drive"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "iCloud Drive-sikkerhetskopi"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "iCloud Drive-säkerhetskopia"
- }
- }
- }
- },
- "Last Backup" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Seneste sikkerhedskopi"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Letzte Sicherung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Dernière sauvegarde"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Siste sikkerhetskopi"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Senaste säkerhetskopia"
- }
- }
- }
- },
- "Actions" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Handlinger"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktionen"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Actions"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Handlinger"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Åtgärder"
- }
- }
- }
- },
- "Overview" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Overblik"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Übersicht"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aperçu"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Oversikt"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Översikt"
- }
- }
- }
- },
- "ID" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "ID"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "ID"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "ID"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "ID"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "ID"
- }
- }
- }
- },
- "Pricing" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Priser"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Preise"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tarification"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Priser"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Priser"
- }
- }
- }
- },
- "1K tokens" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "1K tokens"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "1K Tokens"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "1K tokens"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "1K tokens"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "1K tokens"
- }
- }
- }
- },
- "10K tokens" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "10K tokens"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "10K Tokens"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "10K tokens"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "10K tokens"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "10K tokens"
- }
- }
- }
- },
- "100K tokens" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "100K tokens"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "100K Tokens"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "100K tokens"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "100K tokens"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "100K tokens"
- }
- }
- }
- },
- "Context Window" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontekstvindue"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontextfenster"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Fenêtre de contexte"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontekstvindu"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kontextfönster"
- }
- }
- }
- },
- "Categories" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kategorier"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kategorien"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Catégories"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kategorier"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Kategorier"
- }
- }
- }
- },
- "Architecture" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Arkitektur"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Architektur"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Architecture"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Arkitektur"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Arkitektur"
- }
- }
- }
- },
- "Modality" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modalitet"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modalität"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modalité"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modalitet"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Modalitet"
- }
- }
- }
- },
- "Tokenizer" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokenizer"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokenizer"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokenizer"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokenizer"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tokenizer"
- }
- }
- }
- },
- "Instruct Type" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Instruktionstype"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Anweisungstyp"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Type d'instruction"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Instruksjonstype"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Instruktionstyp"
- }
- }
- }
- },
- "Vision" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vision"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vision"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vision"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vision"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Vision"
- }
- }
- }
- },
- "Tools" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Værktøjer"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Werkzeuge"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Outils"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verktøy"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Verktyg"
- }
- }
- }
- },
- "Online" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Online"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Online"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "En ligne"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Online"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Online"
- }
- }
- }
- },
- "Image Gen" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Billedgenerering"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bildgenerierung"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Génération d'images"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bildegenerering"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Bildgenerering"
- }
- }
- }
- },
- "Thinking" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tænkning"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Denken"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Réflexion"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tenking"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tänkande"
- }
- }
- }
- },
- "Schedule" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tidsplan"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Zeitplan"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Planification"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Tidsplan"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Schema"
- }
- }
- }
- },
- "Max Tool Calls" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks værktøjskald"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Max. Tool-Aufrufe"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Appels d'outils max"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Maks verktøykall"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Max verktygsanrop"
- }
- }
- }
- },
- "Enabled" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiveret"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiviert"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Activé"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktivert"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Aktiverad"
- }
- }
- }
- },
- "Online Mode: On" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Onlinetilstand: Til"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Online-Modus: An"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mode en ligne : activé"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nettmodus: På"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Onlineläge: På"
- }
- }
- }
- },
- "Online Mode: Off" : {
- "localizations" : {
- "da" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Onlinetilstand: Fra"
- }
- },
- "de" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Online-Modus: Aus"
- }
- },
- "fr" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Mode en ligne : désactivé"
- }
- },
- "nb" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Nettmodus: Av"
- }
- },
- "sv" : {
- "stringUnit" : {
- "state" : "translated",
- "value" : "Onlineläge: Av"
- }
- }
- }
}
},
"version" : "1.1"
diff --git a/oAI/Models/AgentSkill.swift b/oAI/Models/AgentSkill.swift
index c771ae6..0f3d2e4 100644
--- a/oAI/Models/AgentSkill.swift
+++ b/oAI/Models/AgentSkill.swift
@@ -57,4 +57,10 @@ struct AgentSkill: Codable, Identifiable {
}
return name
}
+
+ /// Matches the user's "2nd Brain" skill by name — there's no canonical skill ID,
+ /// so this is the only way to recognize it (used to gate the "always trust" bash setting).
+ var isSecondBrainSkill: Bool {
+ name.trimmingCharacters(in: .whitespacesAndNewlines).caseInsensitiveCompare("2nd Brain") == .orderedSame
+ }
}
diff --git a/oAI/Providers/AIProvider.swift b/oAI/Providers/AIProvider.swift
index 10f2d00..42f52ea 100644
--- a/oAI/Providers/AIProvider.swift
+++ b/oAI/Providers/AIProvider.swift
@@ -229,6 +229,19 @@ struct Tool: Codable {
let type: String
let description: String
let `enum`: [String]?
+ let items: Items?
+
+ /// Item schema for `type: "array"` properties (e.g. an array of strings).
+ struct Items: Codable {
+ let type: String
+ }
+
+ init(type: String, description: String, enum: [String]? = nil, items: Items? = nil) {
+ self.type = type
+ self.description = description
+ self.enum = `enum`
+ self.items = items
+ }
}
}
}
diff --git a/oAI/Providers/AnthropicProvider.swift b/oAI/Providers/AnthropicProvider.swift
index d801467..bb5bdbe 100644
--- a/oAI/Providers/AnthropicProvider.swift
+++ b/oAI/Providers/AnthropicProvider.swift
@@ -753,6 +753,9 @@ class AnthropicProvider: AIProvider {
if let enumVals = prop.enum {
propDict["enum"] = enumVals
}
+ if let items = prop.items {
+ propDict["items"] = ["type": items.type]
+ }
props[key] = propDict
}
var dict: [String: Any] = [
diff --git a/oAI/Services/ContactsService.swift b/oAI/Services/ContactsService.swift
new file mode 100644
index 0000000..c6f4920
--- /dev/null
+++ b/oAI/Services/ContactsService.swift
@@ -0,0 +1,250 @@
+//
+// ContactsService.swift
+// oAI
+//
+// Read-only Contacts integration: search and "my card" lookup
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// Copyright (C) 2026 Rune Olsen
+//
+// This file is part of oAI.
+//
+// oAI is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// oAI is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
+// Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public
+// License along with oAI. If not, see .
+
+
+import Contacts
+import Foundation
+import os
+
+@Observable
+class ContactsService {
+ static let shared = ContactsService()
+
+ private let store = CNContactStore()
+ private let maxResults = 20
+ private let maxScan = 5000
+
+ private init() {}
+
+ // MARK: - Authorization
+
+ var authStatus: CNAuthorizationStatus {
+ CNContactStore.authorizationStatus(for: .contacts)
+ }
+
+ var authorized: Bool {
+ authStatus == .authorized
+ }
+
+ var accessState: PersonalDataAccessState {
+ let status = authStatus
+ Log.mcp.debug("ContactsService.accessState -> status=\(Self.describe(status)) (raw=\(status.rawValue))")
+ switch status {
+ case .authorized: return .granted
+ case .notDetermined: return .notDetermined
+ default: return .denied
+ }
+ }
+
+ @discardableResult
+ func requestAccess() async -> Bool {
+ let before = CNContactStore.authorizationStatus(for: .contacts)
+ Log.mcp.info("ContactsService.requestAccess: status before request = \(Self.describe(before)) (raw=\(before.rawValue))")
+ return await withCheckedContinuation { continuation in
+ store.requestAccess(for: .contacts) { granted, error in
+ let after = CNContactStore.authorizationStatus(for: .contacts)
+ if let error {
+ Log.mcp.error("ContactsService.requestAccess: error=\(error.localizedDescription); granted=\(granted); status after = \(Self.describe(after)) (raw=\(after.rawValue))")
+ } else {
+ Log.mcp.info("ContactsService.requestAccess: granted=\(granted); status after = \(Self.describe(after)) (raw=\(after.rawValue))")
+ }
+ continuation.resume(returning: granted)
+ }
+ }
+ }
+
+ nonisolated static func describe(_ status: CNAuthorizationStatus) -> String {
+ switch status {
+ case .notDetermined: return "notDetermined"
+ case .restricted: return "restricted"
+ case .denied: return "denied"
+ case .authorized: return "authorized"
+ case .limited: return "limited"
+ @unknown default: return "unknown"
+ }
+ }
+
+ // MARK: - Tool Schemas
+
+ func getToolSchemas() -> [Tool] {
+ [
+ makeTool(
+ name: "contacts_search",
+ description: "Search Contacts by name, phone number, or email address. Returns matching contacts with their phone numbers and emails. This does NOT match relationship labels like 'mother' or 'spouse' — for those, call contacts_get_me first to find the related person's name, then search for that name.",
+ properties: [
+ "query": prop("string", "Name, phone number, or email fragment to search for")
+ ],
+ required: ["query"]
+ ),
+ makeTool(
+ name: "contacts_get_me",
+ description: "Get the user's own contact card (\"My Card\" in Contacts.app), if configured. Includes any defined relationships (e.g. mother, spouse, child) with the related person's name — use contacts_search with that name to find their phone/email.",
+ properties: [:],
+ required: []
+ )
+ ]
+ }
+
+ // MARK: - Tool Execution
+
+ func executeTool(name: String, arguments: String) async -> [String: Any] {
+ Log.mcp.info("Executing Contacts tool: \(name)")
+ guard authorized else {
+ return ["error": "Contacts permission not granted. Grant access in Settings > MCP."]
+ }
+
+ switch name {
+ case "contacts_search":
+ guard let data = arguments.data(using: .utf8),
+ let args = try? JSONSerialization.jsonObject(with: data) as? [String: Any],
+ let query = args["query"] as? String, !query.isEmpty else {
+ return ["error": "Missing required parameter: query"]
+ }
+ return search(query: query)
+
+ case "contacts_get_me":
+ return getMe()
+
+ default:
+ return ["error": "Unknown Contacts tool: \(name)"]
+ }
+ }
+
+ // MARK: - Implementation
+
+ private let keysToFetch: [CNKeyDescriptor] = [
+ CNContactGivenNameKey as CNKeyDescriptor,
+ CNContactFamilyNameKey as CNKeyDescriptor,
+ CNContactOrganizationNameKey as CNKeyDescriptor,
+ CNContactPhoneNumbersKey as CNKeyDescriptor,
+ CNContactEmailAddressesKey as CNKeyDescriptor,
+ CNContactRelationsKey as CNKeyDescriptor
+ ]
+
+ private func search(query: String) -> [String: Any] {
+ var matches: [CNContact] = []
+
+ // Fast path: name predicate
+ let namePredicate = CNContact.predicateForContacts(matchingName: query)
+ if let nameMatches = try? store.unifiedContacts(matching: namePredicate, keysToFetch: keysToFetch) {
+ matches.append(contentsOf: nameMatches)
+ }
+
+ // Fallback: scan for phone/email substring matches
+ if matches.isEmpty {
+ let lowerQuery = query.lowercased()
+ let digitsQuery = query.filter(\.isNumber)
+ let request = CNContactFetchRequest(keysToFetch: keysToFetch)
+ var scanned = 0
+ try? store.enumerateContacts(with: request) { contact, stop in
+ scanned += 1
+ if scanned > self.maxScan || matches.count >= self.maxResults {
+ stop.pointee = true
+ return
+ }
+ let emailMatch = contact.emailAddresses.contains {
+ ($0.value as String).lowercased().contains(lowerQuery)
+ }
+ let phoneMatch = !digitsQuery.isEmpty && contact.phoneNumbers.contains {
+ $0.value.stringValue.filter(\.isNumber).contains(digitsQuery)
+ }
+ if emailMatch || phoneMatch {
+ matches.append(contact)
+ }
+ }
+ }
+
+ let deduped = dedupContacts(matches)
+ let formatted = deduped.prefix(maxResults).map(formatContact)
+ return ["count": formatted.count, "contacts": Array(formatted)]
+ }
+
+ /// Collapses contacts that share a phone number or email — Contacts.app's "linked contacts"
+ /// merge doesn't catch every real-world duplicate card, so do a best-effort merge here too.
+ private func dedupContacts(_ contacts: [CNContact]) -> [CNContact] {
+ var result: [CNContact] = []
+ outer: for contact in contacts {
+ let phones = Set(contact.phoneNumbers.map { $0.value.stringValue.filter(\.isNumber) })
+ let emails = Set(contact.emailAddresses.map { ($0.value as String).lowercased() })
+ for existing in result {
+ let existingPhones = Set(existing.phoneNumbers.map { $0.value.stringValue.filter(\.isNumber) })
+ let existingEmails = Set(existing.emailAddresses.map { ($0.value as String).lowercased() })
+ if !phones.isDisjoint(with: existingPhones) || !emails.isDisjoint(with: existingEmails) {
+ continue outer
+ }
+ }
+ result.append(contact)
+ }
+ return result
+ }
+
+ private func getMe() -> [String: Any] {
+ guard let me = try? store.unifiedMeContactWithKeys(toFetch: keysToFetch) else {
+ return ["error": "No 'My Card' is configured in Contacts.app"]
+ }
+ return formatContact(me)
+ }
+
+ private func formatContact(_ contact: CNContact) -> [String: Any] {
+ var item: [String: Any] = [
+ "given_name": contact.givenName,
+ "family_name": contact.familyName
+ ]
+ if !contact.organizationName.isEmpty {
+ item["organization"] = contact.organizationName
+ }
+ if !contact.phoneNumbers.isEmpty {
+ item["phones"] = contact.phoneNumbers.map { $0.value.stringValue }
+ }
+ if !contact.emailAddresses.isEmpty {
+ item["emails"] = contact.emailAddresses.map { $0.value as String }
+ }
+ if !contact.contactRelations.isEmpty {
+ item["relations"] = contact.contactRelations.map { labeled -> [String: String] in
+ let label = labeled.label.map { CNLabeledValue.localizedString(forLabel: $0) } ?? "relation"
+ return ["label": label, "name": labeled.value.name]
+ }
+ }
+ return item
+ }
+
+ private func makeTool(name: String, description: String, properties: [String: Tool.Function.Parameters.Property], required: [String]) -> Tool {
+ Tool(
+ type: "function",
+ function: Tool.Function(
+ name: name,
+ description: description,
+ parameters: Tool.Function.Parameters(
+ type: "object",
+ properties: properties,
+ required: required
+ )
+ )
+ )
+ }
+
+ private func prop(_ type: String, _ description: String) -> Tool.Function.Parameters.Property {
+ Tool.Function.Parameters.Property(type: type, description: description, enum: nil)
+ }
+}
diff --git a/oAI/Services/EventKitService.swift b/oAI/Services/EventKitService.swift
new file mode 100644
index 0000000..7a4bb62
--- /dev/null
+++ b/oAI/Services/EventKitService.swift
@@ -0,0 +1,593 @@
+//
+// EventKitService.swift
+// oAI
+//
+// Calendar and Reminders integration via EventKit
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// Copyright (C) 2026 Rune Olsen
+//
+// This file is part of oAI.
+//
+// oAI is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// oAI is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
+// Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public
+// License along with oAI. If not, see .
+
+
+import EventKit
+import Foundation
+import os
+
+/// Shared tri-state authorization status for the Settings UI across all Personal Data services.
+/// `.denied` also covers `.restricted` and (for Calendar) `.writeOnly` — states where the OS
+/// will not show a request dialog again; the user must go to System Settings manually.
+enum PersonalDataAccessState {
+ case notDetermined
+ case denied
+ case granted
+}
+
+@Observable
+class EventKitService {
+ static let shared = EventKitService()
+
+ private let store = EKEventStore()
+
+ private init() {}
+
+ // MARK: - Authorization
+
+ var calendarAuthStatus: EKAuthorizationStatus {
+ let status = EKEventStore.authorizationStatus(for: .event)
+ Log.mcp.debug("EventKitService.calendarAuthStatus -> \(Self.describe(status)) (raw=\(status.rawValue))")
+ return status
+ }
+
+ var reminderAuthStatus: EKAuthorizationStatus {
+ let status = EKEventStore.authorizationStatus(for: .reminder)
+ Log.mcp.debug("EventKitService.reminderAuthStatus -> \(Self.describe(status)) (raw=\(status.rawValue))")
+ return status
+ }
+
+ var calendarAuthorized: Bool {
+ calendarAuthStatus == .fullAccess
+ }
+
+ var reminderAuthorized: Bool {
+ reminderAuthStatus == .fullAccess
+ }
+
+ var calendarAccessState: PersonalDataAccessState {
+ switch calendarAuthStatus {
+ case .fullAccess: return .granted
+ case .notDetermined: return .notDetermined
+ default: return .denied // .denied, .restricted, .writeOnly (no read access for our tools)
+ }
+ }
+
+ var reminderAccessState: PersonalDataAccessState {
+ switch reminderAuthStatus {
+ case .fullAccess: return .granted
+ case .notDetermined: return .notDetermined
+ default: return .denied
+ }
+ }
+
+ @discardableResult
+ func requestCalendarAccess() async -> Bool {
+ let before = EKEventStore.authorizationStatus(for: .event)
+ Log.mcp.info("requestCalendarAccess: status before request = \(Self.describe(before)) (raw=\(before.rawValue))")
+ do {
+ let granted = try await store.requestFullAccessToEvents()
+ let after = EKEventStore.authorizationStatus(for: .event)
+ Log.mcp.info("requestCalendarAccess: API returned granted=\(granted); status after request = \(Self.describe(after)) (raw=\(after.rawValue))")
+ return granted
+ } catch {
+ let after = EKEventStore.authorizationStatus(for: .event)
+ Log.mcp.error("requestCalendarAccess: threw error: \(error.localizedDescription); status after = \(Self.describe(after)) (raw=\(after.rawValue))")
+ return false
+ }
+ }
+
+ @discardableResult
+ func requestReminderAccess() async -> Bool {
+ let before = EKEventStore.authorizationStatus(for: .reminder)
+ Log.mcp.info("requestReminderAccess: status before request = \(Self.describe(before)) (raw=\(before.rawValue))")
+ do {
+ let granted = try await store.requestFullAccessToReminders()
+ let after = EKEventStore.authorizationStatus(for: .reminder)
+ Log.mcp.info("requestReminderAccess: API returned granted=\(granted); status after request = \(Self.describe(after)) (raw=\(after.rawValue))")
+ return granted
+ } catch {
+ let after = EKEventStore.authorizationStatus(for: .reminder)
+ Log.mcp.error("requestReminderAccess: threw error: \(error.localizedDescription); status after = \(Self.describe(after)) (raw=\(after.rawValue))")
+ return false
+ }
+ }
+
+ nonisolated static func describe(_ status: EKAuthorizationStatus) -> String {
+ switch status {
+ case .notDetermined: return "notDetermined"
+ case .restricted: return "restricted"
+ case .denied: return "denied"
+ case .fullAccess: return "fullAccess"
+ case .writeOnly: return "writeOnly"
+ @unknown default: return "unknown"
+ }
+ }
+
+ // MARK: - Tool Schemas
+
+ func getToolSchemas(calendarEnabled: Bool, remindersEnabled: Bool) -> [Tool] {
+ var tools: [Tool] = []
+
+ if calendarEnabled {
+ tools.append(makeTool(
+ name: "calendar_list_calendars",
+ description: "List all calendars available on this Mac (e.g. iCloud, Work, Home).",
+ properties: [:],
+ required: []
+ ))
+ tools.append(makeTool(
+ name: "calendar_list_events",
+ description: "List calendar events within a date range. Dates are ISO8601 (e.g. '2026-06-20T00:00:00' or '2026-06-20'). Range is limited to 1 year. For open-ended queries like 'next appointment' or 'upcoming events', do NOT limit the range to just today — use a generous forward-looking window (e.g. today through +90 days) so you don't miss events further out.",
+ properties: [
+ "start_date": prop("string", "Start of the date range (ISO8601)"),
+ "end_date": prop("string", "End of the date range (ISO8601)"),
+ "calendar_name": prop("string", "Optional: only list events from this calendar")
+ ],
+ required: ["start_date", "end_date"]
+ ))
+ tools.append(makeTool(
+ name: "calendar_create_event",
+ description: "Create a new calendar event. Requires user approval before it is actually created.",
+ properties: [
+ "title": prop("string", "Event title"),
+ "start_date": prop("string", "Start date/time (ISO8601, e.g. '2026-06-20T14:00:00')"),
+ "end_date": prop("string", "End date/time (ISO8601)"),
+ "calendar_name": prop("string", "Optional: calendar to add the event to (defaults to the system default calendar)"),
+ "location": prop("string", "Optional: event location text"),
+ "notes": prop("string", "Optional: event notes"),
+ "all_day": prop("boolean", "Optional: whether this is an all-day event (default: false)"),
+ "alarm_minutes_before": prop("number", "Optional: minutes before the start time to show an alert")
+ ],
+ required: ["title", "start_date", "end_date"]
+ ))
+ }
+
+ if remindersEnabled {
+ tools.append(makeTool(
+ name: "reminders_list_lists",
+ description: "List all reminder lists available on this Mac.",
+ properties: [:],
+ required: []
+ ))
+ tools.append(makeTool(
+ name: "reminders_list",
+ description: "List reminders. Omit list_name to search across ALL reminder lists in a single call — prefer this over calling once per list. Incomplete reminders only unless include_completed is true.",
+ properties: [
+ "list_name": prop("string", "Optional: only list reminders from this one list (omit to search all lists at once)"),
+ "include_completed": prop("boolean", "Optional: include completed reminders (default: false)")
+ ],
+ required: []
+ ))
+ tools.append(makeTool(
+ name: "reminders_create",
+ description: "Create a new reminder. Requires user approval before it is actually created.",
+ properties: [
+ "title": prop("string", "Reminder title"),
+ "list_name": prop("string", "Optional: reminder list to add to (defaults to the system default list)"),
+ "due_date": prop("string", "Optional: due date/time (ISO8601)"),
+ "priority": prop("string", "Optional: priority level", enumValues: ["none", "low", "medium", "high"]),
+ "notes": prop("string", "Optional: reminder notes")
+ ],
+ required: ["title"]
+ ))
+ tools.append(makeTool(
+ name: "reminders_complete",
+ description: "Mark a reminder as completed. Requires user approval. Use reminders_list to find the reminder_id first.",
+ properties: [
+ "reminder_id": prop("string", "The reminder's identifier, from reminders_list")
+ ],
+ required: ["reminder_id"]
+ ))
+ }
+
+ return tools
+ }
+
+ // MARK: - Read Tool Execution
+
+ func executeTool(name: String, arguments: String) async -> [String: Any] {
+ Log.mcp.info("Executing EventKit tool: \(name)")
+ let args = Self.parseArgs(arguments)
+
+ switch name {
+ case "calendar_list_calendars":
+ guard calendarAuthorized else { return Self.permissionError(domain: "Calendar") }
+ return listCalendars()
+
+ case "calendar_list_events":
+ guard calendarAuthorized else { return Self.permissionError(domain: "Calendar") }
+ guard let startStr = args["start_date"] as? String, let start = Self.parseDate(startStr) else {
+ return ["error": "Missing or invalid parameter: start_date"]
+ }
+ guard let endStr = args["end_date"] as? String, let end = Self.parseDate(endStr) else {
+ return ["error": "Missing or invalid parameter: end_date"]
+ }
+ let calendarName = args["calendar_name"] as? String
+ return listEvents(start: start, end: end, calendarName: calendarName)
+
+ case "reminders_list_lists":
+ guard reminderAuthorized else { return Self.permissionError(domain: "Reminders") }
+ return listReminderLists()
+
+ case "reminders_list":
+ guard reminderAuthorized else { return Self.permissionError(domain: "Reminders") }
+ let listName = args["list_name"] as? String
+ let includeCompleted = args["include_completed"] as? Bool ?? false
+ return await listReminders(listName: listName, includeCompleted: includeCompleted)
+
+ default:
+ return ["error": "Unknown EventKit tool: \(name)"]
+ }
+ }
+
+ // MARK: - Write Tool Execution (called only after approval)
+
+ func executeWriteTool(name: String, arguments: String) async -> [String: Any] {
+ Log.mcp.info("Executing EventKit write tool: \(name)")
+ let args = Self.parseArgs(arguments)
+
+ switch name {
+ case "calendar_create_event":
+ guard calendarAuthorized else { return Self.permissionError(domain: "Calendar") }
+ return createEvent(args: args)
+
+ case "reminders_create":
+ guard reminderAuthorized else { return Self.permissionError(domain: "Reminders") }
+ return createReminder(args: args)
+
+ case "reminders_complete":
+ guard reminderAuthorized else { return Self.permissionError(domain: "Reminders") }
+ guard let reminderId = args["reminder_id"] as? String else {
+ return ["error": "Missing required parameter: reminder_id"]
+ }
+ return completeReminder(reminderId: reminderId)
+
+ default:
+ return ["error": "Unknown EventKit write tool: \(name)"]
+ }
+ }
+
+ // MARK: - Approval Summary
+
+ /// Human-readable description shown in the approval sheet before a write tool runs.
+ func approvalSummary(forTool name: String, arguments: String) -> String {
+ let args = Self.parseArgs(arguments)
+ switch name {
+ case "calendar_create_event":
+ let title = args["title"] as? String ?? "Untitled event"
+ let start = (args["start_date"] as? String).flatMap(Self.parseDate) ?? Date()
+ let end = (args["end_date"] as? String).flatMap(Self.parseDate) ?? start
+ return "Create calendar event \"\(title)\" from \(Self.displayFormatter.string(from: start)) to \(Self.displayFormatter.string(from: end))"
+ case "reminders_create":
+ let title = args["title"] as? String ?? "Untitled reminder"
+ if let dueStr = args["due_date"] as? String, let due = Self.parseDate(dueStr) {
+ return "Create reminder \"\(title)\" due \(Self.displayFormatter.string(from: due))"
+ }
+ return "Create reminder \"\(title)\""
+ case "reminders_complete":
+ return "Mark reminder as completed"
+ default:
+ return "Perform action: \(name)"
+ }
+ }
+
+ // MARK: - Calendar Read Implementations
+
+ private func listCalendars() -> [String: Any] {
+ let calendars = store.calendars(for: .event).map { cal -> [String: Any] in
+ [
+ "name": cal.title,
+ "type": calendarTypeDescription(cal),
+ "allows_modifications": cal.allowsContentModifications
+ ]
+ }
+ return ["calendars": calendars]
+ }
+
+ private func listEvents(start: Date, end: Date, calendarName: String?) -> [String: Any] {
+ guard end > start else { return ["error": "end_date must be after start_date"] }
+ guard end.timeIntervalSince(start) <= 366 * 24 * 60 * 60 else {
+ return ["error": "Date range too large — limit to 1 year or less"]
+ }
+
+ var calendars = store.calendars(for: .event)
+ if let calendarName {
+ calendars = calendars.filter { $0.title.caseInsensitiveCompare(calendarName) == .orderedSame }
+ if calendars.isEmpty {
+ return ["error": "No calendar found named '\(calendarName)'"]
+ }
+ }
+
+ let predicate = store.predicateForEvents(withStart: start, end: end, calendars: calendars)
+ let events = store.events(matching: predicate)
+ .sorted { $0.startDate < $1.startDate }
+ .prefix(200)
+ .map { event -> [String: Any] in
+ var item: [String: Any] = [
+ "id": event.eventIdentifier ?? "",
+ "title": event.title ?? "Untitled",
+ "start": Self.isoFormatter.string(from: event.startDate),
+ "end": Self.isoFormatter.string(from: event.endDate),
+ "all_day": event.isAllDay,
+ "calendar": event.calendar?.title ?? ""
+ ]
+ if let location = event.location, !location.isEmpty {
+ item["location"] = location
+ }
+ if let notes = event.notes, !notes.isEmpty {
+ item["notes"] = String(notes.prefix(500))
+ }
+ return item
+ }
+
+ return ["count": events.count, "events": Array(events)]
+ }
+
+ private func createEvent(args: [String: Any]) -> [String: Any] {
+ guard let title = args["title"] as? String, !title.isEmpty else {
+ return ["error": "Missing required parameter: title"]
+ }
+ guard let startStr = args["start_date"] as? String, let start = Self.parseDate(startStr) else {
+ return ["error": "Missing or invalid parameter: start_date"]
+ }
+ guard let endStr = args["end_date"] as? String, let end = Self.parseDate(endStr) else {
+ return ["error": "Missing or invalid parameter: end_date"]
+ }
+ guard end >= start else {
+ return ["error": "end_date must not be before start_date"]
+ }
+
+ let event = EKEvent(eventStore: store)
+ event.title = title
+ event.startDate = start
+ event.endDate = end
+ event.isAllDay = args["all_day"] as? Bool ?? false
+
+ if let calendarName = args["calendar_name"] as? String,
+ let calendar = store.calendars(for: .event).first(where: { $0.title.caseInsensitiveCompare(calendarName) == .orderedSame }) {
+ event.calendar = calendar
+ } else if let defaultCalendar = store.defaultCalendarForNewEvents {
+ event.calendar = defaultCalendar
+ } else {
+ guard let fallback = store.calendars(for: .event).first(where: { $0.allowsContentModifications }) else {
+ return ["error": "No writable calendar available"]
+ }
+ event.calendar = fallback
+ }
+
+ if let location = args["location"] as? String { event.location = location }
+ if let notes = args["notes"] as? String { event.notes = notes }
+ if let minutesBefore = (args["alarm_minutes_before"] as? Double) ?? (args["alarm_minutes_before"] as? Int).map(Double.init) {
+ event.addAlarm(EKAlarm(relativeOffset: -(minutesBefore * 60)))
+ }
+
+ do {
+ try store.save(event, span: .thisEvent, commit: true)
+ return ["success": true, "event_id": event.eventIdentifier ?? "", "calendar": event.calendar?.title ?? ""]
+ } catch {
+ Log.mcp.error("calendar_create_event failed: \(error.localizedDescription)")
+ return ["error": "Failed to create event: \(error.localizedDescription)"]
+ }
+ }
+
+ // MARK: - Reminders Read Implementations
+
+ private func listReminderLists() -> [String: Any] {
+ let lists = store.calendars(for: .reminder).map { cal -> [String: Any] in
+ ["name": cal.title, "allows_modifications": cal.allowsContentModifications]
+ }
+ return ["lists": lists]
+ }
+
+ private func listReminders(listName: String?, includeCompleted: Bool) async -> [String: Any] {
+ var lists = store.calendars(for: .reminder)
+ if let listName {
+ lists = lists.filter { $0.title.caseInsensitiveCompare(listName) == .orderedSame }
+ if lists.isEmpty {
+ return ["error": "No reminder list found named '\(listName)'"]
+ }
+ }
+
+ let predicate = store.predicateForReminders(in: lists)
+ let reminders: [EKReminder] = await withCheckedContinuation { continuation in
+ store.fetchReminders(matching: predicate) { results in
+ continuation.resume(returning: results ?? [])
+ }
+ }
+
+ let filtered = reminders
+ .filter { includeCompleted || !$0.isCompleted }
+ .sorted { lhs, rhs in
+ let l = lhs.dueDateComponents?.date ?? .distantFuture
+ let r = rhs.dueDateComponents?.date ?? .distantFuture
+ return l < r
+ }
+ .prefix(200)
+ .map { reminder -> [String: Any] in
+ var item: [String: Any] = [
+ "id": reminder.calendarItemIdentifier,
+ "title": reminder.title ?? "Untitled",
+ "completed": reminder.isCompleted,
+ "list": reminder.calendar?.title ?? ""
+ ]
+ if let due = reminder.dueDateComponents?.date {
+ item["due"] = Self.isoFormatter.string(from: due)
+ }
+ if reminder.priority > 0 {
+ item["priority"] = priorityDescription(reminder.priority)
+ }
+ if let notes = reminder.notes, !notes.isEmpty {
+ item["notes"] = String(notes.prefix(500))
+ }
+ return item
+ }
+
+ return ["count": filtered.count, "reminders": Array(filtered)]
+ }
+
+ private func createReminder(args: [String: Any]) -> [String: Any] {
+ guard let title = args["title"] as? String, !title.isEmpty else {
+ return ["error": "Missing required parameter: title"]
+ }
+
+ let reminder = EKReminder(eventStore: store)
+ reminder.title = title
+
+ if let listName = args["list_name"] as? String,
+ let list = store.calendars(for: .reminder).first(where: { $0.title.caseInsensitiveCompare(listName) == .orderedSame }) {
+ reminder.calendar = list
+ } else if let defaultList = store.defaultCalendarForNewReminders() {
+ reminder.calendar = defaultList
+ } else {
+ guard let fallback = store.calendars(for: .reminder).first(where: { $0.allowsContentModifications }) else {
+ return ["error": "No writable reminder list available"]
+ }
+ reminder.calendar = fallback
+ }
+
+ if let dueStr = args["due_date"] as? String, let due = Self.parseDate(dueStr) {
+ reminder.dueDateComponents = Calendar.current.dateComponents([.year, .month, .day, .hour, .minute, .second], from: due)
+ }
+ if let notes = args["notes"] as? String { reminder.notes = notes }
+ if let priority = args["priority"] as? String { reminder.priority = priorityValue(priority) }
+
+ do {
+ try store.save(reminder, commit: true)
+ return ["success": true, "reminder_id": reminder.calendarItemIdentifier, "list": reminder.calendar?.title ?? ""]
+ } catch {
+ Log.mcp.error("reminders_create failed: \(error.localizedDescription)")
+ return ["error": "Failed to create reminder: \(error.localizedDescription)"]
+ }
+ }
+
+ private func completeReminder(reminderId: String) -> [String: Any] {
+ guard let item = store.calendarItem(withIdentifier: reminderId) as? EKReminder else {
+ return ["error": "No reminder found with id '\(reminderId)'"]
+ }
+ item.isCompleted = true
+ item.completionDate = Date()
+
+ do {
+ try store.save(item, commit: true)
+ return ["success": true, "reminder_id": reminderId, "title": item.title ?? ""]
+ } catch {
+ Log.mcp.error("reminders_complete failed: \(error.localizedDescription)")
+ return ["error": "Failed to complete reminder: \(error.localizedDescription)"]
+ }
+ }
+
+ // MARK: - Helpers
+
+ private func calendarTypeDescription(_ cal: EKCalendar) -> String {
+ switch cal.type {
+ case .local: return "local"
+ case .calDAV: return "caldav"
+ case .exchange: return "exchange"
+ case .subscription: return "subscription"
+ case .birthday: return "birthday"
+ @unknown default: return "unknown"
+ }
+ }
+
+ private func priorityDescription(_ value: Int) -> String {
+ switch value {
+ case 1...4: return "high"
+ case 5: return "medium"
+ case 6...9: return "low"
+ default: return "none"
+ }
+ }
+
+ private func priorityValue(_ description: String) -> Int {
+ switch description.lowercased() {
+ case "high": return 1
+ case "medium": return 5
+ case "low": return 9
+ default: return 0
+ }
+ }
+
+ private func makeTool(name: String, description: String, properties: [String: Tool.Function.Parameters.Property], required: [String]) -> Tool {
+ Tool(
+ type: "function",
+ function: Tool.Function(
+ name: name,
+ description: description,
+ parameters: Tool.Function.Parameters(
+ type: "object",
+ properties: properties,
+ required: required
+ )
+ )
+ )
+ }
+
+ private func prop(_ type: String, _ description: String, enumValues: [String]? = nil) -> Tool.Function.Parameters.Property {
+ Tool.Function.Parameters.Property(type: type, description: description, enum: enumValues)
+ }
+
+ nonisolated static func parseArgs(_ arguments: String) -> [String: Any] {
+ guard let data = arguments.data(using: .utf8),
+ let dict = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
+ return [:]
+ }
+ return dict
+ }
+
+ nonisolated static func permissionError(domain: String) -> [String: Any] {
+ ["error": "\(domain) permission not granted. Grant access in Settings > MCP."]
+ }
+
+ nonisolated(unsafe) static let isoFormatter: ISO8601DateFormatter = {
+ let f = ISO8601DateFormatter()
+ f.formatOptions = [.withInternetDateTime]
+ return f
+ }()
+
+ nonisolated static let displayFormatter: DateFormatter = {
+ let f = DateFormatter()
+ f.dateStyle = .medium
+ f.timeStyle = .short
+ return f
+ }()
+
+ nonisolated static func parseDate(_ string: String) -> Date? {
+ if let date = isoFormatter.date(from: string) { return date }
+
+ let isoNoTimezone = ISO8601DateFormatter()
+ isoNoTimezone.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
+ if let date = isoNoTimezone.date(from: string) { return date }
+
+ let localDateTime = DateFormatter()
+ localDateTime.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
+ if let date = localDateTime.date(from: string) { return date }
+
+ let dateOnly = DateFormatter()
+ dateOnly.dateFormat = "yyyy-MM-dd"
+ if let date = dateOnly.date(from: string) { return date }
+
+ return nil
+ }
+}
diff --git a/oAI/Services/LocationMapsService.swift b/oAI/Services/LocationMapsService.swift
new file mode 100644
index 0000000..7bab13b
--- /dev/null
+++ b/oAI/Services/LocationMapsService.swift
@@ -0,0 +1,343 @@
+//
+// LocationMapsService.swift
+// oAI
+//
+// Read-only Location and Maps integration via CoreLocation and MapKit
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// Copyright (C) 2026 Rune Olsen
+//
+// This file is part of oAI.
+//
+// oAI is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// oAI is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
+// Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public
+// License along with oAI. If not, see .
+
+
+import CoreLocation
+import Foundation
+import MapKit
+import os
+
+@Observable
+class LocationMapsService: NSObject, CLLocationManagerDelegate {
+ static let shared = LocationMapsService()
+
+ private let locationManager = CLLocationManager()
+
+ private var authContinuation: CheckedContinuation?
+ private var locationContinuation: CheckedContinuation?
+
+ private override init() {
+ super.init()
+ locationManager.delegate = self
+ }
+
+ // MARK: - Authorization
+
+ var authStatus: CLAuthorizationStatus {
+ locationManager.authorizationStatus
+ }
+
+ var authorized: Bool {
+ authStatus == .authorizedAlways || authStatus == .authorized
+ }
+
+ var accessState: PersonalDataAccessState {
+ let status = authStatus
+ Log.mcp.debug("LocationMapsService.accessState -> status=\(Self.describe(status)) (raw=\(status.rawValue))")
+ switch status {
+ case .authorizedAlways, .authorized: return .granted
+ case .notDetermined: return .notDetermined
+ default: return .denied
+ }
+ }
+
+ @discardableResult
+ func requestAccess() async -> Bool {
+ let before = locationManager.authorizationStatus
+ Log.mcp.info("LocationMapsService.requestAccess: status before = \(Self.describe(before)) (raw=\(before.rawValue))")
+ if before != .notDetermined {
+ Log.mcp.info("LocationMapsService.requestAccess: skipping OS prompt (not notDetermined)")
+ return authorized
+ }
+ return await withCheckedContinuation { continuation in
+ self.authContinuation = continuation
+ locationManager.requestWhenInUseAuthorization()
+ }
+ }
+
+ func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
+ let status = manager.authorizationStatus
+ Log.mcp.info("LocationMapsService: authorization changed -> \(Self.describe(status)) (raw=\(status.rawValue))")
+ authContinuation?.resume(returning: authorized)
+ authContinuation = nil
+ }
+
+ nonisolated static func describe(_ status: CLAuthorizationStatus) -> String {
+ switch status {
+ case .notDetermined: return "notDetermined"
+ case .restricted: return "restricted"
+ case .denied: return "denied"
+ case .authorizedAlways: return "authorizedAlways"
+ case .authorized: return "authorized"
+ @unknown default: return "unknown"
+ }
+ }
+
+ func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
+ locationContinuation?.resume(returning: locations.last)
+ locationContinuation = nil
+ }
+
+ func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
+ Log.mcp.error("Location request failed: \(error.localizedDescription)")
+ locationContinuation?.resume(returning: nil)
+ locationContinuation = nil
+ }
+
+ private func currentLocation() async -> CLLocation? {
+ await withCheckedContinuation { continuation in
+ self.locationContinuation = continuation
+ locationManager.requestLocation()
+ }
+ }
+
+ // MARK: - Tool Schemas
+
+ func getToolSchemas() -> [Tool] {
+ [
+ makeTool(
+ name: "location_get_current",
+ description: "Get the device's current location, including a human-readable address.",
+ properties: [:],
+ required: []
+ ),
+ makeTool(
+ name: "maps_search_places",
+ description: "Search for places (businesses, landmarks, addresses) by name or category.",
+ properties: [
+ "query": prop("string", "What to search for, e.g. 'coffee shops' or 'Eiffel Tower'"),
+ "near": prop("string", "Optional: an address or 'latitude,longitude' to search near")
+ ],
+ required: ["query"]
+ ),
+ makeTool(
+ name: "maps_geocode",
+ description: "Convert an address into geographic coordinates and a formatted address.",
+ properties: [
+ "address": prop("string", "The address to geocode")
+ ],
+ required: ["address"]
+ ),
+ makeTool(
+ name: "maps_get_directions",
+ description: "Get distance and estimated travel time between two locations.",
+ properties: [
+ "origin": prop("string", "Starting address or 'latitude,longitude'"),
+ "destination": prop("string", "Destination address or 'latitude,longitude'"),
+ "transport_type": prop("string", "Mode of transport", enumValues: ["driving", "walking", "transit"])
+ ],
+ required: ["origin", "destination"]
+ )
+ ]
+ }
+
+ // MARK: - Tool Execution
+
+ func executeTool(name: String, arguments: String) async -> [String: Any] {
+ Log.mcp.info("Executing LocationMaps tool: \(name)")
+ let args = parseArgs(arguments)
+
+ switch name {
+ case "location_get_current":
+ guard authorized else { return ["error": "Location permission not granted. Grant access in Settings > MCP."] }
+ return await getCurrentLocation()
+
+ case "maps_search_places":
+ guard let query = args["query"] as? String, !query.isEmpty else {
+ return ["error": "Missing required parameter: query"]
+ }
+ let near = args["near"] as? String
+ return await searchPlaces(query: query, near: near)
+
+ case "maps_geocode":
+ guard let address = args["address"] as? String, !address.isEmpty else {
+ return ["error": "Missing required parameter: address"]
+ }
+ return await geocode(address: address)
+
+ case "maps_get_directions":
+ guard let origin = args["origin"] as? String, let destination = args["destination"] as? String else {
+ return ["error": "Missing required parameter: origin and/or destination"]
+ }
+ let transportType = args["transport_type"] as? String ?? "driving"
+ return await getDirections(origin: origin, destination: destination, transportType: transportType)
+
+ default:
+ return ["error": "Unknown LocationMaps tool: \(name)"]
+ }
+ }
+
+ // MARK: - Implementations
+
+ private func getCurrentLocation() async -> [String: Any] {
+ guard let location = await currentLocation() else {
+ return ["error": "Could not determine current location"]
+ }
+ var result: [String: Any] = [
+ "latitude": location.coordinate.latitude,
+ "longitude": location.coordinate.longitude
+ ]
+ if let mapItem = await reverseGeocode(location), let address = addressString(for: mapItem) {
+ result["address"] = address
+ }
+ return result
+ }
+
+ private func searchPlaces(query: String, near: String?) async -> [String: Any] {
+ let request = MKLocalSearch.Request()
+ request.naturalLanguageQuery = query
+ if let near, let coordinate = await coordinate(for: near) {
+ request.region = MKCoordinateRegion(center: coordinate, latitudinalMeters: 20_000, longitudinalMeters: 20_000)
+ }
+
+ do {
+ let response = try await MKLocalSearch(request: request).start()
+ let places = response.mapItems.prefix(15).map { item -> [String: Any] in
+ var place: [String: Any] = ["name": item.name ?? "Unknown"]
+ place["latitude"] = item.location.coordinate.latitude
+ place["longitude"] = item.location.coordinate.longitude
+ if let address = addressString(for: item) {
+ place["address"] = address
+ }
+ if let phone = item.phoneNumber { place["phone"] = phone }
+ return place
+ }
+ return ["count": places.count, "places": Array(places)]
+ } catch {
+ return ["error": "Search failed: \(error.localizedDescription)"]
+ }
+ }
+
+ private func geocode(address: String) async -> [String: Any] {
+ guard let request = MKGeocodingRequest(addressString: address) else {
+ return ["error": "Invalid address: \(address)"]
+ }
+ do {
+ guard let mapItem = try await request.mapItems.first else {
+ return ["error": "No results found for address: \(address)"]
+ }
+ var result: [String: Any] = [
+ "latitude": mapItem.location.coordinate.latitude,
+ "longitude": mapItem.location.coordinate.longitude
+ ]
+ if let formatted = addressString(for: mapItem) {
+ result["formatted_address"] = formatted
+ }
+ return result
+ } catch {
+ return ["error": "Geocoding failed: \(error.localizedDescription)"]
+ }
+ }
+
+ private func getDirections(origin: String, destination: String, transportType: String) async -> [String: Any] {
+ guard let originCoordinate = await coordinate(for: origin) else {
+ return ["error": "Could not resolve origin: \(origin)"]
+ }
+ guard let destinationCoordinate = await coordinate(for: destination) else {
+ return ["error": "Could not resolve destination: \(destination)"]
+ }
+
+ let request = MKDirections.Request()
+ request.source = MKMapItem(location: CLLocation(latitude: originCoordinate.latitude, longitude: originCoordinate.longitude), address: nil)
+ request.destination = MKMapItem(location: CLLocation(latitude: destinationCoordinate.latitude, longitude: destinationCoordinate.longitude), address: nil)
+ switch transportType {
+ case "walking": request.transportType = .walking
+ case "transit": request.transportType = .transit
+ default: request.transportType = .automobile
+ }
+
+ do {
+ let response = try await MKDirections(request: request).calculate()
+ guard let route = response.routes.first else {
+ return ["error": "No route found"]
+ }
+ let distanceFormatter = MKDistanceFormatter()
+ let durationFormatter = DateComponentsFormatter()
+ durationFormatter.allowedUnits = [.hour, .minute]
+ durationFormatter.unitsStyle = .short
+
+ return [
+ "distance_meters": route.distance,
+ "distance_text": distanceFormatter.string(fromDistance: route.distance),
+ "duration_seconds": route.expectedTravelTime,
+ "duration_text": durationFormatter.string(from: route.expectedTravelTime) ?? "",
+ "transport_type": transportType
+ ]
+ } catch {
+ return ["error": "Directions failed: \(error.localizedDescription)"]
+ }
+ }
+
+ // MARK: - Helpers
+
+ private func coordinate(for text: String) async -> CLLocationCoordinate2D? {
+ let parts = text.split(separator: ",").map { $0.trimmingCharacters(in: .whitespaces) }
+ if parts.count == 2, let lat = Double(parts[0]), let lon = Double(parts[1]) {
+ return CLLocationCoordinate2D(latitude: lat, longitude: lon)
+ }
+ guard let request = MKGeocodingRequest(addressString: text) else { return nil }
+ if let mapItems = try? await request.mapItems, let mapItem = mapItems.first {
+ return mapItem.location.coordinate
+ }
+ return nil
+ }
+
+ private func reverseGeocode(_ location: CLLocation) async -> MKMapItem? {
+ guard let request = MKReverseGeocodingRequest(location: location) else { return nil }
+ let mapItems = try? await request.mapItems
+ return mapItems?.first
+ }
+
+ private func addressString(for mapItem: MKMapItem) -> String? {
+ mapItem.address?.fullAddress
+ ?? mapItem.addressRepresentations?.fullAddress(includingRegion: true, singleLine: true)
+ }
+
+ private func parseArgs(_ arguments: String) -> [String: Any] {
+ guard let data = arguments.data(using: .utf8),
+ let dict = try? JSONSerialization.jsonObject(with: data) as? [String: Any] else {
+ return [:]
+ }
+ return dict
+ }
+
+ private func makeTool(name: String, description: String, properties: [String: Tool.Function.Parameters.Property], required: [String]) -> Tool {
+ Tool(
+ type: "function",
+ function: Tool.Function(
+ name: name,
+ description: description,
+ parameters: Tool.Function.Parameters(
+ type: "object",
+ properties: properties,
+ required: required
+ )
+ )
+ )
+ }
+
+ private func prop(_ type: String, _ description: String, enumValues: [String]? = nil) -> Tool.Function.Parameters.Property {
+ Tool.Function.Parameters.Property(type: type, description: description, enum: enumValues)
+ }
+}
diff --git a/oAI/Services/MCPService.swift b/oAI/Services/MCPService.swift
index 0e9c9ee..ef8b964 100644
--- a/oAI/Services/MCPService.swift
+++ b/oAI/Services/MCPService.swift
@@ -111,6 +111,9 @@ class MCPService {
private let anytypeService = AnytypeMCPService.shared
private let paperlessService = PaperlessService.shared
+ private let eventKitService = EventKitService.shared
+ private let contactsService = ContactsService.shared
+ private let locationMapsService = LocationMapsService.shared
// MARK: - Bash Approval State
@@ -124,6 +127,19 @@ class MCPService {
private var pendingBashContinuation: CheckedContinuation<[String: Any], Never>? = nil
private(set) var bashSessionApproved: Bool = false
+ // MARK: - Personal Data (Calendar/Reminders) Approval State
+
+ struct PendingPersonalDataAction: Identifiable {
+ let id = UUID()
+ let toolName: String
+ let argumentsJSON: String
+ let summary: String
+ }
+
+ private(set) var pendingPersonalDataAction: PendingPersonalDataAction? = nil
+ private var pendingPersonalDataContinuation: CheckedContinuation<[String: Any], Never>? = nil
+ private(set) var personalDataSessionApproved: Bool = false
+
// MARK: - Tool Schema Generation
func getToolSchemas(onlineMode: Bool = false) -> [Tool] {
@@ -232,6 +248,24 @@ class MCPService {
tools.append(contentsOf: paperlessService.getToolSchemas())
}
+ // Add Calendar/Reminders tools if enabled
+ if settings.calendarEnabled || settings.remindersEnabled {
+ tools.append(contentsOf: eventKitService.getToolSchemas(
+ calendarEnabled: settings.calendarEnabled,
+ remindersEnabled: settings.remindersEnabled
+ ))
+ }
+
+ // Add Contacts tools if enabled
+ if settings.contactsEnabled {
+ tools.append(contentsOf: contactsService.getToolSchemas())
+ }
+
+ // Add Location/Maps tools if enabled
+ if settings.locationMapsEnabled {
+ tools.append(contentsOf: locationMapsService.getToolSchemas())
+ }
+
// Add bash_execute tool when bash is enabled
if settings.bashEnabled {
let workDir = settings.bashWorkingDirectory
@@ -260,6 +294,22 @@ class MCPService {
))
}
+ // Add spawn_research_agents when Research Agents are enabled
+ if settings.agentsEnabled {
+ tools.append(makeTool(
+ name: "spawn_research_agents",
+ description: "Spawn multiple READ-ONLY research sub-agents that investigate independent questions IN PARALLEL. Each sub-agent gets its own read_file/list_directory/search_files/web_search loop — no write, no bash, no nesting (sub-agents cannot call this tool). ONLY use this when you have 2 or more genuinely independent research questions that benefit from running at the same time (e.g. comparing several unrelated files, topics, or sources). Do NOT use this for a single lookup, a sequential task, or anything answerable with one direct tool call — call read_file/search_files/web_search yourself instead. Each sub-agent is its own full chain of model calls and meaningfully increases cost and latency; using this for trivial tasks is wasteful. Prefer the smallest number of tasks that actually need to run in parallel.",
+ properties: [
+ "tasks": Tool.Function.Parameters.Property(
+ type: "array",
+ description: "List of independent, self-contained research questions — one per sub-agent. Keep this list as short as the task genuinely requires.",
+ items: .init(type: "string")
+ )
+ ],
+ required: ["tasks"]
+ ))
+ }
+
return tools
}
@@ -284,7 +334,10 @@ class MCPService {
// MARK: - Tool Execution
- func executeTool(name: String, arguments: String) async -> [String: Any] {
+ /// `agentProvider`/`agentModelId` are only needed for `spawn_research_agents`, which drives
+ /// its own model calls — every other tool ignores them. Passed in by the caller's active
+ /// chat session rather than stored on MCPService, since this service has no provider state.
+ func executeTool(name: String, arguments: String, agentProvider: AIProvider? = nil, agentModelId: String? = nil) async -> [String: Any] {
Log.mcp.info("Executing tool: \(name)")
guard let argData = arguments.data(using: .utf8),
let args = try? JSONSerialization.jsonObject(with: argData) as? [String: Any] else {
@@ -399,6 +452,25 @@ class MCPService {
let mapped = results.map { ["title": $0.title, "url": $0.url, "snippet": $0.snippet] }
return ["results": mapped]
+ case "spawn_research_agents":
+ guard settings.agentsEnabled else {
+ return ["error": "Research agents are disabled. Enable 'Research Agents' in Settings > MCP."]
+ }
+ guard let agentProvider, let agentModelId else {
+ return ["error": "Internal error: missing model context for spawn_research_agents"]
+ }
+ guard let tasks = args["tasks"] as? [String], !tasks.isEmpty else {
+ return ["error": "Missing required parameter: tasks (non-empty array of strings)"]
+ }
+ return await runResearchAgents(tasks: tasks, provider: agentProvider, modelId: agentModelId)
+
+ case "calendar_create_event", "reminders_create", "reminders_complete":
+ guard settings.calendarEnabled || settings.remindersEnabled else {
+ return ["error": "Calendar/Reminders access is disabled. Enable it in Settings > MCP."]
+ }
+ let summary = eventKitService.approvalSummary(forTool: name, arguments: arguments)
+ return await executePersonalDataAction(toolName: name, argumentsJSON: arguments, summary: summary)
+
default:
// Route anytype_* tools to AnytypeMCPService
if name.hasPrefix("anytype_") {
@@ -408,6 +480,18 @@ class MCPService {
if name.hasPrefix("paperless_") {
return await paperlessService.executeTool(name: name, arguments: arguments)
}
+ // Route calendar_*/reminders_* read tools to EventKitService
+ if name.hasPrefix("calendar_") || name.hasPrefix("reminders_") {
+ return await eventKitService.executeTool(name: name, arguments: arguments)
+ }
+ // Route contacts_* tools to ContactsService
+ if name.hasPrefix("contacts_") {
+ return await contactsService.executeTool(name: name, arguments: arguments)
+ }
+ // Route location_*/maps_* tools to LocationMapsService
+ if name.hasPrefix("location_") || name.hasPrefix("maps_") {
+ return await locationMapsService.executeTool(name: name, arguments: arguments)
+ }
return ["error": "Unknown tool: \(name)"]
}
}
@@ -754,6 +838,11 @@ class MCPService {
if bashSessionApproved {
return await runBashCommand(command, workingDirectory: workingDirectory)
}
+ // 2nd Brain calls its helper script via bash_execute — let the user mark that
+ // specific traffic as always-trusted instead of approving it every time.
+ if isTrustedSecondBrainCommand(command) {
+ return await runBashCommand(command, workingDirectory: workingDirectory)
+ }
return await withCheckedContinuation { continuation in
DispatchQueue.main.async {
self.pendingBashCommand = PendingBashCommand(command: command, workingDirectory: workingDirectory)
@@ -786,6 +875,190 @@ class MCPService {
bashSessionApproved = false
}
+ private func isTrustedSecondBrainCommand(_ command: String) -> Bool {
+ guard settings.trustSecondBrainSkill, command.contains(".brain_helper.py") else { return false }
+ return settings.agentSkills.contains { $0.isActive && $0.isSecondBrainSkill }
+ }
+
+ // MARK: - Research Agents (read-only, parallel)
+
+ /// Runs `tasks.count` sub-agents (capped) with bounded concurrency, each in its own
+ /// read-only tool loop, and returns their findings concatenated for the orchestrator.
+ private func runResearchAgents(tasks: [String], provider: AIProvider, modelId: String) async -> [String: Any] {
+ let maxConcurrent = max(1, min(5, settings.maxConcurrentAgents))
+ // Hard cap on total sub-agents regardless of concurrency setting, so a model
+ // requesting an unreasonably long task list can't run away with cost.
+ let cappedTasks = Array(tasks.prefix(8))
+
+ var results: [(Int, String)] = []
+ await withTaskGroup(of: (Int, String).self) { group in
+ var nextIndex = 0
+ func launchNext() {
+ guard nextIndex < cappedTasks.count else { return }
+ let idx = nextIndex
+ let task = cappedTasks[idx]
+ nextIndex += 1
+ group.addTask {
+ let answer = await self.runSingleResearchAgent(task: task, provider: provider, modelId: modelId)
+ return (idx, answer)
+ }
+ }
+ for _ in 0.. cappedTasks.count {
+ response["note"] = "Only the first \(cappedTasks.count) of \(tasks.count) requested tasks were run (per-call cap)."
+ }
+ return response
+ }
+
+ /// A single sub-agent's self-contained tool loop. Read-only tools only; cannot write,
+ /// run bash, or spawn further sub-agents (spawn_research_agents is not in its tool list).
+ private func runSingleResearchAgent(task: String, provider: AIProvider, modelId: String) async -> String {
+ let readOnlyTools: [Tool] = [
+ makeTool(
+ name: "read_file",
+ description: "Read the contents of a file. Maximum file size is 10MB.",
+ properties: ["file_path": prop("string", "The absolute path to the file to read")],
+ required: ["file_path"]
+ ),
+ makeTool(
+ name: "list_directory",
+ description: "List the contents of a directory. Skips hidden/build directories like .git, node_modules, etc.",
+ properties: [
+ "dir_path": prop("string", "The absolute path to the directory to list"),
+ "recursive": prop("boolean", "Whether to list recursively (default: false)")
+ ],
+ required: ["dir_path"]
+ ),
+ makeTool(
+ name: "search_files",
+ description: "Search for files by name pattern or content.",
+ properties: [
+ "pattern": prop("string", "Glob pattern to match filenames (e.g. '*.py', 'README*')"),
+ "search_path": prop("string", "Directory to search in (defaults to first allowed folder)"),
+ "content_search": prop("string", "Optional text to search for inside files")
+ ],
+ required: ["pattern"]
+ ),
+ makeTool(
+ name: "web_search",
+ description: "Search the web for current information using DuckDuckGo.",
+ properties: ["query": prop("string", "The search query to look up")],
+ required: ["query"]
+ )
+ ]
+ let allowedNames = Set(readOnlyTools.map { $0.function.name })
+
+ var apiMessages: [[String: Any]] = [
+ ["role": "system", "content": "You are a read-only research sub-agent. Investigate the assigned task using the available tools and report concise findings as plain text. You cannot write, delete, or execute anything, and cannot spawn further sub-agents. Once you have enough information, respond with your final answer and stop calling tools."],
+ ["role": "user", "content": task]
+ ]
+
+ let maxIterations = 6
+ for iteration in 0.. String {
+ guard let data = try? JSONSerialization.data(withJSONObject: result),
+ let str = String(data: data, encoding: .utf8) else {
+ return "{\"error\": \"Failed to serialize result\"}"
+ }
+ guard str.utf8.count > maxBytes, let truncated = String(str.utf8.prefix(maxBytes)) else {
+ return str
+ }
+ return truncated + "\n... (result truncated)"
+ }
+
+ // MARK: - Personal Data (Calendar/Reminders) Approval
+
+ private func executePersonalDataAction(toolName: String, argumentsJSON: String, summary: String) async -> [String: Any] {
+ guard settings.personalDataRequireApproval, !personalDataSessionApproved else {
+ return await eventKitService.executeWriteTool(name: toolName, arguments: argumentsJSON)
+ }
+ return await withCheckedContinuation { continuation in
+ DispatchQueue.main.async {
+ self.pendingPersonalDataAction = PendingPersonalDataAction(toolName: toolName, argumentsJSON: argumentsJSON, summary: summary)
+ self.pendingPersonalDataContinuation = continuation
+ }
+ }
+ }
+
+ func approvePendingPersonalDataAction(forSession: Bool = false) {
+ guard let pending = pendingPersonalDataAction, let cont = pendingPersonalDataContinuation else { return }
+ pendingPersonalDataAction = nil
+ pendingPersonalDataContinuation = nil
+ if forSession {
+ personalDataSessionApproved = true
+ }
+ Task.detached(priority: .userInitiated) {
+ let result = await self.eventKitService.executeWriteTool(name: pending.toolName, arguments: pending.argumentsJSON)
+ cont.resume(returning: result)
+ }
+ }
+
+ func denyPendingPersonalDataAction() {
+ guard pendingPersonalDataAction != nil else { return }
+ pendingPersonalDataAction = nil
+ pendingPersonalDataContinuation?.resume(returning: ["error": "User denied this action"])
+ pendingPersonalDataContinuation = nil
+ }
+
+ func resetPersonalDataSessionApproval() {
+ personalDataSessionApproved = false
+ }
+
private func runBashCommand(_ command: String, workingDirectory: String) async -> [String: Any] {
let timeoutSeconds = settings.bashTimeout
let workDir = ((workingDirectory as NSString).expandingTildeInPath as NSString).standardizingPath
diff --git a/oAI/Services/SettingsService.swift b/oAI/Services/SettingsService.swift
index 5191f70..c8f923e 100644
--- a/oAI/Services/SettingsService.swift
+++ b/oAI/Services/SettingsService.swift
@@ -27,6 +27,18 @@ import Foundation
import os
import Security
+/// Kill switch for the Personal Data tools (Calendar/Reminders/Contacts/Location & Maps).
+/// Flip `isHiddenPendingAppleFix` back to `false` once Apple fixes the macOS 27 beta TCC bug
+/// (filed with Apple). Each flag hides the relevant UI and forces the `*Enabled` getter to
+/// return `false` regardless of the persisted DB value — no code deleted, just inert.
+enum PersonalDataTools {
+ /// Hides the entire Personal Data section. Flip to `false` once all four services work.
+ static let isHiddenPendingAppleFix = false
+ /// Hides only the Contacts row. Contacts TCC still broken under hardened runtime on
+ /// macOS 27 beta 2 while Calendar/Reminders/Location are fixed. Flip to `false` once fixed.
+ static let isContactsHiddenPendingAppleFix = true
+}
+
@Observable
class SettingsService {
static let shared = SettingsService()
@@ -577,6 +589,37 @@ class SettingsService {
}
}
+ // MARK: - Research Agents Settings
+
+ /// When true, the AI can call `spawn_research_agents` to run multiple read-only
+ /// sub-agents in parallel. Each sub-agent is its own full chain of model calls, so
+ /// this can noticeably increase cost — opt-in, off by default.
+ var agentsEnabled: Bool {
+ get { cache["agentsEnabled"] == "true" }
+ set {
+ cache["agentsEnabled"] = String(newValue)
+ DatabaseService.shared.setSetting(key: "agentsEnabled", value: String(newValue))
+ }
+ }
+
+ var maxConcurrentAgents: Int {
+ get { cache["maxConcurrentAgents"].flatMap(Int.init) ?? 3 }
+ set {
+ cache["maxConcurrentAgents"] = String(newValue)
+ DatabaseService.shared.setSetting(key: "maxConcurrentAgents", value: String(newValue))
+ }
+ }
+
+ /// When true (and an active "2nd Brain" Agent Skill is installed), bash commands that
+ /// invoke the 2nd Brain helper script skip the approval dialog entirely.
+ var trustSecondBrainSkill: Bool {
+ get { cache["trustSecondBrainSkill"] == "true" }
+ set {
+ cache["trustSecondBrainSkill"] = String(newValue)
+ DatabaseService.shared.setSetting(key: "trustSecondBrainSkill", value: String(newValue))
+ }
+ }
+
var bashWorkingDirectory: String {
get { cache["bashWorkingDirectory"] ?? "~" }
set {
@@ -593,6 +636,48 @@ class SettingsService {
}
}
+ // MARK: - Personal Data Settings (Calendar/Reminders/Contacts/Location/Maps)
+
+ var calendarEnabled: Bool {
+ get { !PersonalDataTools.isHiddenPendingAppleFix && cache["calendarEnabled"] == "true" }
+ set {
+ cache["calendarEnabled"] = String(newValue)
+ DatabaseService.shared.setSetting(key: "calendarEnabled", value: String(newValue))
+ }
+ }
+
+ var remindersEnabled: Bool {
+ get { !PersonalDataTools.isHiddenPendingAppleFix && cache["remindersEnabled"] == "true" }
+ set {
+ cache["remindersEnabled"] = String(newValue)
+ DatabaseService.shared.setSetting(key: "remindersEnabled", value: String(newValue))
+ }
+ }
+
+ var contactsEnabled: Bool {
+ get { !PersonalDataTools.isHiddenPendingAppleFix && !PersonalDataTools.isContactsHiddenPendingAppleFix && cache["contactsEnabled"] == "true" }
+ set {
+ cache["contactsEnabled"] = String(newValue)
+ DatabaseService.shared.setSetting(key: "contactsEnabled", value: String(newValue))
+ }
+ }
+
+ var locationMapsEnabled: Bool {
+ get { !PersonalDataTools.isHiddenPendingAppleFix && cache["locationMapsEnabled"] == "true" }
+ set {
+ cache["locationMapsEnabled"] = String(newValue)
+ DatabaseService.shared.setSetting(key: "locationMapsEnabled", value: String(newValue))
+ }
+ }
+
+ var personalDataRequireApproval: Bool {
+ get { cache["personalDataRequireApproval"].map { $0 == "true" } ?? true }
+ set {
+ cache["personalDataRequireApproval"] = String(newValue)
+ DatabaseService.shared.setSetting(key: "personalDataRequireApproval", value: String(newValue))
+ }
+ }
+
// MARK: - Paperless-NGX Settings
var paperlessEnabled: Bool {
diff --git a/oAI/ViewModels/ChatViewModel.swift b/oAI/ViewModels/ChatViewModel.swift
index e217b0b..44f852d 100644
--- a/oAI/ViewModels/ChatViewModel.swift
+++ b/oAI/ViewModels/ChatViewModel.swift
@@ -799,8 +799,10 @@ Don't narrate future actions ("Let me...") - just use the tools.
let mcpActive = mcpEnabled || settings.mcpEnabled
let anytypeActive = settings.anytypeMcpEnabled && settings.anytypeMcpConfigured
let bashActive = settings.bashEnabled
+ let personalDataActive = settings.calendarEnabled || settings.remindersEnabled || settings.contactsEnabled || settings.locationMapsEnabled
+ let researchAgentsActive = settings.agentsEnabled
let modelSupportTools = selectedModel?.capabilities.tools ?? false
- if modelSupportTools && (anytypeActive || bashActive || (mcpActive && !mcp.allowedFolders.isEmpty)) {
+ if modelSupportTools && (anytypeActive || bashActive || personalDataActive || researchAgentsActive || (mcpActive && !mcp.allowedFolders.isEmpty)) {
generateAIResponseWithTools(provider: provider, modelId: modelId)
return
}
@@ -1354,6 +1356,7 @@ Don't narrate future actions ("Let me...") - just use the tools.
var didContinueAfterImages = false // Only inject temp-file continuation once
var totalUsage: ChatResponse.Usage?
var hitIterationLimit = false // Track if we exited due to hitting the limit
+ var finishedWithEmptyContent = false // Model stopped calling tools but said nothing
for iteration in 0.. Void
let onExport: () -> Void
let onDelete: () -> Void
+ var isTrusted: Bool = false
+ var onToggleTrust: (() -> Void)? = nil
private var fileCount: Int {
AgentSkillFilesService.shared.listFiles(for: skill.id).count
@@ -378,6 +382,14 @@ private struct AgentSkillRow: View {
Spacer()
+ // 2nd Brain: let the user mark bash calls to its helper script as always-trusted,
+ // skipping the bash approval dialog. Only shown for this specific skill while active.
+ if skill.isActive, skill.isSecondBrainSkill, let onToggleTrust {
+ Toggle("Trust", isOn: Binding(get: { isTrusted }, set: { _ in onToggleTrust() }))
+ .toggleStyle(.switch).controlSize(.small)
+ .help("When on, bash commands that call the 2nd Brain helper script run without asking for approval each time.")
+ }
+
// File count badge
if fileCount > 0 {
Label("^[\(fileCount) file](inflect: true)", systemImage: "doc")
@@ -479,7 +491,9 @@ struct AgentSkillsTabContent: View {
onToggle: { settings.toggleAgentSkill(id: skill.id) },
onEdit: { editContext = SkillEditContext(skill: skill) },
onExport: { exportOne(skill) },
- onDelete: { settings.deleteAgentSkill(id: skill.id) }
+ onDelete: { settings.deleteAgentSkill(id: skill.id) },
+ isTrusted: settings.trustSecondBrainSkill,
+ onToggleTrust: { settings.trustSecondBrainSkill.toggle() }
)
if idx < settings.agentSkills.count - 1 { Divider() }
}
diff --git a/oAI/Views/Screens/PersonalDataApprovalSheet.swift b/oAI/Views/Screens/PersonalDataApprovalSheet.swift
new file mode 100644
index 0000000..7533dff
--- /dev/null
+++ b/oAI/Views/Screens/PersonalDataApprovalSheet.swift
@@ -0,0 +1,97 @@
+//
+// PersonalDataApprovalSheet.swift
+// oAI
+//
+// Approval UI for AI-requested Calendar/Reminders write actions
+//
+// SPDX-License-Identifier: AGPL-3.0-or-later
+// Copyright (C) 2026 Rune Olsen
+//
+// This file is part of oAI.
+//
+// oAI is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// oAI is distributed in the hope that it will be useful, but WITHOUT
+// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General
+// Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public
+// License along with oAI. If not, see .
+
+
+import SwiftUI
+
+struct PersonalDataApprovalSheet: View {
+ let pending: MCPService.PendingPersonalDataAction
+ let onApprove: (_ forSession: Bool) -> Void
+ let onDeny: () -> Void
+
+ var body: some View {
+ VStack(alignment: .leading, spacing: 20) {
+ // Header
+ HStack(spacing: 12) {
+ Image(systemName: "calendar.badge.exclamationmark")
+ .font(.title2)
+ .foregroundStyle(.orange)
+ VStack(alignment: .leading, spacing: 2) {
+ Text("Allow This Action?")
+ .font(.system(size: 17, weight: .semibold))
+ Text("The AI wants to make a change to your calendar or reminders")
+ .font(.system(size: 13))
+ .foregroundStyle(.secondary)
+ }
+ Spacer()
+ }
+
+ // Action description
+ VStack(alignment: .leading, spacing: 6) {
+ Text("ACTION")
+ .font(.system(size: 11, weight: .medium))
+ .foregroundStyle(.secondary)
+ Text(pending.summary)
+ .font(.system(size: 13))
+ .foregroundStyle(.primary)
+ .frame(maxWidth: .infinity, alignment: .leading)
+ .textSelection(.enabled)
+ .padding(12)
+ .background(Color.secondary.opacity(0.08))
+ .clipShape(RoundedRectangle(cornerRadius: 8))
+ .overlay(
+ RoundedRectangle(cornerRadius: 8)
+ .stroke(Color.secondary.opacity(0.2), lineWidth: 1)
+ )
+ }
+
+ // Buttons
+ HStack(spacing: 8) {
+ Button("Deny") {
+ onDeny()
+ }
+ .buttonStyle(.bordered)
+ .tint(.red)
+ .keyboardShortcut(.escape, modifiers: [])
+
+ Spacer()
+
+ Button("Allow Once") {
+ onApprove(false)
+ }
+ .buttonStyle(.bordered)
+ .tint(.orange)
+
+ Button("Allow for Session") {
+ onApprove(true)
+ }
+ .buttonStyle(.borderedProminent)
+ .tint(.orange)
+ .keyboardShortcut(.return, modifiers: [])
+ }
+ }
+ .padding(24)
+ .frame(width: 480)
+ }
+}
diff --git a/oAI/Views/Screens/SettingsView.swift b/oAI/Views/Screens/SettingsView.swift
index aed4728..13eabae 100644
--- a/oAI/Views/Screens/SettingsView.swift
+++ b/oAI/Views/Screens/SettingsView.swift
@@ -75,6 +75,12 @@ struct SettingsView: View {
// Default model picker state
@State private var showDefaultModelPicker = false
+ // Personal Data state (Calendar/Reminders/Contacts/Location/Maps)
+ @State private var calendarAccessState = EventKitService.shared.calendarAccessState
+ @State private var remindersAccessState = EventKitService.shared.reminderAccessState
+ @State private var contactsAccessState = ContactsService.shared.accessState
+ @State private var locationAccessState = LocationMapsService.shared.accessState
+
// Paperless-NGX state
@State private var paperlessURL = ""
@State private var paperlessToken = ""
@@ -752,6 +758,163 @@ It's better to admit "I need more information" or "I cannot do that" than to fak
.padding(.horizontal, 4)
}
}
+
+ // MARK: Research Agents
+ Divider()
+
+ VStack(alignment: .leading, spacing: 8) {
+ HStack(spacing: 8) {
+ Image(systemName: "person.3.fill")
+ .font(.title2)
+ .foregroundStyle(.indigo)
+ Text("Research Agents")
+ .font(.system(size: 18, weight: .semibold))
+ }
+ Text("Let the AI spawn read-only research sub-agents to investigate multiple things in parallel (read files, list/search directories, search the web — no writing, no bash). Intended for genuinely independent research tasks, not everyday questions.")
+ .font(.system(size: 14))
+ .foregroundStyle(.secondary)
+ .fixedSize(horizontal: false, vertical: true)
+ }
+ .padding(.bottom, 4)
+
+ VStack(alignment: .leading, spacing: 6) {
+ sectionHeader("Status")
+ formSection {
+ row("Enable Research Agents") {
+ Toggle("", isOn: $settingsService.agentsEnabled)
+ .toggleStyle(.switch)
+ }
+ }
+ }
+
+ HStack(alignment: .top, spacing: 6) {
+ Image(systemName: "exclamationmark.triangle.fill")
+ .font(.system(size: 12))
+ .foregroundStyle(.orange)
+ .padding(.top, 1)
+ Text("Cost warning: each sub-agent runs its own full chain of model calls. A single request that spawns several agents can cost several times a normal reply. The AI is instructed to only use this for genuinely parallel research, but model behavior can vary — leave this off unless you want that tradeoff.")
+ .font(.system(size: 13))
+ .foregroundStyle(.secondary)
+ .fixedSize(horizontal: false, vertical: true)
+ }
+ .padding(.horizontal, 4)
+
+ if settingsService.agentsEnabled {
+ VStack(alignment: .leading, spacing: 6) {
+ sectionHeader("Settings")
+ formSection {
+ row("Max Concurrent Agents") {
+ HStack(spacing: 8) {
+ Stepper("", value: $settingsService.maxConcurrentAgents, in: 1...5)
+ .labelsHidden()
+ Text("\(settingsService.maxConcurrentAgents)")
+ .font(.system(size: 13))
+ .foregroundStyle(.secondary)
+ .frame(width: 24, alignment: .trailing)
+ }
+ }
+ }
+ }
+ }
+
+ // MARK: Personal Data
+ // isHiddenPendingAppleFix hides the entire section (macOS 27 beta TCC bug).
+ // isContactsHiddenPendingAppleFix hides just the Contacts row (still broken in beta 2
+ // under hardened runtime while Calendar/Reminders/Location are fixed). Flip each flag
+ // to false once Apple ships a fix.
+ if !PersonalDataTools.isHiddenPendingAppleFix {
+ Divider()
+
+ VStack(alignment: .leading, spacing: 8) {
+ HStack(spacing: 8) {
+ Image(systemName: "person.crop.circle.badge.checkmark")
+ .font(.title2)
+ .foregroundStyle(.teal)
+ Text("Personal Data")
+ .font(.system(size: 18, weight: .semibold))
+ if PersonalDataTools.isContactsHiddenPendingAppleFix {
+ Text("β")
+ .font(.system(size: 11, weight: .bold))
+ .foregroundStyle(.orange)
+ .padding(.horizontal, 5)
+ .padding(.vertical, 2)
+ .background(Color.orange.opacity(0.15))
+ .clipShape(RoundedRectangle(cornerRadius: 4))
+ .help("Beta Feature. May change.")
+ }
+ }
+ Text("Let the AI access your Calendar, Reminders, and Location & Maps to answer questions about your schedule and surroundings. Each service is opt-in and uses standard macOS permission prompts. This functionality is in beta and may change.")
+ .font(.system(size: 14))
+ .foregroundStyle(.secondary)
+ .fixedSize(horizontal: false, vertical: true)
+ }
+ .padding(.bottom, 4)
+ .onAppear {
+ // Permission status can change outside the app (System Settings, or a prior
+ // request elsewhere) — re-read it fresh every time this tab appears rather than
+ // trusting the one-time @State initializer.
+ calendarAccessState = EventKitService.shared.calendarAccessState
+ remindersAccessState = EventKitService.shared.reminderAccessState
+ contactsAccessState = ContactsService.shared.accessState
+ locationAccessState = LocationMapsService.shared.accessState
+ }
+
+ VStack(alignment: .leading, spacing: 6) {
+ sectionHeader("Services")
+ formSection {
+ personalDataRow(
+ title: "Calendar",
+ isEnabled: $settingsService.calendarEnabled,
+ state: calendarAccessState,
+ systemSettingsAnchor: "Privacy_Calendars",
+ requestAccess: { calendarAccessState = await EventKitService.shared.requestCalendarAccess() ? .granted : EventKitService.shared.calendarAccessState }
+ )
+ rowDivider()
+ personalDataRow(
+ title: "Reminders",
+ isEnabled: $settingsService.remindersEnabled,
+ state: remindersAccessState,
+ systemSettingsAnchor: "Privacy_Reminders",
+ requestAccess: { remindersAccessState = await EventKitService.shared.requestReminderAccess() ? .granted : EventKitService.shared.reminderAccessState }
+ )
+ rowDivider()
+ if !PersonalDataTools.isContactsHiddenPendingAppleFix {
+ personalDataRow(
+ title: "Contacts",
+ isEnabled: $settingsService.contactsEnabled,
+ state: contactsAccessState,
+ systemSettingsAnchor: "Privacy_Contacts",
+ requestAccess: { contactsAccessState = await ContactsService.shared.requestAccess() ? .granted : ContactsService.shared.accessState }
+ )
+ rowDivider()
+ }
+ personalDataRow(
+ title: "Location & Maps",
+ isEnabled: $settingsService.locationMapsEnabled,
+ state: locationAccessState,
+ systemSettingsAnchor: "Privacy_LocationServices",
+ requestAccess: { locationAccessState = await LocationMapsService.shared.requestAccess() ? .granted : LocationMapsService.shared.accessState }
+ )
+ }
+ }
+
+ if settingsService.calendarEnabled || settingsService.remindersEnabled {
+ VStack(alignment: .leading, spacing: 6) {
+ sectionHeader("Write Actions")
+ formSection {
+ row("Require Approval for Changes") {
+ Toggle("", isOn: $settingsService.personalDataRequireApproval)
+ .toggleStyle(.switch)
+ }
+ }
+ }
+ Text("Creating calendar events or reminders, and completing reminders, will ask for your approval first.")
+ .font(.system(size: 13))
+ .foregroundStyle(.secondary)
+ .fixedSize(horizontal: false, vertical: true)
+ .padding(.horizontal, 4)
+ }
+ }
}
// MARK: - Appearance Tab
@@ -2446,6 +2609,57 @@ It's better to admit "I need more information" or "I cannot do that" than to fak
Divider().padding(.leading, 16)
}
+ @ViewBuilder
+ private func personalDataRow(title: LocalizedStringKey, isEnabled: Binding, state: PersonalDataAccessState, systemSettingsAnchor: String, requestAccess: @escaping () async -> Void) -> some View {
+ VStack(alignment: .leading, spacing: 6) {
+ HStack(alignment: .center, spacing: 12) {
+ Text(title).font(.system(size: 14))
+ Spacer()
+ Toggle("", isOn: isEnabled)
+ .toggleStyle(.switch)
+ }
+ if isEnabled.wrappedValue {
+ HStack(spacing: 6) {
+ Image(systemName: state == .granted ? "checkmark.circle.fill" : (state == .denied ? "exclamationmark.circle.fill" : "circle"))
+ .foregroundStyle(state == .granted ? .green : (state == .denied ? .orange : .secondary))
+ .font(.system(size: 12))
+ Text(statusText(for: state))
+ .font(.system(size: 12))
+ .foregroundStyle(.secondary)
+ Spacer()
+ if state == .notDetermined {
+ Button("Request Access") {
+ Task { await requestAccess() }
+ }
+ .buttonStyle(.bordered)
+ .controlSize(.small)
+ } else if state == .denied {
+ Button("Open System Settings") {
+ openPrivacySettings(anchor: systemSettingsAnchor)
+ }
+ .buttonStyle(.bordered)
+ .controlSize(.small)
+ }
+ }
+ }
+ }
+ .padding(.horizontal, 16)
+ .padding(.vertical, 10)
+ }
+
+ private func statusText(for state: PersonalDataAccessState) -> LocalizedStringKey {
+ switch state {
+ case .granted: return "Access granted"
+ case .denied: return "Access denied — enable in System Settings"
+ case .notDetermined: return "Access not granted"
+ }
+ }
+
+ private func openPrivacySettings(anchor: String) {
+ guard let url = URL(string: "x-apple.systempreferences:com.apple.preference.security?\(anchor)") else { return }
+ NSWorkspace.shared.open(url)
+ }
+
private func abbreviatePath(_ path: String) -> String {
let home = NSHomeDirectory()
if path.hasPrefix(home) {
diff --git a/oAI/oAI-InfoPlist.xcstrings b/oAI/oAI-InfoPlist.xcstrings
index 62030c1..fb5f7cd 100644
--- a/oAI/oAI-InfoPlist.xcstrings
+++ b/oAI/oAI-InfoPlist.xcstrings
@@ -36,6 +36,54 @@
}
}
}
+ },
+ "NSCalendarsFullAccessUsageDescription" : {
+ "comment" : "Privacy - Calendars Full Access Usage Description",
+ "extractionState" : "extracted_with_value",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "new",
+ "value" : "oAI can read and create calendar events when you ask it to, if you enable Calendar access in Settings."
+ }
+ }
+ }
+ },
+ "NSContactsUsageDescription" : {
+ "comment" : "Privacy - Contacts Usage Description",
+ "extractionState" : "extracted_with_value",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "new",
+ "value" : "oAI can search your contacts when you ask it to, if you enable Contacts access in Settings."
+ }
+ }
+ }
+ },
+ "NSLocationWhenInUseUsageDescription" : {
+ "comment" : "Privacy - Location When In Use Usage Description",
+ "extractionState" : "extracted_with_value",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "new",
+ "value" : "oAI can use your current location to answer questions, if you enable Location & Maps access in Settings."
+ }
+ }
+ }
+ },
+ "NSRemindersFullAccessUsageDescription" : {
+ "comment" : "Privacy - Reminders Full Access Usage Description",
+ "extractionState" : "extracted_with_value",
+ "localizations" : {
+ "en" : {
+ "stringUnit" : {
+ "state" : "new",
+ "value" : "oAI can read and create reminders when you ask it to, if you enable Reminders access in Settings."
+ }
+ }
+ }
}
},
"version" : "1.1"
diff --git a/oAI/oAI.entitlements b/oAI/oAI.entitlements
index 0953aeb..97a7c31 100644
--- a/oAI/oAI.entitlements
+++ b/oAI/oAI.entitlements
@@ -8,5 +8,13 @@
com.apple.security.network.server
+ com.apple.security.personal-information.calendars
+
+ com.apple.security.personal-information.reminders
+
+ com.apple.security.personal-information.contacts
+
+ com.apple.security.personal-information.location
+