summaryrefslogtreecommitdiff
path: root/transex3/source/cfgmerge.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'transex3/source/cfgmerge.cxx')
-rw-r--r--transex3/source/cfgmerge.cxx216
1 files changed, 135 insertions, 81 deletions
diff --git a/transex3/source/cfgmerge.cxx b/transex3/source/cfgmerge.cxx
index 9d5e0400d57c..974a79f46373 100644
--- a/transex3/source/cfgmerge.cxx
+++ b/transex3/source/cfgmerge.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: cfgmerge.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: nf $ $Date: 2000-11-22 10:53:28 $
+ * last change: $Author: nf $ $Date: 2000-11-22 12:57:00 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -185,6 +185,14 @@ int InitCfgExport( char *pOutput )
pParser = new CfgParser();
+/* if ( bMergeMode )
+ pParser = new CfgMerge( sMergeSrc, sOutputFile, bErrorLog );
+ else */
+ if ( sOutputFile.Len()) {
+ pParser = new CfgExport( sOutputFile, sPrj, sActFileName );
+ }
+ else
+ pParser = new CfgParser();
return 1;
}
@@ -329,28 +337,21 @@ void CfgParser::WorkOnText(
)
/*****************************************************************************/
{
-// fprintf( stdout, "%s %s %s %s\n", rCurrentGid.GetBuffer(), rCurrentLid.GetBuffer(), rIsoLang.GetBuffer(), rText.GetBuffer());
-
- USHORT nLang = GetLang( rIsoLang );
+ USHORT nLang = Export::GetLangByIsoLang( rIsoLang );
if ( nLang ) {
pStackData->sText[ Export::GetLangIndex( nLang )] = rText;
}
+ else {
+ ByteString sError( "Unknown language code: " );
+ sError += rIsoLang;
+ Error( sError );
+ }
}
/*****************************************************************************/
void CfgParser::WorkOnRessourceEnd( const ByteString &rResTyp )
/*****************************************************************************/
{
- if ( pStackData->sText[ ENGLISH_US_INDEX ].Len()) {
- pStackData->sResTyp = rResTyp;
-
- fprintf( stdout, "%s\n", aStack.GetAccessPath().GetBuffer());
- fprintf( stdout, "%s\n", pStackData->sResTyp.GetBuffer());
- for ( ULONG i = 0; i < LANGUAGES; i++ ) {
- if ( pStackData->sText[ i ].Len())
- fprintf( stdout, "\t%s%s%s\n", pStackData->sTextTag.GetBuffer(), pStackData->sText[ i ].GetBuffer(), pStackData->sEndTextTag.GetBuffer());
- }
- }
}
/*****************************************************************************/
@@ -457,78 +458,131 @@ int CfgParser::Execute( int nToken, char * pToken )
return ExecuteAnalyzedToken( nToken, pToken );
}
+
/*****************************************************************************/
-USHORT CfgParser::GetLang( const ByteString &rIsoLang )
+void CfgParser::Error( const ByteString &rError )
/*****************************************************************************/
{
- ByteString sLang( rIsoLang );
-
- sLang.ToUpperAscii();
-
- if ( sLang == ByteString( COMMENT_ISO ).ToUpperAscii())
- return COMMENT;
- else if ( sLang == ByteString( ENGLISH_US_ISO ).ToUpperAscii())
- return ENGLISH_US;
- else if ( sLang == ByteString( PORTUGUESE_ISO ).ToUpperAscii())
- return PORTUGUESE;
- else if ( sLang == ByteString( RUSSIAN_ISO ).ToUpperAscii())
- return RUSSIAN;
- else if ( sLang == ByteString( GREEK_ISO ).ToUpperAscii())
- return GREEK;
- else if ( sLang == ByteString( DUTCH_ISO ).ToUpperAscii())
- return DUTCH;
- else if ( sLang == ByteString( FRENCH_ISO ).ToUpperAscii())
- return FRENCH;
- else if ( sLang == ByteString( SPANISH_ISO ).ToUpperAscii())
- return SPANISH;
- else if ( sLang == ByteString( FINNISH_ISO ).ToUpperAscii())
- return FINNISH;
- else if ( sLang == ByteString( HUNGARIAN_ISO ).ToUpperAscii())
- return HUNGARIAN;
- else if ( sLang == ByteString( ITALIAN_ISO ).ToUpperAscii())
- return ITALIAN;
- else if ( sLang == ByteString( CZECH_ISO ).ToUpperAscii())
- return CZECH;
- else if ( sLang == ByteString( SLOVAK_ISO ).ToUpperAscii())
- return SLOVAK;
- else if ( sLang == ByteString( ENGLISH_ISO ).ToUpperAscii())
- return ENGLISH;
- else if ( sLang == ByteString( DANISH_ISO ).ToUpperAscii())
- return DANISH;
- else if ( sLang == ByteString( SWEDISH_ISO ).ToUpperAscii())
- return SWEDISH;
- else if ( sLang == ByteString( NORWEGIAN_ISO ).ToUpperAscii())
- return NORWEGIAN;
- else if ( sLang == ByteString( POLISH_ISO ).ToUpperAscii())
- return POLISH;
- else if ( sLang == ByteString( GERMAN_ISO ).ToUpperAscii())
- return GERMAN;
- else if ( sLang == ByteString( PORTUGUESE_BRAZILIAN_ISO ).ToUpperAscii())
- return PORTUGUESE_BRAZILIAN;
- else if ( sLang == ByteString( JAPANESE_ISO ).ToUpperAscii())
- return JAPANESE;
- else if ( sLang == ByteString( KOREAN_ISO ).ToUpperAscii())
- return KOREAN;
- else if ( sLang == ByteString( CHINESE_SIMPLIFIED_ISO ).ToUpperAscii())
- return CHINESE_SIMPLIFIED;
- else if ( sLang == ByteString( CHINESE_TRADITIONAL_ISO ).ToUpperAscii())
- return CHINESE_TRADITIONAL;
- else if ( sLang == ByteString( TURKISH_ISO ).ToUpperAscii())
- return TURKISH;
- else if ( sLang == ByteString( ARABIC_ISO ).ToUpperAscii())
- return ARABIC;
- else if ( sLang == ByteString( HEBREW_ISO ).ToUpperAscii())
- return HEBREW;
-
- ByteString sError( "Unknown language code: " );
- sError += rIsoLang;
- Error( sError );
- return 0;
+ yyerror(( char * ) rError.GetBuffer());
}
+
+//
+// class CfgOutputParser
+//
+
/*****************************************************************************/
-void CfgParser::Error( const ByteString &rError )
+CfgOutputParser::CfgOutputParser( const ByteString &rOutputFile )
/*****************************************************************************/
{
- yyerror(( char * ) rError.GetBuffer());
+ pOutputStream =
+ new SvFileStream(
+ String( rOutputFile, RTL_TEXTENCODING_ASCII_US ),
+ STREAM_STD_WRITE | STREAM_TRUNC
+ );
+
+ if ( !pOutputStream->IsOpen()) {
+ ByteString sError( "Unable to open output file: " );
+ sError += rOutputFile;
+ Error( sError );
+ delete pOutputStream;
+ pOutputStream = NULL;
+ }
+}
+
+/*****************************************************************************/
+CfgOutputParser::~CfgOutputParser()
+/*****************************************************************************/
+{
+ if ( pOutputStream ) {
+ pOutputStream->Close();
+ delete pOutputStream;
+ }
+}
+
+//
+// class CfgExport
+//
+
+/*****************************************************************************/
+CfgExport::CfgExport(
+ const ByteString &rOutputFile,
+ const ByteString &rProject,
+ const ByteString &rFilePath
+)
+/*****************************************************************************/
+ : CfgOutputParser( rOutputFile ),
+ sPrj( rProject ),
+ sPath( rFilePath )
+{
+}
+
+/*****************************************************************************/
+CfgExport::~CfgExport()
+/*****************************************************************************/
+{
+}
+
+/*****************************************************************************/
+void CfgExport::WorkOnRessourceEnd( const ByteString &rResTyp )
+/*****************************************************************************/
+{
+ if ( pOutputStream ) {
+ if ( pStackData->sText[ GERMAN_INDEX ].Len() &&
+ ( pStackData->sText[ ENGLISH_US_INDEX ].Len() ||
+ pStackData->sText[ ENGLISH_INDEX ].Len())
+ )
+ {
+ ByteString sFallback = pStackData->sText[ GERMAN_INDEX ];
+ if ( pStackData->sText[ ENGLISH_US_INDEX ].Len())
+ sFallback = pStackData->sText[ ENGLISH_US_INDEX ];
+ else if ( pStackData->sText[ ENGLISH_INDEX ].Len())
+ sFallback = pStackData->sText[ ENGLISH_INDEX ];
+
+ ByteString sLocalId = pStackData->sIdentifier;
+ ByteString sGroupId;
+ if ( aStack.Count() == 1 ) {
+ sGroupId = sLocalId;
+ sLocalId = "";
+ }
+ else {
+ sGroupId = aStack.GetAccessPath( aStack.Count() - 2 );
+ }
+
+ Time aTime;
+ ByteString sTimeStamp( ByteString::CreateFromInt64( Date().GetDate()));
+ sTimeStamp += " ";
+ sTimeStamp += ByteString::CreateFromInt32( aTime.GetHour());
+ sTimeStamp += ":";
+ sTimeStamp += ByteString::CreateFromInt32( aTime.GetMin());
+ sTimeStamp += ":";
+ sTimeStamp += ByteString::CreateFromInt32( aTime.GetSec());
+
+ for ( ULONG i = 0; i < LANGUAGES; i++ ) {
+ if ( LANGUAGE_ALLOWED( i )) {
+ ByteString sText = pStackData->sText[ i ];
+ if ( !sText.Len())
+ sText = sFallback;
+
+ Export::UnquotHTML( sText );
+ USHORT nLangId = Export::LangId[ i ];
+ sText = UTF8Converter::ConvertFromUTF8(
+ sText, Export::GetCharSet( nLangId ));
+
+ ByteString sOutput( sPrj ); sOutput += "\t";
+ sOutput += sPath;
+ sOutput += "\t0\t";
+ sOutput += rResTyp; sOutput += "\t";
+ sOutput += sGroupId; sOutput += "\t";
+ sOutput += sLocalId; sOutput += "\t\t\t0\t";
+ sOutput += ByteString::CreateFromInt64( nLangId );
+ sOutput += "\t";
+ sOutput += sText; sOutput += "\t\t\t\t";
+ sOutput += sTimeStamp;
+
+ pOutputStream->WriteLine( sOutput );
+ }
+ }
+ }
+ }
}