Microsoft Forms supports multilingual forms. How do you create these forms, how do you know what language the form will be in, and what happens when the forms are in a Microsoft Forms web part in SharePoint ?
Creating a form in multiple languages is easy. You can find detailed instructions on this page Send a form in multiple languages.
Note that it must be a form not a quiz. Quizzes cannot be multilingual. Create the form in the default language first. Then click on the three dots at the top right corner of the screen, and select multilingual. You can change the Primary language if it got it wrong, or you can add new languages.
If users are not going to be using a SharePoint webpart to fill it out, you have to be very careful with the choice of languages. Language codes have to be an exact match. For example you get to choose between “français (France)” and “français (Canada)”. However you have to choose carefully because later on you will need an exact match with the browser language.
Then for each language, hover over the language name to make the pencil and trash can appear, and click on the pencil.
That will let you edit the text in that language, including the title and the questions.
Let’s try the form in different languages now. If your browser’s language preference, or one of the list of preferences, matches one of the languages of the form then the form’s user interface and content will be in the selected language. However this must be an exact match. If the form language is “français (France)”, which means language code “fr-FR”, and your browser is “français (Canada)” (fr-CA) or even “français” (fr), it WILL NOT MATCH and the form will be in English. If the form language is “Deutsch”, which means language code “de”, and your browser is “Deutsch (Deutschland)” (de-DE), it WILL NOT MATCH and the form will be in English, or in whatever is the Primary language of the form.
You can override the user’s language preference by adding the “lang” parameter with a language code to the URL, for example adding “&lang=de” for German. Again, an exact match is needed. It will then ignore the user’s browser configuration and show the form UI and content in German. If you set your language preference in your Office 365 user profile, it always ignores that.
In SharePoint modern pages, you can add a Microsoft Forms webpart to the page. In what language will the form display? If your user profile does not have a language preference set, then it will follow the browser settings, otherwise it will follow the user profile settings, the same thing as what SharePoint’s user interface does. Good news! It does not need to match exactly, “fr” or even “fr-CA” browser setting will match “fr-FR” if that is the MS Forms language. Bad news! The forms language code must exactly match the SharePoint language code. So for instance the language code for French in SharePoint is “fr-FR”. There is no way to match “fr-CA” in MS forms. Even worse news. MS Forms supports one version of German, apparently with language code “de”, while SharePoint supports one version of German, with language code “de-DE”. They don’t match, and there is no way to make them match. It’s a bit hit or miss, for some languages both products use the same language code, and for some they don’t. For example both support Welsh, and in both cases they happen to use the language code “cy-UK”, even though the language code “cy” would have been perfectly standards compliant.
If you put a “&lang=de” in the URL that is provided to the Microsoft Forms webpart, it makes no difference, it ignores the parameter.
When the form is on the user’s screen they can always click on the language toggle in the upper right hand corner of the webpart. Selecting a language from that dropdown will override the browser and the profile and show the form UI and content in that language, without changing the language of the UI of the rest of the SharePoint page.
All of this would be easily fixed if MS Forms were to try a little harder to match the browser language or the SharePoint language. The best way would be if the exact match doesn’t work, try to match the neutral culture ancestor of the languages (in most cases a two-letter language code). If the neutral culture of the form were to be matched with the neutral culture of the Browser language for standalone forms, or the thread’s current UI culture in the case of SharePoint webparts, then “de” would match “de-DE” and “fr-CA” would match “fr-FR”.