/**
  * Explicitly set the locales that should be translated.
  * 
  * @example
  * <code>
  * // Set locales to en_US and fr_FR
  * TranslatableDataObject::set_locales(array('en_US', 'fr_FR'));
  * </code>
  * 
  * Defaults to `null`. In this case, locales are being taken from 
  * Translatable::get_allowed_locales or Translatable::get_existing_content_languages
  * 
  * @param array $locales an array of locales or null
  */
 public static function set_locales($locales)
 {
     if (is_array($locales)) {
         foreach ($locales as $locale) {
             if (i18n::validate_locale($locale)) {
                 if (!is_array(self::$locales)) {
                     self::$locales = array();
                 }
                 if (array_search($locale, self::$locales) === false) {
                     self::$locales[] = $locale;
                 }
             }
         }
     } else {
         self::$locales = null;
     }
 }