Language support for a plugin: undefined variable $grav

#1

I’m adding language support to my first plugin, and I have some questions as to how to do that correctly. What I need is one string (configurable), to be used by a custom function. So I put the following in my plugin’s languages.yaml file:

en:
  PLUGIN_ANTISPAM:
  NOSCRIPT: [email address is javascript encrypted]

de:
  PLUGIN_ANTISPAM:
  NOSCRIPT: [Mailadresse ist Javascript-verschlüsselt]

And in my custom function, I tried to read this with the following:

function munge($array) {
    // a bunch of irrelevant stuff here
    $txt .= "<noscript>".$grav['language']->translate(['PLUGIN_ANTISPAM.NOSCRIPT'])."<"."/noscript>";
  return $txt;
}

I got this from the documents. However, this returns a Crikey! error that says "Undefined variable: grav". What is wrong?

#2

$grav should probably be $this->grav, unless the instance was previously declared as a variable in the method.

#3

That was it, that did the trick! :star_struck: (I love you so much right now) Should I post a correction for the page in the documents where I found the $grav reference? I shall try to figure out how best to do that.

Now there’s still a minor bug in the plugin, but mostly it’s good to go, so I’m putting it up right now and posting that issue in the Grav tracker!

#4

You can easily edit the page by clicking “Edit” at the top, that creates a Pull Request on GitHub.

#5

Nice. Thank you yet again for lending a hand to a GitHub and plugin newbie! I think I managed to create a proper pull request – if I’ve gotten all of that right, including my plugin repo, I shall do my best improving the documents and making new plugins to help make Grav an even better CMS for everybody. :purple_heart: