public function Set($LocaleName, $ApplicationWhiteList, $PluginWhiteList, $ForceRemapping = FALSE) {
      // Get locale sources
      $this->Locale = $LocaleName;
      $LocaleSources = $this->GetLocaleSources($LocaleName, $ApplicationWhiteList, $PluginWhiteList, $ForceRemapping);
      
      $Codeset = C('Garden.LocaleCodeset', 'UTF8');
      $CurrentLocale = str_replace('-', '_', $LocaleName);
      $SetLocale = $CurrentLocale.'.'.$Codeset;
      setlocale(LC_TIME, $SetLocale, $CurrentLocale);
      
      if (!is_array($LocaleSources))
         $LocaleSources = array();
      
      // Create a locale config container
      $this->Unload();
      
      $ConfLocaleOverride = PATH_CONF.'/locale.php';
      $Count = count($LocaleSources);
      for ($i = 0; $i < $Count; ++$i) {
         if ($ConfLocaleOverride != $LocaleSources[$i] && file_exists($LocaleSources[$i])) // Don't double include the conf override file... and make sure it comes last
            $this->Load($LocaleSources[$i], FALSE);
      }

      // Also load any custom defined definitions from the conf directory
      if (file_exists($ConfLocaleOverride))
         $this->Load($ConfLocaleOverride, TRUE);
      
      // Prepare developer mode if needed
      $this->DeveloperMode = C('Garden.Locales.DeveloperMode', FALSE);
      if ($this->DeveloperMode) {
         $this->DeveloperContainer = new Gdn_Configuration();
         $this->DeveloperContainer->Splitting(FALSE);
         $this->DeveloperContainer->Caching(FALSE);
         
         $DeveloperCodeFile = PATH_CACHE."/locale-developer-{$LocaleName}.php";
         if (!file_exists($DeveloperCodeFile))
            touch($DeveloperCodeFile);
         
         $this->DeveloperContainer->Load($DeveloperCodeFile, 'Definition', TRUE);
      }
      
      // Import core (static) translations
      if ($this->DeveloperMode)
         $this->DeveloperContainer->MassImport($this->LocaleContainer->Get('.'));
      
      // Allow hooking custom definitions
      $this->FireEvent('AfterSet');
   }