Je traduisez un site Web Django dans 6 langues. C'est la première fois que j'ai travaillé sur la traduction. P>
C'est un site de commerce électronique. Comment puis-je traduire les champs du modèle? Par exemple: Nom de la catégorie qui est en réalité dans la base de données et ne pas être écrit dans le fichier PO lorsque j'essaie {% trans cat.name%} code> ou
ugettext (nom de cat.name) code> p>
6 Réponses :
Utilisez verbose_name :
class Book(models.Model): title = models.CharField(verbose_name=_('Title'),max_length=50) class Meta: verbose_name = _('Book') verbose_name_plural = _('Books')
Vous avez besoin de quelque chose comme https://github.com/geomin/django-lingua < / p>
Ce projet est mort
On dirait que l'auteur de django-lingua code> contribue à
django-modeltranslation code> qui est assez vivant.
from django.utils.translation import ugettext as _ class Book(models.Model): title = models.CharField(_('title'),max_length=50)you can also do it this way. title will become a translatasble string
@mossplix à l'aide de Verbose_Name = _ ("titre") est plus propre.
Qu'est-ce qui manque à toutes les réponses, est le type de gettext que vous devez utiliser. Il s'avère que vous devez utiliser gettext_lazyzy code>, voici mon code de travail
Malgré son vieil, ce projet semble être la solution la plus utilisée et la plus entretenue: p>
https://github.com/deschler/django-modeltranslation/ p>
https://django-modeltranslation.readthedocs.io/en/Latest/ a> p>
C'est assez simple en fait. En supposant que vous ne voulez pas continuer à examiner vos fichiers locaux (ni à compter sur des modifications tierces telles que Rosetta), ce qui peut être fastidieux, vous pouvez simplement traduire tous vos champs de modèle de manière dynamique.
Une façon de le faire est via l'application: Django-Parler, qui vous permet de tirer parti de ses classes TRUCLABLEBLODEL, TraductionFields.
---- Plus d'infos sur ceci se trouve dans le livre Django 3 par exemple: Chapitre 9 (très exhaustif). P> si Vos options sont resserrées par des choix ( cela se produit em>) ... & vos champs de modèle s'appuient sur une liste de choix prédéterminés, vous pouvez simplement rendre les choix traduisés comme suit: P> dans modèles.py p> ou si vous utilisez Enums p> dans ENUMS.PY P> from django.utils.translation import gettext_lazy as _
@unique
class StudentChoice(Enum):
rad = _('Radio')
tel = _('Television')
Bonne question. Voici une question similaire posée: Stackoverflow.com/questions/2019364/... qui pointe une application Django qui pourrait résoudre votre problème.