l10ntools/source/merge.cxx | 37 +++++++++++++++++-------------------- l10ntools/source/propmerge.cxx | 8 +++++--- l10ntools/source/treemerge.cxx | 6 ++++-- 3 files changed, 26 insertions(+), 25 deletions(-)
New commits: commit 9c4f31c168e12fc5432ebdd15f247c285358ffc8 Author: Zolnai Tamás <[email protected]> Date: Wed Nov 21 22:40:13 2012 +0100 Get language id from path of po file Language ids in po headers can be various so its simpler to extract from path. Change-Id: I3e9447359f3c054aea32b5417b2168025168c556 diff --git a/l10ntools/source/merge.cxx b/l10ntools/source/merge.cxx index af2ebdc..3ff5400 100644 --- a/l10ntools/source/merge.cxx +++ b/l10ntools/source/merge.cxx @@ -39,7 +39,7 @@ namespace static bool lcl_ReadPoChecked( PoEntry& o_rPoEntry, PoIfstream& rPoFile, - const std::string& rFileName) + const OString& rFileName) { try { @@ -51,7 +51,7 @@ namespace { printf( "Warning : %s contains invalid entry\n", - rFileName.c_str() ); + rFileName.getStr() ); return false; } } @@ -159,19 +159,20 @@ MergeDataFile::MergeDataFile( printf("Warning : Can't open po path container file"); return; } - std::string sPoFileName; - aInputStream >> sPoFileName; + std::string sPoFile; + aInputStream >> sPoFile; bool bFirstLang = true; while( !aInputStream.eof() ) { const OString sHack("HACK"); const OString sFileName( lcl_NormalizeFilename(rFile) ); const bool bReadAll = sFileName.isEmpty(); + const OString sPoFileName(sPoFile.data(), sPoFile.length()); PoIfstream aPoInput; - aPoInput.open( OString(sPoFileName.data(), sPoFileName.length()) ); + aPoInput.open( sPoFileName ); if ( !aPoInput.isOpen() ) { - printf( "Warning : Can't open %s\n", sPoFileName.c_str() ); + printf( "Warning : Can't open %s\n", sPoFileName.getStr() ); return; } PoHeader aPoHeader; @@ -185,24 +186,20 @@ MergeDataFile::MergeDataFile( { printf( "Warning : %s has invalid header\n", - sPoFileName.c_str() ); + sPoFileName.getStr() ); return; } } + OString sLang; - try - { - sLang = aPoHeader.getLanguage().replaceAll("_","-"); - } - catch( PoHeader::Exception& aException ) + //Get language id from path { - if( aException == PoHeader::NOLANG ) - { - printf( - "Warning : %s' header not has language specification\n", - sPoFileName.c_str() ); - return; - } + const OString sTransSource("translations/source/"); + const sal_Int32 nStart = + sPoFileName.indexOf(sTransSource)+sTransSource.getLength(); + const sal_Int32 nCount = + sPoFileName.indexOf("/",nStart) - nStart; + sLang = sPoFileName.copy(nStart,nCount); } aLanguageSet.insert( sLang ); PoEntry aNextPo; @@ -276,7 +273,7 @@ MergeDataFile::MergeDataFile( } } aPoInput.close(); - aInputStream >> sPoFileName; + aInputStream >> sPoFile; bFirstLang = false; } aInputStream.close(); commit 8ae3ddca7e99d2bdbaadd5e0c82de2f0fbd30f91 Author: Zolnai Tamás <[email protected]> Date: Wed Nov 21 21:52:01 2012 +0100 Fix language id checking The result of GetLanguages() is a vector, but behind it the language ids stored in a set, so the order not depend on which id was inserted first. With language ids which are after qtz in alphabetic order this checkings works wrong. Change-Id: I4e15d4de576b1fc567692109311c053b0d93ea60 diff --git a/l10ntools/source/propmerge.cxx b/l10ntools/source/propmerge.cxx index 91ea78b..a4440e9 100644 --- a/l10ntools/source/propmerge.cxx +++ b/l10ntools/source/propmerge.cxx @@ -182,13 +182,15 @@ void PropParser::Merge( const OString &rMergeSrc, const OString &rDestinationFil MergeDataFile aMergeDataFile( rMergeSrc, m_sSource, false ); - const std::vector<OString> aLanguages = aMergeDataFile.GetLanguages(); - if( m_sLang != "qtz" && !aLanguages.empty() && aLanguages[0] != m_sLang ) + const std::vector<OString> vLanguages = aMergeDataFile.GetLanguages(); + if( m_sLang != "qtz" && vLanguages.size()>=2 && + vLanguages[vLanguages[0]!="qtz" ? 0 : 1] != m_sLang ) { std::cerr << "Propex error: given language conflicts with " << "language of Mergedata file: " - << m_sLang.getStr() << " - " << aLanguages[0].getStr() << std::endl; + << m_sLang.getStr() << " - " + << vLanguages[vLanguages[0]!="qtz" ? 0 : 1].getStr() << std::endl; return; } diff --git a/l10ntools/source/treemerge.cxx b/l10ntools/source/treemerge.cxx index ed96da2..bc9596c 100644 --- a/l10ntools/source/treemerge.cxx +++ b/l10ntools/source/treemerge.cxx @@ -282,12 +282,14 @@ void TreeParser::Merge( MergeDataFile aMergeDataFile( rMergeSrc, static_cast<OString>( m_pSource->name ), false ); const std::vector<OString> vLanguages = aMergeDataFile.GetLanguages(); - if( !vLanguages.empty() && vLanguages[0] != m_sLang ) + if( vLanguages.size()>=2 && + vLanguages[vLanguages[0]=="qtz" ? 0 : 1] != m_sLang ) { std::cerr << "Treex error: given language conflicts with " << "language of Mergedata file: " - << m_sLang.getStr() << " - " << vLanguages[0].getStr() << std::endl; + << m_sLang.getStr() << " - " + << vLanguages[vLanguages[0]=="qtz" ? 0 : 1].getStr() << std::endl; return; } lcl_MergeLevel(
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
