babel icon indicating copy to clipboard operation
babel copied to clipboard

Allow object methods to be used as extraction-keywords

Open samclane opened this issue 4 years ago • 1 comments

I'm having trouble getting certain strings to attach that are inside non-default-keyword member functions.

My code has a level of encapsulation to it, where I sometimes store the gettext function inside the class as a method, like so:

_ = gettext(...)
class Foobar:
  def __init__(self, translator):
     self.i18n = translator
   def send(self):
    return self.i18n("Hello World")
  f = Foobar(translator=_)
  print(f.send())

I've added the i18n function to setup.cfg:

[extract_messages]
...
keywords = _ i18n
...

I've also tried adding "self.i18n", and Foobar.i18n to keywords, but this failed to extract the string as well.

I can go through and manually wrap every single string with a "pure" N_() function, but the code has many strings and that would be highly verbose.

samclane avatar Feb 16 '21 22:02 samclane

I had a similar issue. I have a quick fix for it I'll post as a PR. (now #1136)

embray avatar Oct 03 '24 09:10 embray