Je construis une application dans django, qui utilise déjà beaucoup de chaînes codées en dur. Ils sont pour la plupart dans des modèles, mais certains aussi dans des fichiers js et quelques-uns peuvent être trouvés dans le code. Maintenant, chaque fois qu'une chaîne doit être changée, les gens viennent à nous et nous devons perdre notre temps à la trouver et à changer. Comment pourrais-je commencer par nettoyer cela et avoir toutes ces chaînes dans des fichiers séparés, qui pourraient être édités par des non-programmeurs?Création d'une base de chaîne pour l'application Django
Répondre
Nous conservons toutes les chaînes codées en dur dans un module séparé. Cependant, puisque vous voulez que les utilisateurs modifient les chaînes à leur convenance, il vaut mieux les conserver dans la base de données. Je pense qu'un modèle simple avec une clé (un identifiant de la chaîne) et un champ de valeur (chaîne elle-même) fera l'affaire. Ensuite, vous pouvez développer une page simple où l'utilisateur sélectionne une chaîne par son identifiant et la met à jour comme il le souhaite. Pour savoir comment les utiliser dans vos applications, vous pouvez les récupérer dans un dict lorsque votre application démarre (un bon endroit peut être le module init) et les utiliser en conséquence.
Qu'en est-il de l'utilisation de i18n services (gettext)? Même si vous ne prévoyez pas de localiser votre application, ils offrent un moyen simple et standard de séparer les chaînes du code réel.
De plus, PO étant une norme courante, il existe beaucoup de tools pour éditer les fichiers de ressources; l'un d'entre eux (disponible également sous Windows) est Poedit.
Oui, je sais, qu'il y a un système I18N dans Django qui est basé sur gettext. Cependant, cela fonctionne comme ceci: vous écrivez des messages dans une langue naturelle dans votre code et fournissez des traductions ailleurs. Nous n'avons pas encore de traduction, mais nous aimerions ne pas coder une chaîne dans le code. Et le code python est seulement un endroit. Qu'en est-il des choses javascript ou html? – gruszczy
Les modèles peuvent utiliser les fonctionnalités i18n pour obtenir des chaînes: http://docs.djangoproject.com/fr/dev/topics/i18n/#in-template-code –
- 1. Création de données Django et validation
- 2. Création de classes de base de base
- 3. Création d'une base de données pour un formulaire Web général
- 4. Création d'une base de données pour un système de classification
- 5. Création d'une base de données pour l'appariement des contraintes
- 6. Django: Champ personnalisé de chaîne d'horodatage
- 7. Comment concevoir une méthode pare-balles pour relier une chaîne à une chaîne de base?
- 8. Création d'une méthode générique pour convertir chaîne en nombre nullables
- 9. Django. Confirmation de la création de l'utilisateur par mail
- 10. Django et les tables de base de données héritées bizarres
- 11. Python/Django: Création d'une liste plus simple de values_list()
- 12. Django Admin: Gestion de la base de données
- 13. Django - SQL personnalisé dans la chaîne de connexion
- 14. Erreur 'TemplateDoesNotExist' lors de la création d'un sitemap pour l'application Django
- 15. besoin d'aide avec la création de base de données
- 16. Comment tester un schéma de base de données django?
- 17. Django Liste déroulante dynamique de la base de données
- 18. format de filtre django pour la date
- 19. Création d'une base de données de bibliothèque musicale facilement modifiable
- 20. Création d'objets pilotés par la base de données pour remplir un Treeview - très lent
- 21. Création de SecureString à partir d'une chaîne unicode non gérée
- 22. Pourquoi supprimer "init_command set engine = INNODB" de django DATABASE_OPTIONS après la création de la table?
- 23. django pour boucle de comptage
- 24. Code de connexion pour Django
- 25. modèles Django - Regroupement par un paramètre de chaîne
- 26. Chaîne vide en HTML résultat rendu de Django/Python
- 27. Création d'une date à partir d'une chaîne de texte - VB.Net
- 28. Création de tests JUnit pour les éléments de base de données avec des clés générées automatiquement
- 29. Python (bibliothèque de création d'image): Rééchantillonner la chaîne comme argument
- 30. Création d'une chaîne longue à partir d'un jeu de résultats
C'est cool, en particulier l'administration Web de toutes les chaînes. Cependant, y a-t-il quelque chose à garder aussi gettext et à la place avoir juste des traductions dans la base de données? – gruszczy
Vous devez stocker les traductions des chaînes dans la base de données, car ce sont à nouveau les utilisateurs qui les fourniront. Toutes les autres chaînes que les utilisateurs ne seront pas autorisés à modifier devront être gettextées. – shanyu
OK, donc les chaînes spécifiques au codeur via gettext (quel genre de chaînes spécifiques au codeur peut-il y avoir? Et pourquoi devrions-nous les traduire ??) et tout le visible pour les utilisateurs dans la base de données. Mais qu'en est-il de la base de chaîne pour javascript, qui peut être conservé dans un fichier séparé? – gruszczy