French translators have either rewritten some sentences in a way that works around the issues, or simply assumed masculine gender, for lack of better solution in classic Daggerfall.
But that was before my time on Project French Daggerfall, Daneel53 can probably give details and examples.
He also worked on the localization of other games, and he told me about one (Bannerlord) that has some mechanism to support that, so I'm sure he could share that knowledge if asked. We discussed about that together in the past few weeks, but decided not to bother Interkarma with that, so close to 1.0 release. We'll probably try to implement it ourselves, if nobody beats us to it

3) As Interkarma said we developed a relatively small Perl script to automate locations translation. It will read Master CSV Internal_Locations.csv from the current directory and output a french translation, along with errors if different english names were translated to the same french name ("loss of uniqueness"); I attached the current version to this post.
At the bottom of the script you'll find the list of location name patterns the script looks for. Patterns probably shouldn't need adjustments since they depend on input.
From there, it gets language-specific: production rules for each pattern, a table of names, with their genders, and a table of adjectives, with their variants depending on gender, and a few language-specific functions to adjust the two together. For example there a few adjectives ("Ancien|Doux|Vieux") that are usually placed before the name, not following the usual rule.
Some pronouns are elided in front of specific names ("le oiseau" => "l'oiseau"), I'm not sure if there's a rule about that, so this information is in names table too.
"de le" is also elided as "du", this is fixed at the last moment with a language-specific substitution, line 401.
As I said this is were it gets language specific, and you can modify that to your needs. Or find somebody with programming skills that can help you implement what you need. It's also useful to experiment a bit to avoid loss of uniqueness, and find interesting alternate translations in the process
