17

Is it possible to get the display language from within ECMAScript? Similar to Get the current UI language from a webpart, I'd like to get the user's display language, however I want to access it with the Client Object Model in JavaScript (http://msdn.microsoft.com/en-us/library/ee538253.aspx). Is it somehow possible to access the System.Threading namespace? Or are there any other possibilities?

28

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").

  • Great, thanks a lot Wictor! Both are working perfectly! – Modery Nov 10 '10 at 14:42
  • 1
    Great, Wictor! Is it possible to convert lcid to culture name in javascript? like 1033-> en-us, 1053 -> sv-se? – Anatoly Mironov Feb 16 '12 at 15:44
  • 2
    Another option is to directly use the 'L_Menu_LCID' variable in page. More here: vrdmn.blogspot.in/2011/08/… – Vardhaman Deshpande Oct 29 '12 at 16:54
  • 1
    _spPageContextInfo.currentUICultureName will give you en-US – Aslan Mar 13 '18 at 20:18
5

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')

3

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');
0

When using the Bing translation, the methods above didn't work (the values don't get updated when the language is changed).

What worked for me was

LanguagePicker.currentLang

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.