Merge remote-tracking branch 'origin/master' into yasp 57/10857/2
Antoine ELIAS [Fri, 15 Mar 2013 14:26:49 +0000 (15:26 +0100)]
Conflicts:
scilab/modules/atoms/tests/unit_tests/atomsRemove.tst
scilab/modules/development_tools/macros/test_run.sci
scilab/modules/localization/src/c/setgetlanguage.c
scilab/modules/localization/src/c/tableslanguages.h

Change-Id: I2dc6c0c7c4556cf254dee9658b0a0420af6693b0

1  2 
scilab/modules/atoms/tests/unit_tests/atomsIsLoaded.tst
scilab/modules/development_tools/macros/test_run.sci
scilab/modules/helptools/helptools.iss
scilab/modules/helptools/src/java/org/scilab/modules/helptools/image/ScilabImageConverter.java
scilab/modules/localization/src/c/setgetlanguage.c
scilab/modules/localization/src/c/tableslanguages.h

@@@ -318,353 -317,358 +318,359 @@@ endfunctio
  
  
  function status = test_module(_params)
 -    name = splitModule(_params.moduleName);
 -
 -    if with_module(name(1)) then
 -        // It's a scilab internal module
 -        module.path = pathconvert(SCI + "/modules/" + name(1), %F);
 -    elseif or(librarieslist() == "atomslib") & atomsIsLoaded(name(1)) then
 -        // It's an ATOMS module
 -        module.path = pathconvert(atomsGetLoadedPath(name(1)) , %F, %T);
 -    elseif isdir(name(1)) then
 -        // It's an external module
 -        module.path = pathconvert(name(1), %F);
 -    else
 -        // It's an error
 -        error(sprintf(gettext("%s is not an installed module or toolbox"), name(1)));
 +  name = splitModule(_params.moduleName);
 +
 +  if with_module(name(1)) then
 +// It's a scilab internal module
 +    module.path = pathconvert(SCI + "/modules/" + name(1), %F);
 +  //no have librarieslist in scilab 6 yet
 +  //  elseif or(librarieslist() == "atomslib") & atomsIsLoaded(name(1)) then
 +// It's an ATOMS module
 +    //module.path = pathconvert(atomsGetLoadedPath(name(1)) , %F, %T);
 +  elseif isdir(name(1)) then
 +// It's an external module
 +    module.path = pathconvert(name(1), %F);
 +  else
 +// It's an error
 +    error(sprintf(gettext("%s is not an installed module or toolbox"), name(1)));
 +  end
 +
 +  //get tests from path
 +  my_types = ["unit_tests","nonreg_tests"];
 +
 +  directories = [];
 +  for i=1:size(my_types,"*")
 +    if (_params.testTypes == "all_tests") | (_params.testTypes == my_types(i)) then
 +      directory_path = module.path + "/tests/" + my_types(i);
 +      for j=2:size(name,"*")
 +        directory_path = directory_path + filesep() + name(j);
 +      end
 +
 +      if isdir(directory_path) then
 +        directories = [directories;getDirectories(directory_path + filesep())];
 +      end
      end
 +  end
  
 -    //get tests from path
 -    my_types = ["unit_tests","nonreg_tests"];
 +  tests = [];
 +  if( _params.tests_mat == [])
 +    for i=1:size(directories, "*")
 +      currentDir = directories(i);
 +      tests_mat = gsort(basename(listfiles(currentDir + filesep() + "*.tst")),"lr","i");
  
 -    directories = [];
 -    for i=1:size(my_types,"*")
 -        if (_params.testTypes == "all_tests") | (_params.testTypes == my_types(i)) then
 -            directory_path = module.path + "/tests/" + my_types(i);
 -            for j=2:size(name,"*")
 -                directory_path = directory_path + filesep() + name(j);
 -            end
 -
 -            if isdir(directory_path) then
 -                directories = [directories;getDirectories(directory_path + filesep())];
 -            end
 +      for j = 1:size(tests_mat, "*")
 +        if or(tests_mat(j) == _params.skip_mat) == %f then
 +          tests($+1, [1,2]) = [currentDir, tests_mat(j)];
          end
 +      end
      end
 -
 -    tests = [];
 -    if( _params.tests_mat == [])
 -        for i=1:size(directories, "*")
 -            currentDir = directories(i);
 -            tests_mat = gsort(basename(listfiles(currentDir + filesep() + "*.tst")),"lr","i");
 -
 -            for j = 1:size(tests_mat, "*")
 -                if or(tests_mat(j) == _params.skip_mat) == %f then
 -                    tests($+1, [1,2]) = [currentDir, tests_mat(j)];
 -                end
 -            end
 -        end
 -    else
 -        //not empty tests_mat
 -        for i = 1:size(_params.tests_mat, "*")
 -            bFind = %f;
 -            for j = 1:size(directories, "*")
 -                currentDir = directories(j);
 -                testFile = currentDir + filesep() + _params.tests_mat(i) + ".tst";
 -                if isfile(testFile) then
 -                    tests($+1, [1,2]) = [currentDir, _params.tests_mat(i)];
 -                    bFind = %t;
 -                end
 -            end
 -
 -            if bFind == %f then
 -                error(sprintf(gettext("The test ""%s"" is not available from the ""%s"" module"), _params.tests_mat(i), name(1)));
 -            end
 +  else
 +    //not empty tests_mat
 +    for i = 1:size(_params.tests_mat, "*")
 +      bFind = %f;
 +      for j = 1:size(directories, "*")
 +        currentDir = directories(j);
 +        testFile = currentDir + filesep() + _params.tests_mat(i) + ".tst";
 +        if isfile(testFile) then
 +          tests($+1, [1,2]) = [currentDir, _params.tests_mat(i)];
 +          bFind = %t;
          end
 -    end
 +      end
  
 -    //initialize counter
 -    detailled_failures      = "";
 -    test_count          = size(tests, "r");
 -    test_passed_count   = 0;
 -    test_failed_count   = 0;
 -    test_skipped_count  = 0;
 -
 -    moduleName          = _params.moduleName;
 -    // Improve the display of the module
 -    if isdir(moduleName) then
 -        if part(moduleName,1:length(SCI)) == SCI then
 -            moduleName = "SCI" + part(moduleName,length(SCI)+1:length(moduleName));
 -        elseif part(moduleName,1:length(SCIHOME)) == SCIHOME then
 -            moduleName = "SCIHOME" + part(moduleName,length(SCIHOME)+1:length(moduleName));
 -        end
 +      if bFind == %f then
 +        error(sprintf(gettext("The test ""%s"" is not available from the ""%s"" module"), _params.tests_mat(i), name(1)));
 +      end
      end
 -
 -    // For the XML export
 -    testsuite.name=moduleName
 -    testsuite.time=0
 -    testsuite.tests=0
 -    testsuite.errors=0
 -
 -    //don't test only return list of tests.
 -    if _params.reference == "list" then
 -        for i = 1:test_count
 -            if size(name, "*") > 1 then
 -                displayModuleName = sprintf("%s", name(1));
 -                for j=2:size(name, "*")
 -                    displayModuleName = displayModuleName + sprintf("|%s", name(j));
 -                end
 -            else
 -                displayModuleName = sprintf("%s", name(1));
 -            end
 -            tests(i,1) = displayModuleName;
 -        end
 -        status.list         = tests;
 -        status.test_count   = test_count;
 -        return;
 +  end
 +
 +  //initialize counter
 +  detailled_failures      = "";
 +  test_count          = size(tests, "r");
 +  test_passed_count   = 0;
 +  test_failed_count   = 0;
 +  test_skipped_count  = 0;
 +
 +  moduleName          = _params.moduleName;
 +// Improve the display of the module
 +  if isdir(moduleName) then
 +    if part(moduleName,1:length(SCI)) == SCI then
 +      moduleName = "SCI" + part(moduleName,length(SCI)+1:length(moduleName));
 +    elseif part(moduleName,1:length(SCIHOME)) == SCIHOME then
 +      moduleName = "SCIHOME" + part(moduleName,length(SCIHOME)+1:length(moduleName));
      end
 +  end
  
 -    tic();
 -    for i = 1:test_count
 -        printf("   %03d/%03d - ",i, test_count);
 -
 -        if size(name, "*") > 1 then
 -            displayModuleName = sprintf("[%s", name(1));
 -            for j=2:size(name, "*")
 -                displayModuleName = displayModuleName + sprintf("|%s", name(j));
 -            end
 -            displayModuleName = displayModuleName + sprintf("] %s", tests(i,2));
 -        else
 -            displayModuleName = sprintf("[%s] %s", name(1), tests(i,2));
 -        end
 +  // For the XML export
 +  //testsuite.name=moduleName
 +  //testsuite.time=0
 +  //testsuite.tests=0
 +  //testsuite.errors=0
  
 -        printf("%s", displayModuleName);
 -        if length(displayModuleName) >= 50 then
 -            printf(" ");
 -        end
 -        for j = length(displayModuleName):50
 -            printf(".");
 -        end
 -
 -        result = test_single(_params, tests(i,1), tests(i,2));
 -
 -        testsuite.tests = testsuite.tests + 1
 -
 -        testsuite.testcase(i).name=tests(i,2);
 -        //    testsuite.testcase(i).time= DONT HAVE YET
 -
 -        if result.id == 0 then
 -            printf("passed\n");
 -            test_passed_count = test_passed_count + 1;
 -        else
 -            msg = sprintf(result.message);
 -            printf("%s \n", msg(1));
 -            for kline = 2:size(msg, "*")
 -                printf(part(" ", 1:62) + "%s \n", msg(2));
 -            end
 -
 -            if result.id < 10 then
 -                //failed
 -                test_failed_count = test_failed_count + 1;
 -                detailled_failures = [ detailled_failures ; sprintf("   TEST : [%s] %s", _params.moduleName, tests(i,2))];
 -                detailled_failures = [ detailled_failures ; sprintf("   %s", result.message) ];
 -                detailled_failures = [ detailled_failures ; result.details ];
 -                detailled_failures = [ detailled_failures ; "" ];
 -
 -                testsuite.errors = testsuite.errors + 1
 -                testsuite.testcase(i).failure.type=result.message
 -                testsuite.testcase(i).failure.content=result.details
 -
 -            elseif (result.id >= 10) & (result.id < 20) then
 -                // skipped
 -                test_skipped_count = test_skipped_count + 1;
 -            end
 +  //don't test only return list of tests.
 +  if _params.reference == "list" then
 +    for i = 1:test_count
 +      if size(name, "*") > 1 then
 +        displayModuleName = sprintf("%s", name(1));
 +        for j=2:size(name, "*")
 +          displayModuleName = displayModuleName + sprintf("|%s", name(j));
          end
 +      else
 +        displayModuleName = sprintf("%s", name(1));
 +      end
 +      tests(i,1) = displayModuleName;
      end
 -
 -    status.totalTime = toc();
 -
 -    testsuite.time=status.totalTime;
 -
 -    clearglobal TICTOC;
 -    status.test_passed_count  = test_passed_count;
 -    status.test_failed_count  = test_failed_count;
 -    status.test_skipped_count = test_skipped_count;
 -
 -    // Summary
 -    status.test_count     = test_count;
 -    status.detailled_failures   = detailled_failures;
 -    status.testsuite   = testsuite;
 -endfunction
 -
 -function status = test_single(_module, _testPath, _testName)
 -    //option flag
 -
 -    skip          = %F;
 -    interactive   = %F;
 -    notyetfixed   = %F;
 -    longtime      = %F;
 -    reopened      = %F;
 -    jvm           = %T;
 -    graphic       = %F;
 -    execMode      = "";
 -    platform      = "all";
 -    language      = "any";
 -    try_catch     = %T;
 -    error_output  = "check";
 -    reference     = "check";
 -    xcosNeeded    = %F;
 -
 -    //some paths
 -    tmp_tst     = pathconvert( TMPDIR + "/" + _testName + ".tst", %F);
 -    tmp_dia     = pathconvert( TMPDIR + "/" + _testName + ".dia.tmp", %F);
 -    tmp_res     = pathconvert( TMPDIR + "/" + _testName + ".res", %F);
 -    tmp_err     = pathconvert( TMPDIR + "/" + _testName + ".err", %F);
 -    path_dia    = pathconvert( TMPDIR + "/" + _testName + ".dia", %F);
 -
 -    path_dia_ref  = _testPath + _testName + ".dia.ref";
 -    // Reference file management OS by OS
 -    if getos() == "Windows" then
 -        altreffile  = [ _testPath + _testName + ".win.dia.ref" ];
 -    elseif getos() == "Darwin" then
 -        altreffile  = [ _testPath + _testName + ".unix.dia.ref" ; _testPath + _testName + ".macosx.dia.ref" ];
 -    elseif getos() == "Linux" then
 -        altreffile  = [ _testPath + _testName + ".unix.dia.ref" ; _testPath + _testName + ".linux.dia.ref" ];
 +    status.list         = tests;
 +    status.test_count   = test_count;
 +    return;
 +  end
 +
 +  tic();
 +  for i = 1:test_count
 +    printf("   %03d/%03d - ",i, test_count);
 +
 +    if size(name, "*") > 1 then
 +      displayModuleName = sprintf("[%s", name(1));
 +      for j=2:size(name, "*")
 +        displayModuleName = displayModuleName + sprintf("|%s", name(j));
 +      end
 +      displayModuleName = displayModuleName + sprintf("] %s", tests(i,2));
      else
 -        altreffile  = [ _testPath + _testName + ".unix.dia.ref" ];
 -    end
 -
 -    for i=1:size(altreffile,"*")
 -        if isfile(altreffile(i)) then
 -            path_dia_ref = altreffile(i);
 -        end
 +      displayModuleName = sprintf("[%s] %s", name(1), tests(i,2));
      end
  
 -    //output structure
 -    status.id = 0;
 -    status.message = "";
 -    status.details = "";
 -
 -    //Reset standard globals
 -    rand("seed",0);
 -    rand("uniform");
 -
 -    //load file
 -    testFile = _testPath + _testName + ".tst";
 -    sciFile = mgetl(testFile);
 -
 -    //read options
 -    if ~isempty(grep(sciFile, "<-- NOT FIXED -->")) then
 -        status.id = 10;
 -        status.message = "skipped: not yet fixed";
 -        return;
 +    printf("%s", displayModuleName);
 +    if length(displayModuleName) >= 50 then
 +      printf(" ");
      end
 -
 -    if ~isempty(grep(sciFile, "<-- REOPENED -->")) then
 -        status.id = 10;
 -        status.message = "skipped: Bug reopened";
 -        return;
 +    for j = length(displayModuleName):50
 +      printf(".");
      end
  
 -    // platform
 -    if ~isempty(grep(sciFile, "<-- WINDOWS ONLY -->")) & getos() <> "Windows" then
 -        status.id = 10;
 -        status.message = "skipped: Windows only";
 -        return;
 -    end
 -
 -    if ~isempty(grep(sciFile, "<-- UNIX ONLY -->")) & getos() == "Windows" then
 -        status.id = 10;
 -        status.message = "skipped: Unix only";
 -        return;
 -    end
 +    result = test_single(_params, tests(i,1), tests(i,2));
  
 -    if ~isempty(grep(sciFile, "<-- LINUX ONLY -->")) & getos() <> "Linux" then
 -        status.id = 10;
 -        status.message = "skipped: Linux only";
 -        return;
 -    end
 +    //testsuite.tests = testsuite.tests + 1
 +    //testsuite.testcase(i).name=tests(i,2);
 +////    testsuite.testcase(i).time= DONT HAVE YET
  
 -    if ~isempty(grep(sciFile, "<-- MACOSX ONLY -->")) & getos() <> "Darwin" then
 -        status.id = 10;
 -        status.message = "skipped: MacOSX only";
 -        return;
 -    end
 -
 -    // Test execution
 -    if ~isempty(grep(sciFile, "<-- INTERACTIVE TEST -->")) then
 -        status.id = 10;
 -        status.message = "skipped: interactive test";
 -        return;
 -    end
 -
 -    if ~isempty(grep(sciFile, "<-- LONG TIME EXECUTION -->")) & ~_module.longtime then
 -        status.id = 10;
 -        status.message = "skipped: Long time duration";
 -        return;
 -    end
 -
 -    if ~isempty(grep(sciFile, "<-- TEST WITH GRAPHIC -->")) then
 -        if _module.wanted_mode == "NWNI" then
 -            status.id = 10;
 -            status.message = "skipped: Test with graphic";
 -            return;
 -        end
 -
 -        graphic = %T;
 -        jvm = %T;
 -        execMode = "NW";
 -    end
 -
 -    if (~isempty(grep(sciFile, "<-- JVM NOT MANDATORY -->")) | ~isempty(grep(sciFile, "<-- CLI SHELL MODE -->"))) then
 -        jvm = %F;
 -        execMode = "NWNI";
 +    if result.id == 0 then
 +      printf("passed\n");
 +      test_passed_count = test_passed_count + 1;
 +    else
 +      msg = sprintf(result.message);
 +      printf("%s \n", msg(1));
 +      for kline = 2:size(msg, "*")
 +        printf(part(" ", 1:62) + "%s \n", msg(2));
 +      end
 +
 +      if result.id < 10 then
 +        //failed
 +        test_failed_count = test_failed_count + 1;
 +        detailled_failures = [ detailled_failures ; sprintf("   TEST : [%s] %s", _params.moduleName, tests(i,2))];
 +        detailled_failures = [ detailled_failures ; sprintf("   %s", result.message) ];
 +        detailled_failures = [ detailled_failures ; result.details ];
 +        detailled_failures = [ detailled_failures ; "" ];
 +
 +        //testsuite.errors = testsuite.errors + 1
 +        //testsuite.testcase(i).failure.type=result.message
 +        //testsuite.testcase(i).failure.content=result.details
 +
 +      elseif (result.id >= 10) & (result.id < 20) then
 +// skipped
 +        test_skipped_count = test_skipped_count + 1;
 +      end
      end
 +  end
  
 -    if ~isempty(grep(sciFile, "<-- XCOS TEST -->")) then
 -        if _module.wanted_mode == "NWNI" then
 -            status.id = 10;
 -            status.message = "skipped: Test with xcos";
 -            return;
 -        end
 -        xcosNeeded = %T;
 -        jvm = %T;
 -    end
 +  status.totalTime = toc();
  
 -    // Language
 -    if ~isempty(grep(sciFile, "<-- FRENCH IMPOSED -->")) then
 -        language = "fr_FR";
 -    end
 +  //testsuite.time=status.totalTime;
  
 +  clearglobal TICTOC;
 +  status.test_passed_count  = test_passed_count;
 +  status.test_failed_count  = test_failed_count;
 +  status.test_skipped_count = test_skipped_count;
  
 -    if ~isempty(grep(sciFile, "<-- ENGLISH IMPOSED -->")) then
 -        language = "en_US";
 -    end
 +// Summary
 +  status.test_count     = test_count;
 +  status.detailled_failures   = detailled_failures;
 +  //status.testsuite   = testsuite;
 +endfunction
  
 -    // Test building
 -    if ~isempty(grep(sciFile, "<-- NO TRY CATCH -->")) then
 -        try_catch = %F;
 +function status = test_single(_module, _testPath, _testName)
 +//option flag
 +
 +  skip          = %F;
 +  interactive   = %F;
 +  notyetfixed   = %F;
 +  longtime      = %F;
 +  reopened      = %F;
 +  jvm           = %T;
 +  graphic       = %F;
 +  execMode      = "";
 +  platform      = "all";
 +  language      = "any";
 +  //try_catch     = %T; // Scilab 5.4.0
 +  try_catch     = %f;
 +  error_output  = "check";
 +  reference     = "check";
 +  xcosNeeded    = %F;
 +
 +  //some paths
 +  tmp_tst     = pathconvert( TMPDIR + "/" + _testName + ".tst", %F);
 +  tmp_dia     = pathconvert( TMPDIR + "/" + _testName + ".dia.tmp", %F);
 +  tmp_res     = pathconvert( TMPDIR + "/" + _testName + ".res", %F);
 +  tmp_err     = pathconvert( TMPDIR + "/" + _testName + ".err", %F);
 +  path_dia    = pathconvert( TMPDIR + "/" + _testName + ".dia", %F);
 +
 +  path_dia_ref  = _testPath + _testName + ".dia.ref";
 +// Reference file management OS by OS
 +  if getos() == 'Windows' then
 +    altreffile  = [ _testPath + _testName + ".win.dia.ref" ];
 +  elseif getos() == 'Darwin' then
 +    altreffile  = [ _testPath + _testName + ".unix.dia.ref" ; _testPath + _testName + ".macosx.dia.ref" ];
 +  elseif getos() == 'Linux' then
 +    altreffile  = [ _testPath + _testName + ".unix.dia.ref" ; _testPath + _testName + ".linux.dia.ref" ];
 +  else
 +    altreffile  = [ _testPath + _testName + ".unix.dia.ref" ];
 +  end
 +
 +  for i=1:size(altreffile,"*")
 +    if isfile(altreffile(i)) then
 +      path_dia_ref = altreffile(i);
      end
 -
 -    // Test result
 -    if ~isempty(grep(sciFile, "<-- NO CHECK ERROR OUTPUT -->")) then
 -        error_output = "skip";
 +  end
 +
 +  //output structure
 +  status.id = 0;
 +  status.message = "";
 +  status.details = "";
 +
 +  //Reset standard globals
 +  rand("seed",0);
 +  rand("uniform");
 +
 +  //load file
 +  testFile = _testPath + _testName + ".tst";
 +  sciFile = mgetl(testFile);
 +
 +  //read options
 +  if ~isempty(grep(sciFile, "<-- NOT FIXED -->")) then
 +    status.id = 10;
 +    status.message = "skipped: not yet fixed";
 +    return;
 +  end
 +
 +  if ~isempty(grep(sciFile, "<-- REOPENED -->")) then
 +    status.id = 10;
 +    status.message = "skipped: Bug reopened";
 +    return;
 +  end
 +
 +// platform
 +  if ~isempty(grep(sciFile, "<-- WINDOWS ONLY -->")) & getos() <> "Windows" then
 +    status.id = 10;
 +    status.message = "skipped: Windows only";
 +    return;
 +  end
 +
 +  if ~isempty(grep(sciFile, "<-- LINUX ONLY -->")) & getos() <> "Linux" then
 +    status.id = 10;
 +    status.message = "skipped: Linux only";
 +    return;
 +  end
 +
