Free and open source ticket system written in python

Merge pull request #6 from aottr/feature/ui-improvements

remove unused templates, improve german translation and add missing keys

authored by aottr.dev and committed by

GitHub 8fd14508 9faf62e2

+178 -179
+57 -24
paw/locale/de/LC_MESSAGES/django.po
··· 8 8 msgstr "" 9 9 "Project-Id-Version: PACKAGE VERSION\n" 10 10 "Report-Msgid-Bugs-To: \n" 11 - "POT-Creation-Date: 2024-03-24 23:44+0000\n" 11 + "POT-Creation-Date: 2024-03-25 11:47+0000\n" 12 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 14 14 "Language-Team: LANGUAGE <LL@li.org>\n" ··· 28 28 msgstr "Nur Alphanumerische Zeichen, Unterstriche und Striche (a-z, 0-9, _, -, @)" 29 29 30 30 #: core/forms.py:35 paw/templates/core/account_finish.html:29 31 - #: paw/templates/core/login.html:24 31 + #: paw/templates/core/login.html:24 paw/templates/core/register.html:20 32 32 msgid "Username" 33 33 msgstr "Benutzername" 34 34 ··· 48 48 msgid "German" 49 49 msgstr "" 50 50 51 - #: paw/templates/core/account_finish.html:10 51 + #: paw/templates/base.html:20 paw/templates/dashboard_base.html:40 52 + msgid "Tickets" 53 + msgstr "Tickets" 54 + 55 + #: paw/templates/base.html:21 paw/templates/dashboard_base.html:53 56 + #: paw/templates/ticketing/tickets.html:20 57 + msgid "Status" 58 + msgstr "" 59 + 60 + #: paw/templates/core/account_finish.html:10 paw/templates/core/register.html:6 52 61 msgid "Register a new account" 53 62 msgstr "" 54 63 ··· 77 86 msgid "Register Account" 78 87 msgstr "Account erstellen" 79 88 80 - #: paw/templates/core/login.html:30 89 + #: paw/templates/core/login.html:30 paw/templates/core/register.html:32 81 90 msgid "Password" 82 91 msgstr "Passwort" 83 92 ··· 89 98 msgid "Log in with Google" 90 99 msgstr "Mit Google anmelden" 91 100 101 + #: paw/templates/core/register.html:26 102 + #, fuzzy 103 + #| msgid "Mail Address" 104 + msgid "Email Address" 105 + msgstr "Mail Adresse" 106 + 107 + #: paw/templates/core/register.html:38 108 + msgid "Confirm Password" 109 + msgstr "Passwort bestätigen" 110 + 111 + #: paw/templates/core/register.html:43 112 + #, fuzzy 113 + #| msgid "Register Account" 114 + msgid "Register" 115 + msgstr "Account erstellen" 116 + 92 117 #: paw/templates/core/settings.html:7 paw/templates/dashboard_base.html:85 93 118 msgid "Settings" 94 119 msgstr "Einstellungen" ··· 123 148 msgid "Create Ticket" 124 149 msgstr "Ticket erstellen" 125 150 126 - #: paw/templates/dashboard_base.html:40 127 - msgid "Tickets" 128 - msgstr "Tickets" 129 - 130 151 #: paw/templates/dashboard_base.html:46 131 152 #: paw/templates/ticketing/tickets_history.html:5 132 153 msgid "History" 133 154 msgstr "Historie" 134 - 135 - #: paw/templates/dashboard_base.html:53 paw/templates/ticketing/tickets.html:20 136 - msgid "Status" 137 - msgstr "" 138 155 139 156 #: paw/templates/dashboard_base.html:79 140 157 msgid "Admin" ··· 149 166 msgid "Unassigned" 150 167 msgstr "Nicht zugewiesen" 151 168 169 + #: paw/templates/partials/ticket_priority_badge.html:3 ticketing/models.py:45 170 + msgid "Low" 171 + msgstr "Niedrig" 172 + 173 + #: paw/templates/partials/ticket_priority_badge.html:5 ticketing/models.py:46 174 + msgid "Medium" 175 + msgstr "Mittel" 176 + 177 + #: paw/templates/partials/ticket_priority_badge.html:7 ticketing/models.py:47 178 + msgid "High" 179 + msgstr "Hoch" 180 + 152 181 #: paw/templates/partials/ticket_status_badge.html:4 ticketing/models.py:40 153 182 msgid "Open" 154 183 msgstr "Offen" ··· 313 342 msgid "All services are operational" 314 343 msgstr "Alle Dienste sind voll funktionstüchtig" 315 344 345 + #: status/templates/status/incident_list.html:21 346 + msgid "Incidents" 347 + msgstr "Vorfälle" 348 + 349 + #: status/templates/status/incident_list.html:29 350 + msgid "Resolved" 351 + msgstr "Gelöst" 352 + 353 + #: status/templates/status/incident_list.html:31 354 + msgid "Unresolved" 355 + msgstr "Ungelöst" 356 + 357 + #: status/templates/status/incident_list.html:37 358 + msgid "No incidents yet." 359 + msgstr "Noch keine Vorfälle." 360 + 316 361 #: ticketing/forms.py:39 317 362 msgid "File size must be under 5MB." 318 363 msgstr "Dateigrösse muss unter 5MB sein." ··· 341 386 msgid "" 342 387 "If a team is selected, new tickets will automatically assigned to this team." 343 388 msgstr "" 344 - 345 - #: ticketing/models.py:45 346 - msgid "Low" 347 - msgstr "Niedrig" 348 - 349 - #: ticketing/models.py:46 350 - msgid "Medium" 351 - msgstr "Mittel" 352 - 353 - #: ticketing/models.py:47 354 - msgid "High" 355 - msgstr "Hoch"
+53 -24
paw/locale/en/LC_MESSAGES/django.po
··· 8 8 msgstr "" 9 9 "Project-Id-Version: PACKAGE VERSION\n" 10 10 "Report-Msgid-Bugs-To: \n" 11 - "POT-Creation-Date: 2024-03-24 23:44+0000\n" 11 + "POT-Creation-Date: 2024-03-25 11:47+0000\n" 12 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 14 14 "Language-Team: LANGUAGE <LL@li.org>\n" ··· 28 28 msgstr "" 29 29 30 30 #: core/forms.py:35 paw/templates/core/account_finish.html:29 31 - #: paw/templates/core/login.html:24 31 + #: paw/templates/core/login.html:24 paw/templates/core/register.html:20 32 32 msgid "Username" 33 33 msgstr "" 34 34 ··· 48 48 msgid "German" 49 49 msgstr "Deutsch" 50 50 51 - #: paw/templates/core/account_finish.html:10 51 + #: paw/templates/base.html:20 paw/templates/dashboard_base.html:40 52 + msgid "Tickets" 53 + msgstr "" 54 + 55 + #: paw/templates/base.html:21 paw/templates/dashboard_base.html:53 56 + #: paw/templates/ticketing/tickets.html:20 57 + msgid "Status" 58 + msgstr "" 59 + 60 + #: paw/templates/core/account_finish.html:10 paw/templates/core/register.html:6 52 61 msgid "Register a new account" 53 62 msgstr "" 54 63 ··· 77 86 msgid "Register Account" 78 87 msgstr "" 79 88 80 - #: paw/templates/core/login.html:30 89 + #: paw/templates/core/login.html:30 paw/templates/core/register.html:32 81 90 msgid "Password" 82 91 msgstr "" 83 92 ··· 89 98 msgid "Log in with Google" 90 99 msgstr "" 91 100 101 + #: paw/templates/core/register.html:26 102 + msgid "Email Address" 103 + msgstr "" 104 + 105 + #: paw/templates/core/register.html:38 106 + msgid "Confirm Password" 107 + msgstr "" 108 + 109 + #: paw/templates/core/register.html:43 110 + msgid "Register" 111 + msgstr "" 112 + 92 113 #: paw/templates/core/settings.html:7 paw/templates/dashboard_base.html:85 93 114 #, fuzzy 94 115 #| msgid "SettingsHeading" ··· 125 146 msgid "Create Ticket" 126 147 msgstr "" 127 148 128 - #: paw/templates/dashboard_base.html:40 129 - msgid "Tickets" 130 - msgstr "" 131 - 132 149 #: paw/templates/dashboard_base.html:46 133 150 #: paw/templates/ticketing/tickets_history.html:5 134 151 msgid "History" 135 - msgstr "" 136 - 137 - #: paw/templates/dashboard_base.html:53 paw/templates/ticketing/tickets.html:20 138 - msgid "Status" 139 152 msgstr "" 140 153 141 154 #: paw/templates/dashboard_base.html:79 ··· 151 164 msgid "Unassigned" 152 165 msgstr "" 153 166 167 + #: paw/templates/partials/ticket_priority_badge.html:3 ticketing/models.py:45 168 + msgid "Low" 169 + msgstr "" 170 + 171 + #: paw/templates/partials/ticket_priority_badge.html:5 ticketing/models.py:46 172 + msgid "Medium" 173 + msgstr "" 174 + 175 + #: paw/templates/partials/ticket_priority_badge.html:7 ticketing/models.py:47 176 + msgid "High" 177 + msgstr "" 178 + 154 179 #: paw/templates/partials/ticket_status_badge.html:4 ticketing/models.py:40 155 180 msgid "Open" 156 181 msgstr "" ··· 313 338 msgid "All services are operational" 314 339 msgstr "" 315 340 341 + #: status/templates/status/incident_list.html:21 342 + msgid "Incidents" 343 + msgstr "" 344 + 345 + #: status/templates/status/incident_list.html:29 346 + msgid "Resolved" 347 + msgstr "" 348 + 349 + #: status/templates/status/incident_list.html:31 350 + msgid "Unresolved" 351 + msgstr "" 352 + 353 + #: status/templates/status/incident_list.html:37 354 + msgid "No incidents yet." 355 + msgstr "" 356 + 316 357 #: ticketing/forms.py:39 317 358 msgid "File size must be under 5MB." 318 359 msgstr "" ··· 341 382 msgid "" 342 383 "If a team is selected, new tickets will automatically assigned to this team." 343 384 msgstr "" 344 - 345 - #: ticketing/models.py:45 346 - msgid "Low" 347 - msgstr "" 348 - 349 - #: ticketing/models.py:46 350 - msgid "Medium" 351 - msgstr "" 352 - 353 - #: ticketing/models.py:47 354 - msgid "High" 355 - msgstr ""
+55 -24
paw/locale/fr/LC_MESSAGES/django.po
··· 8 8 msgstr "" 9 9 "Project-Id-Version: PACKAGE VERSION\n" 10 10 "Report-Msgid-Bugs-To: \n" 11 - "POT-Creation-Date: 2024-03-24 23:44+0000\n" 11 + "POT-Creation-Date: 2024-03-25 11:47+0000\n" 12 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 14 14 "Language-Team: LANGUAGE <LL@li.org>\n" ··· 28 28 msgstr "" 29 29 30 30 #: core/forms.py:35 paw/templates/core/account_finish.html:29 31 - #: paw/templates/core/login.html:24 31 + #: paw/templates/core/login.html:24 paw/templates/core/register.html:20 32 32 msgid "Username" 33 33 msgstr "" 34 34 ··· 48 48 msgid "German" 49 49 msgstr "" 50 50 51 - #: paw/templates/core/account_finish.html:10 51 + #: paw/templates/base.html:20 paw/templates/dashboard_base.html:40 52 + msgid "Tickets" 53 + msgstr "" 54 + 55 + #: paw/templates/base.html:21 paw/templates/dashboard_base.html:53 56 + #: paw/templates/ticketing/tickets.html:20 57 + msgid "Status" 58 + msgstr "Statut" 59 + 60 + #: paw/templates/core/account_finish.html:10 paw/templates/core/register.html:6 52 61 msgid "Register a new account" 53 62 msgstr "" 54 63 ··· 77 86 msgid "Register Account" 78 87 msgstr "" 79 88 80 - #: paw/templates/core/login.html:30 89 + #: paw/templates/core/login.html:30 paw/templates/core/register.html:32 81 90 msgid "Password" 82 91 msgstr "" 83 92 ··· 89 98 msgid "Log in with Google" 90 99 msgstr "" 91 100 101 + #: paw/templates/core/register.html:26 102 + #, fuzzy 103 + #| msgid "Mail Address" 104 + msgid "Email Address" 105 + msgstr "Adresse e-mail" 106 + 107 + #: paw/templates/core/register.html:38 108 + msgid "Confirm Password" 109 + msgstr "" 110 + 111 + #: paw/templates/core/register.html:43 112 + msgid "Register" 113 + msgstr "" 114 + 92 115 #: paw/templates/core/settings.html:7 paw/templates/dashboard_base.html:85 93 116 msgid "Settings" 94 117 msgstr "Paramètres" ··· 123 146 msgid "Create Ticket" 124 147 msgstr "Nouveau ticket" 125 148 126 - #: paw/templates/dashboard_base.html:40 127 - msgid "Tickets" 128 - msgstr "" 129 - 130 149 #: paw/templates/dashboard_base.html:46 131 150 #: paw/templates/ticketing/tickets_history.html:5 132 151 msgid "History" 133 152 msgstr "Historique" 134 - 135 - #: paw/templates/dashboard_base.html:53 paw/templates/ticketing/tickets.html:20 136 - msgid "Status" 137 - msgstr "Statut" 138 153 139 154 #: paw/templates/dashboard_base.html:79 140 155 msgid "Admin" ··· 149 164 msgid "Unassigned" 150 165 msgstr "Non attribué" 151 166 167 + #: paw/templates/partials/ticket_priority_badge.html:3 ticketing/models.py:45 168 + msgid "Low" 169 + msgstr "" 170 + 171 + #: paw/templates/partials/ticket_priority_badge.html:5 ticketing/models.py:46 172 + msgid "Medium" 173 + msgstr "" 174 + 175 + #: paw/templates/partials/ticket_priority_badge.html:7 ticketing/models.py:47 176 + msgid "High" 177 + msgstr "" 178 + 152 179 #: paw/templates/partials/ticket_status_badge.html:4 ticketing/models.py:40 153 180 msgid "Open" 154 181 msgstr "Ouvert" ··· 327 354 msgid "All services are operational" 328 355 msgstr "" 329 356 357 + #: status/templates/status/incident_list.html:21 358 + msgid "Incidents" 359 + msgstr "" 360 + 361 + #: status/templates/status/incident_list.html:29 362 + msgid "Resolved" 363 + msgstr "" 364 + 365 + #: status/templates/status/incident_list.html:31 366 + msgid "Unresolved" 367 + msgstr "" 368 + 369 + #: status/templates/status/incident_list.html:37 370 + msgid "No incidents yet." 371 + msgstr "" 372 + 330 373 #: ticketing/forms.py:39 331 374 msgid "File size must be under 5MB." 332 375 msgstr "" ··· 354 397 #: ticketing/models.py:31 355 398 msgid "" 356 399 "If a team is selected, new tickets will automatically assigned to this team." 357 - msgstr "" 358 - 359 - #: ticketing/models.py:45 360 - msgid "Low" 361 - msgstr "" 362 - 363 - #: ticketing/models.py:46 364 - msgid "Medium" 365 - msgstr "" 366 - 367 - #: ticketing/models.py:47 368 - msgid "High" 369 400 msgstr "" 370 401 371 402 #~ msgid "Comment and close"
-5
paw/templates/core/home.html
··· 1 - {% extends 'base.html' %} 2 - 3 - {% block content %} 4 - <h1>Helllloooooo!</h1> 5 - {% endblock content %}
+6 -6
paw/templates/core/register.html
··· 3 3 {% block content %} 4 4 {% load i18n %} 5 5 <div class="self-center w-full max-w-xl mx-auto p-4"> 6 - <h1 class="text-3xl font-bold p-2">Register a new account</h1> 6 + <h1 class="text-3xl font-bold p-2">{% trans 'Register a new account' %}</h1> 7 7 <div class="bg-base-200 rounded p-8"> 8 8 <form method="post"> 9 9 {% csrf_token %} ··· 17 17 18 18 <div> 19 19 <label class="label"> 20 - <span class="text-base label-text" for="{{ form.username.id_for_label }}">Username</span> 20 + <span class="text-base label-text" for="{{ form.username.id_for_label }}">{% trans 'Username' %}</span> 21 21 </label> 22 22 {{ form.username }} 23 23 </div> 24 24 <div> 25 25 <label class="label"> 26 - <span class="text-base label-text" for="{{ form.email.id_for_label }}">Email Address</span> 26 + <span class="text-base label-text" for="{{ form.email.id_for_label }}">{% trans 'Email Address' %}</span> 27 27 </label> 28 28 {{ form.email}} 29 29 </div> 30 30 <div> 31 31 <label class="label"> 32 - <span class="text-base label-text" for="{{ form.password.id_for_label }}">Password</span> 32 + <span class="text-base label-text" for="{{ form.password.id_for_label }}">{% trans 'Password' %}</span> 33 33 </label> 34 34 {{ form.password }} 35 35 </div> 36 36 <div> 37 37 <label class="label"> 38 - <span class="text-base label-text" for="{{ form.password_confirm.id_for_label }}">Confirm Password</span> 38 + <span class="text-base label-text" for="{{ form.password_confirm.id_for_label }}">{% trans 'Confirm Password' %}</span> 39 39 </label> 40 40 {{ form.password_confirm }} 41 41 </div> 42 42 <div class="flex justify-end mt-4"> 43 - <button type="submit" class="btn btn-accent">Register</button> 43 + <button type="submit" class="btn btn-accent">{% trans 'Register' %}</button> 44 44 </div> 45 45 </form> 46 46 </div>
+3 -3
paw/templates/partials/ticket_priority_badge.html
··· 1 1 {% block ticket_priority_badge %} 2 2 {% if ticket.priority == 3 %} 3 - <span class="badge badge-success join-item">Low</span> 3 + <span class="badge badge-success join-item">{% trans 'Low' %}</span> 4 4 {% elif ticket.priority == 2 %} 5 - <span class="badge badge-warning join-item">Medium</span> 5 + <span class="badge badge-warning join-item">{% trans 'Medium' %}</span> 6 6 {% else %} 7 - <span class="badge badge-error join-item">High</span> 7 + <span class="badge badge-error join-item">{% trans 'High' %}</span> 8 8 {% endif %} 9 9 {% endblock %}
-34
paw/templates/registration/login.html
··· 1 - <!-- templates/registration/login.html --> 2 - {% extends 'base.html' %} 3 - {% block content %} 4 - {% load i18n %} 5 - <div class="flex flex-col w-full max-w-xl mx-auto h-full min-h-screen justify-center"> 6 - <div class="p-4"> 7 - <div class="mb-4"> 8 - {% include 'partials/logo.html' with responsive=False %} 9 - </div> 10 - <h1 class="text-3xl font-bold p-2">Log In</h1> 11 - <div class="bg-base-300 rounded p-8"> 12 - <form method="post"> 13 - {% csrf_token %} 14 - <div> 15 - <label class="label"> 16 - <span class="text-base label-text" for="{{ form.username.id_for_label }}">Username</span> 17 - </label> 18 - <input type="text" name="username" placeholder="Username" class="w-full input input-bordered" /> 19 - </div> 20 - <div> 21 - <label class="label"> 22 - <span class="text-base label-text" for="{{ form.password.id_for_label }}">Password</span> 23 - </label> 24 - <input type="password" name="password" placeholder="Enter Password" 25 - class="w-full input input-bordered" /> 26 - </div> 27 - <div class="flex justify-end mt-4"> 28 - <button type="submit" class="btn btn-accent">Log In</button> 29 - </div> 30 - </form> 31 - </div> 32 - </div> 33 - </div> 34 - {% endblock %}
-55
paw/templates/ticketing/dashboard.html
··· 1 - {% extends 'dashboard_base.html' %} 2 - {% block dashboard_content %} 3 - <div class="w-full p-8"> 4 - <div class="stats bg-base-200 mb-10"> 5 - <div class="stat"> 6 - <div class="stat-figure text-success"> 7 - <svg xmlns="http://www.w3.org/2000/svg" class="inline-block w-10 h-10 stroke-current" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z" /><path d="M12 11l0 6" /><path d="M9 14l6 0" /></svg> 8 - </div> 9 - <div class="stat-title">Open Tickets</div> 10 - <div class="stat-value">{{ open_tickets.count }}</div> 11 - </div> 12 - 13 - <div class="stat"> 14 - <div class="stat-figure text-warning"> 15 - <svg xmlns="http://www.w3.org/2000/svg" class="inline-block w-10 h-10 stroke-current" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z" /><path d="M12 17v.01" /><path d="M12 14a1.5 1.5 0 1 0 -1.14 -2.474" /></svg> 16 - </div> 17 - <div class="stat-title">Progressing Tickets</div> 18 - <div class="stat-value">{{ in_progress_tickets.count }}</div> 19 - </div> 20 - 21 - <div class="stat"> 22 - <div class="stat-figure text-error"> 23 - <svg xmlns="http://www.w3.org/2000/svg" class="inline-block w-10 h-10 stroke-current" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M14 3v4a1 1 0 0 0 1 1h4" /><path d="M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2zm-7 -7h.01m3.99 0h.01" /><path d="M10 17a3.5 3.5 0 0 0 4 0" /></svg> 24 - </div> 25 - <div class="stat-title">Completed Tickets</div> 26 - <div class="stat-value">{{ closed_tickets.count }}</div> 27 - </div> 28 - </div> 29 - 30 - <table class="table w-full"> 31 - <thead> 32 - <tr> 33 - <th></th> 34 - <th>Title</th> 35 - <th>Category</th> 36 - <th>Status</th> 37 - <th></th> 38 - </tr> 39 - </thead> 40 - <tbody> 41 - {% for ticket in tickets %} 42 - <tr> 43 - <td>#{{ ticket.id }}</td> 44 - <td>{{ ticket.title }}</td> 45 - <td><div class="badge badge-neutral">{{ ticket.category }}</div></td> 46 - <td> 47 - {% include 'partials/ticket_status_badge.html' with ticket=ticket %} 48 - </td> 49 - <td><a href="{% url 'ticket_detail' ticket.id %}" class="btn btn-xs btn-accent">View</a></td> 50 - </tr> 51 - {% endfor %} 52 - </tbody> 53 - </table> 54 - </div> 55 - {% endblock %}
+4 -4
status/templates/status/incident_list.html
··· 17 17 {% endif %} 18 18 19 19 <h1 class="text-2xl font-semibold mt-10 mb-2"> 20 - Incidents 20 + {% trans 'Incidents' %} 21 21 </h1> 22 22 23 23 {% for incident in object_list %} ··· 25 25 <div class="text-xl mb-4 font-semibold flex items-center"> 26 26 <span class="flex-grow">{{ incident.title }}</span> 27 27 {% if incident.resolved %} 28 - <span class="badge badge-success">Resolved</span> 28 + <span class="badge badge-success">{% trans 'Resolved' %}</span> 29 29 {% else %} 30 - <span class="badge badge-error">Unresolved</span> 30 + <span class="badge badge-error">{% trans 'Unresolved' %}</span> 31 31 {% endif %} 32 32 </div> 33 33 <p class="whitespace-pre-line">{{ incident.description }}</p> 34 34 </div> 35 35 {% empty %} 36 - <div>No incidents yet.</div> 36 + <div>{% trans 'No incidents yet.' %}</div> 37 37 {% endfor %} 38 38 </div> 39 39 </div>