helpcontent2 | 2 - l10ntools/inc/helpmerge.hxx | 2 - l10ntools/source/helpex.cxx | 80 +++++++++++++++++++++++++++++++++++++---- l10ntools/source/helpmerge.cxx | 45 ----------------------- l10ntools/source/merge.cxx | 13 +++--- l10ntools/source/treemerge.cxx | 5 +- solenv/inc/tg_help.mk | 5 ++ solenv/inc/unitools.mk | 1 8 files changed, 88 insertions(+), 65 deletions(-)
New commits: commit 06d5579c9291b6061ee89eed8f505f436375e15d Author: Zolnai Tamás <zolnaitamas20...@gmail.com> Date: Sun Nov 18 18:20:38 2012 +0100 Localize tree files in help -Treex works well when po is not exist, send a warning but make en-US tree-s. Change-Id: Ib2b790742c022211a8d250b66891cef045941398 diff --git a/helpcontent2 b/helpcontent2 index 23d7515..7bb6ef6 160000 --- a/helpcontent2 +++ b/helpcontent2 @@ -1 +1 @@ -Subproject commit 23d7515757534fca7d50e1201745586adde4b8f6 +Subproject commit 7bb6ef60f6486e143fda08cc1527f5eb71c86b09 diff --git a/l10ntools/source/treemerge.cxx b/l10ntools/source/treemerge.cxx index 12e931c..8555c8f 100644 --- a/l10ntools/source/treemerge.cxx +++ b/l10ntools/source/treemerge.cxx @@ -279,8 +279,8 @@ void TreeParser::Merge( { MergeDataFile aMergeDataFile( rMergeSrc, static_cast<OString>( m_pSource->name ), false ); - - if( aMergeDataFile.GetLanguages()[0] != m_sLang ) + const std::vector<OString> vLanguages = aMergeDataFile.GetLanguages(); + if( !vLanguages.empty() && vLanguages[0] != m_sLang ) { std::cerr << "Treex error: given language conflicts with " @@ -288,7 +288,6 @@ void TreeParser::Merge( << m_sLang.getStr() << " - " << rMergeSrc.getStr() << std::endl; return; } - lcl_MergeLevel( m_pSource, pRootNode, (const xmlChar *)("help_section"), &aMergeDataFile, m_sLang, rXhpRoot ); diff --git a/solenv/inc/unitools.mk b/solenv/inc/unitools.mk index 863c4ad..bbd51bf 100644 --- a/solenv/inc/unitools.mk +++ b/solenv/inc/unitools.mk @@ -33,6 +33,7 @@ CFGEX*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/cfgex AUTODOC*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/autodoc LOCALIZE*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/localize GSICHECK*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/gsicheck +TREEX*=$(AUGMENT_LIBRARY_PATH) $(SOLARBINDIR)/treex .IF "$(XSLTPROC)"=="" .IF "$(SYSTEM_LIBXSLT)"!="YES" commit 5d84ae59e70b8b1017959a68934ac1f455ce2b13 Author: Zolnai Tamás <zolnaitamas20...@gmail.com> Date: Sun Nov 18 15:24:44 2012 +0100 Localize xhp files in help Make helpex to be able to work with more xhp files at one time - Add new input flag "-mi" which means multiinput - Input is a file include pathes to xhp files (these are in the same directory so their strings are in the same po file) - Output is a file include pathes to dest xhp files - Merge reads all po entry from the specified po file if MergeDataFile ctor's second parameter is empty Rewrite makefiles to work with new syntax Plus Delete some unused code Change-Id: I5eb12d7a6f5e9cda378788410d3c50052eb752b8 diff --git a/l10ntools/inc/helpmerge.hxx b/l10ntools/inc/helpmerge.hxx index 34dfdc7..401f839 100644 --- a/l10ntools/inc/helpmerge.hxx +++ b/l10ntools/inc/helpmerge.hxx @@ -55,8 +55,6 @@ public: /// point to existing files. bool Merge( const rtl::OString &rSDFFile_in, const rtl::OString &rDestinationFile_in , const rtl::OString& sLanguage , MergeDataFile& aMergeDataFile ); - bool Merge( const rtl::OString &rSDFFile, const rtl::OString &rPathX , const rtl::OString &rPathY , bool bISO - , const std::vector<rtl::OString>& aLanguages , MergeDataFile& aMergeDataFile , bool bCreateDir ); private: rtl::OString GetOutpath( const rtl::OString& rPathX , const rtl::OString& sCur , const rtl::OString& rPathY ); diff --git a/l10ntools/source/helpex.cxx b/l10ntools/source/helpex.cxx index 8dca205..7ab581a 100644 --- a/l10ntools/source/helpex.cxx +++ b/l10ntools/source/helpex.cxx @@ -20,6 +20,9 @@ #include "sal/config.h" #include <iostream> +#include <fstream> +#include <string> +#include <cstring> #include <stdio.h> #include <stdlib.h> @@ -30,24 +33,87 @@ #ifndef TESTDRIVER +void WriteUsage() +{ + std::cout + << "Syntax: Helpex [-p Prj] [-r Root] -[m]i FileIn -o FileOut" + << " [-m DataBase] [-l l1,l2,...]\n" + << " Prj: Project\n" + << " Root: Path to project root (../.. etc.)\n" + << " FileIn + i: Source file (*.xhp)\n" + << " FileIn + -mi: File including pathes of source files" + << " (only for merge)" + << " FileOut: Destination file (*.*) or files (in case of -mi)\n" + << " DataBase: Mergedata (*.po)\n" + << " -l: Restrict the handled languages; l1, l2, ... are elements of" + << " (de, en-US, ...)\n"; +} + SAL_IMPLEMENT_MAIN_WITH_ARGS(argc, argv) { + + bool bMultiMerge = false; + for (int nIndex = 1; nIndex != argc; ++nIndex) + { + if (std::strcmp(argv[nIndex], "-mi") == 0) + { + argv[nIndex][1] = 'i'; + argv[nIndex][2] = '\0'; + bMultiMerge = true; + break; + } + } + HandledArgs aArgs; - if ( !Export::handleArguments( argc, argv, aArgs) ) { - Export::writeUsage("helpex","xhp"); + if ( !Export::handleArguments( argc, argv, aArgs) ) + { + WriteUsage(); return 1; } - //sal_uInt32 startfull = Export::startMessure(); bool hasNoError = true; - HelpParser aParser( aArgs.m_sInputFile ); if ( aArgs.m_bMergeMode ) { - //sal_uInt64 startreadloc = Export::startMessure(); - MergeDataFile aMergeDataFile( aArgs.m_sMergeSrc, aArgs.m_sInputFile, false ); - hasNoError = aParser.Merge( aArgs.m_sMergeSrc, aArgs.m_sOutputFile , Export::sLanguages , aMergeDataFile ); + if( bMultiMerge ) + { + std::ifstream aInput( aArgs.m_sInputFile.getStr() ); + if( !aInput.is_open() ) + { + std::cerr << "Helpex error: cannot open input file\n"; + return 1; + } + MergeDataFile aMergeDataFile( aArgs.m_sMergeSrc, OString(), false); + std::string sTemp; + aInput >> sTemp; + while( !aInput.eof() ) + { + const OString sXhpFile( sTemp.data(), sTemp.length() ); + HelpParser aParser( sXhpFile ); + const OString sOutput( + aArgs.m_sOutputFile + + sXhpFile.copy( sXhpFile.lastIndexOf("/") )); + if( !aParser.Merge( aArgs.m_sMergeSrc, sOutput, + Export::sLanguages, aMergeDataFile )) + { + hasNoError = false; + } + aInput >> sTemp; + } + aInput.close(); + } + else + { + HelpParser aParser( aArgs.m_sInputFile ); + MergeDataFile aMergeDataFile( + aArgs.m_sMergeSrc, aArgs.m_sInputFile, false ); + hasNoError = + aParser.Merge( + aArgs.m_sMergeSrc, aArgs.m_sOutputFile, + Export::sLanguages , aMergeDataFile ); + } } else { + HelpParser aParser( aArgs.m_sInputFile ); hasNoError = aParser.CreateSDF( aArgs.m_sOutputFile, aArgs.m_sPrj, aArgs.m_sPrjRoot, diff --git a/l10ntools/source/helpmerge.cxx b/l10ntools/source/helpmerge.cxx index 8764935..68f7453 100644 --- a/l10ntools/source/helpmerge.cxx +++ b/l10ntools/source/helpmerge.cxx @@ -227,51 +227,6 @@ void HelpParser::parse_languages( std::vector<rtl::OString>& aLanguages , MergeD } -bool HelpParser::Merge( - const rtl::OString &rSDFFile, const rtl::OString &rPathX , const rtl::OString &rPathY , bool bISO , - const std::vector<rtl::OString>& aLanguages , MergeDataFile& aMergeDataFile , bool bCreateDir ) -{ - - - (void) rSDFFile ; - bool hasNoError = true; - SimpleXMLParser aParser; - rtl::OUString sXmlFile( - rtl::OStringToOUString(sHelpFile, RTL_TEXTENCODING_ASCII_US)); - //TODO: explicit BOM handling? - - XMLFile* xmlfile = aParser.Execute( sXmlFile, new XMLFile( rtl::OUString('0') ) ); - - if( xmlfile == NULL) - { - printf("%s\n", rtl::OUStringToOString(aParser.GetError().sMessage, RTL_TEXTENCODING_UTF8).getStr()); - exit(-1); - } - - xmlfile->Extract(); - - rtl::OString sCur; - for( unsigned int n = 0; n < aLanguages.size(); n++ ){ - sCur = aLanguages[ n ]; - - rtl::OString sFilepath; - if( bISO ) sFilepath = GetOutpath( rPathX , sCur , rPathY ); - else sFilepath = rPathX; - if( bCreateDir ) - MakeDir(sFilepath); - - XMLFile* file = new XMLFile( *xmlfile ); - sFilepath += sHelpFile; - hasNoError = MergeSingleFile( file , aMergeDataFile , sCur , sFilepath ); - delete file; - - if( !hasNoError ) return false; // Stop on error - } - - delete xmlfile; - return hasNoError; -} - bool HelpParser::MergeSingleFile( XMLFile* file , MergeDataFile& aMergeDataFile , const rtl::OString& sLanguage , rtl::OString const & sPath ) { diff --git a/l10ntools/source/merge.cxx b/l10ntools/source/merge.cxx index 80188f5..73bd8dd 100644 --- a/l10ntools/source/merge.cxx +++ b/l10ntools/source/merge.cxx @@ -150,8 +150,7 @@ sal_Bool MergeData::operator==( ResData *pData ) // MergeDataFile::MergeDataFile( - const rtl::OString &rFileName, - const rtl::OString &rFile, + const rtl::OString &rFileName, const rtl::OString &rFile, bool bCaseSensitive) { std::ifstream aInputStream( rFileName.getStr() ); @@ -167,6 +166,7 @@ MergeDataFile::MergeDataFile( { const OString sHack("HACK"); const OString sFileName( lcl_NormalizeFilename(rFile) ); + const bool bReadAll = sFileName.isEmpty(); PoIfstream aPoInput; aPoInput.open( OString(sPoFileName.data(), sPoFileName.length()) ); if ( !aPoInput.isOpen() ) @@ -212,8 +212,8 @@ MergeDataFile::MergeDataFile( { return; } - } while( !aPoInput.eof() && aNextPo.getSourceFile() != sFileName ); - while( !aPoInput.eof() && aNextPo.getSourceFile() == sFileName ) + } while( !aPoInput.eof() && aNextPo.getSourceFile() != sFileName && !bReadAll ); + while( !aPoInput.eof() && (aNextPo.getSourceFile() == sFileName || bReadAll )) { PoEntry aActPo( aNextPo ); @@ -262,7 +262,7 @@ MergeDataFile::MergeDataFile( InsertEntry( aActPo.getResourceType(), aActPo.getGroupId(), aActPo.getLocalId(), sHack, sLang, sText, - sQHText, sTitle, sFileName, bCaseSensitive ); + sQHText, sTitle, aActPo.getSourceFile(), bCaseSensitive ); if( bFirstLang ) { @@ -271,7 +271,8 @@ MergeDataFile::MergeDataFile( aActPo.getResourceType(), aActPo.getGroupId(), aActPo.getLocalId(), sHack, "qtz", sQTZText + "||" + sExText, sQTZQHText + "||" + sExQHText, - sQTZTitle + "||" + sExTitle, sFileName, bCaseSensitive ); + sQTZTitle + "||" + sExTitle, aActPo.getSourceFile(), + bCaseSensitive ); } } aPoInput.close(); diff --git a/solenv/inc/tg_help.mk b/solenv/inc/tg_help.mk index c67e04a..f87953a 100644 --- a/solenv/inc/tg_help.mk +++ b/solenv/inc/tg_help.mk @@ -54,7 +54,10 @@ $(XHPDEST)$/{$(aux_alllangiso)}$/$(SHELL_PACKAGE)$/%.xhp :| %.xhp $(HELP_OUT)$/$(TARGET).done : $(HLANGXHPFILES) .IF "$(WITH_LANG)"!="" @echo Localizing help files... - $(COMMAND_ECHO)$(AUGMENT_LIBRARY_PATH) $(HELPEX) -p $(PRJNAME) -r $(PRJ) -i @$(mktmp $(uniq $(foreach,i,$? $(!eq,$(i:f),$(i:f:s/.xhp//) $(i:f) $(XHPFILES))))) -x $(XHPDEST) -y $(SHELL_PACKAGE) -l all -lf $(aux_alllangiso:t",") -m $(LOCALIZESDF) && $(TOUCH) $@ + @$(foreach,xhpfile,$(XHPFILES) cp $(SRC_ROOT)/$(PRJNAME)/source/$(SHELL_PACKAGE)/$(xhpfile) $(subst,$(PRJ),$(SRC_ROOT)/$(PRJNAME) $(XHPDEST))/en-US/$(SHELL_PACKAGE)/$(xhpfile) && ) \ + $(foreach,lang,$(subst,en-US, $(aux_alllangiso)) \ + $(AUGMENT_LIBRARY_PATH) $(HELPEX) -mi $(mktmp $(foreach,xhpfile,$(XHPFILES) $(SRC_ROOT)/$(PRJNAME)/source/$(SHELL_PACKAGE)/$(xhpfile))) -o $(subst,$(PRJ),$(SRC_ROOT)/$(PRJNAME) $(XHPDEST))/$(lang)/$(SHELL_PACKAGE) -m $(mktmp $(SRC_ROOT)/translations/source/$(lang)/$(PRJNAME)/source/$(SHELL_PACKAGE).po) -l $(lang) && )\ + $(TOUCH) $@ .ELSE # "$(WITH_LANG)"!="" @echo Copying help files... $(COMMAND_ECHO)cp $(uniq $(foreach,i,$? $(!eq,$(i:f),$(i:f:s/.xhp//) $(i:f) $(XHPFILES)))) $(XHPDEST)$/en-US$/$(SHELL_PACKAGE) && $(TOUCH) $@
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits