diff --git a/images/manage/trigger/trigger-based-auto-replies-on-follow-ups_with_locale.png b/images/manage/trigger/trigger-based-auto-replies-on-follow-ups_with_locale.png index 976efbef..7b6af336 100644 Binary files a/images/manage/trigger/trigger-based-auto-replies-on-follow-ups_with_locale.png and b/images/manage/trigger/trigger-based-auto-replies-on-follow-ups_with_locale.png differ diff --git a/images/settings/ticket/article-detail-language-detection.png b/images/settings/ticket/article-detail-language-detection.png new file mode 100644 index 00000000..0e4d58a2 Binary files /dev/null and b/images/settings/ticket/article-detail-language-detection.png differ diff --git a/locale/admin-docs.pot b/locale/admin-docs.pot index 570f44a1..4c30847b 100644 --- a/locale/admin-docs.pot +++ b/locale/admin-docs.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Zammad Admin Documentation pre-release\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-01-29 13:25+0100\n" +"POT-Creation-Date: 2025-02-04 08:24+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -76,7 +76,7 @@ msgstr "" #: ../channels/chat.rst:31 #: ../manage/checklist.rst:5 -#: ../misc/object-conditions/basics.rst:419 +#: ../misc/object-conditions/basics.rst:433 #: ../system/monitoring.rst:9 msgid "General" msgstr "" @@ -383,7 +383,7 @@ msgid "Email Inbound" msgstr "" #: ../channels/email/accounts/account-setup.rst:111 -#: ../misc/object-conditions/basics.rst:193 +#: ../misc/object-conditions/basics.rst:207 #: ../system/objects.rst:152 #: ../system/objects/types.rst:157 msgid "Type" @@ -5816,7 +5816,7 @@ msgstr "" #: ../index.rst:68 #: ../index.rst:68 -#: ../misc/object-conditions/basics.rst:156 +#: ../misc/object-conditions/basics.rst:170 #: ../settings/system/index.rst:2 msgid "System" msgstr "" @@ -6263,8 +6263,8 @@ msgstr "" #: ../manage/groups/settings.rst:46 #: ../manage/groups/settings.rst:67 -#: ../misc/object-conditions/basics.rst:108 -#: ../misc/object-conditions/basics.rst:123 +#: ../misc/object-conditions/basics.rst:122 +#: ../misc/object-conditions/basics.rst:137 msgid "yes" msgstr "" @@ -6305,8 +6305,8 @@ msgid "The ticket will remain with the last agent who owned it. This is the defa msgstr "" #: ../manage/groups/settings.rst:70 -#: ../misc/object-conditions/basics.rst:109 -#: ../misc/object-conditions/basics.rst:124 +#: ../misc/object-conditions/basics.rst:123 +#: ../misc/object-conditions/basics.rst:138 msgid "no" msgstr "" @@ -6888,7 +6888,7 @@ msgstr "" #: ../manage/macros/learn-by-example.rst:0 #: ../manage/macros/learn-by-example.rst:0 -#: ../misc/object-conditions/basics.rst:159 +#: ../misc/object-conditions/basics.rst:173 msgid "State" msgstr "" @@ -6898,7 +6898,7 @@ msgstr "" #: ../manage/macros/learn-by-example.rst:0 #: ../manage/tags.rst:2 -#: ../misc/object-conditions/basics.rst:177 +#: ../misc/object-conditions/basics.rst:191 msgid "Tags" msgstr "" @@ -6908,15 +6908,15 @@ msgstr "" #: ../manage/macros/learn-by-example.rst:0 #: ../manage/macros/learn-by-example.rst:0 -#: ../misc/object-conditions/basics.rst:143 +#: ../misc/object-conditions/basics.rst:157 msgid "Owner" msgstr "" #: ../manage/macros/learn-by-example.rst:15 #: ../manage/macros/learn-by-example.rst:33 #: ../misc/object-conditions/basics.rst:96 -#: ../misc/object-conditions/basics.rst:148 -#: ../misc/object-conditions/basics.rst:174 +#: ../misc/object-conditions/basics.rst:162 +#: ../misc/object-conditions/basics.rst:188 msgid "current user" msgstr "" @@ -9874,7 +9874,7 @@ msgstr "" #: ../manage/time-accounting.rst:181 #: ../misc/object-conditions/basics.rst:36 #: ../misc/object-conditions/basics.rst:90 -#: ../misc/object-conditions/basics.rst:158 +#: ../misc/object-conditions/basics.rst:172 msgid "Customer" msgstr "" @@ -9905,12 +9905,12 @@ msgstr "" #: ../manage/time-accounting.rst:172 #: ../misc/object-conditions/basics.rst:25 #: ../misc/object-conditions/basics.rst:91 -#: ../misc/object-conditions/basics.rst:113 -#: ../misc/object-conditions/basics.rst:126 -#: ../misc/object-conditions/basics.rst:144 -#: ../misc/object-conditions/basics.rst:160 -#: ../misc/object-conditions/basics.rst:168 -#: ../misc/object-conditions/basics.rst:178 +#: ../misc/object-conditions/basics.rst:127 +#: ../misc/object-conditions/basics.rst:140 +#: ../misc/object-conditions/basics.rst:158 +#: ../misc/object-conditions/basics.rst:174 +#: ../misc/object-conditions/basics.rst:182 +#: ../misc/object-conditions/basics.rst:192 #: ../misc/variables/ticket.rst:2 #: ../settings/ticket.rst:2 msgid "Ticket" @@ -9943,8 +9943,8 @@ msgstr "" #: ../manage/time-accounting.rst:191 #: ../misc/object-conditions/basics.rst:27 -#: ../misc/object-conditions/basics.rst:102 -#: ../misc/object-conditions/basics.rst:133 +#: ../misc/object-conditions/basics.rst:116 +#: ../misc/object-conditions/basics.rst:147 #: ../settings/branding.rst:13 msgid "Organization" msgstr "" @@ -10210,15 +10210,15 @@ msgstr "" msgid "Emma Taylor is responsible for all sales internally, so if a new ticket has the word \"order\" in the subject, assign it to her and make sure it's set with a high priority:" msgstr "" -#: ../manage/trigger/learn-by-example.rst:24 -msgid "Send an auto-reply email to *any customer* who responds to a ticket:" +#: ../manage/trigger/learn-by-example.rst:26 +msgid "Send an auto-reply email to any customer who creates a ticket via web, if the detected language is English:" msgstr "" -#: ../manage/trigger/learn-by-example.rst:30 +#: ../manage/trigger/learn-by-example.rst:33 msgid "📨 **Not all automated messages come from triggers!**" msgstr "" -#: ../manage/trigger/learn-by-example.rst:32 +#: ../manage/trigger/learn-by-example.rst:35 msgid "For instance, when *agents* receive a system email about a newly created ticket, that's built into the system itself. If you need to customize those, you will have to :doc:`manually edit files on your server `." msgstr "" @@ -12063,7 +12063,7 @@ msgid "Depending on the location and selected attribute, the object context may msgstr "" #: ../misc/object-conditions/basics.rst:28 -#: ../misc/object-conditions/basics.rst:125 +#: ../misc/object-conditions/basics.rst:139 #: ../system/integrations/checkmk/admin-panel-reference.rst:15 msgid "Group" msgstr "" @@ -12073,10 +12073,11 @@ msgid "Within these 4 objects, you can even create your :doc:`own attributes `_." +msgstr "" + +#: ../settings/ticket.rst:179 +msgid "Be aware that this feature is in its early stages. Enhancements may come in very soon." +msgstr "" + +#: ../settings/ticket.rst:181 +msgid "While we noticed it works pretty well, it may fail for some edge cases." +msgstr "" + +#: ../settings/ticket.rst:182 +msgid "The language selection in conditions and the output in the article detail view is always in English. The language names are not translated into user's current language." +msgstr "" + +#: ../settings/ticket.rst:186 +msgid "You can see the name of the detected language in the detail view of an article. You can display additional information by clicking on an article, which expands more details:" +msgstr "" + +#: ../settings/ticket.rst:None +msgid "Screenshot showing detected language in article detail view" +msgstr "" + +#: ../settings/ticket.rst:194 +msgid "If you are wondering what this feature is useful for, the answer is:" +msgstr "" + +#: ../settings/ticket.rst:196 +msgid "Use the detected language as a condition attribute in triggers and schedulers. Examples are: to send auto replies in different languages (see :ref:`trigger example `) and to move tickets in a specific language into a specific group." +msgstr "" + +#: ../settings/ticket.rst:200 +msgid "Search by the new article attribute in the advanced search (both via language code and language name). Examples: ``article.detected_language:en``, ``article.detected_language_name:english``" +msgstr "" + +#: ../settings/ticket.rst:205 msgid "Notifications" msgstr "" -#: ../settings/ticket.rst:191 +#: ../settings/ticket.rst:229 msgid "Default Notifications" msgstr "" -#: ../settings/ticket.rst:170 +#: ../settings/ticket.rst:208 msgid "This setting allows you to configure the default ticket notifications that will be applied to all new agent users (incl. users who were just assigned agent role). Simply change the notification matrix to desired state and press **Save**." msgstr "" -#: ../settings/ticket.rst:175 +#: ../settings/ticket.rst:213 msgid "In case an agent already exists, their ticket notification preferences will be preserved. Optionally, you can also **Apply current defaults to all agents**." msgstr "" -#: ../settings/ticket.rst:181 +#: ../settings/ticket.rst:219 msgid "**Potential time-consuming action:** Applying default ticket notifications to all agent users may take some time to complete, be patient! The exact time will depend on the size of your system and the number of agents." msgstr "" -#: ../settings/ticket.rst:185 +#: ../settings/ticket.rst:223 msgid "**Active agents only!** When current default ticket notifications are applied, only active agent users are considered. In case an agent is re-activated *after* this action, they will still have the old notification configuration." msgstr "" -#: ../settings/ticket.rst:190 +#: ../settings/ticket.rst:228 msgid "In case you want to go back to the initial state of ticket notifications, you can click on **Reset to default** button." msgstr "" -#: ../settings/ticket.rst:196 +#: ../settings/ticket.rst:234 msgid "Duplicate Detection" msgstr "" -#: ../settings/ticket.rst:238 +#: ../settings/ticket.rst:276 msgid "Detect Duplicate Ticket Creation" msgstr "" -#: ../settings/ticket.rst:199 +#: ../settings/ticket.rst:237 msgid "This setting turns on the duplicate ticket detection mechanism during ticket creation. If similar tickets are found in the system, a suitable warning will be shown to the user trying to create a ticket." msgstr "" -#: ../settings/ticket.rst:206 +#: ../settings/ticket.rst:244 msgid "A Sample Duplicate Ticket Warning" msgstr "" -#: ../settings/ticket.rst:208 +#: ../settings/ticket.rst:246 msgid "You can choose which ticket attributes will be matched by selecting them in **Attributes to compare** field. Only if the ticket attribute value provided by the user in the ticket create form is *equal* with the attribute in an existing ticket, the warning will be shown." msgstr "" -#: ../settings/ticket.rst:213 +#: ../settings/ticket.rst:251 msgid "**Warning title** and **Warning message** are configurable as well." msgstr "" -#: ../settings/ticket.rst:215 +#: ../settings/ticket.rst:253 msgid "You can limit the detection only to certain user roles. By default, only agents will see the warning." msgstr "" -#: ../settings/ticket.rst:218 +#: ../settings/ticket.rst:256 msgid "If you don't want to show the matched tickets as part of the warning, you can set **Show matching ticket(s) in the warning** setting to *no*." msgstr "" -#: ../settings/ticket.rst:221 +#: ../settings/ticket.rst:259 msgid "By default, **Permission level for looking up ticket** is set to *User*, which means user permissions will be honored during sarch. The user will see the warning only if tickets they have access to are matched. Alternatively, you can set this setting to *System*, in which case the search will happen within *all* tickets in the system, regardless of user permissions." msgstr "" -#: ../settings/ticket.rst:227 +#: ../settings/ticket.rst:265 msgid "**🦺 Safety first!**" msgstr "" -#: ../settings/ticket.rst:229 +#: ../settings/ticket.rst:267 msgid "Even if the permission level is set to *System*, the user will not be shown the tickets they don't have access to in the warning, even if they match." msgstr "" -#: ../settings/ticket.rst:233 +#: ../settings/ticket.rst:271 msgid "However, just the confirmation about the existence of the tickets in the system may be considered an unwanted information disclosure. Use this option carefully!" msgstr "" -#: ../settings/ticket.rst:237 +#: ../settings/ticket.rst:275 msgid "Finally, you can configure between matching within **All tickets** or **Open tickets** only by setting **Match tickets in following states**. Depending on the current ticket state, a ticket may or not be matched." msgstr "" diff --git a/manage/trigger/learn-by-example.rst b/manage/trigger/learn-by-example.rst index b5902467..2eeebd49 100644 --- a/manage/trigger/learn-by-example.rst +++ b/manage/trigger/learn-by-example.rst @@ -21,11 +21,14 @@ To learn about triggers in detail, first go to :align: center :scale: 80% -3. Send an auto-reply email to *any customer* who responds to a ticket: +.. _trigger-example-3: + +3. Send an auto-reply email to any customer who creates a ticket via web, if + the detected language is English: .. figure:: /images/manage/trigger/trigger-based-auto-replies-on-follow-ups_with_locale.png :align: center - :scale: 80% + :scale: 95% .. note:: 📨 **Not all automated messages come from triggers!** diff --git a/misc/object-conditions/basics.rst b/misc/object-conditions/basics.rst index d4b45861..d6200dd9 100644 --- a/misc/object-conditions/basics.rst +++ b/misc/object-conditions/basics.rst @@ -96,6 +96,20 @@ editing a condition. Find them in the following table. - - current user - specific user - not set + * - Detected + + Language + - Article + - Checks the language of the article. + - - is + - is not + - All languages which + + are supported by the + + language detection + + service. * - Existing members diff --git a/settings/ticket.rst b/settings/ticket.rst index 8379c531..d9ecae16 100644 --- a/settings/ticket.rst +++ b/settings/ticket.rst @@ -163,6 +163,44 @@ the desired agents in the ``Exception Users`` list. The search function in this area is only effective, if you have too many agents to display at once to help you with the configuration. +Language Detection +------------------ + +Zammad offers a built in language detection for articles. By default, it is +turned off. Turn it on by selecting a backend service and confirm by clicking +**Submit**. + +After enabling it, Zammad tries to detect the language of each **new** article. +The language is not detected for existing articles. + +.. note:: + - Currently, there is only one backend service available: + `Compact Language Detection `_. + - Be aware that this feature is in its early stages. Enhancements may come in + very soon. + - While we noticed it works pretty well, it may fail for some edge cases. + - The language selection in conditions and the output in the article detail + view is always in English. The language names are not translated into + user's current language. + +You can see the name of the detected language in the detail view of an article. +You can display additional information by clicking on an article, which expands +more details: + +.. figure:: /images/settings/ticket/article-detail-language-detection.png + :alt: Screenshot showing detected language in article detail view + :align: center + +If you are wondering what this feature is useful for, the answer is: + +- Use the detected language as a condition attribute in triggers and schedulers. + Examples are: to send auto replies in different languages (see + :ref:`trigger example `) and to + move tickets in a specific language into a specific group. +- Search by the new article attribute in the advanced search (both via + language code and language name). Examples: ``article.detected_language:en``, + ``article.detected_language_name:english`` + Notifications -------------