code: public static DPTXlator createTranslator(int mainNumber, String dptID)
  		throws KNXException
  	{
  		try {
  			final int main = getMainNumber(mainNumber, dptID);
  			final MainType type = (MainType) map.get(new Integer(main));
  			if (type != null)
  				return type.createTranslator(dptID);
  		}
  		catch (final NumberFormatException e) {}
  		throw new KNXException("main number not found for " + dptID);
  	}
docs: Creates a DPT translator for the given datapoint type ID.
  <p>
  The translation behavior of a DPT translator instance is uniquely defined by the
  supplied datapoint type ID.
  <p>
  If the <code>dptID</code> argument is built up the recommended way, that is "<i>main
  number</i>.<i>sub number</i>", the <code>mainNumber</code> argument might be
  left 0 to use the datapoint type ID only.<br>
  Note, that we don't enforce any particular or standardized format on the dptID
  structure, so using a different formatted dptID solely without main number argument
  results in undefined behavior.
  
  @param mainNumber data type main number, number >= 0; use 0 to infer translator
  type from <code>dptID</code> argument only
  @param dptID datapoint type ID for selecting a particular kind of value translation
  @return the new {@link DPTXlator} object
  @throws KNXException on main type not found or creation failed (refer to
  {@link MainType#createTranslator(String)})