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?

4 Answers 4

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

4
  • Great, thanks a lot Wictor! Both are working perfectly!
    – Modery
    Commented Nov 10, 2010 at 14:42
  • 1
    Great, Wictor! Is it possible to convert lcid to culture name in javascript? like 1033-> en-us, 1053 -> sv-se? Commented Feb 16, 2012 at 15:44
  • 2
    Another option is to directly use the 'L_Menu_LCID' variable in page. More here: vrdmn.blogspot.in/2011/08/… Commented Oct 29, 2012 at 16:54
  • 1
    _spPageContextInfo.currentUICultureName will give you en-US
    – Aslan
    Commented Mar 13, 2018 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 and acknowledge you have read our privacy policy.

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