Hi Tom, On Mon, 31 Dec 2018 18:26:14 +0000 Tom Forbes <t...@tomforb.es> wrote:
> I was describing my django-choice-object library[1] and forgot to > link it! > Thanks, I took a look -- the library looks nice, but notably, Choice objects are not Python enums, although they share some of their traits. > I would be +1 on re-opening it, I've used enums for this before and I > find it much more DRY than the more 'standard' Django way. Thanks. > Perhaps we could reduce some boilerplate here by somehow automatically adding > the key names to gettext? > This, I'm afraid, won't fly. The way xgettext (the engine used by makemessages) generates the translation files is by scanning the text of source files, looking for specific function calls, and picking their arguments with a simple text transformation. So, for the key name to somehow be identified, it must be a parameter in a function call (not the target of assignment), and the form to be translated must be the form that's in the source -- no changing capitalization, or underscores-to-spaces, or anything of the sort. So, the best we could do to minimize repetitions would create Choice classes looking like class SchoolYear(Choices): choice('Freshman', 'FR') choice('Junior', 'JR') where the choice() calls add members to the class, and the name of the member is generated by some transformation over the label. That, IMO, would be unacceptably unpythonic. Have fun, Shai. > 1. https://github.com/orf/django-choice-object > -- You received this message because you are subscribed to the Google Groups "Django developers (Contributions to Django itself)" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at https://groups.google.com/group/django-developers. To view this discussion on the web visit https://groups.google.com/d/msgid/django-developers/20190101001534.29c8c673.shai%40platonix.com. For more options, visit https://groups.google.com/d/optout.