Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgstranslationcontext.cpp 3 : : 4 : : --------------------- 5 : : begin : 23.5.2018 6 : : copyright : (C) 2018 by David Signer 7 : : email : david at opengis dot ch 8 : : *************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : #include "qgstranslationcontext.h" 17 : : 18 : : #include <QDir> 19 : : #include <QTextStream> 20 : : #include <QDomElement> 21 : : #include <QDomDocument> 22 : : 23 : : #include "qgssettings.h" 24 : : 25 : 0 : QgsProject *QgsTranslationContext::project() const 26 : : { 27 : 0 : return mProject; 28 : : } 29 : : 30 : 0 : void QgsTranslationContext::setProject( QgsProject *project ) 31 : : { 32 : 0 : mProject = project; 33 : 0 : } 34 : : 35 : 0 : QString QgsTranslationContext::fileName() const 36 : : { 37 : 0 : return mFileName; 38 : : } 39 : : 40 : 0 : void QgsTranslationContext::setFileName( const QString &fileName ) 41 : : { 42 : 0 : mFileName = fileName; 43 : 0 : } 44 : : 45 : 0 : void QgsTranslationContext::registerTranslation( const QString &context, const QString &source ) 46 : : { 47 : 0 : TranslatableObject translatableObject; 48 : 0 : translatableObject.context = context; 49 : 0 : translatableObject.source = source; 50 : 0 : mTranslatableObjects.append( translatableObject ); 51 : 0 : } 52 : : 53 : 0 : void QgsTranslationContext::writeTsFile( const QString &locale ) 54 : : { 55 : : //write xml 56 : 0 : QDomDocument doc( QStringLiteral( "TS" ) ); 57 : : 58 : 0 : QDomElement tsElement = doc.createElement( QStringLiteral( "TS" ) ); 59 : 0 : tsElement.setAttribute( QStringLiteral( "sourcelanguage" ), locale ); 60 : 0 : doc.appendChild( tsElement ); 61 : : 62 : 0 : for ( const TranslatableObject &translatableObject : mTranslatableObjects ) 63 : : { 64 : 0 : QDomElement contextElement = doc.createElement( QStringLiteral( "context" ) ); 65 : 0 : tsElement.appendChild( contextElement ); 66 : : 67 : 0 : QDomElement nameElement = doc.createElement( QStringLiteral( "name" ) ); 68 : 0 : QDomText nameText = doc.createTextNode( translatableObject.context ); 69 : 0 : nameElement.appendChild( nameText ); 70 : 0 : contextElement.appendChild( nameElement ); 71 : : 72 : 0 : QDomElement messageElement = doc.createElement( QStringLiteral( "message" ) ); 73 : 0 : contextElement.appendChild( messageElement ); 74 : : 75 : 0 : QDomElement sourceElement = doc.createElement( QStringLiteral( "source" ) ); 76 : 0 : QDomText sourceText = doc.createTextNode( translatableObject.source ); 77 : 0 : sourceElement.appendChild( sourceText ); 78 : 0 : messageElement.appendChild( sourceElement ); 79 : : 80 : 0 : QDomElement translationElement = doc.createElement( QStringLiteral( "translation" ) ); 81 : 0 : translationElement.setAttribute( QStringLiteral( "type" ), QStringLiteral( "unfinished" ) ); 82 : 0 : messageElement.appendChild( translationElement ); 83 : 0 : } 84 : : 85 : : //write file 86 : 0 : QFile tsFile( fileName() ); 87 : 0 : tsFile.open( QIODevice::WriteOnly ); 88 : 0 : QTextStream stream( &tsFile ); 89 : 0 : stream << doc.toString(); 90 : 0 : tsFile.close(); 91 : 0 : }