summaryrefslogtreecommitdiff
path: root/transex3/source
diff options
context:
space:
mode:
authorNils Fuhrmann <nf@openoffice.org>2000-11-22 11:57:00 +0000
committerNils Fuhrmann <nf@openoffice.org>2000-11-22 11:57:00 +0000
commitd92b556ec22d28737a9dc1cbefa36421cf86b2ab (patch)
tree26e4cb10bb650ab44981813de443018e2f573005 /transex3/source
parent996bd9c3c9c3505e6dcd974111bc8e62639eba5c (diff)
New structure for final implementation of CfgExport
Diffstat (limited to 'transex3/source')
-rw-r--r--transex3/source/cfgmerge.cxx216
-rw-r--r--transex3/source/export.cxx39
-rw-r--r--transex3/source/export2.cxx214
3 files changed, 348 insertions, 121 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 );
+ }
+ }
+ }
+ }
}
diff --git a/transex3/source/export.cxx b/transex3/source/export.cxx
index 9e5eeca3967c..1cfb9dda2681 100644
--- a/transex3/source/export.cxx
+++ b/transex3/source/export.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: export.cxx,v $
*
- * $Revision: 1.3 $
+ * $Revision: 1.4 $
*
- * last change: $Author: nf $ $Date: 2000-11-15 12:29:30 $
+ * 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
@@ -331,41 +331,6 @@ BOOL ResData::SetId( const ByteString &rId, USHORT nLevel )
// class Export
//
-
-/*****************************************************************************/
-const ByteString Export::LangName[ LANGUAGES ] =
-/*****************************************************************************/
-{
- "language_user1",
- "english_us",
- "portuguese",
- "german_de",
- "russian",
- "greek",
- "dutch",
- "french",
- "spanish",
- "finnish",
- "hungarian",
- "italian",
- "czech",
- "slovak",
- "english",
- "danish",
- "swedish",
- "norwegian",
- "polish",
- "german",
- "portuguese_brazilian",
- "japanese",
- "korean",
- "chinese_simplified",
- "chinese_traditional",
- "turkish",
- "arabic",
- "hebrew"
-};
-
/*****************************************************************************/
Export::Export( const ByteString &rOutput, BOOL bWrite,
const ByteString &rPrj, const ByteString &rPrjRoot )
diff --git a/transex3/source/export2.cxx b/transex3/source/export2.cxx
index bfa3132499a0..c53a30a6b6a7 100644
--- a/transex3/source/export2.cxx
+++ b/transex3/source/export2.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: export2.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: nf $ $Date: 2000-11-03 16:07:40 $
+ * 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
@@ -142,7 +142,7 @@ USHORT Export::LangId[ LANGUAGES ] =
USHORT Export::GetLangIndex( USHORT nLangId )
/*****************************************************************************/
{
- for ( ULONG i = 0; i < LANGUAGES; i++ )
+ for ( USHORT i = 0; i < LANGUAGES; i++ )
if ( nLangId == LangId[ i ] )
return i;
return 0xFFFF;
@@ -184,3 +184,211 @@ CharSet Export::GetCharSet( USHORT nLangId )
return 0xFFFF;
}
+/*****************************************************************************/
+USHORT Export::GetLangByIsoLang( const ByteString &rIsoLang )
+/*****************************************************************************/
+{
+ 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;
+
+ return 0;
+}
+
+/*****************************************************************************/
+ByteString Export::GetIsoLangByIndex( USHORT nIndex )
+/*****************************************************************************/
+{
+ switch ( nIndex ) {
+ case COMMENT_INDEX: return COMMENT_ISO;
+ case ENGLISH_US_INDEX: return ENGLISH_US_ISO;
+ case PORTUGUESE_INDEX: return PORTUGUESE_ISO;
+ case RUSSIAN_INDEX: return RUSSIAN_ISO;
+ case GREEK_INDEX: return GREEK_ISO;
+ case DUTCH_INDEX: return DUTCH_ISO;
+ case FRENCH_INDEX: return FRENCH_ISO;
+ case SPANISH_INDEX: return SPANISH_ISO;
+ case FINNISH_INDEX: return FINNISH_ISO;
+ case HUNGARIAN_INDEX: return HUNGARIAN_ISO;
+ case ITALIAN_INDEX: return ITALIAN_ISO;
+ case CZECH_INDEX: return CZECH_ISO;
+ case SLOVAK_INDEX: return SLOVAK_ISO;
+ case ENGLISH_INDEX: return ENGLISH_ISO;
+ case DANISH_INDEX: return DANISH_ISO;
+ case SWEDISH_INDEX: return SWEDISH_ISO;
+ case NORWEGIAN_INDEX: return NORWEGIAN_ISO;
+ case POLISH_INDEX: return POLISH_ISO;
+ case GERMAN_INDEX: return GERMAN_ISO;
+ case PORTUGUESE_BRAZILIAN_INDEX: return PORTUGUESE_BRAZILIAN_ISO;
+ case JAPANESE_INDEX: return JAPANESE_ISO;
+ case KOREAN_INDEX: return KOREAN_ISO;
+ case CHINESE_SIMPLIFIED_INDEX: return CHINESE_SIMPLIFIED_ISO;
+ case CHINESE_TRADITIONAL_INDEX: return CHINESE_TRADITIONAL_ISO;
+ case TURKISH_INDEX: return TURKISH_ISO;
+ case ARABIC_INDEX: return ARABIC_ISO;
+ case HEBREW_INDEX: return HEBREW_ISO;
+ }
+ return "";
+}
+
+/*****************************************************************************/
+void Export::QuotHTML( ByteString &rString )
+/*****************************************************************************/
+{
+ ByteString sReturn;
+ for ( ULONG i = 0; i < rString.Len(); i++ ) {
+ switch ( rString.GetChar( i )) {
+ case '<':
+ sReturn += "&lt;";
+ break;
+
+ case '>':
+ sReturn += "&gt;";
+ break;
+
+ case '\"':
+ sReturn += "&quot;";
+ break;
+
+ case '\'':
+ sReturn += "&apos;";
+ break;
+
+ case '&':
+ if ((( i + 4 ) < rString.Len()) &&
+ ( rString.Copy( i, 5 ) == "&amp;" ))
+ sReturn += rString.GetChar( i );
+ else
+ sReturn += "&amp;";
+ break;
+
+ default:
+ sReturn += rString.GetChar( i );
+ break;
+ }
+ }
+ rString = sReturn;
+}
+
+/*****************************************************************************/
+void Export::UnquotHTML( ByteString &rString )
+/*****************************************************************************/
+{
+ ByteString sReturn;
+ while ( rString.Len()) {
+ if ( rString.Copy( 0, 5 ) == "&amp;" ) {
+ sReturn += "&";
+ rString.Erase( 0, 5 );
+ }
+ else if ( rString.Copy( 0, 4 ) == "&lt;" ) {
+ sReturn += "<";
+ rString.Erase( 0, 4 );
+ }
+ else if ( rString.Copy( 0, 4 ) == "&gt;" ) {
+ sReturn += ">";
+ rString.Erase( 0, 4 );
+ }
+ else if ( rString.Copy( 0, 6 ) == "&quot;" ) {
+ sReturn += "\"";
+ rString.Erase( 0, 6 );
+ }
+ else if ( rString.Copy( 0, 6 ) == "&apos;" ) {
+ sReturn += "\'";
+ rString.Erase( 0, 6 );
+ }
+ else {
+ sReturn += rString.GetChar( 0 );
+ rString.Erase( 0, 1 );
+ }
+ }
+ rString = sReturn;
+}
+
+/*****************************************************************************/
+const ByteString Export::LangName[ LANGUAGES ] =
+/*****************************************************************************/
+{
+ "language_user1",
+ "english_us",
+ "portuguese",
+ "german_de",
+ "russian",
+ "greek",
+ "dutch",
+ "french",
+ "spanish",
+ "finnish",
+ "hungarian",
+ "italian",
+ "czech",
+ "slovak",
+ "english",
+ "danish",
+ "swedish",
+ "norwegian",
+ "polish",
+ "german",
+ "portuguese_brazilian",
+ "japanese",
+ "korean",
+ "chinese_simplified",
+ "chinese_traditional",
+ "turkish",
+ "arabic",
+ "hebrew"
+};