merge.cpp
来自「qt-x11-free-3.0.3.tar.gz minigui图形界面工具」· C++ 代码 · 共 111 行
CPP
111 行
/************************************************************************ Copyright (C) 2000 Trolltech AS. All rights reserved.**** merge.cpp**** This file is part of Qt Linguist.**** See the file LICENSE included in the distribution for the usage** and distribution terms.**** The file is provided AS IS with NO WARRANTY OF ANY KIND,** INCLUDING THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR** A PARTICULAR PURPOSE.************************************************************************/#include <metatranslator.h>// defined in numberh.cppextern void applyNumberHeuristic( MetaTranslator *tor, bool verbose );// defined in sametexth.cppextern void applySameTextHeuristic( MetaTranslator *tor, bool verbose );typedef QValueList<MetaTranslatorMessage> TML;/* Merges two MetaTranslator objects into the first one. The first one is a set of source texts and translations for a previous version of the internationalized program; the second one is a set of fresh source text newly extracted from the source code, without any translation yet.*/void merge( MetaTranslator *tor, const MetaTranslator *virginTor, bool verbose ){ int known = 0; int neww = 0; int obsoleted = 0; TML all = tor->messages(); TML::Iterator it; /* The types of all the messages from the vernacular translator are updated according to the virgin translator. */ for ( it = all.begin(); it != all.end(); ++it ) { MetaTranslatorMessage::Type newType; MetaTranslatorMessage m = *it; // skip context comment if ( !QCString((*it).sourceText()).isEmpty() ) { if ( !virginTor->contains((*it).context(), (*it).sourceText(), (*it).comment()) ) { newType = MetaTranslatorMessage::Obsolete; if ( m.type() != MetaTranslatorMessage::Obsolete ) obsoleted++; } else { switch ( m.type() ) { case MetaTranslatorMessage::Finished: newType = MetaTranslatorMessage::Finished; known++; break; case MetaTranslatorMessage::Unfinished: newType = MetaTranslatorMessage::Unfinished; known++; break; case MetaTranslatorMessage::Obsolete: newType = MetaTranslatorMessage::Unfinished; neww++; } } if ( newType != m.type() ) { m.setType( newType ); tor->insert( m ); } } } /* Messages found only in the virgin translator are added to the vernacular translator. Among these are all the context comments. */ all = virginTor->messages(); for ( it = all.begin(); it != all.end(); ++it ) { if ( !tor->contains((*it).context(), (*it).sourceText(), (*it).comment()) ) { tor->insert( *it ); if ( !QCString((*it).sourceText()).isEmpty() ) neww++; } } /* The same-text heuristic handles cases where a message has an obsolete counterpart with a different context or comment. */ applySameTextHeuristic( tor, verbose ); /* The number heuristic handles cases where a message has an obsolete counterpart with mostly numbers differing in the source text. */ applyNumberHeuristic( tor, verbose ); if ( verbose ) qWarning( " %d known, %d new and %d obsoleted messages", known, neww, obsoleted );}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?