un animal → des animaux [en: animal(s)]
un journal → des journaux [en: journal(s)]
with some exceptions:
un carnaval → des carnavals [en: carnival(s)]
un festival → des festivals [en: festival(s)]
un idéal → des idéals (OR des idéaux) [en: ideal(s)]
un val → des vals (OR des vaux) [en: valley(s)]
There is no logic there (as many things in french), it's up to Mistral to choose how the plural can be
But are these truly exceptions? Or are they the result of subtler rules French learners are rarely taught explicitly?
I don't know what the precise rules or patterns actually might be. But one fact that jumped out at me is that -mal and -nal start with nasal consonants and three of the "exceptions" end in -val.
No, like parent says, with many things in French, grammar and what we call "orthographe" is based on usage. And what's accepted tends to change over time. What's taught in school varies over the years too, with a large tendency to move to simplification. A good example is the french word for "key" which used to be written "clef" but over time moved to "clé" (closer to how it sounds phonetically). About every 20/30 years, we get some "réformes" on the topic, which are more or less followed, there's some good information here (the 1990 one is interesting on its own) : https://en.wikipedia.org/wiki/Reforms_of_French_orthography
Back to this precise one, there's no precise rule or pattern underneath, no rhyme or reason, it's just exceptions based on usage and even those can have their own exceptions. Like "idéals/idéaux", I (french) personally never even heard that "idéals" was a thing. Yet it is, somehow : https://www.larousse.fr/dictionnaires/francais/idéal/41391
Errr. French is _not_ based on usage but has an official rulebook that is maintained by L'académie de la langue française. Obviously nobody is coming after you if you don't respect the rules but there absolutely is a defined standard. This makes French useful for international standards and treaties because the wording can be very precise and leave much less to interpretation.
To my knowledge there aren't that many languages that are managed as officially as French is.
The Académie tried to codify what was used at the time (which varied a lot) to try and create a standard, but that's why there's so many exceptions to the rules everywhere : they went with "tradition" when creating the system instead of logical rules or purer phonetical approach (which some proposed).
There's a bunch of info on the wikipedia link about it, and how each wave or "réforme" tries to make it simpler (while still keeping the old version around as correct).
Each one is always hotly debated/rejected by parents too when they see their kids learning the newly simplified rules.
Recently, the spelling of onion in french went from "Oignon" (old spelling with a silent I) to "Ognon" (simplifying it out), and event that one made me have a "hmm" moment ;)
I've never heard of such a rule (am native), and your reasoning is fine but there are many common examples : cheval (horse), rival, estival (adjective, "in the summer "), travail (work, same rules for -ail words)...
That's news to me that French for "valley" is masculine and "val" - isn't it feminine "vallée"? Like, say "Vallée Blanche" near Chamonix? And I suppose the English ripoff, "valley" sounds more like "vallée" than "val" (backwards argument, I know).
The "Vallée blanche" you mentioned is not very far from "Val d'Arly" or "Val Thorens" in the Alps. Both words "val" and "vallée", and also "vallon", come from the Latin "vallis".
See the Littré dictionary https://www.littre.org/definition/val for examples over the last millennium.
By the way "Le dormeur du val" (The sleeper of the small valley) is one of Rimbaud's most famous poems, often learned at school.
Un val is a small vallée. Une vallée is typically several kilometers wide; un val is a couple of hundred meters wide, tops.
The "Trésor de la langue française informatisé" (which hasn't been updated since 1994) says val is deprecated, but it's common in classic literary novels, together with un vallon, a near synonym.
Le terme vallée, utilisé comme toponyme, doit être distingué du terme val qui est souvent employé pour désigner et nommer une région limitée dans divers pays d'Europe et dans leurs langues.
It can funny sometimes. A breast (un sein) and a vagina (un vagin) are both masculine, while a beard (une barbe) is feminine. For the slang terms, a ball (une couille) and a dick (une bite) are also feminine.
Of course, it is not always the opposite, otherwise it wouldn't be random. A penis (un penis) is masculine for instance.
The exceptions are usually due to words that were borrowed from other languages and hence do not follow French rules. Many of the words that were mentioned here are borrowed from the Occitan language.
I worked with Laravel and trust me, it's a pain in the ass when you have a medium/big project. The "documentation" (more a how-to) is full of bad practices, the facade pattern makes it hard to refactor or change the underline logic, you can break the contract easily (it's just php annotations, not real type-hints), the ORM is a pain to test and has too much magic, you use strings to set the validation makes it hard to understand when it's not trivial, the request->input() takes query/body so you end up mixing everything and some clients use the API in various way, there is helpers to get the config/service anywhere (even in static methods) which makes it painful to test and refactor, etc. I strongly recommend to use Symfony instead, the documentation is great, the profiler is built-in, the cache is better (faster), it's type-hinted and strict, there is interfaces, it scales well because it's flexible and well thought.
I have the exact same issue, it starts to be choppy at random time and I have to reboot, usually in the middle of my work. I'm considering switching to another OS because of this single issue that has been there for years.
Eloquent is one of the worst ORM I worked with. It works until it doesn't, there is too much magic and it mixes SQL/Entity in the same class. Since then I use doctrine and/or repository pattern which makes the code more extensible and testable, it's also trivial to do your own raw SQL request and map it to your entity if you don't want to rely on an ORM.