I have created a script for SharePoint 2016 on premise:
I used it to receive the users Organization Unit from its SPS-Distinguished Name property and depending on it I have set his preferred display language order. For example if a user is spanisch I try to use first Spanish, than englisch, than german as default fallback language "es-ES,en-US,de-DE". So this might be a good start for all users to use a mulitlanguage SharePoint Farm. After this basic configuration they might update the preferred userlanguage in ther user profile if they want to, but they do not have to do it, because this script provides a default configuration for all.
cls
Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction
SilentlyContinue
$url = "https://URLOFMYSITES/";
$site = Get-SPSite $url;
$web = $site.RootWeb;
$context = Get-SPServiceContext $site;
$profileManager = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context);
$profiles = $profileManager.GetEnumerator();
while ($profiles.MoveNext())
{
$userProfile = $profiles.Current;
$accname = $userProfile.AccountName;
$up = $profileManager.GetUserProfile($accname);
$organizationUnit = $up["SPS-DistinguishedName"].split(',')[1].split('=')[1]
$preferredLanguages = "";
switch($organizationUnit)
{
DE {$preferredLanguages = "de-DE,en-US";break;}
CN {$preferredLanguages = "zh-CN,en-US,de-DE";break;}
US {$preferredLanguages = "en-US,de-DE";break;}
default {$preferredLanguages = "en-US,de-DE";break;}
}
$up["SPS-MUILanguages"].Value = $preferredLanguages #for example "en-US,de-DE,it-it"
$up.Commit()
}