Documentation Django STATS:
La mise en garde avec des variables ou des valeurs calculées, comme dans la précédente Deux exemples, est que l'utilitaire de détection de chaînes de traduction de Django, Django-admin.py Makemessages, ne pourra pas trouver ces chaînes. p> BlockQuote>
C'est bien avec moi, je suis prêt à fournir des traductions pour toutes les valeurs possibles de la variable traduite à la main. Mais comment faire cela? P>
Disons que j'ai dans mon code de modèle comme ceci: p>
xxx pré> Le var est extrait de la base de données, et je sais Toutes les valeurs possibles de celui-ci - disons que les valeurs possibles sont "Alice" et "Bob". P>
Je pensais que tout ce que je dois faire est de fournir des entrées comme celles-ci: P>
#~ msgid "Alice" #~ msgstr "Alicja"
3 Réponses :
Nous sommes actuellement en train de comprendre cela aussi. Bien que nous n'ayons pas fait si bien, nous avons un piratage plutôt ennuyeux pour se déplacer.
Nous définissons simplement une fonction "factice" quelque part dans le code (par exemple vos modèles.py ou même les paramètres.py) et remplissez-le avec toutes les cordes que nous devons avoir une traduction pour. p> Cette fonction n'est jamais appelée mais simplement définir cela empêche les chaînes de message d'être commentées par Makemessages. P> Pas la solution la plus élégante mais ça marche. P> P>
Il semble qu'il n'y ait pas de "élégante" "correcte" et une solution largement acceptée. Une pitié. Le tien semble optimal pour moi, merci!
Vous pouvez également utiliser un modèle pour cela (vous n'avez même pas besoin d'utiliser ce modèle n'importe où dans vos applications). Voir ce gist pour un exemple. Veuillez également noter que vous pouvez utiliser des packages spéciaux lorsque vous gérez la traduction de l'objet modèle (ils vous permettent même de modifier la traduction à l'aide du site d'administration). J'ai ajouté quelques liens dans un commentaire vers le gist.
Je pense que cela est bon uniquement pour les chaînes, qui ne figurent dans aucun code du tout (ni dans les appareils, etc.), comme une chaîne complètement "de l'extérieur" - comme d'un service Web Stranger, etc. sinon il y a d'autres solutions ( voir ma réponse).
Il y a une belle façon de faire ça! (Je sais, parce que je travaille sur le même code).
Tout d'abord - cette valeur est calculée quelque part. Donc, dans votre action, vous pouvez avoir: p> et ultérieur dans le modèle: p> Vous pouvez avoir des différents Les valeurs, qui peuvent devenir peu pratiques ... à moins que vous n'utilisez cette astuce: p> Vous devez faire De cette façon, vous n'êtes pas: p> _ code> quelque chose de local si vous ne voulez pas Pour affronter avec
ugettext_lazy code>, etc. p>
Manage.py Makemessages Code> Li>
ul> p>
J'ai fini par résoudre celui-ci avec une solution similaire suggérée dans la réponse @stfs. P>
Lorsque j'ai utilisé J'ai donc changé la syntaxe dans la fonction vers maintenant en utilisant pGgetext ("type de prévision", "une chaîne") code>, puis vous utilisez
{% trans varname%} code> dans mon modèle retourne toujours " Certaines chaînes em> "au lieu de" nouveau texte em> "pour la traduction. p>
gettext ("String") code>. p>
{% Trans Varname%} code> donnerait "nouveau texte" dans mon modèle. P>
Pourquoi pour vous dire que cela ne répond pas à la question? Il permettra d'ajouter une chaîne qui ne sera pas commentée dans le fichier de traduction. Alors qu'est-ce que j'ai manqué?
Cela ressemble davantage d'une amélioration de la réponse de STFS qu'une réponse en soi. Il aurait donc été bon s'il était inclus dans la réponse de STFS que de l'avoir ici. Cependant, je supprime mon commentaire pour le moment et je formatage un peu votre réponse.