summaryrefslogtreecommitdiff
path: root/l10ntools/source/stringmerge.cxx
diff options
context:
space:
mode:
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();