Merge with develop

--HG--
branch : compatibility-develop
This commit is contained in:
kervala 2016-11-07 14:12:11 +01:00
commit 7e2bbe1f37
9 changed files with 244 additions and 226 deletions

View file

@ -144,12 +144,10 @@ public:
* 16 bits encoding can be recognized by the official header : * 16 bits encoding can be recognized by the official header :
* FF, FE, witch can be reversed if the data are MSB first. * FF, FE, witch can be reversed if the data are MSB first.
* *
* Optionally, you can force the reader to consider the file as
* UTF-8 encoded.
* Optionally, you can ask the reader to interpret #include commands. * Optionally, you can ask the reader to interpret #include commands.
*/ */
static void readTextFile(const std::string &filename, static void readTextFile(const std::string &filename,
ucstring &result, bool forceUtf8 = false, ucstring &result,
bool fileLookup = true, bool fileLookup = true,
bool preprocess = false, bool preprocess = false,
TLineFormat lineFmt = LINE_FMT_NO_CARE, TLineFormat lineFmt = LINE_FMT_NO_CARE,
@ -259,7 +257,7 @@ private:
/// The internal read function, it does the real job of readTextFile /// The internal read function, it does the real job of readTextFile
static void _readTextFile(const std::string &filename, static void _readTextFile(const std::string &filename,
ucstring &result, bool forceUtf8, ucstring &result,
bool fileLookup, bool fileLookup,
bool preprocess, bool preprocess,
TLineFormat lineFmt, TLineFormat lineFmt,

View file

@ -18,7 +18,6 @@
#include "nel/misc/app_context.h" #include "nel/misc/app_context.h"
#include "nel/misc/dynloadlib.h" #include "nel/misc/dynloadlib.h"
#include "nel/misc/command.h" #include "nel/misc/command.h"
#include "nel/misc/system_utils.h"
#include <locale.h> #include <locale.h>

View file

@ -412,7 +412,7 @@ void CConfigFile::reparse (bool lookupPaths)
if (!CPath::lookup(fn, false).empty()) if (!CPath::lookup(fn, false).empty())
{ {
ucstring content; ucstring content;
CI18N::readTextFile(fn, content, true, true, true); CI18N::readTextFile(fn, content, true, true);
string utf8 = content.toUtf8(); string utf8 = content.toUtf8();
CMemStream stream; CMemStream stream;

View file

@ -117,7 +117,7 @@ bool loadStringFile(const std::string filename, vector<TStringInfo> &stringInfos
*/ */
ucstring text; ucstring text;
CI18N::readTextFile(filename, text, false, false, true, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, text, false, true, CI18N::LINE_FMT_LF);
// CI18N::readTextBuffer(buffer, size, text); // CI18N::readTextBuffer(buffer, size, text);
// delete [] buffer; // delete [] buffer;
@ -313,7 +313,7 @@ bool readPhraseFile(const std::string &filename, vector<TPhrase> &phrases, bool
{ {
ucstring doc; ucstring doc;
CI18N::readTextFile(filename, doc, false, false, true, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, doc, false, true, CI18N::LINE_FMT_LF);
return readPhraseFileFromString(doc, filename, phrases, forceRehash); return readPhraseFileFromString(doc, filename, phrases, forceRehash);
} }
@ -416,9 +416,14 @@ bool readPhraseFileFromString(ucstring const& doc, const std::string &filename,
phrase.Clauses.size()+1); phrase.Clauses.size()+1);
return false; return false;
} }
clause.Conditions += "(" + cond + ") ";
// only prepend a space if required
if (!clause.Conditions.empty()) clause.Conditions += " ";
clause.Conditions += "(" + cond + ")";
CI18N::skipWhiteSpace(first, last, &clause.Comments); CI18N::skipWhiteSpace(first, last, &clause.Comments);
} }
if (first == last) if (first == last)
{ {
nlwarning("DT: in '%s': Found end of file in non closed block for phrase %s\n", nlwarning("DT: in '%s': Found end of file in non closed block for phrase %s\n",
@ -626,7 +631,7 @@ bool loadExcelSheet(const string filename, TWorksheet &worksheet, bool checkUniq
fp.close(); fp.close();
ucstring str; ucstring str;
CI18N::readTextFile(filename, str, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, str, false, false, CI18N::LINE_FMT_LF);
if (!readExcelSheet(str, worksheet, checkUnique)) if (!readExcelSheet(str, worksheet, checkUnique))
return false; return false;

View file

@ -502,25 +502,39 @@ void CI18N::skipWhiteSpace(ucstring::const_iterator &it, ucstring::const_iterato
if (storeComments && *it == '/' && it+1 != last && *(it+1) == '/') if (storeComments && *it == '/' && it+1 != last && *(it+1) == '/')
{ {
// found a one line C comment. Store it until end of line. // found a one line C comment. Store it until end of line.
while (it != last && *it != '\n') while (it != last && (*it != '\n' && *it != '\r'))
storeComments->push_back(*it++); storeComments->push_back(*it++);
// store the final '\n' // store the final '\n'
if (it != last) if (it != last)
storeComments->push_back(*it++); storeComments->push_back('\n');
} }
else if (storeComments && *it == '/' && it+1 != last && *(it+1) == '*') else if (storeComments && *it == '/' && it+1 != last && *(it+1) == '*')
{ {
// found a multi line C++ comment. store until we found the closing '*/' // found a multi line C++ comment. store until we found the closing '*/'
while (it != last && !(*it == '*' && it+1 != last && *(it+1) == '/')) while (it != last && !(*it == '*' && it + 1 != last && *(it + 1) == '/'))
{
// don't put \r
if (*it == '\r')
{
// skip it
++it;
}
else
{
storeComments->push_back(*it++); storeComments->push_back(*it++);
}
}
// store the final '*' // store the final '*'
if (it != last) if (it != last)
storeComments->push_back(*it++); storeComments->push_back(*it++);
// store the final '/' // store the final '/'
if (it != last) if (it != last)
storeComments->push_back(*it++); storeComments->push_back(*it++);
// and a new line. // and a new line.
storeComments->push_back('\r');
storeComments->push_back('\n'); storeComments->push_back('\n');
} }
else else
@ -656,7 +670,6 @@ bool CI18N::parseMarkedString(ucchar openMark, ucchar closeMark, ucstring::const
void CI18N::readTextFile(const string &filename, void CI18N::readTextFile(const string &filename,
ucstring &result, ucstring &result,
bool forceUtf8,
bool fileLookup, bool fileLookup,
bool preprocess, bool preprocess,
TLineFormat lineFmt, TLineFormat lineFmt,
@ -666,7 +679,7 @@ void CI18N::readTextFile(const string &filename,
TReadContext readContext; TReadContext readContext;
// call the inner function // call the inner function
_readTextFile(filename, result, forceUtf8, fileLookup, preprocess, lineFmt, warnIfIncludesNotFound, readContext); _readTextFile(filename, result, fileLookup, preprocess, lineFmt, warnIfIncludesNotFound, readContext);
if (!readContext.IfStack.empty()) if (!readContext.IfStack.empty())
{ {
@ -709,7 +722,6 @@ void CI18N::skipLine(ucstring::const_iterator &it, ucstring::const_iterator end,
void CI18N::_readTextFile(const string &filename, void CI18N::_readTextFile(const string &filename,
ucstring &result, ucstring &result,
bool forceUtf8,
bool fileLookup, bool fileLookup,
bool preprocess, bool preprocess,
TLineFormat lineFmt, TLineFormat lineFmt,
@ -819,7 +831,7 @@ void CI18N::_readTextFile(const string &filename,
subFilename.c_str()); subFilename.c_str());
ucstring inserted; ucstring inserted;
_readTextFile(subFilename, inserted, forceUtf8, fileLookup, preprocess, lineFmt, warnIfIncludesNotFound, readContext); _readTextFile(subFilename, inserted, fileLookup, preprocess, lineFmt, warnIfIncludesNotFound, readContext);
final += inserted; final += inserted;
} }
} }
@ -873,7 +885,7 @@ void CI18N::_readTextFile(const string &filename,
subFilename.c_str()); subFilename.c_str());
ucstring inserted; ucstring inserted;
_readTextFile(subFilename, inserted, forceUtf8, fileLookup, preprocess, lineFmt, warnIfIncludesNotFound, readContext); _readTextFile(subFilename, inserted, fileLookup, preprocess, lineFmt, warnIfIncludesNotFound, readContext);
final += inserted; final += inserted;
} }
} }

View file

@ -550,7 +550,7 @@ void executeScriptBuf(const string &text)
void executeScriptFile(const string &filename) void executeScriptFile(const string &filename)
{ {
ucstring temp; ucstring temp;
CI18N::readTextFile(filename, temp, false, false, false); CI18N::readTextFile(filename, temp, false, false);
if (temp.empty()) if (temp.empty())
{ {

View file

@ -98,6 +98,10 @@ int main(int argc, char *argv[])
QApplication::setApplicationVersion(RYZOM_VERSION); QApplication::setApplicationVersion(RYZOM_VERSION);
QApplication::setWindowIcon(QIcon(":/icons/ryzom.ico")); QApplication::setWindowIcon(QIcon(":/icons/ryzom.ico"));
// remove first argument because it's not really an argument
QStringList args = QApplication::arguments();
args.removeFirst();
QLocale locale = QLocale::system(); QLocale locale = QLocale::system();
// load application translations // load application translations
@ -199,7 +203,7 @@ int main(int argc, char *argv[])
nlinfo("Launching %s", Q2C(tempFile)); nlinfo("Launching %s", Q2C(tempFile));
// launch copy in TEMP directory with same arguments // launch copy in TEMP directory with same arguments
if (QProcess::startDetached(tempFile, QApplication::arguments())) return 0; if (QProcess::startDetached(tempFile, args, tempPath)) return 0;
nlwarning("Unable to launch %s", Q2C(tempFile)); nlwarning("Unable to launch %s", Q2C(tempFile));
} }
@ -309,7 +313,7 @@ int main(int argc, char *argv[])
QFile::setPermissions(config.getInstallerInstalledFilePath(), QFile::permissions(config.getInstallerInstalledFilePath()) | QFile::ExeGroup | QFile::ExeUser | QFile::ExeOther); QFile::setPermissions(config.getInstallerInstalledFilePath(), QFile::permissions(config.getInstallerInstalledFilePath()) | QFile::ExeGroup | QFile::ExeUser | QFile::ExeOther);
#endif #endif
if (QProcess::startDetached(config.getInstallerInstalledFilePath())) return 0; if (QProcess::startDetached(config.getInstallerInstalledFilePath(), args, config.getInstallationDirectory())) return 0;
nlwarning("Unable to restart Installer %s", Q2C(config.getInstallerInstalledFilePath())); nlwarning("Unable to restart Installer %s", Q2C(config.getInstallerInstalledFilePath()));
#endif #endif

View file

@ -74,7 +74,7 @@ int main(int argc, char *argv[])
} }
ucstring str; ucstring str;
CI18N::readTextFile(inputFile, str, false, false, false); CI18N::readTextFile(inputFile, str, false, false);
if (outMode == ASCII) if (outMode == ASCII)
{ {

View file

@ -151,13 +151,11 @@ void showUsage(char *exeName)
LOG("Reference language is always the first language in languages.txt\n"); LOG("Reference language is always the first language in languages.txt\n");
} }
void verifyVersion(ucstring& doc, int versionId) void verifyVersion(ucstring& doc, int versionId)
{ {
ucstring version1("// DIFF_VERSION 1\r\n"); ucstring version1("// DIFF_VERSION 1\n");
ucstring::size_type version1Size = version1.size(); ucstring::size_type version1Size = version1.size();
ucstring version2("// DIFF_VERSION 2\r\n"); ucstring version2("// DIFF_VERSION 2\n");
ucstring::size_type version2Size = version2.size(); ucstring::size_type version2Size = version2.size();
switch (versionId) switch (versionId)
@ -190,7 +188,7 @@ bool readPhraseFile1(const std::string &filename, vector<TPhrase> &phrases, bool
{ {
ucstring doc; ucstring doc;
CI18N::readTextFile(filename, doc, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, doc, false, false, CI18N::LINE_FMT_LF);
verifyVersion(doc, 1); verifyVersion(doc, 1);
return readPhraseFileFromString(doc, filename, phrases, forceRehash); return readPhraseFileFromString(doc, filename, phrases, forceRehash);
} }
@ -199,7 +197,7 @@ bool readPhraseFile2(const std::string &filename, vector<TPhrase> &phrases, bool
{ {
ucstring doc; ucstring doc;
CI18N::readTextFile(filename, doc, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, doc, false, false, CI18N::LINE_FMT_LF);
verifyVersion(doc, 2); verifyVersion(doc, 2);
return readPhraseFileFromString(doc, filename, phrases, forceRehash); return readPhraseFileFromString(doc, filename, phrases, forceRehash);
} }
@ -352,7 +350,7 @@ bool mergeStringDiff(vector<TStringInfo> &strings, const string &language, const
{ {
// Check if the diff is translated // Check if the diff is translated
ucstring text; ucstring text;
CI18N::readTextFile(diffs[i], text, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(diffs[i], text, false, false, CI18N::LINE_FMT_LF);
if (text.find(ucstring("DIFF NOT TRANSLATED")) != ucstring::npos) if (text.find(ucstring("DIFF NOT TRANSLATED")) != ucstring::npos)
{ {
LOG("Diff file [%s] is not translated, merging it later.\n", CFile::getFilename(diffs[i]).c_str()); LOG("Diff file [%s] is not translated, merging it later.\n", CFile::getFilename(diffs[i]).c_str());
@ -432,6 +430,7 @@ public:
{ {
// nothing to do // nothing to do
} }
void onAdd(uint addIndex, uint refIndex, TStringDiffContext &context) void onAdd(uint addIndex, uint refIndex, TStringDiffContext &context)
{ {
TStringInfo si = context.Addition[addIndex]; TStringInfo si = context.Addition[addIndex];
@ -442,6 +441,7 @@ public:
nlinfo("Added %s at %u", si.Identifier.c_str(), addIndex); nlinfo("Added %s at %u", si.Identifier.c_str(), addIndex);
context.Diff.push_back(si); context.Diff.push_back(si);
} }
void onRemove(uint addIndex, uint refIndex, TStringDiffContext &context) void onRemove(uint addIndex, uint refIndex, TStringDiffContext &context)
{ {
TStringInfo si = context.Reference[refIndex]; TStringInfo si = context.Reference[refIndex];
@ -453,6 +453,7 @@ public:
nlinfo("Removed %s at %u", si.Identifier.c_str(), addIndex); nlinfo("Removed %s at %u", si.Identifier.c_str(), addIndex);
context.Diff.push_back(si); context.Diff.push_back(si);
} }
void onChanged(uint addIndex, uint refIndex, TStringDiffContext &context) void onChanged(uint addIndex, uint refIndex, TStringDiffContext &context)
{ {
TStringInfo si = context.Addition[addIndex]; TStringInfo si = context.Addition[addIndex];
@ -472,11 +473,9 @@ public:
sprintf(temp, "// DIFF SWAP %u %u (swaping %s and %s)", newIndex, refIndex, context.Reference[newIndex].Identifier.c_str(), context.Reference[refIndex].Identifier.c_str()); sprintf(temp, "// DIFF SWAP %u %u (swaping %s and %s)", newIndex, refIndex, context.Reference[newIndex].Identifier.c_str(), context.Reference[refIndex].Identifier.c_str());
// sprintf(temp, "// DIFF SWAP %u %u", newIndex, refIndex); // sprintf(temp, "// DIFF SWAP %u %u", newIndex, refIndex);
si.Comments = ucstring(temp) + nl +nl; si.Comments = ucstring(temp) + nl + nl;
context.Diff.push_back(si); context.Diff.push_back(si);
} }
}; };
@ -660,7 +659,7 @@ int makeStringDiff(int argc, char *argv[])
ucstring str = prepareStringFile(diff, false); ucstring str = prepareStringFile(diff, false);
// add the tag for non translation // add the tag for non translation
str += nl + ucstring ("// REMOVE THE FOLOWING LINE WHEN TRANSLATION IS DONE")+nl+ucstring("// DIFF NOT TRANSLATED")+nl; str += nl + ucstring ("// REMOVE THE FOLOWING LINE WHEN TRANSLATION IS DONE") + nl + ucstring("// DIFF NOT TRANSLATED") + nl;
std::string diffName(diffDir+Languages[l]+"_diff_"+diffVersion+".uxt"); std::string diffName(diffDir+Languages[l]+"_diff_"+diffVersion+".uxt");
CI18N::writeTextFile(diffName, str); CI18N::writeTextFile(diffName, str);
@ -679,7 +678,7 @@ void cleanComment(const std::string & filename)
ucstring text; ucstring text;
uint nbOldValue=0; uint nbOldValue=0;
CI18N::readTextFile(filename, text, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, text, false, false, CI18N::LINE_FMT_LF);
ucstring newText; ucstring newText;
ucstring::size_type last = 0; ucstring::size_type last = 0;
@ -697,7 +696,7 @@ void cleanComment(const std::string & filename)
ucstring toAdd = text.substr(last, size); ucstring toAdd = text.substr(last, size);
newText += toAdd; newText += toAdd;
ucstring::size_type commentEnd = text.find(ucstring("*/"), commentBegin); ucstring::size_type commentEnd = text.find(ucstring("*/"), commentBegin);
if (commentEnd != ucstring::npos) { commentEnd += 4; } if (commentEnd != ucstring::npos) { commentEnd += 2 + nl.size(); }
last = commentEnd; last = commentEnd;
++nbOldValue; ++nbOldValue;
} }
@ -800,7 +799,7 @@ int mergeStringDiff(int argc, char *argv[])
{ {
// backup the original file // backup the original file
ucstring old; ucstring old;
CI18N::readTextFile(filename, old, false, true, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, old, true, false, CI18N::LINE_FMT_LF);
if (old != str) if (old != str)
CFile::moveFile(historyDir+CFile::getFilenameWithoutExtension(filename)+"_"+diffVersion+"."+CFile::getExtension(filename), filename); CFile::moveFile(historyDir+CFile::getFilenameWithoutExtension(filename)+"_"+diffVersion+"."+CFile::getExtension(filename), filename);
} }
@ -840,7 +839,7 @@ bool mergePhraseDiff(vector<TPhrase> &phrases, const string &language, bool only
{ {
// Check if the diff is translated // Check if the diff is translated
ucstring text; ucstring text;
CI18N::readTextFile(diffs[i], text, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(diffs[i], text, false, false, CI18N::LINE_FMT_LF);
verifyVersion(text, 1); verifyVersion(text, 1);
if (text.find(ucstring("DIFF NOT TRANSLATED")) != ucstring::npos) if (text.find(ucstring("DIFF NOT TRANSLATED")) != ucstring::npos)
{ {
@ -991,7 +990,7 @@ public:
ucstring tempT = preparePhraseFile(tempV, false); ucstring tempT = preparePhraseFile(tempV, false);
CI18N::removeCComment(tempT); CI18N::removeCComment(tempT);
phrase.Comments = ucstring("// DIFF CHANGED ") + toString(addIndex) + nl + phrase.Comments; phrase.Comments = ucstring("// DIFF CHANGED ") + toString(addIndex) + nl + phrase.Comments;
phrase.Comments = phrase.Comments + ucstring("/* OLD VALUE : ["+nl) + tabLines(1, tempT) +nl + "] */" + nl; phrase.Comments = phrase.Comments + ucstring("/* OLD VALUE : [" + nl) + tabLines(1, tempT) + nl + "] */" + nl;
phrase.Comments = phrase.Comments + chg; phrase.Comments = phrase.Comments + chg;
nlinfo("Changed %s at %u", phrase.Identifier.c_str(), addIndex); nlinfo("Changed %s at %u", phrase.Identifier.c_str(), addIndex);
@ -1072,10 +1071,10 @@ int makePhraseDiff(int argc, char *argv[])
{ {
LOG("Writing difference file for language %s\n", Languages[l].c_str()); LOG("Writing difference file for language %s\n", Languages[l].c_str());
ucstring text; ucstring text;
text += "// DIFF_VERSION 1\r\n"; text += "// DIFF_VERSION 1\n";
text += preparePhraseFile(diff, false); text += preparePhraseFile(diff, false);
// add the tag for non translation // add the tag for non translation
text += nl + ucstring ("// REMOVE THE FOLOWING LINE WHEN TRANSLATION IS DONE")+nl+ucstring("// DIFF NOT TRANSLATED")+nl; text += nl + ucstring ("// REMOVE THE FOLOWING LINE WHEN TRANSLATION IS DONE") + nl + ucstring("// DIFF NOT TRANSLATED") + nl;
CI18N::writeTextFile(diffDir+"phrase_"+Languages[l]+"_diff_"+diffVersion+".txt", text); CI18N::writeTextFile(diffDir+"phrase_"+Languages[l]+"_diff_"+diffVersion+".txt", text);
} }
} }
@ -1164,7 +1163,7 @@ int mergePhraseDiff(int argc, char *argv[], int version)
{ {
// backup the original file // backup the original file
ucstring old; ucstring old;
CI18N::readTextFile(filename, old, false, true, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, old, true, false, CI18N::LINE_FMT_LF);
if (old != str) if (old != str)
CFile::moveFile(historyDir+CFile::getFilenameWithoutExtension(filename)+"_"+diffVersion+"."+CFile::getExtension(filename), filename); CFile::moveFile(historyDir+CFile::getFilenameWithoutExtension(filename)+"_"+diffVersion+"."+CFile::getExtension(filename), filename);
} }
@ -1270,7 +1269,7 @@ int makeClauseDiff(int argc, char *argv[])
ucstring str = prepareStringFile(diff, false); ucstring str = prepareStringFile(diff, false);
// add the tag for non translation // add the tag for non translation
str += nl + ucstring ("// REMOVE THE FOLOWING LINE WHEN TRANSLATION IS DONE")+nl+ucstring("// DIFF NOT TRANSLATED")+nl; str += nl + ucstring ("// REMOVE THE FOLOWING LINE WHEN TRANSLATION IS DONE") + nl + ucstring("// DIFF NOT TRANSLATED") + nl;
std::string diffName(diffDir+"clause_"+Languages[l]+"_diff_"+diffVersion+".txt"); std::string diffName(diffDir+"clause_"+Languages[l]+"_diff_"+diffVersion+".txt");
CI18N::writeTextFile(diffName, str); CI18N::writeTextFile(diffName, str);
@ -1333,7 +1332,7 @@ int mergeClauseDiff(int argc, char *argv[])
{ {
// backup the original file // backup the original file
ucstring old; ucstring old;
CI18N::readTextFile(filename, old, false, true, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, old, true, false, CI18N::LINE_FMT_LF);
if (old != str) if (old != str)
CFile::moveFile(historyDir+CFile::getFilenameWithoutExtension(filename)+"_"+diffVersion+"."+CFile::getExtension(filename), filename); CFile::moveFile(historyDir+CFile::getFilenameWithoutExtension(filename)+"_"+diffVersion+"."+CFile::getExtension(filename), filename);
} }
@ -1358,7 +1357,7 @@ bool mergeWorksheetDiff(const std::string filename, TWorksheet &sheet, bool only
if (onlyTranslated) if (onlyTranslated)
{ {
ucstring text; ucstring text;
CI18N::readTextFile(fileList[i], text, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(fileList[i], text, false, false, CI18N::LINE_FMT_LF);
if (text.find(ucstring("DIFF NOT TRANSLATED")) != ucstring::npos) if (text.find(ucstring("DIFF NOT TRANSLATED")) != ucstring::npos)
{ {
LOG("Diff file [%s] is not translated, merging it later.\n", CFile::getFilename(fileList[i]).c_str()); LOG("Diff file [%s] is not translated, merging it later.\n", CFile::getFilename(fileList[i]).c_str());
@ -1662,7 +1661,7 @@ int makeWorksheetDiff(int argc, char *argv[], const std::string &additionFilenam
ucstring str = prepareExcelSheet(diff); ucstring str = prepareExcelSheet(diff);
// add the tag for non translation // add the tag for non translation
str += ucstring ("REMOVE THE FOLOWING TWO LINE WHEN TRANSLATION IS DONE")+nl+ucstring("DIFF NOT TRANSLATED")+nl; str += ucstring ("REMOVE THE FOLOWING TWO LINE WHEN TRANSLATION IS DONE") + nl + ucstring("DIFF NOT TRANSLATED") + nl;
string fn(CFile::getFilenameWithoutExtension(referenceFilename)), ext(CFile::getExtension(referenceFilename)); string fn(CFile::getFilenameWithoutExtension(referenceFilename)), ext(CFile::getExtension(referenceFilename));
std::string diffName(diffDir+fn+"_diff_"+diffVersion+"."+ext); std::string diffName(diffDir+fn+"_diff_"+diffVersion+"."+ext);
@ -1691,7 +1690,7 @@ int mergeWorksheetDiff(int argc, char *argv[], const std::string &filename, cons
// there is no translated file yet, build one from the working file. // there is no translated file yet, build one from the working file.
ucstring str; ucstring str;
string addfn = addDir+additionFile; string addfn = addDir+additionFile;
CI18N::readTextFile(addfn, str, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(addfn, str, false, false, CI18N::LINE_FMT_LF);
str = str.substr(0, str.find(nl)+2); str = str.substr(0, str.find(nl)+2);
CI18N::writeTextFile(transDir+filename, str); CI18N::writeTextFile(transDir+filename, str);
// reread the file. // reread the file.
@ -1711,7 +1710,7 @@ int mergeWorksheetDiff(int argc, char *argv[], const std::string &filename, cons
{ {
// backup the original file // backup the original file
ucstring old; ucstring old;
CI18N::readTextFile(transDir+filename, old, false, true, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(transDir+filename, old, true, false, CI18N::LINE_FMT_LF);
if (old != str) if (old != str)
{ {
string fn(CFile::getFilenameWithoutExtension(filename)), ext(CFile::getExtension(filename)); string fn(CFile::getFilenameWithoutExtension(filename)), ext(CFile::getExtension(filename));
@ -1865,7 +1864,7 @@ void cropLines(const std::string &filename, uint32 nbLines)
LOG("Cropping %u lines from file '%s'\n", nbLines, filename.c_str()); LOG("Cropping %u lines from file '%s'\n", nbLines, filename.c_str());
CI18N::readTextFile(filename, utext, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, utext, false, false, CI18N::LINE_FMT_LF);
string text = utext.toUtf8(); string text = utext.toUtf8();
@ -1910,7 +1909,7 @@ int makeWork()
// change #include "*_en.txt" into #include "*_wk.txt" // change #include "*_en.txt" into #include "*_wk.txt"
ucstring utext; ucstring utext;
CI18N::readTextFile(filename, utext, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, utext, false, false, CI18N::LINE_FMT_LF);
string text = utext.toUtf8(); string text = utext.toUtf8();
bool changedFile = false; bool changedFile = false;
@ -2217,7 +2216,6 @@ ucstring preparePhraseFile2(const vector<TPhrase> &phrases, bool removeDiffComme
ret += cond + nl; ret += cond + nl;
} }
ret += '\t'; ret += '\t';
// ucstring text = CI18N::makeMarkedString('[', ']', c.Text);
ucstring text = CI18N::makeMarkedString('[', ']', c.Text);; ucstring text = CI18N::makeMarkedString('[', ']', c.Text);;
ucstring text2; ucstring text2;
@ -2331,14 +2329,14 @@ bool sortTransPhrase()
} }
} }
nlinfo("Updating hashcode of phrase file for %s.", Languages[l].c_str());
nlinfo("Updating hashcode of phrase file for %s.\n", Languages[l].c_str());
// build the diff file for each language. // build the diff file for each language.
ucstring str = preparePhraseFile(phrases2, false); ucstring str = preparePhraseFile(phrases2, false);
std::string pharseName(transDir+refFile); std::string pharseName(transDir+refFile);
CFile::createDirectoryTree( CFile::getPath(pharseName) ); CFile::createDirectoryTree( CFile::getPath(pharseName) );
CI18N::writeTextFile(pharseName, str); CI18N::writeTextFile(pharseName, str);
} }
return true; return true;
} }
@ -2348,7 +2346,7 @@ void patchWorkFile(vector<TPhrase> &updatedPhrase, const std::string & filename)
{ {
ucstring text; ucstring text;
if ( updatedPhrase.empty() ) { return; } if ( updatedPhrase.empty() ) { return; }
CI18N::readTextFile(filename, text, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, text, false, false, CI18N::LINE_FMT_LF);
vector<TPhrase>::const_iterator first(updatedPhrase.begin()); vector<TPhrase>::const_iterator first(updatedPhrase.begin());
vector<TPhrase>::const_iterator last(updatedPhrase.end()); vector<TPhrase>::const_iterator last(updatedPhrase.end());
for (; first != last; ++first) for (; first != last; ++first)
@ -2415,7 +2413,6 @@ int updatePhraseWork()
uint lastFile = (uint)outputResult.size(); uint lastFile = (uint)outputResult.size();
for (; firstFile != lastFile ; ++firstFile) for (; firstFile != lastFile ; ++firstFile)
{ {
ucstring doc = outputResult[firstFile].first; ucstring doc = outputResult[firstFile].first;
std::vector<TPhrase> phrases; std::vector<TPhrase> phrases;
readPhraseFileFromString(outputResult[firstFile].first, outputResult[firstFile].second, phrases, true); readPhraseFileFromString(outputResult[firstFile].first, outputResult[firstFile].second, phrases, true);
@ -2447,7 +2444,7 @@ int updatePhraseWork()
firstClause->HashValue = clauseHashValue; firstClause->HashValue = clauseHashValue;
} }
updatedPhrases.push_back(transPhrase); updatedPhrases.push_back(transPhrase);
updatedPhrases.back().Comments= ucstring(""); updatedPhrases.back().Comments.clear();
} }
} }
} }
@ -2489,7 +2486,7 @@ bool mergePhraseDiff2(vector<TPhrase> &phrases, const string &language, bool onl
{ {
// Check if the diff is translated // Check if the diff is translated
ucstring text; ucstring text;
CI18N::readTextFile(diffs[i], text, false, false, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(diffs[i], text, false, false, CI18N::LINE_FMT_LF);
verifyVersion(text, 2); verifyVersion(text, 2);
if (text.find(ucstring("DIFF NOT TRANSLATED")) != ucstring::npos) if (text.find(ucstring("DIFF NOT TRANSLATED")) != ucstring::npos)
{ {
@ -2701,7 +2698,7 @@ void CMakePhraseDiff2::onChanged(uint addIndex, uint refIndex, TPhraseDiffContex
ucstring tempT = preparePhraseFile(tempV, false); ucstring tempT = preparePhraseFile(tempV, false);
CI18N::removeCComment(tempT); CI18N::removeCComment(tempT);
phrase.Comments = ucstring("// DIFF CHANGED ") + toString(addIndex) + nl + phrase.Comments; phrase.Comments = ucstring("// DIFF CHANGED ") + toString(addIndex) + nl + phrase.Comments;
phrase.Comments = phrase.Comments + ucstring("/* OLD VALUE : ["+nl) + tabLines(1, tempT) +nl + "] */" + nl; phrase.Comments = phrase.Comments + ucstring("/* OLD VALUE : [" + nl) + tabLines(1, tempT) + nl + "] */" + nl;
phrase.Comments = phrase.Comments + chg; phrase.Comments = phrase.Comments + chg;
nlinfo("Changed %s at %u", phrase.Identifier.c_str(), addIndex); nlinfo("Changed %s at %u", phrase.Identifier.c_str(), addIndex);
@ -2806,10 +2803,10 @@ int makePhraseDiff2(int argc, char *argv[])
{ {
LOG("Writing difference file for language %s\n", Languages[l].c_str()); LOG("Writing difference file for language %s\n", Languages[l].c_str());
ucstring text; ucstring text;
text += "// DIFF_VERSION 2\r\n"; text += "// DIFF_VERSION 2\n";
text += preparePhraseFile(diff, false); text += preparePhraseFile(diff, false);
// add the tag for non translation // add the tag for non translation
text += nl + ucstring ("// REMOVE THE FOLOWING LINE WHEN TRANSLATION IS DONE")+nl+ucstring("// DIFF NOT TRANSLATED")+nl; text += nl + ucstring ("// REMOVE THE FOLOWING LINE WHEN TRANSLATION IS DONE") + nl + ucstring("// DIFF NOT TRANSLATED") + nl;
CI18N::writeTextFile(diffDir+"phrase_"+Languages[l]+"_diff_"+diffVersion+".txt", text); CI18N::writeTextFile(diffDir+"phrase_"+Languages[l]+"_diff_"+diffVersion+".txt", text);
} }
} }
@ -2973,14 +2970,19 @@ void preprocessTextFile(const std::string &filename,
ucstring name = line.substr(firstFilename +1, lastFilename - firstFilename -1); ucstring name = line.substr(firstFilename +1, lastFilename - firstFilename -1);
string subFilename = name.toString(); string subFilename = name.toString();
{
CIFile testFile; if (!CFile::fileExists(subFilename))
if (!testFile.open(subFilename))
{ {
// try to open the include file relative to current file // try to open the include file relative to current file
subFilename = CFile::getPath(filename)+subFilename; subFilename = CFile::getPath(filename)+subFilename;
if (!CFile::fileExists(subFilename))
{
nlwarning("Unable to open %s", subFilename.c_str());
subFilename.clear();
} }
} }
preprocessTextFile(subFilename, outputResult); preprocessTextFile(subFilename, outputResult);
} }
else else
@ -2991,8 +2993,6 @@ void preprocessTextFile(const std::string &filename,
} }
outputResult.push_back( std::pair<ucstring, std::string> ( current, fullName ) ); outputResult.push_back( std::pair<ucstring, std::string> ( current, fullName ) );
} }
@ -3029,7 +3029,7 @@ int mergePhraseDiff(int argc, char *argv[])
{ {
// backup the original file // backup the original file
ucstring old; ucstring old;
CI18N::readTextFile(filename, old, false, true, false, CI18N::LINE_FMT_LF); CI18N::readTextFile(filename, old, true, false, CI18N::LINE_FMT_LF);
if (old != str) if (old != str)
CFile::moveFile((historyDir+CFile::getFilenameWithoutExtension(filename)+"_"+diffVersion+"."+CFile::getExtension(filename)).c_str(), filename.c_str()); CFile::moveFile((historyDir+CFile::getFilenameWithoutExtension(filename)+"_"+diffVersion+"."+CFile::getExtension(filename)).c_str(), filename.c_str());
} }