From a1ed3d6d0f28e3b5115a0e72d751a7cf4ab88eed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mart=C3=ADn=20Josemar=C3=ADa?= Date: Sun, 30 Dec 2018 18:41:21 -0500 Subject: [PATCH] Added internacionalization and added spanish translation --- admin_interface/admin.py | 27 +-- admin_interface/apps.py | 3 +- .../locale/es/LC_MESSAGES/django.po | 183 +++++++++++++++ admin_interface/models.py | 210 ++++++++++++------ admin_interface/settings.py | 1 - 5 files changed, 344 insertions(+), 80 deletions(-) create mode 100644 admin_interface/locale/es/LC_MESSAGES/django.po diff --git a/admin_interface/admin.py b/admin_interface/admin.py index ad83b26..aca7c9f 100644 --- a/admin_interface/admin.py +++ b/admin_interface/admin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- from django.contrib import admin - +from django.utils.translation import ugettext_lazy as _ from admin_interface.models import Theme @@ -15,14 +15,14 @@ class ThemeAdmin(admin.ModelAdmin): 'classes': ('wide', ), 'fields': ('name', 'active', ) }), - ('Enviroment', { + (_('Enviroment'), { 'classes': ('wide', ), 'fields': ( 'env', 'env_visible', ) }), - ('Logo', { + (_('Logo'), { 'classes': ('wide', ), 'fields': ( 'logo', @@ -30,11 +30,11 @@ class ThemeAdmin(admin.ModelAdmin): 'logo_visible', ) }), - ('Favicon', { + (_('Favicon'), { 'classes': ('wide', ), 'fields': ('favicon', ) }), - ('Title', { + (_('Title'), { 'classes': ('wide', ), 'fields': ( 'title', @@ -42,7 +42,7 @@ class ThemeAdmin(admin.ModelAdmin): 'title_visible', ) }), - ('Header', { + (_('Header'), { 'classes': ('wide', ), 'fields': ( 'css_header_background_color', @@ -51,7 +51,7 @@ class ThemeAdmin(admin.ModelAdmin): 'css_header_link_hover_color', ) }), - ('Breadcrumbs / Module headers', { + (_('Breadcrumbs / Module headers'), { 'classes': ('wide', ), 'fields': ( 'css_module_background_color', @@ -61,14 +61,14 @@ class ThemeAdmin(admin.ModelAdmin): 'css_module_rounded_corners', ) }), - ('Generic Links', { + (_('Generic Links'), { 'classes': ('wide', ), 'fields': ( 'css_generic_link_color', 'css_generic_link_hover_color', ) }), - ('Save Buttons', { + (_('Save Buttons'), { 'classes': ('wide', ), 'fields': ( 'css_save_button_background_color', @@ -76,7 +76,7 @@ class ThemeAdmin(admin.ModelAdmin): 'css_save_button_text_color', ) }), - ('Delete Buttons', { + (_('Delete Buttons'), { 'classes': ('wide', ), 'fields': ( 'css_delete_button_background_color', @@ -84,7 +84,7 @@ class ThemeAdmin(admin.ModelAdmin): 'css_delete_button_text_color', ) }), - ('Related Modal', { + (_('Related Modal'), { 'classes': ('wide', ), 'fields': ( 'related_modal_active', @@ -93,11 +93,11 @@ class ThemeAdmin(admin.ModelAdmin): 'related_modal_rounded_corners', ) }), - ('List Filter', { + (_('List Filter'), { 'classes': ('wide', ), 'fields': ('list_filter_dropdown', ) }), - ('Recent Actions', { + (_('Recent Actions'), { 'classes': ('wide', ), 'fields': ('recent_actions_visible', ) }), @@ -105,4 +105,5 @@ class ThemeAdmin(admin.ModelAdmin): save_on_top = True + admin.site.register(Theme, ThemeAdmin) diff --git a/admin_interface/apps.py b/admin_interface/apps.py index b8a4984..2dd6544 100644 --- a/admin_interface/apps.py +++ b/admin_interface/apps.py @@ -1,13 +1,14 @@ # -*- coding: utf-8 -*- from django.apps import AppConfig +from django.utils.translation import ugettext_lazy as _ from django.db.models.signals import post_migrate class AdminInterfaceConfig(AppConfig): name = 'admin_interface' - verbose_name = 'Admin Interface' + verbose_name = _('Admin Interface') def ready(self): diff --git a/admin_interface/locale/es/LC_MESSAGES/django.po b/admin_interface/locale/es/LC_MESSAGES/django.po new file mode 100644 index 0000000..8efa729 --- /dev/null +++ b/admin_interface/locale/es/LC_MESSAGES/django.po @@ -0,0 +1,183 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-12-30 18:30-0500\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: admin.py:18 +msgid "Enviroment" +msgstr "Entorno" + +#: admin.py:25 +msgid "Logo" +msgstr "Logo" + +#: admin.py:33 +msgid "Favicon" +msgstr "Favicon" + +#: admin.py:37 +msgid "Title" +msgstr "Título" + +#: admin.py:45 +msgid "Header" +msgstr "Encabezado" + +#: admin.py:54 +msgid "Breadcrumbs / Module headers" +msgstr "Breadcrumbs / Encabezados de módulos" + +#: admin.py:64 +msgid "Generic Links" +msgstr "Enlaces genéricos" + +#: admin.py:71 +msgid "Save Buttons" +msgstr "Botones de guardar" + +#: admin.py:79 +msgid "Delete Buttons" +msgstr "Botones de borrar" + +#: admin.py:87 +msgid "Related Modal" +msgstr "Modal para objetos relacionados" + +#: admin.py:96 +msgid "List Filter" +msgstr "Lista de filtros" + +#: admin.py:100 +msgid "Recent Actions" +msgstr "Acciones recientes" + +#: apps.py:11 +msgid "Admin Interface" +msgstr "Interfaz de administración" + +#: models.py:55 +msgid "name" +msgstr "Nombre" + +#: models.py:58 models.py:221 +msgid "active" +msgstr "Activo" + +#: models.py:64 +msgid "title" +msgstr "Título" + +#: models.py:70 +msgid "title color" +msgstr "Color de título" + +#: models.py:73 models.py:88 models.py:254 +msgid "visible" +msgstr "Visible" + +#: models.py:78 +msgid "Leave blank to use the default Django logo" +msgstr "Dejar en blanco para usaer el logo por defecto de Django" + +#: models.py:79 +msgid "logo" +msgstr "logo" + +#: models.py:85 +msgid "logo color" +msgstr "color de logo" + +#: models.py:94 +msgid "favicon" +msgstr "favicon" + +#: models.py:97 +msgid "Development" +msgstr "Desarrollo" + +#: models.py:98 +msgid "Testing" +msgstr "Pruebas" + +#: models.py:99 +msgid "Staging" +msgstr "Depliegue" + +#: models.py:100 +msgid "Production" +msgstr "Producción" + +#: models.py:106 +msgid "enviroment" +msgstr "entorno" + +#: models.py:116 models.py:141 models.py:182 models.py:201 models.py:227 +msgid "background color" +msgstr "color de fondo" + +#: models.py:122 models.py:147 models.py:194 models.py:213 models.py:217 +msgid "text color" +msgstr "color de texto" + +#: models.py:128 models.py:153 models.py:169 +msgid "link color" +msgstr "color de enlace" + +#: models.py:134 models.py:159 models.py:175 +msgid "link hover color" +msgstr "color de enlace (hover)" + +#: models.py:162 models.py:247 +msgid "rounded corners" +msgstr "esquinas redondas" + +#: models.py:188 models.py:207 +msgid "background hover color" +msgstr "color de fondo (hover)" + +#: models.py:244 +msgid "background opacity" +msgstr "opacidad de fondo" + +#: models.py:251 +msgid "use dropdown" +msgstr "Usar lista desplegable" + +#: models.py:263 +msgid "Theme" +msgstr "Tema" + +#: models.py:264 +msgid "Themes" +msgstr "Temas" + +#: templates/admin/base_site.html:6 templates/admin/base_site.html:66 +msgid "Django administration" +msgstr "" + +# msgid "Django administration" +# msgstr "" +#: templates/admin/filter.html:13 +#: templates/admin_interface/dropdown_filter.html:4 +#, python-format +msgid " By %(filter_title)s " +msgstr " Por %(filter_title)s " + +#: templates/admin/popup_response.html:3 +msgid "Popup closing..." +msgstr "Cerando popup..." diff --git a/admin_interface/models.py b/admin_interface/models.py index 122ebbf..0a9e12b 100644 --- a/admin_interface/models.py +++ b/admin_interface/models.py @@ -5,6 +5,7 @@ from __future__ import unicode_literals from django.db import models from django.db.models.signals import post_delete, post_save from django.utils.encoding import python_2_unicode_compatible, force_text +from django.utils.translation import ugettext_lazy as _ from colorfield.fields import ColorField @@ -28,7 +29,6 @@ class Theme(models.Model): @staticmethod def get_active_theme(): - objs_active_qs = Theme.objects.filter(active=True) objs_active_ls = list(objs_active_qs) objs_active_count = len(objs_active_ls) @@ -49,105 +49,182 @@ class Theme(models.Model): return obj - name = models.CharField(max_length=50, default='Django') - active = models.BooleanField(default=True) + name = models.CharField( + max_length=50, + default='Django', + verbose_name=_('name')) + active = models.BooleanField( + default=True, + verbose_name=_('active')) title = models.CharField( - max_length=50, default='Django administration', blank=True) + max_length=50, + default='Django administration', + blank=True, + verbose_name=_('title')) title_color = ColorField( - blank=True, default='#F5DD5D', help_text='#F5DD5D', - max_length=10, verbose_name='title color') + blank=True, + default='#F5DD5D', + help_text='#F5DD5D', + max_length=10, + verbose_name=_('title color')) title_visible = models.BooleanField( - default=True, verbose_name='visible') + default=True, + verbose_name=_('visible')) logo = models.FileField( - upload_to='admin-interface/logo/', blank=True, - help_text='(leave blank to use the default Django logo)') + upload_to='admin-interface/logo/', + blank=True, + help_text=_('Leave blank to use the default Django logo'), + verbose_name=_('logo')) logo_color = ColorField( - blank=True, default='#FFFFFF', help_text='#FFFFFF', - max_length=10, verbose_name='logo color') + blank=True, + default='#FFFFFF', + help_text='#FFFFFF', + max_length=10, + verbose_name=_('logo color')) logo_visible = models.BooleanField( - default=True, verbose_name='visible') + default=True, + verbose_name=_('visible')) favicon = models.FileField( - upload_to='admin-interface/favicon/', blank=True, - help_text='(.ico|.png|.gif - 16x16|32x32 px)', verbose_name='favicon') + upload_to='admin-interface/favicon/', + blank=True, + help_text='(.ico|.png|.gif - 16x16|32x32 px)', + verbose_name=_('favicon')) env_choices = ( - ('development', 'Development', ), - ('testing', 'Testing', ), - ('staging', 'Staging', ), - ('production', 'Production', ), + ('development', _('Development'), ), + ('testing', _('Testing'), ), + ('staging', _('Staging'), ), + ('production', _('Production'), ), ) env = models.CharField( max_length=50, choices=env_choices, - default='development', verbose_name='enviroment') + default='development', + verbose_name=_('enviroment')) env_visible = models.BooleanField( - default=True, verbose_name='visible') + default=True, + verbose_name='visible') css_header_background_color = ColorField( - blank=True, default='#0C4B33', help_text='#0C4B33', - max_length=10, verbose_name='background color') + blank=True, + default='#0C4B33', + help_text='#0C4B33', + max_length=10, + verbose_name=_('background color')) css_header_text_color = ColorField( - blank=True, default='#44B78B', help_text='#44B78B', - max_length=10, verbose_name='text color') + blank=True, + default='#44B78B', + help_text='#44B78B', + max_length=10, + verbose_name=_('text color')) css_header_link_color = ColorField( - blank=True, default='#FFFFFF', help_text='#FFFFFF', - max_length=10, verbose_name='link color') + blank=True, + default='#FFFFFF', + help_text='#FFFFFF', + max_length=10, + verbose_name=_('link color')) css_header_link_hover_color = ColorField( - blank=True, default='#C9F0DD', help_text='#C9F0DD', - max_length=10, verbose_name='link hover color') + blank=True, + default='#C9F0DD', + help_text='#C9F0DD', + max_length=10, + verbose_name=_('link hover color')) css_module_background_color = ColorField( - blank=True, default='#44B78B', help_text='#44B78B', - max_length=10, verbose_name='background color') + blank=True, + default='#44B78B', + help_text='#44B78B', + max_length=10, + verbose_name=_('background color')) css_module_text_color = ColorField( - blank=True, default='#FFFFFF', help_text='#FFFFFF', - max_length=10, verbose_name='text color') + blank=True, + default='#FFFFFF', + help_text='#FFFFFF', + max_length=10, + verbose_name=_('text color')) css_module_link_color = ColorField( - blank=True, default='#FFFFFF', help_text='#FFFFFF', - max_length=10, verbose_name='link color') + blank=True, + default='#FFFFFF', + help_text='#FFFFFF', + max_length=10, + verbose_name=_('link color')) css_module_link_hover_color = ColorField( - blank=True, default='#C9F0DD', help_text='#C9F0DD', - max_length=10, verbose_name='link hover color') + blank=True, + default='#C9F0DD', + help_text='#C9F0DD', + max_length=10, + verbose_name=_('link hover color')) css_module_rounded_corners = models.BooleanField( - default=True, verbose_name='rounded corners') + default=True, + verbose_name=_('rounded corners')) css_generic_link_color = ColorField( - blank=True, default='#0C3C26', help_text='#0C3C26', - max_length=10, verbose_name='link color') + blank=True, + default='#0C3C26', + help_text='#0C3C26', + max_length=10, + verbose_name=_('link color')) css_generic_link_hover_color = ColorField( - blank=True, default='#156641', help_text='#156641', - max_length=10, verbose_name='link hover color') + blank=True, + default='#156641', + help_text='#156641', + max_length=10, + verbose_name=_('link hover color')) css_save_button_background_color = ColorField( - blank=True, default='#0C4B33', help_text='#0C4B33', - max_length=10, verbose_name='background color') + blank=True, + default='#0C4B33', + help_text='#0C4B33', + max_length=10, + verbose_name=_('background color')) css_save_button_background_hover_color = ColorField( - blank=True, default='#0C3C26', help_text='#0C3C26', - max_length=10, verbose_name='background hover color') + blank=True, + default='#0C3C26', + help_text='#0C3C26', + max_length=10, + verbose_name=_('background hover color')) css_save_button_text_color = ColorField( - blank=True, default='#FFFFFF', help_text='#FFFFFF', - max_length=10, verbose_name='text color') + blank=True, + default='#FFFFFF', + help_text='#FFFFFF', + max_length=10, + verbose_name=_('text color')) css_delete_button_background_color = ColorField( - blank=True, default='#BA2121', help_text='#BA2121', - max_length=10, verbose_name='background color') + blank=True, + default='#BA2121', + help_text='#BA2121', + max_length=10, + verbose_name=_('background color')) css_delete_button_background_hover_color = ColorField( - blank=True, default='#A41515', help_text='#A41515', - max_length=10, verbose_name='background hover color') + blank=True, + default='#A41515', + help_text='#A41515', + max_length=10, + verbose_name=_('background hover color')) css_delete_button_text_color = ColorField( - blank=True, default='#FFFFFF', help_text='#FFFFFF', - max_length=10, verbose_name='text color') + blank=True, + default='#FFFFFF', + help_text='#FFFFFF', + max_length=10, + verbose_name=_('text color')) - css = models.TextField(blank=True) + css = models.TextField( + blank=True, + verbose_name=_('text color')) related_modal_active = models.BooleanField( - default=True, verbose_name='active') + default=True, + verbose_name=_('active')) related_modal_background_color = ColorField( - blank=True, default='#000000', help_text='#000000', - max_length=10, verbose_name='background color') + blank=True, + default='#000000', + help_text='#000000', + max_length=10, + verbose_name=_('background color')) related_modal_background_opacity_choices = ( ('0.1', '10%', ), ('0.2', '20%', ), @@ -162,26 +239,29 @@ class Theme(models.Model): related_modal_background_opacity = models.CharField( max_length=5, choices=related_modal_background_opacity_choices, - default='0.3', help_text='20%', verbose_name='background opacity') + default='0.3', + help_text='20%', + verbose_name=_('background opacity')) related_modal_rounded_corners = models.BooleanField( - default=True, verbose_name='rounded corners') + default=True, + verbose_name=_('rounded corners')) list_filter_dropdown = models.BooleanField( - default=False, verbose_name='use dropdown') + default=False, + verbose_name=_('use dropdown')) recent_actions_visible = models.BooleanField( - default=True, verbose_name='visible') + default=True, + verbose_name=_('visible')) def set_active(self): - self.active = True self.save() class Meta: - app_label = 'admin_interface' - verbose_name = 'Theme' - verbose_name_plural = 'Themes' + verbose_name = _('Theme') + verbose_name_plural = _('Themes') def __str__(self): return force_text(self.name) diff --git a/admin_interface/settings.py b/admin_interface/settings.py index 4855371..91bc12a 100644 --- a/admin_interface/settings.py +++ b/admin_interface/settings.py @@ -35,4 +35,3 @@ def check_installed_apps(): raise ImproperlyConfigured( '\'flat_responsive\' not needed since django 2.0, ' 'remove it from settings.INSTALLED_APPS.') -