diff --git a/CHANGELOG.md b/CHANGELOG.md index 4673c2b7..3374d609 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,17 @@ +

Version 1.1.4 - 28/06/2024

+ +

Version 1.1.3 - 18/06/2024

Version 1.1.2 - 23/05/2024

diff --git a/README.md b/README.md index 92df917e..d36e338e 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,8 @@ Starting from version 1.1.0, you can also define your own **custom prompts**! Fi
## Translations -Do you want to help translating this addon? +Do you want to help translate this addon? + [Find out how!](https://micz.it/thunderbird-addon-thunderai/translate/)
@@ -25,6 +26,6 @@ ThunderAI's changes are logged [here](CHANGELOG.md).
Thanks to: The specific references are described in the corresponding source files. diff --git a/_locales/de/messages.json b/_locales/de/messages.json index ce3d8fc1..c4fba4f3 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -1,407 +1,346 @@ { - "extensionDescription": { - "message": "Verwenden Sie ChatGPT, um Ihre E-Mails zu verbessern!", - "description": "Beschreibung der Erweiterung." - }, - - "menu_title": { - "message": "KI", - "description": "" - }, - - "prompt_lang": { - "message": "Antwort in ", - "description": "" - }, - - "prompt_reply": { - "message": "Darauf antworten", - "description": "" - }, - - "prompt_rewrite_polite": { - "message": "Höflich umschreiben", - "description": "" - }, - - "prompt_rewrite_formal": { - "message": "Formal umschreiben", - "description": "" - }, - - "prompt_classify": { - "message": "Klassifizieren", - "description": "" - }, - - "prompt_summarize_this": { - "message": "Zusammenfassen", - "description": "" - }, - - "prompt_translate_this": { - "message": "Übersetzen", - "description": "" - }, - - "prompt_this": { - "message": "Auffordern", - "description": "" - }, - - "prompt_selection_needed": { - "message": "Um fortzufahren, müssen Sie einen Text auswählen!", - "description": "" - }, - - "customPrompts_managePrompts": { - "message": "Eingabeaufforderungen verwalten", - "description": "" - }, - - "customPrompts_managePrompts_help": { - "message": "Informationen", - "description": "" - }, - - "customPrompts_start_saving": { - "message": "Eingabeaufforderungen werden gespeichert...", - "description": "" - }, - - "customPrompts_reindexing_list": { - "message": "Liste wird neu indiziert...", - "description": "" - }, - - "customPrompts_filtering_prompts": { - "message": "Eingabeaufforderungen werden gefiltert...", - "description": "" - }, - - "customPrompts_saving_default_prompts": { - "message": "Standard-Eingabeaufforderungen werden gespeichert...", - "description": "" - }, - - "customPrompts_saving_custom_prompts": { - "message": "Benutzerdefinierte Eingabeaufforderungen werden gespeichert...", - "description": "" - }, - - "customPrompts_reloading_menus": { - "message": "Menüs werden neu geladen...", - "description": "" - }, - - "customPrompts_saved": { - "message": "Eingabeaufforderungen gespeichert!", - "description": "" - }, - - "customPrompts_form_label_ID": { - "message": "ID", - "description": "" - }, - - "customPrompts_form_label_ID_rules": { - "message": "Muss eindeutig, kleingeschrieben und ohne Leerzeichen sein", - "description": "" - }, - - "customPrompts_form_label_Name": { - "message": "Name", - "description": "" - }, - - "customPrompts_form_label_Text": { - "message": "Eingabeaufforderungstext", - "description": "" - }, - - "customPrompts_form_label_Action": { - "message": "Aktion", - "description": "" - }, - - "customPrompts_form_label_need_selected": { - "message": "Textauswahl erforderlich", - "description": "" - }, - - "customPrompts_form_label_need_signature": { - "message": "Immer die Signatur hinzufügen", - "description": "" - }, - - "customPrompts_form_label_need_custom_text": { - "message": "Nach zusätzlichem Text fragen", - "description": "" - }, - - "customPrompts_form_label_enabled": { - "message": "Aktiviert", - "description": "" - }, - - "customPrompts_form_required_fields": { - "message": "Erforderliche Felder", - "description": "" - }, - - "customPrompts_btnEdit": { - "message": "Bearbeiten", - "description": "" - }, - - "customPrompts_btnCancel": { - "message": "Abbrechen", - "description": "" - }, - - "customPrompts_btnOK": { - "message": "OK", - "description": "" - }, - - "customPrompts_btnDelete": { - "message": "Löschen", - "description": "" - }, - - "customPrompts_btnDelete_confirmText": { - "message": "Sind Sie sicher, dass Sie dieses Element löschen möchten?", - "description": "" - }, - - "customPrompts_unsaved_changes": { - "message": "Es gibt ungespeicherte Änderungen!", - "description": "" - }, - - "customPrompts_btnSaveAll": { - "message": "Alle speichern", - "description": "" - }, - - "customPrompts_save_button": { - "message": "Speichern", - "description": "" - }, - - "customPrompts_btnNew": { - "message": "Neu hinzufügen", - "description": "" - }, - - "customPrompts_btnAddNewCommit": { - "message": "Eingabeaufforderung hinzufügen", - "description": "" - }, - - "customPrompts_add_to_menu": { - "message": "Zum Menü hinzufügen", - "description": "" - }, - - "customPrompts_add_to_menu_always": { - "message": "Immer", - "description": "" - }, - - "customPrompts_add_to_menu_reading": { - "message": "E-Mail lesen", - "description": "" - }, - - "customPrompts_add_to_menu_composing": { - "message": "E-Mail verfassen", - "description": "" - }, - - "customPrompts_close_button": { - "message": "Schließen", - "description": "" - }, - - "customPrompts_do_reply": { - "message": "Antworten", - "description": "" - }, - - "customPrompts_substitute_text": { - "message": "Text ersetzen", - "description": "" - }, - - "chatgpt_win_working": { - "message": "Arbeit in Arbeit...", - "description": "" - }, - - "chatgpt_win_job_completed": { - "message": "Abgeschlossen!", - "description": "" - }, - - "chatgpt_win_get_answer": { - "message": "Letzte Antwort verwenden", - "description": "" - }, - - "chatgpt_win_close": { - "message": "Schließen", - "description": "" - }, - - "chatgpt_textarea_not_found_error": { - "message": "Es gibt einen Fehler beim Senden der Eingabeaufforderung an ChatGPT. Bitte versuchen Sie es erneut. Wenn das Problem weiterhin besteht, überprüfen Sie bitte den Dienststatus.", - "description": "" - }, - - "chatgpt_sendbutton_not_found_error": { - "message": "Klicken Sie auf die Schaltfläche „Senden“, um die Eingabeaufforderung zu übermitteln.", - "description": "" - }, - - "chatgpt_user_not_logged_in": { - "message": "Sie sind nicht bei ChatGPT angemeldet. Bitte melden Sie sich mit Ihren Anmeldeinformationen an, schließen Sie das ChatGPT-Fenster und wiederholen Sie dann die Aktion, die Sie versucht haben. Danach bleiben Sie angemeldet.", - "description": "" - }, - - "chatgpt_win_model_warning": { - "message": "Sie haben die Option zur Verwendung von ChatGPT-4 eingestellt, aber es scheint, dass es nicht korrekt geladen wird. Haben Sie das richtige Modell oben ausgewählt?", - "description": "" - }, - - "chatgpt_win_custom_text": { - "message": "Fügen Sie hier den zusätzlichen Text für die Eingabeaufforderung ein.", - "description": "" - }, - - "chatgpt_win_send": { - "message": "Senden", - "description": "" - }, - - "chatgpt_use_gpt35": { - "message": "Verwenden Sie GPT3.5", - "description": "" - }, - - "chatgpt_force_completion": { - "message": "Abschluss erzwingen", - "description": "" - }, - - "chatgpt_force_completion_title": { - "message": "Klicken Sie hier, um die Schaltfläche „Letzte Antwort verwenden“ anzuzeigen, wenn ChatGPT seine Arbeit abgeschlossen hat, die Schaltfläche jedoch nicht erschienen ist.", - "description": "" - }, - - "msg_prompt_too_long": { - "message": "Der eingegebene Text ist zu lang. Sie müssen ihn verkürzen, um ChatGPT zu verwenden.", - "description": "" - }, - - "prefs_OptionText_release_notes": { - "message": "Versionshinweise", - "description": "" - }, - - "prefs_status_page": { - "message": "Dienststatus", - "description": "" - }, - - "prefs_OptionText_chatgpt_win_text": { - "message": "ChatGPT-Fensterabmessungen", - "description": "" - }, - - "prefs_OptionText_chatgpt_win_height": { - "message": "Höhe", - "description": "" - }, - - "prefs_OptionText_chatgpt_win_width": { - "message": "Breite", - "description": "" - }, - - "prefs_OptionText_default_sign_name": { - "message": "Standard-Signaturname", - "description": "" - }, - - "prefs_OptionText_default_chatgpt_lang": { - "message": "Standardsprache für ChatGPT-Antworten", - "description": "" - }, - - "prefs_OptionText_reply_all": { - "message": "Allen antworten", - "description": "" - }, - - "prefs_OptionText_reply_sender": { - "message": "Absender antworten", - "description": "" - }, - - "prefs_OptionText_reply_type": { - "message": "Antworttyp", - "description": "" - }, - - "prefs_OptionText_chatpgt_use_gpt4": { - "message": "Verwenden Sie ChatGPT-4", - "description": "" - }, - - "prefs_OptionText_chatpgt_use_gpt4_info": { - "message": "Nachdem Sie diese Option geändert haben, müssen Sie beim ersten Gebrauch das richtige Modell auswählen.", - "description": "" - }, - - "prefs_OptionText_btnManagePrompts": { - "message": "Verwalten Sie Ihre Eingabeaufforderungen", - "description": "" - }, - - "prefsInfoTitle": { - "message": "Wichtige Informationen", - "description": "" - }, - - "prefsInfoDesc_1": { - "message": "Es ist nicht mehr möglich, den Verlauf der ChatGPT-Chats zu deaktivieren. Daher gibt es keine Möglichkeit, zu verhindern, dass Anfragen, die über dieses Addon gestellt werden, in Ihrem ChatGPT-Chatverlauf erscheinen.", - "description": "" - }, - - "prefsInfoDesc_2": { - "message": "Wenn eine weiße Seite erscheint, wenn das ChatGPT-Fenster geöffnet wird, bedeutet dies, dass es ein Problem beim Laden der ChatGPT-Seite gibt, das nicht mit der Verwendung dieses Add-Ons zusammenhängt.", - "description": "" - }, - - "prefsInfoDesc_3": { - "message": " ", - "description": "" - }, - - "prefsDonation_1": { - "message": "Gefällt Ihnen dieses Addon?", - "description": "" - }, - - "prefsDonation_2": { - "message": "Überlegen Sie, eine Spende zu machen!", - "description": "" - }, - - "backToOptionsText": { - "message": "Optionen", - "description": "" - } + "extensionDescription": { + "message": "Verwenden Sie ChatGPT, um Ihre E-Mails zu verbessern!", + "description": "Beschreibung der Erweiterung." + }, + "menu_title": { + "message": "KI", + "description": "" + }, + "prompt_lang": { + "message": "Antwort in ", + "description": "" + }, + "prompt_reply": { + "message": "Darauf antworten", + "description": "" + }, + "prompt_rewrite_polite": { + "message": "Höflich umschreiben", + "description": "" + }, + "prompt_rewrite_formal": { + "message": "Formal umschreiben", + "description": "" + }, + "prompt_classify": { + "message": "Klassifizieren", + "description": "" + }, + "prompt_summarize_this": { + "message": "Zusammenfassen", + "description": "" + }, + "prompt_translate_this": { + "message": "Übersetzen", + "description": "" + }, + "prompt_this": { + "message": "Auffordern", + "description": "" + }, + "prompt_selection_needed": { + "message": "Um fortzufahren, müssen Sie einen Text auswählen!", + "description": "" + }, + "customPrompts_managePrompts": { + "message": "Eingabeaufforderungen verwalten", + "description": "" + }, + "customPrompts_managePrompts_help": { + "message": "Informationen", + "description": "" + }, + "customPrompts_managePrompts_info_default": { + "message": "Die Standard-Eingabeaufforderungen sind nicht bearbeitbar. Sie können sie deaktivieren, dann den Text der Eingabeaufforderung kopieren und in eine neue einfügen, um eine modifizierte Version zu erstellen.", + "description": "" + }, + "customPrompts_start_saving": { + "message": "Eingabeaufforderungen werden gespeichert...", + "description": "" + }, + "customPrompts_reindexing_list": { + "message": "Liste wird neu indiziert...", + "description": "" + }, + "customPrompts_filtering_prompts": { + "message": "Eingabeaufforderungen werden gefiltert...", + "description": "" + }, + "customPrompts_saving_default_prompts": { + "message": "Standard-Eingabeaufforderungen werden gespeichert...", + "description": "" + }, + "customPrompts_saving_custom_prompts": { + "message": "Benutzerdefinierte Eingabeaufforderungen werden gespeichert...", + "description": "" + }, + "customPrompts_reloading_menus": { + "message": "Menüs werden neu geladen...", + "description": "" + }, + "customPrompts_saved": { + "message": "Eingabeaufforderungen gespeichert!", + "description": "" + }, + "customPrompts_form_label_ID": { + "message": "ID", + "description": "" + }, + "customPrompts_form_label_ID_rules": { + "message": "Muss eindeutig, kleingeschrieben und ohne Leerzeichen sein", + "description": "" + }, + "customPrompts_form_label_Name": { + "message": "Name", + "description": "" + }, + "customPrompts_form_label_Text": { + "message": "Eingabeaufforderungstext", + "description": "" + }, + "customPrompts_form_label_Action": { + "message": "Aktion", + "description": "" + }, + "customPrompts_form_label_need_selected": { + "message": "Textauswahl erforderlich", + "description": "" + }, + "customPrompts_form_label_need_signature": { + "message": "Immer die Signatur hinzufügen", + "description": "" + }, + "customPrompts_form_label_need_custom_text": { + "message": "Nach zusätzlichem Text fragen", + "description": "" + }, + "customPrompts_form_label_enabled": { + "message": "Aktiviert", + "description": "" + }, + "customPrompts_form_required_fields": { + "message": "Erforderliche Felder", + "description": "" + }, + "customPrompts_btnEdit": { + "message": "Bearbeiten", + "description": "" + }, + "customPrompts_btnCancel": { + "message": "Abbrechen", + "description": "" + }, + "customPrompts_btnOK": { + "message": "OK", + "description": "" + }, + "customPrompts_btnDelete": { + "message": "Löschen", + "description": "" + }, + "customPrompts_btnDelete_confirmText": { + "message": "Sind Sie sicher, dass Sie dieses Element löschen möchten?", + "description": "" + }, + "customPrompts_unsaved_changes": { + "message": "Es gibt ungespeicherte Änderungen!", + "description": "" + }, + "customPrompts_btnSaveAll": { + "message": "Alle speichern", + "description": "" + }, + "customPrompts_save_button": { + "message": "Speichern", + "description": "" + }, + "customPrompts_btnNew": { + "message": "Neu hinzufügen", + "description": "" + }, + "customPrompts_btnAddNewCommit": { + "message": "Eingabeaufforderung hinzufügen", + "description": "" + }, + "customPrompts_add_to_menu": { + "message": "Zum Menü hinzufügen", + "description": "" + }, + "customPrompts_add_to_menu_always": { + "message": "Immer", + "description": "" + }, + "customPrompts_add_to_menu_reading": { + "message": "E-Mail lesen", + "description": "" + }, + "customPrompts_add_to_menu_composing": { + "message": "E-Mail verfassen", + "description": "" + }, + "customPrompts_close_button": { + "message": "Schließen", + "description": "" + }, + "customPrompts_do_reply": { + "message": "Antworten", + "description": "" + }, + "customPrompts_substitute_text": { + "message": "Text ersetzen", + "description": "" + }, + "chatgpt_win_working": { + "message": "Arbeit in Arbeit...", + "description": "" + }, + "chatgpt_win_job_completed": { + "message": "Abgeschlossen!", + "description": "" + }, + "chatgpt_win_get_answer": { + "message": "Letzte Antwort verwenden", + "description": "" + }, + "chatgpt_win_close": { + "message": "Schließen", + "description": "" + }, + "chatgpt_textarea_not_found_error": { + "message": "Es gibt einen Fehler beim Senden der Eingabeaufforderung an ChatGPT. Bitte versuchen Sie es erneut. Wenn das Problem weiterhin besteht, überprüfen Sie bitte den Dienststatus.", + "description": "" + }, + "chatgpt_sendbutton_not_found_error": { + "message": "Klicken Sie auf die Schaltfläche „Senden“, um die Eingabeaufforderung zu übermitteln.", + "description": "" + }, + "chatgpt_user_not_logged_in": { + "message": "Sie sind nicht bei ChatGPT angemeldet. Bitte melden Sie sich mit Ihren Anmeldeinformationen an, schließen Sie das ChatGPT-Fenster und wiederholen Sie dann die Aktion, die Sie versucht haben. Danach bleiben Sie angemeldet.", + "description": "" + }, + "chatgpt_win_model_warning": { + "message": "Sie haben die Option zur Verwendung von ChatGPT-4 eingestellt, aber es scheint, dass es nicht korrekt geladen wird. Haben Sie oben das Modell 4 oder 4o gewählt?", + "description": "" + }, + "chatgpt_win_custom_text": { + "message": "Fügen Sie hier den zusätzlichen Text für die Eingabeaufforderung ein.", + "description": "" + }, + "chatgpt_win_send": { + "message": "Senden", + "description": "" + }, + "chatgpt_use_gpt35": { + "message": "Verwenden Sie GPT3.5", + "description": "" + }, + "chatgpt_force_completion": { + "message": "Abschluss erzwingen", + "description": "" + }, + "chatgpt_force_completion_title": { + "message": "Klicken Sie hier, um die Schaltfläche „Letzte Antwort verwenden“ anzuzeigen, wenn ChatGPT seine Arbeit abgeschlossen hat, die Schaltfläche jedoch nicht erschienen ist.", + "description": "" + }, + "msg_prompt_too_long": { + "message": "Der eingegebene Text ist zu lang. Sie müssen ihn verkürzen, um ChatGPT zu verwenden.", + "description": "" + }, + "prefs_OptionText_release_notes": { + "message": "Versionshinweise", + "description": "" + }, + "prefs_status_page": { + "message": "Dienststatus", + "description": "" + }, + "prefs_OptionText_chatgpt_win_text": { + "message": "ChatGPT-Fensterabmessungen", + "description": "" + }, + "prefs_OptionText_chatgpt_win_height": { + "message": "Höhe", + "description": "" + }, + "prefs_OptionText_chatgpt_win_width": { + "message": "Breite", + "description": "" + }, + "prefs_OptionText_default_sign_name": { + "message": "Standard-Signaturname", + "description": "" + }, + "prefs_OptionText_default_chatgpt_lang": { + "message": "Standardsprache für ChatGPT-Antworten", + "description": "" + }, + "prefs_OptionText_reply_all": { + "message": "Allen antworten", + "description": "" + }, + "prefs_OptionText_reply_sender": { + "message": "Absender antworten", + "description": "" + }, + "prefs_OptionText_reply_type": { + "message": "Antworttyp", + "description": "" + }, + "prefs_OptionText_chatpgt_keep_formatting": { + "message": "Behalte die Formatierung bei", + "description": "" + }, + "prefs_OptionText_chatpgt_keep_formatting_info": { + "message": "Behalte die Formatierung und die Zahlen oder Aufzählungspunkte aus der ChatGPT-Antwort bei.", + "description": "" + }, + "prefs_OptionText_chatpgt_use_gpt4": { + "message": "Verwenden Sie ChatGPT-4", + "description": "" + }, + "prefs_OptionText_chatpgt_use_gpt4_info": { + "message": "Nachdem Sie diese Option geändert haben, müssen Sie beim ersten Gebrauch das richtige Modell auswählen.", + "description": "" + }, + "prefs_OptionText_btnManagePrompts": { + "message": "Verwalten Sie Ihre Eingabeaufforderungen", + "description": "" + }, + "prefsInfoTitle": { + "message": "Wichtige Informationen", + "description": "" + }, + "prefsInfoDesc_1": { + "message": "Es ist nicht mehr möglich, den Verlauf der ChatGPT-Chats zu deaktivieren. Daher gibt es keine Möglichkeit, zu verhindern, dass Anfragen, die über dieses Addon gestellt werden, in Ihrem ChatGPT-Chatverlauf erscheinen.", + "description": "" + }, + "prefsInfoDesc_2": { + "message": "Wenn eine weiße Seite erscheint, wenn das ChatGPT-Fenster geöffnet wird, bedeutet dies, dass es ein Problem beim Laden der ChatGPT-Seite gibt, das nicht mit der Verwendung dieses Add-Ons zusammenhängt.", + "description": "" + }, + "prefsInfoDesc_3": { + "message": " ", + "description": "" + }, + "prefsDonation_1": { + "message": "Gefällt Ihnen dieses Addon?", + "description": "" + }, + "prefsDonation_2": { + "message": "Überlegen Sie, eine Spende zu machen!", + "description": "" + }, + "backToOptionsText": { + "message": "Optionen", + "description": "" + }, + "TranslateText": { + "message": "Möchtest du helfen, dieses Add-on zu übersetzen?", + "description": "" + }, + "TranslateLink": { + "message": "Finde es heraus!", + "description": "" } - \ No newline at end of file +} \ No newline at end of file diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 33f7ea3e..03b4400d 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -3,404 +3,344 @@ "message": "Use ChatGPT to enhance you emails!", "description": "Description of the extension." }, - "menu_title": { "message": "AI", "description": "" }, - "prompt_lang": { "message": "Reply in ", "description": "" }, - "prompt_reply": { "message": "Reply to this", "description": "" }, - "prompt_rewrite_polite": { "message": "Rewrite polite", "description": "" }, - "prompt_rewrite_formal": { "message": "Rewrite formal", "description": "" }, - "prompt_classify": { "message": "Classify", "description": "" }, - "prompt_summarize_this": { "message": "Summarize this", "description": "" }, - "prompt_translate_this": { "message": "Translate this", "description": "" }, - "prompt_this": { "message": "Prompt this", "description": "" }, - "prompt_selection_needed": { "message": "To proceed, you need to select some text!", "description": "" }, - "customPrompts_managePrompts": { "message": "Manage Prompts", "description": "" }, - "customPrompts_managePrompts_help": { "message": "More info", "description": "" }, - + "customPrompts_managePrompts_info_default": { + "message": "The default prompts are not editable. You can disable them, then copy the prompt text and paste it into a new one to create a modified version.", + "description": "" + }, "customPrompts_start_saving": { "message": "Saving prompts...", "description": "" }, - "customPrompts_reindexing_list": { "message": "Reindexing list...", "description": "" }, - "customPrompts_filtering_prompts": { "message": "Filtering prompts...", "description": "" }, - "customPrompts_saving_default_prompts": { "message": "Saving default prompts...", "description": "" }, - "customPrompts_saving_custom_prompts": { "message": "Saving custom prompts...", "description": "" }, - "customPrompts_reloading_menus": { "message": "Reloading menus...", "description": "" }, - "customPrompts_saved": { "message": "Prompts saved!", "description": "" }, - "customPrompts_form_label_ID": { "message": "ID", "description": "" }, - "customPrompts_form_label_ID_rules": { "message": "Must be unique, lowercase and without spaces", "description": "" }, - "customPrompts_form_label_Name": { "message": "Name", "description": "" }, - "customPrompts_form_label_Text": { "message": "Prompt Text", "description": "" }, - "customPrompts_form_label_Action": { "message": "Action", "description": "" }, - "customPrompts_form_label_need_selected": { "message": "Text selection needed", "description": "" }, - "customPrompts_form_label_need_signature": { "message": "Always add the signature", "description": "" }, - "customPrompts_form_label_need_custom_text": { "message": "Ask for additional text", "description": "" }, - "customPrompts_form_label_enabled": { "message": "Enabled", "description": "" }, - "customPrompts_form_required_fields": { "message": "Required fields", "description": "" }, - "customPrompts_btnEdit": { "message": "Edit", "description": "" }, - "customPrompts_btnCancel": { "message": "Cancel", "description": "" }, - "customPrompts_btnOK": { "message": "OK", "description": "" }, - "customPrompts_btnDelete": { "message": "Delete", "description": "" }, - "customPrompts_btnDelete_confirmText": { "message": "Are you sure you want to delete this item?", "description": "" }, - "customPrompts_unsaved_changes": { "message": "There are unsaved changes!", "description": "" }, - "customPrompts_btnSaveAll": { "message": "Save All", "description": "" }, - "customPrompts_save_button": { "message": "Save", "description": "" }, - "customPrompts_btnNew": { "message": "Add New", "description": "" }, - "customPrompts_btnAddNewCommit": { "message": "Add the Prompt", "description": "" }, - "customPrompts_add_to_menu": { "message": "Add to menu", "description": "" }, - "customPrompts_add_to_menu_always": { "message": "Always", "description": "" }, - "customPrompts_add_to_menu_reading": { "message": "Reading an email", "description": "" }, - "customPrompts_add_to_menu_composing": { "message": "Composing an email", "description": "" }, - "customPrompts_close_button": { "message": "Close button", "description": "" }, - "customPrompts_do_reply": { "message": "Do reply", "description": "" }, - "customPrompts_substitute_text": { "message": "Substitute text", "description": "" }, - "chatgpt_win_working": { "message": "Work in progress...", "description": "" }, - "chatgpt_win_job_completed": { "message": "Completed!", "description": "" }, - "chatgpt_win_get_answer": { "message": "Use last answer", "description": "" }, - "chatgpt_win_close": { "message": "Close", "description": "" }, - "chatgpt_textarea_not_found_error": { "message": "There is an error sending the prompt to ChatGPT, please retry. If the problem persists, please check the service status.", "description": "" }, - "chatgpt_sendbutton_not_found_error": { "message": "Click the send button to submit the prompt.", "description": "" }, - "chatgpt_user_not_logged_in": { "message": "You are not logged in to ChatGPT. Please log in with your credentials, close the ChatGPT window, and then repeat the action you attempted. You will remain logged in afterwards.", "description": "" }, - "chatgpt_win_model_warning": { - "message": "You have set the option to use ChatGPT-4, but it seems that it is not loading correctly. Have you chosen the right model at the top?", + "message": "You have set the option to use ChatGPT-4, but it seems that it is not loading correctly. Have you chosen the model 4 or 4o at the top?", "description": "" }, - "chatgpt_win_custom_text": { "message": "Insert here the additional text for the prompt.", "description": "" }, - "chatgpt_win_send": { "message": "Send", "description": "" }, - "chatgpt_use_gpt35": { "message": "Use GPT3.5", "description": "" }, - "chatgpt_force_completion": { "message": "force completion", "description": "" }, - "chatgpt_force_completion_title": { "message": "Click here to display the 'Use last answer' button if ChatGPT has finished its work but the button has not appeared.", "description": "" }, - "msg_prompt_too_long": { "message": "The text you provided is too long. You need to reduce it to use ChatGPT.", "description": "" }, - "prefs_OptionText_release_notes": { "message": "Release Notes", "description": "" }, - "prefs_status_page": { "message": "service status", "description": "" }, - "prefs_OptionText_chatgpt_win_text": { "message": "ChatGPT window dimensions", "description": "" }, - "prefs_OptionText_chatgpt_win_height": { "message": "Height", "description": "" }, - "prefs_OptionText_chatgpt_win_width": { "message": "Width", "description": "" }, - "prefs_OptionText_default_sign_name": { "message": "Default signature name", "description": "" }, - "prefs_OptionText_default_chatgpt_lang": { "message": "Default language for ChatGPT responses", "description": "" }, - "prefs_OptionText_reply_all": { "message": "Reply to All", "description": "" }, - "prefs_OptionText_reply_sender": { "message": "Reply to Sender", "description": "" }, - "prefs_OptionText_reply_type": { "message": "Reply type", "description": "" }, - + "prefs_OptionText_chatpgt_keep_formatting": { + "message": "Keep formatting", + "description": "" + }, + "prefs_OptionText_chatpgt_keep_formatting_info": { + "message": "Keep the formatting and numeral or bullet points from the ChatGPT response.", + "description": "" + }, "prefs_OptionText_chatpgt_use_gpt4": { "message": "Use ChatGPT-4", "description": "" }, - "prefs_OptionText_chatpgt_use_gpt4_info": { "message": "After changing this option, you have to choose the right model the first time you use it.", "description": "" }, - "prefs_OptionText_btnManagePrompts": { "message": "Manage your prompts", "description": "" }, - "prefsInfoTitle": { "message": "Important Information", "description": "" }, - "prefsInfoDesc_1": { "message": "It is no longer possible to disable the history of ChatGPT chats. Therefore, there is no way to prevent requests made through this addon from appearing in your ChatGPT chat history.", "description": "" }, - "prefsInfoDesc_2": { "message": "If a white page appears when opening the ChatGPT window, it means there is a problem loading the ChatGPT page, not related to the use of this add-on.", "description": "" }, - "prefsInfoDesc_3": { "message": " ", "description": "" }, - "prefsDonation_1": { "message": "Do you like this addon?", "description": "" }, - "prefsDonation_2": { "message": "Consider to make a donation!", "description": "" }, - "backToOptionsText": { "message": "Options", "description": "" + }, + "TranslateText": { + "message": "Do you want to help translate this addon?", + "description": "" + }, + "TranslateLink": { + "message": "Find out how!", + "description": "" } -} +} \ No newline at end of file diff --git a/_locales/fr/messages.json b/_locales/fr/messages.json index aced1498..7f38cda4 100644 --- a/_locales/fr/messages.json +++ b/_locales/fr/messages.json @@ -1,407 +1,346 @@ { - "extensionDescription": { - "message": "Utilisez ChatGPT pour améliorer vos emails!", - "description": "Description de l'extension." - }, - - "menu_title": { - "message": "IA", - "description": "" - }, - - "prompt_lang": { - "message": "Répondre en ", - "description": "" - }, - - "prompt_reply": { - "message": "Répondre à ceci", - "description": "" - }, - - "prompt_rewrite_polite": { - "message": "Réécrire de manière polie", - "description": "" - }, - - "prompt_rewrite_formal": { - "message": "Réécrire de manière formelle", - "description": "" - }, - - "prompt_classify": { - "message": "Classer", - "description": "" - }, - - "prompt_summarize_this": { - "message": "Résumer ceci", - "description": "" - }, - - "prompt_translate_this": { - "message": "Traduire ceci", - "description": "" - }, - - "prompt_this": { - "message": "Proposer ceci", - "description": "" - }, - - "prompt_selection_needed": { - "message": "Pour continuer, vous devez sélectionner du texte!", - "description": "" - }, - - "customPrompts_managePrompts": { - "message": "Gérer les prompts", - "description": "" - }, - - "customPrompts_managePrompts_help": { - "message": "Informations", - "description": "" - }, - - "customPrompts_start_saving": { - "message": "Enregistrement des prompts...", - "description": "" - }, - - "customPrompts_reindexing_list": { - "message": "Réindexation de la liste...", - "description": "" - }, - - "customPrompts_filtering_prompts": { - "message": "Filtrage des prompts...", - "description": "" - }, - - "customPrompts_saving_default_prompts": { - "message": "Enregistrement des prompts par défaut...", - "description": "" - }, - - "customPrompts_saving_custom_prompts": { - "message": "Enregistrement des prompts personnalisées...", - "description": "" - }, - - "customPrompts_reloading_menus": { - "message": "Rechargement des menus...", - "description": "" - }, - - "customPrompts_saved": { - "message": "prompts enregistrées!", - "description": "" - }, - - "customPrompts_form_label_ID": { - "message": "ID", - "description": "" - }, - - "customPrompts_form_label_ID_rules": { - "message": "Doit être unique, en minuscules et sans espaces", - "description": "" - }, - - "customPrompts_form_label_Name": { - "message": "Nom", - "description": "" - }, - - "customPrompts_form_label_Text": { - "message": "Texte de la proposition", - "description": "" - }, - - "customPrompts_form_label_Action": { - "message": "Action", - "description": "" - }, - - "customPrompts_form_label_need_selected": { - "message": "Sélection de texte nécessaire", - "description": "" - }, - - "customPrompts_form_label_need_signature": { - "message": "Toujours ajouter la signature", - "description": "" - }, - - "customPrompts_form_label_need_custom_text": { - "message": "Demander du texte supplémentaire", - "description": "" - }, - - "customPrompts_form_label_enabled": { - "message": "Activé", - "description": "" - }, - - "customPrompts_form_required_fields": { - "message": "Champs obligatoires", - "description": "" - }, - - "customPrompts_btnEdit": { - "message": "Modifier", - "description": "" - }, - - "customPrompts_btnCancel": { - "message": "Annuler", - "description": "" - }, - - "customPrompts_btnOK": { - "message": "OK", - "description": "" - }, - - "customPrompts_btnDelete": { - "message": "Supprimer", - "description": "" - }, - - "customPrompts_btnDelete_confirmText": { - "message": "Êtes-vous sûr de vouloir supprimer cet élément?", - "description": "" - }, - - "customPrompts_unsaved_changes": { - "message": "Il y a des modifications non enregistrées!", - "description": "" - }, - - "customPrompts_btnSaveAll": { - "message": "Tout enregistrer", - "description": "" - }, - - "customPrompts_save_button": { - "message": "Enregistrer", - "description": "" - }, - - "customPrompts_btnNew": { - "message": "Ajouter nouveau", - "description": "" - }, - - "customPrompts_btnAddNewCommit": { - "message": "Ajouter la proposition", - "description": "" - }, - - "customPrompts_add_to_menu": { - "message": "Ajouter au menu", - "description": "" - }, - - "customPrompts_add_to_menu_always": { - "message": "Toujours", - "description": "" - }, - - "customPrompts_add_to_menu_reading": { - "message": "Lors de la lecture d'un email", - "description": "" - }, - - "customPrompts_add_to_menu_composing": { - "message": "Lors de la rédaction d'un email", - "description": "" - }, - - "customPrompts_close_button": { - "message": "Bouton de fermeture", - "description": "" - }, - - "customPrompts_do_reply": { - "message": "Faire une réponse", - "description": "" - }, - - "customPrompts_substitute_text": { - "message": "Remplacer le texte", - "description": "" - }, - - "chatgpt_win_working": { - "message": "Travail en cours...", - "description": "" - }, - - "chatgpt_win_job_completed": { - "message": "Terminé!", - "description": "" - }, - - "chatgpt_win_get_answer": { - "message": "Utiliser la dernière réponse", - "description": "" - }, - - "chatgpt_win_close": { - "message": "Fermer", - "description": "" - }, - - "chatgpt_textarea_not_found_error": { - "message": "Il y a une erreur lors de l'envoi de la proposition à ChatGPT, veuillez réessayer. Si le problème persiste, veuillez vérifier le statut du service.", - "description": "" - }, - - "chatgpt_sendbutton_not_found_error": { - "message": "Cliquez sur le bouton d'envoi pour soumettre la proposition.", - "description": "" - }, - - "chatgpt_user_not_logged_in": { - "message": "Vous n'êtes pas connecté à ChatGPT. Veuillez vous connecter avec vos identifiants, fermer la fenêtre ChatGPT, puis répéter l'action que vous avez tentée. Vous resterez connecté par la suite.", - "description": "" - }, - - "chatgpt_win_model_warning": { - "message": "Vous avez choisi l'option d'utiliser ChatGPT-4, mais il semble qu'il ne se charge pas correctement. Avez-vous choisi le bon modèle en haut?", - "description": "" - }, - - "chatgpt_win_custom_text": { - "message": "Insérez ici le texte supplémentaire pour la proposition.", - "description": "" - }, - - "chatgpt_win_send": { - "message": "Envoyer", - "description": "" - }, - - "chatgpt_use_gpt35": { - "message": "Utiliser GPT3.5", - "description": "" - }, - - "chatgpt_force_completion": { - "message": "forcer l'achèvement", - "description": "" - }, - - "chatgpt_force_completion_title": { - "message": "Cliquez ici pour afficher le bouton 'Utiliser la dernière réponse' si ChatGPT a terminé son travail mais que le bouton n'est pas apparu.", - "description": "" - }, - - "msg_prompt_too_long": { - "message": "Le texte que vous avez fourni est trop long. Vous devez le réduire pour utiliser ChatGPT.", - "description": "" - }, - - "prefs_OptionText_release_notes": { - "message": "Notes de version", - "description": "" - }, - - "prefs_status_page": { - "message": "statut du service", - "description": "" - }, - - "prefs_OptionText_chatgpt_win_text": { - "message": "Dimensions de la fenêtre ChatGPT", - "description": "" - }, - - "prefs_OptionText_chatgpt_win_height": { - "message": "Hauteur", - "description": "" - }, - - "prefs_OptionText_chatgpt_win_width": { - "message": "Largeur", - "description": "" - }, - - "prefs_OptionText_default_sign_name": { - "message": "Nom de la signature par défaut", - "description": "" - }, - - "prefs_OptionText_default_chatgpt_lang": { - "message": "Langue par défaut pour les réponses de ChatGPT", - "description": "" - }, - - "prefs_OptionText_reply_all": { - "message": "Répondre à tous", - "description": "" - }, - - "prefs_OptionText_reply_sender": { - "message": "Répondre à l'expéditeur", - "description": "" - }, - - "prefs_OptionText_reply_type": { - "message": "Type de réponse", - "description": "" - }, - - "prefs_OptionText_chatpgt_use_gpt4": { - "message": "Utiliser ChatGPT-4", - "description": "" - }, - - "prefs_OptionText_chatpgt_use_gpt4_info": { - "message": "Après avoir changé cette option, vous devez choisir le bon modèle la première fois que vous l'utilisez.", - "description": "" - }, - - "prefs_OptionText_btnManagePrompts": { - "message": "Gérer vos prompts", - "description": "" - }, - - "prefsInfoTitle": { - "message": "Informations importantes", - "description": "" - }, - - "prefsInfoDesc_1": { - "message": "Il n'est plus possible de désactiver l'historique des chats ChatGPT. Par conséquent, il n'y a aucun moyen d'empêcher les demandes effectuées via cet addon d'apparaître dans l'historique de vos chats ChatGPT.", - "description": "" - }, - - "prefsInfoDesc_2": { - "message": "Si une page blanche apparaît lors de l'ouverture de la fenêtre ChatGPT, cela signifie qu'il y a un problème de chargement de la page ChatGPT, non lié à l'utilisation de cet addon.", - "description": "" - }, - - "prefsInfoDesc_3": { - "message": " ", - "description": "" - }, - - "prefsDonation_1": { - "message": "Aimez-vous cet addon?", - "description": "" - }, - - "prefsDonation_2": { - "message": "Envisagez de faire un don!", - "description": "" - }, - - "backToOptionsText": { - "message": "Options", - "description": "" - } + "extensionDescription": { + "message": "Utilisez ChatGPT pour améliorer vos emails !", + "description": "Description de l'extension." + }, + "menu_title": { + "message": "IA", + "description": "" + }, + "prompt_lang": { + "message": "Répondre en ", + "description": "" + }, + "prompt_reply": { + "message": "Répondre à ceci", + "description": "" + }, + "prompt_rewrite_polite": { + "message": "Réécrire de manière polie", + "description": "" + }, + "prompt_rewrite_formal": { + "message": "Réécrire de manière formelle", + "description": "" + }, + "prompt_classify": { + "message": "Classer", + "description": "" + }, + "prompt_summarize_this": { + "message": "Résumer ceci", + "description": "" + }, + "prompt_translate_this": { + "message": "Traduire ceci", + "description": "" + }, + "prompt_this": { + "message": "Proposer ceci", + "description": "" + }, + "prompt_selection_needed": { + "message": "Pour continuer, vous devez sélectionner du texte !", + "description": "" + }, + "customPrompts_managePrompts": { + "message": "Gérer les prompts", + "description": "" + }, + "customPrompts_managePrompts_help": { + "message": "Informations", + "description": "" + }, + "customPrompts_managePrompts_info_default": { + "message": "Les invites par défaut ne sont pas modifiables. Vous pouvez les désactiver, puis copier le texte de l'invite et le coller dans une nouvelle pour créer une version modifiée.", + "description": "" + }, + "customPrompts_start_saving": { + "message": "Enregistrement des prompts...", + "description": "" + }, + "customPrompts_reindexing_list": { + "message": "Réindexation de la liste...", + "description": "" + }, + "customPrompts_filtering_prompts": { + "message": "Filtrage des prompts...", + "description": "" + }, + "customPrompts_saving_default_prompts": { + "message": "Enregistrement des prompts par défaut...", + "description": "" + }, + "customPrompts_saving_custom_prompts": { + "message": "Enregistrement des prompts personnalisées...", + "description": "" + }, + "customPrompts_reloading_menus": { + "message": "Rechargement des menus...", + "description": "" + }, + "customPrompts_saved": { + "message": "prompts enregistrées !", + "description": "" + }, + "customPrompts_form_label_ID": { + "message": "ID", + "description": "" + }, + "customPrompts_form_label_ID_rules": { + "message": "Doit être unique, en minuscules et sans espaces", + "description": "" + }, + "customPrompts_form_label_Name": { + "message": "Nom", + "description": "" + }, + "customPrompts_form_label_Text": { + "message": "Texte de la proposition", + "description": "" + }, + "customPrompts_form_label_Action": { + "message": "Action", + "description": "" + }, + "customPrompts_form_label_need_selected": { + "message": "Sélection de texte nécessaire", + "description": "" + }, + "customPrompts_form_label_need_signature": { + "message": "Toujours ajouter la signature", + "description": "" + }, + "customPrompts_form_label_need_custom_text": { + "message": "Demander du texte supplémentaire", + "description": "" + }, + "customPrompts_form_label_enabled": { + "message": "Activé", + "description": "" + }, + "customPrompts_form_required_fields": { + "message": "Champs obligatoires", + "description": "" + }, + "customPrompts_btnEdit": { + "message": "Modifier", + "description": "" + }, + "customPrompts_btnCancel": { + "message": "Annuler", + "description": "" + }, + "customPrompts_btnOK": { + "message": "OK", + "description": "" + }, + "customPrompts_btnDelete": { + "message": "Supprimer", + "description": "" + }, + "customPrompts_btnDelete_confirmText": { + "message": "Êtes-vous sûr de vouloir supprimer cet élément ?", + "description": "" + }, + "customPrompts_unsaved_changes": { + "message": "Il y a des modifications non enregistrées !", + "description": "" + }, + "customPrompts_btnSaveAll": { + "message": "Tout enregistrer", + "description": "" + }, + "customPrompts_save_button": { + "message": "Enregistrer", + "description": "" + }, + "customPrompts_btnNew": { + "message": "Ajouter nouveau", + "description": "" + }, + "customPrompts_btnAddNewCommit": { + "message": "Ajouter la proposition", + "description": "" + }, + "customPrompts_add_to_menu": { + "message": "Ajouter au menu", + "description": "" + }, + "customPrompts_add_to_menu_always": { + "message": "Toujours", + "description": "" + }, + "customPrompts_add_to_menu_reading": { + "message": "Lors de la lecture d'un email", + "description": "" + }, + "customPrompts_add_to_menu_composing": { + "message": "Lors de la rédaction d'un email", + "description": "" + }, + "customPrompts_close_button": { + "message": "Bouton de fermeture", + "description": "" + }, + "customPrompts_do_reply": { + "message": "Faire une réponse", + "description": "" + }, + "customPrompts_substitute_text": { + "message": "Remplacer le texte", + "description": "" + }, + "chatgpt_win_working": { + "message": "Travail en cours...", + "description": "" + }, + "chatgpt_win_job_completed": { + "message": "Terminé !", + "description": "" + }, + "chatgpt_win_get_answer": { + "message": "Utiliser la dernière réponse", + "description": "" + }, + "chatgpt_win_close": { + "message": "Fermer", + "description": "" + }, + "chatgpt_textarea_not_found_error": { + "message": "Il y a une erreur lors de l'envoi de la proposition à ChatGPT, veuillez réessayer. Si le problème persiste, veuillez vérifier le statut du service.", + "description": "" + }, + "chatgpt_sendbutton_not_found_error": { + "message": "Cliquez sur le bouton d'envoi pour soumettre la proposition.", + "description": "" + }, + "chatgpt_user_not_logged_in": { + "message": "Vous n'êtes pas connecté à ChatGPT. Veuillez vous connecter avec vos identifiants, fermer la fenêtre ChatGPT, puis répéter l'action que vous avez tentée. Vous resterez connecté par la suite.", + "description": "" + }, + "chatgpt_win_model_warning": { + "message": "Vous avez choisi l'option d'utiliser ChatGPT-4, mais il semble qu'il ne se charge pas correctement. Avez-vous choisi le modèle 4 ou 4o en haut ?", + "description": "" + }, + "chatgpt_win_custom_text": { + "message": "Insérez ici le texte supplémentaire pour la proposition.", + "description": "" + }, + "chatgpt_win_send": { + "message": "Envoyer", + "description": "" + }, + "chatgpt_use_gpt35": { + "message": "Utiliser GPT3.5", + "description": "" + }, + "chatgpt_force_completion": { + "message": "forcer l'achèvement", + "description": "" + }, + "chatgpt_force_completion_title": { + "message": "Cliquez ici pour afficher le bouton 'Utiliser la dernière réponse' si ChatGPT a terminé son travail mais que le bouton n'est pas apparu.", + "description": "" + }, + "msg_prompt_too_long": { + "message": "Le texte que vous avez fourni est trop long. Vous devez le réduire pour utiliser ChatGPT.", + "description": "" + }, + "prefs_OptionText_release_notes": { + "message": "Notes de version", + "description": "" + }, + "prefs_status_page": { + "message": "statut du service", + "description": "" + }, + "prefs_OptionText_chatgpt_win_text": { + "message": "Dimensions de la fenêtre ChatGPT", + "description": "" + }, + "prefs_OptionText_chatgpt_win_height": { + "message": "Hauteur", + "description": "" + }, + "prefs_OptionText_chatgpt_win_width": { + "message": "Largeur", + "description": "" + }, + "prefs_OptionText_default_sign_name": { + "message": "Nom de la signature par défaut", + "description": "" + }, + "prefs_OptionText_default_chatgpt_lang": { + "message": "Langue par défaut pour les réponses de ChatGPT", + "description": "" + }, + "prefs_OptionText_reply_all": { + "message": "Répondre à tous", + "description": "" + }, + "prefs_OptionText_reply_sender": { + "message": "Répondre à l'expéditeur", + "description": "" + }, + "prefs_OptionText_reply_type": { + "message": "Type de réponse", + "description": "" + }, + "prefs_OptionText_chatpgt_keep_formatting": { + "message": "Conserver la mise en forme", + "description": "" + }, + "prefs_OptionText_chatpgt_keep_formatting_info": { + "message": "Conservez la mise en forme et les numéros ou les puces de la réponse de ChatGPT.", + "description": "" + }, + "prefs_OptionText_chatpgt_use_gpt4": { + "message": "Utiliser ChatGPT-4", + "description": "" + }, + "prefs_OptionText_chatpgt_use_gpt4_info": { + "message": "Après avoir changé cette option, vous devez choisir le bon modèle la première fois que vous l'utilisez.", + "description": "" + }, + "prefs_OptionText_btnManagePrompts": { + "message": "Gérer vos prompts", + "description": "" + }, + "prefsInfoTitle": { + "message": "Informations importantes", + "description": "" + }, + "prefsInfoDesc_1": { + "message": "Il n'est plus possible de désactiver l'historique des chats ChatGPT. Par conséquent, il n'y a aucun moyen d'empêcher les demandes effectuées via cet addon d'apparaître dans l'historique de vos chats ChatGPT.", + "description": "" + }, + "prefsInfoDesc_2": { + "message": "Si une page blanche apparaît lors de l'ouverture de la fenêtre ChatGPT, cela signifie qu'il y a un problème de chargement de la page ChatGPT, non lié à l'utilisation de cet addon.", + "description": "" + }, + "prefsInfoDesc_3": { + "message": " ", + "description": "" + }, + "prefsDonation_1": { + "message": "Aimez-vous cet addon ?", + "description": "" + }, + "prefsDonation_2": { + "message": "Envisagez de faire un don !", + "description": "" + }, + "backToOptionsText": { + "message": "Options", + "description": "" + }, + "TranslateText": { + "message": "Voulez-vous aider à traduire cet addon ?", + "description": "" + }, + "TranslateLink": { + "message": "Découvrez comment !", + "description": "" } - \ No newline at end of file +} \ No newline at end of file diff --git a/_locales/it/messages.json b/_locales/it/messages.json index 1615048d..6808acfb 100644 --- a/_locales/it/messages.json +++ b/_locales/it/messages.json @@ -67,6 +67,10 @@ "message": "Salvataggio prompt di base...", "description": "" }, + "customPrompts_managePrompts_info_default": { + "message": "I prompt predefiniti non sono modificabili. Puoi disattivarli, quindi copiare il testo del prompt e incollarlo in uno nuovo per crearne una versione modificata.", + "description": "" + }, "customPrompts_saving_custom_prompts": { "message": "Salvataggio prompt personalizzati...", "description": "" @@ -208,7 +212,7 @@ "description": "" }, "chatgpt_win_model_warning": { - "message": "Hai impostato l'opzione per utilizzare ChatGPT-4, ma sembra che non si stia caricando. Hai selezionato correttamente il modello in alto?", + "message": "Hai impostato l'opzione per utilizzare ChatGPT-4, ma sembra che non si stia caricando. Hai selezionato il modello 4 o 4o in alto?", "description": "" }, "chatgpt_win_custom_text": { @@ -283,6 +287,14 @@ "message": "Modalità di risposta", "description": "" }, + "prefs_OptionText_chatpgt_keep_formatting": { + "message": "Mantieni la formattazione", + "description": "" + }, + "prefs_OptionText_chatpgt_keep_formatting_info": { + "message": "Mantieni la formattazione del testo e gli elenchi puntati e numerati della risposta di ChatGPT.", + "description": "" + }, "prefs_OptionText_chatpgt_use_gpt4": { "message": "Usa il modello ChatGPT-4", "description": "" @@ -322,5 +334,13 @@ "backToOptionsText": { "message": "Opzioni", "description": "" + }, + "TranslateText": { + "message": "Vuoi aiutare a tradurre questo addon?", + "description": "" + }, + "TranslateLink": { + "message": "Scopri come!", + "description": "" } } \ No newline at end of file diff --git a/customprompts/mzta-custom-prompts.html b/customprompts/mzta-custom-prompts.html index a8f33596..60898e93 100644 --- a/customprompts/mzta-custom-prompts.html +++ b/customprompts/mzta-custom-prompts.html @@ -8,7 +8,8 @@

__MSG_customPrompts_managePrompts__

-

__MSG_customPrompts_managePrompts_help__

+

__MSG_customPrompts_managePrompts_info_default__ +
__MSG_customPrompts_managePrompts_help__

diff --git a/js/mzta-chatgpt.js b/js/mzta-chatgpt.js index 9d2f3d28..a0cbcd5c 100644 --- a/js/mzta-chatgpt.js +++ b/js/mzta-chatgpt.js @@ -72,17 +72,38 @@ async function chatgpt_getFromDOM(pos) { // Removing the new buttons that let the user change model and insert a number (4 or 3.5 at the end of the text) let parser = new DOMParser(); let doc = parser.parseFromString(responseDivs[responseDivs.length - 1].innerHTML, 'text/html'); + if(!mztaKeepFormatting) { // Return only TEXT // Select the div with class 'empty:hidden' - let divToRemove = doc.querySelector('div.empty\\\\:hidden'); - if (divToRemove) { - divToRemove.remove(); + let divToRemove = doc.querySelector('div.empty\\\\:hidden'); + if (divToRemove) { + divToRemove.remove(); + } + // Extract the new HTML string + responseDivs[responseDivs.length - 1].innerHTML = doc.body.innerHTML; + response = responseDivs[responseDivs.length - 1].textContent; + response = response.replace(/^ChatGPT(?:ChatGPT)?/, ''); // strip sender name + response = response.trim().replace(/^"|"$/g, ''); // strip quotation marks + response = "

" + response + "

"; + //console.log(">>>>>>>>> response: " + JSON.stringify(response)); + let parser_2 = new DOMParser(); + let doc_response = parser_2.parseFromString(response, 'text/html'); + //console.log(">>>>>>>>> doc_response: " + JSON.stringify(doc_response.body.innerHTML)); + replaceNewlinesWithBr(doc_response.body) + response = doc_response.body.innerHTML; + // response = responseDivs[responseDivs.length - 1].innerHTML; + } else { // Return HTML + // Tags to exclude + //console.log(">>>>>>>>> doc.body.innerHTML original: " + doc.body.innerHTML); + const excludeTags = ['div', 'text', 'svg', 'path', 'button']; + const includeTags = ['p', 'ul']; + // removeTags(doc.body, excludeTags); + response = removeTagsAndReturnHTML(doc.body, excludeTags, includeTags) + //console.log(">>>>>>>>> doc.body.innerHTML final: " + doc.body.innerHTML); + // response = doc.body.innerHTML; } - // Extract the new HTML string - responseDivs[responseDivs.length - 1].innerHTML = doc.body.innerHTML; - response = responseDivs[responseDivs.length - 1].textContent; - //console.log('chatgpt_getFromDOM: '+response); + //console.log('chatgpt_getFromDOM final response: '+response); //console.log('chatgpt_getFromDOM: [HTML] ' + responseDivs[responseDivs.length - 1].innerHTML.replace(/]*>/gi, '').replace(/<\\/div>/gi, '').replace(/]*>/gi, '').replace(/<\\/svg>/gi, '').replace(/]*>/gi, '').replace(/<\\/path>/gi, '').replace(/]*>/gi, '').replace(/<\\/text>/gi, '').replace(/]*>/gi, '').replace(/<\\/span>/gi, '').replace(/]*>/gi, '').replace(/<\\/button>/gi, '')); - } else { // get nth response + } else { // get nth response --- HERE ONLY TEXT FROM RESPONSE, NO HTML const nthOfResponse = ( // Calculate base number @@ -107,9 +128,7 @@ async function chatgpt_getFromDOM(pos) { ); response = responseDivs[nthOfResponse - 1].textContent; } - response = response.replace(/^ChatGPT(?:ChatGPT)?/, ''); // strip sender name - response = response.trim().replace(/^"|"$/g, ''); // strip quotation marks - //console.log('chatgpt_getFromDOM: ' + response); + //console.log('>>>>>>>>>>>>>> chatgpt_getFromDOM: ' + JSON.stringify(response)); } return response; } @@ -337,6 +356,63 @@ async function doProceed(message, customText = ''){ operation_done(); } + +function removeTagsAndReturnHTML(rootElement, removeTags, preserveTags) { + const fragment = document.createDocumentFragment(); + + function handleElement(element) { + let child = element.firstChild; + while (child) { + const nextSibling = child.nextSibling; + if (preserveTags.includes(child.nodeName.toLowerCase())) { + //console.log(">>>>>>>>>>>> preserve child: " + child.tagName.toLowerCase()); + fragment.appendChild(child); + } else if (child.nodeType === Node.ELEMENT_NODE) { + //console.log(">>>>>>>>>>>> handleElement(child): " + child.tagName.toLowerCase()); + handleElement(child); + } + child = nextSibling; + } + } + + removeTags.forEach(tag => { + const elements = Array.from(rootElement.getElementsByTagName(tag)); + elements.forEach(element => { + handleElement(element); + element.parentNode.insertBefore(fragment.cloneNode(true), element); + element.parentNode.removeChild(element); + //console.log(">>>>>>>>>>>> removeChild: " + element.tagName.toLowerCase()); + }); + }); + + replaceNewlinesWithBr(rootElement); + //console.log(">>>>>>>>>>>> rootElement.innerHTML: " + rootElement.innerHTML); + // Return the updated HTML as a string + return rootElement.innerHTML; +} + +// Replace newline characters with
tags +function replaceNewlinesWithBr(node) { + for (let child of Array.from(node.childNodes)) { + if (child.nodeType === Node.TEXT_NODE) { + const parts = child.textContent.split('\\n'); + if (parts.length > 1) { + const fragment = document.createDocumentFragment(); + parts.forEach((part, index) => { + fragment.appendChild(document.createTextNode(part)); + if (index < parts.length - 1) { + fragment.appendChild(document.createElement('br')); + } + }); + child.parentNode.replaceChild(fragment, child); + } + } else if (child.nodeType === Node.ELEMENT_NODE) { + replaceNewlinesWithBr(child); + } + } +} + + // In the content script browser.runtime.onMessage.addListener((message, sender, sendResponse) => { if (message.command === "chatgpt_send") { diff --git a/js/mzta-compose-script.js b/js/mzta-compose-script.js index a5d4077a..12617313 100644 --- a/js/mzta-compose-script.js +++ b/js/mzta-compose-script.js @@ -16,24 +16,6 @@ * along with this program. If not, see . */ -// Some methods are a modified version derived from https://github.com/ali-raheem/Aify/blob/13ff87583bc520fb80f555ab90a90c5c9df797a7/plugin/content_scripts/compose.js - -const makeParagraphs = (text, func) => { - const chunks = text.split(/\n{2,}/); - if (chunks.length == 1) { - return func(document.createTextNode(text)); - } - const paragraphs = chunks.map((t) => { - const p = document.createElement("p"); - p.innerText = t; - return p; - }); - for (let i = paragraphs.length - 1; i >= 0; i--) { - func(paragraphs[i]); - } -}; - - browser.runtime.onMessage.addListener(async (message) => { switch (message.command) { case "getSelectedText": @@ -50,9 +32,9 @@ switch (message.command) { } const r = sel.getRangeAt(0); r.deleteContents(); - makeParagraphs(message.text, function (p) { - r.insertNode(p); - }); + const parser = new DOMParser(); + const doc = parser.parseFromString(message.text, 'text/html'); + r.insertNode(doc.body); browser.runtime.sendMessage({command: "compose_reloadBody", tabId: message.tabId}); break; diff --git a/js/mzta-utils.js b/js/mzta-utils.js index 8ba040b9..1e5e9bfc 100644 --- a/js/mzta-utils.js +++ b/js/mzta-utils.js @@ -78,11 +78,11 @@ export async function setBody(tabId, fullHtmlBody){ await messenger.compose.setComposeDetails(tabId, {body: fullHtmlBody}); } -export async function replaceBody(tabId, text){ +export async function replaceBody(tabId, replyHtml) { let composeDetails = await messenger.compose.getComposeDetails(tabId); let originalHtmlBody = composeDetails.body; //console.log('originalHtmlBody: ' + originalHtmlBody); - let fullBody = insertText(text, originalHtmlBody); + let fullBody = insertHtml(replyHtml, originalHtmlBody); //console.log('fullBody: ' + fullBody); await messenger.compose.setComposeDetails(tabId, {body: fullBody}); } @@ -90,9 +90,10 @@ export async function replaceBody(tabId, text){ // The following methods are a modified version derived from https://github.com/ali-raheem/Aify/blob/13ff87583bc520fb80f555ab90a90c5c9df797a7/plugin/content_scripts/compose.js -const insertText = function (text, fullBody_string) { +const insertHtml = function (replyHtml, fullBody_string) { const parser = new DOMParser(); let fullBody = parser.parseFromString(fullBody_string, "text/html"); + let reply = parser.parseFromString(replyHtml, "text/html"); // looking for the first quoted mail or the signature, which come first in case of "signature above the quote". const prefix_quote = fullBody.getElementsByClassName("moz-cite-prefix"); @@ -119,25 +120,18 @@ const insertText = function (text, fullBody_string) { } let final_p = document.createElement("p"); - final_p.innerHTML = "



"; + let br1 = document.createElement("br"); + let br2 = document.createElement("br"); + final_p.appendChild(br1); + final_p.appendChild(br2); fullBody.body.insertBefore(final_p, fullBody.body.firstChild); - makeParagraphs(text, function (p) { - fullBody.body.insertBefore(p, fullBody.body.firstChild); + //fullBody.body.insertBefore(reply, fullBody.body.firstChild); + let fragment = document.createDocumentFragment(); + Array.from(reply.body.childNodes).forEach(node => { + if (node.parentNode === reply.body) { + fragment.appendChild(node.cloneNode(true)); + } }); + fullBody.body.insertBefore(fragment, fullBody.body.firstChild); return fullBody.body.innerHTML; -} - -const makeParagraphs = (text, func) => { - const chunks = text.split(/\n{2,}/); - if (chunks.length == 1) { - return func(document.createTextNode(text)); - } - const paragraphs = chunks.map((t) => { - const p = document.createElement("p"); - p.innerText = t; - return p; - }); - for (let i = paragraphs.length - 1; i >= 0; i--) { - func(paragraphs[i]); - } -}; \ No newline at end of file +} \ No newline at end of file diff --git a/manifest.json b/manifest.json index 59b48e64..6e17b005 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 2, "name": "ThunderAI", "description": "__MSG_extensionDescription__", - "version": "1.1.3", + "version": "1.1.4", "author": "Mic (m@micz.it)", "homepage_url": "https://micz.it/thunderbird-addon-thunderai/", "browser_specific_settings": { diff --git a/mzta-background.js b/mzta-background.js index 1f2eefcb..9c3e886a 100644 --- a/mzta-background.js +++ b/mzta-background.js @@ -19,7 +19,7 @@ import { mzta_script } from './js/mzta-chatgpt.js'; import { prefs_default } from './options/mzta-options-default.js'; import { mzta_Menus } from './js/mzta-menus.js'; -import { getCurrentIdentity, getOriginalBody, reloadBody, replaceBody, setBody } from './js/mzta-utils.js'; +import { getCurrentIdentity, getOriginalBody, replaceBody, setBody } from './js/mzta-utils.js'; var createdWindowID = null; var original_html = ''; @@ -69,6 +69,7 @@ messenger.runtime.onMessage.addListener(async (message, sender, sendResponse) => return true; case 'chatgpt_replyMessage': const paragraphsHtmlString = message.text; + //console.log(">>>>>>>>>>>> paragraphsHtmlString: " + paragraphsHtmlString); let prefs = await browser.storage.sync.get({reply_type: 'reply_all'}); //console.log('reply_type: ' + prefs.reply_type); let replyType = 'replyToAll'; @@ -100,7 +101,7 @@ messenger.runtime.onMessage.addListener(async (message, sender, sendResponse) => const listener = (tabId, changeInfo, updatedTab) => { if (tabIsLoaded(updatedTab)) { browser.tabs.onUpdated.removeListener(listener); - console.log(">>>>>>>>>>>> reply_tab: " + tabId); + //console.log(">>>>>>>>>>>> reply_tab: " + tabId); resolve(); } } @@ -138,6 +139,7 @@ messenger.runtime.onMessage.addListener(async (message, sender, sendResponse) => async function openChatGPT(promptText, action, curr_tabId, do_custom_text = 0) { let prefs = await browser.storage.sync.get(prefs_default); prefs = checkScreenDimensions(prefs); + //console.log(">>>>>>>>>>>>>>>> prefs: " + JSON.stringify(prefs)); console.log('[ThunderAI] Prompt length: ' + promptText.length); if(promptText.length > 30000 ){ // Prompt too long for ChatGPT @@ -178,6 +180,7 @@ async function openChatGPT(promptText, action, curr_tabId, do_custom_text = 0) { let mztaForceCompletionDesc="`+ browser.i18n.getMessage("chatgpt_force_completion") +`"; let mztaForceCompletionTitle="`+ browser.i18n.getMessage("chatgpt_force_completion_title") +`"; let mztaDoCustomText=`+ do_custom_text +`; + let mztaKeepFormatting=`+ prefs.chatgpt_keep_formatting +`; `; browser.tabs.executeScript(createdTab.id, { code: pre_script + mzta_script, matchAboutBlank: false }) diff --git a/options/mzta-options-default.js b/options/mzta-options-default.js index 4cfc2112..e747ef8d 100644 --- a/options/mzta-options-default.js +++ b/options/mzta-options-default.js @@ -20,4 +20,5 @@ export const prefs_default = { chatgpt_win_height: 800, chatgpt_win_width: 700, chatpgt_use_gpt4: false, + chatgpt_keep_formatting: false, } \ No newline at end of file diff --git a/options/mzta-options.css b/options/mzta-options.css index 27483aea..92c96f24 100644 --- a/options/mzta-options.css +++ b/options/mzta-options.css @@ -61,6 +61,7 @@ div#miczStatusPage{ left: 0px; bottom: 2px; padding: 2px 0px 0px 5px; + text-transform: capitalize; } div#miczDescription h1{ @@ -90,4 +91,12 @@ span.dims_label{ text-align: center; width: 100%; margin: 10px 0px; +} + +div#miczTranslate{ + width: 100%; + text-align: center; + font-size: 14px; + font-weight: bold; + margin-bottom: 1em; } \ No newline at end of file diff --git a/options/mzta-options.html b/options/mzta-options.html index 9896bba0..67e54083 100644 --- a/options/mzta-options.html +++ b/options/mzta-options.html @@ -59,6 +59,17 @@ + + + + + +
+
__MSG_TranslateText__ __MSG_TranslateLink__
__MSG_prefsDonation_1__
__MSG_prefsDonation_2__
diff --git a/options/mzta-release-notes.html b/options/mzta-release-notes.html index 5ae0af11..911ec50c 100644 --- a/options/mzta-release-notes.html +++ b/options/mzta-release-notes.html @@ -7,7 +7,14 @@
__MSG_backToOptionsText__

ThunderAI Release Notes

-

Version 1.1.3 - 18/06/2024

+

Version 1.1.4 - 28/06/2024

+ +

Version 1.1.3 - 18/06/2024