code: void loadMessageBundle() {
  
          //Check if chosen site template is valid and not empty
          if (!m_fieldLoadSiteTemplate.isValid()
              | m_fieldLoadSiteTemplate.isEmpty()
              | !CmsSiteManager.isFolderWithMacros(m_clonedCms, m_fieldLoadSiteTemplate.getValue())) {
              return;
          }
          try {
              m_bundleComponentKeyMap = new HashMap<TextField, String>();
  
              //Get resource of the descriptor.
              CmsResource descriptor = m_clonedCms.readResource(
                  m_fieldLoadSiteTemplate.getValue()
                      + CmsSiteManager.MACRO_FOLDER
                      + "/"
                      + CmsSiteManager.BUNDLE_NAME
                      + "_desc");
              //Read related bundle
  
              Properties resourceBundle = getLocalizedBundle();
              Map<String, String[]> bundleKeyDescriptorMap = CmsMacroResolver.getBundleMapFromResources(
                  resourceBundle,
                  descriptor,
                  m_clonedCms);
  
              for (String key : bundleKeyDescriptorMap.keySet()) {
  
                  //Create TextField
                  TextField field = new TextField();
                  field.setCaption(bundleKeyDescriptorMap.get(key)[0]);
                  field.setValue(bundleKeyDescriptorMap.get(key)[1]);
                  field.setWidth("100%");
  
                  //Add vaadin component to UI and keep related key in HashMap
                  m_bundleValues.addComponent(field);
                  m_bundleComponentKeyMap.put(field, key);
              }
          } catch (CmsException | IOException e) {
              LOG.error("Error reading bundle", e);
          }
      }
docs: Loads message bundle from bundle defined inside the site-template which is used to create new site.<p>