docs: private void loadLocalizationFromPropertyBundle(Locale locale) throws IOException, CmsException {
  
          // may throw exception again
          String sitePath = m_sitepath + m_basename + "_" + locale.toString();
          CmsResource resource = null;
          if (m_cms.existsResource(sitePath)) {
              resource = m_cms.readResource(sitePath);
              if (!OpenCms.getResourceManager().getResourceType(resource).getTypeName().equals(
                  CmsMessageBundleEditorTypes.BundleType.PROPERTY.toString())) {
                  throw new CmsException(
                      new CmsMessageContainer(
                          Messages.get(),
                          Messages.ERR_RESOURCE_HAS_WRONG_TYPE_2,
                          locale.getDisplayName(),
                          resource.getRootPath()));
              }
          } else {
              resource = m_cms.createResource(
                  sitePath,
                  OpenCms.getResourceManager().getResourceType(
                      CmsMessageBundleEditorTypes.BundleType.PROPERTY.toString()));
              LockedFile lf = LockedFile.lockResource(m_cms, resource);
              lf.setCreated(true);
              m_lockedBundleFiles.put(locale, lf);
          }
          m_bundleFiles.put(locale, resource);
          SortedProperties props = new SortedProperties();
          props.load(
              new InputStreamReader(
                  new ByteArrayInputStream(m_cms.readFile(resource).getContents()),
                  CmsFileUtil.getEncoding(m_cms, resource)));
          m_localizations.put(locale, props);
  
      }