[projects] Implement translation support for project and layer metadata

This commit is contained in:
Mathieu Pellerin 2025-09-12 16:44:05 +07:00
parent 05477e03aa
commit fd0cb2c37d
20 changed files with 127 additions and 37 deletions

View File

@ -27,7 +27,7 @@ try:
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass
try: try:
QgsAbstractMetadataBase.__virtual_methods__ = ['readMetadataXml', 'writeMetadataXml', 'combine'] QgsAbstractMetadataBase.__virtual_methods__ = ['readMetadataXml', 'writeMetadataXml', 'combine', 'registerTranslations']
QgsAbstractMetadataBase.__abstract_methods__ = ['clone'] QgsAbstractMetadataBase.__abstract_methods__ = ['clone']
QgsAbstractMetadataBase.__group__ = ['metadata'] QgsAbstractMetadataBase.__group__ = ['metadata']
except (NameError, AttributeError): except (NameError, AttributeError):

View File

@ -14,7 +14,7 @@ try:
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass
try: try:
QgsLayerMetadata.__overridden_methods__ = ['clone', 'readMetadataXml', 'writeMetadataXml', 'combine'] QgsLayerMetadata.__overridden_methods__ = ['clone', 'readMetadataXml', 'writeMetadataXml', 'combine', 'registerTranslations']
QgsLayerMetadata.__group__ = ['metadata'] QgsLayerMetadata.__group__ = ['metadata']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -1,6 +1,6 @@
# The following has been generated automatically from src/core/metadata/qgsprojectmetadata.h # The following has been generated automatically from src/core/metadata/qgsprojectmetadata.h
try: try:
QgsProjectMetadata.__overridden_methods__ = ['clone', 'readMetadataXml', 'writeMetadataXml', 'combine'] QgsProjectMetadata.__overridden_methods__ = ['clone', 'readMetadataXml', 'writeMetadataXml', 'combine', 'registerTranslations']
QgsProjectMetadata.__group__ = ['metadata'] QgsProjectMetadata.__group__ = ['metadata']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -10,6 +10,7 @@
class QgsAbstractMetadataBase class QgsAbstractMetadataBase
{ {
%Docstring(signature="appended") %Docstring(signature="appended")
@ -436,7 +437,7 @@ Sets a date value for the specified date ``type``.
.. versionadded:: 3.30 .. versionadded:: 3.30
%End %End
virtual bool readMetadataXml( const QDomElement &metadataElement ); virtual bool readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context = QgsReadWriteContext() );
%Docstring %Docstring
Sets state from DOM document. Sets state from DOM document.
@ -449,7 +450,7 @@ Subclasses which override this method should take care to also call the
base class method in order to read common metadata properties. base class method in order to read common metadata properties.
%End %End
virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const; virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
%Docstring %Docstring
Stores state in a DOM node. Stores state in a DOM node.
@ -472,6 +473,11 @@ Any existing values in this object will be overwritten by non-empty
values from ``other``. values from ``other``.
.. versionadded:: 3.20 .. versionadded:: 3.20
%End
virtual void registerTranslations( QgsTranslationContext *translationContext ) const;
%Docstring
Registers metadata translation strings
%End %End
protected: protected:

View File

@ -282,12 +282,14 @@ Reads the metadata state from a ``layer``'s custom properties (see
.. seealso:: :py:func:`saveToLayer` .. seealso:: :py:func:`saveToLayer`
%End %End
virtual bool readMetadataXml( const QDomElement &metadataElement ); virtual bool readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context = QgsReadWriteContext() );
virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const; virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
virtual void combine( const QgsAbstractMetadataBase *other ); virtual void combine( const QgsAbstractMetadataBase *other );
virtual void registerTranslations( QgsTranslationContext *translationContext ) const;
bool operator==( const QgsLayerMetadata &metadataOther ) const; bool operator==( const QgsLayerMetadata &metadataOther ) const;

View File

