I usually work with French companies where development happens in English because the code might be maintained, sent or whatever to other developers in the world that don't speak French.
That's the theory. In practice, I often encounter code written in "franglais" (half English, half French). Among many bad reasons, there is one reason that seems OK for me: company's vocabulary exists only in French.
That's why I woull recommend one rule, in such a case:
Code must be written in English except for words in the company's glossary and only for those words.

Let me elaborate on this.
If glossary does not exists at all, just start it and maintain it with the code.

Let's take an example and imagine the glossary contains the word Canard, ...
Code could look like
if (firstCanard.BirthDate > searchDate)
...

On the opposite, this would be bad code:
if (premierCanard.BirthDate > searchDate)
...
because premier (first) is not part of the glossary.


Je travaille régulièrement avec des enterprises françaises où le développement est en anglais parce que le code pourrait être maintenu, envoyé ou quoique ce soit d'autre à des développeurs ailleurs dans le monde qui ne parlent pas français.
Ca, c'est la théorie. En pratique, je rencotre souvent du code écrit en franglais. Parmi plein de mauvaises raisons, il y en a une qui me semble légitime: le vocabulaire propre à l'entreprise n'existe qu'en français.
C'est pourquoi je recommnderais une règle, dans un tel cas:
Le code doit être en anglais sauf pour les mots présents dans le glossaire d'entreprise et seulement pour ces mots.

Voici quelques détails supplémentaires.
Si le glossaire n'existe pas, il suffit de l'initier et de le maintenir avec le code.

Imaginons pour prendre un exemple que le glossaire contienne le mot Canard.
Le code pourrait alors ressembler à
if (firstCanard.BirthDate > searchDate)
...

en revanche, le code suivant ne serait pas valable:
if (premierCanard.BirthDate > searchDate)
...
parce que "premier" ne fait pas partie du glossaire.