summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2018-11-15 13:19:31 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-11-21 13:41:24 +0100
commit03f2c4eb95d7c2d22e4240f0ebccb65981a68c86 (patch)
tree2c4d3b0cd1e4e9a431bb60aeb6aeb98b8b42750e
parentb29fdf7611d7637886d8d0c50edf5544b928e635 (diff)
pocheck: don't throw away Plural-Forms header
also don't change POT creation date when rewriting a po file, update Po-Revision instead. When creating templates, put X-Accelerator before X-Generator (like pootle would order it) Change-Id: I7fec4cb1c50e27b87decd9a892de3f01a02253ed Reviewed-on: https://gerrit.libreoffice.org/63416 Tested-by: Jenkins Reviewed-by: Christian Lohmaier <lohmaier+LibreOffice@googlemail.com> (cherry picked from commit 9ffe350ae344e9863330fbb2405c37df6b9d0984) Reviewed-on: https://gerrit.libreoffice.org/63603 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--l10ntools/inc/po.hxx2
-rw-r--r--l10ntools/source/po.cxx36
-rw-r--r--l10ntools/source/pocheck.cxx5
3 files changed, 39 insertions, 4 deletions
diff --git a/l10ntools/inc/po.hxx b/l10ntools/inc/po.hxx
index e213f47e177a..aff8b88af100 100644
--- a/l10ntools/inc/po.hxx
+++ b/l10ntools/inc/po.hxx
@@ -88,6 +88,7 @@ public:
friend class PoIfstream;
PoHeader( const OString& rExtSrc ); ///< Template Constructor
+ PoHeader( const OString& rExtSrc, const OString& rPoHeaderMsgStr );
~PoHeader();
PoHeader(const PoHeader&) = delete;
PoHeader& operator=(const PoHeader&) = delete;
@@ -139,6 +140,7 @@ public:
bool eof() const { return m_bEof; }
void open(const OString& rFileName);
+ void open(const OString& rFileName, OString& sPoHeader);
void close();
void readEntry(PoEntry& rPo);
};
diff --git a/l10ntools/source/po.cxx b/l10ntools/source/po.cxx
index e784e3d025bb..a120c52cdc86 100644
--- a/l10ntools/source/po.cxx
+++ b/l10ntools/source/po.cxx
@@ -445,6 +445,16 @@ namespace
}
}
+// when updating existing files (pocheck), reuse provided po-header
+PoHeader::PoHeader( const OString& rExtSrc, const OString& rPoHeaderMsgStr )
+ : m_pGenPo( new GenPoEntry() )
+ , m_bIsInitialized( false )
+{
+ m_pGenPo->setExtractCom("extracted from " + rExtSrc);
+ m_pGenPo->setMsgStr(rPoHeaderMsgStr);
+ m_bIsInitialized = true;
+}
+
PoHeader::PoHeader( const OString& rExtSrc )
: m_pGenPo( new GenPoEntry() )
, m_bIsInitialized( false )
@@ -461,8 +471,8 @@ PoHeader::PoHeader( const OString& rExtSrc )
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
- "X-Generator: LibreOffice\n"
- "X-Accelerator-Marker: ~\n"));
+ "X-Accelerator-Marker: ~\n"
+ "X-Generator: LibreOffice\n"));
m_bIsInitialized = true;
}
@@ -561,6 +571,28 @@ PoIfstream::~PoIfstream()
}
}
+void PoIfstream::open( const OString& rFileName, OString& rPoHeader )
+{
+ assert( !isOpen() );
+ m_aInPut.open( rFileName.getStr(), std::ios_base::in );
+
+ // capture header, updating timestamp and generator
+ std::string sTemp;
+ std::getline(m_aInPut,sTemp);
+ while( !sTemp.empty() && !m_aInPut.eof() )
+ {
+ std::getline(m_aInPut,sTemp);
+ OString sLine = OString(sTemp.data(),sTemp.length());
+ if (sLine.startsWith("\"PO-Revision-Date"))
+ rPoHeader += "PO-Revision-Date: " + lcl_GetTime() + "\n";
+ else if (sLine.startsWith("\"X-Generator"))
+ rPoHeader += "X-Generator: LibreOffice\n";
+ else if (sLine.startsWith("\""))
+ rPoHeader += lcl_GenNormString(sLine);
+ }
+ m_bEof = false;
+}
+
void PoIfstream::open( const OString& rFileName )
{
assert( !isOpen() );
diff --git a/l10ntools/source/pocheck.cxx b/l10ntools/source/pocheck.cxx
index 4f7c7686757a..04b01121266d 100644
--- a/l10ntools/source/pocheck.cxx
+++ b/l10ntools/source/pocheck.cxx
@@ -90,7 +90,8 @@ static void checkStyleNames(const OString& aLanguage)
"\nSee STR_POOLNUMRULE_*\n\n";
}
}
- aPoInput.open(aPoPath);
+ OString sPoHdrMsg;
+ aPoInput.open(aPoPath, sPoHdrMsg);
if( !aPoInput.isOpen() )
{
std::cerr << "Warning: Cannot open " << aPoPath << std::endl;
@@ -98,7 +99,7 @@ static void checkStyleNames(const OString& aLanguage)
}
PoOfstream aPoOutput;
aPoOutput.open(aPoPath+".new");
- PoHeader aTmp("sw/inc");
+ PoHeader aTmp("sw/inc", sPoHdrMsg);
aPoOutput.writeHeader(aTmp);
bool bAnyError = false;