For further info, the hard-coding of WP core that I would like to avoid, but which I am currently forced to use, is the changing of line 86 of wp-includes\nav-menu-template.php
to
$attributes .= ! empty($item->url) ?(' href="'.esc_attr($item->url).(($_SESSION['lang']==1)?'?language=1':'').'"'):'';
using the php session variable that I set up depending on the current language choice.
In the end, I decided to create a series of custom links in the French menu, specifying URLs containing the ?language=1 parameter. A bit of work involved, but it prevents issues arising from directly editing the WP core. Marking as resolved.