Name

global.LanguageRegionProvider

Description

Returns a structured list of valid selectable languages. Intended for populating language picker modal in the UI.

Script

var LanguageRegionProvider = Class.create();
LanguageRegionProvider.prototype = {
  initialize: function() {
  },

  get: function() {
  	var result = {};
  	var ga = new GlideAggregate("sys_language");
  	ga.addQuery('active',true);
  	ga.addAggregate('COUNT');
  	ga.query();
  	if(ga.next()){
  		if(ga.getAggregate('COUNT')<=1)
  			return {};
  	}
  	
  	var language_region = new GlideRecord('sys_language_region');
  	language_region.query();
  	if (language_region.hasNext()) {
  		result.regions = [];
  		while (language_region.next()) {
  			if (language_region.getElement('language').getRefRecord().getValue('active') == true) {
  				var found = false;
  				for (var i = 0; i < result.regions.length; i++) {
  					if (result.regions[i].region == language_region.getElement('region').getRefRecord().getDisplayValue('region')) {
  						result.regions[i].languages.push({
                              display_label: language_region.getElement('language').getRefRecord().getValue('display_label'),
  							id: language_region.getElement('language').getRefRecord().getValue('id')
  						});
  						found = true;
  						break;
  					}
  				}
  				if (!found) {
  					result.regions.push({
  						region: language_region.getElement('region').getRefRecord().getDisplayValue('region'),
                          order: language_region.getElement('region').getRefRecord().getValue('order'),
  						languages: [{
                              display_label: language_region.getElement('language').getRefRecord().getValue('display_label'),
  							id: language_region.getElement('language').getRefRecord().getValue('id')
  						}]
  					});
  				}
  			}
  		}
  	} else {
  		var language = new GlideRecord('sys_language');
          result.languages = [];
  		language.addActiveQuery();
  		language.query();
  		while (language.next()) {
  			result.languages.push({
  				display_label: language.getValue('display_label'),
  				id: language.getValue('id')
  			});
  		}
  	}
  	
  	return result;
  },

  type: 'LanguageRegionProvider'
};

Sys ID

bf98d1a8eb310110cf2dcd016d52283c

Offical Documentation

Official Docs: