como coloco esos errors en español?

Enrique Sardon Manrique

Enrique Sardon Manrique

Pregunta
studenthace 7 años

como coloco esos errors en español?

6 respuestas
para escribir tu comentario
    Gerardo Alberto Soto Alvarez del Castillo

    Gerardo Alberto Soto Alvarez del Castillo

    studenthace 4 años

    Hola @EmmanuelO este código en que archivo lo agregaste?

    # Utilities from django.core.exceptions import ValidationError #Custom validation defcustom_length(value): if len(value) > 12: raise ValidationError('El teléfono no puede tener mas de 12 caracteres') ```python
    Cesar David Ramírez Dimaté

    Cesar David Ramírez Dimaté

    studenthace 6 años

    Todo lo que mencionan, para que traduzca los errores en español es la manera incorrecta de hacerlo.

    Los validators son para colocar mensajes de lógica de negocio a los formularios, no para traducciones.

    No se tiene que cambiar el LANGUAGE_CODE a español para tomar las traducciones, ya que una cosa es el idioma que escribiste en tu código (inglés) y el código que vas a traducirlo (español).

    Todo lo indica la documentación oficial:

    How Django discovers language preference

    La traducción según el país lo toma según el idioma en el que está nuestro navegador.

    https://github.com/cesardramirez/platzigram/commit/1ef155baad94a4fad16badda498cdb3147b2a4cb

    De manera adicional, se deben ejecutar los comandos

    makemessages --locale es_co
    y
    compilemessages --locale es_CO
    para generar los archivos .po y .mo para las traducciones de nuestros textos.

    Luis Andrés Arce Cárdenas

    Luis Andrés Arce Cárdenas

    studenthace 7 años

    Pero la manera como el muestra en el template está mejor 😄 me había adelantado jajaja

    Luis Andrés Arce Cárdenas

    Luis Andrés Arce Cárdenas

    studenthace 7 años

    Fijate que en el template te mostraba los errores con el nombre del campo es decir number_phone y el error.

    {% if form.errors.phone_number %} <input class="form-control is-invalid" type="text" name="phone_number" placeholder="Phone number" value="{{ profile.phone_number }}"/> <div class="invalid-feedback"> {{ form.errors.phone_number }} </div> {% else %} <input class="form-control" type="text" name="phone_number" placeholder="Phone number" value="{{ profile.phone_number }}"/> {% endif %}

    Lo importante es el if como llamo al error. El resto es por hacerlo mas bonito con bootstrap 😄

    Luis Andrés Arce Cárdenas

    Luis Andrés Arce Cárdenas

    studenthace 7 años

    Puedes hacer eso

    # Django from django import forms class ProfileForm(forms.Form): """Profile Form""" website = forms.URLField(max_length=200, required=True) biography = forms.CharField(max_length=500, required=False) phone_number = forms.CharField(max_length=20, required=False, error_messages={ 'max_length': 'Logitud máxima 20', }) picture = forms.ImageField()
    Emmanuel Octavio Martinez C

    Emmanuel Octavio Martinez C

    studenthace 7 años

    Encontré una forma.

    Agregas estas líneas para definir un nuevo validador. Supongo que se pueden utilizar los validadores existentes, pero no he encontrado como customizarlos:

    # Utilities from django.core.exceptions import ValidationError #Custom validation def custom_length(value): if len(value) > 12: raise ValidationError('El teléfono no puede tener mas de 12 caracteres')

    y por ejemplo ya en la clase ProfileForm en la parte del teléfono quedaría así:

    class ProfileForm(forms.Form): """Form to validate the user's data in update_profile""" website = forms.URLField(max_length=200, required=True) biography = forms.CharField(max_length=500, required=True) phone_number = forms.CharField(required=False, validators=[custom_length]) picture = forms.ImageField(required=False)

    Lo escribí partiendo de aquí:

    https://docs.djangoproject.com/en/2.1/ref/validators/

Curso de Django [Empieza Gratis]

Curso de Django [Empieza Gratis]

Crea sitios web fácilmente. Aprende sobre la conectividad y la extensibilidad que ofrecen los nuevos componentes de Django: el framework de desarrollo Web para Python más usado en la actualidad.

Curso de Django [Empieza Gratis]

Curso de Django [Empieza Gratis]

Crea sitios web fácilmente. Aprende sobre la conectividad y la extensibilidad que ofrecen los nuevos componentes de Django: el framework de desarrollo Web para Python más usado en la actualidad.