You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by ja...@apache.org on 2013/03/10 01:00:21 UTC
svn commit: r1454775 - /openoffice/branches/l10n/main/l10ntools/source/
Author: jani
Date: Sun Mar 10 00:00:20 2013
New Revision: 1454775
URL: http://svn.apache.org/r1454775
Log:
prepare to write .po
Modified:
openoffice/branches/l10n/main/l10ntools/source/gCon.cxx
openoffice/branches/l10n/main/l10ntools/source/gCon.hxx
openoffice/branches/l10n/main/l10ntools/source/gConDB.cxx
openoffice/branches/l10n/main/l10ntools/source/gConPo.hxx
openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx
openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx
openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx
openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx
openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx
openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx
openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx
openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx
openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx
openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx
openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.cxx
openoffice/branches/l10n/main/l10ntools/source/gLang.hxx
openoffice/branches/l10n/main/l10ntools/source/makefile.mk
Modified: openoffice/branches/l10n/main/l10ntools/source/gCon.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gCon.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gCon.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gCon.cxx Sun Mar 10 00:00:20 2013
@@ -50,15 +50,12 @@ convert_gen_impl * convert_gen_impl::mcI
/********************** I M P L E M E N T A T I O N **********************/
-convert_gen::convert_gen(l10nMem& cMemory, const std::string& sSourceFile)
+convert_gen::convert_gen(l10nMem& cMemory, const std::string& sSourceDir, const std::string& sSourceFile)
{
// do we have an old object
if (convert_gen_impl::mcImpl)
delete convert_gen_impl::mcImpl;
- // and set environment
- convert_gen_impl::mcImpl->msSourceFile = sSourceFile;
-
// did the user give a .xxx with the source file ?
int nInx = sSourceFile.rfind(".");
if (nInx == (int)std::string::npos)
@@ -80,6 +77,7 @@ convert_gen::convert_gen(l10nMem& cMemor
// and set environment
convert_gen_impl::mcImpl->msSourceFile = sSourceFile;
+ convert_gen_impl::mcImpl->msSourcePath = sSourceDir + sSourceFile;
}
@@ -110,6 +108,63 @@ bool convert_gen::execute(const bool bMe
/********************** I M P L E M E N T A T I O N **********************/
+void convert_gen::startSave(const std::string& sTargetDir,
+ const std::string& sLanguage,
+ const std::string& sFile)
+{
+ convert_gen_impl::mcImpl->startSave(sTargetDir, sLanguage, sFile);
+}
+void convert_gen_impl::startSave(const std::string& sTargetDir,
+ const std::string& sLanguage,
+ const std::string& sFile)
+{
+ std::string x;
+
+ x = sTargetDir;
+ x = sLanguage;
+ x = sFile;
+ throw l10nMem::showError("startSave called with non .po file");
+}
+
+
+
+/********************** I M P L E M E N T A T I O N **********************/
+void convert_gen::save(const std::string& sKey,
+ const std::string& sENUStext,
+ const std::string& sText,
+ bool bFuzzy)
+{
+ convert_gen_impl::mcImpl->save(sKey, sENUStext, sText, bFuzzy);
+}
+void convert_gen_impl::save(const std::string& sKey,
+ const std::string& sENUStext,
+ const std::string& sText,
+ bool bFuzzy)
+{
+ std::string x;
+
+ x = sKey;
+ x = sENUStext;
+ x = sText;
+ bFuzzy = bFuzzy;
+ throw l10nMem::showError("save called with non .po file");
+}
+
+
+
+/********************** I M P L E M E N T A T I O N **********************/
+void convert_gen::endSave()
+{
+ convert_gen_impl::mcImpl->endSave();
+}
+void convert_gen_impl::endSave()
+{
+ throw l10nMem::showError("endSave called with non .po file");
+}
+
+
+
+/********************** I M P L E M E N T A T I O N **********************/
convert_gen_impl::convert_gen_impl(l10nMem& crMemory)
: mcMemory(crMemory),
miLineNo(1)
@@ -129,7 +184,7 @@ convert_gen_impl::~convert_gen_impl()
/********************** I M P L E M E N T A T I O N **********************/
bool convert_gen_impl::prepareFile(bool bAllowNoFile)
{
- std::ifstream inputFile(msSourceFile.c_str(), std::ios::binary);
+ std::ifstream inputFile(msSourcePath.c_str(), std::ios::binary);
if (!inputFile.is_open())
@@ -137,7 +192,7 @@ bool convert_gen_impl::prepareFile(bool
if (bAllowNoFile)
return false;
else
- throw mcMemory.showError("Cannot open file");
+ throw mcMemory.showError("Cannot open file (" + msSourcePath + ")");
}
// get length of file:
Modified: openoffice/branches/l10n/main/l10ntools/source/gCon.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gCon.hxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gCon.hxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gCon.hxx Sun Mar 10 00:00:20 2013
@@ -50,8 +50,19 @@ class convert_gen_impl
// all converters MUST implement this function
virtual void execute() = 0;
+ // ONLY po should implement these functions
+ virtual void startSave(const std::string& sTargetDir,
+ const std::string& sLanguage,
+ const std::string& sFile);
+ virtual void save(const std::string& sKey,
+ const std::string& sENUStext,
+ const std::string& sText,
+ bool bFuzzy);
+ virtual void endSave();
+
// generic variables
bool mbMergeMode;
+ std::string msSourcePath;
std::string msSourceFile;
l10nMem& mcMemory;
std::string msCollector;
Modified: openoffice/branches/l10n/main/l10ntools/source/gConDB.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConDB.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gConDB.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gConDB.cxx Sun Mar 10 00:00:20 2013
@@ -39,8 +39,8 @@ convert_db::~convert_db()
/********************** I M P L E M E N T A T I O N **********************/
void convert_db::execute()
{
- std::string oldKey;
- int iB, iE;
+ std::string newKey;
+ int i;
msSourceBuffer += '\n';
@@ -49,33 +49,18 @@ void convert_db::execute()
while (collectLine())
{
- mcMemory.setFileName(0, msFields[1], true);
- if (mbMergeMode)
- {
- iB = msFields[15].find("/");
- if (iB == (int)std::string::npos)
- mcMemory.showError((char*)"missing / in en_US", miLineNo);
- iE = msFields[15].find("/", iB+1);
- if (iE == (int)std::string::npos)
- mcMemory.showError((char*)"missing / in en_US", miLineNo);
- oldKey = msFields[15].substr(iB+1, iE - iB -1);
- iB = msFields[15].find("/",iE+1);
- if (iB == (int)std::string::npos)
- mcMemory.showError((char*)"missing / in en_US", miLineNo);
- if (iB != iE+1)
- oldKey += "." + msFields[15].substr(iE+1, iB - iE -1);
-
- // handle en-US (master)
-//JIX mcMemory.loadEnUsKey(msFields[4], msFields[3], msFields[10], oldKey);
- }
- else
- {
- std::string newKey = msFields[4];
- if (msFields[5].size())
- newKey += "." + msFields[5];
-//JIX mcMemory.loadLangKey(msFields[9], newKey, msFields[3], msFields[10]);
- }
- }
+ newKey = msFields[4];
+ if (msFields[5].size())
+ newKey += "." + msFields[5];
+ if (msFields[3].size())
+ newKey += "." + msFields[3];
+
+ for (; (i = msFields[1].find('\\')) != std::string::npos;)
+ msFields[1][i] = '/';
+
+ // handle en-US or lang
+ mcMemory.loadENUSkey(miLineNo, msFields[1], newKey, msFields[10]);
+ }
}
Modified: openoffice/branches/l10n/main/l10ntools/source/gConPo.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConPo.hxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gConPo.hxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gConPo.hxx Sun Mar 10 00:00:20 2013
@@ -44,5 +44,14 @@ class convert_po : public convert_gen_im
private:
void execute();
+
+ void startSave(const std::string& sTargetDir,
+ const std::string& sLanguage,
+ const std::string& sFile);
+ void save(const std::string& sKey,
+ const std::string& sENUStext,
+ const std::string& sText,
+ bool bFuzzy);
+ void endSave();
};
#endif
\ No newline at end of file
Modified: openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gConPoWrap.cxx Sun Mar 10 00:00:20 2013
@@ -69,6 +69,43 @@ void convert_po::execute()
PoWrap::yylex();
}
+
+
+/********************** I M P L E M E N T A T I O N **********************/
+void convert_po::startSave(const std::string& sTargetDir,
+ const std::string& sLanguage,
+ const std::string& sFile)
+{
+ std::string x;
+
+ x = sTargetDir;
+ x = sLanguage;
+ x = sFile;
+}
+
+
+
+/********************** I M P L E M E N T A T I O N **********************/
+void convert_po::save(const std::string& sKey,
+ const std::string& sENUStext,
+ const std::string& sText,
+ bool bFuzzy)
+{
+ std::string x;
+
+ x = sKey;
+ x = sENUStext;
+ x = sText;
+ bFuzzy = bFuzzy;
+}
+
+
+
+/********************** I M P L E M E N T A T I O N **********************/
+void convert_po::endSave()
+{
+}
+
/********************** I M P L E M E N T A T I O N **********************/
@@ -107,7 +144,7 @@ void convert_po::stopCollectData(char *s
#endif
}
else
-//JIX mcMemory.setEnUsKey(miLineNo, useKey, std::string("dummy"), sCollectedText);
+ mcMemory.setSourceKey(miLineNo, msSourceFile, useKey, sCollectedText);
// mbCollectingData = false;
msCollector.clear();
Modified: openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gConSrcWrap.cxx Sun Mar 10 00:00:20 2013
@@ -182,7 +182,7 @@ void convert_src::setList(char *syyText)
void convert_src::setNL(char *syyText, bool bMacro)
{
int nL;
- std::string sKey, sObject;
+ std::string sKey;
copySource(syyText);
@@ -206,9 +206,9 @@ void convert_src::setNL(char *syyText, b
msValue.erase(nL,1);
}
- sObject = msCmd + "." + msTextName;
-//JIX if (msValue.size() && msValue != "-")
-//JIX mcMemory.setEnUsKey(miLineNo, sKey, sObject, msValue);
+ sKey += "." + msCmd + "." + msTextName;
+ if (msValue.size() && msValue != "-")
+ mcMemory.setSourceKey(miLineNo, msSourceFile, sKey, msValue);
}
if (!bMacro && mbExpectMacro)
@@ -294,13 +294,6 @@ void convert_src::setListItem(char *syyT
// check key or add seq.
buildKey(myKey);
-//JIX if (!mcMemory.checkKey(myKey, (msCmd + "." + msTextName)))
- {
- ssBuf << miListCount;
- msName += ".uniq" + ssBuf.str();
- mcStack.pop_back();
- mcStack.push_back(msName);
- }
}
}
}
Modified: openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gConUlfWrap.cxx Sun Mar 10 00:00:20 2013
@@ -89,5 +89,5 @@ void convert_ulf::setValue(char *syyText
nL = sText.rfind("\"");
sText.erase(nL);
-//JIX mcMemory.setEnUsKey(miLineNo, msKey, std::string("LngText"), sText);
+ mcMemory.setSourceKey(miLineNo, msSourceFile, msKey, sText);
}
Modified: openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gConXcsWrap.cxx Sun Mar 10 00:00:20 2013
@@ -153,8 +153,8 @@ void convert_xcs::stopCollectData(char *
}
#endif
}
-//JIX else
-//JIX mcMemory.setEnUsKey(miLineNo, sKey, std::string("dummy"), sText);
+ else
+ mcMemory.setSourceKey(miLineNo, msSourceFile, sKey, sText);
mbCollectingData = false;
}
Modified: openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gConXcuWrap.cxx Sun Mar 10 00:00:20 2013
@@ -168,9 +168,9 @@ void convert_xcu::stopCollectData(char *
}
#endif
}
-//JIX else
-//JIX if (useText.size())
-//JIX mcMemory.setEnUsKey(miLineNo, useKey, "value", useText);
+ else
+ if (useText.size())
+ mcMemory.setSourceKey(miLineNo, msSourceFile, useKey, useText);
}
Modified: openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gConXhpWrap.cxx Sun Mar 10 00:00:20 2013
@@ -238,7 +238,7 @@ void convert_xhp::closeTransTag(char *yy
if (meExpectValue == VALUE_IS_VALUE || meExpectValue == VALUE_IS_VALUE_TAG)
{
if (msCollector.size() && msCollector != "-")
-//JIX mcMemory.setEnUsKey(miLineNo, msKey, std::string("text"), msCollector);
+ mcMemory.setSourceKey(miLineNo, msSourceFile, msKey, msCollector);
msKey.clear();
}
copySource(yytext);
Modified: openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gConXrmWrap.cxx Sun Mar 10 00:00:20 2013
@@ -147,7 +147,7 @@ void convert_xrm::stopCollectData(char *
if (!mbNoCollectingData)
{
msKey = msKey + "." + msKey;
-//JIX mcMemory.setEnUsKey(miLineNo, msKey, std::string("text"), msCollector);
+ mcMemory.setSourceKey(miLineNo, msSourceFile, msKey, msCollector);
mbNoCollectingData = true;
msKey.clear();
}
Modified: openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gHandler.cxx Sun Mar 10 00:00:20 2013
@@ -80,13 +80,11 @@ void handler::checkCommandLine(int argc,
if (sLangText[0] == '\"')
sLangText.erase(0,1);
nLen = sLangText.size() -1;
- if (sLangText[nLen] == '\"')
+ if (nLen > 0 && sLangText[nLen] == '\"')
sLangText.erase(nLen);
- if (!sLangText.size())
- throw "<languages> is mandatory";
-
- // and convert language to a vector
+ if (sLangText.size())
{
+ // and convert language to a vector
int current;
int next = -1;
do
@@ -128,6 +126,7 @@ void handler::checkCommandLine(int argc,
{
switch (eGotArg)
{
+ case ARG_NONE: break;
case ARG_F: mvSourceFiles.push_back(sArg); break;
case ARG_O: msPoOutDir = sArg; eGotArg = ARG_NONE; break;
case ARG_S: msSourceDir = sArg; eGotArg = ARG_NONE; break;
@@ -160,7 +159,8 @@ void handler::checkCommandLine(int argc,
}
catch(const char *sErr)
{
- showUsage(std::string(sErr));
+ std::string myErr(sErr);
+ showUsage(myErr);
exit(-1);
}
catch(std::string sErr)
@@ -184,7 +184,7 @@ void handler::checkCommandLine(int argc,
msPoOutDir.append("/");
// tell system
- mcMemory.showVerbose("gLang starting to " + sWorkText + " in module " + msModuleName);
+ mcMemory.showVerbose("gLang starting to " + sWorkText + " from module " + msModuleName);
}
@@ -198,7 +198,8 @@ void handler::run()
mcMemory.setModuleName(msModuleName);
// build list of languages (to be loaded and later written
- loadL10MEM();
+ if (msPoDir.size())
+ loadL10MEM();
// use workMode to start correct control part
switch (meWorkMode)
@@ -210,7 +211,7 @@ void handler::run()
case DO_GENERATE: runGenerate(); break;
}
}
- catch(bool)
+ catch(int)
{
exit(-1);
}
@@ -221,6 +222,7 @@ void handler::run()
/********************** I M P L E M E N T A T I O N **********************/
void handler::runExtractMerge(bool bMerge, bool bKid)
{
+ bKid = bKid;
//JIX HANDLE KID
// loop through all source files, and extract messages from each file
@@ -229,16 +231,13 @@ void handler::runExtractMerge(bool bMerg
// tell system
mcMemory.showDebug("gLang extracting text from file " + *siSource);
- // prepare translation memory
- mcMemory.setFileName(0, *siSource, true);
-
// get converter and extract files
- convert_gen convertObj(mcMemory, msSourceDir + *siSource);
+ convert_gen convertObj(mcMemory, msSourceDir, *siSource);
convertObj.execute(bMerge);
}
// and generate language file
- mcMemory.save(msTargetDir + msModuleName);
+ mcMemory.save(msPoOutDir);
}
@@ -290,7 +289,9 @@ void handler::showManual()
"genLang merges .po files with AOO sources to add languages.\n"
"\n"
"genLang can also convert old .po files (generated from .sdf)\n"
- "\n"
+ "\n";
+
+ std::cout <<
"Syntax:\n"
" genLang extract <module> <po dir> <languages> [-v] [-d]\\\n"
" [-o <po outdir>] -f <files> -s <source dir>\n"
@@ -333,7 +334,9 @@ void handler::showManual()
"\n"
" genLang help\n"
" this text\n"
- "\n"
+ "\n";
+
+ std::cout <<
"Parameters:\n"
" <module>\n"
" name of module (directory in main)\n"
@@ -344,7 +347,7 @@ void handler::showManual()
" comma separated string with langauge id to be used\n"
"\n"
" -d\n"
- " extensive verbose mode, tells what gLang is doing in detail\n";
+ " extensive verbose mode, tells what gLang is doing in detail\n"
" -f <files>\n"
" list of files containing messages to be extracted\n"
" \"convert\" expect sdf generated po files, to be converted\n"
@@ -368,34 +371,28 @@ void handler::showManual()
/********************** I M P L E M E N T A T I O N **********************/
void handler::loadL10MEM()
{
- std::string sMod = "/" + msModuleName + ".pot";
- std::string sLoad = msPoDir + "../en-US" + sMod;
+ std::string sMod = msModuleName + ".po";
+ std::string sLoad = msPoDir + "en-US";
// load texts from en-US po file (master)
{
- // prepare translation memory
- mcMemory.setFileName(0, sLoad, true);
-
// tell system
mcMemory.showDebug("gLang loading master text from file " + sLoad);
// and load file
- convert_gen(mcMemory, sLoad).execute(true);
+ convert_gen(mcMemory, sLoad, sMod).execute(true);
}
// loop through all languages and load text
for (std::vector<std::string>::iterator siLang = mvLanguages.begin(); siLang != mvLanguages.end(); ++siLang)
{
- sLoad = msPoDir + *siLang + sMod;
-
- // prepare translation memory
- mcMemory.setFileName(0, sLoad, true);
+ sLoad = msPoDir + *siLang;
// tell system
mcMemory.showDebug("gLang loading text from language file " + sLoad);
// get converter and extract files
- convert_gen(mcMemory, sLoad).execute(false, true);
+ convert_gen(mcMemory, sLoad, sMod).execute(false, true);
}
}
Modified: openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gL10nMem.cxx Sun Mar 10 00:00:20 2013
@@ -82,7 +82,7 @@ int l10nMem::showWarning(const std::str
void l10nMem::showDebug(const std::string& sText, int iLineNo)
{ l10nMem_impl::mcImpl->showDebug(sText, iLineNo); }
void l10nMem::showVerbose(const std::string& sText, int iLineNo)
- { l10nMem_impl::mcImpl->showWarning(sText, iLineNo); }
+ { l10nMem_impl::mcImpl->showVerbose(sText, iLineNo); }
@@ -95,8 +95,8 @@ bool l10nMem::isError()
/********************** I M P L E M E N T A T I O N **********************/
-void l10nMem::setModuleName(const std::string& setModuleName)
- { l10nMem_impl::mcImpl->setModuleName(setModuleName); }
+void l10nMem::setModuleName(const std::string& sModuleName)
+ { l10nMem_impl::mcImpl->setModuleName(sModuleName); }
void l10nMem::loadENUSkey(int iL, const std::string& sS, const std::string& sK, const std::string& sT)
{ l10nMem_impl::mcImpl->mcDb.loadENUSkey(iL, sS, sK, sT); }
void l10nMem::setLanguage(const std::string& sL, bool bC)
@@ -105,16 +105,14 @@ void l10nMem::loadLangKey(int iL, const
{ l10nMem_impl::mcImpl->mcDb.loadLangKey(iL, sS, sK, sO, sT, bI); }
void l10nMem::convLangKey(int iL, const std::string& sS, const std::string& sK, const std::string& sO, const std::string& sT, bool bI)
{ l10nMem_impl::mcImpl->convLangKey(iL, sS, sK, sO, sT, bI); }
-void l10nMem::setFileName(int iL, const std::string& sS, bool bC)
- { l10nMem_impl::mcImpl->mcDb.setFileName(iL, sS, bC); }
bool l10nMem::checkKey(const std::string& sKey, const std::string& sText)
{ return l10nMem_impl::mcImpl->mcDb.locateKey(0, sKey, sText, false); }
-void l10nMem::setSourceKey(int iL, const std::string& sK, const std::string& sT)
- { l10nMem_impl::mcImpl->setSourceKey(iL, sK, sT); }
+void l10nMem::setSourceKey(int iL, const std::string& sF, const std::string& sK, const std::string& sT)
+ { l10nMem_impl::mcImpl->setSourceKey(iL, sF, sK, sT); }
void l10nMem::reorganize()
{ l10nMem_impl::mcImpl->mcDb.reorganize(); }
void l10nMem::save(const std::string& sTargetDir)
- { l10nMem_impl::mcImpl->save(sTargetDir); }
+ { l10nMem_impl::mcImpl->save(*this, sTargetDir); }
void l10nMem::dumpMem(const std::string& sTargetDir)
{ l10nMem_impl::mcImpl->dumpMem(sTargetDir); }
@@ -183,98 +181,105 @@ void l10nMem_impl::setModuleName(const s
/********************** I M P L E M E N T A T I O N **********************/
void l10nMem_impl::setSourceKey(int iLineNo,
+ const std::string& sSourceFile,
const std::string& sKey,
const std::string& sText)
{
// if key exist update state
- if (mcDb.locateKey(iLineNo, sKey, sText, false))
+ if (mcDb.findFileName(sSourceFile, mcDb.miCurENUSinx+1, true) &&
+ mcDb.locateKey(iLineNo, sKey, sText, false))
{
- mcDb.mcENUSlist[mcDb.miCurENUSinx].meState = ENTRY_NORMAL;
+ mcDb.mcENUSlist[mcDb.miCurENUSinx].meState = l10nMem::ENTRY_NORMAL;
}
else
{
- // add key, if changed text this is wrong but handled in loadCleanup
- mcDb.addKey(iLineNo, sKey, sText, ENTRY_ADDED);
+ // add key, if changed text this is wrong but handled in reorganize
+ mcDb.addKey(iLineNo, sKey, sText, l10nMem::ENTRY_ADDED);
}
}
-
-
-
-
-
-
-#if 0
- void convLangKey (const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sOrgText,
- const std::string& sText,
- bool bIsFuzzy);
-
- void extractedKey (int iLineNo,
- const std::string& sKey,
- const std::string& sText);
-
- void save (const std::string& sTargetDir);
- void dumpMem (const std::string& sTargetDir);
-
- void formatAndShowText(std::string& sType, int iLineNo, std::string& sText);
- std::cerr << "ERROR in " << msCurrentSourceFileName << ":" << iLineNo << ": " << sText << std::endl;
+/********************** I M P L E M E N T A T I O N **********************/
+void l10nMem_impl::convLangKey(int iLineNo,
+ const std::string& sSourceFile,
+ const std::string& sKey,
+ const std::string& sOrgText,
+ const std::string& sText,
+ bool bIsFuzzy)
+{
+ std::string x;
+ iLineNo = iLineNo;
+ x = sSourceFile;
+ x = sKey;
+ x = sOrgText;
+ x = sText;
+ bIsFuzzy = bIsFuzzy;
+ //JIX (convLangKey)
+}
/********************** I M P L E M E N T A T I O N **********************/
-void l10nMem_impl::save(const std::string& srTargetFile)
+void l10nMem_impl::save(l10nMem& cMem, const std::string& sTargetDir)
{
- int i;
- std::string sFile = srTargetFile + ".cnv";
+ int iE, iEsize = mcDb.mcENUSlist.size();
+ int iL, iLsize = mcDb.mcLangList.size();
+ std::string fileName = msModuleName + ".po";
- if (mbInError)
+ // Save en-US
{
- showError(0, (char *)"Cannot save file due to preceding errors");
- return;
- }
-
- std::ofstream outputFile(sFile.c_str(), std::ios::binary);
-
- if (!outputFile.is_open())
- throw showError(std::string("Could not open ")+srTargetFile);
+ convert_gen savePo(cMem, sTargetDir, fileName);
+ savePo.startSave(sTargetDir, "en_US", fileName);
+ for (iE = 1; iE < iEsize; ++iE)
+ {
+ l10nMem_enus_entry& cE = mcDb.mcENUSlist[iE];
+
+ savePo.save(cE.msKey, cE.msText, cE.msText, false);
+ }
+ savePo.endSave();
+ }
- for (i = 0; i < (int)mcMemory.size(); ++i)
+ // save all languages
+ for (iL = 1; iL < iLsize; ++iL)
{
- outputFile << mcMemory[i].msModuleName << "\t" << mcMemory[i].msSourceFile << "\t"
- << mcMemory[i].msKey;
- //if (mcMemory[i].miIndex)
- // outputFile << "." << mcMemory[i].miIndex;
- outputFile << "\t" << mcMemory[i].msLanguage << "\t" << mcMemory[i].msText << std::endl;
+ convert_gen savePo(cMem, sTargetDir, fileName);
+
+ savePo.startSave(sTargetDir, mcDb.mcLangList[iL], fileName);
+ for (iE = 1; iE < iEsize; ++iE)
+ {
+ l10nMem_enus_entry& cE = mcDb.mcENUSlist[iE];
+ l10nMem_lang_entry& cL = cE.mcLangList[iL];
+ bool bF = cL.mbFuzzy || (cE.meState == l10nMem::ENTRY_CHANGED);
+ savePo.save(cE.msKey, cE.msText, cL.msText, false);
+ }
+ savePo.endSave();
}
- // JIX
}
/********************** I M P L E M E N T A T I O N **********************/
-void l10nMem_impl::loadLangKey(const std::string& srLang, const std::string& srKey, const std::string& srObjectType,
- const std::string& srText)
+void l10nMem_impl::dumpMem(const std::string& srTargetFile)
{
+ std::string x;
+
+ x = srTargetFile;
+ // JIX (dumpMem)
}
/********************** I M P L E M E N T A T I O N **********************/
-std::vector<l10nMem_entry *>& l10nMem_impl::getLanguagesForKey(const std::string& srKey)
-{
- int nL = mcMemory.size();
-
- mcCurrentSelection.clear();
- if (srKey.size())
- for (int i = 0; i < nL; ++i)
- if (mcMemory[i].msLanguage != "en-US")
- mcCurrentSelection.push_back(&mcMemory[i]);
-
- return mcCurrentSelection;
-}
-#endif
\ No newline at end of file
+void l10nMem_impl::formatAndShowText(const std::string& sType, int iLineNo, const std::string& sText)
+{
+ std::string& cFile = mcDb.mcFileList[mcDb.miCurFileInx].msFileName;
+
+ std::cerr << sType;
+ if (cFile.size())
+ std::cerr << " in " << mcDb.mcFileList[mcDb.miCurFileInx].msFileName;
+ if (iLineNo)
+ std::cerr << "(" << iLineNo << ")";
+ std::cerr << ": " << sText << std::endl;
+}
\ No newline at end of file
Modified: openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gL10nMem.hxx Sun Mar 10 00:00:20 2013
@@ -93,6 +93,7 @@ class l10nMem_db
int miCurENUSinx;
int miCurLastENUSinx;
bool mbNeedWrite;
+ bool mbReorganizeNeeded;
std::vector<l10nMem_enus_entry> mcENUSlist;
std::vector<l10nMem_file_entry> mcFileList;
std::vector<std::string> mcLangList;
@@ -104,6 +105,7 @@ class l10nMem_db
const std::string& sText);
void setLanguage (const std::string& sLanguage,
bool bCreate);
+ bool findFileName (const std::string& sSourceFile, int iStart, bool bCreate);
void loadLangKey (int iLineNo,
const std::string& sSourceFile,
const std::string& sKey,
@@ -111,19 +113,16 @@ class l10nMem_db
const std::string& sText,
bool bFuzzy);
- void setFileName (int iLineNo,
- const std::string& sFilename,
- bool bCreate);
- void reorganize();
bool locateKey (int iLineNo,
const std::string& sKey,
const std::string& sText,
bool bThrow = true);
+ void reorganize();
void addKey (int iLineNo,
const std::string& sKey,
const std::string& sText,
- l10nMem::ENTRY_STATE eState);
+ l10nMem::ENTRY_STATE eStat);
};
@@ -145,6 +144,7 @@ class l10nMem_impl
void setSourceKey (int iLineNo,
+ const std::string& sFilename,
const std::string& sKey,
const std::string& sText);
@@ -156,7 +156,7 @@ class l10nMem_impl
const std::string& sText,
bool bIsFuzzy);
- void save (const std::string& sTargetDir);
+ void save (l10nMem& cMem, const std::string& sTargetDir);
void dumpMem (const std::string& sTargetDir);
private:
Modified: openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.cxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.cxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gL10nMemDB.cxx Sun Mar 10 00:00:20 2013
@@ -51,11 +51,11 @@ l10nMem_lang_entry::~l10nMem_lang_entry(
/********************** I M P L E M E N T A T I O N **********************/
-l10nMem_enus_entry::l10nMem_enus_entry(const std::string& sKey,
- const std::string& sText,
- int iLineNo,
- int iFileInx,
- ENTRY_STATE eState)
+l10nMem_enus_entry::l10nMem_enus_entry(const std::string& sKey,
+ const std::string& sText,
+ int iLineNo,
+ int iFileInx,
+ l10nMem::ENTRY_STATE eState)
:
msKey(sKey),
msText(sText),
@@ -96,10 +96,15 @@ l10nMem_file_entry::~l10nMem_file_entry(
l10nMem_db::l10nMem_db()
:
miCurFileInx(0),
- miCurLangInx(-1),
- miCurENUSinx(-1),
- mbNeedWrite(false)
-{
+ miCurLangInx(0),
+ miCurENUSinx(0),
+ miCurLastENUSinx(0),
+ mbNeedWrite(false),
+ mbReorganizeNeeded(false)
+{
+ mcFileList.push_back(l10nMem_file_entry("", 0));
+ mcLangList.push_back("");
+ mcENUSlist.push_back(l10nMem_enus_entry("", "", 0, 0, l10nMem::ENTRY_DELETED));
}
@@ -117,26 +122,15 @@ void l10nMem_db::loadENUSkey(int
const std::string& sKey,
const std::string& sText)
{
- setFileName(iLineNo, sSourceFile, true);
+ // create file name if needed
+ if (mcFileList[miCurFileInx].msFileName != sSourceFile)
+ {
+ miCurFileInx = mcFileList.size();
+ mcFileList.push_back(l10nMem_file_entry(sSourceFile, miCurENUSinx+1));
+ }
// add it to vector and update file pointer
- addKey(iLineNo, sKey, sText, ENTRY_DELETED);
- mcFileList[miCurFileInx].miEnd = miCurENUSinx;
-}
-
-
-
-/********************** I M P L E M E N T A T I O N **********************/
-void l10nMem_db::loadLangKey(int iLineNo,
- const std::string& sSourceFile,
- const std::string& sKey,
- const std::string& sOrgText,
- const std::string& sText,
- bool bFuzzy)
-{
- locateKey(iLineNo, sKey, sOrgText);
-
- mcENUSlist[miCurENUSinx].mcLangList.push_back(l10nMem_lang_entry(sText, bFuzzy));
+ addKey(iLineNo, sKey, sText, l10nMem::ENTRY_DELETED);
}
@@ -158,60 +152,73 @@ void l10nMem_db::setLanguage(const std::
{
if (bCreate)
throw l10nMem::showError("loading " + sLanguage + " twice");
+ return;
}
- else
- {
- if (bCreate)
- mcLangList.push_back(sLanguage);
- else
- throw l10nMem::showError("language " + sLanguage + " not loaded");
- }
+
+ // language does not exist in db
+ if (!bCreate)
+ throw l10nMem::showError("language " + sLanguage + " not loaded");
+
+ // create language
+ mcLangList.push_back(sLanguage);
+
+ // add language to all ENUS entries
+ iSize = mcENUSlist.size();
+ for (int i = 0; i < iSize; ++i)
+ mcENUSlist[i].mcLangList.push_back(l10nMem_lang_entry("", false));
}
/********************** I M P L E M E N T A T I O N **********************/
-void l10nMem_db::setFileName(int iLineNo,
- const std::string& sFilename,
- bool bCreate)
+bool l10nMem_db::findFileName(const std::string& sSourceFile, int iStart, bool bCreate)
{
int iSize = mcFileList.size();
- // Same file as last
- if (mcFileList[miCurFileInx].msFileName == sFilename)
- return;
+ // Check this or next file
+ if (mcFileList[miCurFileInx].msFileName == sSourceFile)
+ return true;
+ if (++miCurFileInx < iSize && mcFileList[miCurFileInx].msFileName == sSourceFile)
+ return true;
+
+ for (miCurFileInx = 0;
+ miCurFileInx < iSize && mcFileList[miCurFileInx].msFileName == sSourceFile;
+ ++miCurFileInx) ;
- // Locate file in index (or add it)
- for (miCurFileInx = 0; miCurFileInx < iSize &&
- mcFileList[miCurFileInx].msFileName != sFilename; ++miCurFileInx) ;
- if (miCurFileInx == iSize)
+ if (bCreate && miCurFileInx < iSize)
{
- if (bCreate)
- mcFileList.push_back(l10nMem_file_entry(sFilename, mcENUSlist.size()));
- else
- throw l10nMem::showError("file " + sFilename + " not located in po files", iLineNo);
+ mcFileList.push_back(l10nMem_file_entry(sSourceFile, iStart));
+ miCurFileInx = iSize;
}
+ return (miCurFileInx < iSize);
}
/********************** I M P L E M E N T A T I O N **********************/
-void l10nMem_db::loadCleanup(bool bMaster)
+void l10nMem_db::loadLangKey(int iLineNo,
+ const std::string& sSourceFile,
+ const std::string& sKey,
+ const std::string& sOrgText,
+ const std::string& sText,
+ bool bFuzzy)
{
- if (bMaster)
- {
- // JIX
- }
- else
- {
- // Insert dummy entries for missing lang entries
- int i, iSizeENUS = mcENUSlist.size();
- int iSizeLang = mcLangList.size();
-
- for (i = 0; i < iSizeENUS; ++i)
- if (iSizeLang > (int)mcENUSlist[i].mcLangList.size())
- mcENUSlist[i].mcLangList.push_back(l10nMem_lang_entry("", true));
- }
+ if (!findFileName(sSourceFile, false, 0))
+ throw l10nMem::showError(".po file contains unknown filename: " + sSourceFile);
+
+ locateKey(iLineNo, sKey, sOrgText);
+
+ l10nMem_lang_entry& xCur = mcENUSlist[miCurENUSinx].mcLangList[miCurLangInx];
+ xCur.msText = sText;
+ xCur.mbFuzzy = bFuzzy;
+}
+
+
+
+/********************** I M P L E M E N T A T I O N **********************/
+void l10nMem_db::reorganize()
+{
+ // JIX (reorganize)
}
@@ -225,6 +232,14 @@ bool l10nMem_db::locateKey(int
// Start from beginning of file and to end
l10nMem_file_entry& cCur = mcFileList[miCurFileInx];
+ // Fast check first
+ if (miCurENUSinx < (int)mcENUSlist.size() -1)
+ {
+ l10nMem_enus_entry& nowEntry = mcENUSlist[++miCurENUSinx];
+ if (nowEntry.msText == sText && nowEntry.msKey == sKey)
+ return true;
+ }
+
// Find match with key and text
for (miCurENUSinx = cCur.miStart; miCurENUSinx <= cCur.miEnd; ++miCurENUSinx)
{
@@ -242,12 +257,12 @@ bool l10nMem_db::locateKey(int
/********************** I M P L E M E N T A T I O N **********************/
-void l10nMem_db::addKey(int iLineNo,
- const std::string& sKey,
- const std::string& sText,
- ENTRY_STATE eState)
+void l10nMem_db::addKey(int iLineNo,
+ const std::string& sKey,
+ const std::string& sText,
+ l10nMem::ENTRY_STATE eStat)
{
- // add it to vector and update file pointer
miCurENUSinx = mcENUSlist.size();
- mcENUSlist.push_back(l10nMem_enus_entry(sKey, sText, iLineNo, miCurFileInx, eState));
-}
\ No newline at end of file
+ mcENUSlist.push_back(l10nMem_enus_entry(sKey, sText, iLineNo, miCurFileInx, eStat));
+ miCurLastENUSinx = mcFileList[miCurFileInx].miEnd = miCurENUSinx;
+}
Modified: openoffice/branches/l10n/main/l10ntools/source/gLang.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/gLang.hxx?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/gLang.hxx (original)
+++ openoffice/branches/l10n/main/l10ntools/source/gLang.hxx Sun Mar 10 00:00:20 2013
@@ -35,13 +35,6 @@
/******************* G L O B A L D E F I N I T I O N *******************/
-typedef enum
-{
- ENTRY_DELETED,
- ENTRY_ADDED,
- ENTRY_CHANGED,
- ENTRY_NORMAL
-} ENTRY_STATE;
@@ -56,6 +49,13 @@ class l10nMem
l10nMem();
~l10nMem();
+ typedef enum
+ {
+ ENTRY_DELETED,
+ ENTRY_ADDED,
+ ENTRY_CHANGED,
+ ENTRY_NORMAL
+ } ENTRY_STATE;
static void setShowVerbose ();
static void setShowDebug ();
@@ -64,16 +64,13 @@ class l10nMem
static int showWarning (const std::string& sText, int iLineNo = 0);
static void showDebug (const std::string& sText, int iLineNo = 0);
static void showVerbose (const std::string& sText, int iLineNo = 0);
- bool isError ();
+ bool isError ();
void setModuleName (const std::string& sModuleName);
-
void loadENUSkey (int iLineNo,
const std::string& sSourceFile,
const std::string& sKey,
const std::string& sText);
- void loadCleanup (bool bMaster);
-
void setLanguage (const std::string& sLanguage,
bool bCreate);
void loadLangKey (int iLineNo,
@@ -82,6 +79,8 @@ class l10nMem
const std::string& sOrgText,
const std::string& sText,
bool bIsFuzzy);
+
+
void convLangKey (int iLineNo,
const std::string& sSourceFile,
const std::string& sKey,
@@ -89,14 +88,13 @@ class l10nMem
const std::string& sText,
bool bIsFuzzy);
- void setFileName (int iLineNo,
- const std::string& sFilename,
- bool bCreate);
bool checkKey (const std::string& sKey,
const std::string& sText);
void setSourceKey (int iLineNo,
+ const std::string& sFilename,
const std::string& sKey,
const std::string& sText);
+ void reorganize ();
void save (const std::string& sTargetDir);
void dumpMem (const std::string& sTargetDir);
@@ -109,11 +107,21 @@ class l10nMem
class convert_gen
{
public:
- convert_gen(l10nMem& cMemory, const std::string& sSourceFile);
+ convert_gen(l10nMem& cMemory, const std::string& sSourceDir, const std::string& sSourceFile);
~convert_gen();
// do extract/merge
bool execute(const bool bMerge, const bool bAllowNoFile = false);
+
+ // ONLY po should implement these functions
+ void startSave(const std::string& sTargetDir,
+ const std::string& sLanguage,
+ const std::string& sFile);
+ void save(const std::string& sKey,
+ const std::string& sENUStext,
+ const std::string& sText,
+ bool bFuzzy);
+ void endSave();
};
Modified: openoffice/branches/l10n/main/l10ntools/source/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/branches/l10n/main/l10ntools/source/makefile.mk?rev=1454775&r1=1454774&r2=1454775&view=diff
==============================================================================
--- openoffice/branches/l10n/main/l10ntools/source/makefile.mk (original)
+++ openoffice/branches/l10n/main/l10ntools/source/makefile.mk Sun Mar 10 00:00:20 2013
@@ -169,7 +169,7 @@ APP7STDLIBS+= \
# localizer for new l10n framework
APP8TARGET= genLang
APP8OBJS= $(OBJ)$/gLang.obj $(OBJ)$/gL10nMem.obj \
- $(OBJ)$/gL10MemDB.obj $(OBJ)$/gHandler.obj \
+ $(OBJ)$/gL10nMemDB.obj $(OBJ)$/gHandler.obj \
$(OBJ)$/gConProp.obj $(OBJ)$/gConTree.obj \
$(OBJ)$/gCon.obj $(OBJ)$/gConDB.obj \
$(OBJ)$/gConPoWrap.obj $(OBJ)$/gConSrcWrap.obj \