/**
  * Retrives the list of all languages available on the l10n server
  */
 public static function getAvailableLanguages()
 {
     if (is_array(self::$availableLanguages) && !empty(self::$availableLanguages)) {
         return self::$availableLanguages;
     }
     try {
         $l10nInfo = self::getServerInfo();
     } catch (FailedServiceException $e) {
         throw new FailedServiceException();
     }
     self::$availableLanguages = array();
     foreach ($l10nInfo->languages->language as $language) {
         self::$availableLanguages[$language->code] = array('code' => $language->code, 'name' => $language->name, 'nativeName' => $language->native);
     }
     if (is_array(self::$availableLanguages) && !empty(self::$availableLanguages)) {
         return self::$availableLanguages;
     }
     throw new FailedServiceException();
 }