Code covered by the BSD License  

Highlights from
System locale information

from System locale information by Nikolay Chumerin
Returns system locale information.

get_system_locale
function [locale_short_string LCID_hex_string LCID_value locale_description] = get_system_locale
% function [LOCALE_SHORT_STRING LCID_HEX_STRING LCID_VALUE LOCALE_DESCRIPTION] = GET_SYSTEM_LOCALE
% Returns system locale information. Tested on Windows XP and Linux.
%
% INPUT:
%   none
% 
% OUTPUT:
%   LOCALE_SHORT_STRING - locale short string, in lower case and separated by underscore
%   LCID_HEX_STRING     - locale ID hexadecimal value string
%   LCID_VALUE          - locale ID value as a double
%   LOCALE_DESCRIPTION  - locale description string
%   
% EXAMPLE:
%   On my laptop
%   [locale_short_string LCID_hex_string LCID_value locale_description] = get_system_locale;
%   returns 
%   locale_short_string = 'ru_ru'
%   LCID_hex_string = '0419'
%   LCID_value = 1049
%   locale_description = 'Russian - Russia'
%
% Developed by Nikolay Chumerin
% http://sites.google.com/site/chumerin
%
% Last update: 2009-09-27

    LCID_table = {'0401',	'ar_sa',	'Arabic - Saudi Arabia'
            '0402',	'bg',       'Bulgarian - Bulgaria'
            '0403',	'ca',       'Catalan - Spain'
            '0404',	'zh_tw',	'Chinese - Taiwan (Traditional)'
            '0405',	'cs',       'Czech - Czech Republic'
            '0406',	'da',       'Danish - Denmark'
            '0407',	'de_de',	'German - Germany'
            '0408',	'el',       'Greek'
            '0409',	'en_us',	'English - United States'
            '040A',	'es_es',	'Spanish - Spain'
            '040A',	'es_es',    'Spanish - Spain'
            '040B',	'fi',       'Finnish - Finland'
            '040C',	'fr_fr',	'French - France'
            '040D',	'he',       'Hebrew - Israel'
            '040E',	'hu',       'Hungarian - Hungary'
            '040F',	'is',       'Icelandic - Iceland'
            '0410',	'it_it',	'Italian - Italy'
            '0411',	'ja',       'Japanese - Japan'
            '0412',	'ko',       'Korean (Extended Wansung) - Korea'
            '0413',	'nl_nl',	'Dutch  The Netherlands'
            '0414',	'no_no',	'Norwegian - Bokml'
            '0415',	'pl',       'Polish - Poland'
            '0416',	'pt_br',	'Portuguese - Brazil'
            '0417',	'rm',       'Raeto - Romance'
            '0418',	'ro',       'Romanian - Romania'
            '0419',	'ru_ru',	'Russian - Russia'
            '041A',	'hr',       'Croatian - Croatia'
            '041B',	'sk',       'Slovak - Slovakia'
            '041C',	'sq',       'Albanian'
            '041D',	'sv_se',	'Swedish - Sweden'
            '041E',	'th',       'Thai - Thailand'
            '041F',	'tr',       'Turkish - Turkey'
            '0420',	'ur',       'Urdu - Pakistan'
            '0421',	'id',       'Indonesian - Indonesia'
            '0422',	'uk',       'Ukrainian - Ukraine'
            '0423',	'be',       'Belarusian - Belarus'
            '0424',	'sl',       'Slovenian - Slovena'
            '0425',	'et',       'Estonian - Estonia'
            '0426',	'lv',       'Latvian - Latvia'
            '0427',	'lt',       'Lithuanian'
            '0429',	'fa',       'Farsi - Iran'
            '042A',	'vi',       'Vietnamese - Vietnam'
            '042B',	'hy',       'Armenian - Armenia'
            '042C',	'az_az',	'Azeri  Latin'
            '042D',	'eu',       'Basque - Spain'
            '042E',	'sb',       'Sorbian'
            '042F',	'mk',       'F.Y.R.O. Macedonia'
            '0430',	'sx',       'Sutu'
            '0431',	'ts',       'Tsonga'
            '0432',	'tn',       'Setsuana'
            '0434',	'xh',       'Xhosa'
            '0435',	'zu',       'Zulu'
            '0436',	'af',       'Afrikaans - South Africa'
            '0438',	'fo',       'Farsi - Iran'
            '0439',	'hi',       'Hindi - India'
            '043A',	'mt',       'Maltese'
            '043C',	'gd',       'Gaelic - Scotland'
            '043D',	'yi',       'Yiddish'
            '043E',	'ms_my',	'Malay - Malaysia'
            '0441',	'sw',       'Swahili - Kenya'
            '0443',	'uz_uz',	'Uzbek  Uzbekistan (Latin)'
            '0444',	'tt',       'Tatar - Tatarstan'
            '0449',	'ta',       'Tamil'
            '044E',	'mr',       'Marathi - India'
            '044F',	'sa',       'Sanskrit - India'
            '0801',	'ar_iq',	'Arabic - Iraq'
            '0804',	'zh_cn',	'Chinese - China'
            '0807',	'de_ch',	'German - Switzerland'
            '0809',	'en_gb',	'English - United Kingdom'
            '080A',	'es_mx',	'Spanish - Mexico'
            '080C',	'fr_be',	'French - Belgium'
            '0810',	'it_ch',	'Italian - Switzerland'
            '0813',	'nl_be',	'Dutch - Belgium'
            '0814',	'no_no',	'Norwegian  Norway (Nynorsk)'
            '0816',	'pt_pt',	'Portuguese - Portugal'
            '0818',	'ro_mo',	'Romanian - Moldova'
            '0819',	'ru_mo',	'Russian - Moldova'
            '081A',	'sr_sp',	'Serbian  Serbia (Latin)'
            '081D',	'sv_fi',	'Swedish - Finland'
            '082C',	'az_az',	'Azeri  Cyrillic'
            '083C',	'gd_ie',	'Gaelic  Ireland'
            '083E',	'ms_bn',	'Malay  Brunei Darussalam'
            '0843',	'uz_uz',	'Uzbek  Uzbekistan (Cyrillic)'
            '0C01',	'ar_eg',	'Arabic - Egypt'
            '0C04',	'zh_hk',	'Chinese - Hong Kong S.A.R.'
            '0C07',	'de_at',	'German - Austria'
            '0C09',	'en_au',	'English - Australia'
            '0C0C',	'fr_ca',	'French - Canada'
            '0C1A',	'sr_sp',	'Serbian - Serbia (Cyrillic)'
            '1001',	'ar_ly',	'Arabic - Libya'
            '1004',	'zh_sg',	'Chinese - Singapore'
            '1007',	'de_lu',	'German - Luxembourg'
            '1009',	'en_ca',	'English - Canada'
            '100A',	'es_gt',	'Spanish - Guatemala'
            '100C',	'fr_ch',	'French - Switzerland'
            '1401',	'ar_dz',	'Arabic - Algeria'
            '1404',	'zh_mo',	'Chinese  Macau S.A.R.'
            '1407',	'de_li',	'German - Liechtenstein'
            '1409',	'en_nz',	'English - New Zealand'
            '140A',	'es_cr',	'Spanish - Costa Rica'
            '140C',	'fr_lu',	'French - Luxembourg'
            '1801',	'ar_ma',	'Arabic - Morocco'
            '1809',	'en_ie',	'English - Ireland'
            '180A',	'es_pa',	'Spanish - Panama'
            '1C01',	'ar_tn',	'Arabic - Tunisia'
            '1C09',	'en_za',	'English - South Africa'
            '1C0A',	'es_do',	'Spanish - Dominican Republic'
            '2001',	'ar_om',	'Arabic - Oman'
            '2009',	'en_jm',	'English - Jamaica'
            '200A',	'es_ve',	'Spanish - Venezuela'
            '2401',	'ar_ye',	'Arabic - Yemen'
            '2409',	'en_cb',	'English  Carribbean'
            '240A',	'es_co',	'Spanish - Colombia'
            '2801',	'ar_sy',	'Arabic - Syria'
            '2809',	'en_bz',	'English - Belize'
            '280A',	'es_pe',	'Spanish - Peru'
            '2C01',	'ar_jo',	'Arabic - Jordan'
            '2C09',	'en_tt',	'English - Trinidad'
            '2C0A',	'es_ar',	'Spanish - Argentina'
            '3001',	'ar_lb',	'Arabic - Lebanon'
            '300A',	'es_ec',	'Spanish - Ecuador'
            '3401',	'ar_kw',	'Arabic - Kuwait'
            '3409',	'en_ph',	'English  Phillippines'
            '340A',	'es_cl',	'Spanish - Chile'
            '3801',	'ar_ae',	'Arabic  United Arab Emirates'
            '380A',	'es_uy',	'Spanish - Uruguay'
            '3C01',	'ar_bh',	'Arabic - Bahrain'
            '3C0A',	'es_py',	'Spanish - Paraguay'
            '4001',	'ar_qa',	'Arabic - Qatar'
            '400A',	'es_bo',	'Spanish - Bolivia'
            '440A',	'es_sv',	'Spanish - El Salvador'
            '480A',	'es_hn',	'Spanish - Honduras'
            '4C0A',	'es_ni',	'Spanish - Nicaragua'
            '500A',	'es_pr',	'Spanish - Puerto Rico'
            };
        
    if ispc,
        [s s] = system('reg query "HKCU\Control Panel\International" /v Locale'); %#ok<*ASGLU>
        ind = strfind(s, '0000');
        LCID_hex_string = upper(s(ind+4:ind+7));
        ind = find(strncmp( LCID_table(:,1), LCID_hex_string, length(LCID_hex_string) ), 1);
        locale_short_string = LCID_table{ind,2};
    else
        [s s] = system('locale | grep LANG');
        locale_short_string = lower(s(6:find(s=='.')-1));
        ind = find(strncmp( LCID_table(:,2), locale_short_string, length(locale_short_string)), 1);
        LCID_hex_string = LCID_table{ind,1};
    end
    
    locale_description = LCID_table{ind,3};
    LCID_value = hex2dec(LCID_hex_string);
    
end % of function GET_SYSTEM_LOCALE

Contact us at files@mathworks.com