@ -77,12 +77,14 @@ Sets the project's creation date/timestamp.
.. seealso:: :py:func:`creationDateTime` .. seealso:: :py:func:`creationDateTime`
%End %End
virtual bool readMetadataXml( const QDomElement &metadataElement ); virtual bool readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context = QgsReadWriteContext() );
virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const; virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
virtual void combine( const QgsAbstractMetadataBase *other ); virtual void combine( const QgsAbstractMetadataBase *other );
virtual void registerTranslations( QgsTranslationContext *translationContext ) const;
bool operator==( const QgsProjectMetadata &metadataOther ) const; bool operator==( const QgsProjectMetadata &metadataOther ) const;

View File

@ -27,7 +27,7 @@ try:
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass
try: try:
QgsAbstractMetadataBase.__virtual_methods__ = ['readMetadataXml', 'writeMetadataXml', 'combine'] QgsAbstractMetadataBase.__virtual_methods__ = ['readMetadataXml', 'writeMetadataXml', 'combine', 'registerTranslations']
QgsAbstractMetadataBase.__abstract_methods__ = ['clone'] QgsAbstractMetadataBase.__abstract_methods__ = ['clone']
QgsAbstractMetadataBase.__group__ = ['metadata'] QgsAbstractMetadataBase.__group__ = ['metadata']
except (NameError, AttributeError): except (NameError, AttributeError):

View File

@ -14,7 +14,7 @@ try:
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass
try: try:
QgsLayerMetadata.__overridden_methods__ = ['clone', 'readMetadataXml', 'writeMetadataXml', 'combine'] QgsLayerMetadata.__overridden_methods__ = ['clone', 'readMetadataXml', 'writeMetadataXml', 'combine', 'registerTranslations']
QgsLayerMetadata.__group__ = ['metadata'] QgsLayerMetadata.__group__ = ['metadata']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -1,6 +1,6 @@
# The following has been generated automatically from src/core/metadata/qgsprojectmetadata.h # The following has been generated automatically from src/core/metadata/qgsprojectmetadata.h
try: try:
QgsProjectMetadata.__overridden_methods__ = ['clone', 'readMetadataXml', 'writeMetadataXml', 'combine'] QgsProjectMetadata.__overridden_methods__ = ['clone', 'readMetadataXml', 'writeMetadataXml', 'combine', 'registerTranslations']
QgsProjectMetadata.__group__ = ['metadata'] QgsProjectMetadata.__group__ = ['metadata']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -10,6 +10,7 @@
class QgsAbstractMetadataBase class QgsAbstractMetadataBase
{ {
%Docstring(signature="appended") %Docstring(signature="appended")
@ -436,7 +437,7 @@ Sets a date value for the specified date ``type``.
.. versionadded:: 3.30 .. versionadded:: 3.30
%End %End
virtual bool readMetadataXml( const QDomElement &metadataElement ); virtual bool readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context = QgsReadWriteContext() );
%Docstring %Docstring
Sets state from DOM document. Sets state from DOM document.
@ -449,7 +450,7 @@ Subclasses which override this method should take care to also call the
base class method in order to read common metadata properties. base class method in order to read common metadata properties.
%End %End
virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const; virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
%Docstring %Docstring
Stores state in a DOM node. Stores state in a DOM node.
@ -472,6 +473,11 @@ Any existing values in this object will be overwritten by non-empty
values from ``other``. values from ``other``.
.. versionadded:: 3.20 .. versionadded:: 3.20
%End
virtual void registerTranslations( QgsTranslationContext *translationContext ) const;
%Docstring
Registers metadata translation strings
%End %End
protected: protected:

View File

@ -282,12 +282,14 @@ Reads the metadata state from a ``layer``'s custom properties (see
.. seealso:: :py:func:`saveToLayer` .. seealso:: :py:func:`saveToLayer`
%End %End
virtual bool readMetadataXml( const QDomElement &metadataElement ); virtual bool readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context = QgsReadWriteContext() );
virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const; virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
virtual void combine( const QgsAbstractMetadataBase *other ); virtual void combine( const QgsAbstractMetadataBase *other );
virtual void registerTranslations( QgsTranslationContext *translationContext ) const;
bool operator==( const QgsLayerMetadata &metadataOther ) const; bool operator==( const QgsLayerMetadata &metadataOther ) const;

View File

@ -77,12 +77,14 @@ Sets the project's creation date/timestamp.
.. seealso:: :py:func:`creationDateTime` .. seealso:: :py:func:`creationDateTime`
%End %End
virtual bool readMetadataXml( const QDomElement &metadataElement ); virtual bool readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context = QgsReadWriteContext() );
virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const; virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
virtual void combine( const QgsAbstractMetadataBase *other ); virtual void combine( const QgsAbstractMetadataBase *other );
virtual void registerTranslations( QgsTranslationContext *translationContext ) const;
bool operator==( const QgsProjectMetadata &metadataOther ) const; bool operator==( const QgsProjectMetadata &metadataOther ) const;

View File

@ -17,6 +17,7 @@
#include "qgsabstractmetadatabase.h" #include "qgsabstractmetadatabase.h"
#include "qgsmaplayer.h" #include "qgsmaplayer.h"
#include "qgstranslationcontext.h"
QString QgsAbstractMetadataBase::identifier() const QString QgsAbstractMetadataBase::identifier() const
{ {
@ -183,7 +184,7 @@ void QgsAbstractMetadataBase::setLanguage( const QString &language )
mLanguage = language; mLanguage = language;
} }
bool QgsAbstractMetadataBase::readMetadataXml( const QDomElement &metadataElement ) bool QgsAbstractMetadataBase::readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context )
{ {
QDomNode mnl; QDomNode mnl;
QDomElement mne; QDomElement mne;
@ -212,6 +213,13 @@ bool QgsAbstractMetadataBase::readMetadataXml( const QDomElement &metadataElemen
mnl = metadataElement.namedItem( QStringLiteral( "abstract" ) ); mnl = metadataElement.namedItem( QStringLiteral( "abstract" ) );
mAbstract = mnl.toElement().text(); mAbstract = mnl.toElement().text();
if ( context.projectTranslator() )
{
mType = context.projectTranslator()->translate( "metadata", mType );
mTitle = context.projectTranslator()->translate( "metadata", mTitle );
mAbstract = context.projectTranslator()->translate( "metadata", mAbstract );
}
// set keywords // set keywords
const QDomNodeList keywords = metadataElement.elementsByTagName( QStringLiteral( "keywords" ) ); const QDomNodeList keywords = metadataElement.elementsByTagName( QStringLiteral( "keywords" ) );
mKeywords.clear(); mKeywords.clear();
@ -315,7 +323,7 @@ bool QgsAbstractMetadataBase::readMetadataXml( const QDomElement &metadataElemen
return true; return true;
} }
bool QgsAbstractMetadataBase::writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const bool QgsAbstractMetadataBase::writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext & ) const
{ {
// identifier // identifier
QDomElement identifier = document.createElement( QStringLiteral( "identifier" ) ); QDomElement identifier = document.createElement( QStringLiteral( "identifier" ) );
@ -481,6 +489,22 @@ bool QgsAbstractMetadataBase::writeMetadataXml( QDomElement &metadataElement, QD
return true; return true;
} }
void QgsAbstractMetadataBase::registerTranslations( QgsTranslationContext *translationContext ) const
{
if ( !mTitle.isEmpty() )
{
translationContext->registerTranslation( QStringLiteral( "metadata" ), mTitle );
}
if ( !mType.isEmpty() )
{
translationContext->registerTranslation( QStringLiteral( "metadata" ), mType );
}
if ( !mAbstract.isEmpty() )
{
translationContext->registerTranslation( QStringLiteral( "metadata" ), mAbstract );
}
}
void QgsAbstractMetadataBase::combine( const QgsAbstractMetadataBase *other ) void QgsAbstractMetadataBase::combine( const QgsAbstractMetadataBase *other )
{ {
if ( !other ) if ( !other )

View File

@ -21,12 +21,15 @@
#include "qgis_sip.h" #include "qgis_sip.h"
#include "qgis_core.h" #include "qgis_core.h"
#include "qgis.h" #include "qgis.h"
#include "qgsreadwritecontext.h"
#include <QMap> #include <QMap>
#include <QString> #include <QString>
#include <QMetaType> #include <QMetaType>
class QDomElement; class QDomElement;
class QDomDocument; class QDomDocument;
class QgsTranslationContext;
/** /**
* \ingroup core * \ingroup core
@ -529,7 +532,7 @@ class CORE_EXPORT QgsAbstractMetadataBase
* Subclasses which override this method should take care to also call the base * Subclasses which override this method should take care to also call the base
* class method in order to read common metadata properties. * class method in order to read common metadata properties.
*/ */
virtual bool readMetadataXml( const QDomElement &metadataElement ); virtual bool readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context = QgsReadWriteContext() );
/** /**
* Stores state in a DOM node. * Stores state in a DOM node.
@ -542,7 +545,7 @@ class CORE_EXPORT QgsAbstractMetadataBase
* Subclasses which override this method should take care to also call the base * Subclasses which override this method should take care to also call the base
* class method in order to write common metadata properties. * class method in order to write common metadata properties.
*/ */
virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const; virtual bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context = QgsReadWriteContext() ) const;
/** /**
* Combines the metadata from this object with the metadata from an \a other object. * Combines the metadata from this object with the metadata from an \a other object.
@ -553,6 +556,11 @@ class CORE_EXPORT QgsAbstractMetadataBase
*/ */
virtual void combine( const QgsAbstractMetadataBase *other ); virtual void combine( const QgsAbstractMetadataBase *other );
/**
* Registers metadata translation strings
*/
virtual void registerTranslations( QgsTranslationContext *translationContext ) const;
protected: protected:
/** /**

View File

@ -17,6 +17,8 @@
#include "qgslayermetadata.h" #include "qgslayermetadata.h"
#include "qgsmaplayer.h" #include "qgsmaplayer.h"
#include "qgstranslationcontext.h"
#include <QRegularExpression> #include <QRegularExpression>
QgsLayerMetadata *QgsLayerMetadata::clone() const QgsLayerMetadata *QgsLayerMetadata::clone() const
@ -132,9 +134,9 @@ void QgsLayerMetadata::readFromLayer( const QgsMapLayer *layer )
mLinks = layer->customProperty( QStringLiteral( "metadata/links" ) ).value<QgsAbstractMetadataBase::LinkList>(); mLinks = layer->customProperty( QStringLiteral( "metadata/links" ) ).value<QgsAbstractMetadataBase::LinkList>();
} }
bool QgsLayerMetadata::readMetadataXml( const QDomElement &metadataElement ) bool QgsLayerMetadata::readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context )
{ {
QgsAbstractMetadataBase::readMetadataXml( metadataElement ); QgsAbstractMetadataBase::readMetadataXml( metadataElement, context );
QDomNode mnl; QDomNode mnl;
QDomElement mne; QDomElement mne;
@ -160,6 +162,11 @@ bool QgsLayerMetadata::readMetadataXml( const QDomElement &metadataElement )
{ {
mnl = rightsNodeList.at( i ); mnl = rightsNodeList.at( i );
mne = mnl.toElement(); mne = mnl.toElement();
QString right = mne.text();
if ( context.projectTranslator() )
{
right = context.projectTranslator()->translate( "metadata", right );
}
rightsList.append( mne.text() ); rightsList.append( mne.text() );
} }
setRights( rightsList ); setRights( rightsList );
@ -240,9 +247,9 @@ bool QgsLayerMetadata::readMetadataXml( const QDomElement &metadataElement )
return true; return true;
} }
bool QgsLayerMetadata::writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const bool QgsLayerMetadata::writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context ) const
{ {
QgsAbstractMetadataBase::writeMetadataXml( metadataElement, document ); QgsAbstractMetadataBase::writeMetadataXml( metadataElement, document, context );
// fees // fees
QDomElement fees = document.createElement( QStringLiteral( "fees" ) ); QDomElement fees = document.createElement( QStringLiteral( "fees" ) );
@ -342,6 +349,16 @@ bool QgsLayerMetadata::writeMetadataXml( QDomElement &metadataElement, QDomDocum
return true; return true;
} }
void QgsLayerMetadata::registerTranslations( QgsTranslationContext *translationContext ) const
{
QgsAbstractMetadataBase::registerTranslations( translationContext );
for ( const QString &right : std::as_const( mRights ) )
{
translationContext->registerTranslation( QStringLiteral( "metadata" ), right );
}
}
void QgsLayerMetadata::combine( const QgsAbstractMetadataBase *other ) void QgsLayerMetadata::combine( const QgsAbstractMetadataBase *other )
{ {
QgsAbstractMetadataBase::combine( other ); QgsAbstractMetadataBase::combine( other );

View File

@ -313,9 +313,10 @@ class CORE_EXPORT QgsLayerMetadata : public QgsAbstractMetadataBase
*/ */
void readFromLayer( const QgsMapLayer *layer ); void readFromLayer( const QgsMapLayer *layer );
bool readMetadataXml( const QDomElement &metadataElement ) override; bool readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context = QgsReadWriteContext() ) override;
bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const override; bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context = QgsReadWriteContext() ) const override;
void combine( const QgsAbstractMetadataBase *other ) override; void combine( const QgsAbstractMetadataBase *other ) override;
void registerTranslations( QgsTranslationContext *translationContext ) const override;
bool operator==( const QgsLayerMetadata &metadataOther ) const; bool operator==( const QgsLayerMetadata &metadataOther ) const;

View File

@ -16,12 +16,14 @@
***************************************************************************/ ***************************************************************************/
#include "qgsprojectmetadata.h" #include "qgsprojectmetadata.h"
#include "qgstranslationcontext.h"
#include <QDomNode> #include <QDomNode>
#include <QDomDocument> #include <QDomDocument>
bool QgsProjectMetadata::readMetadataXml( const QDomElement &metadataElement ) bool QgsProjectMetadata::readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context )
{ {
QgsAbstractMetadataBase::readMetadataXml( metadataElement ); QgsAbstractMetadataBase::readMetadataXml( metadataElement, context );
QDomNode mnl; QDomNode mnl;
@ -29,6 +31,11 @@ bool QgsProjectMetadata::readMetadataXml( const QDomElement &metadataElement )
mnl = metadataElement.namedItem( QStringLiteral( "author" ) ); mnl = metadataElement.namedItem( QStringLiteral( "author" ) );
mAuthor = mnl.toElement().text(); mAuthor = mnl.toElement().text();
if ( context.projectTranslator() )
{
mAuthor = context.projectTranslator()->translate( "metadata", mAuthor );
}
if ( !mDates.contains( Qgis::MetadataDateType::Created ) ) if ( !mDates.contains( Qgis::MetadataDateType::Created ) )
{ {
// creation datetime -- old format // creation datetime -- old format
@ -40,9 +47,9 @@ bool QgsProjectMetadata::readMetadataXml( const QDomElement &metadataElement )
return true; return true;
} }
bool QgsProjectMetadata::writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const bool QgsProjectMetadata::writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context ) const
{ {
QgsAbstractMetadataBase::writeMetadataXml( metadataElement, document ); QgsAbstractMetadataBase::writeMetadataXml( metadataElement, document, context );
// author // author
QDomElement author = document.createElement( QStringLiteral( "author" ) ); QDomElement author = document.createElement( QStringLiteral( "author" ) );
@ -59,6 +66,13 @@ bool QgsProjectMetadata::writeMetadataXml( QDomElement &metadataElement, QDomDoc
return true; return true;
} }
void QgsProjectMetadata::registerTranslations( QgsTranslationContext *translationContext ) const
{
QgsAbstractMetadataBase::registerTranslations( translationContext );
translationContext->registerTranslation( QStringLiteral( "metadata" ), mAuthor );
}
void QgsProjectMetadata::combine( const QgsAbstractMetadataBase *other ) void QgsProjectMetadata::combine( const QgsAbstractMetadataBase *other )
{ {
QgsAbstractMetadataBase::combine( other ); QgsAbstractMetadataBase::combine( other );

View File

@ -82,9 +82,10 @@ class CORE_EXPORT QgsProjectMetadata : public QgsAbstractMetadataBase
*/ */
void setCreationDateTime( const QDateTime &creationDateTime ); void setCreationDateTime( const QDateTime &creationDateTime );
bool readMetadataXml( const QDomElement &metadataElement ) override; bool readMetadataXml( const QDomElement &metadataElement, const QgsReadWriteContext &context = QgsReadWriteContext() ) override;
bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document ) const override; bool writeMetadataXml( QDomElement &metadataElement, QDomDocument &document, const QgsReadWriteContext &context = QgsReadWriteContext() ) const override;
void combine( const QgsAbstractMetadataBase *other ) override; void combine( const QgsAbstractMetadataBase *other ) override;
void registerTranslations( QgsTranslationContext *translationContext ) const override;
bool operator==( const QgsProjectMetadata &metadataOther ) const; bool operator==( const QgsProjectMetadata &metadataOther ) const;

View File

@ -685,6 +685,9 @@ void QgsProject::registerTranslatableObjects( QgsTranslationContext *translation
registerTranslatableContainers( translationContext, vlayer->editFormConfig().invisibleRootContainer(), vlayer->id() ); registerTranslatableContainers( translationContext, vlayer->editFormConfig().invisibleRootContainer(), vlayer->id() );
} }
//register metadata
mapLayer->metadata().registerTranslations( translationContext );
} }
//register layergroups //register layergroups
@ -700,6 +703,9 @@ void QgsProject::registerTranslatableObjects( QgsTranslationContext *translation
{ {
translationContext->registerTranslation( QStringLiteral( "project:relations" ), relation.name() ); translationContext->registerTranslation( QStringLiteral( "project:relations" ), relation.name() );
} }
//register metadata
mMetadata.registerTranslations( translationContext );
} }
void QgsProject::setDataDefinedServerProperties( const QgsPropertyCollection &properties ) void QgsProject::setDataDefinedServerProperties( const QgsPropertyCollection &properties )
@ -2306,7 +2312,7 @@ bool QgsProject::readProjectFile( const QString &filename, Qgis::ProjectReadFlag
if ( !element.isNull() ) if ( !element.isNull() )
{ {
mMetadata.readMetadataXml( element ); mMetadata.readMetadataXml( element, context );
} }
else else
{ {
@ -2670,7 +2676,6 @@ bool QgsProject::readProjectFile( const QString &filename, Qgis::ProjectReadFlag
if ( write() ) if ( write() )
{ {
setTitle( localeFileName );
QgsMessageLog::logMessage( tr( "Translated project saved with locale prefix %1" ).arg( newFileName ), QObject::tr( "Project translation" ), Qgis::MessageLevel::Success ); QgsMessageLog::logMessage( tr( "Translated project saved with locale prefix %1" ).arg( newFileName ), QObject::tr( "Project translation" ), Qgis::MessageLevel::Success );
} }
else else

View File

@ -687,7 +687,7 @@ bool QgsMapLayer::readLayerXml( const QDomElement &layerElement, QgsReadWriteCon
// mMetadata.readFromLayer( this ); // mMetadata.readFromLayer( this );
const QDomElement metadataElem = layerElement.firstChildElement( QStringLiteral( "resourceMetadata" ) ); const QDomElement metadataElem = layerElement.firstChildElement( QStringLiteral( "resourceMetadata" ) );
mMetadata.readMetadataXml( metadataElem ); mMetadata.readMetadataXml( metadataElem, context );
setAutoRefreshInterval( layerElement.attribute( QStringLiteral( "autoRefreshTime" ), QStringLiteral( "0" ) ).toInt() ); setAutoRefreshInterval( layerElement.attribute( QStringLiteral( "autoRefreshTime" ), QStringLiteral( "0" ) ).toInt() );
if ( layerElement.hasAttribute( QStringLiteral( "autoRefreshMode" ) ) ) if ( layerElement.hasAttribute( QStringLiteral( "autoRefreshMode" ) ) )