If you are not using a CDN for assets, selecting the site setting ‘set locale from accept language header’ will make it so that most users are able to go through the registration process in their own language. This will also set their default interface language to the language that they have signed up with.
You could then create categories/sub-categories for each language and promote the idea that discussions in each language category should be in the correct language. This would give all users access to all language categories, but also add some organization to your site.
The only place I see this not working is if there are left-to-right and right-to-left languages on the same site. To allow users to access both LTR and RTL language categories, you would need something like the localized-categories-plugin, or the ability for text-direction to be set from the text entered into the editor would need to be added to Discourse: Set direction of text depending on text itself (I think the second solution would be preferrable, as it wouldn’t require reloading the entire site when all that is needed is the change of one line of css.)
A couple of changes to Discourse could make this work better:
make it possible to set the locale from the accept-language header when a CDN is being used.
add a category/sub-categories page that would have a similar layout to the current categories page. For example, at the URL
myforum.com/c/de/sub-categories there would be a page similar to what is at
myforum.com/categories, but it would list the sub-categories that were found in the German section of the site.
Edit: for this type of approach to work, you will also need to select the site setting ‘allow user locale.’ This setting allows users to select their own interface language, instead of forcing them to use the site’s default locale.