From 0f08fe883b60b2acb5e6536f8399cc94825ade86 Mon Sep 17 00:00:00 2001 From: Ronald Klarenbeek Date: Fri, 26 Dec 2025 20:39:30 +0100 Subject: [PATCH 1/8] feat(summary): add AI-powered message summary feature Add new ThunderAI summary functionality that generates concise summaries for email messages using the existing ThunderAI infrastructure. Includes a new content script that creates a summary pane in the message display, associated CSS styling, and backend integration for AI summary generation. The feature shows a loading indicator while generating the summary and falls back to showing truncated message content if the AI generation fails. --- messageDisplay/message-content-script.js | 105 ++++++++++++++++++++++ messageDisplay/message-content-styles.css | 20 +++++ mzta-background.js | 91 ++++++++++++++++++- 3 files changed, 215 insertions(+), 1 deletion(-) create mode 100644 messageDisplay/message-content-script.js create mode 100644 messageDisplay/message-content-styles.css diff --git a/messageDisplay/message-content-script.js b/messageDisplay/message-content-script.js new file mode 100644 index 00000000..30fc5763 --- /dev/null +++ b/messageDisplay/message-content-script.js @@ -0,0 +1,105 @@ +async function showSummaryPane() { + // Create the summary pane element + const summaryPane = document.createElement("div"); + summaryPane.className = "thunderai-summary-pane"; + + // Create the title element + const summaryTitle = document.createElement("div"); + summaryTitle.className = "thunderai-summary-title"; + summaryTitle.innerText = "ThunderAI Summary"; + + // Create a loading indicator + const loadingIndicator = document.createElement("div"); + loadingIndicator.className = "thunderai-summary-content"; + loadingIndicator.innerText = "Generating AI summary..."; + + // Create the content element (initially hidden) + const summaryContent = document.createElement("div"); + summaryContent.className = "thunderai-summary-content"; + summaryContent.style.display = 'none'; + + // Add title and loading indicator to the pane + summaryPane.appendChild(summaryTitle); + summaryPane.appendChild(loadingIndicator); + summaryPane.appendChild(summaryContent); + + // Insert it as the very first element in the message + document.body.insertBefore(summaryPane, document.body.firstChild); + + // Get the message content and generate summary + try { + const messageContent = getMessageContent(); + const aiSummary = await generateAISummary(messageContent); + + // Update the UI with the AI summary + loadingIndicator.style.display = 'none'; + summaryContent.innerText = aiSummary; + summaryContent.style.display = 'block'; + } catch (error) { + console.error("Error generating AI summary:", error); + loadingIndicator.innerText = "Failed to generate AI summary. Showing message preview instead."; + loadingIndicator.style.color = '#d70022'; + + // Fallback to showing truncated message content + const messageContent = getMessageContent(); + loadingIndicator.innerText += "\n\n" + truncateMessageContent(messageContent); + } +} + +function getMessageContent() { + // Get the main message content from the page + // This selects the main message body content + const messageBody = document.querySelector('.moz-text-flowed, .moz-text-plain, body'); + if (messageBody) { + return messageBody.textContent || messageBody.innerText || ''; + } + + // Fallback: get the entire body content + return document.body.textContent || document.body.innerText || ''; +} + +function truncateMessageContent(content) { + // Clean up the content by removing excessive whitespace and newlines + const cleanedContent = content.replace(/\s+/g, ' ').trim(); + + // Truncate to a reasonable length for preview + const maxLength = 500; + if (cleanedContent.length <= maxLength) { + return cleanedContent; + } + + return cleanedContent.substring(0, maxLength) + '...'; +} + +async function generateAISummary(messageContent) { + // Clean up the message content + const cleanedContent = messageContent.replace(/\s+/g, ' ').trim(); + + // Create a simple summary prompt + const summaryPrompt = `Please provide a concise summary of the following email message. The summary should be 3-5 sentences maximum and capture the main points: + +${cleanedContent} + +Summary:`; + + // Request AI summary from the background script + return new Promise((resolve, reject) => { + // Send message to background script to get AI summary + browser.runtime.sendMessage({ + command: "generate_summary", + content: cleanedContent, + prompt: summaryPrompt + }, (response) => { + if (response && response.summary) { + resolve(response.summary); + } else if (response && response.error) { + reject(new Error(response.error)); + } else { + reject(new Error("Failed to get AI summary")); + } + }); + }); +} + +// Call the function to show the pane +showSummaryPane(); \ No newline at end of file diff --git a/messageDisplay/message-content-styles.css b/messageDisplay/message-content-styles.css new file mode 100644 index 00000000..6a4019c8 --- /dev/null +++ b/messageDisplay/message-content-styles.css @@ -0,0 +1,20 @@ +.thunderai-summary-pane { + background-color: #f0f0f0; + color: #333; + font-weight: 400; + padding: 0.5rem; + margin-bottom: 1rem; + border-radius: 4px; + border: 1px solid #ddd; +} + +.thunderai-summary-title { + font-weight: bold; + margin-bottom: 0.5rem; + color: #d70022; +} + +.thunderai-summary-content { + font-size: 0.9rem; + line-height: 1.4; +} \ No newline at end of file diff --git a/mzta-background.js b/mzta-background.js index cbdfbc7c..3e7bf7f1 100644 --- a/mzta-background.js +++ b/mzta-background.js @@ -110,6 +110,13 @@ browser.composeScripts.register({ // Register the message display script for all newly opened message tabs. messenger.messageDisplayScripts.register({ js: [{ file: "js/mzta-compose-script.js" }], + css: [{ file: "messageDisplay/message-content-styles.css" }] +}); + +// Register our new ThunderAI summary script +messenger.messageDisplayScripts.register({ + js: [{ file: "messageDisplay/message-content-script.js" }], + css: [{ file: "messageDisplay/message-content-styles.css" }] }); // Inject script and CSS in all already open message tabs. @@ -125,6 +132,13 @@ for (let messageTab of messageTabs) { await browser.tabs.executeScript(messageTab.id, { file: "js/mzta-compose-script.js" }) + // Inject our ThunderAI summary script + await browser.tabs.executeScript(messageTab.id, { + file: "messageDisplay/message-content-script.js" + }) + await browser.tabs.insertCSS(messageTab.id, { + file: "messageDisplay/message-content-styles.css" + }); } catch (error) { console.error("[ThunderAI] Error injecting message display script:", error); console.error("[ThunderAI] Message tab:", messageTab.url); @@ -231,6 +245,31 @@ messenger.runtime.onMessage.addListener((message, sender, sendResponse) => { // handler function. if (message && message.hasOwnProperty("command")){ switch (message.command) { + case 'generate_summary': + async function _generate_summary(message) { + try { + // Get user preferences for AI connection + let prefs = await browser.storage.sync.get({ + connection_type: prefs_default.connection_type, + chatgpt_model: prefs_default.chatgpt_model, + chatgpt_api_key: prefs_default.chatgpt_api_key, + do_debug: prefs_default.do_debug + }); + + // Use the existing ThunderAI infrastructure + const summary = await generateAISummaryUsingThunderAIInfrastructure( + message.content, + message.prompt, + prefs + ); + + return { summary: summary }; + } catch (error) { + console.error("[ThunderAI] Error generating summary:", error); + return { error: "Failed to generate AI summary: " + error.message }; + } + } + return _generate_summary(message); // case 'chatgpt_open': // openChatGPT(message.prompt,message.action,message.tabId); // return true; @@ -1245,4 +1284,54 @@ async function processEmails(messages, addTagsAuto, spamFilter) { -browser.messages.onNewMailReceived.addListener(newEmailListener, !prefs_init.add_tags_auto_only_inbox); \ No newline at end of file +try { + browser.messages.onNewMailReceived.addListener(newEmailListener, !prefs_init.add_tags_auto_only_inbox); +} catch (e) { + taLog.log("Using browser.messages.onNewMailReceived.addListener with one agrument for Thunderbird 115."); + browser.messages.onNewMailReceived.addListener(newEmailListener); +} + +/** + * AI summary generation function using ThunderAI infrastructure + */ +async function generateAISummaryUsingThunderAIInfrastructure(content, prompt, prefs) { + // Import the special command class + const { mzta_specialCommand } = await import('./js/mzta-special-commands.js'); + + // Determine which LLM to use based on user preferences + const llmType = getConnectionType(prefs.connection_type, {}, ''); + + // Create a special command instance + const summaryCommand = new mzta_specialCommand({ + prompt: prompt, + llm: llmType, + custom_model: prefs.chatgpt_model, + do_debug: prefs.do_debug + }); + + // Initialize the worker + await summaryCommand.initWorker(); + + // Send the prompt and get the AI response + const aiResponse = await summaryCommand.sendPrompt(); + + // Clean up the response - extract just the summary content + const cleanedResponse = cleanAISummaryResponse(aiResponse); + + return cleanedResponse; +} + +/** + * Helper function to clean AI response + */ +function cleanAISummaryResponse(response) { + // Remove any markdown formatting or code blocks + let cleaned = response.replace(/```[\s\S]*?```/g, ''); + cleaned = cleaned.replace(/[\*#_~`]/g, ''); + cleaned = cleaned.replace(/\s+/g, ' ').trim(); + + // Remove any "Summary:" prefixes that the AI might add + cleaned = cleaned.replace(/^Summary:\s*/i, ''); + + return cleaned; +} From dc7c16a4e0da9c790b7e4e6a6bed1fcf4ded36d3 Mon Sep 17 00:00:00 2001 From: Ronald Klarenbeek Date: Fri, 26 Dec 2025 22:20:13 +0100 Subject: [PATCH 2/8] feat(summary): add auto-summary preference for message previews - Add new preference option to enable automatic AI summarization - Update all localization files with new preference text - Implement preference check in message display script - Add default preference setting in options configuration - Include preference toggle in options UI This adds a user-configurable option to automatically generate and display AI summaries when viewing email messages, with appropriate warnings about data transmission to AI services. --- _locales/cs/messages.json | 6 ++++++ _locales/de/messages.json | 25 ++++++++++++++++++++++++ _locales/en/messages.json | 20 +++++++++++++++++++ _locales/es/messages.json | 25 ++++++++++++++++++++++++ _locales/fr/messages.json | 25 ++++++++++++++++++++++++ _locales/it/messages.json | 25 ++++++++++++++++++++++++ _locales/pl/messages.json | 8 ++++++++ _locales/pt-br/messages.json | 6 ++++++ _locales/pt/messages.json | 8 ++++++++ _locales/ru/messages.json | 6 ++++++ _locales/zh_Hans/messages.json | 6 ++++++ messageDisplay/message-content-script.js | 8 ++++++++ options/mzta-options-default.js | 1 + options/mzta-options.html | 11 +++++++++++ 14 files changed, 180 insertions(+) diff --git a/_locales/cs/messages.json b/_locales/cs/messages.json index 1ab9589e..12d8fafb 100644 --- a/_locales/cs/messages.json +++ b/_locales/cs/messages.json @@ -1130,5 +1130,11 @@ }, "prefs_OptionText_get_calendar_event_Sparks_wrong_version": { "message": "Pro používání funkcí událostí v kalendáři a úloh, nainstalujte aktualizovanou verzi doplňku ThunderAI Sparks." + }, + "prefs_OptionText_auto_summary": { + "message": "Povolit automatické AI shrnutí pro náhledy zpráv" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Pokud je zaškrtnuto, ThunderAI automaticky vygeneruje a zobrazí AI shrnutí nad e-mailovými zprávami, když jsou otevřeny. Mějte na paměti, že to znamená, že všechny zprávy, které si prohlížíte, budou okamžitě odeslány do nakonfigurované AI služby." } } diff --git a/_locales/de/messages.json b/_locales/de/messages.json index efd4f508..0a01f4f1 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -1303,4 +1303,29 @@ "prefs_anthropic_temperature_Info": { "message": "Grad der Zufälligkeit in der Antwort. Der Standardwert ist 1,0. Der Bereich liegt zwischen 0,0 und 1,0. Verwenden Sie eine Temperatur näher an 0,0 für analytische Aufgaben oder Multiple-Choice-Fragen und näher an 1,0 für kreative und generative Aufgaben. Beachten Sie, dass die Ergebnisse selbst bei einer Temperatur von 0,0 nicht vollständig deterministisch sind." } + }, + "customPrompts_export_include_api_settings": { + "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!", + "description": "" + }, + "prefs_OptionText_auto_summary": { + "message": "Enable automatic AI summarization for message previews", + "description": "" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", + "description": "" + }, + "auto_summary_title": { + "message": "AI Summary", + "description": "" + }, + "auto_summary_generating": { + "message": "Generating summary...", + "description": "" + }, + "auto_summary_failed": { + "message": "Failed to generate summary", + "description": "" + } } diff --git a/_locales/en/messages.json b/_locales/en/messages.json index dc6f5b02..992989b1 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1808,5 +1808,25 @@ "customPrompts_export_include_api_settings": { "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!", "description": "" + }, + "prefs_OptionText_auto_summary": { + "message": "Enable automatic AI summarization for message previews", + "description": "" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", + "description": "" + }, + "auto_summary_title": { + "message": "AI Summary", + "description": "" + }, + "auto_summary_generating": { + "message": "Generating summary...", + "description": "" + }, + "auto_summary_failed": { + "message": "Failed to generate summary", + "description": "" } } diff --git a/_locales/es/messages.json b/_locales/es/messages.json index 1db8b9bf..f36367d4 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -1287,4 +1287,29 @@ "reset": { "message": "Reiniciar" } + }, + "customPrompts_export_include_api_settings": { + "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!", + "description": "" + }, + "prefs_OptionText_auto_summary": { + "message": "Enable automatic AI summarization for message previews", + "description": "" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", + "description": "" + }, + "auto_summary_title": { + "message": "AI Summary", + "description": "" + }, + "auto_summary_generating": { + "message": "Generating summary...", + "description": "" + }, + "auto_summary_failed": { + "message": "Failed to generate summary", + "description": "" + } } diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index c03ffae9..374e13d3 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -1303,4 +1303,29 @@ "reset": { "message": "Réinitialiser" } + }, + "customPrompts_export_include_api_settings": { + "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!", + "description": "" + }, + "prefs_OptionText_auto_summary": { + "message": "Enable automatic AI summarization for message previews", + "description": "" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", + "description": "" + }, + "auto_summary_title": { + "message": "AI Summary", + "description": "" + }, + "auto_summary_generating": { + "message": "Generating summary...", + "description": "" + }, + "auto_summary_failed": { + "message": "Failed to generate summary", + "description": "" + } } diff --git a/_locales/it/messages.json b/_locales/it/messages.json index 158a65e4..101fb21c 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -1303,4 +1303,29 @@ "prefs_anthropic_temperature_Info": { "message": "Quantità di casualità iniettata nella risposta. Il valore predefinito è 1,0. L'intervallo va da 0,0 a 1,0. Utilizza una temperatura più vicina a 0,0 per compiti analitici o a scelta multipla, e più vicina a 1,0 per compiti creativi e generativi. Nota che, anche con una temperatura di 0,0, i risultati non saranno completamente deterministici." } + }, + "customPrompts_export_include_api_settings": { + "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!", + "description": "" + }, + "prefs_OptionText_auto_summary": { + "message": "Enable automatic AI summarization for message previews", + "description": "" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", + "description": "" + }, + "auto_summary_title": { + "message": "AI Summary", + "description": "" + }, + "auto_summary_generating": { + "message": "Generating summary...", + "description": "" + }, + "auto_summary_failed": { + "message": "Failed to generate summary", + "description": "" + } } diff --git a/_locales/pl/messages.json b/_locales/pl/messages.json index c55f6d1d..45dc1346 100644 --- a/_locales/pl/messages.json +++ b/_locales/pl/messages.json @@ -890,5 +890,13 @@ }, "placeholder_selected_html": { "message": "Zaznaczony HTML" + }, + "prefs_OptionText_auto_summary": { + "message": "Włącz automatyczne podsumowanie AI dla podglądów wiadomości", + "description": "" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Jeśli zaznaczone, ThunderAI automatycznie wygeneruje i wyświetli podsumowania AI nad wiadomościami e-mail, gdy zostaną otwarte. Pamiętaj, że oznacza to, że wszystkie wiadomości, które przeglądasz, zostaną natychmiast wysłane do skonfigurowanej usługi AI.", + "description": "" } } diff --git a/_locales/pt-br/messages.json b/_locales/pt-br/messages.json index 9341402d..bdb71ff9 100644 --- a/_locales/pt-br/messages.json +++ b/_locales/pt-br/messages.json @@ -836,5 +836,11 @@ }, "SpamFilter_PageTitle": { "message": "Gerenciar configurações do filtro de spam" + }, + "prefs_OptionText_auto_summary": { + "message": "Mostrar resumo automático na visualização de mensagens" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Se marcado, um resumo gerado por IA será exibido automaticamente acima das mensagens na visualização." } } diff --git a/_locales/pt/messages.json b/_locales/pt/messages.json index f6656907..fdd892a0 100644 --- a/_locales/pt/messages.json +++ b/_locales/pt/messages.json @@ -172,5 +172,13 @@ }, "chatgpt_win_send": { "message": "Enviar" + }, + "prefs_OptionText_auto_summary": { + "message": "Ativar resumo automático de IA para pré-visualizações de mensagens", + "description": "" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Se ativado, o ThunderAI gerará e mostrará automaticamente resumos de IA acima das mensagens de e-mail quando forem abertas. Note que isso significa que todas as mensagens que você visualizar serão enviadas imediatamente para o serviço de IA configurado.", + "description": "" } } diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json index a4350b2b..7db20bbd 100644 --- a/_locales/ru/messages.json +++ b/_locales/ru/messages.json @@ -1205,5 +1205,11 @@ }, "OpenAIComp_ClearModelsList_Confirm": { "message": "Вы уверены, что хотите очистить список моделей? Это действие не может быть отменено." + }, + "prefs_OptionText_auto_summary": { + "message": "Показывать автоматическое резюме в просмотре сообщений" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Если отмечено, резюме, сгенерированное ИИ, будет автоматически отображаться над сообщениями в просмотре." } } diff --git a/_locales/zh_Hans/messages.json b/_locales/zh_Hans/messages.json index deab75b7..49f15864 100644 --- a/_locales/zh_Hans/messages.json +++ b/_locales/zh_Hans/messages.json @@ -889,5 +889,11 @@ }, "customPrompts_form_label_use_diff_viewer_title": { "message": "当操作设置为“替换文本”时,可以选择差异查看器。" + }, + "prefs_OptionText_auto_summary": { + "message": "在消息预览中显示自动摘要" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "如果选中,AI生成的摘要将自动显示在消息预览上方。" } } diff --git a/messageDisplay/message-content-script.js b/messageDisplay/message-content-script.js index 30fc5763..b5ac35b8 100644 --- a/messageDisplay/message-content-script.js +++ b/messageDisplay/message-content-script.js @@ -1,4 +1,12 @@ async function showSummaryPane() { + // Check if auto-summary is enabled in user preferences + const result = await browser.storage.sync.get('auto_summary_enabled'); + + // If auto-summary is disabled or not set, don't show anything + if (!result.auto_summary_enabled) { + return; + } + // Create the summary pane element const summaryPane = document.createElement("div"); summaryPane.className = "thunderai-summary-pane"; diff --git a/options/mzta-options-default.js b/options/mzta-options-default.js index eb8cda9c..fc736313 100644 --- a/options/mzta-options-default.js +++ b/options/mzta-options-default.js @@ -132,5 +132,6 @@ export const prefs_default = { spamfilter_threshold: 70, spamfilter_enabled_accounts: [], summarize: false, + auto_summary_enabled: false, ...generated_prefs } diff --git a/options/mzta-options.html b/options/mzta-options.html index c809c1e3..08a143fa 100644 --- a/options/mzta-options.html +++ b/options/mzta-options.html @@ -125,6 +125,17 @@ + + + + + + __MSG_prefs_OptionText_add_tags__
From 80674c2e70dbd2eee70e16dc91d427110d5093e9 Mon Sep 17 00:00:00 2001 From: Ronald Klarenbeek Date: Fri, 2 Jan 2026 22:42:46 +0100 Subject: [PATCH 3/8] feat(summary): implement new configuration model, fix multilingual support and fix error display - Introduce localized UI strings for auto-summary feature across multiple languages - Standardize error messages and implement consistent error propagation - Refactor summary generation to align with v3.8.0 settings architecture - Enhance user experience with localized loading and error states - Improve code reliability through structured error handling and cleanup --- _locales/en/messages.json | 132 +-- _locales/es/messages.json | 52 +- _locales/fr/messages.json | 69 +- _locales/sv/messages.json | 1297 +--------------------- messageDisplay/message-content-script.js | 22 +- mzta-background.js | 64 +- 6 files changed, 189 insertions(+), 1447 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 992989b1..77300ad7 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1003,34 +1003,6 @@ "message": "Extract all relevant details required to generate a calendar event from the following text. The extracted information should include:\n- Event Title\n- Start Date and Time (including timezone, if specified)\n- End Date and Time (including timezone, if specified)\n- Full day (if mentioned)\n- Attendees\nEnsure the data is formatted clearly and consistently so that it can be directly used for creating a calendar event.\nIf there are relative time references, consider that the date and time of the email are \"{%mail_datetime%}\". Calculate the start date and time based on this reference. If the calculated start date and time are earlier than \"{%current_datetime%}\", recalculate the start date and time using \"{%current_datetime%}\" as the base.\nIf the duration is not specified, set it to one hour.\nThese are the attendees: {%author%}, {%recipients%}, {%cc_list%}. If present, exclude my address: {%account_email_address%}.\nIf you're not able to get one or more of the required information, please respond with an empty string.\nGenerate a response in JSON format only. Do not include any additional text or explanations; provide only the JSON. Here is the format to be used:\n{\n\"startDate\": \"YYYYMMDDTHHMMSS\",\n\"endDate\": \"YYYYMMDDTHHMMSS\",\n\"summary\": \"Calendar event summary here\",\n\"forceAllDay\": false,\n\"attendees\": [attendee1@example.com,attendee2@example.com,attendee3@example.com]\n}\nHere's the text:\"{%selected_text%}\"", "description": "" }, - "Summarize_prompt_prefs_title": { - "message": "Add Summarization Options", - "description": "" - }, - "prompt_summarize": { - "message": "Summarize this email or these emails", - "description": "" - }, - "prompt_summarize_full_text": { - "message": "You are an assistant that summarizes email conversations.\n\nGiven an email thread, produce a concise, accurate summary that captures:\n\n- The main topic or purpose of the conversation\n- Key decisions, conclusions, or agreements\n- Important questions, requests, or action items\n- Who is responsible for each action item (if stated)\n\nOmit greetings, signatures, quoted text, and redundant back-and-forth.\nDo not add assumptions or information not present in the emails.\n\nWrite the summary in clear, neutral language suitable for a busy professional.", - "description": "" - }, - "prompt_summarize_email_template": { - "message": "Summarize email template", - "description": "" - }, - "prompt_summarize_email_template_full_text": { - "message": "From: {%author%}\nTo: {%recipients%}\nCC: {%cc_list%}\nSubject: {%mail_subject%}\nDate: {%mail_datetime%}\nAttachments:\n{%mail_attachments_info%}\n\nBody:\n{%mail_text_body%}", - "description": "" - }, - "prompt_summarize_email_separator": { - "message": "Email separator", - "description": "" - }, - "prompt_summarize_email_separator_full_text": { - "message": "\n\n---------- NEXT EMAIL ----------\n\n", - "description": "" - }, "prompt_get_task": { "message": "Add a new task", "description": "" @@ -1095,22 +1067,6 @@ "message": "You can change the prompt as you wish, but the response received from the AI must be in JSON format as specified in the default prompt!", "description": "" }, - "prefs_OptionText_Summarize_infoline2": { - "message": "You can change the prompt as you wish, the first field is the main prompt, the second field is the template for a single mail. The list of emails will be appended to the main prompt. Emails will be separated by the separator specified in the third field.", - "description": "" - }, - "prefs_OptionText_Summarize_main_prompt": { - "message": "The main prompt describing the task to be performed on all selected emails:", - "description": "" - }, - "prefs_OptionText_Summarize_email_template": { - "message": "The template for a single email:", - "description": "" - }, - "prefs_OptionText_Summarize_email_separator": { - "message": "The separator between emails:", - "description": "" - }, "prefs_OptionText_get_calendar_event_Sparks_not_present": { "message": "To use the calendar event and task features, please install the ThunderAI Sparks addon.", "description": "" @@ -1211,10 +1167,6 @@ "message": "If checked, the Model and API specified below will be used for adding tags to emails, regardless the one choosen in the ThunderAI options page.", "description": "" }, - "prefs_OptionText_get_calendar_event_use_specific_integration_Info": { - "message": "If checked, the Model and API specified below will be used for creating calendar events, regardless the one choosen in the ThunderAI options page.", - "description": "" - }, "placeholder_thunderai_def_sign": { "message": "Default signature as defined in ThunderAI options.", "description": "" @@ -1243,22 +1195,6 @@ "message": "Manage spam filter settings", "description": "" }, - "prefs_OptionText_summarize": { - "message": "Summarize mail", - "description": "" - }, - "prefs_OptionText_summarize_use_specific_integration_Info": { - "message": "If checked, the Model and API specified below will be used for summarizing email(s), regardless the one choosen in the ThunderAI options page.", - "description": "" - }, - "prefs_OptionText_summarize_Info": { - "message": "If checked, adds an option to context menu to summarize mail.", - "description": "" - }, - "prefs_OptionText_btnManageSummarizeInfo": { - "message": "Manage summarize settings", - "description": "" - }, "SpamFilter_PageTitle": { "message": "Manage Spam Filter Settings", "description": "" @@ -1283,18 +1219,6 @@ "message": "Spam Filter Options", "description": "" }, - "Summarize_PageTitle": { - "message": "Manage Summarize Settings", - "description": "" - }, - "Summarize_info_default": { - "message": "In this page you can modify the default prompt used to summarize emails.", - "description": "" - }, - "Summarize_prompt_text_title": { - "message": "Current prompt text", - "description": "" - }, "prefs_OptionText_use_specific_integration": { "message": "Use specific Model and API", "description": "" @@ -1355,11 +1279,11 @@ "message": "Report Date", "description": "" }, - "yes_string": { + "spamfilter_moved": { "message": "Yes", "description": "" }, - "no_string": { + "spamfilter_not_moved": { "message": "No", "description": "" }, @@ -1371,8 +1295,20 @@ "message": "Analyze for spam", "description": "" }, - "context_menu_mzta-summarize": { - "message": "Summarize", + "prefs_OptionText_add_tags_context_menu": { + "message": "Show the \"Add tags\" context menu item", + "description": "" + }, + "prefs_OptionText_add_tags_context_menu_Info": { + "message": "If checked, the \"Add tags\" context menu item will be shown when right-clicking on an email in the messages list.", + "description": "" + }, + "prefs_OptionText_spamfilter_context_menu": { + "message": "Show the \"Analyze for spam\" context menu item", + "description": "" + }, + "prefs_OptionText_spamfilter_context_menu_Info": { + "message": "If checked, the \"Analyze for spam\" context menu item will be shown when right-clicking on an email in the messages list.", "description": "" }, "noActiveCalendar": { @@ -1427,16 +1363,12 @@ "message": "Problems setting CORS?", "description": "" }, - "CORS_alternative_2_new": { - "message": "Press the button below to give the permission to the current host to avoid any CORS problem.", + "CORS_alternative_2": { + "message": "Press the button below to give the permission to avoid any CORS problem.", "description": "" }, - "CORS_give_host_perm": { - "message": "Give permission to the current host", - "description": "" - }, - "CORS_localhost_warn": { - "message": "If you are using localhost or 127.0.0.1 because the AI server is hosted on your PC, the permission is required.", + "CORS_give_allurls_perm": { + "message": "Give \"all URLs\" permission", "description": "" }, "prefs_OptionText_composing_plain_text": { @@ -1805,28 +1737,28 @@ "message": "You have denied the optional permission needed to fetch models for this integration.", "description": "" }, - "customPrompts_export_include_api_settings": { - "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!", - "description": "" - }, "prefs_OptionText_auto_summary": { "message": "Enable automatic AI summarization for message previews", "description": "" }, "prefs_OptionText_auto_summary_Info": { - "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", - "description": "" + "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", + "description": "" }, "auto_summary_title": { - "message": "AI Summary", - "description": "" + "message": "ThunderAI Summary", + "description": "Title for the auto-summary pane" }, "auto_summary_generating": { - "message": "Generating summary...", - "description": "" + "message": "Generating AI summary...", + "description": "Loading text shown while generating summary" }, "auto_summary_failed": { - "message": "Failed to generate summary", - "description": "" + "message": "Failed to generate AI summary. Please confirm your settings and try again.", + "description": "Error message when summary generation fails" + }, + "auto_summary_prompt": { + "message": "Please provide a concise summary of the following email message. The summary should be 3-5 sentences maximum and capture the main points:\n\n", + "description": "Prompt template for AI summary generation" } } diff --git a/_locales/es/messages.json b/_locales/es/messages.json index f36367d4..86df6187 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -956,10 +956,10 @@ "Report_Date": { "message": "Fecha del informe" }, - "yes_string": { + "spamfilter_moved": { "message": "Si" }, - "no_string": { + "spamfilter_not_moved": { "message": "No" }, "context_menu_mzta-add-tags": { @@ -968,6 +968,18 @@ "context_menu_mzta-spamfilter": { "message": "Analizar el spam" }, + "prefs_OptionText_add_tags_context_menu": { + "message": "Mostrar el elemento del menú contextual “Añadir etiquetas”" + }, + "prefs_OptionText_add_tags_context_menu_Info": { + "message": "Si está marcado, el elemento del menú contextual “Añadir etiquetas” se mostrará al hacer clic derecho en un correo electrónico de la lista de mensajes." + }, + "prefs_OptionText_spamfilter_context_menu": { + "message": "Mostrar el elemento del menú contextual “Analizar el spam”" + }, + "prefs_OptionText_spamfilter_context_menu_Info": { + "message": "Si está marcado, el elemento del menú contextual “Analizar el spam” se mostrará al hacer clic derecho en un correo electrónico de la lista de mensajes." + }, "noActiveCalendar": { "message": "¡No se encontró un calendario editable!" }, @@ -1007,6 +1019,12 @@ "CORS_alternative_1": { "message": "¿Problemas al configurar CORS?" }, + "CORS_alternative_2": { + "message": "Presiona el botón a continuación para otorgar el permiso y evitar cualquier problema de CORS." + }, + "CORS_give_allurls_perm": { + "message": "Otorgar permiso “all URLs”" + }, "prefs_OptionText_composing_plain_text": { "message": "Redactando en texto plano" }, @@ -1284,32 +1302,26 @@ "Anthropic_System_Prompt": { "message": "Prompt del sistema" }, - "reset": { - "message": "Reiniciar" - } - }, - "customPrompts_export_include_api_settings": { - "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!", - "description": "" - }, "prefs_OptionText_auto_summary": { - "message": "Enable automatic AI summarization for message previews", - "description": "" + "message": "Habilitar resumen automático de IA para vistas previas de mensajes" }, "prefs_OptionText_auto_summary_Info": { - "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", - "description": "" + "message": "Si está marcado, ThunderAI generará y mostrará automáticamente resúmenes de IA sobre los mensajes de correo electrónico cuando se abran. Tenga en cuenta que esto significa que todos los mensajes que previsualice se enviarán inmediatamente al servicio de IA configurado." }, "auto_summary_title": { - "message": "AI Summary", - "description": "" + "message": "Resumen de ThunderAI", + "description": "Título del panel de resumen automático" }, "auto_summary_generating": { - "message": "Generating summary...", - "description": "" + "message": "Generando resumen de IA...", + "description": "Texto de carga mostrado mientras se genera el resumen" }, "auto_summary_failed": { - "message": "Failed to generate summary", - "description": "" + "message": "Error al generar el resumen de IA. Verifica tu configuración e inténtalo de nuevo.", + "description": "Mensaje de error cuando falla la generación del resumen" + }, + "auto_summary_prompt": { + "message": "Proporciona un resumen conciso del siguiente mensaje de correo electrónico. El resumen debe tener un máximo de 3-5 oraciones y capturar los puntos principales:\n\n", + "description": "Plantilla de prompt para la generación de resúmenes de IA" } } diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 374e13d3..dd71b608 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -327,6 +327,9 @@ "chagpt_api_send_button": { "message": "Utilisation du modèle" }, + "chagpt_api_connecting": { + "message": "Tentative de connexion à OpenAI ChatGPT en utilisant la clé API fournie" + }, "Debug": { "message": "Debug" }, @@ -360,6 +363,12 @@ "ollama_empty_model": { "message": "Vous n'avez pas choisi de modèle pour l'API Ollama. Veuillez en choisir un sur la page des options." }, + "ollama_api_connecting": { + "message": "Tentative de connexion au serveur local Ollama en utilisant l'hôte" + }, + "andModel": { + "message": "et le modèle" + }, "error_connection_interrupted": { "message": "La connexion au serveur a été interrompue de manière inattendue" }, @@ -390,6 +399,9 @@ "OpenAIComp_empty_model": { "message": "Vous n'avez pas choisi de modèle pour l'API compatible OpenAI. Veuillez en choisir un dans la page des options." }, + "OpenAIComp_api_connecting": { + "message": "Tentative de connexion au serveur local de l'API compatible OpenAI en utilisant l'hôte" + }, "OpenAIComp_api_request_failed": { "message": "La requête de l'API compatible OpenAI a échoué" }, @@ -669,6 +681,9 @@ "google_gemini_api_request_failed": { "message": "La requête API Google Gemini a échoué" }, + "google_gemini_api_connecting": { + "message": "Tentative de connexion à Google Gemini en utilisant la clé API fournie" + }, "google_gemini_empty_apikey": { "message": "Vous n'avez pas ajouté de clé API pour l'API Google Gemini. Veuillez en insérer une dans la page des options." }, @@ -777,7 +792,7 @@ "Moved_to_Spam": { "message": "Déplacé dans le spam" }, - "no_string": { + "spamfilter_not_moved": { "message": "Non" }, "spamfilter_no_reports": { @@ -786,6 +801,9 @@ "SpamFilter_PageTitle": { "message": "Gérer les paramètres du filtre anti-spam" }, + "sparks_not_installed": { + "message": "ThunderAI Sparks non installé !" + }, "SpamFilter_info_default": { "message": "Sur cette page, vous pouvez modifier l'invite par défaut utilisée pour détecter les e-mails indésirables." }, @@ -798,7 +816,7 @@ "SpamReport_Title": { "message": "Rapports du filtre anti-spam" }, - "yes_string": { + "spamfilter_moved": { "message": "Oui" }, "prefs_OptionText_add_tags_auto_Info": { @@ -840,6 +858,12 @@ "context_menu_mzta-add-tags": { "message": "Ajouter des étiquettes" }, + "prefs_OptionText_spamfilter_context_menu": { + "message": "Afficher l'option \"Analyser comme spam\" dans le menu contextuel" + }, + "prefs_OptionText_spamfilter_context_menu_Info": { + "message": "Si coché, l'option \"Analyser comme spam\" apparaîtra lors d’un clic droit sur un e-mail dans la liste des messages." + }, "noActiveCalendar": { "message": "Aucun calendrier modifiable trouvé !" }, @@ -855,6 +879,9 @@ "prefs_OptionText_calendar_enforce_timezone": { "message": "Forcer le fuseau horaire spécifié" }, + "prefs_OptionText_add_tags_context_menu_Info": { + "message": "Si coché, l'option \"Ajouter des étiquettes\" apparaîtra lors d’un clic droit sur un e-mail dans la liste des messages." + }, "chatgpt_win_diff_title": { "message": "Différences entre le texte original et le texte modifié" }, @@ -870,6 +897,9 @@ "apiwebchat_error": { "message": "Erreur" }, + "prefs_OptionText_add_tags_context_menu": { + "message": "Afficher l'option \"Ajouter des étiquettes\" dans le menu contextuel" + }, "apiwebchat_use_this_answer": { "message": "Utiliser cette réponse" }, @@ -900,6 +930,12 @@ "CORS_alternative_1": { "message": "Des problèmes pour configurer le CORS ?" }, + "CORS_alternative_2": { + "message": "Appuie sur le bouton ci-dessous pour accorder la permission afin d'éviter tout problème lié au CORS." + }, + "CORS_give_allurls_perm": { + "message": "Accorde la permission \"tous les URLs\"" + }, "remember_CORS": { "message": "N'oublie pas, tu dois configurer les paramètres CORS sur le serveur !" }, @@ -1300,32 +1336,27 @@ "prefs_anthropic_temperature_Info": { "message": "Degré d'aléa injecté dans la réponse. La valeur par défaut est 1,0. La plage de valeurs s'étend di 0,0 à 1,0. Utilisez une température proche de 0,0 pour des tâches analytiques ou des choix multiples, et proche de 1,0 pour des tâches créatives et génératives. Notez que même avec une température de 0,0, les résultats ne seront pas totalement déterministes." }, - "reset": { - "message": "Réinitialiser" - } - }, - "customPrompts_export_include_api_settings": { - "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!", - "description": "" - }, "prefs_OptionText_auto_summary": { - "message": "Enable automatic AI summarization for message previews", - "description": "" + "message": "Activer le résumé automatique par IA pour les aperçus de messages" }, "prefs_OptionText_auto_summary_Info": { - "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", + "message": "Si coché, ThunderAI générera et affichera automatiquement des résumés par IA au-dessus des messages lorsque vous les ouvrirez. Notez que cela signifie que tous les messages que vous prévisualisez seront immédiatement envoyés au service IA configuré.", "description": "" }, "auto_summary_title": { - "message": "AI Summary", - "description": "" + "message": "Résumé ThunderAI", + "description": "Titre du panneau de résumé automatique" }, "auto_summary_generating": { - "message": "Generating summary...", - "description": "" + "message": "Génération du résumé IA...", + "description": "Texte de chargement affiché pendant la génération du résumé" }, "auto_summary_failed": { - "message": "Failed to generate summary", - "description": "" + "message": "Échec de la génération du résumé IA. Veuillez vérifier vos paramètres et réessayer.", + "description": "Message d'erreur lorsque la génération du résumé échoue" + }, + "auto_summary_prompt": { + "message": "Veuillez fournir un résumé concis du message suivant. Le résumé doit comporter au maximum 3 à 5 phrases et capturer les points principaux :\n\n", + "description": "Modèle d'invite pour la génération de résumés IA" } } diff --git a/_locales/sv/messages.json b/_locales/sv/messages.json index 2472ef2d..cee60b99 100644 --- a/_locales/sv/messages.json +++ b/_locales/sv/messages.json @@ -54,7 +54,7 @@ "message": "Försöka igen" }, "placeholder_selected_html": { - "message": "Markerad HTML" + "message": "Vald HTML" }, "placeholder_additional_text": { "message": "Ytterligare text" @@ -68,1289 +68,26 @@ "prefs_OptionText_chatgpt_win_width": { "message": "Bredd" }, - "prompt_summarize_this": { - "message": "Sammanfatta detta" + "prefs_OptionText_auto_summary": { + "message": "Aktivera automatisk AI-sammanfattning för meddelandeförhandsvisningar" }, - "prompt_translate_this": { - "message": "Översätt detta" + "prefs_OptionText_auto_summary_Info": { + "message": "Om markerad kommer ThunderAI att generera och visa AI-sammanfattningar ovanför e-postmeddelanden när de öppnas. Observera att detta innebär att alla meddelanden du förhandsgranskar kommer att skickas omedelbart till den konfigurerade AI-tjänsten." }, - "more_info_string": { - "message": "Mer information" + "auto_summary_title": { + "message": "ThunderAI Sammanfattning", + "description": "Titel för den automatiska sammanfattningspanelen" }, - "prompt_classify": { - "message": "Klassificera" + "auto_summary_generating": { + "message": "Genererar AI-sammanfattning...", + "description": "Laddningstext som visas medan sammanfattningen genereras" }, - "customPrompts_reloading_menus": { - "message": "Laddar om menyer..." + "auto_summary_failed": { + "message": "Misslyckades med att generera AI-sammanfattning. Kontrollera dina inställningar och försök igen.", + "description": "Felmeddelande när sammanfattningsgenereringen misslyckas" }, - "customPrompts_form_required_fields": { - "message": "Obligatoriska fält" - }, - "customPrompts_add_to_menu_reading": { - "message": "Läser ett e-postmeddelande" - }, - "customPrompts_add_to_menu_composing": { - "message": "Skriver ett e-postmeddelande" - }, - "chatgpt_win_working": { - "message": "Arbete pågår..." - }, - "chatgpt_win_job_completed": { - "message": "Färdigt!" - }, - "chatgpt_win_job_completed_select": { - "message": "Markera den text du vill använda och klicka på knappen." - }, - "chatgpt_win_get_answer": { - "message": "Använd det valda svaret" - }, - "prefs_OptionText_release_notes": { - "message": "Versionsinformation" - }, - "prefsInfoTitle": { - "message": "Viktig information" - }, - "placeholder_tags_current_email": { - "message": "E-posttaggar" - }, - "placeholder_tags_full_list": { - "message": "Befintliga taggar" - }, - "prefs_OptionText_add_tags_maxnum": { - "message": "Maximalt antal taggar" - }, - "prefs_OptionText_add_tags_maxnum_Info": { - "message": "Det maximala antalet taggar som föreslås av AI:n. Ställ den på 0 om du inte vill begränsa antalet taggar." - }, - "prompt_add_tags_maxnum": { - "message": "Begränsa antalet taggar till" - }, - "prefs_OptionText_add_tags_hide_exclusions": { - "message": "Dölj uteslutna taggar" - }, - "prefs_OptionText_add_tags_hide_exclusions_Info": { - "message": "Om markerad kommer taggarna som finns i undantagslistan att döljas i bekräftelsedialogrutan." - }, - "prefs_OptionText_btnManageTagsInfo": { - "message": "Hantera tagginställningar" - }, - "AddTags_PageTitle": { - "message": "Hantera tagginställningar" - }, - "AddTags_excl_list_title": { - "message": "Undantagslista" - }, - "AddTags_excl_list_infoline": { - "message": "Detta är en lista över taggar som inte får läggas till i e-postmeddelanden." - }, - "save": { - "message": "Spara" - }, - "reset_default": { - "message": "Återställ till standard" - }, - "reset": { - "message": "Återställ" - }, - "addtags_excl_list_infoline2": { - "message": "Lägg till ett ord per rad, eller separera med kommatecken." - }, - "addtags_dialog_title": { - "message": "Lägg till taggar i e-postmeddelandet" - }, - "addtags_exclude_tag": { - "message": "Uteslut tagg" - }, - "addtags_no_tags_received": { - "message": "Inga taggar mottagna från AI:n." - }, - "addtags_no_valid_tags": { - "message": "Inga giltiga taggar hittades efter filtrering med undantagslistan." - }, - "thunderai_error_title": { - "message": "ThunderAI-fel" - }, - "thunderai_warning_title": { - "message": "ThunderAI-varning" - }, - "prefs_OptionText_add_tags_first_uppercase_Info": { - "message": "Om markerad kommer taggarna att ställas in på gemener med endast den första bokstaven som versal." - }, - "prefs_OptionText_add_tags_first_uppercase": { - "message": "Första bokstaven som versal" - }, - "prompt_reply": { - "message": "Svara på detta e-postmeddelande" - }, - "prompt_reply_advanced": { - "message": "Svara på denna tråd" - }, - "prompt_reply_custom_command": { - "message": "Svara med kommando" - }, - "prompt_rewrite_polite": { - "message": "Skriv om artigt" - }, - "prompt_rewrite_formal": { - "message": "Skriv om formellt" - }, - "customPrompts_managePrompts": { - "message": "Hantera promptar" - }, - "prompt_lang": { - "message": "Svara på" - }, - "customPrompts_start_saving": { - "message": "Sparar promptar..." - }, - "customPrompts_reindexing_list": { - "message": "Omindexerar listan..." - }, - "customPrompts_filtering_prompts": { - "message": "Filtrerar promptar..." - }, - "customPrompts_saving_default_prompts": { - "message": "Sparar standardpromptar..." - }, - "customPrompts_saving_custom_prompts": { - "message": "Sparar anpassade promptar..." - }, - "customPrompts_saved": { - "message": "Promptar sparade!" - }, - "customPrompts_form_label_ID": { - "message": "Id" - }, - "customPrompts_form_label_ID_rules": { - "message": "Måste vara unikt, med gemener och utan mellanslag" - }, - "customPrompts_form_label_Text": { - "message": "Prompttext" - }, - "customPrompts_form_label_need_selected": { - "message": "Textval behövs" - }, - "customPrompts_form_label_need_signature": { - "message": "Lägg alltid till signaturen" - }, - "customPrompts_form_label_need_custom_text": { - "message": "Be om ytterligare text" - }, - "customPrompts_form_label_use_diff_viewer": { - "message": "Aktivera visaren för textjämförelse" - }, - "customPrompts_form_label_use_diff_viewer_title": { - "message": "Textjämförelsevisaren kan väljas när åtgärden är inställd på \"Ersätt text\"." - }, - "customPrompts_btnAddNewCommit": { - "message": "Lägg till prompten" - }, - "customPrompts_add_to_menu": { - "message": "Lägg till i meny" - }, - "customPrompts_close_button": { - "message": "Stäng-knapp" - }, - "customPrompts_do_reply": { - "message": "Svara" - }, - "customPrompts_substitute_text": { - "message": "Ersätt text" - }, - "chatgpt_textarea_not_found_error": { - "message": "Det verkar som att ChatGPT-sidan tar för lång tid att ladda. Om den är klar klickar du på knappen till höger. Om problemet kvarstår kontrollerar du tjänstens status." - }, - "chatgpt_sendbutton_not_found_error": { - "message": "Klicka på skicka-knappen för att skicka in prompten." - }, - "chatgpt_user_not_logged_in": { - "message": "Du är inte inloggad på ChatGPT. Logga in med dina inloggningsuppgifter, stäng ChatGPT-fönstret och upprepa sedan åtgärden du försökte göra. Du kommer att förbli inloggad efteråt." - }, - "chatgpt_win_model_warning": { - "message": "Av någon anledning är det inte möjligt att verifiera om rätt modell är laddad. För tillfället kan du trycka på den blå knappen för att fortsätta." - }, - "chatgpt_win_custom_text": { - "message": "Infoga här den ytterligare texten för prompten." - }, - "chatgpt_force_completion": { - "message": "tvinga slutförande" - }, - "prompt_this": { - "message": "Prompt detta" - }, - "prompt_string": { - "message": "Prompt" - }, - "customPrompts_managePrompts_info_default": { - "message": "Standardpromptar kan inte redigeras. Du kan inaktivera dem och sedan kopiera prompttexten och klistra in den i en ny för att skapa en modifierad version." - }, - "customPrompts_managePrompts_info_default_2": { - "message": "Du kan importera och exportera promptar. Befintliga promptar med samma ID kommer att skrivas över. Promptar med nya ID:n kommer att läggas till." - }, - "customPrompts_managePrompts_info_default_3": { - "message": "Om allt är korrekt, klicka på knappen \"Spara alla\" efter importen." - }, - "chatgpt_force_completion_title": { - "message": "Klicka här för att visa knappen \"Använd senaste svar\" om ChatGPT har slutfört sitt arbete men knappen inte har visats." - }, - "msg_prompt_too_long": { - "message": "Texten du angav är för lång. Du måste förkorta den." - }, - "prefs_status_page": { - "message": "tjänstestatus" - }, - "prefs_OptionText_chatgpt_win_text": { - "message": "AI-chattfönstrets dimensioner" - }, - "prefs_OptionText_default_sign_name": { - "message": "Standardsignaturnamn" - }, - "prefs_OptionText_default_chatgpt_lang": { - "message": "Standardspråk för svaren" - }, - "prefs_OptionText_reply_all": { - "message": "Svara alla" - }, - "prefs_OptionText_reply_sender": { - "message": "Svara till avsändaren" - }, - "prefs_OptionText_reply_type": { - "message": "Svarstyp" - }, - "prefs_OptionText_reply_type_Info": { - "message": "Detta är standardsvarstypen som används när du svarar på ett e-postmeddelande. Du kan välja den andra typen senare i svarsdialogrutan." - }, - "prefs_OptionText_btnManagePrompts": { - "message": "Hantera dina promptar" - }, - "prefs_OptionText_btnManageCustomDataPH": { - "message": "Hantera dina dataplatshållare" - }, - "prefsInfoDesc_1": { - "message": "Det kan hända att ChatGPT:s webbgränssnitt ändras på ett sätt som stör hur tillägget fungerar. Kontrollera sidan \"Tjänststatus\" som är länkad längst ner på den här sidan. Kom också ihåg att första gången du använder ThunderAI måste du logga in på ChatGPT." - }, - "prefsInfoDesc_2": { - "message": "För att använda ChatGPT API behöver du en OpenAI ChatGPT API-nyckel och måste välja en modell." - }, - "prefsInfoDesc_3": { - "message": "För att använda integrationen med Ollama måste du konfigurera en lokal Ollama-server. När servern är igång anger du dess adress i det angivna fältet i applikationen. För att säkerställa korrekt kommunikation mellan ThunderAI och Ollama-servern, kom ihåg att ange OLLAMA_ORIGINS=moz-extension://*." - }, - "prefsInfoDesc_4": { - "message": "För att använda den här integrationen behöver du konfigurera en lokal server som är kompatibel med OpenAI API, som LM Studio. När servern är igång anger du dess adress i det angivna fältet i applikationen. För att säkerställa korrekt kommunikation mellan ThunderAI och den lokala servern, kom ihåg att ställa in CORS-inställningarna korrekt." - }, - "prefsInfoDesc_5": { - "message": "Kom ihåg att du kan öppna ThunderAI-menyn med kortkommandot CTRL+ALT+A." - }, - "prefsInfoDesc_6": { - "message": "Du kan ändra genvägen genom att klicka på kugghjulsikonen längst upp till höger på den här sidan och välja \"Hantera genväg för tillägg\"." - }, - "prefsDonation_1": { - "message": "Gillar du det här tillägget?" - }, - "prefsDonation_2": { - "message": "Överväg att göra en donation!" - }, - "backToOptionsText": { - "message": "Alternativ" - }, - "TranslateText": { - "message": "Vill du hjälpa till att översätta det här tillägget?" - }, - "TranslateLink": { - "message": "Ta reda på hur!" - }, - "customPrompts_ExportAll": { - "message": "Exportera alla promptar" - }, - "customPrompts_Import": { - "message": "Importera nya promptar" - }, - "importPrompts_confirmText": { - "message": "Du håller på att importera nya promptar." - }, - "customPrompts_start_import": { - "message": "Startar import av anpassade promptar..." - }, - "customPrompts_import_completed": { - "message": "Import av anpassade promptar är klar! Du måste klicka på knappen \"Spara alla\" för att spara dina ändringar." - }, - "importPrompts_invalidFile": { - "message": "Filen du försöker importera är inte en giltig fil med anpassade promptar." - }, - "importPrompts_invalidPrompts": { - "message": "Filen du försöker importera innehåller inga giltiga promptar." - }, - "currently_used_prompt": { - "message": "För närvarande använt promptnamn" - }, - "customprompts_form_label_define_response_lang": { - "message": "Definiera svarsspråket i prompten" - }, - "prefs_Connection_type": { - "message": "Anslutningstyp" - }, - "prefs_Connection_type_ChatGPT_Web": { - "message": "ChatGPT-webbgränssnitt" - }, - "prefs_Connection_type_ChatGPT_API": { - "message": "ChatGPT OpenAI API" - }, - "prefs_ChatGPT_API_Key": { - "message": "ChatGPT API-nyckel" - }, - "ChatGPT_Models": { - "message": "ChatGPT-modeller" - }, - "ChatGPT_Models_Fetch": { - "message": "Uppdatera listan över ChatGPT-modeller" - }, - "ChatGPT_Models_Error_fetching": { - "message": "Fel vid försök att hämta ChatGPT-modeller" - }, - "Loading": { - "message": "Laddar..." - }, - "error": { - "message": "ThunderAI-fel!" - }, - "chatgpt_empty_apikey": { - "message": "Du har inte lagt till en API-nyckel för ChatGPT API. Vänligen ange en på alternativsidan." - }, - "chatgpt_empty_model": { - "message": "Du har inte valt någon modell för ChatGPT API. Välj en på alternativsidan." - }, - "chagpt_api_send_button": { - "message": "Använda modell" - }, - "Debug": { - "message": "Felsök" - }, - "prefs_OptionText_do_debug_info": { - "message": "Aktivera felsökningssystemet" - }, - "prefs_Connection_type_Ollama_API": { - "message": "Ollama API (Lokal LLM)" - }, - "prefs_Connection_type_OpenAI_Comp_API": { - "message": "OpenAI-kompatibelt API" - }, - "prefs_API_Host": { - "message": "Värdadress" - }, - "Ollama_Models": { - "message": "Ollama-modeller" - }, - "Ollama_Models_Fetch": { - "message": "Uppdatera listan över Ollama-modeller" - }, - "Ollama_Models_Error_fetching": { - "message": "Fel vid försök att hämta Ollama-modeller" - }, - "API_Models_Error_NoModels": { - "message": "Inga modeller hittades" - }, - "ollama_empty_host": { - "message": "Du har inte lagt till en värdadress för Ollama API. Vänligen ange en på alternativsidan." - }, - "ollama_empty_model": { - "message": "Du har inte valt någon modell för Ollama API. Välj en på alternativsidan." - }, - "error_connection_interrupted": { - "message": "Anslutningen till servern avbröts oväntat" - }, - "ollama_api_request_failed": { - "message": "Ollama API-begäran misslyckades" - }, - "chatgpt_api_request_failed": { - "message": "OpenAI ChatGPT API-begäran misslyckades" - }, - "WaitingServerResponse": { - "message": "Väntar på serversvar" - }, - "prefs_API_Host_Info": { - "message": "Något liknande" - }, - "OpenAIComp_Models": { - "message": "OpenAI-kompatibla API-modeller" - }, - "OpenAIComp_Models_Fetch": { - "message": "Uppdatera listan över OpenAI-kompatibla API-modeller" - }, - "OpenAIComp_Models_Error_fetching": { - "message": "Fel vid försök att hämta OpenAI-kompatibla API-modeller" - }, - "OpenAIComp_empty_host": { - "message": "Du har inte lagt till en värdadress för OpenAI-kompatibla API:et. Vänligen ange en på alternativsidan." - }, - "OpenAIComp_empty_model": { - "message": "Du har inte valt en modell för OpenAI-kompatibelt API. Välj en på alternativsidan." - }, - "OpenAIComp_api_request_failed": { - "message": "OpenAI Comp API-begäran misslyckades" - }, - "prefs_OpenAIComp_ChatName": { - "message": "Chattnamn" - }, - "prefs_OpenAIComp_ChatName_Info": { - "message": "Detta är namnet som kommer att användas i AI-chatten." - }, - "StorageSpace": { - "message": "Totalt upptaget lagringsutrymme" - }, - "SearchPrompt": { - "message": "Sök promptar" - }, - "prefs_OptionText_dynamic_menu_force_enter_info": { - "message": "Om markerat, skickas den markerade prompten från menyn automatiskt genom att använda kortkommandot CTRL+ALT+A. Annars visas promptnamnet för användaren, vilket kräver ytterligare ett tryck på Enter-tangenten för att skicka den." - }, - "prefs_OptionText_dynamic_menu_force_enter": { - "message": "Meny: skicka omedelbart prompt" - }, - "prefs_OptionText_dynamic_menu_order_alphabet": { - "message": "Meny: ordna alfabetiskt" - }, - "prefs_OptionText_dynamic_menu_order_alphabet_info": { - "message": "Om markerat kommer promptar i menyn att ordnas alfabetiskt." - }, - "prefs_OptionText_chatgpt_win_dims_info": { - "message": "Ställ in värdet till 0 om du inte vill ange fönsterstorleken." - }, - "prefs_OpenAIComp_API_Key": { - "message": "OpenAI Comp API-nyckel" - }, - "Optional": { - "message": "Valfri" - }, - "OpenChatGPTTab": { - "message": "Öppna fliken ChatGPT" - }, - "OpenChatGPTTab_Info": { - "message": "Vid inloggningsproblem i ThunderAI-fönstret, öppna ChatGPT i en ny flik med knappen till höger, logga in, stäng sedan fliken och fortsätt använda ThunderAI." - }, - "OpenChatGPTTab_Info2": { - "message": "Om du öppnar ChatGPT webbgränssnitt härifrån tillämpas alla konfigurerade inställningar för modellen, projektet och den anpassade GPT:n." - }, - "placeholder_mail_text_body": { - "message": "Mejltext" - }, - "placeholder_mail_html_body": { - "message": "HTML-mejltext" - }, - "placeholder_mail_subject": { - "message": "Ämne för e-postmeddelande" - }, - "placeholder_folder_name": { - "message": "Mappnamn" - }, - "placeholder_folder_path": { - "message": "Mappsökväg" - }, - "placeholder_mail_headers": { - "message": "E-postrubriker" - }, - "placeholder_selected_text": { - "message": "Makerad text" - }, - "placeholder_junk_score": { - "message": "Skräppoäng" - }, - "placeholder_recipients": { - "message": "Mottagare" - }, - "placeholder_cc_list": { - "message": "CC-lista" - }, - "placeholder_author": { - "message": "Författare" - }, - "placeholder_account_email_address": { - "message": "Kontots e-postadress" - }, - "prefs_OptionText_placeholders_use_default_value": { - "message": "Platshållare: använd standardvärde" - }, - "prefs_OptionText_placeholders_use_default_value_info": { - "message": "Om markerat kommer platshållarna att fyllas med standardvärdena när inget värde anges. Annars kommer platshållarna att behållas." - }, - "prefs_OptionText_max_prompt_length": { - "message": "Max promptlängd" - }, - "prefs_OptionText_max_prompt_length_Info": { - "message": "Detta är det maximala antalet tecken som kan användas i en prompt. Annars visas ett felmeddelande. Värdet kan inte redigeras för ChatGPT-webbgränssnittet. Ställ in det på 0 för att inaktivera kontrollen." - }, - "prefs_OptionText_chatgpt_web_model": { - "message": "ChatGPT webbmodell" - }, - "prefs_OptionText_chatgpt_web_model_info": { - "message": "Det här är modellen som kommer att tillämpas för ChatGPT:s webbgränssnitt. Om ingen modell anges eller om en felaktig modell anges, kommer standardmodellen att ställas in av ChatGPT på webbsidan. Den här inställningen fungerar inte med ett gratis ChatGPT-konto." - }, - "prefs_OptionText_chatgpt_web_tempchat": { - "message": "ChatGPT webbgränssnitt tillfällig chatt" - }, - "prefs_OptionText_chatgpt_web_tempchat_info": { - "message": "Om markerad kommer den tillfälliga chatten att användas i ChatGPT:s webbgränssnitt." - }, - "chatgpt_btn_model": { - "message": "Använd den nuvarande modellen" - }, - "SendingPrompt": { - "message": "Skickar prompt..." - }, - "AllowedValues": { - "message": "Tillåtna värden" - }, - "prefs_OptionText_btnManagePrompts_infoline": { - "message": "Du kan använda ytterligare dataplatshållare." - }, - "prefs_OptionText_openai_comp_use_v1": { - "message": "Behåll \"v1\"-kompatibiliteten" - }, - "prefs_OptionText_openai_comp_use_v1_info": { - "message": "Om markerat kommer segmentet \"v1\" i sökvägen för API-anrop att behållas, som \"http://localhost:1234/v1/chat/completions\"." - }, - "prefs_OptionText_openai_comp_info_remote": { - "message": "Här kan du även ange en fjärrserveradress." - }, - "prefs_OptionText_owl_warning": { - "message": "Det verkar som att minst ett av dina konton använder tillägget Owl for Exchange. Det finns ett känt problem mellan Thunderbird och Owl, vilket för närvarande åtgärdas. För närvarande kan du använda ThunderAI när du skriver e-postmeddelanden, men inte när du läser dem." - }, - "prefs_OptionText_chatgpt_web_model_tooltip": { - "message": "Klicka på ett värde för att ställa in det." - }, - "prompt_reply_full_text": { - "message": "Svara på följande e-postmeddelande. Svara endast med den text som behövs och utan extra kommentarer eller annan text." - }, - "prompt_reply_additional_text": { - "message": "Lägg inte till ämnesraden i svaret." - }, - "reply_same_lang": { - "message": "Svara på samma språk." - }, - "sign_msg_as": { - "message": "Signera meddelandet som" - }, - "prompt_reply_advanced_full_text": { - "message": "Svara på följande e-postmeddelande \"{%selected_text%}\", med tanke på att detta är hela tråden med e-postmeddelanden \"{%mail_html_body%}\". Svara endast med den text som behövs och utan extra kommentarer eller annan text." - }, - "prompt_reply_custom_command_full_text": { - "message": "Svara på följande e-postmeddelande \"{%mail_text_body%}\". {%additional_text%}. Svara endast med den text som behövs och utan extra kommentarer eller annan text." - }, - "prompt_rewrite_full_text": { - "message": "Skriv om följande text för att vara mer artig. Svara endast med den omskrivna texten och utan extra kommentarer eller annan text." - }, - "prompt_rewrite_formal_full_text": { - "message": "Skriv om följande text för att göra den mer formell. Svara endast med den omskrivna texten och utan extra kommentarer eller annan text." - }, - "prompt_summarize_this_full_text": { - "message": "Sammanfatta följande e-postmeddelande i en punktlista." - }, - "prompt_translate_this_full_text": { - "message": "Översätt följande e-postmeddelande till" - }, - "prompt_this_full_text": { - "message": "Svara endast med den text som behövs och utan extra kommentarer eller annan text." - }, - "prefs_OptionText_add_tags": { - "message": "Lägg till taggar i e-postmeddelanden" - }, - "prefs_OptionText_add_tags_Info": { - "message": "Om markerat kommer ett alternativ att inkluderas i menyn för att tillämpa taggar på e-postmeddelanden." - }, - "prompt_add_tags": { - "message": "Lägg till taggar i det här e-postmeddelandet" - }, - "prompt_proofread_this": { - "message": "Korrekturläs detta e-postmeddelande" - }, - "prompt_proofread_this_full_text": { - "message": "Korrekturläs följande e-postmeddelande och korrigera eventuella stavfel eller grammatikfel. Svara endast med den korrigerade texten och utan extra kommentarer eller annan text.\n\n\"{%mail_typed_text%}\"" - }, - "AddTags_info_default": { - "message": "På den här sidan kan du ändra standardprompten som används för att lägga till taggar i e-postmeddelanden och hantera undantagslistan." - }, - "AddTags_prompt_text_title": { - "message": "Aktuell prompttext" - }, - "prefs_SurveyLinkText": { - "message": "Dela din feedback och hjälp till att förbättra ThunderAI!" - }, - "prefs_SurveyLinkText2": { - "message": "Klicka här, det tar bara en minut!" - }, - "prefs_OpenAIComp_ForceModel": { - "message": "Infoga modell manuellt" - }, - "OpenAIComp_force_model_ask": { - "message": "Ange här modellnamnet du vill använda." - }, - "prefs_OptionText_add_tags_force_lang": { - "message": "Tvinga språk" - }, - "prefs_OptionText_add_tags_force_lang_Info": { - "message": "Om markerat kommer taggarnas språk att tvingas matcha språket som definierats på ThunderAI-inställningssidan, om det anges." - }, - "prompt_add_tags_force_lang": { - "message": "Taggarna måste vara skrivna på" - }, - "prefs_Connection_type_Google_Gemini_API": { - "message": "Google Gemini API" - }, - "prefs_GoogleGemini_API_Key": { - "message": "API-nyckel" - }, - "GoogleGemini_Models": { - "message": "Google Gemini API-modeller" - }, - "GoogleGemini_Models_Fetch": { - "message": "Uppdatera listan över Google Gemini-modeller" - }, - "GoogleGemini_Models_Error_fetching": { - "message": "Fel vid försök att hämta Google Gemini-modeller" - }, - "google_gemini_api_request_failed": { - "message": "Google Gemini API-begäran misslyckades" - }, - "google_gemini_empty_apikey": { - "message": "Du har inte lagt till en API-nyckel för Google Gemini API. Vänligen ange en på alternativsidan." - }, - "google_gemini_empty_model": { - "message": "Du har inte valt någon modell för Google Gemini API. Välj en på alternativsidan." - }, - "GoogleGemini_SystemInstruction": { - "message": "Systeminstruktion" - }, - "GoogleGemini_SystemInstruction_Info": { - "message": "När du anger en systeminstruktion ger du modellen ytterligare kontext för att förstå uppgiften, ge mer anpassade svar och följa specifika riktlinjer för den prompt som skickas." - }, - "ChatGPT_Developer_Messages": { - "message": "Utvecklarmeddelanden" - }, - "ChatGPT_Developer_Messages_Info": { - "message": "När du anger utvecklarmeddelandena ger du modellen ytterligare kontext för att förstå uppgiften, ge mer anpassade svar och följa specifika riktlinjer för den prompt som skickas." - }, - "prefs_OptionText_btnManagePrompts_infoline3": { - "message": "Du kan använda dataplatshållaren {%tags_full_list%} i prompten för att lista tillgängliga taggar. Med en lämplig prompt kan du sedan tvinga taggarna att endast väljas från listan över de som redan finns." - }, - "prefs_OptionText_get_calendar_event": { - "message": "Lägg till en ny kalenderhändelse från markerad text" - }, - "thunderai_def_lang": { - "message": "Standardspråk som definierat i ThunderAI-alternativ." - }, - "placeholder_mail_attachments_info": { - "message": "Information om bilagorna i e-postmeddelandet" - }, - "prefs_OptionText_spamfilter": { - "message": "Automatiskt skräppostfilter" - }, - "prefs_OptionText_spamfilter_Info": { - "message": "Om markerat kommer ThunderAI automatiskt att flytta skräppostmeddelanden till skräppostmappen." - }, - "prefs_OptionText_btnManageSpamFilterInfo": { - "message": "Hantera inställningar för skräppostfilter" - }, - "SpamFilter_PageTitle": { - "message": "Hantera inställningar för skräppostfilter" - }, - "SpamFilter_info_default": { - "message": "På den här sidan kan du ändra standardprompten som används för att upptäcka skräppost." - }, - "SpamFilter_prompt_text_title": { - "message": "Aktuell prompttext" - }, - "prompt_spamfilter": { - "message": "Upptäck skräppostmeddelanden" - }, - "SpamFilter_prompt_prefs_title": { - "message": "Alternativ för skräppostfilter" - }, - "prefs_OptionText_use_specific_integration": { - "message": "Använd specifik modell och API" - }, - "prefs_OptionText_spamfilter_use_specific_integration_Info": { - "message": "Om markerat kommer modellen och API:et som anges nedan att användas för spamfiltret, oavsett vilket som valts på ThunderAI-alternativsidan." - }, - "prefs_OptionText_spamfilter_threshold_Info": { - "message": "Om värdet som returneras av AI:n överstiger detta tröskelvärde flyttas e-postmeddelandet till skräppostmappen." - }, - "spamfilter_threshold_too_low": { - "message": "Tröskeln för skräppost är för låg! Du kommer troligtvis att markera för många e-postmeddelanden som skräppost!" - }, - "spamfilter_threshold_zero": { - "message": "Tröskeln för skräppost är noll! Du kommer att markera alla e-postmeddelanden som skräppost!" - }, - "Subject": { - "message": "Ämne" - }, - "From": { - "message": "Från" - }, - "Spam_Value": { - "message": "Skräppostvärde" - }, - "Moved_to_Spam": { - "message": "Flyttad till skräppost" - }, - "Explanation": { - "message": "Förklaring" - }, - "Report_Date": { - "message": "Rapportdatum" - }, - "yes_string": { - "message": "Ja" - }, - "no_string": { - "message": "Nej" - }, - "context_menu_mzta-add-tags": { - "message": "Lägg till taggar" - }, - "context_menu_mzta-spamfilter": { - "message": "Analysera för skräppost" - }, - "noActiveCalendar": { - "message": "Ingen redigerbar kalender hittades!" - }, - "btn_show_differences": { - "message": "Visa skillnader" - }, - "chatgpt_win_diff_title": { - "message": "Skillnader mellan originaltexten och den modifierade texten" - }, - "apiwebchat_you": { - "message": "Du" - }, - "apiwebchat_info": { - "message": "Information" - }, - "apiwebchat_error": { - "message": "Fel" - }, - "apiwebchat_use_this_answer": { - "message": "Använd detta svar" - }, - "apiwebchat_stopping": { - "message": "Stoppar" - }, - "apiwebchat_receiving_data": { - "message": "Mottar data" - }, - "hyprland_warning": { - "message": "Om du har problem med att öppna AI-chattfönstret kan du prova att ställa in höjd- och breddvärdena till 0. Det här problemet kan uppstå i vissa Linux-miljöer, till exempel när du använder Hyprland." - }, - "remember_CORS": { - "message": "Kom ihåg att du måste konfigurera CORS-inställningarna på servern!" - }, - "maybe_CORS_openai_comp": { - "message": "Att använda OpenAI-kompatibelt API kan kräva att CORS-inställningar konfigureras på servern." - }, - "CORS_alternative_1": { - "message": "Problem med att ställa in CORS?" - }, - "customPrompts_Properties": { - "message": "Egenskaper" - }, - "customPrompts_show_additional_info": { - "message": "Visa ytterligare egenskaper" - }, - "customPrompts_hide_additional_info": { - "message": "Dölj ytterligare egenskaper" - }, - "customPrompts_show_additional_info_show": { - "message": "Ytterligare egenskaper" - }, - "prefs_OptionText_CustomGPT_Warn": { - "message": "Om ett projekt anges i alternativen eller i en prompt kommer det att åsidosätta inställningen för anpassad GPT." - }, - "prefs_OptionText_Project_No_temporary_chat_warn": { - "message": "Om ett projekt anges i alternativen eller i en prompt kommer den tillfälliga chatten inte att användas." - }, - "prefs_Anthropic_API_Key": { - "message": "Claude API-nyckel" - }, - "prefs_Connection_type_Anthropic_API": { - "message": "Claude API" - }, - "Anthropic_Models": { - "message": "Claude-modeller" - }, - "Anthropic_Models_Fetch": { - "message": "Uppdatera listan med Claude-modeller" - }, - "Anthropic_Models_Error_fetching": { - "message": "Fel vid försök att hämta Claude-modeller" - }, - "Anthropic_Version": { - "message": "Claude API-version" - }, - "Anthropic_Version_Info": { - "message": "KRÄVS. Ändra inte detta värde om du inte vet vad du gör. Mer information finns på:" - }, - "prefs_OptionText_anthropic_max_tokens": { - "message": "Max antal tokens" - }, - "prefs_OptionText_anthropic_max_tokens_Info": { - "message": "Det maximala antalet tokens som ska genereras i slutförandet. Antalet tokens för din prompt plus max_tokens får inte överstiga modellens kontextlängd." - }, - "anthropic_empty_apikey": { - "message": "Du har inte lagt till en API-nyckel för Claude API. Vänligen ange en på alternativsidan." - }, - "anthropic_empty_model": { - "message": "Du har inte valt någon modell för Claude API. Välj en på alternativsidan." - }, - "anthropic_empty_version": { - "message": "Du har inte lagt till en versionssträng för Claude API. Vänligen infoga en på alternativsidan." - }, - "anthropic_api_request_failed": { - "message": "Claude API-begäran misslyckades" - }, - "_api_connecting": { - "message": "Försöker ansluta till $api_string$ med följande konfiguration...", - "placeholders": { - "api_string": { - "content": "$1" - } - } - }, - "_api_connecting_model": { - "message": "Modell" - }, - "_api_connecting_host": { - "message": "Värd" - }, - "_api_connecting_version": { - "message": "Version" - }, - "prefs_OpenAIComp_AvailableServices": { - "message": "Tillgängliga tjänster" - }, - "prefs_OpenAIComp_AvailableServices_Info": { - "message": "Välj en av tjänsterna som är tillgängliga för OpenAI Compatible API eller infoga en manuellt." - }, - "Custom": { - "message": "Anpassad" - }, - "OpenAIComp_Configs_ConfirmApply": { - "message": "Är du säker på att du vill använda konfigurationen \"$config_name$\"?", - "placeholders": { - "config_name": { - "content": "$1" - } - } - }, - "apiwebchat_selection_info": { - "message": "Om du väljer text kommer endast den delen att beaktas." - }, - "ChatGPT_chatgpt_api_store": { - "message": "Använd lagring" - }, - "ChatGPT_chatgpt_api_store_info": { - "message": "Om markerat kommer dina chattar att lagras av OpenAI." - }, - "prefs_chatgpt_api_temperature_Info": { - "message": "Vilken samplingstemperatur som ska användas, mellan 0 och 2. Högre värden som 0,8 gör utdata mer slumpmässig, medan lägre värden som 0,2 gör den mer fokuserad och deterministisk." - }, - "prefs_ollama_temperature_Info": { - "message": "Modellens temperatur. Att öka temperaturen gör att modellen svarar mer kreativt. Standardvärdet är 0,8. Det rekommenderas att använda värden mellan 0 och 1." - }, - "prefs_ollama_think": { - "message": "Aktivera tänkande" - }, - "prefs_ollama_think_Info": { - "message": "Om markerat kommer modellen att tänka innan den svarar. Det här alternativet fungerar bara med modeller som stöder funktionen \"tänk\"." - }, - "chatgpt_win_change_reply_type": { - "message": "Klicka för att ändra svarstypen" - }, - "SelectAll": { - "message": "Markera alla" - }, - "DeselectAll": { - "message": "Avmarkera alla" - }, - "Anthropic_System_Prompt": { - "message": "Systemprompt" - }, - "Anthropic_System_Prompt_Info": { - "message": "Du kan förbättra Claudes prestanda genom att använda en systemprompt för att ge den en roll. Denna teknik, känd som rollprompt, är det mest kraftfulla sättet att använda systempromptar med Claude. Rätt roll kan förvandla Claude från en allmän assistent till din virtuella domänexpert." - }, - "Optional_Permission_Denied_Model_Fetching": { - "message": "Du har nekat den valfria behörighet som krävs för att hämta modeller för den här integrationen." - }, - "Select_your_timezone": { - "message": "Välj din tidszon" - }, - "prefs_OptionText_calendar_enforce_timezone": { - "message": "Tvinga fram den angivna tidszonen" - }, - "prefs_OptionText_calendar_enforce_timezone_Info": { - "message": "Om markerad kommer den angivna tidszonen att tillämpas för kalenderhändelser och uppgifter." - }, - "prefs_OptionText_btnManageCalendarEventInfo": { - "message": "Hantera inställningar för kalenderhändelser" - }, - "GetCalendarEvent_PageTitle": { - "message": "Hantera inställningar för kalenderhändelser" - }, - "GetCalendarEvent_info_default": { - "message": "På den här sidan kan du ändra standardprompten som används för att hämta en kalenderhändelse från markerad text." - }, - "GetCalendarEvent_prompt_text_title": { - "message": "Aktuell prompttext" - }, - "prefs_OptionText_AdvancedPromptResponse_infoline2": { - "message": "Du kan ändra prompten som du vill, men svaret som tas emot från AI:n måste vara i JSON-format enligt standardprompten!" - }, - "prefs_OptionText_get_calendar_event_Sparks_not_present": { - "message": "För att använda kalenderhändelser och uppgifter, installera ThunderAI Sparks-tillägget." - }, - "prefs_OptionText_get_calendar_event_Sparks_wrong_version": { - "message": "För att använda kalenderhändelser och uppgifter, installera en uppdaterad version av ThunderAI Sparks-tillägget." - }, - "GetTask_PageTitle": { - "message": "Hantera inställningar för uppgifter" - }, - "GetTask_info_default": { - "message": "På den här sidan kan du ändra standardprompten som används för att hämta en uppgift från markerad text." - }, - "prefs_OptionText_btnManageTaskInfo": { - "message": "Hantera inställningar för uppgifter" - }, - "prefs_OptionText_download_now": { - "message": "Ladda ner ThunderAI Sparks nu!" - }, - "placeholder_mail_datetime": { - "message": "Datum och tid för e-postmeddelandet" - }, - "placeholder_current_datetime": { - "message": "Aktuellt datum och tid" - }, - "calendar_getting_data_error": { - "message": "Fel vid hämtning av kalenderhändelsedata" - }, - "calendar_opening_dialog_error": { - "message": "Fel vid öppning av dialogrutan för kalenderhändelse" - }, - "task_getting_data_error": { - "message": "Fel vid hämtning av uppgiftsdata" - }, - "task_opening_dialog_error": { - "message": "Fel vid öppning av uppgiftsdialogrutan" - }, - "no_valid_data_received": { - "message": "Inga giltiga data mottagna från AI:n." - }, - "prefs_OptionText_add_tags_auto": { - "message": "Lägg till taggar automatiskt" - }, - "prefs_OptionText_add_tags_auto_Info": { - "message": "Om markerat kommer AI:n automatiskt att lägga till taggar till nyligen mottagna e-postmeddelanden." - }, - "prefs_OptionText_add_tags_auto_Info2": { - "message": "Välj vilket konto du vill aktivera den här funktionen för längst ner på sidan." - }, - "prefs_OptionText_add_tags_auto_force_existing": { - "message": "Tvinga fram befintliga taggar" - }, - "prefs_OptionText_add_tags_auto_force_existing_Info": { - "message": "Om markerat kommer AI:n endast att lägga till befintliga taggar och inte skapa nya taggar." - }, - "prefs_OptionText_add_tags_auto_uselist": { - "message": "Använd endast dessa taggar" - }, - "prefs_OptionText_add_tags_auto_uselist_Info": { - "message": "Om markerat kommer AI:n endast att lägga till taggar från listan nedan." - }, - "prefs_OptionText_add_tags_auto_uselist_list_Info": { - "message": "Listan måste innehålla minst en tagg. Lägg till en tagg per rad, eller separera med ett kommatecken." - }, - "prompt_add_tags_use_list": { - "message": "Använd endast taggarna i den här kommaseparerade listan" - }, - "prefs_OptionText_add_tags_auto_only_inbox": { - "message": "Lägg bara till taggar i e-postmeddelanden i inkorgen" - }, - "prefs_OptionText_add_tags_auto_only_inbox_Info": { - "message": "Om markerat kommer AI:n bara att lägga till taggar till e-postmeddelanden som tas emot i inkorgen." - }, - "prefs_OptionText_add_tags_use_specific_integration_Info": { - "message": "Om markerat kommer modellen och API:et som anges nedan att användas för att lägga till taggar i e-postmeddelanden, oavsett vilket som valts på ThunderAI-alternativsidan." - }, - "placeholder_thunderai_def_sign": { - "message": "Standardsignatur som definierad i ThunderAI-alternativ." - }, - "empty": { - "message": "Den här platshållaren lägger inte till någon text, men den förhindrar att e-postmeddelandets brödtext läggs till automatiskt i slutet av prompten." - }, - "prefs_OptionText_spamfilter_threshold": { - "message": "Tröskel skräppost" - }, - "spamfilter_no_reports": { - "message": "Inga meddelanden har ännu granskats för skräppost. Här hittar du en lista över de senaste 100 skräppostrapporterna för den aktuella sessionen." - }, - "SpamReport_Title": { - "message": "Rapporter om skräppostfilter" - }, - "customDataPH_ExportAll": { - "message": "Exportera alla anpassade dataplatshållare" - }, - "customDataPH_Import": { - "message": "Importera nya dataplatshållare" - }, - "customDataPH_form_label_Text": { - "message": "Dataplatshållartext" - }, - "customDataPH_saving_custom": { - "message": "Sparar anpassade dataplatshållare..." - }, - "customDataPH_saved": { - "message": "Anpassade dataplatshållare sparade!" - }, - "customDataPH_btnAddNewCommit": { - "message": "Lägg till dataplatshållaren" - }, - "importCustomDataPH_confirmText": { - "message": "Du håller på att importera nya anpassade dataplatshållare." - }, - "importCustomDataPH_start_import": { - "message": "Startar import av anpassade dataplatshållare..." - }, - "importCustomDataPH_import_completed": { - "message": "Import av anpassade dataplatshållare är klar! Du måste klicka på knappen \"Spara alla\" för att spara dina ändringar." - }, - "importCustomDataPH_invalidFile": { - "message": "Filen du försöker importera är inte en giltig anpassad dataplatshållarfil." - }, - "importCustomDataPH_invalidDataPHs": { - "message": "Filen du försöker importera innehåller inga giltiga anpassade dataplatshållare." - }, - "customDataPH_add_to_menu": { - "message": "Kan användas i promptar som lagts till i menyn" - }, - "prefs_OptionText_chatgpt_web_br_replace_info": { - "message": "Observera att alla
-taggar i AI:ns svar kommer att ersättas med radbrytningar." - }, - "prefs_OpenAIComp_ClearModelsList": { - "message": "Rensa modelllistan" - }, - "OpenAIComp_ClearModelsList_Confirm": { - "message": "Är du säker på att du vill rensa modellistan? Den här åtgärden kan inte ångras." - }, - "prefs_api_temperature": { - "message": "Temperatur" - }, - "prefs_openai_comp_temperature_Info": { - "message": "Vilken samplingstemperatur som ska användas, mellan 0 och 2. Högre värden som 0,8 gör utdata mer slumpmässig, medan lägre värden som 0,2 gör den mer fokuserad och deterministisk." - }, - "chatgpt_click_force_completion": { - "message": "Det verkar som att det inte går att få tag på det om inte ChatGPT är klar. Klicka här för att tvinga fram slutförandet av jobbet." - }, - "warn_API_needed": { - "message": "För att använda den här funktionen behöver du en API-integration snarare än ChatGPT-webbintegrationen. Du kan definiera ett specifikt API på sidan med funktionsinställningar genom att först markera kryssrutan ovan och sedan klicka på knappen till vänster." - }, - "prompt_classify_full_text": { - "message": "Klassificera följande text i termer av artighet, värme, formalitet, självsäkerhet och anstötlighet. Ange en procentandel för varje kategori. Svara endast med kategorin och poängsätt utan extra kommentarer eller annan text." - }, - "prompt_get_calendar_event": { - "message": "Lägg till en ny kalenderhändelse" - }, - "prompt_get_task": { - "message": "Lägg till en ny uppgift" - }, - "prefs_OptionText_get_calendar_event_Info": { - "message": "Om markerat kommer ett alternativ att inkluderas i menyn för att hämta information om kalenderhändelser från markerad text." - }, - "get_calendar_event_prompt_prefs_title": { - "message": "Alternativ för kalenderhändelser" - }, - "prefs_OptionText_get_task": { - "message": "Lägg till en ny uppgift från markerad text" - }, - "prefs_OptionText_get_task_Info": { - "message": "Om markerat kommer ett alternativ att inkluderas i menyn för att hämta uppgiftsinformation från markerad text." - }, - "get_task_prompt_prefs_title": { - "message": "Uppgiftsalternativ" - }, - "prefs_OptionText_composing_plain_text": { - "message": "Skriva i oformaterad text" - }, - "prefs_OptionText_composing_plain_text_Info": { - "message": "Markera det här alternativet om du skriver e-postmeddelandena i oformaterad text." - }, - "Replace_No_Selected_Text": { - "message": "Ingen text vald, vill du infoga AI:ns svar i början av e-postmeddelandet?" - }, - "prefs_ollama_num_ctx": { - "message": "Antal kontexttokens" - }, - "prefs_ollama_num_ctx_Info": { - "message": "Antalet kontexttokens som ska användas för Ollama API. Ställ in på 0 om du inte vill skicka den som en parameter till servern." - }, - "ask_chatgptweb_permission_1": { - "message": "För att använda ChatGPT-webbintegrationen måste du ge nödvändig behörighet." - }, - "ask_anthropic_api_permission_1": { - "message": "För att använda Claude API-integrationen måste du ge nödvändig behörighet." - }, - "ask_openai_api_permission_1": { - "message": "För att använda OpenAI API-integrationen måste du ge nödvändig behörighet." - }, - "ask_integration_permission_2_popup": { - "message": "Klicka här för att öppna en ny flik och följ instruktionerna." - }, - "ask_integration_permission_2": { - "message": "Klicka här för att fortsätta." - }, - "ask_integration_permission_ok": { - "message": "Tillstånd beviljat. Du kan klicka här för att stänga den här fliken och återgå till huvudfönstret." - }, - "AccountSelector_AutoTags": { - "message": "Välj de konton där automatisk taggning är aktiverad" - }, - "AccountSelector_AutoTags_infoline": { - "message": "Varje ändring sparas omedelbart." - }, - "AccountSelector_Spamfilter": { - "message": "Välj de konton där skräppostfiltret är aktiverat" - }, - "prefs_OptionText_chatgpt_web_project": { - "message": "ChatGPT webbprojekt" - }, - "prefs_OptionText_chatgpt_web_project_info": { - "message": "Detta är projektet som kommer att tillämpas för ChatGPT-webbgränssnittet." - }, - "prefs_OptionText_chatgpt_web_custom_gpt": { - "message": "ChatGPT webbanpassad GPT" - }, - "prefs_OptionText_chatgpt_web_custom_gpt_info": { - "message": "Detta är den anpassade GPT som kommer att tillämpas för ChatGPT-webbgränssnittet." - }, - "prefs_OptionText_chatgpt_web_custom_data_info": { - "message": "Detta måste vara i följande form:" - }, - "prefs_OptionText_chatgpt_web_custom_data_info2": { - "message": "Du hittar rätt värde i webbläsarens URL-fält när du öppnar den relaterade ChatGPT-sidan." - }, - "prefs_OptionText_add_tags_exclusions_exact_match_Info": { - "message": "Om markerat kommer orden i undantagslistan att matchas exakt med taggarna. Annars kommer de också att matcha om de ingår i taggen." - }, - "prefs_OptionText_add_tags_exclusions_exact_match": { - "message": "Exakt matchning för undantag" - }, - "customDataPH_manageDataPH": { - "message": "Hantera dataplatshållare" - }, - "customDataPH_manageDataPH_info_default_3": { - "message": "Du kan också använda standarddataplatshållarna med autokomplettering, precis som när du skriver anpassade promptar." - }, - "customDataPH_manageDataPH_info_default": { - "message": "På den här sidan är det möjligt att definiera anpassade dataplatshållare som ska användas i dina anpassade promptar." - }, - "customDataPH_manageDataPH_info_default_2": { - "message": "Befintliga dataplatshållare med samma ID kommer att skrivas över. Platshållare med nya ID:n kommer att läggas till." - }, - "prefs_google_gemini_thinking_budget": { - "message": "Tänkande budget" - }, - "prefs_google_gemini_thinking_budget_Info": { - "message": "Definiera antalet tokens som ska användas för tänkande. Lämna det här fältet tomt om den valda modellen inte stöder tänkande eller om du vill använda standardmetoden. Ange 0 för att inaktivera tänkande eller -1 för att aktivera dynamiskt tänkande." - }, - "prefs_google_gemini_temperature_Info": { - "message": "Denna parameter måste vara ett tal mellan 0,0 och 2,0. Den styr utdatas slumpmässighet. Standardvärdet varierar beroende på modell. Lämna det tomt för att undvika att parametern anges i API-anropet." - }, - "prefs_anthropic_temperature_Info": { - "message": "Mängd slumpmässighet som injiceras i svaret. Standardvärdet är 1,0. Varierar från 0,0 till 1,0. Använd en temperatur närmare 0,0 för analytiska/flervalsfrågor och närmare 1,0 för kreativa och generativa uppgifter. Observera att även med en temperatur på 0,0 kommer resultaten inte att vara helt deterministiska." - }, - "prompt_add_tags_full_text": { - "message": "Analysera följande e-posttext och generera en JSON-matris med taggar som sammanfattar innehållet. Använd teman, nyckelämnen och relevanta beskrivningar som taggar. Se till att taggarna är koncisa och relevanta för e-postmeddelandets innehåll.\nE-posttext: {%mail_text_body%}\nTänk på följande detaljer för kontext:\n- Avsändare: {%author%}\n- Mottagare: {%recipients%}\n- CC-lista: {%cc_list%}\n- E-postämne: {%mail_subject%}\nBasera dina taggar på e-postmeddelandets text och kontext och ignorera onödig information eller triviala detaljer.\nGenerera ett svar endast i JSON-format. Utdata ska endast vara en JSON-matris med taggar utan ytterligare kommentarer eller text. Här är ett exempel på JSON-formatet som ska användas:\n{\n\"tags\": [\"tag1\", \"tag2\", \"tag3\", \"tag4\", \"tag5\"]\n}" - }, - "addtags_info_additional_statements": { - "message": "Detta uttryck kommer att läggas till i slutet av prompten:" - }, - "AddTags_prompt_prefs_title": { - "message": "Lägga till taggar alternativ" - }, - "placeholder_mail_typed_text": { - "message": "Skriven text före citatbrevets brödtext" - }, - "placeholder_mail_quoted_text": { - "message": "Citerad text i meddelandets brödtext" - }, - "prompt_get_calendar_event_full_text": { - "message": "Extrahera all relevant information som krävs för att generera en kalenderhändelse från följande text. Den extraherade informationen bör innehålla:\n- Händelsetitel\n- Startdatum och tid (inklusive tidszon, om angiven)\n- Slutdatum och tid (inklusive tidszon, om angiven)\n- Heldag (om angiven)\n- Deltagare\nSe till att informationen är tydligt och konsekvent formaterad så att den kan användas direkt för att skapa en kalenderhändelse.\nOm det finns relativa tidsreferenser, tänk på att datum och tid för e-postmeddelandet är \"{%mail_datetime%}\". Beräkna startdatum och tid baserat på denna referens. Om det beräknade startdatumet och tiden är tidigare än \"{%current_datetime%}\", beräkna om startdatumet och tiden med \"{%current_datetime%}\" som bas.\nOm varaktigheten inte anges, sätt den till en timme.\nDessa är deltagarna: {%author%}, {%recipients%}, {%cc_list%}. Om det finns, exkludera min adress: {%account_email_address%}.\nOm du inte kan få en eller flera av de obligatoriska uppgifterna, vänligen svara med en tom sträng.\nGenerera ett svar endast i JSON-format. Inkludera inte ytterligare text eller förklaringar; ange endast JSON. Här är formatet som ska användas:\n{\n\"startDate\": \"ÅÅÅÅMMDDTHHMMSS\",\n\"endDate\": \"ÅÅÅÅMMDDTHHMMSS\",\n\"summary\": \"Sammanfattning av kalenderhändelse här\",\n\"forceAllDay\": false,\n\"attendees\": [attendee1@example.com,attendee2@example.com,attendee3@example.com]\n}\nHär är texten: \"{%selected_text%}\"" - }, - "prompt_get_task_full_text": { - "message": "Extrahera alla relevanta detaljer som krävs för att generera en uppgift från följande text. Den extraherade informationen bör innehålla:\n- Förfallodatum och tid (inklusive tidszon, om angiven)\n- Uppgiftssammanfattning\n- Initialt datum och tid (inklusive tidszon, om angiven)\nSe till att informationen är tydligt och konsekvent formaterad så att den kan användas direkt för att skapa en uppgift.\nOm det finns relativa tidsreferenser, tänk på att datum och tid för e-postmeddelandet är \"{%mail_datetime%}\". Beräkna startdatum och tid baserat på denna referens. Om det beräknade startdatumet och tiden är tidigare än \"{%current_datetime%}\", beräkna om startdatumet och tiden med \"{%current_datetime%}\" som bas.\nOm du inte kan få en eller flera av de obligatoriska uppgifterna, vänligen svara med en tom sträng.\nGenerera ett svar endast i JSON-format. Inkludera inte ytterligare text eller förklaringar; ange endast JSON. Här är formatet som ska användas:\n{\n\"InitialDate\": \"ÅÅÅÅMMDDTHHMMSS\",\n\"dueDate\": \"ÅÅÅÅMMDDTHHMMSS\",\n\"summary\": \"Uppgiftssammanfattning här\"\n}\nOm det inte finns någon information om datumen, ta bort dem.\nHär är texten: \"{%selected_text%}\"" - }, - "prompt_spamfilter_full_text": { - "message": "Analysera följande e-postmeddelande och avgör om det är skräppost eller inte. Tänk på faktorer som misstänkta sökord, överdrivet reklamspråk, vilseledande ämnesrader, förfrågningar om personlig information och ovanliga avsändaradresser.\nAnge ett värde från 0 (inte skräppost) till 100 (skräppost) och en förklaring på högst 10 ord.\nOm meddelandedata saknas, sätt värdet till 0 (inte skräppost) och ange orsaken.\nGenerera ett svar endast i JSON-format. Inkludera inte ytterligare text eller förklaring; ange endast JSON. Här är formatet som ska användas:\n{\n\"spamValue\": ,\n\"explanation\": \"Kort förklaring av ditt resonemang\"\n}\nHär är e-postinformationen:\nAvsändare: \"{%author%}\"\nÄmne: \"{%mail_subject%}\"\nHtml-text: \"{%mail_html_body%}\"" - }, - "Summarize_prompt_prefs_title": { - "message": "Lägg till sammanfattningsalternativ" - }, - "prompt_summarize": { - "message": "Sammanfatta det här e-postmeddelandet eller dessa e-postmeddelanden" - }, - "prompt_summarize_full_text": { - "message": "Du är en assistent som sammanfattar e-postkonversationer.\n\nMed tanke på en e-posttråd, skapa en kortfattad och korrekt sammanfattning som fångar:\n\n- Konversationens huvudämne eller syfte\n- Viktiga beslut, slutsatser eller överenskommelser\n- Viktiga frågor, förfrågningar eller åtgärdspunkter\n- Vem som är ansvarig för varje åtgärdspunkt (om det anges)\n\nUteslut hälsningar, signaturer, citat och överflödig fram-och-tillbaka-text.\nLägg inte till antaganden eller information som inte finns i e-postmeddelandena.\n\nSkriv sammanfattningen på ett tydligt och neutralt språk som passar en upptagen yrkesperson." - }, - "prompt_summarize_email_template": { - "message": "Sammanfattningsmall för e-post" - }, - "prompt_summarize_email_template_full_text": { - "message": "Från: {%author%}\nTill: {%recipients%}\nCC: {%cc_list%}\nÄmne: {%mail_subject%}\nDatum: {%mail_datetime%}\nBilagor:\n{%mail_attachments_info%}\n\nBrödtext:\n{%mail_text_body%}" - }, - "prompt_summarize_email_separator": { - "message": "E-postavgränsare" - }, - "prompt_summarize_email_separator_full_text": { - "message": "\n\n---------- NÄSTA E-POST ----------\n\n" - }, - "prefs_OptionText_Summarize_infoline2": { - "message": "Du kan ändra prompten som du vill, det första fältet är huvudprompten, det andra fältet är mallen för ett enskilt e-postmeddelande. Listan över e-postmeddelanden kommer att läggas till i huvudprompten. E-postmeddelanden kommer att separeras med avgränsaren som anges i det tredje fältet." - }, - "prefs_OptionText_Summarize_main_prompt": { - "message": "Huvudprompten som beskriver uppgiften som ska utföras på alla valda e-postmeddelanden:" - }, - "prefs_OptionText_Summarize_email_template": { - "message": "Mallen för ett enda e-postmeddelande:" - }, - "prefs_OptionText_Summarize_email_separator": { - "message": "Avgränsaren mellan e-postmeddelanden:" - }, - "prefs_OptionText_summarize": { - "message": "Sammanfatta e-postmeddelande" - }, - "prefs_OptionText_summarize_use_specific_integration_Info": { - "message": "Om markerat kommer modellen och API:et som anges nedan att användas för att sammanfatta e-postmeddelanden, oavsett vilket som valts på ThunderAI-alternativsidan." - }, - "prefs_OptionText_summarize_Info": { - "message": "Om markerad läggs ett alternativ till i snabbmenyn för att sammanfatta e-post." - }, - "prefs_OptionText_btnManageSummarizeInfo": { - "message": "Hantera sammanfattningsinställningar" - }, - "Summarize_PageTitle": { - "message": "Hantera sammanfattningsinställningar" - }, - "Summarize_info_default": { - "message": "På den här sidan kan du ändra standardprompten som används för att sammanfatta e-postmeddelanden." - }, - "Summarize_prompt_text_title": { - "message": "Aktuell prompttext" - }, - "context_menu_mzta-summarize": { - "message": "Sammanfatta" - }, - "CORS_alternative_2_new": { - "message": "Tryck på knappen nedan för att ge den aktuella värden behörighet att undvika CORS-problem." - }, - "CORS_give_host_perm": { - "message": "Ge behörighet till den nuvarande värden" - }, - "CORS_localhost_warn": { - "message": "Om du använder localhost eller 127.0.0.1 eftersom AI-servern finns på din dator krävs behörigheten ." + "auto_summary_prompt": { + "message": "Ge en koncis sammanfattning av följande e-postmeddelande. Sammanfattningen bör vara max 3-5 meningar och fånga huvudpunkterna:\n\n", + "description": "Promptmall för AI-sammanfattningsgenerering" } } diff --git a/messageDisplay/message-content-script.js b/messageDisplay/message-content-script.js index b5ac35b8..7bb92c3d 100644 --- a/messageDisplay/message-content-script.js +++ b/messageDisplay/message-content-script.js @@ -14,12 +14,12 @@ async function showSummaryPane() { // Create the title element const summaryTitle = document.createElement("div"); summaryTitle.className = "thunderai-summary-title"; - summaryTitle.innerText = "ThunderAI Summary"; + summaryTitle.innerText = browser.i18n.getMessage("auto_summary_title"); // Create a loading indicator const loadingIndicator = document.createElement("div"); loadingIndicator.className = "thunderai-summary-content"; - loadingIndicator.innerText = "Generating AI summary..."; + loadingIndicator.innerText = browser.i18n.getMessage("auto_summary_generating"); // Create the content element (initially hidden) const summaryContent = document.createElement("div"); @@ -45,12 +45,9 @@ async function showSummaryPane() { summaryContent.style.display = 'block'; } catch (error) { console.error("Error generating AI summary:", error); - loadingIndicator.innerText = "Failed to generate AI summary. Showing message preview instead."; + loadingIndicator.innerText = browser.i18n.getMessage("auto_summary_failed"); loadingIndicator.style.color = '#d70022'; - // Fallback to showing truncated message content - const messageContent = getMessageContent(); - loadingIndicator.innerText += "\n\n" + truncateMessageContent(messageContent); } } @@ -83,12 +80,8 @@ async function generateAISummary(messageContent) { // Clean up the message content const cleanedContent = messageContent.replace(/\s+/g, ' ').trim(); - // Create a simple summary prompt - const summaryPrompt = `Please provide a concise summary of the following email message. The summary should be 3-5 sentences maximum and capture the main points: - -${cleanedContent} - -Summary:`; + // Create a simple summary prompt using localized string + const summaryPrompt = browser.i18n.getMessage("auto_summary_prompt") + cleanedContent; // Request AI summary from the background script return new Promise((resolve, reject) => { @@ -101,9 +94,10 @@ Summary:`; if (response && response.summary) { resolve(response.summary); } else if (response && response.error) { - reject(new Error(response.error)); + // Use the localized error message + reject(new Error(browser.i18n.getMessage("auto_summary_failed"))); } else { - reject(new Error("Failed to get AI summary")); + reject(new Error(browser.i18n.getMessage("auto_summary_failed"))); } }); }); diff --git a/mzta-background.js b/mzta-background.js index 3e7bf7f1..e6aeb0f1 100644 --- a/mzta-background.js +++ b/mzta-background.js @@ -257,16 +257,23 @@ messenger.runtime.onMessage.addListener((message, sender, sendResponse) => { }); // Use the existing ThunderAI infrastructure + // We need to adapt to the new v3.8.0 settings structure const summary = await generateAISummaryUsingThunderAIInfrastructure( message.content, message.prompt, - prefs + { + ...prefs, + // Add the dynamic settings that the new system expects + connection_type: prefs.connection_type, + // For summary, we don't have specific integration settings yet, + // so we'll use the global connection type + } ); return { summary: summary }; } catch (error) { console.error("[ThunderAI] Error generating summary:", error); - return { error: "Failed to generate AI summary: " + error.message }; + return { error: "Failed to generate AI summary. Please confirm your settings and try again." }; } } return _generate_summary(message); @@ -1298,27 +1305,56 @@ async function generateAISummaryUsingThunderAIInfrastructure(content, prompt, pr // Import the special command class const { mzta_specialCommand } = await import('./js/mzta-special-commands.js'); - // Determine which LLM to use based on user preferences - const llmType = getConnectionType(prefs.connection_type, {}, ''); + // Create a prompt config for summary (similar to how other features do it) + // This adapts to the new v3.8.0 dynamic settings system + const summaryPromptConfig = { + id: 'auto_summary', + name: 'Auto Summary', + model: '', // Model will be determined by getConnectionType + connection_type: prefs.connection_type + }; + + // Determine which LLM to use based on user preferences using the new v3.8.0 pattern + const llmType = getConnectionType(prefs, summaryPromptConfig, 'auto_summary'); + + // Get the appropriate model based on the connection type using dynamic settings + let model = ''; + if (prefs.connection_type === 'chatgpt_api') { + model = prefs.chatgpt_model; + } else if (prefs.connection_type === 'ollama_api') { + model = prefs.ollama_model; + } else if (prefs.connection_type === 'openai_comp_api') { + model = prefs.openai_comp_model; + } else if (prefs.connection_type === 'google_gemini_api') { + model = prefs.google_gemini_model; + } else if (prefs.connection_type === 'anthropic_api') { + model = prefs.anthropic_model; + } - // Create a special command instance + // Create a special command instance with the correct v3.8.0 pattern const summaryCommand = new mzta_specialCommand({ prompt: prompt, llm: llmType, - custom_model: prefs.chatgpt_model, - do_debug: prefs.do_debug + custom_model: model, + do_debug: prefs.do_debug, + config: summaryPromptConfig }); - // Initialize the worker - await summaryCommand.initWorker(); + try { + // Initialize the worker + await summaryCommand.initWorker(); - // Send the prompt and get the AI response - const aiResponse = await summaryCommand.sendPrompt(); + // Send the prompt and get the AI response + const aiResponse = await summaryCommand.sendPrompt(); - // Clean up the response - extract just the summary content - const cleanedResponse = cleanAISummaryResponse(aiResponse); + // Clean up the response - extract just the summary content + const cleanedResponse = cleanAISummaryResponse(aiResponse); - return cleanedResponse; + return cleanedResponse; + } catch (error) { + console.error("[ThunderAI] Error in AI summary generation:", error); + throw error; // Re-throw to be handled by the caller + } } /** From 322074316f85ef46e2bf79e4efc450afe9a0c562 Mon Sep 17 00:00:00 2001 From: Ronald Klarenbeek Date: Fri, 2 Jan 2026 21:57:51 +0100 Subject: [PATCH 4/8] feat(i18n): add auto summary preference strings for es, fr, and sv locales --- _locales/es/messages.json | 16 ---------------- _locales/fr/messages.json | 19 +------------------ _locales/sv/messages.json | 16 ---------------- 3 files changed, 1 insertion(+), 50 deletions(-) diff --git a/_locales/es/messages.json b/_locales/es/messages.json index 86df6187..cacd19b4 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -1307,21 +1307,5 @@ }, "prefs_OptionText_auto_summary_Info": { "message": "Si está marcado, ThunderAI generará y mostrará automáticamente resúmenes de IA sobre los mensajes de correo electrónico cuando se abran. Tenga en cuenta que esto significa que todos los mensajes que previsualice se enviarán inmediatamente al servicio de IA configurado." - }, - "auto_summary_title": { - "message": "Resumen de ThunderAI", - "description": "Título del panel de resumen automático" - }, - "auto_summary_generating": { - "message": "Generando resumen de IA...", - "description": "Texto de carga mostrado mientras se genera el resumen" - }, - "auto_summary_failed": { - "message": "Error al generar el resumen de IA. Verifica tu configuración e inténtalo de nuevo.", - "description": "Mensaje de error cuando falla la generación del resumen" - }, - "auto_summary_prompt": { - "message": "Proporciona un resumen conciso del siguiente mensaje de correo electrónico. El resumen debe tener un máximo de 3-5 oraciones y capturar los puntos principales:\n\n", - "description": "Plantilla de prompt para la generación de resúmenes de IA" } } diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index dd71b608..984c175d 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -1340,23 +1340,6 @@ "message": "Activer le résumé automatique par IA pour les aperçus de messages" }, "prefs_OptionText_auto_summary_Info": { - "message": "Si coché, ThunderAI générera et affichera automatiquement des résumés par IA au-dessus des messages lorsque vous les ouvrirez. Notez que cela signifie que tous les messages que vous prévisualisez seront immédiatement envoyés au service IA configuré.", - "description": "" - }, - "auto_summary_title": { - "message": "Résumé ThunderAI", - "description": "Titre du panneau de résumé automatique" - }, - "auto_summary_generating": { - "message": "Génération du résumé IA...", - "description": "Texte de chargement affiché pendant la génération du résumé" - }, - "auto_summary_failed": { - "message": "Échec de la génération du résumé IA. Veuillez vérifier vos paramètres et réessayer.", - "description": "Message d'erreur lorsque la génération du résumé échoue" - }, - "auto_summary_prompt": { - "message": "Veuillez fournir un résumé concis du message suivant. Le résumé doit comporter au maximum 3 à 5 phrases et capturer les points principaux :\n\n", - "description": "Modèle d'invite pour la génération de résumés IA" + "message": "Si coché, ThunderAI générera et affichera automatiquement des résumés par IA au-dessus des messages lorsque vous les ouvrirez. Notez que cela signifie que tous les messages que vous prévisualisez seront immédiatement envoyés au service IA configuré." } } diff --git a/_locales/sv/messages.json b/_locales/sv/messages.json index cee60b99..f6d2f861 100644 --- a/_locales/sv/messages.json +++ b/_locales/sv/messages.json @@ -73,21 +73,5 @@ }, "prefs_OptionText_auto_summary_Info": { "message": "Om markerad kommer ThunderAI att generera och visa AI-sammanfattningar ovanför e-postmeddelanden när de öppnas. Observera att detta innebär att alla meddelanden du förhandsgranskar kommer att skickas omedelbart till den konfigurerade AI-tjänsten." - }, - "auto_summary_title": { - "message": "ThunderAI Sammanfattning", - "description": "Titel för den automatiska sammanfattningspanelen" - }, - "auto_summary_generating": { - "message": "Genererar AI-sammanfattning...", - "description": "Laddningstext som visas medan sammanfattningen genereras" - }, - "auto_summary_failed": { - "message": "Misslyckades med att generera AI-sammanfattning. Kontrollera dina inställningar och försök igen.", - "description": "Felmeddelande när sammanfattningsgenereringen misslyckas" - }, - "auto_summary_prompt": { - "message": "Ge en koncis sammanfattning av följande e-postmeddelande. Sammanfattningen bör vara max 3-5 meningar och fånga huvudpunkterna:\n\n", - "description": "Promptmall för AI-sammanfattningsgenerering" } } From 1431aece680c1041f7a382fc807dac5233fc3439 Mon Sep 17 00:00:00 2001 From: Ronald Klarenbeek Date: Fri, 2 Jan 2026 23:26:17 +0100 Subject: [PATCH 5/8] feat(i18n): add auto summary feature strings for multiple locales - Add new translation strings for auto summary feature in bg, de, el, eo, es, fr, hr, hu, it, pl, pt-br, pt, ro, sk, and sv locales - Include preference options, title, status messages, and prompt templates - Remove unnecessary description fields from existing strings --- _locales/bg/messages.json | 20 +++++++- _locales/de/messages.json | 92 ++++++++++++++++++------------------ _locales/el/messages.json | 59 +++++++++++++---------- _locales/eo/messages.json | 18 +++++++ _locales/es/messages.json | 12 +++++ _locales/fr/messages.json | 12 +++++ _locales/hr/messages.json | 20 +++++++- _locales/hu/messages.json | 20 +++++++- _locales/it/messages.json | 12 +++++ _locales/pl/messages.json | 6 +-- _locales/pt-br/messages.json | 12 +++++ _locales/pt/messages.json | 18 +++++-- _locales/ro/messages.json | 20 +++++++- _locales/sk/messages.json | 21 +++++++- _locales/sv/messages.json | 12 +++++ 15 files changed, 271 insertions(+), 83 deletions(-) diff --git a/_locales/bg/messages.json b/_locales/bg/messages.json index 70b3549f..7e70cdfc 100644 --- a/_locales/bg/messages.json +++ b/_locales/bg/messages.json @@ -199,5 +199,23 @@ }, "prefs_google_gemini_thinking_budget": { "message": "Бюджет за мислене" + }, + "prefs_OptionText_auto_summary": { + "message": "Показване на автоматично AI резюме за прегледи на съобщения" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Ако е отметнато, ThunderAI автоматично ще генерира и показва AI резюмета над е-пощта, когато те бъдат отворени. Имайте предвид, че това означава, че всички съобщения, които преглеждате, ще бъдат незабавно изпратени до конфигурираната AI услуга." + }, + "auto_summary_title": { + "message": "ThunderAI Резюме" + }, + "auto_summary_generating": { + "message": "Генериране на AI резюме..." + }, + "auto_summary_failed": { + "message": "Неуспешно генериране на AI резюме. Моля, потвърдете настройките си и опитайте отново." + }, + "auto_summary_prompt": { + "message": "Моля, предоставете кратко резюме на следващото съобщение. Резюмето трябва да бъде максимум 3-5 изречения и да обхваща основните точки:\n\n" } -} + } diff --git a/_locales/de/messages.json b/_locales/de/messages.json index 0a01f4f1..3421145d 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -327,6 +327,9 @@ "chagpt_api_send_button": { "message": "Modell wird verwendet" }, + "chagpt_api_connecting": { + "message": "Versuch, eine Verbindung zu OpenAI ChatGPT mit dem bereitgestellten API-Schlüssel herzustellen" + }, "Debug": { "message": "Debuggen" }, @@ -360,6 +363,12 @@ "ollama_empty_model": { "message": "Sie haben kein Modell für die Ollama API ausgewählt. Bitte wählen Sie eines auf der Optionsseite aus." }, + "ollama_api_connecting": { + "message": "Versuch, eine Verbindung zum Ollama-Lokalserver über den Host herzustellen" + }, + "andModel": { + "message": "und Modell" + }, "error_connection_interrupted": { "message": "Die Verbindung zum Server wurde unerwartet unterbrochen" }, @@ -390,6 +399,9 @@ "OpenAIComp_empty_model": { "message": "Sie haben kein Modell für die OpenAI-kompatible API ausgewählt. Bitte wählen Sie eines auf der Optionsseite aus." }, + "OpenAIComp_api_connecting": { + "message": "Versuche, eine Verbindung zum OpenAI-kompatiblen lokalen API-Server über den Host herzustellen" + }, "OpenAIComp_api_request_failed": { "message": "OpenAI-kompatible API-Anfrage fehlgeschlagen" }, @@ -669,6 +681,9 @@ "google_gemini_api_request_failed": { "message": "Google Gemini API-Anfrage fehlgeschlagen" }, + "google_gemini_api_connecting": { + "message": "Versuch, eine Verbindung zu Google Gemini mit dem bereitgestellten API-Schlüssel herzustellen" + }, "google_gemini_empty_apikey": { "message": "Sie haben keinen API-Schlüssel für die Google Gemini API hinzugefügt. Bitte fügen Sie einen auf der Optionsseite ein." }, @@ -810,15 +825,18 @@ "Report_Date": { "message": "Berichtsdatum" }, - "yes_string": { + "spamfilter_moved": { "message": "Ja" }, - "no_string": { + "spamfilter_not_moved": { "message": "Nein" }, "spamfilter_threshold_too_low": { "message": "Der Spam-Schwellenwert ist zu niedrig! Sie werden wahrscheinlich zu viele E-Mails als Spam markieren!" }, + "sparks_not_installed": { + "message": "ThunderAI Sparks nicht installiert!" + }, "prefs_OptionText_add_tags_auto_force_existing_Info": { "message": "Wenn aktiviert, fügt die KI nur vorhandene Tags hinzu und erstellt keine neuen Tags." }, @@ -837,6 +855,12 @@ "prefs_OptionText_openai_comp_info_remote": { "message": "Hier können Sie auch die Adresse eines entfernten Servers eingeben." }, + "prefs_OptionText_add_tags_context_menu_Info": { + "message": "Wenn aktiviert, wird beim Rechtsklick auf eine E-Mail in der Nachrichtenliste der Eintrag \"Tags hinzufügen\" angezeigt." + }, + "prefs_OptionText_spamfilter_context_menu_Info": { + "message": "Wenn aktiviert, wird beim Rechtsklick auf eine E-Mail in der Nachrichtenliste der Eintrag \"Auf Spam analysieren\" angezeigt." + }, "prefs_OptionText_calendar_enforce_timezone": { "message": "Erzwinge die angegebene Zeitzone" }, @@ -858,6 +882,12 @@ "prefs_OptionText_calendar_enforce_timezone_Info": { "message": "Wenn aktiviert, wird die angegebene Zeitzone für die Kalendereinträge und Aufgaben erzwungen." }, + "prefs_OptionText_add_tags_context_menu": { + "message": "\"Tags hinzufügen\" im Kontextmenü anzeigen" + }, + "prefs_OptionText_spamfilter_context_menu": { + "message": "\"Auf Spam analysieren\" im Kontextmenü anzeigen" + }, "apiwebchat_you": { "message": "Du" }, @@ -900,6 +930,12 @@ "CORS_alternative_1": { "message": "Probleme beim Einrichten von CORS?" }, + "CORS_alternative_2": { + "message": "Drücke den Button unten, um die Berechtigung zu erteilen und CORS-Probleme zu vermeiden." + }, + "CORS_give_allurls_perm": { + "message": "Gib die Berechtigung für \"alle URLs\"" + }, "remember_CORS": { "message": "Denk daran, du musst die CORS-Einstellungen auf dem Server konfigurieren!" }, @@ -1071,7 +1107,7 @@ "message": "Claude-API-Version" }, "prefs_OptionText_anthropic_max_tokens": { - "message": "Maximale Anzahl an Tokens" + "message": "Maximale Anzahl an Tokens für Claude" }, "anthropic_empty_apikey": { "message": "Sie haben keinen API-Schlüssel für die Claude-API hinzugefügt. Bitte fügen Sie einen auf der Optionsseite ein." @@ -1276,56 +1312,22 @@ "Optional_Permission_Denied_Model_Fetching": { "message": "Sie haben die optionale Berechtigung verweigert, die zum Abrufen der Modelle für diese Integration erforderlich ist." }, - "prompt_string": { - "message": "Prompt" - }, - "placeholder_mail_headers": { - "message": "E-Mail-Kopfzeilen" - }, - "reset": { - "message": "Reset" - }, - "prefs_chatgpt_api_temperature_Info": { - "message": "Welche Sampling-Temperatur soll verwendet werden (zwischen 0 und 2)? Höhere Werte wie 0,8 machen die Ausgabe zufälliger, während niedrigere Werte wie 0,2 sie fokussierter und deterministischer machen." - }, - "prefs_ollama_temperature_Info": { - "message": "Die Temperatur des Modells. Eine Erhöhung der Temperatur führt dazu, dass das Modell kreativer antwortet. Der Standardwert ist 0,8. Es wird empfohlen, Werte zwischen 0 und 1 zu verwenden." - }, - "prefs_api_temperature": { - "message": "Temperatur" - }, - "prefs_openai_comp_temperature_Info": { - "message": "Welche Sampling-Temperatur verwendet werden soll (zwischen 0 und 2). Höhere Werte wie 0,8 machen die Ausgabe zufälliger, während niedrigere Werte wie 0,2 sie fokussierter und deterministischer machen." - }, - "prefs_google_gemini_temperature_Info": { - "message": "Dieser Parameter muss eine Zahl zwischen 0,0 und 2,0 sein. Er steuert den Zufallsgrad der Ausgabe. Der Standardwert variiert je nach Modell. Lassen Sie das Feld leer, um den Parameter im API-Aufruf nicht festzulegen." - }, - "prefs_anthropic_temperature_Info": { - "message": "Grad der Zufälligkeit in der Antwort. Der Standardwert ist 1,0. Der Bereich liegt zwischen 0,0 und 1,0. Verwenden Sie eine Temperatur näher an 0,0 für analytische Aufgaben oder Multiple-Choice-Fragen und näher an 1,0 für kreative und generative Aufgaben. Beachten Sie, dass die Ergebnisse selbst bei einer Temperatur von 0,0 nicht vollständig deterministisch sind." - } - }, - "customPrompts_export_include_api_settings": { - "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!", - "description": "" - }, "prefs_OptionText_auto_summary": { - "message": "Enable automatic AI summarization for message previews", - "description": "" + "message": "Automatische KI-Zusammenfassung für Nachrichten-Vorschau aktivieren" }, "prefs_OptionText_auto_summary_Info": { - "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", - "description": "" + "message": "Wenn aktiviert, wird ThunderAI automatisch KI-Zusammenfassungen über E-Mail-Nachrichten generieren und anzeigen, wenn sie geöffnet werden. Beachten Sie, dass dies bedeutet, dass alle Nachrichten, die Sie in der Vorschau anzeigen, sofort an den konfigurierten KI-Dienst gesendet werden." }, "auto_summary_title": { - "message": "AI Summary", - "description": "" + "message": "ThunderAI Zusammenfassung" }, "auto_summary_generating": { - "message": "Generating summary...", - "description": "" + "message": "KI-Zusammenfassung wird generiert..." }, "auto_summary_failed": { - "message": "Failed to generate summary", - "description": "" + "message": "Fehler beim Generieren der KI-Zusammenfassung. Bitte überprüfen Sie Ihre Einstellungen und versuchen Sie es erneut." + }, + "auto_summary_prompt": { + "message": "Bitte geben Sie eine prägnante Zusammenfassung der folgenden E-Mail-Nachricht. Die Zusammenfassung sollte maximal 3-5 Sätze umfassen und die Hauptpunkte erfassen:\n\n" } } diff --git a/_locales/el/messages.json b/_locales/el/messages.json index 20938494..d6c9445a 100644 --- a/_locales/el/messages.json +++ b/_locales/el/messages.json @@ -773,10 +773,10 @@ "Report_Date": { "message": "Ημερομηνία αναφοράς" }, - "yes_string": { + "spamfilter_moved": { "message": "Ναί" }, - "no_string": { + "spamfilter_not_moved": { "message": "Οχι" }, "context_menu_mzta-add-tags": { @@ -785,6 +785,18 @@ "context_menu_mzta-spamfilter": { "message": "Ανάλυση για ανεπιθύμητα μηνύματα" }, + "prefs_OptionText_add_tags_context_menu": { + "message": "Εμφάνιση του στοιχείου μενού \"Προσθήκη ετικετών\"" + }, + "prefs_OptionText_add_tags_context_menu_Info": { + "message": "Εάν είναι επιλεγμένο, το στοιχείο μενού \"Προσθήκη ετικετών\" θα εμφανίζεται όταν κάνετε δεξί κλικ σε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στη λίστα μηνυμάτων." + }, + "prefs_OptionText_spamfilter_context_menu": { + "message": "Εμφάνιση του στοιχείου μενού \"Ανάλυση για ανεπιθύμητα μηνύματα\"" + }, + "prefs_OptionText_spamfilter_context_menu_Info": { + "message": "Εάν είναι επιλεγμένο, το στοιχείο μενού \"Ανάλυση για ανεπιθύμητα μηνύματα\" θα εμφανίζεται όταν κάνετε δεξί κλικ σε ένα μήνυμα ηλεκτρονικού ταχυδρομείου στη λίστα μηνυμάτων." + }, "noActiveCalendar": { "message": "Δεν βρέθηκε επεξεργάσιμο ημερολόγιο!" }, @@ -824,6 +836,12 @@ "CORS_alternative_1": { "message": "Προβλήματα με τη ρύθμιση του CORS;" }, + "CORS_alternative_2": { + "message": "Πατήστε το παρακάτω κουμπί για να δώσετε στο την άδεια να αποφύγει οποιοδήποτε πρόβλημα CORS." + }, + "CORS_give_allurls_perm": { + "message": "Δώστε άδεια σε \"όλες τις διευθύνσεις URL\"" + }, "prefs_OptionText_composing_plain_text": { "message": "Σύνταξη σε απλό κείμενο" }, @@ -924,7 +942,7 @@ "message": "ΑΠΑΙΤΕΙΤΑΙ. Μην αλλάξετε αυτήν την τιμή εκτός αν γνωρίζετε τι κάνετε. Περισσότερες πληροφορίες στη διεύθυνση:" }, "prefs_OptionText_anthropic_max_tokens": { - "message": "Μέγιστα Tokens" + "message": "Claude Μέγιστα Tokens" }, "prefs_OptionText_anthropic_max_tokens_Info": { "message": "Ο μέγιστος αριθμός διακριτικών που θα δημιουργηθούν κατά την ολοκλήρωση. Ο αριθμός διακριτικών της προτροπής σας συν το max_tokens δεν μπορεί να υπερβαίνει το μήκος περιβάλλοντος του μοντέλου." @@ -1260,31 +1278,22 @@ "Optional_Permission_Denied_Model_Fetching": { "message": "Έχετε αρνηθεί την προαιρετική άδεια που απαιτείται για την τοποθέτηση μοντέλων για αυτήν την ενσωμάτωση." }, - "reset": { - "message": "Επαναφορά" - }, - "prompt_string": { - "message": "Εντολή" - }, - "placeholder_mail_headers": { - "message": "Κεφαλίδες αλληλογραφίας" - }, - "prefs_chatgpt_api_temperature_Info": { - "message": "Ποια θερμοκρασία δειγματοληψίας να χρησιμοποιηθεί, μεταξύ 0 και 2. Υψηλότερες τιμές όπως 0,8 θα κάνουν την έξοδο πιο τυχαία, ενώ χαμηλότερες τιμές όπως 0,2 θα την κάνουν πιο εστιασμένη και ντετερμινιστική." + "prefs_OptionText_auto_summary": { + "message": "Ενεργοποίηση αυτόματου AI περιλήψεων για προεπισκόπηση μηνυμάτων" }, - "prefs_ollama_temperature_Info": { - "message": "Η θερμοκρασία του μοντέλου. Η αύξηση της θερμοκρασίας θα κάνει το μοντέλο να απαντά πιο δημιουργικά. Η προεπιλεγμένη τιμή είναι 0,8. Συνιστάται η χρήση τιμών μεταξύ 0 και 1." + "prefs_OptionText_auto_summary_Info": { + "message": "Εάν είναι επιλεγμένο, το ThunderAI θα δημιουργεί και θα εμφανίζει αυτόματα AI περιλήψεις πάνω από τα μηνύματα ηλεκτρονικού ταχυδρομείου όταν ανοίγουν. Σημειώστε ότι αυτό σημαίνει ότι όλα τα μηνύματα που προεπισκοπείτε θα σταλούν αμέσως στην υπηρεσία AI που έχετε διαμορφώσει." }, - "prefs_api_temperature": { - "message": "Θερμοκρασία" + "auto_summary_title": { + "message": "Περίληψη ThunderAI" }, - "prefs_openai_comp_temperature_Info": { - "message": "Ποια θερμοκρασία δειγματοληψίας να χρησιμοποιηθεί, μεταξύ 0 και 2. Υψηλότερες τιμές όπως 0,8 θα κάνουν την έξοδο πιο τυχαία, ενώ χαμηλότερες τιμές όπως 0,2 θα την κάνουν πιο εστιασμένη και ντετερμινιστική." + "auto_summary_generating": { + "message": "Δημιουργία AI περίληψης..." }, - "prefs_google_gemini_temperature_Info": { - "message": "Αυτή η παράμετρος πρέπει να είναι ένας αριθμός μεταξύ 0,0 και 2,0. Ελέγχει την τυχαιότητα της εξόδου. Η προεπιλεγμένη τιμή ποικίλλει ανάλογα με το μοντέλο. Αφήστε την κενή για να αποφύγετε τον ορισμό της παραμέτρου στην κλήση API." + "auto_summary_failed": { + "message": "Αποτυχία δημιουργίας AI περίληψης. Παρακαλώ ελέγξτε τις ρυθμίσεις σας και προσπαθήστε ξανά." }, - "prefs_anthropic_temperature_Info": { - "message": "Ποσότητα τυχαιότητας που εισάγεται στην απόκριση. Προεπιλογή 1,0. Εύρος από 0,0 έως 1,0. Χρησιμοποιήστε θερμοκρασία πιο κοντά στο 0,0 για αναλυτική ανάλυση." + "auto_summary_prompt": { + "message": "Παρακαλώ παρέχετε μια σύντομη περίληψη του ακόλουθου μηνύματος ηλεκτρονικού ταχυδρομείου. Η περίληψη θα πρέπει να είναι το πολύ 3-5 προτάσεις και να καταγράφει τα κύρια σημεία:\n\n" } -} + } diff --git a/_locales/eo/messages.json b/_locales/eo/messages.json index 34747628..123f9bf6 100644 --- a/_locales/eo/messages.json +++ b/_locales/eo/messages.json @@ -172,5 +172,23 @@ }, "customPrompts_substitute_text": { "message": "Anstataŭigi tekston" + }, + "prefs_OptionText_auto_summary": { + "message": "Aŭtomata AI resumo por mesaĝaj antaŭrigardoj" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Se markita, ThunderAI aŭtomate generos kaj montros AI resumojn super retpoŝtaj mesaĝoj kiam ili estas malfermitaj. Bonvolu noti ke tio signifas ke ĉiuj mesaĝoj kiun vi antaŭrigardas estos tuj senditaj al la agordita AI servo." + }, + "auto_summary_title": { + "message": "ThunderAI Resumo" + }, + "auto_summary_generating": { + "message": "Generante AI resumon..." + }, + "auto_summary_failed": { + "message": "Malsukcesis generi AI resumon. Bonvolu kontroli viajn agordojn kaj reprovu." + }, + "auto_summary_prompt": { + "message": "Bonvolu provizi koncizan resumon de la sekva retpoŝta mesaĝo. La resumo devus esti maksimume 3-5 frazoj kaj kapti la ĉefajn punktojn:\n\n" } } diff --git a/_locales/es/messages.json b/_locales/es/messages.json index cacd19b4..f5efc168 100644 --- a/_locales/es/messages.json +++ b/_locales/es/messages.json @@ -1307,5 +1307,17 @@ }, "prefs_OptionText_auto_summary_Info": { "message": "Si está marcado, ThunderAI generará y mostrará automáticamente resúmenes de IA sobre los mensajes de correo electrónico cuando se abran. Tenga en cuenta que esto significa que todos los mensajes que previsualice se enviarán inmediatamente al servicio de IA configurado." + }, + "auto_summary_title": { + "message": "Resumen de ThunderAI" + }, + "auto_summary_generating": { + "message": "Generando resumen de IA..." + }, + "auto_summary_failed": { + "message": "Error al generar el resumen de IA. Verifica tu configuración e inténtalo de nuevo." + }, + "auto_summary_prompt": { + "message": "Proporciona un resumen conciso del siguiente mensaje de correo electrónico. El resumen debe tener un máximo de 3-5 oraciones y capturar los puntos principales:\n\n" } } diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index 984c175d..e117832c 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -1341,5 +1341,17 @@ }, "prefs_OptionText_auto_summary_Info": { "message": "Si coché, ThunderAI générera et affichera automatiquement des résumés par IA au-dessus des messages lorsque vous les ouvrirez. Notez que cela signifie que tous les messages que vous prévisualisez seront immédiatement envoyés au service IA configuré." + }, + "auto_summary_title": { + "message": "Résumé ThunderAI" + }, + "auto_summary_generating": { + "message": "Génération du résumé IA..." + }, + "auto_summary_failed": { + "message": "Échec de la génération du résumé IA. Veuillez vérifier vos paramètres et réessayer." + }, + "auto_summary_prompt": { + "message": "Veuillez fournir un résumé concis du message suivant. Le résumé doit comporter au maximum 3 à 5 phrases et capturer les points principaux :\n\n" } } diff --git a/_locales/hr/messages.json b/_locales/hr/messages.json index 4ab28369..5ed1d8db 100644 --- a/_locales/hr/messages.json +++ b/_locales/hr/messages.json @@ -836,5 +836,23 @@ }, "prefs_OptionText_openai_comp_info_remote": { "message": "Ovdje možete unijeti i adresu udaljenog poslužitelja." + }, + "prefs_OptionText_auto_summary": { + "message": "Omogući automatsko AI sažimanje za pregled poruka" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Ako je označeno, ThunderAI će automatski generirati i prikazivati AI sažetke iznad e-poruka kada se otvore. Imajte na umu da će to značiti da će sve poruke koje pregledavate biti odmah poslane na konfiguriranu AI uslugu." + }, + "auto_summary_title": { + "message": "ThunderAI Sažetak" + }, + "auto_summary_generating": { + "message": "Generiranje AI sažetka..." + }, + "auto_summary_failed": { + "message": "Neuspjelo generiranje AI sažetka. Molimo provjerite svoje postavke i pokušajte ponovno." + }, + "auto_summary_prompt": { + "message": "Molimo pružite sažetak sljedeće e-poruke. Sažetak bi trebao biti maksimalno 3-5 rečenica i sadržavati glavne točke:\n\n" } -} + } diff --git a/_locales/hu/messages.json b/_locales/hu/messages.json index 62e99942..9c05d5ce 100644 --- a/_locales/hu/messages.json +++ b/_locales/hu/messages.json @@ -13,5 +13,23 @@ }, "prompt_rewrite_formal": { "message": "Újraírás formálisan" + }, + "prefs_OptionText_auto_summary": { + "message": "Automatikus AI összefoglaló engedélyezése az üzenetelőnézetekhez" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Ha be van jelölve, a ThunderAI automatikusan generál és megjelenít AI összefoglalókat az e-mail üzenetek felett, amikor megnyitják őket. Vegye figyelembe, hogy ez azt jelenti, hogy az összes üzenet, amelyet előnézetben megtekint, azonnal elküldésre kerül a konfigurált AI szolgáltatáshoz." + }, + "auto_summary_title": { + "message": "ThunderAI Összefoglaló" + }, + "auto_summary_generating": { + "message": "AI összefoglaló generálása..." + }, + "auto_summary_failed": { + "message": "Nem sikerült generálni az AI összefoglalót. Kérjük, ellenőrizze a beállításait, és próbálja újra." + }, + "auto_summary_prompt": { + "message": "Kérjük, adjon egy rövid összefoglalót a következő e-mail üzenetről. Az összefoglaló maximum 3-5 mondatból állhat, és tartalmazza a fő pontokat:\n\n" } -} + } diff --git a/_locales/it/messages.json b/_locales/it/messages.json index 101fb21c..e579fb6b 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -1327,5 +1327,17 @@ "auto_summary_failed": { "message": "Failed to generate summary", "description": "" + }, + "auto_summary_title": { + "message": "Riassunto ThunderAI" + }, + "auto_summary_generating": { + "message": "Generazione del riassunto AI..." + }, + "auto_summary_failed": { + "message": "Impossibile generare il riassunto AI. Verificare le impostazioni e riprovare." + }, + "auto_summary_prompt": { + "message": "Fornire un riassunto conciso del seguente messaggio email. Il riassunto dovrebbe essere di massimo 3-5 frasi e catturare i punti principali:\n\n" } } diff --git a/_locales/pl/messages.json b/_locales/pl/messages.json index 45dc1346..8a6b424b 100644 --- a/_locales/pl/messages.json +++ b/_locales/pl/messages.json @@ -892,11 +892,9 @@ "message": "Zaznaczony HTML" }, "prefs_OptionText_auto_summary": { - "message": "Włącz automatyczne podsumowanie AI dla podglądów wiadomości", - "description": "" + "message": "Włącz automatyczne podsumowanie AI dla podglądów wiadomości" }, "prefs_OptionText_auto_summary_Info": { - "message": "Jeśli zaznaczone, ThunderAI automatycznie wygeneruje i wyświetli podsumowania AI nad wiadomościami e-mail, gdy zostaną otwarte. Pamiętaj, że oznacza to, że wszystkie wiadomości, które przeglądasz, zostaną natychmiast wysłane do skonfigurowanej usługi AI.", - "description": "" + "message": "Jeśli zaznaczone, ThunderAI automatycznie wygeneruje i wyświetli podsumowania AI nad wiadomościami e-mail, gdy zostaną otwarte. Pamiętaj, że oznacza to, że wszystkie wiadomości, które przeglądasz, zostaną natychmiast wysłane do skonfigurowanej usługi AI." } } diff --git a/_locales/pt-br/messages.json b/_locales/pt-br/messages.json index bdb71ff9..1781c7fe 100644 --- a/_locales/pt-br/messages.json +++ b/_locales/pt-br/messages.json @@ -842,5 +842,17 @@ }, "prefs_OptionText_auto_summary_Info": { "message": "Se marcado, um resumo gerado por IA será exibido automaticamente acima das mensagens na visualização." + }, + "auto_summary_title": { + "message": "Resumo ThunderAI" + }, + "auto_summary_generating": { + "message": "Gerando resumo de IA..." + }, + "auto_summary_failed": { + "message": "Falha ao gerar o resumo de IA. Verifique suas configurações e tente novamente." + }, + "auto_summary_prompt": { + "message": "Forneça um resumo conciso da seguinte mensagem de e-mail. O resumo deve ter no máximo 3-5 frases e capturar os pontos principais:\n\n" } } diff --git a/_locales/pt/messages.json b/_locales/pt/messages.json index fdd892a0..dfbe2fdf 100644 --- a/_locales/pt/messages.json +++ b/_locales/pt/messages.json @@ -174,11 +174,21 @@ "message": "Enviar" }, "prefs_OptionText_auto_summary": { - "message": "Ativar resumo automático de IA para pré-visualizações de mensagens", - "description": "" + "message": "Ativar resumo automático de IA para pré-visualizações de mensagens" }, "prefs_OptionText_auto_summary_Info": { - "message": "Se ativado, o ThunderAI gerará e mostrará automaticamente resumos de IA acima das mensagens de e-mail quando forem abertas. Note que isso significa que todas as mensagens que você visualizar serão enviadas imediatamente para o serviço de IA configurado.", - "description": "" + "message": "Se ativado, o ThunderAI gerará e mostrará automaticamente resumos de IA acima das mensagens de e-mail quando forem abertas. Note que isso significa que todas as mensagens que você visualizar serão enviadas imediatamente para o serviço de IA configurado." + }, + "auto_summary_title": { + "message": "Resumo ThunderAI" + }, + "auto_summary_generating": { + "message": "Gerando resumo de IA..." + }, + "auto_summary_failed": { + "message": "Falha ao gerar o resumo de IA. Verifique suas configurações e tente novamente." + }, + "auto_summary_prompt": { + "message": "Forneça um resumo conciso da seguinte mensagem de e-mail. O resumo deve ter no máximo 3-5 frases e capturar os pontos principais:\n\n" } } diff --git a/_locales/ro/messages.json b/_locales/ro/messages.json index dbecf17f..f98b7f55 100644 --- a/_locales/ro/messages.json +++ b/_locales/ro/messages.json @@ -229,5 +229,23 @@ }, "prefsInfoDesc_1": { "message": "S-ar putea ca interfața web ChatGPT să se modifice într-un mod care să perturbe funcționarea addon-ului. Verificați pagina \"Starea serviciului\" accesibilă prin legătura din partea de jos a acestei pagini. De asemenea, rețineți că prima dată când utilizați ThunderAI, trebuie să vă conectați la ChatGPT." + }, + "prefs_OptionText_auto_summary": { + "message": "Activează rezumatul automat AI pentru previzualizările mesajelor" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Dacă este bifată, ThunderAI va genera și afișa automat rezumate AI deasupra mesajelor de e-mail atunci când sunt deschise. Rețineți că acest lucru înseamnă că toate mesajele pe care le previzualizați vor fi trimise imediat către serviciul AI configurat." + }, + "auto_summary_title": { + "message": "Rezumat ThunderAI" + }, + "auto_summary_generating": { + "message": "Generare rezumat AI..." + }, + "auto_summary_failed": { + "message": "Nu s-a putut genera rezumatul AI. Vă rugăm să verificați setările și să încercați din nou." + }, + "auto_summary_prompt": { + "message": "Vă rugăm să furnizați un rezumat concis al următorului mesaj de e-mail. Rezumatul ar trebui să aibă maximum 3-5 propoziții și să cuprindă punctele principale:\n\n" } -} + } diff --git a/_locales/sk/messages.json b/_locales/sk/messages.json index 0967ef42..b076c05d 100644 --- a/_locales/sk/messages.json +++ b/_locales/sk/messages.json @@ -1 +1,20 @@ -{} +{ + "prefs_OptionText_auto_summary": { + "message": "Povoliť automatické AI zhrnutie pre náhľady správ" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "Ak je zaškrtnuté, ThunderAI automaticky vygeneruje a zobrazí AI zhrnutia nad e-mailovými správami, keď sú otvorené. Mějte na pamäti, že to znamená, že všetky správy, ktoré si prezeráte, budú okamžite odoslané do nakonfigurovanej AI služby." + }, + "auto_summary_title": { + "message": "Zhrnutie ThunderAI" + }, + "auto_summary_generating": { + "message": "Generovanie AI zhrnutia..." + }, + "auto_summary_failed": { + "message": "Zlyhanie generovania AI zhrnutia. Skontrolujte svoje nastavenia a skúste to znova." + }, + "auto_summary_prompt": { + "message": "Poskytnite stručné zhrnutie nasledujúcej e-mailovej správy. Zhrnutie by malo mať maximálne 3-5 viet a zachytiť hlavné body:\n\n" + } +} diff --git a/_locales/sv/messages.json b/_locales/sv/messages.json index f6d2f861..8ded988f 100644 --- a/_locales/sv/messages.json +++ b/_locales/sv/messages.json @@ -73,5 +73,17 @@ }, "prefs_OptionText_auto_summary_Info": { "message": "Om markerad kommer ThunderAI att generera och visa AI-sammanfattningar ovanför e-postmeddelanden när de öppnas. Observera att detta innebär att alla meddelanden du förhandsgranskar kommer att skickas omedelbart till den konfigurerade AI-tjänsten." + }, + "auto_summary_title": { + "message": "ThunderAI Sammanfattning" + }, + "auto_summary_generating": { + "message": "Genererar AI-sammanfattning..." + }, + "auto_summary_failed": { + "message": "Misslyckades med att generera AI-sammanfattning. Kontrollera dina inställningar och försök igen." + }, + "auto_summary_prompt": { + "message": "Ge en koncis sammanfattning av följande e-postmeddelande. Sammanfattningen bör vara max 3-5 meningar och fånga huvudpunkterna:\n\n" } } From e96e5e05282ac7e2f7064dc8ff81add57a913da6 Mon Sep 17 00:00:00 2001 From: Ronald Klarenbeek Date: Fri, 2 Jan 2026 23:40:35 +0100 Subject: [PATCH 6/8] feat(i18n): add auto summary strings for cs, ru, zh_Hans, and zh_Hant locales - Add new translation strings for auto summary feature - Include title, generating, failed, and prompt messages - Remove unnecessary description fields from en locale - Add missing auto summary preference strings for zh_Hant locale --- _locales/cs/messages.json | 12 ++++++++++++ _locales/en/messages.json | 6 ------ _locales/ru/messages.json | 12 ++++++++++++ _locales/zh_Hans/messages.json | 12 ++++++++++++ _locales/zh_Hant/messages.json | 18 ++++++++++++++++++ 5 files changed, 54 insertions(+), 6 deletions(-) diff --git a/_locales/cs/messages.json b/_locales/cs/messages.json index 12d8fafb..90f4e6b6 100644 --- a/_locales/cs/messages.json +++ b/_locales/cs/messages.json @@ -1136,5 +1136,17 @@ }, "prefs_OptionText_auto_summary_Info": { "message": "Pokud je zaškrtnuto, ThunderAI automaticky vygeneruje a zobrazí AI shrnutí nad e-mailovými zprávami, když jsou otevřeny. Mějte na paměti, že to znamená, že všechny zprávy, které si prohlížíte, budou okamžitě odeslány do nakonfigurované AI služby." + }, + "auto_summary_title": { + "message": "ThunderAI Souhrn" + }, + "auto_summary_generating": { + "message": "Generování AI souhrnu..." + }, + "auto_summary_failed": { + "message": "Nepodařilo se vygenerovat AI souhrn. Zkontrolujte prosím nastavení a zkuste to znovu." + }, + "auto_summary_prompt": { + "message": "Poskytněte stručný souhrn následující e-mailové zprávy. Souhrn by měl obsahovat maximálně 3-5 vět a zachytit hlavní body:\n\n" } } diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 77300ad7..d15784e9 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1739,26 +1739,20 @@ }, "prefs_OptionText_auto_summary": { "message": "Enable automatic AI summarization for message previews", - "description": "" }, "prefs_OptionText_auto_summary_Info": { "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", - "description": "" }, "auto_summary_title": { "message": "ThunderAI Summary", - "description": "Title for the auto-summary pane" }, "auto_summary_generating": { "message": "Generating AI summary...", - "description": "Loading text shown while generating summary" }, "auto_summary_failed": { "message": "Failed to generate AI summary. Please confirm your settings and try again.", - "description": "Error message when summary generation fails" }, "auto_summary_prompt": { "message": "Please provide a concise summary of the following email message. The summary should be 3-5 sentences maximum and capture the main points:\n\n", - "description": "Prompt template for AI summary generation" } } diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json index 7db20bbd..bc956a41 100644 --- a/_locales/ru/messages.json +++ b/_locales/ru/messages.json @@ -1211,5 +1211,17 @@ }, "prefs_OptionText_auto_summary_Info": { "message": "Если отмечено, резюме, сгенерированное ИИ, будет автоматически отображаться над сообщениями в просмотре." + }, + "auto_summary_title": { + "message": "ThunderAI Резюме" + }, + "auto_summary_generating": { + "message": "Генерация AI резюме..." + }, + "auto_summary_failed": { + "message": "Не удалось сгенерировать AI резюме. Пожалуйста, проверьте настройки и попробуйте снова." + }, + "auto_summary_prompt": { + "message": "Пожалуйста, предоставьте краткое резюме следующего сообщения электронной почты. Резюме должно содержать максимум 3-5 предложений и отражать основные моменты:\n\n" } } diff --git a/_locales/zh_Hans/messages.json b/_locales/zh_Hans/messages.json index 49f15864..0cd41bc9 100644 --- a/_locales/zh_Hans/messages.json +++ b/_locales/zh_Hans/messages.json @@ -895,5 +895,17 @@ }, "prefs_OptionText_auto_summary_Info": { "message": "如果选中,AI生成的摘要将自动显示在消息预览上方。" + }, + "auto_summary_title": { + "message": "ThunderAI 摘要" + }, + "auto_summary_generating": { + "message": "正在生成AI摘要..." + }, + "auto_summary_failed": { + "message": "生成AI摘要失败。请确认您的设置并重试。" + }, + "auto_summary_prompt": { + "message": "请提供以下电子邮件消息的简明摘要。摘要应最多包含3-5个句子,并捕捉主要要点:\n\n" } } diff --git a/_locales/zh_Hant/messages.json b/_locales/zh_Hant/messages.json index dd60ee03..2b0d912f 100644 --- a/_locales/zh_Hant/messages.json +++ b/_locales/zh_Hant/messages.json @@ -1220,5 +1220,23 @@ }, "OpenAIComp_ClearModelsList_Confirm": { "message": "確定要清除模型清單嗎?這個動作無法復原。" + }, + "prefs_OptionText_auto_summary": { + "message": "啟用郵件預覽的自動 AI 摘要" + }, + "prefs_OptionText_auto_summary_Info": { + "message": "如果勾選,ThunderAI 將自動生成並顯示 AI 摘要在電子郵件訊息上方。請注意,這意味著您預覽的所有訊息將立即被發送到已配置的 AI 服務。" + }, + "auto_summary_title": { + "message": "ThunderAI 摘要" + }, + "auto_summary_generating": { + "message": "正在產生 AI 摘要..." + }, + "auto_summary_failed": { + "message": "產生 AI 摘要失敗。請確認您的設定並重試。" + }, + "auto_summary_prompt": { + "message": "請提供以下電子郵件訊息的簡明摘要。摘要應最多包含3-5個句子,並捕捉主要要點:\n\n" } } From 68a4ef4798f2b3f8ee8a8696a007847dc756ae42 Mon Sep 17 00:00:00 2001 From: Ronald Klarenbeek Date: Fri, 2 Jan 2026 23:52:08 +0100 Subject: [PATCH 7/8] fix en locale structure breaking the extension --- _locales/en/messages.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index d15784e9..4a7e3984 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1738,21 +1738,21 @@ "description": "" }, "prefs_OptionText_auto_summary": { - "message": "Enable automatic AI summarization for message previews", + "message": "Enable automatic AI summarization for message previews" }, "prefs_OptionText_auto_summary_Info": { - "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service.", + "message": "If checked, ThunderAI will automatically generate and display AI summaries above email messages when they are opened. Note that this means all messages you preview will immediately be sent to the configured AI service." }, "auto_summary_title": { - "message": "ThunderAI Summary", + "message": "ThunderAI Summary" }, "auto_summary_generating": { - "message": "Generating AI summary...", + "message": "Generating AI summary..." }, "auto_summary_failed": { - "message": "Failed to generate AI summary. Please confirm your settings and try again.", + "message": "Failed to generate AI summary. Please confirm your settings and try again." }, "auto_summary_prompt": { - "message": "Please provide a concise summary of the following email message. The summary should be 3-5 sentences maximum and capture the main points:\n\n", + "message": "Please provide a concise summary of the following email message. The summary should be 3-5 sentences maximum and capture the main points:\n\n" } } From 431740686708b3f4dec72250f086376f718cd495 Mon Sep 17 00:00:00 2001 From: Ronald Klarenbeek Date: Fri, 6 Feb 2026 10:28:16 +0100 Subject: [PATCH 8/8] fix it locale --- _locales/it/messages.json | 1 - 1 file changed, 1 deletion(-) diff --git a/_locales/it/messages.json b/_locales/it/messages.json index e579fb6b..8703302c 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -1302,7 +1302,6 @@ }, "prefs_anthropic_temperature_Info": { "message": "Quantità di casualità iniettata nella risposta. Il valore predefinito è 1,0. L'intervallo va da 0,0 a 1,0. Utilizza una temperatura più vicina a 0,0 per compiti analitici o a scelta multipla, e più vicina a 1,0 per compiti creativi e generativi. Nota che, anche con una temperatura di 0,0, i risultati non saranno completamente deterministici." - } }, "customPrompts_export_include_api_settings": { "message": "Do you want to include the API settings in the export? Be aware that also the API Key will be saved in the file!",