Skip to main content

Update user language and regional settings with CSOM

Following my previous post around multilingual aspects of SharePoint Online: Modify Site Regional and Language settings with JSOM and JavaScript

Here is some CSOM code which updates the personal regional settings of the current user or another user (if you are a tenant admin and have the rights to update user profiles)

Before update:




The code:


using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.UserProfiles;
using System.Security;
namespace UpdateLanguagePreference
{
class Program
{
static void Main(string[] args)
{
//Tenant Admin Details
string tenantAdministrationUrl = "https://yoursite-admin.sharepoint.com/";
string tenantAdminLoginName = "tenantadmin@yoursite.onmicrosoft.com";
string tenantAdminPassword = "password";
//AccountName of the user whos property you want to update.
//If you want to update properties of multiple users, you can fetch the accountnames through search.
string UserAccountName = "i:0#.f|membership|user@yoursite.onmicrosoft.com";
using (ClientContext clientContext = new ClientContext(tenantAdministrationUrl))
{
var passWord = new SecureString();
foreach (char c in tenantAdminPassword.ToCharArray()) passWord.AppendChar(c);
clientContext.Credentials = new SharePointOnlineCredentials(tenantAdminLoginName, passWord);
// Display languages
var muiLanguages = "en-GB,nl-NL,fr-BE,de-DE";
var customRegionalSettings = "False"; //Override the site regional settings with custom settings for user.
var locale = "2057"; //English (United Kingdom)
//Full list of timezone id's available here: https://msdn.microsoft.com/library/microsoft.sharepoint.spregionalsettings.timezones.aspx
var timeZoneID = "2";// "(UTC) Dublin, Edinburgh, Lisbon, London";
// Get the people manager instance for tenant context
PeopleManager peopleManager = new PeopleManager(clientContext);
peopleManager.SetSingleValueProfileProperty(UserAccountName, "SPS-MUILanguages", muiLanguages);
//This is important.
peopleManager.SetSingleValueProfileProperty(UserAccountName, "SPS-RegionalSettings-FollowWeb", customRegionalSettings);
peopleManager.SetSingleValueProfileProperty(UserAccountName, "SPS-Locale", locale);
peopleManager.SetSingleValueProfileProperty(UserAccountName, "SPS-TimeZone", timeZoneID);
clientContext.ExecuteQuery();
}
}
}
}

After update:



Thanks!

Comments

Popular posts from this blog

PowerShell For create Sub site in office 365

#Add references to SharePoint client assemblies and authenticate to Office 365 site Add-Type -Path "\Software\SharePoint 2013 Client Browser v1.7\Microsoft.SharePoint.Client.dll" Add-Type -Path "\Software\SharePoint 2013 Client Browser v1.7\Microsoft.SharePoint.Client.Runtime.dll" $Username = Read-Host -Prompt "Please enter your username" $Password = Read-Host -Prompt "Please enter your password" -AsSecureString $Site = "https://XXXXXXX.sharepoint.com/sites/Test2/" $Context = New-Object Microsoft.SharePoint.Client.ClientContext($Site) $Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username,$Password) $Context.Credentials = $Creds $csvLocation = "C:\Users\PS_SiteCollectionsToCreate.csv" $csv = Import-Csv $csvLocation #List Custom Templates $Templates = $Context.Site.GetWebTemplates("1033","0") $Context.Load($Templates) $Context.ExecuteQuery() $Templates | Whe...

Create bulk Sub site Using power shell script using custom SharePoint template

#Add references to SharePoint client assemblies and authenticate to Office 365 site Add-Type -Path "\Software\SharePoint 2013 Client Browser v1.7\Microsoft.SharePoint.Client.dll" Add-Type -Path "\Software\SharePoint 2013 Client Browser v1.7\Microsoft.SharePoint.Client.Runtime.dll" $Username = Read-Host -Prompt "Please enter your username" $Password = Read-Host -Prompt "Please enter your password" -AsSecureString $Site = "https://xxxx.sharepoint.com/sites/sPOTest2/" $Context = New-Object Microsoft.SharePoint.Client.ClientContext($Site) $Creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Username,$Password) $Context.Credentials = $Creds $csvLocation = "C:\Users\AA82211\Desktop\PS_SiteCollectionsToCreate.csv" $csv = Import-Csv $csvLocation #List Custom Templates $Templates = $Context.Site.GetWebTemplates("1033","0") $Context.Load($Templates) $Context.ExecuteQuery() $...

Business-critical processes with SharePoint and SQL

SharePoint 2010 provides the ability to connect to backend business systems, surface business data in SharePoint and make it accessible by, and useful to, employees across the organization. Almost every company of significant size uses ERP and CRM solutions to run core business processes. Over time, companies have developed detailed practices around using such systems to support vertical disciplines within the organization (e.g. product planning, financial performance management, supply-chain management, etc.),  yet challenges remain with regard to driving visibility and collaboration, based on business data, across different disciplines and teams. These challenges stem from the fact that only a fraction of employees are licensed and trained to use those backend systems, and from the high cost and complexity of integrating such systems across different functions and teams. With SharePoint and SQL, once the relevant business data is surfaced in an enterprise-wide...