summaryrefslogtreecommitdiff
path: root/l10ntools/source/stringmerge.cxx
diff options
context:
space:
mode:
authorZolnai Tamás <zolnaitamas2000@gmail.com>2013-04-20 09:20:31 +0200
committerZolnai Tamás <zolnaitamas2000@gmail.com>2013-04-21 18:57:17 +0200
commit36b3bcefcf13996610239f95b1dce9f291bde95d (patch)
tree4796801ca25a41422381fce137fee5c21f3fef64 /l10ntools/source/stringmerge.cxx
parent8560c2df78072533007b84b31fc930b82191e9a3 (diff)
Some changes in qtz handling
Executalbes, which work one language, generat qtz by own. (stringex,helpex,treex,propex) So these executables can generate qtz without po file when use them with qtz, call them with "-m" flag without parameter. Change-Id: I56c34db7151dc3ef0ce1c85ed607719e4cbb5e92
Diffstat (limited to 'l10ntools/source/stringmerge.cxx')
-rw-r--r--l10ntools/source/stringmerge.cxx56
1 files changed, 34 insertions, 22 deletions
diff --git a/l10ntools/source/stringmerge.cxx b/l10ntools/source/stringmerge.cxx
index 40fe6c2439ce..6ceb4b7a401d 100644
--- a/l10ntools/source/stringmerge.cxx
+++ b/l10ntools/source/stringmerge.cxx
@@ -94,23 +94,21 @@ void StringParser::Merge(
{
assert( m_bIsInitialized );
- if( (m_sLang == "en-US") || (m_sLang == "qtz") )
+ MergeDataFile* pMergeDataFile = 0;
+ if( m_sLang != "qtz" )
{
- return;
- }
-
- MergeDataFile aMergeDataFile(
- rMergeSrc, static_cast<OString>( m_pSource->name ), false );
- const std::vector<OString> vLanguages = aMergeDataFile.GetLanguages();
- if( vLanguages.size()>=2 &&
- vLanguages[vLanguages[0]=="qtz" ? 1 : 0] != m_sLang )
- {
- std::cerr
- << "stringex error: given language conflicts with "
- << "language of Mergedata file: "
- << m_sLang.getStr() << " - "
- << vLanguages[vLanguages[0]=="qtz" ? 1 : 0].getStr() << std::endl;
- return;
+ pMergeDataFile = new MergeDataFile(
+ rMergeSrc, static_cast<OString>( m_pSource->name ), false, false );
+ const std::vector<OString> vLanguages = pMergeDataFile->GetLanguages();
+ if( vLanguages.size()>=1 && vLanguages[0] != m_sLang )
+ {
+ std::cerr
+ << "stringex error: given language conflicts with "
+ << "language of Mergedata file: "
+ << m_sLang.getStr() << " - "
+ << vLanguages[0].getStr() << std::endl;
+ return;
+ }
}
xmlNodePtr pRootNode = xmlDocGetRootElement( m_pSource ); //<resource>
@@ -126,13 +124,26 @@ void StringParser::Merge(
static_cast<OString>(m_pSource->name) );
xmlFree( pID );
aResData.sResTyp = "string";
- MergeEntrys* pEntrys =
- (&aMergeDataFile)->GetMergeEntrys( &aResData );
- if( pEntrys )
+ OString sNewText;
+ if( m_sLang == "qtz" )
+ {
+ xmlChar* pText = xmlNodeGetContent(pCurrent);
+ const OString sOriginText =
+ helper::unEscapeAll(helper::xmlStrToOString( pText ),"\\n""\\t","\n""\t");
+ xmlFree( pText );
+ sNewText = MergeEntrys::GetQTZText(aResData, sOriginText);
+ }
+ else if( pMergeDataFile )
+ {
+ MergeEntrys* pEntrys = pMergeDataFile->GetMergeEntrys( &aResData );
+ if( pEntrys )
+ {
+ pEntrys->GetText( sNewText, STRING_TYP_TEXT, m_sLang );
+ sNewText = helper::escapeAll(sNewText, "\n""\t""\'""\"","\\n""\\t""\\\'""\\\"");
+ }
+ }
+ if( !sNewText.isEmpty() )
{
- OString sNewText;
- pEntrys->GetText( sNewText, STRING_TYP_TEXT, m_sLang );
- sNewText = helper::escapeAll(sNewText, "\n""\t""\'""\"","\\n""\\t""\\\'""\\\"");
xmlNodeSetContent(
pCurrent,
xmlEncodeSpecialChars( NULL,
@@ -142,6 +153,7 @@ void StringParser::Merge(
}
}
+ delete pMergeDataFile;
xmlSaveFile( rDestinationFile.getStr(), m_pSource );
xmlFreeDoc( m_pSource );
xmlCleanupParser();