To explain a bit how Polylang works. There are two possibilities:
If you chose to set the language from content, then Polylang differs text domain loading. The text domain is no more loaded by WP, theme or plugins but by Polylang in a 'wp' action. I can't do this sooner because I need to know what which content is loaded. In 'parse_request' we don't know the content yet.
If you chose to set the language from the language code in urls, then the language is set in 'plugins_loaded' with priority 1. And the text domain is loaded normally by WP, theme and plugins. Polylang does not interfer.
The advantage of the first solution is that posts and pages urls are not modified. Thus if for some reason Polylang must be de-activated, no 404 error will be generated (except for archives as here we can't avoid the language code in urls if we want to separate content from different languages).
However plugins are not aware that the text domain loading can be differed until 'wp' is fired. Thus even if nothing will be displayed before 'wp' action, they can just store some strings in variables before 'wp' is fired and use these variables later for display. In that case the first option is broken. Thus the second option is better for (some) plugins compatibility.
In any cases, if the plugin loads the text domain before 'plugins_loaded', Polylang currently can do nothing if the plugin is loaded before Polylang...
So I suggest that you choose to have the language code in all urls if this is not the case yet.