In Office 365 haben die Benutzer die Möglichkeit, die bevorzugten Anzeige- und Inhalts-/Suchsprache für SharePoint Online zu definieren. Dies wirkt sich beispielsweise dann aus, wenn mehrere Alternativsprachen auf SharePoint Websites verfügbar sind, sowie in den gefundenen Inhalten und auch in Sortierreihenfolgen bei einer Suche.

Manuelles Setzen

Microsoft hat dies inzwischen ziemlich gut versteckt. In der Oberfläche geht das wie folgt:

In Office 365 anmelden
Dann das Office-Profil aufrufen:

Danach auf der Profilseite den Link Profil aktualisieren anklicken:

In der Mitte der Seite den Satz Wie kann ich zusätzliche Informationen hinzufügen? aufklappen und auf hier klicken:

Danach werden die Details angezeigt und über die 3 Punkte kann man schliesslich die Sprache und Region definieren:

Dies führt einem dann letzten Endes auf eine Seite in welcher die Anzeige-, Inhalts- und Suchsprachen definiert und priorisiert werden können:

Diese Einstellungen von jedem User selbst ausführen zu lassen, wäre aber sehr mühsam und Fehleranfällig und trägt nicht gerade zur Akzeptanz bei. Wenn die Benutzer aus verschiedenen Ländern auf SharePoint Online zugreifen, wäre es aber wünschenswert, dass sie Ihre Standard-Sprache bereits eingestellt hätten und nur bei Bedarf diese anpassen bzw. erweitern müssten.

Setzen mit PowerShell

Man kann die Einstellungen jedoch auch mit Hilfe von PowerShell setzen. So liessen sich die Einstellungen für entsprechende Benutzer aus verschiedenen Ländern auf die dort jeweils bevorzugte Sprache umstellen.
Besonders einfach geht dies, wenn man das Modul SharePointPnPPowerShellOnline verwendet. Dieses kapselt etliche der sonst notwendigen Aufrufe. Die neuste Version kann von GitHub bezogen werden:

https://github.com/SharePoint/PnP-PowerShell/releases

Dort steht das Modul für verschiedene SharePoint Version bereit, unter anderem auch für SharePoint Online (SharePointPnPPowerShellOnline).

 

Installieren lässt sich das ganze direkt in PowerShell mit dem folgenden Befehl:

Invoke-Expression (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/sharepoint/PnP-PowerShell/master/Samples/Modules.Install/Install-SharePointPnPPowerShell.ps1')

Das ergibt beispielsweise die folgende Ausgabe:

Falls das nicht funktioniert, kann man auch den Installer von obiger GitHub Seite herunterladen.
Mit dem folgenden Befehl kann man prüfen, ob das Modul vorhanden ist:

Get-Module SharePointPnPPowerShell* -ListAvailable | Select-Object Name,Version | Sort-Object Version -Descending

Das ergibt beispielsweise folgende Ausgabe:

 

Das folgende PowerShell Script zeigt das Setzen der Anzeige- und Inhalts-/Suchsprache in SharePoint Online::

param(
[string]$UserAccount = $(throw "Als erster Parameter muss der Loginname angegeben werden"),
[string]$MUILanguages = $(throw "Als zweiter Parameter müssen die Display Languages angegeben werden (z.B. de-CH für nur eine Sprache oder durch Komma getrennt für mehrere Sprachen z.B. en-US,ch-DE"),
[string]$ContentLanguages = $(throw "Als dritter Parameter muss Content and Search Languages angegeben werden (z.B. de-CH für nur eine Sprache oder durch Komma getrennt für mehrere Sprachen z.B. en-US,ch-DE")
)

#Set Variables
$SiteURL = "https://<Ihr URL Name>.sharepoint.com"
 
#Connect to PNP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)
 
#Get all properties of a User Profile
$UserProfile = Get-PnPUserProfileProperty -Account $UserAccount
Write-Host "Actual properties for user" $UserAccount ":"
Write-Host "SPS-MUILanguages    :" $UserProfile.UserProfileProperties."SPS-MUILanguages"
Write-Host "SPS-ContentLanguages:" $UserProfile.UserProfileProperties."SPS-ContentLanguages"
Write-Host ""

# set new user profile properties
Set-PnPUserProfileProperty -Account $UserAccount -PropertyName "SPS-MUILanguages" -Value $MUILanguages
Set-PnPUserProfileProperty -Account $UserAccount -PropertyName "SPS-ContentLanguages" -Value $ContentLanguages

$UserProfile = Get-PnPUserProfileProperty -Account $UserAccount
Write-Host "New properties for user" $UserAccount ":"
Write-Host "SPS-MUILanguages    :" $UserProfile.UserProfileProperties."SPS-MUILanguages"
Write-Host "SPS-ContentLanguages:" $UserProfile.UserProfileProperties."SPS-ContentLanguages"

# close connection to SharePoint Online
Disconnect-PnPOnline

 

Ein paar Erklärungen zum obigen Script:

  • Die ersten 3 Zeilen definieren die Parameterübergabe für den Benutzernamen, die Anzeigesprache und die Inhalts-/Suchsprache.
  • Danach wird der URL auf SharePoint Online in einer Variable definiert. Man könnte dies natürlich auch als Parameter definieren. Wahrscheinlich wird es aber meistens so sein, dass man immer mit dem gleichen URL arbeitet.
  • Danach erfolgt die Authentifizierung gegen Office 365. Hier könnte man das Skript auch so konfigurieren, dass dieses ohne Abfrage der Anmeldeinformation anhand eines zuvor erzeugten Tokens erfolgt. Die explizite Abfrage der Login Daten ist aber immer noch ein Tick sicherer.
  • Danach geht es ans Eingemachte:
    • Profil Eigenschaften holen für den gewünschten Benutzer.
    • Damit man sieht welche Werte gesetzt sind, zeige ich diese noch an. Das muss natürlich nicht sein und man könnte dies weglassen.
    • Setzen der Anzeigesprache (SPS-MUILanguages) mit dem übergebenen Wert.
    • Setzen der Inhalts-/Suchsprache (SPS-ContentLanguages) mit dem übergebenen Wert.
    • Danach hole ich nochmal die Profil Informationen für den gewünschten Benutzer und zeige diese zur Kontrolle an. Das muss ebenfalls nicht sein und könnte man weglasen.
  • Zum Schluss erfolgt die Abmeldung von SharePoint Online (Disconnect-PnPOnline)

Das obige PowerShell Skript stellt nur ein Beispiel für die Nutzung der Bibliothek SharePointPnPPowerShellOnline dar. Man könnte damit natürlich jede beliebige Profileigenschaft setzen.

Um Tipparbeit zu ersparen, kann das PowerShell Skript hier heruntergeladen werden:

UpdatePreferredLanguage-SPOnline.zip