Sharepoint - Get the current UI language with ECMAScript

You have two easy ways to get the LCID in SP JavaScript

  1. var lcid =_spPageContextInfo.currentLanguage;
  2. var lcid = SP.Res.lcid;

Note that option 1 returns an int (i.e. 1033) and option 2 return a string (i.e. "1053").


In my case I needed to know the language before the SharePoint javascript libraries are loaded in order to hide elements before they are shown on the screen (not possible with _spBodyOnLoadFunctionNames).

Turns out SharePoint sets the lang attribute of the root HTML element according to the language and as a bonus it's already translated to the "en-us" format.

This is done with a simple call to document.getElementsByTagName('html')[0].getAttribute('lang')


Yet another ways to determine LCID in SP via JavaScript

1 Global variable g_wsaLCID:

var lcid = g_wsaLCID;

2 Language property of Web client object via CSOM (JavaScript)

function getWebLocale(complete) {

    var context = SP.ClientContext.get_current();
    var web = context.get_web();

    context.load(web);
    context.executeQueryAsync(
                function(sender, args){
                    var lcid = web.get_language(); //returns LCID
                    return complete(lcid); 
                }, 
                function(sender, args){
                    complete(-1);
                });
}      

//Usage
function printWebLanguageSettings(){ 
    getWebLocale(function(lcid){
       console.log(lcid);
    });
}    
SP.SOD.executeOrDelayUntilScriptLoaded(printWebLanguageSettings, 'sp.js');

Tags:

Javascript