You could try PollUnit for your use cases. PollUnit is a poll maker with various types of polls like votings, surveys, tables. When you create a voting, you can specify what to vote on. This includes free text, date, time, images, etc.
Here a example of a scheduling:
To your requirements:
An overview of the language courses offered.
The PollUnit type Landing Page can collect polls / scheduling and show an overview of all what you are offering.
Interested people should be able to select the language course they
want to attend and provide some personal information (ideally, it
should be possible to validate the data entered)
In the advanced step when creating a PollUnit you can require additional information from your participants. These are only visible to admins. (Premium required)
It should be possible to set a maximum number of registrations
In the advanced step when creating a PollUnit of the type voting you can define a limit per option. So you could also set a different number of seats per option / date / time. (Premium required)
The entered data should be stored in Europe and the provider must meet
the DPP/DSGVO requirements
All servers are located in the EU. PollUnit meats the GDPR and also offer an DPA for signing online.
PollUnit is available ass freemium. The basic functions for up to 40 participants are free of charge.
PollUnit offers discount for nonprofit organizations. If the features help you, write to the PollUnit Support.
Disclosure: I work for PollUnit.