++  if ~isempty(grep(sciFile, "<-- UNIX ONLY -->")) & getos() == "Windows" then
++    status.id = 10;
++    status.message = "skipped: Unix only";
++    return;
++  end
++
 +  if ~isempty(grep(sciFile, "<-- MACOSX ONLY -->")) & getos() <> "Darwin" then
 +    status.id = 10;
 +    status.message = "skipped: MacOSX only";
 +    return;
 +  end
 +
 +// Test execution
 +  if ~isempty(grep(sciFile, "<-- INTERACTIVE TEST -->")) then
 +    status.id = 10;
 +    status.message = "skipped: interactive test";
 +    return;
 +  end
 +
 +  if ~isempty(grep(sciFile, "<-- LONG TIME EXECUTION -->")) & ~_module.longtime then
 +    status.id = 10;
 +    status.message = "skipped: Long time duration";
 +    return;
 +  end
 +
 +  if ~isempty(grep(sciFile, "<-- TEST WITH GRAPHIC -->")) then
 +    if _module.wanted_mode == "NWNI" then
 +      status.id = 10;
 +      status.message = "skipped: Test with graphic";
 +      return;
      end
  
 -    if ~isempty(grep(sciFile, "<-- NO CHECK REF -->")) then
 -        reference = "skip";
 +    graphic = %T;
 +    jvm = %T;
 +    execMode = "NW";
 +  end
 +
 +  if (~isempty(grep(sciFile, "<-- JVM NOT MANDATORY -->")) | ~isempty(grep(sciFile, "<-- CLI SHELL MODE -->"))) then
 +    jvm = %F;
 +    execMode = "NWNI";
 +  end
 +
 +  if ~isempty(grep(sciFile, "<-- XCOS TEST -->")) then
 +    if _module.wanted_mode == "NWNI" then
 +      status.id = 10;
 +      status.message = "skipped: Test with xcos";
 +      return;
      end
 -
 -    //build real test file
 -
 -    // Do some modification in tst file
 -    //replace "pause,end" by "bugmes();quit;end"
 -    sciFile = strsubst(sciFile, "pause,end", "bugmes();quit;end");
 -    sciFile = strsubst(sciFile, "pause, end", "bugmes();quit;end");
 -    sciFile = strsubst(sciFile, "pause;end", "bugmes();quit;end");
 -    sciFile = strsubst(sciFile, "pause; end", "bugmes();quit;end");
 -
 -    //to avoid suppression of input --> with prompts
 -    sciFile = strsubst(sciFile, "-->", "@#>");
 -    //remove halt calls
 -    sciFile = strsubst(sciFile, "halt();", "");
 -
 -    // Build test header
 -    head = [
 +    xcosNeeded = %T;
 +    jvm = %T;
 +  end
 +
 +// Language
 +  if ~isempty(grep(sciFile, "<-- FRENCH IMPOSED -->")) then
 +    language = "fr_FR";
 +  end
 +
 +
 +  if ~isempty(grep(sciFile, "<-- ENGLISH IMPOSED -->")) then
 +    language = "en_US";
 +  end
 +
 +// Test building
 +  if ~isempty(grep(sciFile, "<-- NO TRY CATCH -->")) then
 +    try_catch = %F;
 +  end
 +
 +// Test result
 +  if ~isempty(grep(sciFile, "<-- NO CHECK ERROR OUTPUT -->")) then
 +    error_output = "skip";
 +  end
 +
 +  if ~isempty(grep(sciFile, "<-- NO CHECK REF -->")) then
 +    reference = "skip";
 +  end
 +
 +  //build real test file
 +
 +// Do some modification in tst file
 +//replace "pause,end" by "bugmes();quit;end"
 +sciFile = strsubst(sciFile, "pause,end", "bugmes();quit;end");
 +sciFile = strsubst(sciFile, "pause, end", "bugmes();quit;end");
 +sciFile = strsubst(sciFile, "pause;end", "bugmes();quit;end");
 +sciFile = strsubst(sciFile, "pause; end", "bugmes();quit;end");
 +
 +//to avoid suppression of input --> with prompts
 +sciFile = strsubst(sciFile, "-->", "@#>");
 +//remove halt calls
 +sciFile = strsubst(sciFile, "halt();", "");
 +
 +// Build test header
 +head = [
      "// <-- HEADER START -->";
      "mode(3);" ;
      "lines(28,72);";
@@@ -127,15 -127,12 +127,16 @@@ public class ScilabImageConverter imple
      }
  
      private final String convertToPNG(String currentFile, String code, File imageFile, String imageName) {
 +
 +        buffer.append("disp(\"Image generation from Scilab code not yet managed.\");\n");
 +        /*
          buffer.append("function _generate_image_from_doc\n");
 +
          buffer.append("__olddrv__=driver();\n");
-         buffer.append("disp(\"Generate image " + imageName + " from Scilab code from file " + new File(currentFile).getName() + "\");\n");
+         buffer.append("disp(\"Generate image " + imageName + " from Scilab code from file " + new File(currentFile).getName() + "\");");
          buffer.append("driver(\"png\");\n");
          buffer.append("xinit(\"").append(imageFile.getAbsolutePath()).append("\");\n");
+         buffer.append("clf();\n");
          buffer.append(code).append("\n");
          buffer.append("___f___=gcf();___f___.anti_aliasing=\"2x\";clear(\"___f___\");\n");
          buffer.append("xend();\n");
@@@ -77,26 -74,60 +77,71 @@@ BOOL setlanguage(wchar_t *lang
                  /* Load the locale from the system */
  #if !defined(_MSC_VER) && !defined(__APPLE__)
                  //for mbstowcs
++
+                 char *newlang = NULL;
 -                char *ret = setlocale(LC_CTYPE, lang);
 -                if (ret == NULL)
 +                char *pstLang = wide_string_to_UTF8(lang);
 +                char *pstRet = setlocale(LC_CTYPE, pstLang);
-                 wchar_t *ret = (pstRet == NULL ? NULL : to_wide_string(pstRet));
++                wchar_t *ret = NULL;
 +
-                 if (ret == NULL)
++                if (pstRet == NULL)
+                 {
 -                    if (lang == NULL || *lang == 0)
++                    if (pstLang == NULL || *pstLang == 0)
+                     {
 -                        lang = getenv("LANG");
++                        if(pstLang)
++                        {
++                            FREE(pstLang);
++                        }
++
++                        pstLang = getenv("LANG");
+                     }
 -                    ret = setlocale(LC_CTYPE, lang);
 -                    if (ret == NULL)
++                    pstRet = setlocale(LC_CTYPE, pstLang);
++                    if (pstRet == NULL)
+                     {
+                         // On some OSes we need to precise the charset (e.g. on Debian, fr_FR is not accepted but fr_FR.UTF-8 is)
+                         int i = 0;
+                         for (; i < NumberOfCharsets; i++)
+                         {
 -                            newlang = (char*)MALLOC(strlen(lang) + strlen(CHARSETS[i]) + 1 + 1);
 -                            sprintf(newlang, "%s.%s", lang, CHARSETS[i]);
 -                            ret = setlocale(LC_CTYPE, newlang);
 -                            if (ret == NULL)
++                            newlang = (char*)MALLOC(strlen(pstLang) + strlen(CHARSETS[i]) + 1 + 1);
++                            sprintf(newlang, "%s.%s", pstLang, CHARSETS[i]);
++                            pstRet = setlocale(LC_CTYPE, newlang);
++                            if (pstRet == NULL)
+                             {
+                                 FREE(newlang);
+                                 newlang = NULL;
+                             }
+                             else
+                             {
+                                 break;
+                             }
+                         }
+                     }
+                 }
 -                if (ret == NULL)
++                if (pstRet == NULL)
                  {
                      fprintf(stderr,
 -                            "Warning: Localization issue. Failed to change the LC_CTYPE locale category. Does not support the locale '%s' %s %s.\nDid you install the system locales?\n",
 +                            "Warning: Localization issue. Failed to change the LC_CTYPE locale category. Does not support the locale '%ls' %ls %s.\nDid you install the system locales?\n",
                              lang, ret, setlocale(LC_CTYPE, NULL));
                  }
  
                  //for gettext
-                 pstRet =  setlocale(LC_MESSAGES, pstLang);
-                 ret = (pstRet == NULL ? NULL : to_wide_string(pstRet));
+                 if (newlang)
+                 {
 -                    ret = setlocale(LC_MESSAGES, newlang);
++                    pstRet = setlocale(LC_MESSAGES, newlang);
+                 }
+                 else
+                 {
 -                    ret = setlocale(LC_MESSAGES, lang);
++                    pstRet = setlocale(LC_MESSAGES, pstLang);
+                 }
++
++                ret = to_wide_string(pstRet);
  #else
                  /* Load the user locale from the system */
 -                char *ret = getLocaleUserInfo();
 +                wchar_t *ret = getLocaleUserInfo();
  #endif
  
--                //                This stuff causes pb when locales have been compiled
++                // This stuff causes pb when locales have been compiled
                  if (ret == NULL)
                  {
  #ifndef _MSC_VER
                  }
  
                  /* change language */
 -                if (strcmp(lang, "C") == 0 || ret == NULL || strcmp(ret, "C") == 0)
 +                if (wcscmp(lang, L"C") == 0 || ret == NULL || wcscmp(ret, L"C") == 0)
                  {
                      /* The lang is the default one... ie en_US */
 -                    strcpy(CURRENTLANGUAGESTRING, SCILABDEFAULTLANGUAGE);
 +                    wcscpy(CURRENTLANGUAGESTRING, SCILABDEFAULTLANGUAGE);
+                     exportLocaleToSystem(CURRENTLANGUAGESTRING);
                  }
                  else
                  {
                           * which we don't really know which one is it
                           * but if setlocale worked, we get it from the return
                           */
 -                        strncpy(CURRENTLANGUAGESTRING, ret, 5); /* 5 is the number of char in fr_FR for example */
 +                        wcsncpy(CURRENTLANGUAGESTRING, ret, 5); /* 5 is the number of char in fr_FR for example */
+                         exportLocaleToSystem(ret);
                      }
                      else
                      {
-                         wcscpy(CURRENTLANGUAGESTRING, lang);
+ #if !defined(_MSC_VER) && !defined(__APPLE__)
+                         if (newlang)
+                         {
++                            wchar_t* pwstLang = to_wide_string(newlang);
+                             setenvc("LANG", newlang);
+                             strncpy(CURRENTLANGUAGESTRING, newlang, 5);
 -                            exportLocaleToSystem(newlang);
++                            CURRENTLANGUAGESTRING[5] = '\0';
++                            exportLocaleToSystem(pwstLang);
++                            FREE(pwstLang);
+                         }
+                         else
+ #endif
+                         {
 -
 -                            strcpy(CURRENTLANGUAGESTRING, lang);
++                            wcscpy(CURRENTLANGUAGESTRING, lang);
+                             exportLocaleToSystem(lang);
+                         }
                      }
                  }
  #ifndef _MSC_VER
                  setlanguagecode(CURRENTLANGUAGESTRING);
+ #ifndef __APPLE__
+                 if (newlang)
+                 {
+                     FREE(newlang);
+                 }
+ #endif
  #endif
-                 exportLocaleToSystem(CURRENTLANGUAGESTRING);
 -
                  return TRUE;
              }
  #ifndef _MSC_VER
