summaryrefslogtreecommitdiff
path: root/l10ntools
diff options
context:
space:
mode:
authorjan iversen <jani@documentfoundation.org>2016-03-20 11:18:06 +0100
committerjan iversen <jani@documentfoundation.org>2016-03-22 16:32:19 +0100
commitfe150b57b6c146cb174bfe066d4f6a2ba9b65760 (patch)
treef54ad472b238ce8ae12fcc171c16f1fd5666f8d1 /l10ntools
parent40a218baf8823d883c8d9d2839ff95780e7ff0ed (diff)
genlang, generating .pot files for .xrm files
Solved new pot directory structure only tested .xrm files, but should be able to extract all .pot files. The LO tools generated the KID as part of the msg, this is not implemented. msgctxt is used as comments, this requires a slight change of the lex programs. Change-Id: Id9aadbd419fb44b73b633410f7dddd90d310ee8d
Diffstat (limited to 'l10ntools')
-rw-r--r--l10ntools/inc/gConv.hxx8
-rw-r--r--l10ntools/inc/gConvPo.hxx5
-rw-r--r--l10ntools/inc/gConvProp.hxx2
-rw-r--r--l10ntools/inc/gConvSrc.hxx2
-rw-r--r--l10ntools/inc/gConvTree.hxx2
-rw-r--r--l10ntools/inc/gConvUlf.hxx2
-rw-r--r--l10ntools/inc/gConvXcs.hxx2
-rw-r--r--l10ntools/inc/gConvXcu.hxx2
-rw-r--r--l10ntools/inc/gConvXhp.hxx2
-rw-r--r--l10ntools/inc/gConvXrm.hxx2
-rw-r--r--l10ntools/source/gConv.cxx42
-rw-r--r--l10ntools/source/gConvPo.cxx99
-rw-r--r--l10ntools/source/gConvProp.cxx2
-rw-r--r--l10ntools/source/gConvSrc.cxx2
-rw-r--r--l10ntools/source/gConvTree.cxx2
-rw-r--r--l10ntools/source/gConvUlf.cxx2
-rw-r--r--l10ntools/source/gConvXcs.cxx2
-rw-r--r--l10ntools/source/gConvXcu.cxx2
-rw-r--r--l10ntools/source/gConvXhp.cxx2
-rw-r--r--l10ntools/source/gConvXrm.cxx2
-rw-r--r--l10ntools/source/gL10nMem.cxx168
-rw-r--r--l10ntools/source/gLang.cxx37
22 files changed, 190 insertions, 201 deletions
diff --git a/l10ntools/inc/gConv.hxx b/l10ntools/inc/gConv.hxx
index cda748346308..3f0f2137370b 100644
--- a/l10ntools/inc/gConv.hxx
+++ b/l10ntools/inc/gConv.hxx
@@ -36,10 +36,10 @@ class convert_gen
const std::string& sSourceFile);
// do extract/merge
- bool execute(const bool bMerge, const bool bKid);
+ bool execute(const bool bMerge);
// all converters MUST implement this function
- virtual void execute() = 0;
+ virtual void doExecute() = 0;
// utility functions for converters
void lexRead(char *sBuf, int *nResult, int nMax_size);
@@ -62,9 +62,9 @@ class convert_gen
// utility functions for converters
void writeSourceFile(const std::string& line);
- static bool checkAccess(std::string& sFile);
- static bool createDir(std::string& sDir, std::string& sFile);
+ bool createDir(const std::string& sDir, const std::string& sFile);
private:
std::ofstream mcOutputFile;
+ bool checkAccess(std::string& sFile);
};
#endif
diff --git a/l10ntools/inc/gConvPo.hxx b/l10ntools/inc/gConvPo.hxx
index 7ca45bff93a2..4511a27e8981 100644
--- a/l10ntools/inc/gConvPo.hxx
+++ b/l10ntools/inc/gConvPo.hxx
@@ -42,7 +42,8 @@ class convert_po : public convert_gen
void handleNL ();
// Used to save .pot files
- void startSave(const std::string& sLanguage,
+ void startSave(const std::string& sName,
+ const std::string& sTargetDir,
const std::string& sFile);
void save(const std::string& sFileName,
const std::string& sKey,
@@ -58,6 +59,6 @@ class convert_po : public convert_gen
bool mbFuzzy;
std::filebuf outBuffer;
- void execute() override;
+ void doExecute() override;
};
#endif
diff --git a/l10ntools/inc/gConvProp.hxx b/l10ntools/inc/gConvProp.hxx
index 9e7f6e7b4758..819e92597cc9 100644
--- a/l10ntools/inc/gConvProp.hxx
+++ b/l10ntools/inc/gConvProp.hxx
@@ -29,6 +29,6 @@ class convert_prop : public convert_gen
~convert_prop();
private:
- void execute() override;
+ void doExecute() override;
};
#endif
diff --git a/l10ntools/inc/gConvSrc.hxx b/l10ntools/inc/gConvSrc.hxx
index 8df5d6c79330..69d339eb22d9 100644
--- a/l10ntools/inc/gConvSrc.hxx
+++ b/l10ntools/inc/gConvSrc.hxx
@@ -58,7 +58,7 @@ class convert_src : public convert_gen
bool mbInListItem;
int miListCount;
int miMacroLevel;
- void execute() override;
+ void doExecute() override;
void trim(std::string& sText);
void buildKey(std::string& sKey);
void insertLanguagePart(std::string& sKey, std::string& sTextType);
diff --git a/l10ntools/inc/gConvTree.hxx b/l10ntools/inc/gConvTree.hxx
index 0807069fdbec..f795aa9cca02 100644
--- a/l10ntools/inc/gConvTree.hxx
+++ b/l10ntools/inc/gConvTree.hxx
@@ -57,6 +57,6 @@ class convert_tree : public convert_gen
STATE_VAL meStateVal;
int miCntLanguages;
- void execute() override;
+ void doExecute() override;
};
#endif
diff --git a/l10ntools/inc/gConvUlf.hxx b/l10ntools/inc/gConvUlf.hxx
index 234c60e4aada..255d15fdd927 100644
--- a/l10ntools/inc/gConvUlf.hxx
+++ b/l10ntools/inc/gConvUlf.hxx
@@ -35,7 +35,7 @@ class convert_ulf : public convert_gen
private:
std::string msKey;
- void execute() override;
+ void doExecute() override;
void handleLines();
};
#endif
diff --git a/l10ntools/inc/gConvXcs.hxx b/l10ntools/inc/gConvXcs.hxx
index 3444907c5beb..26f4ed9b7a84 100644
--- a/l10ntools/inc/gConvXcs.hxx
+++ b/l10ntools/inc/gConvXcs.hxx
@@ -37,6 +37,6 @@ class convert_xcs : public convert_gen
std::string msKey;
bool mbCollectingData;
- void execute() override;
+ void doExecute() override;
};
#endif
diff --git a/l10ntools/inc/gConvXcu.hxx b/l10ntools/inc/gConvXcu.hxx
index 3e49f5285396..a9815cf270e4 100644
--- a/l10ntools/inc/gConvXcu.hxx
+++ b/l10ntools/inc/gConvXcu.hxx
@@ -45,6 +45,6 @@ class convert_xcu : public convert_gen
int miLevel;
bool mbNoTranslate;
- void execute() override;
+ void doExecute() override;
};
#endif
diff --git a/l10ntools/inc/gConvXhp.hxx b/l10ntools/inc/gConvXhp.hxx
index c33e3b7abfc4..404a69b52dab 100644
--- a/l10ntools/inc/gConvXhp.hxx
+++ b/l10ntools/inc/gConvXhp.hxx
@@ -60,6 +60,6 @@ class convert_xhp : public convert_gen
std::string *msLangText;
std::ofstream *mcOutputFiles;
int miCntLanguages;
- void execute() override;
+ void doExecute() override;
};
#endif
diff --git a/l10ntools/inc/gConvXrm.hxx b/l10ntools/inc/gConvXrm.hxx
index cb6e4a7bf5b8..e0b32474aa11 100644
--- a/l10ntools/inc/gConvXrm.hxx
+++ b/l10ntools/inc/gConvXrm.hxx
@@ -41,6 +41,6 @@ class convert_xrm : public convert_gen
bool mbIsLang;
std::string msTag;
- void execute() override;
+ void doExecute() override;
};
#endif
diff --git a/l10ntools/source/gConv.cxx b/l10ntools/source/gConv.cxx
index d2446230497e..2dc4f126fccd 100644
--- a/l10ntools/source/gConv.cxx
+++ b/l10ntools/source/gConv.cxx
@@ -18,6 +18,7 @@
*/
#include <string>
#include <vector>
+using namespace std;
#include "gL10nMem.hxx"
#include "gConv.hxx"
@@ -60,17 +61,17 @@ convert_gen::~convert_gen()
convert_gen& convert_gen::createInstance(l10nMem& cMemory,
- const std::string& sSourceDir,
- const std::string& sTargetDir,
- const std::string& sSourceFile)
+ const string& sSourceDir,
+ const string& sTargetDir,
+ const string& sSourceFile)
{
// did the user give a .xxx with the source file ?
int nInx = sSourceFile.rfind(".");
- if (nInx == (int)std::string::npos)
+ if (nInx == (int)string::npos)
throw l10nMem::showError("source file: "+sSourceFile+" missing extension");
// find correct conversion class and create correct object
- std::string sExtension = sSourceFile.substr(nInx+1);
+ string sExtension = sSourceFile.substr(nInx+1);
convert_gen *x;
if (sExtension == "hrc") x = new convert_src(cMemory);
else if (sExtension == "src") x = new convert_src(cMemory);
@@ -93,40 +94,37 @@ convert_gen& convert_gen::createInstance(l10nMem& cMemory,
-bool convert_gen::execute(const bool bMerge, const bool bKid)
+bool convert_gen::execute(const bool bMerge)
{
mbMergeMode = bMerge;
- if (bKid)
- throw l10nMem::showError("not implemented");
-
// and load file
if (!prepareFile())
return false;
// and execute conversion
- execute();
+ doExecute();
return true;
}
-bool convert_gen::checkAccess(std::string& sFile)
+bool convert_gen::checkAccess(string& sFile)
{
return (OS_ACCESS(sFile.c_str(), 0) == 0);
}
-bool convert_gen::createDir(std::string& sDir, std::string& sFile)
+bool convert_gen::createDir(const string& sDir, const string& sFile)
{
- std::string sNewDir(sDir);
+ string sNewDir(sDir);
int newPos, oldPos;
for (oldPos = 0;; oldPos = newPos +1) {
newPos = sFile.find_first_of("/\\", oldPos);
- if (newPos == (int)std::string::npos)
+ if (newPos == (int)string::npos)
break;
sNewDir += sFile.substr(oldPos, newPos-oldPos) + "/";
@@ -142,7 +140,7 @@ bool convert_gen::createDir(std::string& sDir, std::string& sFile)
bool convert_gen::prepareFile()
{
- std::ifstream inputFile(msSourcePath.c_str(), std::ios::binary);
+ ifstream inputFile(msSourcePath.c_str(), ios::binary);
if (!inputFile.is_open()) {
@@ -156,11 +154,11 @@ bool convert_gen::prepareFile()
// get length of file:
miSourceReadIndex = 0;
- inputFile.seekg (0, std::ios::end);
+ inputFile.seekg (0, ios::end);
msSourceBuffer.resize((unsigned int)inputFile.tellg());
- inputFile.seekg (0, std::ios::beg);
+ inputFile.seekg (0, ios::beg);
- // get size, prepare std::string and read whole file
+ // get size, prepare string and read whole file
inputFile.read(const_cast<char *>(msSourceBuffer.c_str()), msSourceBuffer.size());
if ((unsigned int)inputFile.gcount() != msSourceBuffer.size())
throw l10nMem::showError("cannot read whole file");
@@ -172,12 +170,12 @@ bool convert_gen::prepareFile()
mcOutputFile.close();
// open output file
- mcOutputFile.open((msTargetPath+msSourceFile).c_str(), std::ios::binary);
+ mcOutputFile.open((msTargetPath+msSourceFile).c_str(), ios::binary);
if (mcOutputFile.is_open())
return true;
if (convert_gen::createDir(msTargetPath, msSourceFile)) {
- mcOutputFile.open((msTargetPath+msSourceFile).c_str(), std::ios::binary);
+ mcOutputFile.open((msTargetPath+msSourceFile).c_str(), ios::binary);
if (mcOutputFile.is_open())
return true;
}
@@ -216,7 +214,7 @@ void convert_gen::lexRead(char *sBuf, int *nResult, int nMax_size)
-void convert_gen::writeSourceFile(const std::string& line)
+void convert_gen::writeSourceFile(const string& line)
{
if (!line.size())
return;
@@ -227,7 +225,7 @@ void convert_gen::writeSourceFile(const std::string& line)
-std::string& convert_gen::copySource(char const *yyText, bool bDoClear)
+string& convert_gen::copySource(char const *yyText, bool bDoClear)
{
int nL;
diff --git a/l10ntools/source/gConvPo.cxx b/l10ntools/source/gConvPo.cxx
index f4460da359a4..1eccf9a08841 100644
--- a/l10ntools/source/gConvPo.cxx
+++ b/l10ntools/source/gConvPo.cxx
@@ -18,6 +18,7 @@
*/
#include <string>
#include <vector>
+using namespace std;
#include "gL10nMem.hxx"
#include "gConvPo.hxx"
@@ -47,7 +48,7 @@ convert_po::~convert_po()
void convert_po::startLook()
{
- std::string sFileName, sNewKey;
+ string sFileName, sNewKey;
int i;
@@ -132,7 +133,7 @@ void convert_po::handleNL()
extern int polex(void);
-void convert_po::execute()
+void convert_po::doExecute()
{
if (mbMergeMode)
throw l10nMem::showError("Merge not implemented");
@@ -143,71 +144,67 @@ void convert_po::execute()
-void convert_po::startSave(const std::string& sLanguage,
- const std::string& sFile)
+void convert_po::startSave(const string& sName,
+ const string& sTargetDir,
+ const string& sFile)
{
- std::string sFilePath = msTargetPath + sLanguage + sFile;
- outBuffer.open(sFilePath.c_str(), std::ios::out);
+ string sFilePath = sTargetDir + "/" + sFile;
+
+ // create directories as needed
+ createDir(string(""), sFilePath);
+ outBuffer.open(sFilePath.c_str(), ios::out + ios::binary);
if (!outBuffer.is_open())
throw l10nMem::showError("Cannot open " + sFilePath + " for writing");
l10nMem::showDebug("writing file (" + sFilePath + ")");
- std::ostream outFile(&outBuffer);
+ ostream outFile(&outBuffer);
// Set license header
- outFile << "#*************************************************************" << std::endl
- << "#*" << std::endl
- << "#* This file is part of the LibreOffice project. " << std::endl
- << "#*" << std::endl
- << "#* This Source Code Form is subject to the terms of the " << std::endl
- << "#* Mozilla Public License, v. 2.0. If a copy of the MPL was " << std::endl
- << "#* not distributed with this file, You can obtain one at " << std::endl
- << "#* http://mozilla.org/MPL/2.0/." << std::endl
- << "#*" << std::endl
- << "#* This file incorporates work covered by the following " << std::endl
- << "#* license notice :" << std::endl
- << "#*" << std::endl
- << "#* Licensed to the Apache Software Foundation (ASF) under one " << std::endl
- << "#* or more contributor license agreements. See the NOTICE file" << std::endl
- << "#* distributed with this work for additional information " << std::endl
- << "#* regarding copyright ownership. The ASF licenses this file " << std::endl
- << "#* to you under the Apache License, Version 2.0 " << std::endl
- << "#* (the \"License\"); you may not use this file except in " << std::endl
- << "#* compliance with the License.You may obtain a copy of the " << std::endl
- << "#* License at http ://www.apache.org/licenses/LICENSE-2.0 . " << std::endl
- << "#*" << std::endl
- << "#************************************************************" << std::endl
- << "msgid \"\"" << std::endl
- << "msgstr \"\"" << std::endl
- << "\"Project-Id-Version: AOO-4-xx\\n\"" << std::endl
- << "\"POT-Creation-Date: \\n\"" << std::endl
- << "\"PO-Revision-Date: \\n\"" << std::endl
- << "\"Last-Translator: genLang (build process)\\n\"" << std::endl
- << "\"Language-Team: \\n\"" << std::endl
- << "\"MIME-Version: 1.0\\n\"" << std::endl
- << "\"Content-Type: text/plain; charset=UTF-8\\n\"" << std::endl
- << "\"Content-Transfer-Encoding: 8bit\\n\"" << std::endl
- << "\"X-Generator: genLang\\n\"" << std::endl
- << std::endl;
+ outFile << "#. extracted from " << sName << endl
+ << "msgid \"\"" << endl
+ << "msgstr \"\"" << endl
+ << "\"Project-Id-Version: PACKAGE VERSION\\n\"" << endl
+ << "\"Report-Msgid-Bugs-To: "
+ << "https://bugs.libreoffice.org/enter_bug.cgi?"
+ << "product=LibreOffice&bug_status=UNCONFIRMED"
+ << "&component=UI\\n\"" << endl
+ << "\"POT-Creation-Date: \\n\"" << endl
+ << "\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"" << endl
+ << "\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"" << endl
+ << "\"Language-Team: LANGUAGE <LL@li.org>\\n\"" << endl
+ << "\"MIME-Version: 1.0\\n\"" << endl
+ << "\"Content-Type: text/plain; charset=UTF-8\\n\"" << endl
+ << "\"Content-Transfer-Encoding: 8bit\\n\"" << endl
+ << "\"X-Generator: LibreOffice\\n\"" << endl
+ << "\"X-Accelerator-Marker: ~\\n\"" << endl;
}
-void convert_po::save(const std::string& sFileName,
- const std::string& sKey,
- const std::string& sENUStext,
- const std::string& sText,
+void convert_po::save(const string& sFileName,
+ const string& sKey,
+ const string& sENUStext,
+ const string& sText,
bool bFuzzy)
{
- std::ostream outFile(&outBuffer);
-
- outFile << std::endl << "#: " << sFileName << "#" << sKey << std::endl;
+ string sName;
+ ostream outFile(&outBuffer);
+ int newPos;
+
+ // isolate filename
+ newPos = sFileName.find_last_of("/\\", sFileName.length());
+ sName = sFileName.substr(newPos + 1, sFileName.length());
+
+ outFile << "#. xxxxx" << endl
+ << "#: " << sName << endl
+ << "msgctxt \"\"" << endl
+ << "\"" << sName << "\\n\"" << endl;
if (bFuzzy)
- outFile << "#, fuzzy" << std::endl;
- outFile << "msgid \"" << sENUStext << "\"" << std::endl
- << "msgstr \"" << sText << "\"" << std::endl;
+ outFile << "#, fuzzy" << endl;
+ outFile << "msgid \"" << sENUStext << "\"" << endl
+ << "msgstr \"" << sText << "\"" << endl;
}
diff --git a/l10ntools/source/gConvProp.cxx b/l10ntools/source/gConvProp.cxx
index c1f6bfa3428f..76d7c936c4d3 100644
--- a/l10ntools/source/gConvProp.cxx
+++ b/l10ntools/source/gConvProp.cxx
@@ -37,7 +37,7 @@ convert_prop::~convert_prop()
-void convert_prop::execute()
+void convert_prop::doExecute()
{
throw l10nMem::showError(std::string("convert_prop::execute not implemented"));
}
diff --git a/l10ntools/source/gConvSrc.cxx b/l10ntools/source/gConvSrc.cxx
index 4eb41e681a43..b3f4736d65fc 100644
--- a/l10ntools/source/gConvSrc.cxx
+++ b/l10ntools/source/gConvSrc.cxx
@@ -44,7 +44,7 @@ convert_src::~convert_src()
extern int srclex(void);
-void convert_src::execute()
+void convert_src::doExecute()
{
srclex();
}
diff --git a/l10ntools/source/gConvTree.cxx b/l10ntools/source/gConvTree.cxx
index 8ce85df5ea05..0b62ccaa6957 100644
--- a/l10ntools/source/gConvTree.cxx
+++ b/l10ntools/source/gConvTree.cxx
@@ -49,7 +49,7 @@ convert_tree::~convert_tree()
extern int treelex(void);
-void convert_tree::execute()
+void convert_tree::doExecute()
{
std::string sLang;
std::string sFile, sFile2;
diff --git a/l10ntools/source/gConvUlf.cxx b/l10ntools/source/gConvUlf.cxx
index 37b43147c3ee..fc532c18b7e4 100644
--- a/l10ntools/source/gConvUlf.cxx
+++ b/l10ntools/source/gConvUlf.cxx
@@ -29,7 +29,7 @@ convert_ulf::~convert_ulf() {}
extern int ulflex(void);
-void convert_ulf::execute()
+void convert_ulf::doExecute()
{
ulflex();
}
diff --git a/l10ntools/source/gConvXcs.cxx b/l10ntools/source/gConvXcs.cxx
index c5de41a6819d..2d190d6663e8 100644
--- a/l10ntools/source/gConvXcs.cxx
+++ b/l10ntools/source/gConvXcs.cxx
@@ -39,7 +39,7 @@ convert_xcs::~convert_xcs()
extern int xcslex(void);
-void convert_xcs::execute()
+void convert_xcs::doExecute()
{
if (mbMergeMode)
throw l10nMem::showError("Merge not implemented");
diff --git a/l10ntools/source/gConvXcu.cxx b/l10ntools/source/gConvXcu.cxx
index 668de0e09c6c..2579a38ca840 100644
--- a/l10ntools/source/gConvXcu.cxx
+++ b/l10ntools/source/gConvXcu.cxx
@@ -38,7 +38,7 @@ convert_xcu::~convert_xcu()
extern int xculex(void);
-void convert_xcu::execute()
+void convert_xcu::doExecute()
{
xculex();
}
diff --git a/l10ntools/source/gConvXhp.cxx b/l10ntools/source/gConvXhp.cxx
index 93da8019751d..c2460a42fdfc 100644
--- a/l10ntools/source/gConvXhp.cxx
+++ b/l10ntools/source/gConvXhp.cxx
@@ -48,7 +48,7 @@ convert_xhp::~convert_xhp()
extern int xhplex(void);
-void convert_xhp::execute()
+void convert_xhp::doExecute()
{
std::string sLang;
std::string sFile, sFile2;
diff --git a/l10ntools/source/gConvXrm.cxx b/l10ntools/source/gConvXrm.cxx
index fb9f0dafca19..3184dc85176b 100644
--- a/l10ntools/source/gConvXrm.cxx
+++ b/l10ntools/source/gConvXrm.cxx
@@ -41,7 +41,7 @@ convert_xrm::~convert_xrm()
extern int xrmlex(void);
-void convert_xrm::execute()
+void convert_xrm::doExecute()
{
xrmlex();
diff --git a/l10ntools/source/gL10nMem.cxx b/l10ntools/source/gL10nMem.cxx
index ef7774fb918f..dcf117b0b6b4 100644
--- a/l10ntools/source/gL10nMem.cxx
+++ b/l10ntools/source/gL10nMem.cxx
@@ -21,6 +21,7 @@
#include <iostream>
#include <fstream>
#include <sstream>
+using namespace std;
#include "gL10nMem.hxx"
#include "gConvPO.hxx"
@@ -31,14 +32,14 @@ l10nMem *myMem;
class l10nMem_lang_list_entry
{
public:
- l10nMem_lang_list_entry(const std::string& sName)
+ l10nMem_lang_list_entry(const string& sName)
: msName(sName),
mbChanged(false)
{}
~l10nMem_lang_list_entry() {};
- std::string msName; // language Name
+ string msName; // language Name
bool mbChanged; // used for "convert", true if language is modified
};
@@ -46,22 +47,22 @@ class l10nMem_lang_list_entry
class l10nMem_file_entry
{
public:
- l10nMem_file_entry(const std::string& sFileName, int iStart)
+ l10nMem_file_entry(const string& sFileName, int iStart)
: msFileName(sFileName),
miStart(iStart),
miEnd(iStart)
{
// Store fileName without relative path
int i = msFileName.rfind("/");
- if (i == (int)std::string::npos)
+ if (i == (int)string::npos)
msPureName = msFileName;
else
msPureName = msFileName.substr(i + 1);
}
~l10nMem_file_entry() {};
- std::string msFileName; // file Name with relative path
- std::string msPureName; // just filename
+ string msFileName; // file Name with relative path
+ string msPureName; // just filename
int miStart; // start index of entries in mcMasterEntries (l10Mem_db::mcENUS)
int miEnd; // last index of entries in mcMasterEntries (l10Mem_db::mcENUS)
};
@@ -71,13 +72,13 @@ class l10nMem_file_entry
class l10nMem_lang_entry
{
public:
- l10nMem_lang_entry(const std::string& sMsgStr, bool bFuzzy)
+ l10nMem_lang_entry(const string& sMsgStr, bool bFuzzy)
: msMsgStr(sMsgStr),
mbFuzzy(bFuzzy)
{}
~l10nMem_lang_entry() {};
- std::string msMsgStr; // translated text from po file
+ string msMsgStr; // translated text from po file
bool mbFuzzy; // fuzzy flag
};
@@ -86,8 +87,8 @@ class l10nMem_lang_entry
class l10nMem_enus_entry
{
public:
- l10nMem_enus_entry(const std::string& sKey,
- const std::string& sMsgId,
+ l10nMem_enus_entry(const string& sKey,
+ const string& sMsgId,
int iLineNo,
int iFileInx,
int iLangSize,
@@ -110,12 +111,12 @@ class l10nMem_enus_entry
~l10nMem_enus_entry() {};
- std::string msKey; // key in po file and source file
- std::string msMsgId; // en-US text from source file
+ string msKey; // key in po file and source file
+ string msMsgId; // en-US text from source file
l10nMem::ENTRY_STATE meState; // status information
int miFileInx; // index of file name
int miLineNo; // line number
- std::vector<l10nMem_lang_entry> mcLangText; // language texts (index is languageId)
+ vector<l10nMem_lang_entry> mcLangText; // language texts (index is languageId)
};
@@ -146,7 +147,7 @@ l10nMem::~l10nMem()
-int l10nMem::showError(const std::string& sText, int iLineNo)
+int l10nMem::showError(const string& sText, int iLineNo)
{
myMem->mbInError = true;
myMem->formatAndShowText("ERROR", iLineNo, sText);
@@ -155,14 +156,14 @@ int l10nMem::showError(const std::string& sText, int iLineNo)
-void l10nMem::showWarning(const std::string& sText, int iLineNo)
+void l10nMem::showWarning(const string& sText, int iLineNo)
{
myMem->formatAndShowText("WARNING", iLineNo, sText);
}
-void l10nMem::showDebug(const std::string& sText, int iLineNo)
+void l10nMem::showDebug(const string& sText, int iLineNo)
{
if (myMem->mbDebug)
myMem->formatAndShowText("DEBUG", iLineNo, sText);
@@ -170,7 +171,7 @@ void l10nMem::showDebug(const std::string& sText, int iLineNo)
-void l10nMem::showVerbose(const std::string& sText, int iLineNo)
+void l10nMem::showVerbose(const string& sText, int iLineNo)
{
if (myMem->mbVerbose)
myMem->formatAndShowText("INFO", iLineNo, sText);
@@ -185,21 +186,21 @@ bool l10nMem::isError()
-void l10nMem::setModuleName(const std::string& sModuleName)
+void l10nMem::setModuleName(const string& sModuleName)
{
msModuleName = sModuleName;
}
-const std::string& l10nMem::getModuleName()
+const string& l10nMem::getModuleName()
{
return msModuleName;
}
-void l10nMem::setLanguage(const std::string& sLanguage,
+void l10nMem::setLanguage(const string& sLanguage,
bool bCreate)
{
int i, iSize;
@@ -266,10 +267,10 @@ void l10nMem::setDebug(bool doDebug)
void l10nMem::loadEntryKey(int iLineNo,
- const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sMsgId,
- const std::string& sMsgStr,
+ const string& sSourceFile,
+ const string& sKey,
+ const string& sMsgId,
+ const string& sMsgStr,
bool bIsFuzzy)
{
if (mbConvertMode)
@@ -283,16 +284,16 @@ void l10nMem::loadEntryKey(int iLineNo,
void l10nMem::setSourceKey(int iLineNo,
- const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sMsgId,
+ const string& sSourceFile,
+ const string& sKey,
+ const string& sMsgId,
bool bMustExist)
{
- std::string newText(sMsgId);
+ string newText(sMsgId);
int i;
// time to escape " and \ if contained in text or key
- for (i = 0; (i = newText.find("\\", i)) != (int)std::string::npos;) {
+ for (i = 0; (i = newText.find("\\", i)) != (int)string::npos;) {
++i;
if (i < (int)newText.size() &&
(newText[i] == '\\' || newText[i] == '<' || newText[i] == '>' ||
@@ -304,7 +305,7 @@ void l10nMem::setSourceKey(int iLineNo,
++i;
}
}
- for (i = 0; (i = newText.find("\"", i)) != (int)std::string::npos;) {
+ for (i = 0; (i = newText.find("\"", i)) != (int)string::npos;) {
newText.insert(i, "\\");
i += 2;
}
@@ -323,13 +324,10 @@ void l10nMem::setSourceKey(int iLineNo,
-void l10nMem::saveTemplates(const std::string& sTargetDir, bool bKid, bool bForce)
+void l10nMem::saveTemplates(const string& sTargetDir, bool bKid, bool bForce)
{
+ string target(msModuleName + ".pot");
int iE, iEsize = mcENUSlist.size();
- // std::string sFileName = msModuleName + ".pot";
-
- // Fix for new LO standard, at least valid for xrm
- std::string sFileName = sTargetDir;
// Dummy to satisfy compiler
if (bKid)
@@ -340,7 +338,7 @@ void l10nMem::saveTemplates(const std::string& sTargetDir, bool bKid, bool bForc
reorganize(false);
// no save if there has been errors
- if (!needWrite(sFileName, bForce))
+ if (!needWrite(target, bForce))
return;
//JIX save HANDLE KID
@@ -348,7 +346,7 @@ void l10nMem::saveTemplates(const std::string& sTargetDir, bool bKid, bool bForc
// Save en-US
convert_po savePo(*this);
- savePo.startSave("templates/", sFileName);
+ savePo.startSave(msModuleName, sTargetDir, target);
for (iE = 1; iE < iEsize; ++iE) {
l10nMem_enus_entry& cE = mcENUSlist[iE];
@@ -363,12 +361,12 @@ void l10nMem::saveTemplates(const std::string& sTargetDir, bool bKid, bool bForc
-void l10nMem::saveLanguages(l10nMem& cMem, const std::string& sTargetDir, bool bForce)
+void l10nMem::saveLanguages(l10nMem& cMem, const string& sTargetDir, bool bForce)
{
// int iE, iEsize = mcENUSlist.size();
// int iEsize = mcENUSlist.size();
int iL, iLsize = mcLangList.size();
- std::string sFileName = msModuleName + ".po";
+ string sFileName = msModuleName + ".po";
cMem.dumpMem("jan");
showDebug(sTargetDir);
@@ -426,7 +424,7 @@ void l10nMem::showNOconvert()
-void l10nMem::convertToInetString(std::string& sText)
+void l10nMem::convertToInetString(string& sText)
{
static const char *replacingStr[] = { "&", "\'", ">", "<", "\"", nullptr };
static const int replacingLen[] = { 1, 1, 1, 1, 1, 0 };
@@ -436,7 +434,7 @@ void l10nMem::convertToInetString(std::string& sText)
for (i = 0; replacingStr[i]; i++) {
pos = 0;
- while ((pos = sText.find(replacingStr[i], pos)) != (int)std::string::npos) {
+ while ((pos = sText.find(replacingStr[i], pos)) != (int)string::npos) {
sText.replace(pos, replacingLen[i], newStr[i]);
pos += newLen[i];
}
@@ -445,7 +443,7 @@ void l10nMem::convertToInetString(std::string& sText)
-void l10nMem::convertFromInetString(std::string& sText)
+void l10nMem::convertFromInetString(string& sText)
{
static const char *replacingStr[] = { "&amp;", "&apos;", "&gt;", "&lt;", "&quot;", nullptr };
static const int replacingLen[] = { 5, 6, 4, 4, 6, 0 };
@@ -455,7 +453,7 @@ void l10nMem::convertFromInetString(std::string& sText)
for (i = 0; replacingStr[i]; i++) {
pos = 0;
- while ((pos = sText.find(replacingStr[i], pos)) != (int)std::string::npos) {
+ while ((pos = sText.find(replacingStr[i], pos)) != (int)string::npos) {
sText.replace(pos, replacingLen[i], newStr[i]);
pos += newLen[i];
}
@@ -472,7 +470,7 @@ int l10nMem::prepareMerge()
-void l10nMem::dumpMem(const std::string& sFileName)
+void l10nMem::dumpMem(const string& sFileName)
{
// and reorganize db if needed
reorganize(false);
@@ -486,7 +484,7 @@ void l10nMem::dumpMem(const std::string& sFileName)
-bool l10nMem::getMergeLang(std::string& sLang, std::string& sMsgStr)
+bool l10nMem::getMergeLang(string& sLang, string& sMsgStr)
{
miCurLangInx++;
if (miCurLangInx >= (int)mcLangList.size())
@@ -503,19 +501,19 @@ bool l10nMem::getMergeLang(std::string& sLang, std::string& sMsgStr)
-void l10nMem::formatAndShowText(const std::string& sType, int iLineNo, const std::string& sText)
+void l10nMem::formatAndShowText(const string& sType, int iLineNo, const string& sText)
{
- std::cout << sType;
+ cout << sType;
if (miCurFileInx > 0)
- std::cout << " in " << mcFileList[miCurFileInx].msFileName;
+ cout << " in " << mcFileList[miCurFileInx].msFileName;
if (iLineNo)
- std::cout << "(" << iLineNo << ")";
- std::cout << ": " << sText << std::endl;
+ cout << "(" << iLineNo << ")";
+ cout << ": " << sText << endl;
}
-bool l10nMem::needWrite(const std::string sFileName, bool bForce)
+bool l10nMem::needWrite(const string sFileName, bool bForce)
{
int iE, iEsize = mcENUSlist.size();
int iCntDeleted = 0, iCntChanged = 0, iCntAdded = 0;
@@ -540,26 +538,26 @@ bool l10nMem::needWrite(const std::string sFileName, bool bForce)
if (!mbConvertMode)
iCntDeleted -= iCntChanged;
if (!iCntAdded && !iCntChanged && !iCntDeleted) {
- std::cout << "genLang: No changes in " << sFileName;
+ cout << "genLang: No changes in " << sFileName;
if (bForce)
- std::cout << ", -o switch used, so files are saved" << std::endl;
+ cout << ", -o switch used, so files are saved" << endl;
else
- std::cout << " skipping \"save\"" << std::endl;
+ cout << " skipping \"save\"" << endl;
return bForce;
}
- std::cout << "genLang statistics: " << iCntDeleted << " deleted, "
+ cout << "genLang statistics: " << iCntDeleted << " deleted, "
<< iCntChanged << " changed, "
<< iCntAdded << " added entries in "
- << sFileName << std::endl;
+ << sFileName << endl;
return true;
}
-bool l10nMem::convFilterWarning(const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sMsgId)
+bool l10nMem::convFilterWarning(const string& sSourceFile,
+ const string& sKey,
+ const string& sMsgId)
{
// silent ignore deleted messages
if (sMsgId == "-" || sMsgId == "")
@@ -664,15 +662,15 @@ bool l10nMem::convFilterWarning(const std::string& sSourceFile,
void l10nMem::convEntryKey(int iLineNo,
- const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sMsgId,
- const std::string& sMsgStr,
+ const string& sSourceFile,
+ const string& sKey,
+ const string& sMsgId,
+ const string& sMsgStr,
bool bIsFuzzy)
{
- std::vector<int> ivEntryList;
- std::string curFileName;
- std::string curKeyUpper;
+ vector<int> ivEntryList;
+ string curFileName;
+ string curKeyUpper;
int curFileIndex, curENUSindex, i, iSize;
@@ -731,7 +729,7 @@ void l10nMem::convEntryKey(int iLineNo,
l10nMem_enus_entry& curE = mcENUSlist[ivEntryList[i]];
// compare keys, but be aware of different length
- if (curKeyUpper.find(curE.msKey) != std::string::npos) {
+ if (curKeyUpper.find(curE.msKey) != string::npos) {
curENUSindex = ivEntryList[i];
bIsFuzzy = true;
break;
@@ -759,9 +757,9 @@ void l10nMem::convEntryKey(int iLineNo,
void l10nMem::loadENUSkey(int iLineNo,
- const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sMsgId)
+ const string& sSourceFile,
+ const string& sKey,
+ const string& sMsgId)
{
// add it to vector and update file pointer
addKey(iLineNo, sSourceFile, sKey, sMsgId, ENTRY_DELETED);
@@ -770,10 +768,10 @@ void l10nMem::loadENUSkey(int iLineNo,
void l10nMem::loadLangKey(int iLineNo,
- const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sMsgId,
- const std::string& sMsgStr,
+ const string& sSourceFile,
+ const string& sKey,
+ const string& sMsgId,
+ const string& sMsgStr,
bool bFuzzy)
{
if (!locateKey(iLineNo, sSourceFile, sKey, sMsgId, true))
@@ -790,7 +788,7 @@ void l10nMem::reorganize(bool bConvert)
{
int iE, iEsize = mcENUSlist.size();
int iD, iDsize;
- std::vector<int> listDel, listAdd;
+ vector<int> listDel, listAdd;
// Check number of changes
@@ -839,12 +837,12 @@ void l10nMem::reorganize(bool bConvert)
bool l10nMem::locateKey(int iLineNo,
- const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sMsgId,
+ const string& sSourceFile,
+ const string& sKey,
+ const string& sMsgId,
bool bThrow)
{
- std::string sUpperKey(sKey);
+ string sUpperKey(sKey);
int i, iSize = sUpperKey.size();
char ch;
@@ -886,9 +884,9 @@ bool l10nMem::locateKey(int iLineNo,
void l10nMem::addKey(int iLineNo,
- const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sMsgId,
+ const string& sSourceFile,
+ const string& sKey,
+ const string& sMsgId,
l10nMem::ENTRY_STATE eStat)
{
// check file
@@ -908,7 +906,7 @@ void l10nMem::addKey(int iLineNo,
else {
int iFsize = mcFileList.size();
l10nMem_file_entry& curF = mcFileList[miCurFileInx];
- std::vector<l10nMem_enus_entry>::iterator it = mcENUSlist.begin();
+ vector<l10nMem_enus_entry>::iterator it = mcENUSlist.begin();
// file is registred, so we need to add the entry at the end of the file range
curF.miEnd++;
@@ -927,7 +925,7 @@ void l10nMem::addKey(int iLineNo,
}
-bool l10nMem::findFileName(const std::string& sSourceFile)
+bool l10nMem::findFileName(const string& sSourceFile)
{
int iSize = mcFileList.size();
@@ -952,7 +950,7 @@ bool l10nMem::findFileName(const std::string& sSourceFile)
-void l10nMem::keyToUpper(std::string& sKey)
+void l10nMem::keyToUpper(string& sKey)
{
int i, iSize;
diff --git a/l10ntools/source/gLang.cxx b/l10ntools/source/gLang.cxx
index 1c09507fa9b1..6bcb5449b32b 100644
--- a/l10ntools/source/gLang.cxx
+++ b/l10ntools/source/gLang.cxx
@@ -39,7 +39,7 @@ class handler
private:
bool mbForceSave;
- enum {DO_CONVERT, DO_EXTRACT, DO_MERGE_KID, DO_MERGE} meWorkMode;
+ enum {DO_CONVERT, DO_EXTRACT, DO_MERGE} meWorkMode;
string msTargetDir;
string msPoDir;
vector<string> mvSourceFiles;
@@ -49,7 +49,7 @@ class handler
void loadL10MEM(bool onlyTemplates);
void runConvert();
void runExtract();
- void runMerge(bool bKid);
+ void runMerge();
};
@@ -78,7 +78,6 @@ void handler::showUsage(string sErr)
" merge merge po files back to sources\n"
" <options> is a combination of\n"
" -d show debug information\n"
- " -k generate key identifier version\n"
" -s save unconditionally\n"
" -v show progress information\n"
"\n"
@@ -122,7 +121,7 @@ void handler::showManual()
"\n\n";
cout <<
- " genLang merge [-v] [-d] [-s] [-k]\n"
+ " genLang merge [-v] [-d] [-s]\n"
" --files <files>\n"
" --target <directory>\n"
" --po <directory>\n"
@@ -177,13 +176,6 @@ void handler::checkCommandLine(int argc, char *argv[])
if (sWorkText == "-d") {
// show debug information
mcMemory.setDebug(true);
- mcMemory.setVerbose(true);
- }
- else if (sWorkText == "-k") {
- // generate key identifier version
- if (meWorkMode != DO_MERGE)
- throw "-k requires \"merge\"";
- meWorkMode = DO_MERGE_KID;
}
else if (sWorkText == "-v") {
// show progress information
@@ -222,7 +214,6 @@ void handler::checkCommandLine(int argc, char *argv[])
case DO_EXTRACT:
bSourceFiles = bTargetDir = true;
break;
- case DO_MERGE_KID:
case DO_MERGE:
bPoDir = bTargetDir = true;
break;
@@ -241,10 +232,9 @@ void handler::run()
// use workMode to start correct control part
switch (meWorkMode)
{
- case DO_EXTRACT: runExtract(); break;
- case DO_MERGE: runMerge(false); break;
- case DO_MERGE_KID: runMerge(true); break;
- case DO_CONVERT: runConvert(); break;
+ case DO_EXTRACT: runExtract(); break;
+ case DO_MERGE: runMerge(); break;
+ case DO_CONVERT: runConvert(); break;
}
}
@@ -264,7 +254,7 @@ void handler::loadL10MEM(bool onlyTemplates)
// and load file
mcMemory.setLanguage("", true);
- convert_gen::createInstance(mcMemory, sLoad, msTargetDir, "").execute(false, false);
+ convert_gen::createInstance(mcMemory, sLoad, msTargetDir, "").execute(false);
if (onlyTemplates)
return;
@@ -302,7 +292,7 @@ void handler::runConvert()
// get converter and extract files
convert_gen& convertObj = convert_gen::createInstance(mcMemory, "./", msTargetDir, *siSource);
- convertObj.execute(false, false);
+ convertObj.execute(false);
mcMemory.showNOconvert();
@@ -331,6 +321,7 @@ void handler::runConvert()
void handler::runExtract()
{
vector<string>::iterator siSource;
+ int newPos;
// no convert
mcMemory.setConvert(false, false);
@@ -340,9 +331,13 @@ void handler::runExtract()
// tell system
l10nMem::showDebug("genLang extracting text from file " + *siSource);
+ // set module name
+ newPos = (*siSource).find_last_of("/\\", (*siSource).length());
+ mcMemory.setModuleName((*siSource).substr(0, newPos));
+
// get converter and extract file
convert_gen& convertObj = convert_gen::createInstance(mcMemory, "", msTargetDir, *siSource);
- convertObj.execute(false, false);
+ convertObj.execute(false);
}
// and generate language file
@@ -351,7 +346,7 @@ void handler::runExtract()
-void handler::runMerge(bool bKid)
+void handler::runMerge()
{
vector<string>::iterator siSource;
@@ -365,7 +360,7 @@ void handler::runMerge(bool bKid)
// get converter and extract file
convert_gen& convertObj = convert_gen::createInstance(mcMemory, "", msTargetDir, *siSource);
- convertObj.execute(true, bKid);
+ convertObj.execute(true);
}
}