From 1baebf9d6255f073a1ca2840e9ae0a792f3af0e1 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 4 Sep 2019 11:24:02 +0200 Subject: [PATCH] Added language chooser display option. --- admin_interface/admin.py | 1 + .../locale/es/LC_MESSAGES/django.mo | Bin 2289 -> 2289 bytes .../locale/es/LC_MESSAGES/django.po | 71 ++++++++++-------- .../locale/fr/LC_MESSAGES/django.mo | Bin 2688 -> 2688 bytes .../locale/fr/LC_MESSAGES/django.po | 71 ++++++++++-------- .../locale/it/LC_MESSAGES/django.mo | Bin 2787 -> 2855 bytes .../locale/it/LC_MESSAGES/django.po | 71 ++++++++++-------- .../0016_add_language_chooser_display.py | 20 +++++ admin_interface/models.py | 9 +++ .../templates/admin/base_site.html | 5 +- .../admin_interface/language_chooser.html | 6 +- .../templatetags/admin_interface_tags.py | 58 ++++++++------ admin_interface/version.py | 2 +- 13 files changed, 195 insertions(+), 119 deletions(-) create mode 100644 admin_interface/migrations/0016_add_language_chooser_display.py diff --git a/admin_interface/admin.py b/admin_interface/admin.py index f6f21f8..348a854 100644 --- a/admin_interface/admin.py +++ b/admin_interface/admin.py @@ -31,6 +31,7 @@ class ThemeAdmin(admin.ModelAdmin): 'classes': ('wide', ), 'fields': ( 'language_chooser_active', + 'language_chooser_display', ) }), (_('Logo'), { diff --git a/admin_interface/locale/es/LC_MESSAGES/django.mo b/admin_interface/locale/es/LC_MESSAGES/django.mo index 16add5040e20b65eec7c3d9ebafc712f4d1723a0..b1210fc6f80cf07b217183e9178ead963335f6aa 100644 GIT binary patch delta 20 bcmew;_)&0!7c0Aof`O%#p~dDv)&\n" "Language-Team: Spanish \n" @@ -27,47 +27,47 @@ msgstr "Ambiente" msgid "Language chooser" msgstr "" -#: admin_interface/admin.py:36 +#: admin_interface/admin.py:37 msgid "Logo" msgstr "Logo" -#: admin_interface/admin.py:44 +#: admin_interface/admin.py:45 msgid "Favicon" msgstr "Favicon" -#: admin_interface/admin.py:48 +#: admin_interface/admin.py:49 msgid "Title" msgstr "Título" -#: admin_interface/admin.py:56 +#: admin_interface/admin.py:57 msgid "Header" msgstr "Encabezado" -#: admin_interface/admin.py:65 +#: admin_interface/admin.py:66 msgid "Breadcrumbs / Module headers" msgstr "Breadcrumbs / Encabezados de módulos" -#: admin_interface/admin.py:75 +#: admin_interface/admin.py:76 msgid "Generic Links" msgstr "Enlaces genéricos" -#: admin_interface/admin.py:82 +#: admin_interface/admin.py:83 msgid "Save Buttons" msgstr "Botones de guardar" -#: admin_interface/admin.py:90 +#: admin_interface/admin.py:91 msgid "Delete Buttons" msgstr "Botones de borrar" -#: admin_interface/admin.py:98 +#: admin_interface/admin.py:99 msgid "Related Modal" msgstr "Modal para objetos relacionados" -#: admin_interface/admin.py:108 +#: admin_interface/admin.py:109 msgid "List Filter" msgstr "Lista de filtros" -#: admin_interface/admin.py:112 +#: admin_interface/admin.py:113 msgid "Recent Actions" msgstr "Acciones recientes" @@ -76,11 +76,12 @@ msgid "Admin Interface" msgstr "Interfaz de administración" #: admin_interface/models.py:72 admin_interface/models.py:116 +#: admin_interface/models.py:135 msgid "name" msgstr "Nombre" #: admin_interface/models.py:75 admin_interface/models.py:132 -#: admin_interface/models.py:244 +#: admin_interface/models.py:253 msgid "active" msgstr "Activo" @@ -102,7 +103,7 @@ msgid "color" msgstr "color de logo" #: admin_interface/models.py:90 admin_interface/models.py:105 -#: admin_interface/models.py:280 +#: admin_interface/models.py:289 msgid "visible" msgstr "Visible" @@ -136,53 +137,61 @@ msgstr "" msgid "visible in favicon (marker)" msgstr "" -#: admin_interface/models.py:139 admin_interface/models.py:164 -#: admin_interface/models.py:205 admin_interface/models.py:224 -#: admin_interface/models.py:250 +#: admin_interface/models.py:134 +msgid "code" +msgstr "" + +#: admin_interface/models.py:141 +msgid "display" +msgstr "" + +#: admin_interface/models.py:148 admin_interface/models.py:173 +#: admin_interface/models.py:214 admin_interface/models.py:233 +#: admin_interface/models.py:259 msgid "background color" msgstr "color de fondo" -#: admin_interface/models.py:145 admin_interface/models.py:170 -#: admin_interface/models.py:217 admin_interface/models.py:236 -#: admin_interface/models.py:240 +#: admin_interface/models.py:154 admin_interface/models.py:179 +#: admin_interface/models.py:226 admin_interface/models.py:245 +#: admin_interface/models.py:249 msgid "text color" msgstr "color de texto" -#: admin_interface/models.py:151 admin_interface/models.py:176 -#: admin_interface/models.py:192 +#: admin_interface/models.py:160 admin_interface/models.py:185 +#: admin_interface/models.py:201 msgid "link color" msgstr "color de enlace" -#: admin_interface/models.py:157 admin_interface/models.py:182 -#: admin_interface/models.py:198 +#: admin_interface/models.py:166 admin_interface/models.py:191 +#: admin_interface/models.py:207 msgid "link hover color" msgstr "color de enlace (hover)" -#: admin_interface/models.py:185 admin_interface/models.py:270 +#: admin_interface/models.py:194 admin_interface/models.py:279 msgid "rounded corners" msgstr "esquinas redondas" -#: admin_interface/models.py:211 admin_interface/models.py:230 +#: admin_interface/models.py:220 admin_interface/models.py:239 msgid "background hover color" msgstr "color de fondo (hover)" -#: admin_interface/models.py:267 +#: admin_interface/models.py:276 msgid "background opacity" msgstr "opacidad de fondo" -#: admin_interface/models.py:273 +#: admin_interface/models.py:282 msgid "close button visible" msgstr "" -#: admin_interface/models.py:277 +#: admin_interface/models.py:286 msgid "use dropdown" msgstr "Usar lista desplegable" -#: admin_interface/models.py:289 +#: admin_interface/models.py:298 msgid "Theme" msgstr "Tema" -#: admin_interface/models.py:290 +#: admin_interface/models.py:299 msgid "Themes" msgstr "Temas" diff --git a/admin_interface/locale/fr/LC_MESSAGES/django.mo b/admin_interface/locale/fr/LC_MESSAGES/django.mo index 945249d1c745b1ba36df3b9ae82c5d6320e60c85..19d95051dabf0f3d6f1460889440c6198a481a7b 100644 GIT binary patch delta 20 bcmZn=Z4liM#>Q@D%I5-5` delta 20 bcmZn=Z4liM#>Q@}U}$D#V!Sz)O_>D%I1&Wb diff --git a/admin_interface/locale/fr/LC_MESSAGES/django.po b/admin_interface/locale/fr/LC_MESSAGES/django.po index 621d34f..3023db5 100644 --- a/admin_interface/locale/fr/LC_MESSAGES/django.po +++ b/admin_interface/locale/fr/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-03 16:43+0000\n" +"POT-Creation-Date: 2019-09-04 09:18+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -26,47 +26,47 @@ msgstr "Environnment" msgid "Language chooser" msgstr "" -#: admin_interface/admin.py:36 +#: admin_interface/admin.py:37 msgid "Logo" msgstr "Logo" -#: admin_interface/admin.py:44 +#: admin_interface/admin.py:45 msgid "Favicon" msgstr "Favicon" -#: admin_interface/admin.py:48 +#: admin_interface/admin.py:49 msgid "Title" msgstr "Titre" -#: admin_interface/admin.py:56 +#: admin_interface/admin.py:57 msgid "Header" msgstr "Bannière" -#: admin_interface/admin.py:65 +#: admin_interface/admin.py:66 msgid "Breadcrumbs / Module headers" msgstr "Fil d'ariane / en-têtes de module" -#: admin_interface/admin.py:75 +#: admin_interface/admin.py:76 msgid "Generic Links" msgstr "Liens génériques" -#: admin_interface/admin.py:82 +#: admin_interface/admin.py:83 msgid "Save Buttons" msgstr "Boutons sauvegarder" -#: admin_interface/admin.py:90 +#: admin_interface/admin.py:91 msgid "Delete Buttons" msgstr "Boutons supprimer" -#: admin_interface/admin.py:98 +#: admin_interface/admin.py:99 msgid "Related Modal" msgstr "Modale pour objet reliés" -#: admin_interface/admin.py:108 +#: admin_interface/admin.py:109 msgid "List Filter" msgstr "Filtre de liste" -#: admin_interface/admin.py:112 +#: admin_interface/admin.py:113 msgid "Recent Actions" msgstr "Actions récentes" @@ -75,11 +75,12 @@ msgid "Admin Interface" msgstr "Interface Admin" #: admin_interface/models.py:72 admin_interface/models.py:116 +#: admin_interface/models.py:135 msgid "name" msgstr "nom" #: admin_interface/models.py:75 admin_interface/models.py:132 -#: admin_interface/models.py:244 +#: admin_interface/models.py:253 msgid "active" msgstr "actif" @@ -99,7 +100,7 @@ msgid "color" msgstr "couleur" #: admin_interface/models.py:90 admin_interface/models.py:105 -#: admin_interface/models.py:280 +#: admin_interface/models.py:289 msgid "visible" msgstr "visible" @@ -135,53 +136,61 @@ msgstr "visible dans l’en-tête (marqueur et nom)" msgid "visible in favicon (marker)" msgstr "visible dans la favicon (marqueur)" -#: admin_interface/models.py:139 admin_interface/models.py:164 -#: admin_interface/models.py:205 admin_interface/models.py:224 -#: admin_interface/models.py:250 +#: admin_interface/models.py:134 +msgid "code" +msgstr "" + +#: admin_interface/models.py:141 +msgid "display" +msgstr "" + +#: admin_interface/models.py:148 admin_interface/models.py:173 +#: admin_interface/models.py:214 admin_interface/models.py:233 +#: admin_interface/models.py:259 msgid "background color" msgstr "couleur d'arrière-plan" -#: admin_interface/models.py:145 admin_interface/models.py:170 -#: admin_interface/models.py:217 admin_interface/models.py:236 -#: admin_interface/models.py:240 +#: admin_interface/models.py:154 admin_interface/models.py:179 +#: admin_interface/models.py:226 admin_interface/models.py:245 +#: admin_interface/models.py:249 msgid "text color" msgstr "couleur du texte" -#: admin_interface/models.py:151 admin_interface/models.py:176 -#: admin_interface/models.py:192 +#: admin_interface/models.py:160 admin_interface/models.py:185 +#: admin_interface/models.py:201 msgid "link color" msgstr "couleur de lien" -#: admin_interface/models.py:157 admin_interface/models.py:182 -#: admin_interface/models.py:198 +#: admin_interface/models.py:166 admin_interface/models.py:191 +#: admin_interface/models.py:207 msgid "link hover color" msgstr "couleur de lien au survol" -#: admin_interface/models.py:185 admin_interface/models.py:270 +#: admin_interface/models.py:194 admin_interface/models.py:279 msgid "rounded corners" msgstr "coins arrondis" -#: admin_interface/models.py:211 admin_interface/models.py:230 +#: admin_interface/models.py:220 admin_interface/models.py:239 msgid "background hover color" msgstr "couleur de fond au survol" -#: admin_interface/models.py:267 +#: admin_interface/models.py:276 msgid "background opacity" msgstr "opacité de l'arrière-plan" -#: admin_interface/models.py:273 +#: admin_interface/models.py:282 msgid "close button visible" msgstr "bouton fermer visible" -#: admin_interface/models.py:277 +#: admin_interface/models.py:286 msgid "use dropdown" msgstr "utiliser un menu déroulant" -#: admin_interface/models.py:289 +#: admin_interface/models.py:298 msgid "Theme" msgstr "Thème" -#: admin_interface/models.py:290 +#: admin_interface/models.py:299 msgid "Themes" msgstr "Thèmes" diff --git a/admin_interface/locale/it/LC_MESSAGES/django.mo b/admin_interface/locale/it/LC_MESSAGES/django.mo index fe9c514e78f8c688d7ddddb01008b74eb97783d9..f10faf4fe388f93b15f20661ddfcfca8163786ff 100644 GIT binary patch delta 944 zcmXZbKWGzS7{~D^x$D1ZHP$w0YHMPwTDvqwlvo@JF1pm>&`k(Ul!MR{tAY`UE;@=H z1s#g$(ydDrEV#7bAXHt1B8bpRK?NypZt?rOzAx|H=ibYE&-=X3U4HZ}W*Xmn{CT5| za2(>enJ^p2wInCnThFWymobl@aT5RHUYziEo}0owjAv2v@8K?tumfLUH!fm3zQMFv z!`^Xmk{cgU5Bx*A`EBt8>p}(2q5=%#Zajl@JI_f0FS_xR8&4w(*cHrRh&}iad+|B? ztZz$P(5=ZynJzn5Fva)-D$o~HVq4DNs0wVO=CzP+DY8+5X;i!c?8hN2-~>LR%2mv; zzWrg=Y4khIF5@^3;$u9FOQ;=u!h^VlbZc?a0-aqul}RHpZ4me45RPF9Rlyo+19x#B z-p7W1c*;c%U!qF0iki6Y{Dum=;rxlJ$Tlh=ZC~#^iwAHNHUEP15~@Vx?HZ~AUr`m>#G{zx1ER8VQ^oW;lvqAmN%nWE_-cx9 zJo=R^6bIt5*%3U!p_pp=GY~TVE|r&ZQ9Bl$^9n_+G|Ztb#dStCy)$K_E$T~E<6mOA z<`b`#NLQ*h6V}2TRte^=*UERAQJa_OIF%bMoh_D{3+)fQY$cd+ld5(*n7dW31@(Hl L9)z<|KDGKEXGC0x delta 876 zcmXZbKS*0q6vy$CJfkKW|D@4c5;ZnatDT}Hl?Lk8(G0qD&_RroU};^PLZ&#mq=6Pf zp;Mq#MB*TnmXOh{>Ci%HLDI!RXg6`O-`~r-yn8?Qz1(}=xhF|&v^`Sz9qFnVZH^wN zZ~4r!_|eZmd*hgm;9H!+W6a@K9K@-v&b~AbaKD0Dzm9$Q3VX1CVJu-cR&a>NR%J5J zgCo?2AIN2Y7+7GJsK7U<0KtG+Ki)+yOEDzZk=7Ok$MmN>p_Tl}Lj{8T^i`yx#_T z%_eXYC$WfH_#W@!8FE>RK`;1;sze)g@_%>-uWkqYkiw!?@}_&tro7JuIjc z6((Bv!Sfgu_|)?gsv=EPLf=r|@fD7tLpiiQj!H0zs?F<%nkg4 z2MSO`mGS^Nj8#w-d50hFNst^@+6PYYu_+w%HJk=Cox*T+p=?Ct8=d_wCrrI2x zP;OIVN=7YJUT4>RX0vo1L3P!as5VZYq3ejMzZ(Ano2Z{Sw?1cQ_hr2iaC|+BiFD@4 Qqs97pchS+)az51j4_?4c0ssI2 diff --git a/admin_interface/locale/it/LC_MESSAGES/django.po b/admin_interface/locale/it/LC_MESSAGES/django.po index 31ff5f8..0bdda44 100644 --- a/admin_interface/locale/it/LC_MESSAGES/django.po +++ b/admin_interface/locale/it/LC_MESSAGES/django.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: django-admin-interface\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-03 16:43+0000\n" +"POT-Creation-Date: 2019-09-04 09:19+0000\n" "PO-Revision-Date: 2018-12-30 19:13-0500\n" "Last-Translator: Fabio Caccamo \n" "Language-Team: Italian \n" @@ -27,47 +27,47 @@ msgstr "Ambiente" msgid "Language chooser" msgstr "Selettore di lingua" -#: admin_interface/admin.py:36 +#: admin_interface/admin.py:37 msgid "Logo" msgstr "Logo" -#: admin_interface/admin.py:44 +#: admin_interface/admin.py:45 msgid "Favicon" msgstr "Favicon" -#: admin_interface/admin.py:48 +#: admin_interface/admin.py:49 msgid "Title" msgstr "Titolo" -#: admin_interface/admin.py:56 +#: admin_interface/admin.py:57 msgid "Header" msgstr "Header" -#: admin_interface/admin.py:65 +#: admin_interface/admin.py:66 msgid "Breadcrumbs / Module headers" msgstr "Breadcrumbs / Header dei moduli" -#: admin_interface/admin.py:75 +#: admin_interface/admin.py:76 msgid "Generic Links" msgstr "Link generici" -#: admin_interface/admin.py:82 +#: admin_interface/admin.py:83 msgid "Save Buttons" msgstr "Pulsanti per salvare" -#: admin_interface/admin.py:90 +#: admin_interface/admin.py:91 msgid "Delete Buttons" msgstr "Pulsanti per eliminare" -#: admin_interface/admin.py:98 +#: admin_interface/admin.py:99 msgid "Related Modal" msgstr "Modale per gli oggetti correlati" -#: admin_interface/admin.py:108 +#: admin_interface/admin.py:109 msgid "List Filter" msgstr "Filtro listato" -#: admin_interface/admin.py:112 +#: admin_interface/admin.py:113 msgid "Recent Actions" msgstr "Azioni recenti" @@ -76,11 +76,12 @@ msgid "Admin Interface" msgstr "Interfaccia di amministrazione" #: admin_interface/models.py:72 admin_interface/models.py:116 +#: admin_interface/models.py:135 msgid "name" msgstr "nome" #: admin_interface/models.py:75 admin_interface/models.py:132 -#: admin_interface/models.py:244 +#: admin_interface/models.py:253 msgid "active" msgstr "attivo" @@ -100,7 +101,7 @@ msgid "color" msgstr "colore" #: admin_interface/models.py:90 admin_interface/models.py:105 -#: admin_interface/models.py:280 +#: admin_interface/models.py:289 msgid "visible" msgstr "visibile" @@ -136,53 +137,61 @@ msgstr "visibile nell'header (marker e nome)" msgid "visible in favicon (marker)" msgstr "visibile nella favicon (marker)" -#: admin_interface/models.py:139 admin_interface/models.py:164 -#: admin_interface/models.py:205 admin_interface/models.py:224 -#: admin_interface/models.py:250 +#: admin_interface/models.py:134 +msgid "code" +msgstr "codice" + +#: admin_interface/models.py:141 +msgid "display" +msgstr "visualizzazione" + +#: admin_interface/models.py:148 admin_interface/models.py:173 +#: admin_interface/models.py:214 admin_interface/models.py:233 +#: admin_interface/models.py:259 msgid "background color" msgstr "colore di sfondo" -#: admin_interface/models.py:145 admin_interface/models.py:170 -#: admin_interface/models.py:217 admin_interface/models.py:236 -#: admin_interface/models.py:240 +#: admin_interface/models.py:154 admin_interface/models.py:179 +#: admin_interface/models.py:226 admin_interface/models.py:245 +#: admin_interface/models.py:249 msgid "text color" msgstr "colore del testo" -#: admin_interface/models.py:151 admin_interface/models.py:176 -#: admin_interface/models.py:192 +#: admin_interface/models.py:160 admin_interface/models.py:185 +#: admin_interface/models.py:201 msgid "link color" msgstr "colore dei link" -#: admin_interface/models.py:157 admin_interface/models.py:182 -#: admin_interface/models.py:198 +#: admin_interface/models.py:166 admin_interface/models.py:191 +#: admin_interface/models.py:207 msgid "link hover color" msgstr "colore dei link in hover" -#: admin_interface/models.py:185 admin_interface/models.py:270 +#: admin_interface/models.py:194 admin_interface/models.py:279 msgid "rounded corners" msgstr "bordi arrotondati" -#: admin_interface/models.py:211 admin_interface/models.py:230 +#: admin_interface/models.py:220 admin_interface/models.py:239 msgid "background hover color" msgstr "colore di sfondo in hover" -#: admin_interface/models.py:267 +#: admin_interface/models.py:276 msgid "background opacity" msgstr "opacità dello sfondo" -#: admin_interface/models.py:273 +#: admin_interface/models.py:282 msgid "close button visible" msgstr "pulsante chiudi visibile" -#: admin_interface/models.py:277 +#: admin_interface/models.py:286 msgid "use dropdown" msgstr "usa dropdown" -#: admin_interface/models.py:289 +#: admin_interface/models.py:298 msgid "Theme" msgstr "Tema" -#: admin_interface/models.py:290 +#: admin_interface/models.py:299 msgid "Themes" msgstr "Temi" diff --git a/admin_interface/migrations/0016_add_language_chooser_display.py b/admin_interface/migrations/0016_add_language_chooser_display.py new file mode 100644 index 0000000..0f1a2f4 --- /dev/null +++ b/admin_interface/migrations/0016_add_language_chooser_display.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- + +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('admin_interface', '0015_add_language_chooser_active'), + ] + + operations = [ + migrations.AddField( + model_name='theme', + name='language_chooser_display', + field=models.CharField(choices=[('code', 'code'), ('name', 'name')], default='code', max_length=10, verbose_name='display'), + ), + ] diff --git a/admin_interface/models.py b/admin_interface/models.py index 137b615..60bf4ac 100644 --- a/admin_interface/models.py +++ b/admin_interface/models.py @@ -130,6 +130,15 @@ class Theme(models.Model): language_chooser_active = models.BooleanField( default=True, verbose_name=_('active')) + language_chooser_display_choices = ( + ('code', _('code'), ), + ('name', _('name'), ), + ) + language_chooser_display = models.CharField( + max_length=10, + choices=language_chooser_display_choices, + default='code', + verbose_name=_('display')) css_header_background_color = ColorField( blank=True, diff --git a/admin_interface/templates/admin/base_site.html b/admin_interface/templates/admin/base_site.html index 9f7b76b..056f28c 100644 --- a/admin_interface/templates/admin/base_site.html +++ b/admin_interface/templates/admin/base_site.html @@ -64,6 +64,9 @@ https://github.com/fabiocaccamo/django-admin-interface {% block welcome-msg %} {% get_admin_interface_theme as theme %} -{% if theme.language_chooser_active %}{% get_admin_interface_language_chooser %}{% endif %} +{% if theme.language_chooser_active %} + {% get_admin_interface_languages as languages %} + {% include "admin_interface/language_chooser.html" %} +{% endif %} {% if theme.env_visible_in_header %} - {% endif %}{{ block.super }}
{% endblock %} diff --git a/admin_interface/templates/admin_interface/language_chooser.html b/admin_interface/templates/admin_interface/language_chooser.html index 6cc4354..d7d39d8 100644 --- a/admin_interface/templates/admin_interface/language_chooser.html +++ b/admin_interface/templates/admin_interface/language_chooser.html @@ -1,5 +1,6 @@ {% load admin_interface_tags %} +{% if languages %}
{% for language in languages %}
@@ -11,8 +12,9 @@ {% csrf_token %}
-
\ No newline at end of file + +{% endif %} \ No newline at end of file diff --git a/admin_interface/templatetags/admin_interface_tags.py b/admin_interface/templatetags/admin_interface_tags.py index 4073f10..17633ae 100644 --- a/admin_interface/templatetags/admin_interface_tags.py +++ b/admin_interface/templatetags/admin_interface_tags.py @@ -4,9 +4,9 @@ import django from django import template, VERSION from django.conf import settings if django.VERSION < (1, 10): - from django.core.urlresolvers import reverse + from django.core.urlresolvers import NoReverseMatch, reverse else: - from django.urls import reverse + from django.urls import NoReverseMatch, reverse from django.utils import translation from admin_interface.cache import get_cached_active_theme, set_cached_active_theme @@ -24,33 +24,47 @@ else: simple_tag = register.simple_tag -@register.inclusion_tag('admin_interface/language_chooser.html', takes_context=True) -def get_admin_interface_language_chooser(context): +@simple_tag(takes_context=True) +def get_admin_interface_languages(context): + if not settings.USE_I18N: + # i18n disabled + return None + if len(settings.LANGUAGES) < 2: + # less than 2 languages + return None + try: + set_language_url = reverse('set_language') + except NoReverseMatch: + # ImproperlyConfigured - must include i18n urls: + # urlpatterns += [url(r'^i18n/', include('django.conf.urls.i18n')),] + return None + request = context.get('request', None) + if not request: + return None + full_path = request.get_full_path() + admin_nolang_url = re.sub(r'^\/([\w]{2})([\-\_]{1}[\w]{2})?\/', '/', full_path) + if admin_nolang_url == full_path: + # ImproperlyConfigured - must include admin urls using i18n_patterns: + # from django.conf.urls.i18n import i18n_patterns + # urlpatterns += i18n_patterns(url(r'^admin/', admin.site.urls)) + return None langs_data = [] - if settings.USE_I18N and len(settings.LANGUAGES) > 1: - request = context.get('request') - full_path = request.get_full_path() - default_lang_code = settings.LANGUAGE_CODE - current_lang_code = translation.get_language() or default_lang_code - for language in settings.LANGUAGES: - lang_code = language[0].lower() - lang_name = language[1].title() + default_lang_code = settings.LANGUAGE_CODE + current_lang_code = translation.get_language() or default_lang_code + for language in settings.LANGUAGES: + lang_code = language[0].lower() + lang_name = language[1].title() + with translation.override(lang_code): lang_data = { 'code': lang_code, 'name': lang_name, 'default': bool(lang_code == default_lang_code), 'active': bool(lang_code == current_lang_code), + 'activation_url': '{}?next=/{}{}'.format( + set_language_url, lang_code, admin_nolang_url) } - with translation.override(lang_code): - lang_set_url = '{}?language={}'.format( - reverse('set_language'), lang_code) - lang_next_url = re.sub( - r'^\/[\w\-\_]+', '/{}'.format(lang_code), full_path) - lang_activation_url = '{}&next={}'.format( - lang_set_url, lang_next_url) - lang_data['activation_url'] = lang_activation_url - langs_data.append(lang_data) - return { 'languages':langs_data } + langs_data.append(lang_data) + return langs_data @simple_tag(takes_context=True) diff --git a/admin_interface/version.py b/admin_interface/version.py index 4cad2e2..dacf01e 100644 --- a/admin_interface/version.py +++ b/admin_interface/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -__version__ = '0.11.0' +__version__ = '0.11.1'