@@@ -297,9 -364,9 +364,9 @@@ BOOL exportLocaleToSystem(wchar_t *loca
      if (locale == NULL)
      {
  #ifdef _MSC_VER
 -        fprintf(stderr, "Localization: Have not been able to find a suitable locale. Remains to default %s.\n", "LC_CTYPE");
 +        fprintf(stderr, "Localization: Haven't been able to find a suitable locale. Remains to default %s.\n", "LC_CTYPE");
  #else
--        fprintf(stderr, "Localization: Have not been able to find a suitable locale. Remains to default %s.\n", EXPORTENVLOCALESTR);
++        fprintf(stderr, "Localization: Have not been able to find a suitable locale. Remains to default %ls.\n", EXPORTENVLOCALESTR);
  #endif
          return FALSE;
      }
@@@ -1,8 -1,7 +1,7 @@@
  /*
   * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
   * Copyright (C) 2007 - INRIA - Allan CORNET
-  * Copyright (C) 2011 - 2011 - DIGITEO - Bruno JOFRET
 - *
 + * 
   * This file must be used under the terms of the CeCILL.
   * This source file is licensed as described in the file COPYING, which
   * you should have received as part of this distribution.  The terms
@@@ -39,276 -38,287 +38,288 @@@ typedef struct languagesalias_struc
  } LanguagesTableAlias;
  /*--------------------------------------------------------------------------*/
  #define NumberLanguagesAlias 42
 -static LanguagesTableAlias LANGUAGE_LOCALE_ALIAS[NumberLanguagesAlias] =
 +static LanguagesTableAlias LANGUAGE_LOCALE_ALIAS[NumberLanguagesAlias]=
  {
 -    {"bg", "bg_BG"},
 -    {"ca", "ca_ES"},
 -    {"cn", "zh_CN"},
 -    {"cs", "cs_CZ"},
 -    {"cy", "cy_GB"},
 -    {"da", "da_DK"},
 -    {"de", "de_DE"},
 -    {"el", "el_GR"},
 -    {"en", "C"}, /* When the user is requesting english ... switch back to the default */
 -    {"en_US", "C"},
 -    {"es", "es_ES"},
 -    {"et", "et_EE"},
 -    {"eu", "eu_ES"},
 -    {"fa", "fa_IR"},
 -    {"fi", "fi_FI"},
 -    {"fo", "fo_FO"},
 -    {"fr", "fr_FR"},
 -    {"he", "he_IL"},
 -    {"hr", "hr_HR"},
 -    {"hu", "hu_HU"},
 -    {"id", "id_ID"},
 -    {"is", "is_IS"},
 -    {"it", "it_IT"},
 -    {"ja", "ja_JP"},
 -    {"ko", "ko_KR"},
 -    {"lt", "lt_LT"},
 -    {"my", "ms_MY"},
 -    {"nb", "nb_NO"},
 -    {"nl", "nl_NL"},
 -    {"pl", "pl_PL"},
 -    {"pt", "pt_PT"},
 -    {"ro", "ro_RO"},
 -    {"ru", "ru_RU"},
 -    {"sk", "sk_SK"},
 -    {"sl", "sl_SI"},
 -    {"sr", "sr_YU"},
 -    {"sv", "sv_SE"},
 -    {"th", "th_TH"},
 -    {"tl", "tl_PH"},
 -    {"tr", "tr_TR"},
 -    {"tw", "zh_TW"},
 -    {"uk", "uk_UA"}
 +      {L"bg",L"bg_BG"},
-       {L"ca",L"ca_ES"},
-       {L"cn",L"zh_CN"},
-       {L"cs",L"cs_CZ"},
-       {L"cy",L"cy_GB"},
-       {L"da",L"da_DK"},
-       {L"de",L"de_DE"},
-       {L"el",L"el_GR"},
-       {L"en",L"C"}, /* When the user is requesting english ... switch back to the default */
-       {L"en_US",L"C"},
-       {L"es",L"es_ES"},
-       {L"et",L"et_EE"},
-       {L"eu",L"eu_ES"},
-       {L"fa",L"fa_IR"},
-       {L"fi",L"fi_FI"},
-       {L"fo",L"fo_FO"},
-       {L"fr",L"fr_FR"},
-       {L"he",L"he_IL"},
-       {L"hr",L"hr_HR"},
-       {L"hu",L"hu_HU"},
-       {L"id",L"id_ID"},
-       {L"is",L"is_IS"},
-       {L"it",L"it_IT"},
-       {L"ja",L"ja_JP"},
-       {L"ko",L"ko_KR"},
-       {L"lt",L"lt_LT"},
-       {L"my",L"ms_MY"},
-       {L"nb",L"nb_NO"},
-       {L"nl",L"nl_NL"},
-       {L"pl",L"pl_PL"},
-       {L"pt",L"pt_PT"},
-       {L"ro",L"ro_RO"},
-       {L"ru",L"ru_RU"},
-       {L"sk",L"sk_SK"},
-       {L"sl",L"sl_SI"},
-       {L"sr",L"sr_YU"},
-       {L"sv",L"sv_SE"},
-       {L"th",L"th_TH"},
-       {L"tl",L"tl_PH"},
-       {L"tr",L"tr_TR"},
-       {L"tw",L"zh_TW"},
-       {L"uk",L"uk_UA"}
++      {L"ca", L"ca_ES"},
++      {L"cn", L"zh_CN"},
++      {L"cs", L"cs_CZ"},
++      {L"cy", L"cy_GB"},
++      {L"da", L"da_DK"},
++      {L"de", L"de_DE"},
++      {L"el", L"el_GR"},
++      {L"en", L"C"}, /* When the user is requesting english ... switch back to the default */
++      {L"en_US", L"C"},
++      {L"es", L"es_ES"},
++      {L"et", L"et_EE"},
++      {L"eu", L"eu_ES"},
++      {L"fa", L"fa_IR"},
++      {L"fi", L"fi_FI"},
++      {L"fo", L"fo_FO"},
++      {L"fr", L"fr_FR"},
++      {L"he", L"he_IL"},
++      {L"hr", L"hr_HR"},
++      {L"hu", L"hu_HU"},
++      {L"id", L"id_ID"},
++      {L"is", L"is_IS"},
++      {L"it", L"it_IT"},
++      {L"ja", L"ja_JP"},
++      {L"ko", L"ko_KR"},
++      {L"lt", L"lt_LT"},
++      {L"my", L"ms_MY"},
++      {L"nb", L"nb_NO"},
++      {L"nl", L"nl_NL"},
++      {L"pl", L"pl_PL"},
++      {L"pt", L"pt_PT"},
++      {L"ro", L"ro_RO"},
++      {L"ru", L"ru_RU"},
++      {L"sk", L"sk_SK"},
++      {L"sl", L"sl_SI"},
++      {L"sr", L"sr_YU"},
++      {L"sv", L"sv_SE"},
++      {L"th", L"th_TH"},
++      {L"tl", L"tl_PH"},
++      {L"tr", L"tr_TR"},
++      {L"tw", L"zh_TW"},
++      {L"uk", L"uk_UA"}
  };
  /*--------------------------------------------------------------------------*/
  #define NumberLanguages 220
 -static LanguagesTable LANGUAGE_COUNTRY_TAB[NumberLanguages] =
 +static LanguagesTable LANGUAGE_COUNTRY_TAB[NumberLanguages]=
  {
-       {  1,L"aa_DJ",L"Afar (Djibouti)"},
-       {  2,L"aa_ER",L"Afar (Eritrea)"},
-       {  3,L"aa_ER_SAAHO",L"Afar (Eritrea, SAAHO)"},
-       {  4,L"aa_ET",L"Afar (Ethiopia)"},
-       {  5,L"af_ZA",L"Afrikaans (South Africa)"},
-       {  6,L"sq_AL",L"Albanian (Albania)"},
-       {  7,L"am_ET",L"Amharic (Ethiopia)"},
-       {  8,L"ar_DZ",L"Arabic (Algeria)"},
-       {  9,L"ar_BH",L"Arabic (Bahrain)"},
-       { 10,L"ar_EG",L"Arabic (Egypt)"},
-       { 11,L"ar_IQ",L"Arabic (Iraq)"},
-       { 12,L"ar_JO",L"Arabic (Jordan)"},
-       { 13,L"ar_KW",L"Arabic (Kuwait)"},
-       { 14,L"ar_LB",L"Arabic (Lebanon)"},
-       { 15,L"ar_LY",L"Arabic (Libya)"},
-       { 16,L"ar_MA",L"Arabic (Morocco)"},
-       { 17,L"ar_OM",L"Arabic (Oman)"},
-       { 18,L"ar_QA",L"Arabic (Qatar)"},
-       { 19,L"ar_SA",L"Arabic (Saudi Arabia)"},
-       { 20,L"ar_SD",L"Arabic (Sudan)"},
-       { 21,L"ar_SY",L"Arabic (Syria)"},
-       { 22,L"ar_TN",L"Arabic (Tunisia)"},
-       { 23,L"ar_AE",L"Arabic (United Arab Emirates)"},
-       { 24,L"ar_YE",L"Arabic (Yemen)"},
-       { 25,L"hy_AM",L"Armenian (Armenia)"},
-       { 26,L"hy_AM_REVISED",L"Armenian (Armenia, Revised Orthography)"},
-       { 27,L"as_IN",L"Assamese (India)"},
-       { 28,L"az_AZ",L"Azerbaijani (Azerbaijan)"},
-       { 29,L"az_Cyrl_AZ",L"Azerbaijani (Cyrillic, Azerbaijan)"},
-       { 30,L"az_Latn_AZ",L"Azerbaijani (Latin, Azerbaijan)"},
-       { 31,L"az_Cyrl",L"Azerbaijani (Cyrillic)"},
-       { 32,L"az_Latn",L"Azerbaijani (Latin)"},
-       { 33,L"eu_ES",L"Basque (Spain)"},
-       { 34,L"be_BY",L"Belarusian (Belarus)"},
-       { 35,L"bn_IN",L"Bengali (India)"},
-       { 36,L"byn_ER",L"Blin (Eritrea)"},
-       { 37,L"bs_BA",L"Bosnian (Bosnia and Herzegovina)"},
-       { 38,L"bg_BG",L"Bulgarian (Bulgaria)"},
-       { 39,L"ca_ES",L"Catalan (Spain)"},
-       { 40,L"zh_CN",L"Chinese (China)"},
-       { 41,L"zh_Hans_CN",L"Chinese (Simplified Han, China)"},
-       { 42,L"zh_HK",L"Chinese (Hong Kong S.A.R., China)"},
-       { 43,L"zh_Hant_HK",L"Chinese (Traditional Han, Hong Kong S.A.R., China)"},
-       { 44,L"zh_Hant_MO",L"Chinese (Traditional Han, Macao S.A.R., China)"},
-       { 45,L"zh_MO",L"Chinese (Macao S.A.R., China)"},
-       { 46,L"zh_Hans_SG",L"Chinese (Simplified Han, Singapore)"},
-       { 47,L"zh_SG",L"Chinese (Singapore)"},
-       { 48,L"zh_Hant_TW",L"Chinese (Traditional Han, Taiwan)"},
-       { 49,L"zh_TW",L"Chinese (Taiwan)"},
-       { 50,L"zh_Hans",L"Chinese (Simplified Han)"},
-       { 51,L"zh_Hant",L"Chinese (Traditional Han)"},
-       { 52,L"kw_GB",L"Cornish (United Kingdom)"},
-       { 53,L"hr_HR",L"Croatian (Croatia)"},
-       { 54,L"cs_CZ",L"Czech (Czech Republic)"},
-       { 55,L"da_DK",L"Danish (Denmark)"},
-       { 56,L"dv_MV",L"Divehi (Maldives)"},
-       { 57,L"nl_BE",L"Dutch (Belgium)"},
-       { 58,L"nl_NL",L"Dutch (Netherlands)"},
-       { 59,L"dz_BT",L"Dzongkha (Bhutan)"},
-       { 60,L"en_AS",L"English (American Samoa)"},
-       { 61,L"en_AU",L"English (Australia)"},
-       { 62,L"en_BE",L"English (Belgium)"},
-       { 63,L"en_BZ",L"English (Belize)"},
-       { 64,L"en_BW",L"English (Botswana)"},
-       { 65,L"en_CA",L"English (Canada)"},
-       { 66,L"en_GU",L"English (Guam)"},
-       { 67,L"en_HK",L"English (Hong Kong S.A.R., China)"},
-       { 68,L"en_IN",L"English (India)"},
-       { 69,L"en_IE",L"English (Ireland)"},
-       { 70,L"en_JM",L"English (Jamaica)"},
-       { 71,L"en_MT",L"English (Malta)"},
-       { 72,L"en_MH",L"English (Marshall Islands)"},
-       { 73,L"en_NZ",L"English (New Zealand)"},
-       { 74,L"en_MP",L"English (Northern Mariana Islands)"},
-       { 75,L"en_PK",L"English (Pakistan)"},
-       { 76,L"en_PH",L"English (Philippines)"},
-       { 77,L"en_SG",L"English (Singapore)"},
-       { 78,L"en_ZA",L"English (South Africa)"},
-       { 79,L"en_TT",L"English (Trinidad and Tobago)"},
-       { 80,L"en_VI",L"English (U.S. Virgin Islands)"},
-       { 81,L"en_GB",L"English (United Kingdom)"},
-       { 82,L"en_UM",L"English (United States Minor Outlying Islands)"},
-       { 83,L"en_US",L"English (United States)"},
-       { 84,L"en_US_POSIX",L"English (United States, Computer)"},
-       { 85,L"en_ZW",L"English (Zimbabwe)"},
-       { 86,L"et_EE",L"Estonian (Estonia)"},
-       { 87,L"fo_FO",L"Faroese (Faroe Islands)"},
-       { 88,L"fi_FI",L"Finnish (Finland)"},
-       { 89,L"fr_BE",L"French (Belgium)"},
-       { 90,L"fr_CA",L"French (Canada)"},
-       { 91,L"fr_FR",L"French (France)"},
-       { 92,L"fr_LU",L"French (Luxembourg)"},
-       { 93,L"fr_MC",L"French (Monaco)"},
-       { 94,L"fr_CH",L"French (Switzerland)"},
-       { 95,L"gl_ES",L"Gallegan (Spain)"},
-       { 96,L"gez_ER",L"Geez (Eritrea)"},
-       { 97,L"gez_ET",L"Geez (Ethiopia)"},
-       { 98,L"ka_GE",L"Georgian (Georgia)"},
-       { 99,L"de_AT",L"German (Austria)"},
-       { 100,L"de_BE",L"German (Belgium)"},
-       { 101,L"de_DE",L"German (Germany)"},
-       { 102,L"de_LI",L"German (Liechtenstein)"},
-       { 103,L"de_LU",L"German (Luxembourg)"},
-       { 104,L"de_CH",L"German (Switzerland)"},
-       { 105,L"el_CY",L"Greek (Cyprus)"},
-       { 106,L"el_GR",L"Greek (Greece)"},
-       { 107,L"el_POLYTONI",L"Greek (POLYTONI)"},
-       { 108,L"gu_IN",L"Gujarati (India)"},
-       { 109,L"haw_US",L"Hawaiian (United States)"},
-       { 110,L"he_IL",L"Hebrew (Israel)"},
-       { 111,L"hi_IN",L"Hindi (India)"},
-       { 112,L"hu_HU",L"Hungarian (Hungary)"},
-       { 113,L"is_IS",L"Icelandic (Iceland)"},
-       { 114,L"id_ID",L"Indonesian (Indonesia)"},
-       { 115,L"ga_IE",L"Irish (Ireland)"},
-       { 116,L"it_IT",L"Italian (Italy)"},
-       { 117,L"it_CH",L"Italian (Switzerland)"},
-       { 118,L"ja_JP",L"Japanese (Japan)"},
-       { 119,L"kl_GL",L"Kalaallisut (Greenland)"},
-       { 120,L"kn_IN",L"Kannada (India)"},
-       { 121,L"kk_KZ",L"Kazakh (Kazakhstan)"},
-       { 122,L"km_KH",L"Khmer (Cambodia)"},
-       { 123,L"ky_KG",L"Kirghiz (Kyrgyzstan)"},
-       { 124,L"kok_IN",L"Konkani (India)"},
-       { 125,L"ko_KR",L"Korean (South Korea)"},
-       { 126,L"lo_LA",L"Lao (Laos)"},
-       { 127,L"lv_LV",L"Latvian (Latvia)"},
-       { 128,L"lt_LT",L"Lithuanian (Lithuania)"},
-       { 129,L"mk_MK",L"Macedonian (Macedonia)"},
-       { 130,L"ms_BN",L"Malay (Brunei)"},
-       { 131,L"ms_MY",L"Malay (Malaysia)"},
-       { 132,L"ml_IN",L"Malayalam (India)"},
-       { 133,L"mt_MT",L"Maltese (Malta)"},
-       { 134,L"gv_GB",L"Manx (United Kingdom)"},
-       { 135,L"mr_IN",L"Marathi (India)"},
-       { 136,L"mn_MN",L"Mongolian (Mongolia)"},
-       { 137,L"nb_NO",L"Norwegian Bokmål (Norway)"},
-       { 138,L"nn_NO",L"Norwegian Nynorsk (Norway)"},
-       { 139,L"or_IN",L"Oriya (India)"},
-       { 140,L"om_ET",L"Oromo (Ethiopia)"},
-       { 141,L"om_KE",L"Oromo (Kenya)"},
-       { 142,L"ps_AF",L"Pashto (Pushto) (Afghanistan)"},
-       { 143,L"fa_AF",L"Persian (Afghanistan)"},
-       { 144,L"fa_IR",L"Persian (Iran)"},
-       { 145,L"pl_PL",L"Polish (Poland)"},
-       { 146,L"pt_BR",L"Portuguese (Brazil)"},
-       { 147,L"pt_PT",L"Portuguese (Portugal)"},
-       { 148,L"pa_IN",L"Punjabi (India)"},
-       { 149,L"ro_RO",L"Romanian (Romania)"},
-       { 150,L"ru_RU",L"Russian (Russia)"},
-       { 151,L"ru_UA",L"Russian (Ukraine)"},
-       { 152,L"sa_IN",L"Sanskrit (India)"},
-       { 153,L"sr_BA",L"Serbian (Bosnia and Herzegovina)"},
-       { 154,L"sr_Cyrl_BA",L"Serbian (Cyrillic, Bosnia and Herzegovina)"},
-       { 155,L"sr_Latn_BA",L"Serbian (Latin, Bosnia and Herzegovina)"},
-       { 156,L"sr_CS",L"Serbian (Serbia And Montenegro)"},
-       { 157,L"sr_Cyrl_CS",L"Serbian (Cyrillic, Serbia And Montenegro)"},
-       { 158,L"sr_Latn_CS",L"Serbian (Latin, Serbia And Montenegro)"},
-       { 159,L"sr_Cyrl_YU",L"Serbian (Cyrillic, YU)"},
-       { 160,L"sr_Latn_YU",L"Serbian (Latin, YU)"},
-       { 161,L"sr_YU",L"Serbian (YU)"},
-       { 162,L"sr_Cyrl",L"Serbian (Cyrillic)"},
-       { 163,L"sr_Latn",L"Serbian (Latin)"},
-       { 164,L"sh_BA",L"Serbo-Croatian (Bosnia and Herzegovina)"},
-       { 165,L"sh_CS",L"Serbo-Croatian (Serbia And Montenegro)"},
-       { 166,L"sh_YU",L"Serbo-Croatian (YU)"},
-       { 167,L"sid_ET",L"Sidamo (Ethiopia)"},
-       { 168,L"sk_SK",L"Slovak (Slovakia)"},
-       { 169,L"sl_SI",L"Slovenian (Slovenia)"},
-       { 170,L"so_DJ",L"Somali (Djibouti)"},
-       { 171,L"so_ET",L"Somali (Ethiopia)"},
-       { 172,L"so_KE",L"Somali (Kenya)"},
-       { 173,L"so_SO",L"Somali (Somalia)"},
-       { 174,L"es_AR",L"Spanish (Argentina)"},
-       { 175,L"es_BO",L"Spanish (Bolivia)"},
-       { 176,L"es_CL",L"Spanish (Chile)"},
-       { 177,L"es_CO",L"Spanish (Colombia)"},
-       { 178,L"es_CR",L"Spanish (Costa Rica)"},
-       { 179,L"es_DO",L"Spanish (Dominican Republic)"},
-       { 180,L"es_EC",L"Spanish (Ecuador)"},
-       { 181,L"es_SV",L"Spanish (El Salvador)"},
-       { 182,L"es_GT",L"Spanish (Guatemala)"},
-       { 183,L"es_HN",L"Spanish (Honduras)"},
-       { 184,L"es_MX",L"Spanish (Mexico)"},
-       { 185,L"es_NI",L"Spanish (Nicaragua)"},
-       { 186,L"es_PA",L"Spanish (Panama)"},
-       { 187,L"es_PY",L"Spanish (Paraguay)"},
-       { 188,L"es_PE",L"Spanish (Peru)"},
-       { 189,L"es_PR",L"Spanish (Puerto Rico)"},
-       { 190,L"es_ES",L"Spanish (Spain)"},
-       { 191,L"es_US",L"Spanish (United States)"},
-       { 192,L"es_UY",L"Spanish (Uruguay)"},
-       { 193,L"es_VE",L"Spanish (Venezuela)"},
-       { 194,L"sw_KE",L"Swahili (Kenya)"},
-       { 195,L"sw_TZ",L"Swahili (Tanzania)"},
-       { 196,L"sv_FI",L"Swedish (Finland)"},
-       { 197,L"sv_SE",L"Swedish (Sweden)"},
-       { 198,L"syr_SY",L"Syriac (Syria)"},
-       { 199,L"ta_IN",L"Tamil (India)"},
-       { 200,L"tt_RU",L"Tatar (Russia)"},
-       { 201,L"te_IN",L"Telugu (India)"},
-       { 202,L"th_TH",L"Thai (Thailand)"},
-       { 203,L"tig_ER",L"Tigre (Eritrea)"},
-       { 204,L"ti_ER",L"Tigrinya (Eritrea)"},
-       { 205,L"ti_ET",L"Tigrinya (Ethiopia)"},
-       { 206,L"tr_TR",L"Turkish (Turkey)"},
-       { 207,L"uk_UA",L"Ukrainian (Ukraine)"},
-       { 208,L"ur_PK",L"Urdu (Pakistan)"},
-       { 209,L"uz_AF",L"Uzbek (Afghanistan)"},
-       { 210,L"uz_Arab_AF",L"Uzbek (Arabic, Afghanistan)"},
-       { 211,L"uz_Cyrl_UZ",L"Uzbek (Cyrillic, Uzbekistan)"},
-       { 212,L"uz_Latn_UZ",L"Uzbek (Latin, Uzbekistan)"},
-       { 213,L"uz_UZ",L"Uzbek (Uzbekistan)"},
-       { 214,L"uz_Arab",L"Uzbek (Arabic)"},
-       { 215,L"uz_Cyrl",L"Uzbek (Cyrillic)"},
-       { 216,L"uz_Latn",L"Uzbek (Latin)"},
-       { 217,L"vi_VN",L"Vietnamese (Vietnam)"},
-       { 218,L"wal_ET",L"Walamo (Ethiopia)"},
-       { 219,L"cy_GB",L"Welsh (United Kingdom)"},
-       { 220,L"C",L"English (Default)"}
 -    {  1, "aa_DJ", "Afar (Djibouti)"},
 -    {  2, "aa_ER", "Afar (Eritrea)"},
 -    {  3, "aa_ER_SAAHO", "Afar (Eritrea, SAAHO)"},
 -    {  4, "aa_ET", "Afar (Ethiopia)"},
 -    {  5, "af_ZA", "Afrikaans (South Africa)"},
 -    {  6, "sq_AL", "Albanian (Albania)"},
 -    {  7, "am_ET", "Amharic (Ethiopia)"},
 -    {  8, "ar_DZ", "Arabic (Algeria)"},
 -    {  9, "ar_BH", "Arabic (Bahrain)"},
 -    { 10, "ar_EG", "Arabic (Egypt)"},
 -    { 11, "ar_IQ", "Arabic (Iraq)"},
 -    { 12, "ar_JO", "Arabic (Jordan)"},
 -    { 13, "ar_KW", "Arabic (Kuwait)"},
 -    { 14, "ar_LB", "Arabic (Lebanon)"},
 -    { 15, "ar_LY", "Arabic (Libya)"},
 -    { 16, "ar_MA", "Arabic (Morocco)"},
 -    { 17, "ar_OM", "Arabic (Oman)"},
 -    { 18, "ar_QA", "Arabic (Qatar)"},
 -    { 19, "ar_SA", "Arabic (Saudi Arabia)"},
 -    { 20, "ar_SD", "Arabic (Sudan)"},
 -    { 21, "ar_SY", "Arabic (Syria)"},
 -    { 22, "ar_TN", "Arabic (Tunisia)"},
 -    { 23, "ar_AE", "Arabic (United Arab Emirates)"},
 -    { 24, "ar_YE", "Arabic (Yemen)"},
 -    { 25, "hy_AM", "Armenian (Armenia)"},
 -    { 26, "hy_AM_REVISED", "Armenian (Armenia, Revised Orthography)"},
 -    { 27, "as_IN", "Assamese (India)"},
 -    { 28, "az_AZ", "Azerbaijani (Azerbaijan)"},
 -    { 29, "az_Cyrl_AZ", "Azerbaijani (Cyrillic, Azerbaijan)"},
 -    { 30, "az_Latn_AZ", "Azerbaijani (Latin, Azerbaijan)"},
 -    { 31, "az_Cyrl", "Azerbaijani (Cyrillic)"},
 -    { 32, "az_Latn", "Azerbaijani (Latin)"},
 -    { 33, "eu_ES", "Basque (Spain)"},
 -    { 34, "be_BY", "Belarusian (Belarus)"},
 -    { 35, "bn_IN", "Bengali (India)"},
 -    { 36, "byn_ER", "Blin (Eritrea)"},
 -    { 37, "bs_BA", "Bosnian (Bosnia and Herzegovina)"},
 -    { 38, "bg_BG", "Bulgarian (Bulgaria)"},
 -    { 39, "ca_ES", "Catalan (Spain)"},
 -    { 40, "zh_CN", "Chinese (China)"},
 -    { 41, "zh_Hans_CN", "Chinese (Simplified Han, China)"},
 -    { 42, "zh_HK", "Chinese (Hong Kong S.A.R., China)"},
 -    { 43, "zh_Hant_HK", "Chinese (Traditional Han, Hong Kong S.A.R., China)"},
 -    { 44, "zh_Hant_MO", "Chinese (Traditional Han, Macao S.A.R., China)"},
 -    { 45, "zh_MO", "Chinese (Macao S.A.R., China)"},
 -    { 46, "zh_Hans_SG", "Chinese (Simplified Han, Singapore)"},
 -    { 47, "zh_SG", "Chinese (Singapore)"},
 -    { 48, "zh_Hant_TW", "Chinese (Traditional Han, Taiwan)"},
 -    { 49, "zh_TW", "Chinese (Taiwan)"},
 -    { 50, "zh_Hans", "Chinese (Simplified Han)"},
 -    { 51, "zh_Hant", "Chinese (Traditional Han)"},
 -    { 52, "kw_GB", "Cornish (United Kingdom)"},
 -    { 53, "hr_HR", "Croatian (Croatia)"},
 -    { 54, "cs_CZ", "Czech (Czech Republic)"},
 -    { 55, "da_DK", "Danish (Denmark)"},
 -    { 56, "dv_MV", "Divehi (Maldives)"},
 -    { 57, "nl_BE", "Dutch (Belgium)"},
 -    { 58, "nl_NL", "Dutch (Netherlands)"},
 -    { 59, "dz_BT", "Dzongkha (Bhutan)"},
 -    { 60, "en_AS", "English (American Samoa)"},
 -    { 61, "en_AU", "English (Australia)"},
 -    { 62, "en_BE", "English (Belgium)"},
 -    { 63, "en_BZ", "English (Belize)"},
 -    { 64, "en_BW", "English (Botswana)"},
 -    { 65, "en_CA", "English (Canada)"},
 -    { 66, "en_GU", "English (Guam)"},
 -    { 67, "en_HK", "English (Hong Kong S.A.R., China)"},
 -    { 68, "en_IN", "English (India)"},
 -    { 69, "en_IE", "English (Ireland)"},
 -    { 70, "en_JM", "English (Jamaica)"},
 -    { 71, "en_MT", "English (Malta)"},
 -    { 72, "en_MH", "English (Marshall Islands)"},
 -    { 73, "en_NZ", "English (New Zealand)"},
 -    { 74, "en_MP", "English (Northern Mariana Islands)"},
 -    { 75, "en_PK", "English (Pakistan)"},
 -    { 76, "en_PH", "English (Philippines)"},
 -    { 77, "en_SG", "English (Singapore)"},
 -    { 78, "en_ZA", "English (South Africa)"},
 -    { 79, "en_TT", "English (Trinidad and Tobago)"},
 -    { 80, "en_VI", "English (U.S. Virgin Islands)"},
 -    { 81, "en_GB", "English (United Kingdom)"},
 -    { 82, "en_UM", "English (United States Minor Outlying Islands)"},
 -    { 83, "en_US", "English (United States)"},
 -    { 84, "en_US_POSIX", "English (United States, Computer)"},
 -    { 85, "en_ZW", "English (Zimbabwe)"},
 -    { 86, "et_EE", "Estonian (Estonia)"},
 -    { 87, "fo_FO", "Faroese (Faroe Islands)"},
 -    { 88, "fi_FI", "Finnish (Finland)"},
 -    { 89, "fr_BE", "French (Belgium)"},
 -    { 90, "fr_CA", "French (Canada)"},
 -    { 91, "fr_FR", "French (France)"},
 -    { 92, "fr_LU", "French (Luxembourg)"},
 -    { 93, "fr_MC", "French (Monaco)"},
 -    { 94, "fr_CH", "French (Switzerland)"},
 -    { 95, "gl_ES", "Gallegan (Spain)"},
 -    { 96, "gez_ER", "Geez (Eritrea)"},
 -    { 97, "gez_ET", "Geez (Ethiopia)"},
 -    { 98, "ka_GE", "Georgian (Georgia)"},
 -    { 99, "de_AT", "German (Austria)"},
 -    { 100, "de_BE", "German (Belgium)"},
 -    { 101, "de_DE", "German (Germany)"},
 -    { 102, "de_LI", "German (Liechtenstein)"},
 -    { 103, "de_LU", "German (Luxembourg)"},
 -    { 104, "de_CH", "German (Switzerland)"},
 -    { 105, "el_CY", "Greek (Cyprus)"},
 -    { 106, "el_GR", "Greek (Greece)"},
 -    { 107, "el_POLYTONI", "Greek (POLYTONI)"},
 -    { 108, "gu_IN", "Gujarati (India)"},
 -    { 109, "haw_US", "Hawaiian (United States)"},
 -    { 110, "he_IL", "Hebrew (Israel)"},
 -    { 111, "hi_IN", "Hindi (India)"},
 -    { 112, "hu_HU", "Hungarian (Hungary)"},
 -    { 113, "is_IS", "Icelandic (Iceland)"},
 -    { 114, "id_ID", "Indonesian (Indonesia)"},
 -    { 115, "ga_IE", "Irish (Ireland)"},
 -    { 116, "it_IT", "Italian (Italy)"},
 -    { 117, "it_CH", "Italian (Switzerland)"},
 -    { 118, "ja_JP", "Japanese (Japan)"},
 -    { 119, "kl_GL", "Kalaallisut (Greenland)"},
 -    { 120, "kn_IN", "Kannada (India)"},
 -    { 121, "kk_KZ", "Kazakh (Kazakhstan)"},
 -    { 122, "km_KH", "Khmer (Cambodia)"},
 -    { 123, "ky_KG", "Kirghiz (Kyrgyzstan)"},
 -    { 124, "kok_IN", "Konkani (India)"},
 -    { 125, "ko_KR", "Korean (South Korea)"},
 -    { 126, "lo_LA", "Lao (Laos)"},
 -    { 127, "lv_LV", "Latvian (Latvia)"},
 -    { 128, "lt_LT", "Lithuanian (Lithuania)"},
 -    { 129, "mk_MK", "Macedonian (Macedonia)"},
 -    { 130, "ms_BN", "Malay (Brunei)"},
 -    { 131, "ms_MY", "Malay (Malaysia)"},
 -    { 132, "ml_IN", "Malayalam (India)"},
 -    { 133, "mt_MT", "Maltese (Malta)"},
 -    { 134, "gv_GB", "Manx (United Kingdom)"},
 -    { 135, "mr_IN", "Marathi (India)"},
 -    { 136, "mn_MN", "Mongolian (Mongolia)"},
 -    { 137, "nb_NO", "Norwegian Bokmål (Norway)"},
 -    { 138, "nn_NO", "Norwegian Nynorsk (Norway)"},
 -    { 139, "or_IN", "Oriya (India)"},
 -    { 140, "om_ET", "Oromo (Ethiopia)"},
 -    { 141, "om_KE", "Oromo (Kenya)"},
 -    { 142, "ps_AF", "Pashto (Pushto) (Afghanistan)"},
 -    { 143, "fa_AF", "Persian (Afghanistan)"},
 -    { 144, "fa_IR", "Persian (Iran)"},
 -    { 145, "pl_PL", "Polish (Poland)"},
 -    { 146, "pt_BR", "Portuguese (Brazil)"},
 -    { 147, "pt_PT", "Portuguese (Portugal)"},
 -    { 148, "pa_IN", "Punjabi (India)"},
 -    { 149, "ro_RO", "Romanian (Romania)"},
 -    { 150, "ru_RU", "Russian (Russia)"},
 -    { 151, "ru_UA", "Russian (Ukraine)"},
 -    { 152, "sa_IN", "Sanskrit (India)"},
 -    { 153, "sr_BA", "Serbian (Bosnia and Herzegovina)"},
 -    { 154, "sr_Cyrl_BA", "Serbian (Cyrillic, Bosnia and Herzegovina)"},
 -    { 155, "sr_Latn_BA", "Serbian (Latin, Bosnia and Herzegovina)"},
 -    { 156, "sr_CS", "Serbian (Serbia And Montenegro)"},
 -    { 157, "sr_Cyrl_CS", "Serbian (Cyrillic, Serbia And Montenegro)"},
 -    { 158, "sr_Latn_CS", "Serbian (Latin, Serbia And Montenegro)"},
 -    { 159, "sr_Cyrl_YU", "Serbian (Cyrillic, YU)"},
 -    { 160, "sr_Latn_YU", "Serbian (Latin, YU)"},
 -    { 161, "sr_YU", "Serbian (YU)"},
 -    { 162, "sr_Cyrl", "Serbian (Cyrillic)"},
 -    { 163, "sr_Latn", "Serbian (Latin)"},
 -    { 164, "sh_BA", "Serbo-Croatian (Bosnia and Herzegovina)"},
 -    { 165, "sh_CS", "Serbo-Croatian (Serbia And Montenegro)"},
 -    { 166, "sh_YU", "Serbo-Croatian (YU)"},
 -    { 167, "sid_ET", "Sidamo (Ethiopia)"},
 -    { 168, "sk_SK", "Slovak (Slovakia)"},
 -    { 169, "sl_SI", "Slovenian (Slovenia)"},
 -    { 170, "so_DJ", "Somali (Djibouti)"},
 -    { 171, "so_ET", "Somali (Ethiopia)"},
 -    { 172, "so_KE", "Somali (Kenya)"},
 -    { 173, "so_SO", "Somali (Somalia)"},
 -    { 174, "es_AR", "Spanish (Argentina)"},
 -    { 175, "es_BO", "Spanish (Bolivia)"},
 -    { 176, "es_CL", "Spanish (Chile)"},
 -    { 177, "es_CO", "Spanish (Colombia)"},
 -    { 178, "es_CR", "Spanish (Costa Rica)"},
 -    { 179, "es_DO", "Spanish (Dominican Republic)"},
 -    { 180, "es_EC", "Spanish (Ecuador)"},
 -    { 181, "es_SV", "Spanish (El Salvador)"},
 -    { 182, "es_GT", "Spanish (Guatemala)"},
 -    { 183, "es_HN", "Spanish (Honduras)"},
 -    { 184, "es_MX", "Spanish (Mexico)"},
 -    { 185, "es_NI", "Spanish (Nicaragua)"},
 -    { 186, "es_PA", "Spanish (Panama)"},
 -    { 187, "es_PY", "Spanish (Paraguay)"},
 -    { 188, "es_PE", "Spanish (Peru)"},
 -    { 189, "es_PR", "Spanish (Puerto Rico)"},
 -    { 190, "es_ES", "Spanish (Spain)"},
 -    { 191, "es_US", "Spanish (United States)"},
 -    { 192, "es_UY", "Spanish (Uruguay)"},
 -    { 193, "es_VE", "Spanish (Venezuela)"},
 -    { 194, "sw_KE", "Swahili (Kenya)"},
 -    { 195, "sw_TZ", "Swahili (Tanzania)"},
 -    { 196, "sv_FI", "Swedish (Finland)"},
 -    { 197, "sv_SE", "Swedish (Sweden)"},
 -    { 198, "syr_SY", "Syriac (Syria)"},
 -    { 199, "ta_IN", "Tamil (India)"},
 -    { 200, "tt_RU", "Tatar (Russia)"},
 -    { 201, "te_IN", "Telugu (India)"},
 -    { 202, "th_TH", "Thai (Thailand)"},
 -    { 203, "tig_ER", "Tigre (Eritrea)"},
 -    { 204, "ti_ER", "Tigrinya (Eritrea)"},
 -    { 205, "ti_ET", "Tigrinya (Ethiopia)"},
 -    { 206, "tr_TR", "Turkish (Turkey)"},
 -    { 207, "uk_UA", "Ukrainian (Ukraine)"},
 -    { 208, "ur_PK", "Urdu (Pakistan)"},
 -    { 209, "uz_AF", "Uzbek (Afghanistan)"},
 -    { 210, "uz_Arab_AF", "Uzbek (Arabic, Afghanistan)"},
 -    { 211, "uz_Cyrl_UZ", "Uzbek (Cyrillic, Uzbekistan)"},
 -    { 212, "uz_Latn_UZ", "Uzbek (Latin, Uzbekistan)"},
 -    { 213, "uz_UZ", "Uzbek (Uzbekistan)"},
 -    { 214, "uz_Arab", "Uzbek (Arabic)"},
 -    { 215, "uz_Cyrl", "Uzbek (Cyrillic)"},
 -    { 216, "uz_Latn", "Uzbek (Latin)"},
 -    { 217, "vi_VN", "Vietnamese (Vietnam)"},
 -    { 218, "wal_ET", "Walamo (Ethiopia)"},
 -    { 219, "cy_GB", "Welsh (United Kingdom)"},
 -    { 220, "C", "English (Default)"}
++      {  1, L"aa_DJ", L"Afar (Djibouti)"},
++      {  2, L"aa_ER", L"Afar (Eritrea)"},
++      {  3, L"aa_ER_SAAHO", L"Afar (Eritrea, SAAHO)"},
++      {  4, L"aa_ET", L"Afar (Ethiopia)"},
++      {  5, L"af_ZA", L"Afrikaans (South Africa)"},
++      {  6, L"sq_AL", L"Albanian (Albania)"},
++      {  7, L"am_ET", L"Amharic (Ethiopia)"},
++      {  8, L"ar_DZ", L"Arabic (Algeria)"},
++      {  9, L"ar_BH", L"Arabic (Bahrain)"},
++      { 10, L"ar_EG", L"Arabic (Egypt)"},
++      { 11, L"ar_IQ", L"Arabic (Iraq)"},
++      { 12, L"ar_JO", L"Arabic (Jordan)"},
++      { 13, L"ar_KW", L"Arabic (Kuwait)"},
++      { 14, L"ar_LB", L"Arabic (Lebanon)"},
++      { 15, L"ar_LY", L"Arabic (Libya)"},
++      { 16, L"ar_MA", L"Arabic (Morocco)"},
++      { 17, L"ar_OM", L"Arabic (Oman)"},
++      { 18, L"ar_QA", L"Arabic (Qatar)"},
++      { 19, L"ar_SA", L"Arabic (Saudi Arabia)"},
++      { 20, L"ar_SD", L"Arabic (Sudan)"},
++      { 21, L"ar_SY", L"Arabic (Syria)"},
++      { 22, L"ar_TN", L"Arabic (Tunisia)"},
++      { 23, L"ar_AE", L"Arabic (United Arab Emirates)"},
++      { 24, L"ar_YE", L"Arabic (Yemen)"},
++      { 25, L"hy_AM", L"Armenian (Armenia)"},
++      { 26, L"hy_AM_REVISED", L"Armenian (Armenia, Revised Orthography)"},
++      { 27, L"as_IN", L"Assamese (India)"},
++      { 28, L"az_AZ", L"Azerbaijani (Azerbaijan)"},
++      { 29, L"az_Cyrl_AZ", L"Azerbaijani (Cyrillic, Azerbaijan)"},
++      { 30, L"az_Latn_AZ", L"Azerbaijani (Latin, Azerbaijan)"},
++      { 31, L"az_Cyrl", L"Azerbaijani (Cyrillic)"},
++      { 32, L"az_Latn", L"Azerbaijani (Latin)"},
++      { 33, L"eu_ES", L"Basque (Spain)"},
++      { 34, L"be_BY", L"Belarusian (Belarus)"},
++      { 35, L"bn_IN", L"Bengali (India)"},
++      { 36, L"byn_ER", L"Blin (Eritrea)"},
++      { 37, L"bs_BA", L"Bosnian (Bosnia and Herzegovina)"},
++      { 38, L"bg_BG", L"Bulgarian (Bulgaria)"},
++      { 39, L"ca_ES", L"Catalan (Spain)"},
++      { 40, L"zh_CN", L"Chinese (China)"},
++      { 41, L"zh_Hans_CN", L"Chinese (Simplified Han, China)"},
++      { 42, L"zh_HK", L"Chinese (Hong Kong S.A.R., China)"},
++      { 43, L"zh_Hant_HK", L"Chinese (Traditional Han, Hong Kong S.A.R., China)"},
++      { 44, L"zh_Hant_MO", L"Chinese (Traditional Han, Macao S.A.R., China)"},
++      { 45, L"zh_MO", L"Chinese (Macao S.A.R., China)"},
++      { 46, L"zh_Hans_SG", L"Chinese (Simplified Han, Singapore)"},
++      { 47, L"zh_SG", L"Chinese (Singapore)"},
++      { 48, L"zh_Hant_TW", L"Chinese (Traditional Han, Taiwan)"},
++      { 49, L"zh_TW", L"Chinese (Taiwan)"},
++      { 50, L"zh_Hans", L"Chinese (Simplified Han)"},
++      { 51, L"zh_Hant", L"Chinese (Traditional Han)"},
++      { 52, L"kw_GB", L"Cornish (United Kingdom)"},
++      { 53, L"hr_HR", L"Croatian (Croatia)"},
++      { 54, L"cs_CZ", L"Czech (Czech Republic)"},
++      { 55, L"da_DK", L"Danish (Denmark)"},
++      { 56, L"dv_MV", L"Divehi (Maldives)"},
++      { 57, L"nl_BE", L"Dutch (Belgium)"},
++      { 58, L"nl_NL", L"Dutch (Netherlands)"},
++      { 59, L"dz_BT", L"Dzongkha (Bhutan)"},
++      { 60, L"en_AS", L"English (American Samoa)"},
++      { 61, L"en_AU", L"English (Australia)"},
++      { 62, L"en_BE", L"English (Belgium)"},
++      { 63, L"en_BZ", L"English (Belize)"},
++      { 64, L"en_BW", L"English (Botswana)"},
++      { 65, L"en_CA", L"English (Canada)"},
++      { 66, L"en_GU", L"English (Guam)"},
++      { 67, L"en_HK", L"English (Hong Kong S.A.R., China)"},
++      { 68, L"en_IN", L"English (India)"},
++      { 69, L"en_IE", L"English (Ireland)"},
++      { 70, L"en_JM", L"English (Jamaica)"},
++      { 71, L"en_MT", L"English (Malta)"},
++      { 72, L"en_MH", L"English (Marshall Islands)"},
++      { 73, L"en_NZ", L"English (New Zealand)"},
++      { 74, L"en_MP", L"English (Northern Mariana Islands)"},
++      { 75, L"en_PK", L"English (Pakistan)"},
++      { 76, L"en_PH", L"English (Philippines)"},
++      { 77, L"en_SG", L"English (Singapore)"},
++      { 78, L"en_ZA", L"English (South Africa)"},
++      { 79, L"en_TT", L"English (Trinidad and Tobago)"},
++      { 80, L"en_VI", L"English (U.S. Virgin Islands)"},
++      { 81, L"en_GB", L"English (United Kingdom)"},
++      { 82, L"en_UM", L"English (United States Minor Outlying Islands)"},
++      { 83, L"en_US", L"English (United States)"},
++      { 84, L"en_US_POSIX", L"English (United States, Computer)"},
++      { 85, L"en_ZW", L"English (Zimbabwe)"},
++      { 86, L"et_EE", L"Estonian (Estonia)"},
++      { 87, L"fo_FO", L"Faroese (Faroe Islands)"},
++      { 88, L"fi_FI", L"Finnish (Finland)"},
++      { 89, L"fr_BE", L"French (Belgium)"},
++      { 90, L"fr_CA", L"French (Canada)"},
++      { 91, L"fr_FR", L"French (France)"},
++      { 92, L"fr_LU", L"French (Luxembourg)"},
++      { 93, L"fr_MC", L"French (Monaco)"},
++      { 94, L"fr_CH", L"French (Switzerland)"},
++      { 95, L"gl_ES", L"Gallegan (Spain)"},
++      { 96, L"gez_ER", L"Geez (Eritrea)"},
++      { 97, L"gez_ET", L"Geez (Ethiopia)"},
++      { 98, L"ka_GE", L"Georgian (Georgia)"},
++      { 99, L"de_AT", L"German (Austria)"},
++      { 100, L"de_BE", L"German (Belgium)"},
++      { 101, L"de_DE", L"German (Germany)"},
++      { 102, L"de_LI", L"German (Liechtenstein)"},
++      { 103, L"de_LU", L"German (Luxembourg)"},
++      { 104, L"de_CH", L"German (Switzerland)"},
++      { 105, L"el_CY", L"Greek (Cyprus)"},
++      { 106, L"el_GR", L"Greek (Greece)"},
++      { 107, L"el_POLYTONI", L"Greek (POLYTONI)"},
++      { 108, L"gu_IN", L"Gujarati (India)"},
++      { 109, L"haw_US", L"Hawaiian (United States)"},
++      { 110, L"he_IL", L"Hebrew (Israel)"},
++      { 111, L"hi_IN", L"Hindi (India)"},
++      { 112, L"hu_HU", L"Hungarian (Hungary)"},
++      { 113, L"is_IS", L"Icelandic (Iceland)"},
++      { 114, L"id_ID", L"Indonesian (Indonesia)"},
++      { 115, L"ga_IE", L"Irish (Ireland)"},
++      { 116, L"it_IT", L"Italian (Italy)"},
++      { 117, L"it_CH", L"Italian (Switzerland)"},
++      { 118, L"ja_JP", L"Japanese (Japan)"},
++      { 119, L"kl_GL", L"Kalaallisut (Greenland)"},
++      { 120, L"kn_IN", L"Kannada (India)"},
++      { 121, L"kk_KZ", L"Kazakh (Kazakhstan)"},
++      { 122, L"km_KH", L"Khmer (Cambodia)"},
++      { 123, L"ky_KG", L"Kirghiz (Kyrgyzstan)"},
++      { 124, L"kok_IN", L"Konkani (India)"},
++      { 125, L"ko_KR", L"Korean (South Korea)"},
++      { 126, L"lo_LA", L"Lao (Laos)"},
++      { 127, L"lv_LV", L"Latvian (Latvia)"},
++      { 128, L"lt_LT", L"Lithuanian (Lithuania)"},
++      { 129, L"mk_MK", L"Macedonian (Macedonia)"},
++      { 130, L"ms_BN", L"Malay (Brunei)"},
++      { 131, L"ms_MY", L"Malay (Malaysia)"},
++      { 132, L"ml_IN", L"Malayalam (India)"},
++      { 133, L"mt_MT", L"Maltese (Malta)"},
++      { 134, L"gv_GB", L"Manx (United Kingdom)"},
++      { 135, L"mr_IN", L"Marathi (India)"},
++      { 136, L"mn_MN", L"Mongolian (Mongolia)"},
++      { 137, L"nb_NO", L"Norwegian Bokmål (Norway)"},
++      { 138, L"nn_NO", L"Norwegian Nynorsk (Norway)"},
++      { 139, L"or_IN", L"Oriya (India)"},
++      { 140, L"om_ET", L"Oromo (Ethiopia)"},
++      { 141, L"om_KE", L"Oromo (Kenya)"},
++      { 142, L"ps_AF", L"Pashto (Pushto) (Afghanistan)"},
++      { 143, L"fa_AF", L"Persian (Afghanistan)"},
++      { 144, L"fa_IR", L"Persian (Iran)"},
++      { 145, L"pl_PL", L"Polish (Poland)"},
++      { 146, L"pt_BR", L"Portuguese (Brazil)"},
++      { 147, L"pt_PT", L"Portuguese (Portugal)"},
++      { 148, L"pa_IN", L"Punjabi (India)"},
++      { 149, L"ro_RO", L"Romanian (Romania)"},
++      { 150, L"ru_RU", L"Russian (Russia)"},
++      { 151, L"ru_UA", L"Russian (Ukraine)"},
++      { 152, L"sa_IN", L"Sanskrit (India)"},
++      { 153, L"sr_BA", L"Serbian (Bosnia and Herzegovina)"},
++      { 154, L"sr_Cyrl_BA", L"Serbian (Cyrillic, Bosnia and Herzegovina)"},
++      { 155, L"sr_Latn_BA", L"Serbian (Latin, Bosnia and Herzegovina)"},
++      { 156, L"sr_CS", L"Serbian (Serbia And Montenegro)"},
++      { 157, L"sr_Cyrl_CS", L"Serbian (Cyrillic, Serbia And Montenegro)"},
++      { 158, L"sr_Latn_CS", L"Serbian (Latin, Serbia And Montenegro)"},
++      { 159, L"sr_Cyrl_YU", L"Serbian (Cyrillic, YU)"},
++      { 160, L"sr_Latn_YU", L"Serbian (Latin, YU)"},
++      { 161, L"sr_YU", L"Serbian (YU)"},
++      { 162, L"sr_Cyrl", L"Serbian (Cyrillic)"},
++      { 163, L"sr_Latn", L"Serbian (Latin)"},
++      { 164, L"sh_BA", L"Serbo-Croatian (Bosnia and Herzegovina)"},
++      { 165, L"sh_CS", L"Serbo-Croatian (Serbia And Montenegro)"},
++      { 166, L"sh_YU", L"Serbo-Croatian (YU)"},
++      { 167, L"sid_ET", L"Sidamo (Ethiopia)"},
++      { 168, L"sk_SK", L"Slovak (Slovakia)"},
++      { 169, L"sl_SI", L"Slovenian (Slovenia)"},
++      { 170, L"so_DJ", L"Somali (Djibouti)"},
++      { 171, L"so_ET", L"Somali (Ethiopia)"},
++      { 172, L"so_KE", L"Somali (Kenya)"},
++      { 173, L"so_SO", L"Somali (Somalia)"},
++      { 174, L"es_AR", L"Spanish (Argentina)"},
++      { 175, L"es_BO", L"Spanish (Bolivia)"},
++      { 176, L"es_CL", L"Spanish (Chile)"},
++      { 177, L"es_CO", L"Spanish (Colombia)"},
++      { 178, L"es_CR", L"Spanish (Costa Rica)"},
++      { 179, L"es_DO", L"Spanish (Dominican Republic)"},
++      { 180, L"es_EC", L"Spanish (Ecuador)"},
++      { 181, L"es_SV", L"Spanish (El Salvador)"},
++      { 182, L"es_GT", L"Spanish (Guatemala)"},
++      { 183, L"es_HN", L"Spanish (Honduras)"},
++      { 184, L"es_MX", L"Spanish (Mexico)"},
++      { 185, L"es_NI", L"Spanish (Nicaragua)"},
++      { 186, L"es_PA", L"Spanish (Panama)"},
++      { 187, L"es_PY", L"Spanish (Paraguay)"},
++      { 188, L"es_PE", L"Spanish (Peru)"},
++      { 189, L"es_PR", L"Spanish (Puerto Rico)"},
++      { 190, L"es_ES", L"Spanish (Spain)"},
++      { 191, L"es_US", L"Spanish (United States)"},
++      { 192, L"es_UY", L"Spanish (Uruguay)"},
++      { 193, L"es_VE", L"Spanish (Venezuela)"},
++      { 194, L"sw_KE", L"Swahili (Kenya)"},
++      { 195, L"sw_TZ", L"Swahili (Tanzania)"},
++      { 196, L"sv_FI", L"Swedish (Finland)"},
++      { 197, L"sv_SE", L"Swedish (Sweden)"},
++      { 198, L"syr_SY", L"Syriac (Syria)"},
++      { 199, L"ta_IN", L"Tamil (India)"},
++      { 200, L"tt_RU", L"Tatar (Russia)"},
++      { 201, L"te_IN", L"Telugu (India)"},
++      { 202, L"th_TH", L"Thai (Thailand)"},
++      { 203, L"tig_ER", L"Tigre (Eritrea)"},
++      { 204, L"ti_ER", L"Tigrinya (Eritrea)"},
++      { 205, L"ti_ET", L"Tigrinya (Ethiopia)"},
++      { 206, L"tr_TR", L"Turkish (Turkey)"},
++      { 207, L"uk_UA", L"Ukrainian (Ukraine)"},
++      { 208, L"ur_PK", L"Urdu (Pakistan)"},
++      { 209, L"uz_AF", L"Uzbek (Afghanistan)"},
++      { 210, L"uz_Arab_AF", L"Uzbek (Arabic, Afghanistan)"},
++      { 211, L"uz_Cyrl_UZ", L"Uzbek (Cyrillic, Uzbekistan)"},
++      { 212, L"uz_Latn_UZ", L"Uzbek (Latin, Uzbekistan)"},
++      { 213, L"uz_UZ", L"Uzbek (Uzbekistan)"},
++      { 214, L"uz_Arab", L"Uzbek (Arabic)"},
++      { 215, L"uz_Cyrl", L"Uzbek (Cyrillic)"},
++      { 216, L"uz_Latn", L"Uzbek (Latin)"},
++      { 217, L"vi_VN", L"Vietnamese (Vietnam)"},
++      { 218, L"wal_ET", L"Walamo (Ethiopia)"},
++      { 219, L"cy_GB", L"Welsh (United Kingdom)"},
++      { 220, L"C", L"English (Default)"}
  };
  /*--------------------------------------------------------------------------*/
+ // Charsets to test when they are mandatory (e.g., on Debian fr_FR is not
+ // accepted but fr_FR.UTF-8 is).
+ // These two charsets are currently supported by Scilab, this is why there are
+ // no other ones.
+ #define NumberOfCharsets 2
 -static char * CHARSETS[NumberOfCharsets] =
++static char* CHARSETS[NumberOfCharsets] =
+ {
+     "UTF-8",
+     "ISO-8859-1"
+ };
++
+ /*--------------------------------------------------------------------------*/
  #endif /* __TABLESLANGUAGES_H__ */
  /*--------------------------------------------------------------------------*/