Using language defined in the GUI won't probably solved the question here since you can decide to receive both french and english language so both will be loaded into memory and then which one will be displayed?
Does GMEPG take care of the language code, how does it handle the EPG when there are several languages available for the same service reference?
If it handles it properly no need for filtering in EPGImport just load all the possible languages for a multi-lingual channel using the same reference (but this will fill up the STB memory).
But then you should extend the number of preferred languages because 2 is very restrictive.
People doesn't have to learn regular expression they can just type the "channel id" name like it appears in the channels.xml but I propose my implementation. This PR is allowing users to have a full control on what is loaded into STB memory.
So sad that I ask for help in the development section of OpenPLi where I explain what I was doing and nobody answer me, now that the patch is ready and fully tested you reject it. I would have better invest my time in doing something else.