code: protected void copyLocaleRelations() throws CmsException {
  
          long start = System.currentTimeMillis();
          List<CmsRelation> localeRelations = m_cms.readRelations(
              CmsRelationFilter.ALL.filterType(CmsRelationType.LOCALE_VARIANT));
          for (CmsRelation rel : localeRelations) {
              if (isInSources(rel.getSourcePath()) && isInSources(rel.getTargetPath())) {
                  CmsResource newRelationSource = m_translationsById.get(rel.getSourceId());
                  CmsResource newRelationTarget = m_translationsById.get(rel.getTargetId());
                  if ((newRelationSource != null) && (newRelationTarget != null)) {
                      try {
                          m_cms.addRelationToResource(
                              newRelationSource,
                              newRelationTarget,
                              CmsRelationType.LOCALE_VARIANT.getName());
                      } catch (CmsException e) {
                          LOG.error("Could not transfer locale relation: " + e.getLocalizedMessage(), e);
                      }
                  } else {
                      LOG.warn("Could not transfer locale relation because source/target not found in copy: " + rel);
                  }
              }
          }
          long end = System.currentTimeMillis();
          LOG.info("Copied locale relations, took " + (end - start) + "ms");
      }
docs: Separate method for copying locale relations..<p>
  
  This is necessary because the default copy mechanism does not copy locale relations.
  
  @throws CmsException if something goes wrong