code: public static Map<String, String[]> getBundleMapFromResources(
          Properties resourceBundle,
          CmsResource descriptor,
          CmsObject clonedCms)
      throws CmsXmlException, CmsException {
  
          Map<String, String[]> ret = new LinkedHashMap<String, String[]>();
  
          //Read XML content of descriptor
          CmsXmlContent xmlContentDesc = CmsXmlContentFactory.unmarshal(clonedCms, clonedCms.readFile(descriptor));
          CmsXmlContentValueSequence messages = xmlContentDesc.getValueSequence(Descriptor.N_MESSAGE, Descriptor.LOCALE);
  
          //Iterate through content
          for (int i = 0; i < messages.getElementCount(); i++) {
  
              //Read key and default text from descriptor, label from bundle (localized)
              String prefix = messages.getValue(i).getPath() + "/";
              String key = xmlContentDesc.getValue(prefix + Descriptor.N_KEY, Descriptor.LOCALE).getStringValue(
                  clonedCms);
              String label = resourceBundle.getProperty(key);
              String defaultText = xmlContentDesc.getValue(
                  prefix + Descriptor.N_DESCRIPTION,
                  Descriptor.LOCALE).getStringValue(clonedCms);
  
              ret.put(key, new String[] {label, defaultText});
          }
          return ret;
      }
docs: Reads a bundle (key, value, descriptor) from Descriptor Resource and property resource.<p>
  
  @param resourceBundle property resource
  @param descriptor resource
  @param clonedCms cms instance
  @return Map <key, [value, descriptor]>
  @throws CmsXmlException exception
  @throws CmsException exception