You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by pe...@apache.org on 2023/07/29 14:50:32 UTC

[openoffice] 01/02: Translate German comments in swhtml.cxx (#167)

This is an automated email from the ASF dual-hosted git repository.

petko pushed a commit to branch AOO42X
in repository https://gitbox.apache.org/repos/asf/openoffice.git

commit ec1e1229ce3e3a7a0adb081605d11ac8e86159a4
Author: Peter <le...@users.noreply.github.com>
AuthorDate: Mon Jul 24 20:03:39 2023 +0200

    Translate German comments in swhtml.cxx (#167)
    
    * translation of swhtml, first pass
    
    * swhtml translation second pass
    
    * fixed spelling paragraf, Attributs
    translation of assert messages
    
    * header translation first pass
    
    * Update swhtml.hxx
    
    - fixed code spacing issues
    - Force zero spacing
    - changed translation
           Number of attrs still to be closed with a value of
      to
          open attrs, with different values
    
    * fixed various translations
    
    * Update various translations
    
    * Update various translations
    
    * fixed indent of function InsertControl
    
    * Update translation swhtml.cxx
    
    * Update translations swhtml.hxx
    
    * Update translation swhtml.cxx
---
 main/sw/source/filter/html/swhtml.cxx | 1081 ++++++++++++++++-----------------
 main/sw/source/filter/html/swhtml.hxx |  495 ++++++++-------
 2 files changed, 766 insertions(+), 810 deletions(-)

diff --git a/main/sw/source/filter/html/swhtml.cxx b/main/sw/source/filter/html/swhtml.cxx
index 2bcb9a6d4c..572b64d519 100644
--- a/main/sw/source/filter/html/swhtml.cxx
+++ b/main/sw/source/filter/html/swhtml.cxx
@@ -90,9 +90,9 @@
 #include <expfld.hxx>
 #include <poolfmt.hxx>
 #include <pagedesc.hxx>
-#include <IMark.hxx>		// fuer SwBookmark ...
+#include <IMark.hxx>		// for SwBookmark ...
 #include <docsh.hxx>
-#include <editsh.hxx>		// fuer Start/EndAction
+#include <editsh.hxx>		// for Start/EndAction
 #include <docufld.hxx>
 #include <swcss1.hxx>
 #include <htmlvsh.hxx>
@@ -106,7 +106,7 @@
 
 #include <sfx2/viewfrm.hxx>
 
-#include <statstr.hrc>          // ResId fuer Statusleiste
+#include <statstr.hrc>          // ResId for Statusbar
 #include <swerror.h>
 
 #define FONTSIZE_MASK 			7
@@ -198,7 +198,7 @@ String HTMLReader::GetTemplateName() const
 
 int HTMLReader::SetStrmStgPtr()
 {
-	ASSERT( pMedium, "Wo ist das Medium??" );
+	ASSERT( pMedium, "Where is the medium??" );
 
 	if( pMedium->IsRemote() || !pMedium->IsStorage() )
 	{
@@ -209,12 +209,12 @@ int HTMLReader::SetStrmStgPtr()
 
 }
 
-	// Aufruf fuer die allg. Reader-Schnittstelle
+	// Call of generic Read Interface
 sal_uLong HTMLReader::Read( SwDoc &rDoc, const String& rBaseURL, SwPaM &rPam, const String & rName )
 {
 	if( !pStrm )
 	{
-		ASSERT( pStrm, "HTML-Read ohne Stream" );
+		ASSERT( pStrm, "HTML-Read without Stream" );
 		return ERR_SWG_READ_ERROR;
 	}
 
@@ -223,8 +223,8 @@ sal_uLong HTMLReader::Read( SwDoc &rDoc, const String& rBaseURL, SwPaM &rPam, co
 		Reader::SetNoOutlineNum( rDoc );
 		Reader::ResetFrmFmts( rDoc );
 
-		// Die HTML-Seitenvorlage setzen, wenn des kein HTML-Dokument ist,
-		// sonst ist sie schon gesetzt.
+		// set HTML-template, if the document is not html,
+		// else it is set.
 		if( !rDoc.get(IDocumentSettingAccess::HTML_MODE) )
 		{
             rDoc.InsertPoolItem( rPam, SwFmtPageDesc(
@@ -232,7 +232,7 @@ sal_uLong HTMLReader::Read( SwDoc &rDoc, const String& rBaseURL, SwPaM &rPam, co
 		}
 	}
 
-	// damit keiner das Doc klaut!
+	// lock to prevent stealing of the Doc!
 	rDoc.acquire();
 	sal_uLong nRet = 0;
 	SvParserRef xParser = new SwHTMLParser( &rDoc, rPam, *pStrm,
@@ -250,7 +250,7 @@ sal_uLong HTMLReader::Read( SwDoc &rDoc, const String& rBaseURL, SwPaM &rPam, co
 		sErr += ',';
 		sErr += String::CreateFromInt32((sal_Int32)xParser->GetLinePos());
 
-		// den Stream als Fehlernummer Transporter benutzen
+		// use Stream to carry the error number
 		nRet = *new StringErrorInfo( ERR_FORMAT_ROWCOL, sErr,
 									ERRCODE_BUTTON_OK | ERRCODE_MSG_ERROR );
 	}
@@ -335,7 +335,7 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
 	pPam = new SwPaM( *rCrsr.GetPoint() );
 	memset( &aAttrTab, 0, sizeof( _HTMLAttrTable ));
 
-	// Die Font-Groessen 1-7 aus der INI-Datei lesen
+	// read Font-size 1-7 from INI-file 
 	SvxHtmlOptions* pHtmlOptions = SvxHtmlOptions::Get();
 	aFontHeights[0] = pHtmlOptions->GetFontSize( 0 ) * 20;
 	aFontHeights[1] = pHtmlOptions->GetFontSize( 1 ) * 20;
@@ -357,8 +357,8 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
         pDoc->SetDefault( aFontHeight );
     }
 
-	// Waehrend des Imports in den HTML-Modus schalten, damit die
-	// richrigen Vorlagen angelegt werden
+	// during import switch to HTML-Mode, in order
+	// to set correct templates
 	bOldIsHTMLMode = pDoc->get(IDocumentSettingAccess::HTML_MODE);
 	pDoc->set(IDocumentSettingAccess::HTML_MODE, true);
 
@@ -379,13 +379,13 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
 	}
 	pCSS1Parser->SetDfltEncoding( gsl_getSystemTextEncoding() );
 
-	// Timer nur bei ganz normalen Dokumenten aufsetzen!
+	// use Timer only with normal Documents!
 	SwDocShell* pDocSh = pDoc->GetDocShell();
 	if( pDocSh )
 	{
-		bViewCreated = sal_True;			// nicht, synchron laden
+		bViewCreated = sal_True;			// do not load synchron
 
-		// es ist ein Sprungziel vorgegeben.
+		// a jumppoint is set.
 
 		if( pMed )
 		{
@@ -412,9 +412,9 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
 					else if( sCmp.EqualsAscii( pMarkToOutline ) ||
 							sCmp.EqualsAscii( pMarkToText ) ||
 							sCmp.EqualsAscii( pMarkToFrame ) )
-						eJumpTo = JUMPTO_NONE;	// das ist nichts gueltiges!
+						eJumpTo = JUMPTO_NONE;	// this is not valid!
 					else
-						// ansonsten ist das ein normaler (Book)Mark
+						// else it is a normal (Book)Mark
 						nPos = STRING_LEN;
 				}
 				else
@@ -431,7 +431,7 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, const SwPaM& rCrsr, SvStream& rIn,
 __EXPORT SwHTMLParser::~SwHTMLParser()
 {
 #ifdef DBG_UTIL
-	ASSERT( !nContinue, "DTOR im Continue - Das geht schief!!!" );
+	ASSERT( !nContinue, "DTOR in Continue - This will not work!!!" );
 #endif
 	sal_Bool bAsync = pDoc->IsInLoadAsynchron();
 	pDoc->SetInLoadAsynchron( sal_False );
@@ -440,11 +440,11 @@ __EXPORT SwHTMLParser::~SwHTMLParser()
 	if( pDoc->GetDocShell() && nEventId )
 		Application::RemoveUserEvent( nEventId );
 
-	// das DocumentDetected kann ggfs. die DocShells loeschen, darum nochmals
-	// abfragen
+	// DocumentDetected may delete DocShells,
+	// so requst it again
 	if( pDoc->GetDocShell() )
 	{
-		// Gelinkte Bereiche updaten
+		// update linked areas
         sal_uInt16 nLinkMode = pDoc->getLinkUpdateMode( true );
 		if( nLinkMode != NEVER && bAsync &&
 			SFX_CREATE_MODE_INTERNAL!=pDoc->GetDocShell()->GetCreateMode() )
@@ -462,7 +462,7 @@ __EXPORT SwHTMLParser::~SwHTMLParser()
 
 	if( aSetAttrTab.Count() )
 	{
-		ASSERT( !aSetAttrTab.Count(),"Es stehen noch Attribute auf dem Stack" );
+		ASSERT( !aSetAttrTab.Count(),"There are still attributes on the stack" );
 		aSetAttrTab.DeleteAndDestroy( 0, aSetAttrTab.Count() );
 	}
 
@@ -472,12 +472,12 @@ __EXPORT SwHTMLParser::~SwHTMLParser()
 	DeleteFormImpl();
 	DeleteFootEndNoteImpl();
 
-	ASSERT( !pTable, "Es existiert noch eine offene Tabelle" );
+	ASSERT( !pTable, "There is still one open table" );
 	delete pImageMaps;
 	//delete pTable;
 
 	ASSERT( !pPendStack,
-			"SwHTMLParser::~SwHTMLParser: Hier sollte es keinen Pending-Stack mehr geben" );
+			"SwHTMLParser::~SwHTMLParser: There should be no more pending stack here" );
 	while( pPendStack )
 	{
 		SwPendingStack* pTmp = pPendStack;
@@ -488,7 +488,7 @@ __EXPORT SwHTMLParser::~SwHTMLParser()
 
 	if( !pDoc->release() )
 	{
-		// keiner will mehr das Doc haben, also weg damit
+		// no more use for Doc, delete it
 		delete pDoc;
         pDoc = NULL;
 	}
@@ -512,7 +512,7 @@ IMPL_LINK( SwHTMLParser, AsyncCallback, void*, /*pVoid*/ )
     if( ( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
         || 1 == pDoc->getReferenceCount() )
     {
-        // wurde der Import vom SFX abgebrochen?
+        // Import of SFX aborted?
         eState = SVPAR_ERROR;
     }
     // <--
@@ -523,9 +523,9 @@ IMPL_LINK( SwHTMLParser, AsyncCallback, void*, /*pVoid*/ )
 
 SvParserState __EXPORT SwHTMLParser::CallParser()
 {
-	// einen temporaeren Index anlegen, auf Pos 0 so wird er nicht bewegt!
+	// set tempory Index, on Pos 0 in order avoid moving!
 	pSttNdIdx = new SwNodeIndex( pDoc->GetNodes() );
-	if( !IsNewDoc() )		// in ein Dokument einfuegen ?
+	if( !IsNewDoc() )		// insert to a new document ?
 	{
 		const SwPosition* pPos = pPam->GetPoint();
 
@@ -561,7 +561,7 @@ SvParserState __EXPORT SwHTMLParser::CallParser()
 		}
 	}
 
-	// Laufbalken anzeigen
+	// show progress bar
 	else if( !GetMedium() || !GetMedium()->IsRemote() )
 	{
 		rInput.Seek(STREAM_SEEK_TO_END);
@@ -582,27 +582,25 @@ SvParserState __EXPORT SwHTMLParser::CallParser()
 void __EXPORT SwHTMLParser::Continue( int nToken )
 {
 #ifdef DBG_UTIL
-	ASSERT( !nContinue, "Continue im Continue - Das sollte doch nicht sein, oder?" );
+	ASSERT( !nContinue, "Continue im Continue - That should not be, shouldn't it?" );
 	nContinue++;
 #endif
 
-	// Wenn der Import (vom SFX) abgebrochen wurde, wird ein Fehler
-	// gesetzt aber trotzdem noch weiter gemacht, damit vernuenftig
-	// aufgeraeumt wird.
+	// if Import (vom SFX) has been aborted, an error is set
+	// in order to clean up, the process continues
 	ASSERT( SVPAR_ERROR!=eState,
-			"SwHTMLParser::Continue: bereits ein Fehler gesetzt" );
+			"SwHTMLParser::Continue: already set an error" );
 	if( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
 		eState = SVPAR_ERROR;
 
-	// Die ViewShell vom Dokument holen, merken und als aktuelle setzen.
+	// get ViewShell from Document, memorize and set as current.
 	ViewShell *pInitVSh = CallStartAction();
 
 	if( SVPAR_ERROR != eState && GetMedium() && !bViewCreated )
 	{
-		// Beim ersten Aufruf erstmal returnen, Doc anzeigen
-		// und auf Timer Callback warten.
-		// An dieser Stelle wurde im CallParser gerade mal ein Zeichen
-		// gelesen und ein SaveState(0) gerufen.
+		// Return at first call, show Doc and wait for timer callback. 
+		// At this point, CallParser read only one character and called 
+		// SaveState(0)
 		eState = SVPAR_PENDING;
 		bViewCreated = sal_True;
 		pDoc->SetInLoadAsynchron( sal_True );
@@ -621,7 +619,7 @@ void __EXPORT SwHTMLParser::Continue( int nToken )
 		pDoc->GetDocShell()->EnableSetModified( sal_False );
 	}
 
-	// waehrend des einlesens kein OLE-Modified rufen
+	// during read. do not call OLE-Modify 
 	Link aOLELink( pDoc->GetOle2Link() );
 	pDoc->SetOle2Link( Link() );
 
@@ -629,31 +627,30 @@ void __EXPORT SwHTMLParser::Continue( int nToken )
     bool const bWasUndo = pDoc->GetIDocumentUndoRedo().DoesUndo();
     pDoc->GetIDocumentUndoRedo().DoUndo(false);
 
-	// Wenn der Import abgebrochen wird, kein Continue mehr rufen.
-	// Falls ein Pending-Stack existiert aber durch einen Aufruf
-	// von NextToken dafuer sorgen, dass der Pending-Stack noch
-	// beendet wird.
+	// If Import aborts, do not call Continue.
+	// if a Pending-Stack exists, call NextToken.
+	// NextToken will take care of clean up.
 	if( SVPAR_ERROR == eState )
 	{
 		ASSERT( !pPendStack || pPendStack->nToken,
-				"SwHTMLParser::Continue: Pending-Stack ohne Token" );
+				"SwHTMLParser::Continue: Pending-Stack without Token" );
 		if( pPendStack && pPendStack->nToken )
 			NextToken( pPendStack->nToken );
 		ASSERT( !pPendStack,
-				"SwHTMLParser::Continue: Es gibt wieder einen Pend-Stack" );
+				"SwHTMLParser::Continue: there is still a Pend-Stack" );
 	}
 	else
 	{
 		HTMLParser::Continue( pPendStack ? pPendStack->nToken : nToken );
 	}
 
-	// Laufbalken wieder abschalten
+	// switch progress bar off
 	EndProgress( pDoc->GetDocShell() );
 
 	sal_Bool bLFStripped = sal_False;
 	if( SVPAR_PENDING != GetStatus() )
 	{
-		// noch die letzten Attribute setzen
+		// set last Attributes
 		{
 			if( aScriptSource.Len() )
 			{
@@ -673,15 +670,15 @@ void __EXPORT SwHTMLParser::Continue( int nToken )
 					EndObject();
 			}
 
-			// ggf. ein noch vorhandes LF hinter dem letzen Absatz entfernen
+			// remove LF behind last paragaf if exists
 			if( IsNewDoc() )
 				bLFStripped = StripTrailingLF() > 0;
 
-			// noch offene Nummerierungen beenden.
+			// end open nummerations.
 			while( GetNumInfo().GetNumRule() )
 				EndNumBulList();
 
-			ASSERT( !nContextStMin, "Es gibt geschuetzte Kontexte" );
+			ASSERT( !nContextStMin, "There are protected contexts" );
 			nContextStMin = 0;
 			while( aContexts.Count() )
 			{
@@ -698,11 +695,11 @@ void __EXPORT SwHTMLParser::Continue( int nToken )
 
 			SetAttr( sal_False );
 
-			// Noch die erst verzoegert gesetzten Styles setzen
+			// set deferred Styles
 			pCSS1Parser->SetDelayedStyles();
 		}
 
-		// den Start wieder korrigieren
+		// fix again Start
 		if( !IsNewDoc() && pSttNdIdx->GetIndex() )
 		{
 			SwTxtNode* pTxtNode = pSttNdIdx->GetNode().GetTxtNode();
@@ -710,7 +707,7 @@ void __EXPORT SwHTMLParser::Continue( int nToken )
 			if( pTxtNode && pTxtNode->CanJoinNext( &aNxtIdx ))
 			{
 				xub_StrLen nStt = pTxtNode->GetTxt().Len();
-				// wenn der Cursor noch in dem Node steht, dann setze in an das Ende
+				// if Cursor is in Node, set it to the end
 				if( pPam->GetPoint()->nNode == aNxtIdx )
 				{
 					pPam->GetPoint()->nNode = *pSttNdIdx;
@@ -718,11 +715,11 @@ void __EXPORT SwHTMLParser::Continue( int nToken )
 				}
 
 #ifdef DBG_UTIL
-// !!! sollte nicht moeglich sein, oder ??
+// !!! should not be possible, should it ??
 ASSERT( pSttNdIdx->GetIndex()+1 != pPam->GetBound( sal_True ).nNode.GetIndex(),
-			"Pam.Bound1 steht noch im Node" );
+			"Pam.Bound1 is in Node" );
 ASSERT( pSttNdIdx->GetIndex()+1 != pPam->GetBound( sal_False ).nNode.GetIndex(),
-			"Pam.Bound2 steht noch im Node" );
+			"Pam.Bound2 is in Node" );
 
 if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( sal_True ).nNode.GetIndex() )
 {
@@ -737,7 +734,7 @@ if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( sal_False ).nNode.GetIndex() )
 					pTxtNode->GetTxt().Len() + nCntPos );
 }
 #endif
-				// Zeichen Attribute beibehalten!
+				// keep character Attribute!
 				SwTxtNode* pDelNd = aNxtIdx.GetNode().GetTxtNode();
 				if( pTxtNode->GetTxt().Len() )
 					pDelNd->FmtToTxtAttr( pTxtNode );
@@ -752,12 +749,12 @@ if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( sal_False ).nNode.GetIndex() )
 	{
 		if( nMissingImgMaps )
 		{
-			// es fehlen noch ein paar Image-Map zuordungen.
-			// vielleicht sind die Image-Maps ja jetzt da?
+			// some image maps were not assigned.
+			// Maybe their Image-Maps are already there?
 			ConnectImageMaps();
 		}
 
-		// jetzt noch den letzten ueberfluessigen Absatz loeschen
+		// now delete the last needless paragraph
 		SwPosition* pPos = pPam->GetPoint();
 		if( !pPos->nContent.GetIndex() && !bLFStripped )
 		{
@@ -816,22 +813,23 @@ if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( sal_False ).nNode.GetIndex() )
 			}
 		}
 
-		// nun noch das SplitNode vom Anfang aufheben
+		// now cancel the SplitNode from the start
 		else if( !IsNewDoc() )
 		{
-			if( pPos->nContent.GetIndex() ) 	// dann gabs am Ende kein <P>,
-				pPam->Move( fnMoveForward, fnGoNode ); 	// als zum naechsten Node
+			if( pPos->nContent.GetIndex() ) 	// then there was no <P> at the end
+				pPam->Move( fnMoveForward, fnGoNode ); 	// to the next node
 			SwTxtNode* pTxtNode = pPos->nNode.GetNode().GetTxtNode();
 			SwNodeIndex aPrvIdx( pPos->nNode );
 			if( pTxtNode && pTxtNode->CanJoinPrev( &aPrvIdx ) &&
 				*pSttNdIdx <= aPrvIdx )
 			{
-				// eigentlich muss hier ein JoinNext erfolgen, aber alle Cursor
-				// usw. sind im pTxtNode angemeldet, so dass der bestehen
-				// bleiben MUSS.
+				// actually a JoinNext must be done here, but all cursors
+				// etc. are registered in the pTxtNode, 
+				// which MUST remain
 
-				// Absatz in Zeichen-Attribute umwandeln, aus dem Prev die
-				// Absatzattribute und die Vorlage uebernehmen!
+
+				// Convert paragraph to character attributes, 
+				// take over the paragraph attributes and the template from the Prev!
 				SwTxtNode* pPrev = aPrvIdx.GetNode().GetTxtNode();
 				pTxtNode->ChgFmtColl( pPrev->GetTxtColl() );
 				pTxtNode->FmtToTxtAttr( pPrev );
@@ -849,7 +847,7 @@ if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( sal_False ).nNode.GetIndex() )
 			}
 		}
 
-		// und noch die DocumentInfo aufbereiten
+		// and prepare DocumentInfo
 		if( IsNewDoc() )
 		{
             SwDocShell *pDocShell(pDoc->GetDocShell());
@@ -878,8 +876,8 @@ if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( sal_False ).nNode.GetIndex() )
 	if( SVPAR_PENDING != GetStatus() )
 		delete pSttNdIdx, pSttNdIdx = 0;
 
-	// sollte der Parser der Letzte sein, der das Doc haelt, dann braucht
-	// man hier auch nichts mehr tun, Doc wird gleich zerstoert!
+	// should the parser be the last one to hold the doc, 
+	// no need to do anything here either, doc is about to be destroyed!
 	if( 1 < pDoc->getReferenceCount() )
 	{
 		if( bWasUndo )
@@ -889,10 +887,10 @@ if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( sal_False ).nNode.GetIndex() )
         }
 		else if( !pInitVSh )
 		{
-			// Wenn zu Beginn des Continue keine Shell vorhanden war,
-			// kann trotzdem mitlerweile eine angelegt worden sein.
-			// In dieses Fall stimmt das bWasUndo-Flag nicht und
-			// wir muessen das Undo noch anschalten.
+			// If there was no shell at the beginning of the Continue,
+			// nevertheless one may have been created in the meantime.
+			// In this case the bWasUndo flag is not correct and 
+			// a switch on the undo is necessary.
 			ViewShell *pTmpVSh = CheckActionViewShell();
 			if( pTmpVSh )
             {
@@ -911,10 +909,11 @@ if( pSttNdIdx->GetIndex()+1 == pPam->GetBound( sal_False ).nNode.GetIndex() )
 	}
 
 
-	// Wenn die Dokuemnt-ViewShell noch existiert und eine Action
-	// offen ist (muss bei Abbruch nicht sein), die Action beenden,
-	// uns von der Shell abmelden und schliesslich die alte Shell
-	// wieder rekonstruieren.
+	// If the Dokuemnt-ViewShell still exists and an Action
+	// is open (doesn't have to be on abort), terminate the action,
+	// log out of the shell and finally reconstruct the old shell
+	// again.
+
 	CallEndAction( sal_True );
 
 #ifdef DBG_UTIL
@@ -929,9 +928,9 @@ void SwHTMLParser::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
 	case RES_OBJECTDYING:
 		if( ((SwPtrMsgPoolItem *)pOld)->pObject == GetRegisteredIn() )
 		{
-			// dann uns selbst beenden
+			// then finish ourselves
 			GetRegisteredInNonConst()->Remove( this );
-			ReleaseRef();					// ansonsten sind wir fertig!
+			ReleaseRef();					// otherwise we are done!
 		}
 		break;
 	}
@@ -939,7 +938,7 @@ void SwHTMLParser::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
 
 void SwHTMLParser::DocumentDetected()
 {
-	ASSERT( !bDocInitialized, "DocumentDetected mehrfach aufgerufen" );
+	ASSERT( !bDocInitialized, "DocumentDetected called multiple times" );
 	bDocInitialized = sal_True;
 	if( IsNewDoc() )
 	{
@@ -949,25 +948,24 @@ void SwHTMLParser::DocumentDetected()
 		CallEndAction( sal_True, sal_True );
 
         pDoc->GetIDocumentUndoRedo().DoUndo(false);
-		// Durch das DocumentDetected wurde im allgemeinen eine
-		// ViewShell angelegt. Es kann aber auch sein, dass sie
-		// erst spaeter angelegt wird, naemlich dann, wenn die UI
-		// gecaptured ist.
+		// By DocumentDetected a ViewShell has been created. 
+		// But it can also be that it is created later,
+		// namely when the UI is is captured.
 		CallStartAction();
 	}
 }
 
-// wird fuer jedes Token gerufen, das in CallParser erkannt wird
+// is called for each token that is recognized in CallParser
 void __EXPORT SwHTMLParser::NextToken( int nToken )
 {
 	if( ( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
 		|| 1 == pDoc->getReferenceCount() )
 	{
-		// wurde der Import vom SFX abgebrochen? Wenn ein Pending-Stack
-		// existiert den noch aufraumen
+		// was the import aborted by the SFX? If a pending stack
+		// still exists to clean it up
 		eState = SVPAR_ERROR;
 		ASSERT( !pPendStack || pPendStack->nToken,
-				"SwHTMLParser::NextToken: Pending-Stack ohne Token" );
+				"SwHTMLParser::NextToken: pending stack without token" );
 		if( 1 == pDoc->getReferenceCount() || !pPendStack )
 			return ;
 	}
@@ -977,27 +975,26 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 	{
 		switch( nToken )
 		{
-			// Tabellen werden ueber rekusive Methodenaufrufe gelesen
+			// tables are read via recusive method calls
 		case HTML_TABLE_ON:
-			// Bei CSS-Deklarationen muss evtl. noch auf das
-			// Ende eines File-Downloads gewartet werden.
+			// For CSS declarations you may have to wait for the
+			// end of a file download.
 		case HTML_LINK:
-			// Bei Controls muss evtl. noch die Groesse gesetzt werden.
+			// For controls, the size may still have to be set.
 		case HTML_INPUT:
 		case HTML_TEXTAREA_ON:
 		case HTML_SELECT_ON:
 		case HTML_SELECT_OFF:
 			break;
 		default:
-			ASSERT( !pPendStack, "Unbekanntes Token fuer Pending-Stack" );
+			ASSERT( !pPendStack, "Unknown token for pending stack" );
 			break;
 		}
 	}
 #endif
 
-	// Die folgeneden Spezialfaelle muessen vor der Filter-Detection behandelt
-	// werden, denn der Inhalt des Titels, etc. wird auch in Netcape nicht
-	// zur Filter-Detection herangezogen.
+	// The following special cases have to be handled before the filter detection
+	// because the content of the title, etc. is not used for filter even in Netcape.
 	if( !pPendStack )
 	{
 		if( bInTitle )
@@ -1055,10 +1052,10 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		}
 	}
 
-	// Wenn wir noch nicht wissen, was fuer ein Dokument wir vor uns haben,
-	// versuchen wir das erstmal rauszufinden. Das muss fuer Controls in
-	// Fall vor dem Einfuegen des Controls passieren, weil beim Einfuegen
-	// bereits eine View benoetigt wird.
+	// If we don't know yet, what kind of document we have in front of us,
+	// let's try to find out first. This must be done for controls in
+	// case before inserting the control, because when inserting the control
+	// a view is already needed.
 	if( !bDocInitialized )
 		DocumentDetected();
 
@@ -1066,14 +1063,13 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 	sal_Bool bUpperSpaceSave = bUpperSpace;
 	bUpperSpace = sal_False;
 
-	// Die folgenden Speziallfaelle muessen oder koennen nach der
-	// Filter-Detection erfolgen.
+	// The following special cases must or can be made after the
+	// filter detection.
 	if( !pPendStack )
 	{
 		if( bInFloatingFrame )
 		{
-			// <SCRIPT> wird hier (von uns) ignoriert, weil es auch in
-			// Applets ignoriert wird!
+			// <SCRIPT> is ignored here (by us), because it is also ignored in applets!
 			if( HTML_IFRAME_OFF == nToken )
 			{
 				bCallNextToken = sal_False;
@@ -1107,9 +1103,9 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		}
 		else if( pAppletImpl )
 		{
-			// in einem Applet interessieren uns (erstmal) nur <PARAM>-Tags
-			// und das </APPLET>.
-			// <SCRIPT> wird hier (von Netscape) ignoriert!
+			// in an applet we are (for now) only interested in <PARAM> tags.
+			// and the </APPLET>.
+			// <SCRIPT> is ignored here (by Netscape)!
 
 			switch( nToken )
 			{
@@ -1131,9 +1127,8 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		}
 		else if( bTextArea )
 		{
-			// in einer TextArea wird alles bis zum </TEXTAREA> als Text
-			// eingefuegt
-			// <SCRIPT> wird hier (von Netscape) ignoriert!
+			// in a TextArea everything up to </TEXTAREA> is inserted as text.
+			// <SCRIPT> is ignored here (by Netscape)!
 
 			switch( nToken )
 			{
@@ -1151,7 +1146,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		}
 		else if( bSelect )
 		{
-			// MUSS nach bNoScript kommen!
+			// MUST come after bNoScript!
 			switch( nToken )
 			{
 			case HTML_SELECT_OFF:
@@ -1173,20 +1168,19 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 			case HTML_NOSCRIPT_ON:
 			case HTML_NOSCRIPT_OFF:
 			case HTML_RAWDATA:
-				// im normalen switch bahandeln
+				// handle in the normal switch
 				break;
 
 			default:
-				// ignorieren
+				// ignore
 				return;
 			}
 		}
 		else if( pMarquee )
 		{
-			// in einer TextArea wird alles bis zum </TEXTAREA> als Text
-			// eingefuegt
-			// Die <SCRIPT>-Tags werden vom MS-IE ignoriert, von uns das
-			// geasmte Script
+			// in a TextArea everything up to </TEXTAREA> is inserted as text.
+			// The <SCRIPT> tags will be ignored by MS-IE, by us the
+			// whole script
 			switch( nToken )
 			{
 			case HTML_MARQUEE_OFF:
@@ -1234,9 +1228,9 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		}
 		else if( aUnknownToken.Len() )
 		{
-			// Unbekannte Token im Header werden nur durch ein passendes
-			// End-Token, </HEAD> oder <BODY> wieder beendet. Darin wird Text
-			// ignoriert.
+			// Unknown tokens in the header are only terminated by a matching
+			// end token, </HEAD> or <BODY> again. In this text
+			// is ignored.
 			switch( nToken )
 			{
 			case HTML_UNKNOWNCONTROL_OFF:
@@ -1245,7 +1239,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 			case HTML_FRAMESET_ON:
 			case HTML_HEAD_OFF:
 			case HTML_BODY_ON:
-			case HTML_IMAGE:		// Warum auch immer Netscape das tut.
+			case HTML_IMAGE:		// For whatever reason Netscape does this.
 				aUnknownToken.Erase();
 				break;
 			case HTML_TEXTTOKEN:
@@ -1267,8 +1261,8 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		if( IsNewDoc() )
 		{
 			InsertBodyOptions();
-			// Falls es eine Vorlage fuer die erste oder rechte Seite gibt,
-			// setzen wir die hier.
+			// If there is a template for the first or right page,
+			// we set it here.
 			const SwPageDesc *pPageDesc = 0;
 			if( pCSS1Parser->IsSetFirstPageDesc() )
 				pPageDesc = pCSS1Parser->GetFirstPageDesc();
@@ -1414,7 +1408,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		}
 		else
 			bGetIDOption = sal_True;
-			// <BR>s in <PRE> aehneln echten LFs, deshalb kein break
+			// <BR>s in <PRE> resemble real LFs, therefore no break
 
 	case HTML_NEWPARA:
 		// CR in PRE/LISTING/XMP
@@ -1422,10 +1416,10 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 			if( HTML_NEWPARA==nToken ||
 				pPam->GetPoint()->nContent.GetIndex() )
 			{
-				AppendTxtNode(); // lf gibts hier nicht, deshalb unkritisch
+				AppendTxtNode(); // lf does not exist here, therefore uncritical
 				SetTxtCollAttrs();
 			}
-			// Laufbalkenanzeige
+			// progress bar
 			if( !GetMedium() || !GetMedium()->IsRemote() )
 				::SetProgressState( rInput.Tell(), pDoc->GetDocShell() );
 		}
@@ -1450,8 +1444,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		break;
 
 	case HTML_TEXTTOKEN:
-		// dann fuege den String ein, ohne das Attribute am Ende
-		// aufgespannt werden.
+        // then insert the string without adding any attributes to the end
 		if( aToken.Len() && ' '==aToken.GetChar(0) && !IsReadPRE() )
 		{
 			xub_StrLen nPos = pPam->GetPoint()->nContent.GetIndex();
@@ -1479,8 +1472,8 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 				DocumentDetected();
             pDoc->InsertString( *pPam, aToken );
 
-			// wenn es noch vorlaefige Absatz-Attribute gibt, der Absatz aber
-			// nicht leer ist, dann sind die Absatz-Attribute entgueltig.
+            // if there are still preliminary paragraph attributes, but the paragraph
+			// is not empty, then the paragraph attributes are invalid.
 			if( aParaAttrs.Count() )
 				aParaAttrs.Remove( 0, aParaAttrs.Count() );
 
@@ -1494,8 +1487,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 
 	case HTML_IMAGE:
 		InsertImage();
-		// sollte der Parser der Letzte sein, der das Doc haelt, dann kann
-		// man hier abbrechen und einen Fehler setzen.
+		// If the parser should be the last one to hold the doc, then abort here and set an error.
 		if( 1 == pDoc->getReferenceCount() )
 		{
 			eState = SVPAR_ERROR;
@@ -1532,20 +1524,19 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 	case HTML_DT_ON:
 		if( nOpenParaToken )
 			EndPara();
-		EndDefListItem( 0, sal_False );// <DD>/<DT> beenden und keine Vorl. setzen
+		EndDefListItem( 0, sal_False );// <DD>/<DT> quit and set no template
 		NewDefListItem( nToken );
 		break;
 
 	case HTML_DD_OFF:
 	case HTML_DT_OFF:
-		// siehe HTML_LI_OFF
-		// eigentlich muesste man ein DD/DT jetzt beenden. Da aber sowhl
-		// Netscape als auch Microsoft das nicht tun, machen wir das eben
-		// auch nicht.
+		// see HTML_LI_OFF
+		// actually a DD/DT should be terminated now. But since both
+		// Netscape and Microsoft don't do that, we don't do that either.
 		EndDefListItem( nToken, sal_False );
 		break;
 
-	// Bereiche
+	// Areas
 	case HTML_DIVISION_ON:
 	case HTML_CENTER_ON:
 		if( nOpenParaToken )
@@ -1594,7 +1585,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		EndForm();
 		break;
 
-	// Vorlagen:
+	// Templates:
 	case HTML_PARABREAK_ON:
 		if( nOpenParaToken )
 			EndPara( sal_True );
@@ -1640,7 +1631,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		break;
 
 	case HTML_PREFORMTXT_OFF:
-		bNoParSpace = sal_True; // der letzte PRE-Absatz muss einen Zeilenabstand bekommen
+		bNoParSpace = sal_True; // the last PRE paragraph must get a line spacing
 		EndTxtFmtColl( HTML_PREFORMTXT_OFF );
 		break;
 
@@ -1681,14 +1672,14 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		{
 			if( nOpenParaToken )
 				EndPara();
-			ASSERT( !pTable, "Tabelle in Tabelle darf hier nicht vorkommen" );
+			ASSERT( !pTable, "Table in table must not occur here" );
 			if( !pTable && (IsNewDoc() || !pPam->GetNode()->FindTableNode()) &&
 				(pPam->GetPoint()->nNode.GetIndex() >
 							pDoc->GetNodes().GetEndOfExtras().GetIndex() ||
 				!pPam->GetNode()->FindFootnoteStartNode() ) )
 			{
 				if ( nParaCnt < 5 )
-					Show();		// bis hierhin schon mal anzeigen
+					Show();		// show up to this point
 
 				SvxAdjust eAdjust = aAttrTab.pAdjust
 					? ((const SvxAdjustItem&)aAttrTab.pAdjust->GetItem()).
@@ -1701,7 +1692,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		}
 		break;
 
-	// Listen
+	// Lists
 	case HTML_DIRLIST_ON:
 	case HTML_MENULIST_ON:
 	case HTML_ORDERLIST_ON:
@@ -1727,11 +1718,11 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 			(pPam->GetPoint()->nContent.GetIndex()
 			|| HTML_PARABREAK_ON==nOpenParaToken) )
 		{
-			// nure bei <P><LI> den Absatz beenden, aber nicht bei <DD><LI>
+			// only <P><LI> end paragraph, not with <DD><LI>
 			EndPara();
 		}
 
-		EndNumBulListItem( 0, sal_False );// <LI>/<LH> beenden und keine Vorl. setzen
+		EndNumBulListItem( 0, sal_False );// <LI>/<LH> quit and set no template
 		NewNumBulListItem( nToken );
 		break;
 
@@ -1740,7 +1731,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		EndNumBulListItem( nToken, sal_False );
 		break;
 
-	// Attribute :
+	// Attributes :
 	case HTML_ITALIC_ON:
 		{
             SvxPostureItem aPosture( ITALIC_NORMAL, RES_CHRATR_POSTURE );
@@ -1899,7 +1890,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 	case HTML_HTML_OFF:
 	case HTML_HEAD_ON:
 	case HTML_TITLE_OFF:
-		break;		// nicht weiter auswerten, oder???
+		break;		// do not go on, right???
 	case HTML_HTML_ON:
 		{
 			const HTMLOptions *pHTMLOptions = GetOptions();
@@ -1948,7 +1939,7 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 	case HTML_COMMENT:
 		if( ( aToken.Len() > 5 ) && ( ! bIgnoreHTMLComments ) )
 		{
-			// als Post-It einfuegen
+			// insert as Post-It
 			// MIB 8.12.2000: If there are no space characters right behind
 			// the <!-- and on front of the -->, leave the comment untouched.
 			if( ' ' == aToken.GetChar( 3 ) &&
@@ -1968,10 +1959,9 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		break;
 
 	case HTML_MAP_ON:
-		// Image Maps werden asynchron gelesen: Zunaechst wird nur eine
-		// ImageMap angelegt. Die Bereiche kommen spaeter. Trozdem wird
-		// die ImageMap schon in das IMap-Array eingetragen, denn sie
-		// koennte ja schon verwendet werden.
+		// Image Maps are read asynchron: At first setup only an
+		// ImageMap. The Areas are added later. Never the less add
+		// the ImageMap to the IMap-Array, because it could be used
 		pImageMap = new ImageMap;
 		if( ParseMapOptions( pImageMap) )
 		{
@@ -1987,8 +1977,8 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		break;
 
 	case HTML_MAP_OFF:
-		// jetzt gibt es keine ImageMap mehr (IMap nicht Loeschen, denn
-		// die stckt ja schon in dem Array!)
+		// the ImageMap does not exist anymore
+		// but do not delete it, since it has been added to the array
 		pImageMap = 0;
 		break;
 
@@ -2009,13 +1999,13 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		break;
 
 	case HTML_UNKNOWNCONTROL_ON:
-		// Im Header muss der Inhalt von unbekannten Token ignoriert werden,
-		// es sei denn, das Token faengt mit einem '!' an.
+	        // In the header we must ignore the content of unknown tokens, 
+		// except for those starting with '!"
 		if( IsInHeader() && !IsReadPRE() && !aUnknownToken.Len() &&
 			sSaveToken.Len() && '!' != sSaveToken.GetChar(0) &&
 			'%' != sSaveToken.GetChar(0) )
 			aUnknownToken = sSaveToken;
-		// kein break
+		// no break
 
 	default:
 		bInsertUnknown = bKeepUnknown;
@@ -2041,8 +2031,8 @@ void __EXPORT SwHTMLParser::NextToken( int nToken )
 		InsertComment( aComment );
 	}
 
-	// wenn es noch vorlaefige Absatz-Attribute gibt, der Absatz aber
-	// nicht leer ist, dann sind die Absatz-Attribute entgueltig.
+    // if temporary paragraph attributes exists and the paragraph is
+	// not empty, then paragraph attributes are final
 	if( aParaAttrs.Count() && pPam->GetPoint()->nContent.GetIndex() )
 		aParaAttrs.Remove( 0, aParaAttrs.Count() );
 }
@@ -2094,13 +2084,13 @@ void lcl_swhtml_getItemInfo( const _HTMLAttr& rAttr,
 
 sal_Bool SwHTMLParser::AppendTxtNode( SwHTMLAppendMode eMode, sal_Bool bUpdateNum )
 {
-	// Ein harter Zeilen-Umbruch am Ende muss immer entfernt werden.
-	// Einen zweiten ersetzen wir durch einen Absatz-Abstand.
+	// A hard line feed has to be always removed.
+	// A second line feed is replaced by a paragraph spacing
 	xub_StrLen nLFStripped = StripTrailingLF();
 	if( (AM_NOSPACE==eMode || AM_SOFTNOSPACE==eMode) && nLFStripped > 1 )
 		eMode = AM_SPACE;
 
-	// die harten Attribute an diesem Absatz werden nie mehr ungueltig
+	// hard attributes in this paragraph can not become invalid
 	if( aParaAttrs.Count() )
 		aParaAttrs.Remove( 0, aParaAttrs.Count() );
 
@@ -2142,8 +2132,8 @@ sal_Bool SwHTMLParser::AppendTxtNode( SwHTMLAppendMode eMode, sal_Bool bUpdateNu
 
 	sal_Bool bRet = pDoc->AppendTxtNode( *pPam->GetPoint() );
 
-	// Zeichen-Attribute aufspalten und ggf keine setzen, die ueber den
-	// ganzen Absatz gesetzt sind
+	// split character attributes  and unset if they range over the
+	// complete paragraph
 	const SwNodeIndex& rEndIdx = aOldPos.nNode;
 	xub_StrLen nEndCnt = aOldPos.nContent.GetIndex();
 	const SwPosition& rPos = *pPam->GetPoint();
@@ -2175,7 +2165,7 @@ sal_Bool SwHTMLParser::AppendTxtNode( SwHTMLAppendMode eMode, sal_Bool bUpdateNu
 					sal_Bool bInsert = sal_True;
 				   	lcl_swhtml_getItemInfo( *pAttr, bScript, bFont,
 											nScriptItem );
-						// den besehrigen Teil setzen
+					// set parts which we have so far
 					if( bInsert && bScript )
 					{
 						const SwTxtNode *pTxtNd =
@@ -2221,12 +2211,12 @@ sal_Bool SwHTMLParser::AppendTxtNode( SwHTMLAppendMode eMode, sal_Bool bUpdateNu
 							pAttr->Clone( rEndIdx, nEndCnt );
 						pSetAttr->nSttCntnt = nStt;
 
-						// Wenn das Attribut den gesamten Absatz umspannt, werden
-						// alle auesseren Attribute nicht mehr beachtet. Deshalb
-						// darf es auch nicht in die Prev-Liste eines ausseren
-						// Attributs eingetragen werden, denn dieses wird ja
-						// erstmal nicht gesetzt. Das fuehrt zu verschiebenungen,
-						// wenn Felder ins Rennen kommen (siehe #51020#)
+						// If the attribute spans the entire paragraph, then
+						// all other attributes are ignored. Therefore
+						// it must not be added to the prev list of an outer
+						// attribute, because this attribute is 
+						// not set for the time being. This leads to shifts,
+						// when fields are added to the race (see #51020#).
 						if( !pNext || bWholePara )
 						{
 							sal_uInt16 nTmp = pSetAttr->bInsAtStart ? 0
@@ -2241,7 +2231,7 @@ sal_Bool SwHTMLParser::AppendTxtNode( SwHTMLAppendMode eMode, sal_Bool bUpdateNu
 						_HTMLAttr *pPrev = pAttr->GetPrev();
 						if( pPrev )
 						{
-							// Die Previous-Attribute muessen trotzdem gesetzt werden.
+							// The Previous attributes must be set anyway.
 							if( !pNext || bWholePara )
 							{
 								sal_uInt16 nTmp = pPrev->bInsAtStart ? 0 : aSetAttrTab.Count();
@@ -2271,7 +2261,7 @@ sal_Bool SwHTMLParser::AppendTxtNode( SwHTMLAppendMode eMode, sal_Bool bUpdateNu
             pPam->GetNode()->GetTxtNode()->ResetAttr( RES_PARATR_NUMRULE );
     }
 
-    // Attrubute im Absatz davor sollte man jetzt setzen (wegen JavaScript)
+    // because of JavaScript, Attributes in the paragraph should be set now
     SetAttr();
 
 	// Now it is time to get rid of all script dependent hints that are
@@ -2393,13 +2383,13 @@ void SwHTMLParser::AddParSpace()
 
 void SwHTMLParser::Show()
 {
-	// Hier wird
-	// - ein EndAction gerufen, damit formatiert wird
-	// - ein Reschedule gerufen,
-	// - die eiegen View-Shell wieder gesetzt
-	// - und Start-Action gerufen
+	// Here
+	// - an EndAction is called, which is formatted
+	// - a Reschedule is called,
+	// - the current view shell is set again
+	// - and start action is called
 
-	ASSERT( SVPAR_WORKING==eState, "Show nicht im Working-State - Das kann ins Auge gehen" );
+	ASSERT( SVPAR_WORKING==eState, "Show not in working state - This can backfire" );
 	ViewShell *pOldVSh = CallEndAction();
 
 	GetpApp()->Reschedule();
@@ -2407,16 +2397,15 @@ void SwHTMLParser::Show()
 	if( ( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
 		|| 1 == pDoc->getReferenceCount() )
 	{
-		// wurde der Import vom SFX abgebrochen?
+		// was the import aborted by SFX?
 		eState = SVPAR_ERROR;
 	}
 
-	// Die ViewShell nochmal holen, denn sie koennte im Reschedule
-	// zerstoert wirden sein.
+	// Get the ViewShell again, because it could be destroyed during reschedule
 	ViewShell *pVSh = CallStartAction( pOldVSh );
 
-	// ist der aktuelle Node nicht mehr sichtbar, dann benutzen wir
-	// eine groessere Schrittweite
+	// if the current node is no longer visible, then we use
+	// a larger step size
 	if( pVSh )
     {
         nParaCnt = (pPam->GetPoint()->nNode.GetNode().IsInVisibleArea(pVSh))
@@ -2426,14 +2415,14 @@ void SwHTMLParser::Show()
 
 void SwHTMLParser::ShowStatline()
 {
-	// Hier wird
-	// - ein Reschedule gerufen, damit gescrollt werden kann
-	// - die eiegen View-Shell wieder gesetzt
-	// - ein Start/End-Action gerufen, wenn gescrollt wurde.
+	// Here
+	// - a reschedule is called, so that scrolling is possible
+	// - the current view shell is set again
+	// - a start/end action is called if scrolling was done.
 
-	ASSERT( SVPAR_WORKING==eState, "ShowStatLine nicht im Working-State - Das kann ins Auge gehen" );
+	ASSERT( SVPAR_WORKING==eState, "ShowStatLine not in working state - This can go to the eye" );
 
-	// Laufbalkenanzeige
+	// progress bar
 	if( !GetMedium() || !GetMedium()->IsRemote() )
 	{
 		::SetProgressState( rInput.Tell(), pDoc->GetDocShell() );
@@ -2445,7 +2434,7 @@ void SwHTMLParser::ShowStatline()
 
 		if( ( pDoc->GetDocShell() && pDoc->GetDocShell()->IsAbortingImport() )
 			|| 1 == pDoc->getReferenceCount() )
-			// wurde der Import vom SFX abgebrochen?
+		// was the import aborted by SFX?
 			eState = SVPAR_ERROR;
 
 		ViewShell *pVSh = CheckActionViewShell();
@@ -2459,7 +2448,7 @@ void SwHTMLParser::ShowStatline()
 
 ViewShell *SwHTMLParser::CallStartAction( ViewShell *pVSh, sal_Bool bChkPtr )
 {
-	ASSERT( !pActionViewShell, "CallStartAction: ViewShell schon gesetzt" );
+	ASSERT( !pActionViewShell, "CallStartAction: ViewShell already set" );
 
 	if( !pVSh || bChkPtr )
 	{
@@ -2467,7 +2456,7 @@ ViewShell *SwHTMLParser::CallStartAction( ViewShell *pVSh, sal_Bool bChkPtr )
 		ViewShell *pOldVSh = pVSh;
 #endif
 		pDoc->GetEditShell( &pVSh );
-		ASSERT( !pVSh || !pOldVSh || pOldVSh == pVSh, "CallStartAction: Wer hat die ViewShell ausgetauscht?" );
+		ASSERT( !pVSh || !pOldVSh || pOldVSh == pVSh, "CallStartAction: Who replaced the ViewShell?" );
 #ifdef DBG_UTIL
 		if( pOldVSh && !pVSh )
 			pVSh = 0;
@@ -2493,7 +2482,7 @@ ViewShell *SwHTMLParser::CallEndAction( sal_Bool bChkAction, sal_Bool bChkPtr )
 		ViewShell *pVSh = 0;
 		pDoc->GetEditShell( &pVSh );
 		ASSERT( !pVSh || pActionViewShell == pVSh,
-				"CallEndAction: Wer hat die ViewShell ausgetauscht?" );
+				"CallEndAction: Who replaced the ViewShell?" );
 #if OSL_DEBUG_LEVEL > 1
 		if( pActionViewShell && !pVSh )
 			pVSh = 0;
@@ -2507,7 +2496,7 @@ ViewShell *SwHTMLParser::CallEndAction( sal_Bool bChkAction, sal_Bool bChkPtr )
 
 	if( bSetCrsr )
 	{
-		// an allen CrsrEditShells die Cursor auf den Doc-Anfang setzen
+		// at all CrsrEditShells set the cursors to the doc start.
 		ViewShell *pSh = pActionViewShell;
 		do {
 			if( pSh->IsA( TYPE( SwCrsrShell ) ) )
@@ -2519,7 +2508,7 @@ ViewShell *SwHTMLParser::CallEndAction( sal_Bool bChkAction, sal_Bool bChkPtr )
 	}
 	if( pActionViewShell->ISA( SwEditShell ) )
 	{
-		//Schon gescrollt?, dann dafuer sorgen, dass die View sich nicht bewegt!
+		//Scrolled already?, then make sure that the view does not move!
 		const sal_Bool bOldLock = pActionViewShell->IsViewLocked();
 		pActionViewShell->LockView( sal_True );
 		const sal_Bool bOldEndActionByVirDev = pActionViewShell->IsEndActionByVirDev();
@@ -2528,7 +2517,7 @@ ViewShell *SwHTMLParser::CallEndAction( sal_Bool bChkAction, sal_Bool bChkPtr )
 		pActionViewShell->SetEndActionByVirDev( bOldEndActionByVirDev );
 		pActionViewShell->LockView( bOldLock );
 
-		// bChkJumpMark ist nur gesetzt, wenn das Object auch gefunden wurde
+		// bChkJumpMark is only set if the object was found.
 		if( bChkJumpMark )
 		{
 			const Point aVisSttPos( DOCUMENTBORDER, DOCUMENTBORDER );
@@ -2541,8 +2530,8 @@ ViewShell *SwHTMLParser::CallEndAction( sal_Bool bChkAction, sal_Bool bChkPtr )
 	else
 		pActionViewShell->EndAction();
 
-	// sollte der Parser der Letzte sein, der das Doc haelt, dann kann
-	// man hier abbrechen und einen Fehler setzen.
+	// If the parser should be the last one to hold the doc, then you can
+	// abort here and set an error.
 	if( 1 == pDoc->getReferenceCount() )
 	{
 		eState = SVPAR_ERROR;
@@ -2559,7 +2548,7 @@ ViewShell *SwHTMLParser::CheckActionViewShell()
 	ViewShell *pVSh = 0;
 	pDoc->GetEditShell( &pVSh );
 	ASSERT( !pVSh || pActionViewShell == pVSh,
-			"CheckActionViewShell: Wer hat die ViewShell ausgetauscht?" );
+			"CheckActionViewShell: Who replaced the ViewShell?" );
 #if OSL_DEBUG_LEVEL > 1
 	if( pActionViewShell && !pVSh )
 		pVSh = 0;
@@ -2593,14 +2582,12 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 		sal_Bool bSetAttr;
 		if( bChkEnd )
 		{
-			// fix #42192#: Zechen-Attribute mit Ende moeglich frueh,
-			// also noch im aktuellen Absatz setzen (wegen JavaScript
-			// und diversen Chats). das darf man aber nicht fuer Attribute,
-			// die ueber den ganzen Absatz aufgspannt werden sollen, weil
-			// sie aus Absatzvorlgen stammen, die nicht gesetzt werden
-			// koennen. Weil die Attribute mit SETATTR_DONTREPLACE
-			// eingefuegt werden, sollte man sie auch anchtraeglich
-			// noch setzen koennen.
+			// fix #42192#: set character attributes in current paragraph with end 
+			// as early as possible, because of JavaScript and various chats.
+			// Except attributes, which are spanned over the whole paragraph, because
+			// they come from paragraph occurrences that cannot be set.
+			// Because the attributes are inserted with SETATTR_DONTREPLACE
+			// they should be able to set them subsequently.
 			bSetAttr = ( nEndParaIdx < rEndIdx.GetIndex() &&
 						 (RES_LR_SPACE != nWhich || !GetNumInfo().GetNumRule()) ) ||
 					   ( !pAttr->IsLikePara() &&
@@ -2613,9 +2600,8 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 		}
 		else
 		{
-			// Attribiute im Content-Bereich duerfen nicht gesetzt
-			// werden, wenn wir in einem Sonderbereich stehen, aber
-			// umgekekehrt schon.
+			// Attributes in the content area may not be set in 
+			// special areai, but if the opposite is true.
 			sal_uLong nEndOfIcons = pDoc->GetNodes().GetEndOfExtras().GetIndex();
 			bSetAttr = nEndParaIdx < rEndIdx.GetIndex() ||
 					   rEndIdx.GetIndex() > nEndOfIcons ||
@@ -2624,18 +2610,18 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 
 		if( bSetAttr )
 		{
-			// Das Attribute darf nicht in der liste der vorlaeufigen
-			// Absatz-Attribute stehen, weil es sonst geloescht wurde.
+			// The attribute must not be in the list of previous
+			// paragraph attributes, otherwise it will be deleted.
 			sal_uInt16 ii = aParaAttrs.Count();
 			while( ii-- )
 			{
 				ASSERT( pAttr != aParaAttrs[ii],
-						"SetAttr: Attribut duerfte noch nicht gesetzt werden" );
+						"SetAttr: Attribute may not be set yet" );
 				aParaAttrs.Remove( ii );
 			}
 
 
-			// dann also setzen
+			// then set
 			aSetAttrTab.Remove( n, 1 );
 
 			while( pAttr )
@@ -2643,7 +2629,7 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 				_HTMLAttr *pPrev = pAttr->GetPrev();
 				if( !pAttr->bValid )
 				{
-					// ungueltige Attribute koennen gloescht werden
+					// invalid attributes can be deleted
 					delete pAttr;
 					pAttr = pPrev;
 					continue; //break;
@@ -2653,14 +2639,14 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
                 pCNd = pAttr->nSttPara.GetNode().GetCntntNode();
 				if( !pCNd )
 				{
-					// durch die elende Loescherei von Nodes kann auch mal
-					// ein Index auf einen End-Node zeigen :-(
+					// due to the miserable deletion of nodes also sometimes
+					// an index can point to an end node :-(
                     if ( (pAttr->GetSttPara() == pAttr->GetEndPara()) &&
                          !isTXTATR_NOEND(nWhich) )
 					{
-						// wenn der End-Index auch auf den Node zeigt
-						// brauchen wir auch kein Attribut mehr zu setzen,
-						// es sei denn, es ist ein Text-Attribut.
+						// if the end index also points to the node
+						// we don't need to set an attribute anymore,
+						// unless it is a text attribute.
 						delete pAttr;
 						pAttr = pPrev;
 						continue; //break;
@@ -2680,8 +2666,8 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 
 
 
-				// durch das Loeschen von BRs kann der Start-Index
-				// auch mal hinter das Ende des Textes zeigen
+				// by deleting BRs, the start index can
+				// can also sometimes point behind the end of the text
 				if( pAttr->nSttCntnt > pCNd->Len() )
 					pAttr->nSttCntnt = pCNd->Len();
 				pAttrPam->GetPoint()->nContent.Assign( pCNd, pAttr->nSttCntnt );
@@ -2713,8 +2699,8 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 					pAttr->nEndCntnt = pCNd->Len();
 				}
 
-				// durch das Loeschen von BRs kann der End-Index
-				// auch mal hinter das Ende des Textes zeigen
+				// by deleting BRs, the end index can
+				// can also sometimes point behind the end of the text
 				if( pAttr->nEndCntnt > pCNd->Len() )
 					pAttr->nEndCntnt = pCNd->Len();
 
@@ -2723,10 +2709,10 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 					pAttrPam->GetPoint()->nNode.GetIndex() ==
 						rEndIdx.GetIndex() )
 				{
-					// wenn wir vor dem Einfuegen einer Tabelle stehen
-					// und das Attribut im aktuellen Node beendet wird,
-					// muessen wir es im Node davor beenden oder wegschmeissen,
-					// wenn es erst in dem Node beginnt
+					// if we are about to insert a table
+					// and the attribute is terminated in the current node,
+					// we must end it in the node before or throw it away,
+					// if it starts in the node before
 					if( nWhich != RES_BREAK && nWhich != RES_PAGEDESC &&
                          !isTXTATR_NOEND(nWhich) )
 					{
@@ -2734,7 +2720,7 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 							rEndIdx.GetIndex() )
 						{
 							ASSERT( !pAttrPam->GetPoint()->nContent.GetIndex(),
-									"Content-Position vor Tabelle nicht 0???" );
+									"Content position before table not 0???" );
 							pAttrPam->Move( fnMoveBackward );
 						}
 						else
@@ -2798,17 +2784,17 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 						pAttrPam->GetMark()->nNode.GetIndex() &&
 						pCNd )
 					{
-						// wegen Numerierungen dieses Attribut direkt
-						// am Node setzen
+						// because of numbering this attribute directly
+						// set at the node
 						pCNd->SetAttr( *pAttr->pItem );
 						break;
 					}
 					ASSERT(	sal_False,
 							"LRSpace set over several paragraphs!" );
-					// kein break (hier sollen wir trotzdem nie hinkommen;
+					// no break (we are never supposed to get here anyway;
 				default:
 
-					// ggfs. ein Bookmark anspringen
+					// jump to a bookmark if necessary
 					if( RES_TXTATR_INETFMT == nWhich &&
 						JUMPTO_MARK == eJumpTo &&
 						sJmpMark == ((SwFmtINetFmt*)pAttr->pItem)->GetName() )
@@ -2833,7 +2819,7 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 
 		const SwFmtAnchor& rAnchor = pFrmFmt->GetAnchor();
         ASSERT( FLY_AT_PARA == rAnchor.GetAnchorId(),
-				"Nur Auto-Rahmen brauchen eine Spezialbehandlung" );
+				"Only car frames need special treatment" );
 		const SwPosition *pFlyPos = rAnchor.GetCntntAnchor();
 		sal_uLong nFlyParaIdx = pFlyPos->nNode.GetIndex();
 		sal_Bool bMoveFly;
@@ -2892,9 +2878,9 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 		if( bBeforeTable &&
 			pAttrPam->GetPoint()->nNode.GetIndex() == rEndIdx.GetIndex() )
 		{
-			ASSERT( !bBeforeTable, "Aha, der Fall tritt also doch ein" );
+			ASSERT( !bBeforeTable, "Aha, the case occurs after all" );
 			ASSERT( !pAttrPam->GetPoint()->nContent.GetIndex(),
-					"Content-Position vor Tabelle nicht 0???" );
+					"Content position before table not 0???" );
 			// !!!
 			pAttrPam->Move( fnMoveBackward );
 		}
@@ -2910,11 +2896,10 @@ void SwHTMLParser::_SetAttr( sal_Bool bChkEnd, sal_Bool bBeforeTable,
 
 void SwHTMLParser::NewAttr( _HTMLAttr **ppAttr, const SfxPoolItem& rItem )
 {
-	// Font-Hoehen und -Farben- sowie Escapement-Attribute duerfen nicht
-	// zusammengefasst werden. Sie werden deshalb in einer Liste gespeichert,
-	// in der das zuletzt aufgespannte Attribut vorne steht und der Count
-	// immer 1 ist. Fuer alle anderen Attribute wird der Count einfach
-	// hochgezaehlt.
+	// font-height and -color as well as escapement attributes must not be
+	// be combined. Therefore they are stored in a list,
+	// where the last expanded attribute is at the front and the count is always 1.
+	// For all other attributes the count is simply incremented.
 	if( *ppAttr )
 	{
 		_HTMLAttr *pAttr = new _HTMLAttr( *pPam->GetPoint(), rItem,
@@ -2930,34 +2915,34 @@ void SwHTMLParser::NewAttr( _HTMLAttr **ppAttr, const SfxPoolItem& rItem )
 void SwHTMLParser::EndAttr( _HTMLAttr* pAttr, _HTMLAttr **ppDepAttr,
 							sal_Bool bChkEmpty )
 {
-	ASSERT( !ppDepAttr, "SwHTMLParser::EndAttr: ppDepAttr-Feature ungetestet?" );
-	// Der Listenkopf ist im Attribut gespeichert
+	ASSERT( !ppDepAttr, "SwHTMLParser::EndAttr: untested ppDepAttr-Feature?" );
+	// The list header is stored in the attribute
 	_HTMLAttr **ppHead = pAttr->ppHead;
 
-	ASSERT( ppHead, "keinen Attributs-Listenkopf gefunden!" );
+	ASSERT( ppHead, "no attribute list header found!" );
 
-	// die aktuelle Psoition als Ende-Position merken
+	// remember the current position as the end position
 	const SwNodeIndex* pEndIdx = &pPam->GetPoint()->nNode;
 	xub_StrLen nEndCnt = pPam->GetPoint()->nContent.GetIndex();
 
-	// WIrd das zueltzt gestartete oder ein frueher gestartetes Attribut
-	// beendet?
+	// Is the last started or a previously started attribute
+	// finished?
 	_HTMLAttr *pLast = 0;
 	if( ppHead && pAttr != *ppHead )
 	{
-		// Es wird nicht das zuletzt gestartete Attribut beendet
+		// The last started attribute is not terminated
 
-		// Dann suche wir das unmittelbar danach gestartete Attribut, das
-		// ja ebenfalls noch nicht beendet wurde (sonst stuende es nicht
-		// mehr in der Liste
+		// Then we search for the attribute that was started immediately afterwards, which
+		// has not been finished yet either (otherwise it would not be
+		// any more in the list
 		pLast = *ppHead;
 		while( pLast && pLast->GetNext() != pAttr )
 			pLast = pLast->GetNext();
 
-		ASSERT( pLast, "Attribut nicht in eigener Liste gefunden!" );
+		ASSERT( pLast, "Attribute not found in own list!" );
 
-		// das Attribut nicht an der PaM-Psoition beenden, sondern da,
-		// wo das danch gestartete Attribut anfing???
+		// Do not end the attribute at the PaM psoition, but there,
+		// where the attribute started???
 		//pEndIdx = &pPrev->GetSttPara();
 		//nEndCnt = pPrev->GetSttCnt();
 	}
@@ -2967,19 +2952,19 @@ void SwHTMLParser::EndAttr( _HTMLAttr* pAttr, _HTMLAttr **ppDepAttr,
 	if( /*!pLast &&*/ !nEndCnt && RES_PARATR_BEGIN <= nWhich &&
 		*pEndIdx != pAttr->GetSttPara() )
 	{
-		// dann eine Cntntnt Position zurueck!
+		// then one Cntnt position back!
 		bMoveBack = pPam->Move( fnMoveBackward );
 		nEndCnt = pPam->GetPoint()->nContent.GetIndex();
 	}
 
-	// nun das Attrubut beenden
+	// end this Attrubut
 	_HTMLAttr *pNext = pAttr->GetNext();
 
 
 	sal_Bool bInsert;
     sal_uInt16 nScriptItem = 0;
 	sal_Bool bScript = sal_False, bFont = sal_False;
-	// ein Bereich ??
+	// an area ??
 	if( !bChkEmpty || (RES_PARATR_BEGIN <= nWhich && bMoveBack) ||
 		RES_PAGEDESC == nWhich || RES_BREAK == nWhich ||
 		*pEndIdx != pAttr->GetSttPara() ||
@@ -3039,10 +3024,10 @@ void SwHTMLParser::EndAttr( _HTMLAttr* pAttr, _HTMLAttr **ppDepAttr,
 
 		if( !pNext )
 		{
-			// keine offenen Attribute dieses Typs mehr da,
-			// dann koennen alle gesetzt werden, es sei denn
-			// sie haengen noch von einem anderen Attribut ab,
-			// dann werden sie dort angehaengt
+			// there are no more open attributes of this type,
+			// then all of them can be set, unless
+			// they still depend on another attribute,
+			// then they will be appended there
 			if( ppDepAttr && *ppDepAttr )
 				(*ppDepAttr)->InsertPrev( pAttr );
 			else
@@ -3053,25 +3038,24 @@ void SwHTMLParser::EndAttr( _HTMLAttr* pAttr, _HTMLAttr **ppDepAttr,
 		}
 		else
 		{
-			// es gibt noch andere offene Attribute des Typs,
-			// daher muss das Setzen zurueckgestellt werden.
-			// das aktuelle Attribut wird deshalb hinten an die
-			// Previous-Liste des Nachfolgers angehaengt
+			// there are other open attributes of the type,
+			// so the setting must be reset.
+			// the current attribute is therefore appended to the end of the
+			// previous list of the successor.
 			pNext->InsertPrev( pAttr );
 		}
 	}
 	else
 	{
-		// dann nicht einfuegen, sondern Loeschen. Durch das "tuerken" von
-		// Vorlagen durch harte Attributierung koennen sich auch mal andere
-		// leere Attribute in der Prev-Liste befinden, die dann trotzdem
-		// gesetzt werden muessen
+		// Then do not insert, but delete. Through "fakeing" of
+		// templates by hard attributes, there may be other empty attributes 
+		// in the Prev list, which then must be set anyway.
 		_HTMLAttr *pPrev = pAttr->GetPrev();
 		delete pAttr;
 
 		if( pPrev )
 		{
-			// Die Previous-Attribute muessen trotzdem gesetzt werden.
+			// The Previous attributes must be set anyway.
 			if( pNext )
 				pNext->InsertPrev( pPrev );
 			else
@@ -3083,8 +3067,8 @@ void SwHTMLParser::EndAttr( _HTMLAttr* pAttr, _HTMLAttr **ppDepAttr,
 
 	}
 
-	// wenn das erste Attribut der Liste gesetzt wurde muss noch der
-	// Listenkopf korrigiert werden.
+	// if the first attribute of the list has been set the
+	// list header must be corrected.
 	if( pLast )
 		pLast->pNext = pNext;
 	else if( ppHead )
@@ -3096,43 +3080,43 @@ void SwHTMLParser::EndAttr( _HTMLAttr* pAttr, _HTMLAttr **ppDepAttr,
 
 void SwHTMLParser::DeleteAttr( _HTMLAttr* pAttr )
 {
-	// Hier darf es keine vorlauefigen Absatz-Attribute geben, den die
-	// koennten jetzt gesetzt werden und dann sind die Zeiger ungueltig!!!
+	// There must not be any leading paragraph attributes here, because the
+	// could be set now and then the pointers are invalid!!!
 	ASSERT( !aParaAttrs.Count(),
-			"Hoechste Gefahr: Es gibt noch nicht-endgueltige Absatz-Attribute" );
+			"Highest risk: There are still non-final paragraph attributes" );
 	if( aParaAttrs.Count() )
 		aParaAttrs.Remove( 0, aParaAttrs.Count() );
 
-	// Der Listenkopf ist im Attribut gespeichert
+	// The list header is stored in the attribute
 	_HTMLAttr **ppHead = pAttr->ppHead;
 
-	ASSERT( ppHead, "keinen Attributs-Listenkopf gefunden!" );
+	ASSERT( ppHead, "no attributes list header found!" );
 
-	// Wird das zueltzt gestartete oder ein frueher gestartetes Attribut
-	// entfernt?
+	// Is the attribute that was started last or an attribute that was started earlier
+	// removed?
 	_HTMLAttr *pLast = 0;
 	if( ppHead && pAttr != *ppHead )
 	{
-		// Es wird nicht das zuletzt gestartete Attribut beendet
+		// The last started attribute is not terminated
 
-		// Dann suche wir das unmittelbar danach gestartete Attribut, das
-		// ja ebenfalls noch nicht beendet wurde (sonst stuende es nicht
-		// mehr in der Liste
+		// Then we search for the attribute that was started immediately afterwards, which
+		// has not been finished yet either (otherwise it would not be
+		// any more in the list
 		pLast = *ppHead;
 		while( pLast && pLast->GetNext() != pAttr )
 			pLast = pLast->GetNext();
 
-		ASSERT( pLast, "Attribut nicht in eigener Liste gefunden!" );
+		ASSERT( pLast, "Attribute not found in own list!" );
 	}
 
-	// nun das Attrubut entfernen
+	// now remove the attribute
 	_HTMLAttr *pNext = pAttr->GetNext();
 	_HTMLAttr *pPrev = pAttr->GetPrev();
 	delete pAttr;
 
 	if( pPrev )
 	{
-		// Die Previous-Attribute muessen trotzdem gesetzt werden.
+		// The Previous attributes must be set anyway.
 		if( pNext )
 			pNext->InsertPrev( pPrev );
 		else
@@ -3142,8 +3126,8 @@ void SwHTMLParser::DeleteAttr( _HTMLAttr* pAttr )
 		}
 	}
 
-	// wenn das erste Attribut der Liste entfernt wurde muss noch der
-	// Listenkopf korrigiert werden.
+	// if the first attribute of the list has been removed the
+	// list header must be corrected.
 	if( pLast )
 		pLast->pNext = pNext;
 	else if( ppHead )
@@ -3152,10 +3136,10 @@ void SwHTMLParser::DeleteAttr( _HTMLAttr* pAttr )
 
 void SwHTMLParser::SaveAttrTab( _HTMLAttrTable& rNewAttrTab )
 {
-	// Hier darf es keine vorlauefigen Absatz-Attribute geben, den die
-	// koennten jetzt gesetzt werden und dann sind die Zeiger ungueltig!!!
+	// There must not be any leading paragraph attributes here, because the
+	// could be set now and then the pointers are invalid!!!
 	ASSERT( !aParaAttrs.Count(),
-			"Hoechste Gefahr: Es gibt noch nicht-endgueltige Absatz-Attribute" );
+			"Highest risk: There are still non-final paragraph attributes" );
 	if( aParaAttrs.Count() )
 		aParaAttrs.Remove( 0, aParaAttrs.Count() );
 
@@ -3181,18 +3165,17 @@ void SwHTMLParser::SaveAttrTab( _HTMLAttrTable& rNewAttrTab )
 void SwHTMLParser::SplitAttrTab( _HTMLAttrTable& rNewAttrTab,
 								 sal_Bool bMoveEndBack )
 {
-	// Hier darf es keine vorlauefigen Absatz-Attribute geben, den die
-	// koennten jetzt gesetzt werden und dann sind die Zeiger ungueltig!!!
+	// There must not be any leading paragraph attributes here, because the
+	// could be set now and then the pointers are invalid!!!
 	ASSERT( !aParaAttrs.Count(),
-			"Hoechste Gefahr: Es gibt noch nicht-endgueltige Absatz-Attribute" );
+			"Highest risk: There are still non-final paragraph attributes" );
 	if( aParaAttrs.Count() )
 		aParaAttrs.Remove( 0, aParaAttrs.Count() );
 
 	const SwNodeIndex& nSttIdx = pPam->GetPoint()->nNode;
 	SwNodeIndex nEndIdx( nSttIdx );
 
-	// alle noch offenen Attribute beenden und hinter der Tabelle
-	// neu aufspannen
+	// terminate all attributes still open and span behind the table
 	_HTMLAttr** pTbl = (_HTMLAttr**)&aAttrTab;
 	_HTMLAttr** pSaveTbl = (_HTMLAttr**)&rNewAttrTab;
 	sal_Bool bSetAttr = sal_True;
@@ -3210,8 +3193,8 @@ void SwHTMLParser::SplitAttrTab( _HTMLAttrTable& rNewAttrTab,
 		}
 		SwCntntNode* pCNd = pDoc->GetNodes().GoPrevious(&nEndIdx);
 
-		// keine Attribute setzen, wenn der PaM aus dem Content-Bereich
-		// herausgeschoben wurde.
+		// Do not set attributes if the PaM has been moved out of the content area.
+		// has been pushed out.
 		bSetAttr = pCNd && nTmpIdx < nEndIdx.GetIndex();
 
 		nEndCnt = (bSetAttr ? pCNd->Len() : 0);
@@ -3231,11 +3214,11 @@ void SwHTMLParser::SplitAttrTab( _HTMLAttrTable& rNewAttrTab,
 				  (pAttr->GetSttPara() == nEndIdx &&
 				   pAttr->GetSttCnt() != nEndCnt) ) )
 			{
-				// das Attribut muss vor der Liste gesetzt werden. Da wir
-				// das Original noch brauchen, weil Zeiger auf das Attribut
-				// noch in den Kontexten existieren, muessen wir es clonen.
-				// Die Next-Liste geht dabei verloren, aber die
-				// Previous-Liste bleibt erhalten
+				// the attribute must be set before the list. Since we
+				// still need the original because pointers to the attribute
+				// still exist in the contexts, we have to clone it.
+				// The next list will be lost, but the
+				// Previous list is preserved
 				_HTMLAttr *pSetAttr = pAttr->Clone( nEndIdx, nEndCnt );
 
 				if( pNext )
@@ -3249,9 +3232,8 @@ void SwHTMLParser::SplitAttrTab( _HTMLAttrTable& rNewAttrTab,
 			}
 			else if( pPrev )
 			{
-				// Wenn das Attribut nicht gesetzt vor der Tabelle
-				// gesetzt werden muss, muessen der Previous-Attribute
-				// trotzdem gesetzt werden.
+				// If the attribute is not set before the table
+				// the Previous attribute must be set anyway.
 				if( pNext )
 					pNext->InsertPrev( pPrev );
 				else
@@ -3261,8 +3243,7 @@ void SwHTMLParser::SplitAttrTab( _HTMLAttrTable& rNewAttrTab,
 				}
 			}
 
-			// den Start des Attributs neu setzen und die Verkettungen
-			// aufbrechen
+			// reset the start of the attribute  and break the concatenations break
 			pAttr->Reset( nSttIdx, nSttCnt, pSaveTbl );
 
 			if( *pSaveTbl )
@@ -3285,10 +3266,10 @@ void SwHTMLParser::SplitAttrTab( _HTMLAttrTable& rNewAttrTab,
 void SwHTMLParser::RestoreAttrTab( const _HTMLAttrTable& rNewAttrTab,
 								   sal_Bool bSetNewStart )
 {
-	// Hier darf es keine vorlauefigen Absatz-Attribute geben, den die
-	// koennten jetzt gesetzt werden und dann sind die Zeiger ungueltig!!!
+	// There must not be any leading paragraph attributes here, because the
+	// could be set now and then the pointers are invalid!!!
 	ASSERT( !aParaAttrs.Count(),
-			"Hoechste Gefahr: Es gibt noch nicht-endgueltige Absatz-Attribute" );
+			"Highest risk: There are still non-final paragraph attributes" );
 	if( aParaAttrs.Count() )
 		aParaAttrs.Remove( 0, aParaAttrs.Count() );
 
@@ -3298,7 +3279,7 @@ void SwHTMLParser::RestoreAttrTab( const _HTMLAttrTable& rNewAttrTab,
 	for( sal_uInt16 nCnt = sizeof( _HTMLAttrTable ) / sizeof( _HTMLAttr* );
 		nCnt--; (++pTbl, ++pSaveTbl) )
 	{
-		ASSERT( !*pTbl, "Die Attribut-Tabelle ist nicht leer!" );
+		ASSERT( !*pTbl, "The attribute table is not empty!" );
 
 		const SwPosition *pPos = pPam->GetPoint();
 		const SwNodeIndex& rSttPara = pPos->nNode;
@@ -3310,7 +3291,7 @@ void SwHTMLParser::RestoreAttrTab( const _HTMLAttrTable& rNewAttrTab,
 		while( pAttr )
 		{
 			ASSERT( !pAttr->GetPrev() || !pAttr->GetPrev()->ppHead,
-					"Previous-Attribut hat noch einen Header" );
+					"Previous attribute still has a header" );
 			pAttr->SetHead( pTbl );
 			if( bSetNewStart )
 			{
@@ -3378,10 +3359,10 @@ void SwHTMLParser::NewStdAttr( int nToken )
 		}
 	}
 
-	// einen neuen Kontext anlegen
+	// create a new context
     _HTMLAttrContext *pCntxt = new _HTMLAttrContext( static_cast< sal_uInt16 >(nToken) );
 
-	// Styles parsen
+	// parse styles
 	if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) )
 	{
 		SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
@@ -3396,7 +3377,7 @@ void SwHTMLParser::NewStdAttr( int nToken )
 		}
 	}
 
-	// den Kontext merken
+	// memorize context
 	PushContext( pCntxt );
 }
 
@@ -3431,10 +3412,10 @@ void SwHTMLParser::NewStdAttr( int nToken,
 		}
 	}
 
-	// einen neuen Kontext anlegen
+	// create new context
     _HTMLAttrContext *pCntxt = new _HTMLAttrContext( static_cast< sal_uInt16 >(nToken) );
 
-	// Styles parsen
+	// parse Styles
 	if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) )
 	{
 		SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
@@ -3466,17 +3447,17 @@ void SwHTMLParser::NewStdAttr( int nToken,
 		}
 	}
 
-	// den Kontext merken
+	// memorize context
 	PushContext( pCntxt );
 }
 
 void SwHTMLParser::EndTag( int nToken )
 {
-	// den Kontext holen
+	// get context
     _HTMLAttrContext *pCntxt = PopContext( static_cast< sal_uInt16 >(nToken & ~1) );
 	if( pCntxt )
 	{
-		// und ggf. die Attribute beenden
+		// and terminate the attributes if necessary
 		EndContext( pCntxt );
 		delete pCntxt;
 	}
@@ -3521,10 +3502,10 @@ void SwHTMLParser::NewBasefontAttr()
 	if( nSize > 7 )
 		nSize = 7;
 
-	// einen neuen Kontext anlegen
+	// set up a new context
 	_HTMLAttrContext *pCntxt = new _HTMLAttrContext( HTML_BASEFONT_ON );
 
-	// Styles parsen
+	// parse styles
 	if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) )
 	{
 		SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
@@ -3552,10 +3533,10 @@ void SwHTMLParser::NewBasefontAttr()
 		InsertAttr( &aAttrTab.pFontHeightCTL, aFontHeight, pCntxt );
 	}
 
-	// den Kontext merken
+	// memorize context
 	PushContext( pCntxt );
 
-	// die Font-Size merken
+	// memorize Font-Size
 	aBaseFontStack.Insert( nSize, aBaseFontStack.Count() );
 }
 
@@ -3563,7 +3544,7 @@ void SwHTMLParser::EndBasefontAttr()
 {
 	EndTag( HTML_BASEFONT_ON );
 
-	// Stack-Unterlauf in Tabellen vermeiden
+	// Avoid stack underflow in tables
 	if( aBaseFontStack.Count() > nBaseFontStMin )
 		aBaseFontStack.Remove( aBaseFontStack.Count()-1, 1 );
 }
@@ -3581,8 +3562,8 @@ void SwHTMLParser::NewFontAttr( int nToken )
 
 	String aFace, aId, aStyle, aClass, aLang, aDir;
 	Color aColor;
-	sal_uLong nFontHeight = 0;	// tatsaechlich einzustellende Font-Hoehe
-	sal_uInt16 nSize = 0;		// Fontgroesse in Netscape-Notation (1-7)
+	sal_uLong nFontHeight = 0;	// font height to be effectively set
+	sal_uInt16 nSize = 0;		// Font size in Netscape-Notation (1-7)
 	sal_Bool bColor = sal_False;
 
 	const HTMLOptions *pHTMLOptions = GetOptions();
@@ -3641,16 +3622,15 @@ void SwHTMLParser::NewFontAttr( int nToken )
 
 	if( HTML_FONT_ON != nToken )
 	{
-		// HTML_BIGPRINT_ON oder HTML_SMALLPRINT_ON
+		// HTML_BIGPRINT_ON or HTML_SMALLPRINT_ON
 
-		// in Ueberschriften bestimmt die aktuelle Ueberschrift
-		// die Font-Hoehe und nicht BASEFONT
+		// in headings, the current heading determines
+		// the font height and not BASEFONT
 		sal_uInt16 nPoolId = GetCurrFmtColl()->GetPoolFmtId();
 		if( (nPoolId>=RES_POOLCOLL_HEADLINE1 &&
 			 nPoolId<=RES_POOLCOLL_HEADLINE6) )
 		{
-			// wenn die Schriftgroesse in der Ueberschrift noch
-			// nicht veraendert ist, die aus der Vorlage nehmen
+			// if the font size in the heading is not yet changed, take the one from the template.
 			if( nFontStHeadStart==aFontStack.Count() )
                 nFontSize = static_cast< sal_uInt16 >(6 - (nPoolId - RES_POOLCOLL_HEADLINE1));
 		}
@@ -3662,8 +3642,7 @@ void SwHTMLParser::NewFontAttr( int nToken )
 		else
 			nSize = ( nFontSize>1 ? nFontSize-1 : 1 );
 
-		// in Ueberschriften wird die neue Fonthoehe wenn moeglich aus
-		// den Vorlagen geholt.
+		// in headlines, the new font height will be taken templates.
 		if( nPoolId && nSize>=1 && nSize <=6 )
 			nFontHeight =
 				pCSS1Parser->GetTxtCollFromPool(
@@ -3675,8 +3654,8 @@ void SwHTMLParser::NewFontAttr( int nToken )
 	ASSERT( !nSize == !nFontHeight, "HTML-Font-Size != Font-Height" );
 
 	String aFontName, aStyleName;
-	FontFamily eFamily = FAMILY_DONTKNOW;	// Family und Pitch,
-	FontPitch ePitch = PITCH_DONTKNOW;		// falls nicht gefunden
+	FontFamily eFamily = FAMILY_DONTKNOW; // Family and Pitch,
+	FontPitch ePitch = PITCH_DONTKNOW; // in case it is not found
 	rtl_TextEncoding eEnc = gsl_getSystemTextEncoding();
 
 	if( aFace.Len() && !pCSS1Parser->IsIgnoreFontFamily() )
@@ -3721,10 +3700,10 @@ void SwHTMLParser::NewFontAttr( int nToken )
 	}
 
 
-	// einen neuen Kontext anlegen
+	// set up a new context
     _HTMLAttrContext *pCntxt = new _HTMLAttrContext( static_cast< sal_uInt16 >(nToken) );
 
-	// Styles parsen
+	// parse styles
 	if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) )
 	{
 		SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
@@ -3781,7 +3760,7 @@ void SwHTMLParser::NewFontAttr( int nToken )
 		}
 	}
 
-	// den Kontext merken
+	// memorize context
 	PushContext( pCntxt );
 
 	aFontStack.Insert( nSize, aFontStack.Count() );
@@ -3791,7 +3770,7 @@ void SwHTMLParser::EndFontAttr( int nToken )
 {
 	EndTag( nToken );
 
-	// Stack-Unterlauf in Tabellen vermeiden
+	// Avoid stack underflow in tables
 	if( aFontStack.Count() > nFontStMin )
 		aFontStack.Remove( aFontStack.Count()-1, 1 );
 }
@@ -3835,14 +3814,14 @@ void SwHTMLParser::NewPara()
 		}
 	}
 
-	// einen neuen Kontext anlegen
+	// set up a new context
 	_HTMLAttrContext *pCntxt =
 		aClass.Len() ? new _HTMLAttrContext( HTML_PARABREAK_ON,
 											 RES_POOLCOLL_TEXT, aClass )
 					 : new _HTMLAttrContext( HTML_PARABREAK_ON );
 
-	// Styles parsen (Class nicht beruecksichtigen. Das geht nur, solange
-	// keine der CSS1-Properties der Klasse hart formatiert werden muss!!!)
+	// parse styles (ignore Class. This only works as long as
+	// none of the CSS1 properties of the class need to be forcibly formatted!!!)
 	if( HasStyleOptions( aStyle, aId, aEmptyStr, &aLang, &aDir ) )
 	{
 		SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
@@ -3851,7 +3830,7 @@ void SwHTMLParser::NewPara()
 		if( ParseStyleOptions( aStyle, aId, aEmptyStr, aItemSet, aPropInfo, &aLang, &aDir ) )
 		{
 			ASSERT( !aClass.Len() || !pCSS1Parser->GetClass( aClass ),
-					"Class wird nicht beruecksichtigt" );
+					"Class will not be considered" );
 			DoPositioning( aItemSet, aPropInfo, pCntxt );
 			InsertAttrs( aItemSet, aPropInfo, pCntxt );
 		}
@@ -3860,16 +3839,16 @@ void SwHTMLParser::NewPara()
 	if( SVX_ADJUST_END != eParaAdjust )
         InsertAttr( &aAttrTab.pAdjust, SvxAdjustItem(eParaAdjust, RES_PARATR_ADJUST), pCntxt );
 
-	// und auf den Stack packen
+	// push on stack
 	PushContext( pCntxt );
 
-	// die aktuelle Vorlage oder deren Attribute setzen
+	// set the current template or its attributes
 	SetTxtCollAttrs( aClass.Len() ? pCntxt : 0 );
 
-	// Laufbalkenanzeige
+	// progress bar
 	ShowStatline();
 
-	ASSERT( !nOpenParaToken, "Jetzt geht ein offenes Absatz-Element verloren" );
+	ASSERT( !nOpenParaToken, "Now an open paragraph element is lost" );
 	nOpenParaToken = HTML_PARABREAK_ON;
 }
 
@@ -3880,10 +3859,10 @@ void SwHTMLParser::EndPara( sal_Bool bReal )
 #ifdef DBG_UTIL
 		const SwNumRule *pNumRule = pPam->GetNode()->GetTxtNode()->GetNumRule();
 #endif
-		ASSERT( pNumRule, "Wo ist die Numrule geblieben" );
+		ASSERT( pNumRule, "Where has the Numrule gone" );
 	}
 
-	// leere Absaetze werden von Netscape uebersprungen, von uns jetzt auch
+	// empty paragraphs are skipped by Netscape, now also by us
 	if( bReal )
 	{
 		if( pPam->GetPoint()->nContent.GetIndex() )
@@ -3892,16 +3871,16 @@ void SwHTMLParser::EndPara( sal_Bool bReal )
 			AddParSpace();
 	}
 
-	// wenn ein DD oder DT offen war, handelt es sich um eine
-	// implizite Def-Liste, die jetzt beendet werden muss
+	// if a DD or DT was open, it is an
+	// implicit def list that must now be terminated.
 	if( (nOpenParaToken==HTML_DT_ON || nOpenParaToken==HTML_DD_ON) &&
 		nDefListDeep)
 	{
 		nDefListDeep--;
 	}
 
-	// den Kontext vom Stack holen. Er kann auch von einer implizit
-	// geoeffneten Definitionsliste kommen
+	// get the context from the stack. It can also come from an implicitly
+	// open definition list.
 	_HTMLAttrContext *pCntxt =
         PopContext( static_cast< sal_uInt16 >(nOpenParaToken ? (nOpenParaToken & ~1)
                                    : HTML_PARABREAK_ON) );
@@ -3910,11 +3889,11 @@ void SwHTMLParser::EndPara( sal_Bool bReal )
 	if( pCntxt )
 	{
 		EndContext( pCntxt );
-		SetAttr();	// Absatz-Atts wegen JavaScript moeglichst schnell setzen
+		SetAttr();	// set paragraph-atts as fast as possible because of JavaScript
 		delete pCntxt;
 	}
 
-	// und die bisherige Vorlage neu setzen
+	// and reset previous template
 	if( bReal )
 		SetTxtCollAttrs();
 
@@ -3955,13 +3934,13 @@ void SwHTMLParser::NewHeading( int nToken )
 		}
 	}
 
-	// einen neuen Absatz aufmachen
+	// create new paragraph
 	if( pPam->GetPoint()->nContent.GetIndex() )
 		AppendTxtNode( AM_SPACE );
 	else
 		AddParSpace();
 
-	// die passende Vorlage suchen
+	// search matching template
 	sal_uInt16 nTxtColl;
 	switch( nToken )
 	{
@@ -3974,10 +3953,10 @@ void SwHTMLParser::NewHeading( int nToken )
 	default:					nTxtColl = RES_POOLCOLL_STANDARD;	break;
 	}
 
-	// den Kontext anlegen
+	// set context
     _HTMLAttrContext *pCntxt = new _HTMLAttrContext( static_cast< sal_uInt16 >(nToken), nTxtColl, aClass );
 
-	// Styles parsen (zu Class siehe auch NewPara)
+	// parse styles (to Class see NewPara)
 	if( HasStyleOptions( aStyle, aId, aEmptyStr, &aLang, &aDir ) )
 	{
 		SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
@@ -3986,7 +3965,7 @@ void SwHTMLParser::NewHeading( int nToken )
 		if( ParseStyleOptions( aStyle, aId, aEmptyStr, aItemSet, aPropInfo, &aLang, &aDir ) )
 		{
 			ASSERT( !aClass.Len() || !pCSS1Parser->GetClass( aClass ),
-					"Class wird nicht beruecksichtigt" );
+					"Class will not be considered" );
 			DoPositioning( aItemSet, aPropInfo, pCntxt );
 			InsertAttrs( aItemSet, aPropInfo, pCntxt );
 		}
@@ -3995,27 +3974,27 @@ void SwHTMLParser::NewHeading( int nToken )
 	if( SVX_ADJUST_END != eParaAdjust )
         InsertAttr( &aAttrTab.pAdjust, SvxAdjustItem(eParaAdjust, RES_PARATR_ADJUST), pCntxt );
 
-	// udn auf den Stack packen
+	// push to Stack
 	PushContext( pCntxt );
 
-	// und die Vorlage oder deren Attribute setzen
+	// and set the template or its attributes
 	SetTxtCollAttrs( pCntxt );
 
 	nFontStHeadStart = aFontStack.Count();
 
-	// Laufbalkenanzeige
+	// progress bar
 	ShowStatline();
 }
 
 void SwHTMLParser::EndHeading()
 {
-	// einen neuen Absatz aufmachen
+    // create a new paragraph
 	if( pPam->GetPoint()->nContent.GetIndex() )
 		AppendTxtNode( AM_SPACE );
 	else
 		AddParSpace();
 
-	// Kontext zu dem Token suchen und vom Stack holen
+	// get context of current token from stack
 	_HTMLAttrContext *pCntxt = 0;
 	sal_uInt16 nPos = aContexts.Count();
 	while( !pCntxt && nPos>nContextStMin )
@@ -4034,15 +4013,15 @@ void SwHTMLParser::EndHeading()
 		}
 	}
 
-	// und noch Attribute beenden
+	// and set attributes end
 	if( pCntxt )
 	{
 		EndContext( pCntxt );
-		SetAttr();	// Absatz-Atts wegen JavaScript moeglichst schnell setzen
+		SetAttr();	// set paragraph-atts as fast as possible because of JavaScript
 		delete pCntxt;
 	}
 
-	// die bisherige Vorlage neu setzen
+	// reset the previous template
 	SetTxtCollAttrs();
 
 	nFontStHeadStart = nFontStMin;
@@ -4078,15 +4057,15 @@ void SwHTMLParser::NewTxtFmtColl( int nToken, sal_uInt16 nColl )
 		}
 	}
 
-	// einen neuen Absatz aufmachen
+	// create new paragraph
 	SwHTMLAppendMode eMode = AM_NORMAL;
 	switch( nToken )
 	{
 	case HTML_LISTING_ON:
 	case HTML_XMP_ON:
-		// Diese beiden Tags werden jetzt auf die PRE-Vorlage gemappt.
-		// Fuer dem Fall, dass ein CLASS angegeben ist, loeschen wir
-		// es damit wir nicht die CLASS der PRE-Vorlage bekommen.
+		// These two tags are now mapped to the PRE template.
+		// In the case that a CLASS is specified, we delete
+		// it so we don't get the CLASS of the PRE template.
 		aClass = aEmptyStr;
 	case HTML_BLOCKQUOTE_ON:
 	case HTML_BLOCKQUOTE30_ON:
@@ -4094,7 +4073,7 @@ void SwHTMLParser::NewTxtFmtColl( int nToken, sal_uInt16 nColl )
 		eMode = AM_SPACE;
 		break;
 	case HTML_ADDRESS_ON:
-		eMode = AM_NOSPACE;	// ADDRESS kann auf einen <P> ohne </P> folgen
+		eMode = AM_NOSPACE;	// ADDRESS may follow a <P> without </P>.
 		break;
 	case HTML_DT_ON:
 	case HTML_DD_ON:
@@ -4109,10 +4088,10 @@ void SwHTMLParser::NewTxtFmtColl( int nToken, sal_uInt16 nColl )
 	else if( AM_SPACE==eMode )
 		AddParSpace();
 
-	// ... und in einem Kontext merken
+	// ... and remember in a context
     _HTMLAttrContext *pCntxt = new _HTMLAttrContext( static_cast< sal_uInt16 >(nToken), nColl, aClass );
 
-	// Styles parsen (zu Class siehe auch NewPara)
+	// parse styles (to Class see NewPara)
 	if( HasStyleOptions( aStyle, aId, aEmptyStr, &aLang, &aDir ) )
 	{
 		SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
@@ -4121,7 +4100,7 @@ void SwHTMLParser::NewTxtFmtColl( int nToken, sal_uInt16 nColl )
 		if( ParseStyleOptions( aStyle, aId, aEmptyStr, aItemSet, aPropInfo, &aLang, &aDir ) )
 		{
 			ASSERT( !aClass.Len() || !pCSS1Parser->GetClass( aClass ),
-					"Class wird nicht beruecksichtigt" );
+					"Class will not be considered" );
 			DoPositioning( aItemSet, aPropInfo, pCntxt );
 			InsertAttrs( aItemSet, aPropInfo, pCntxt );
 		}
@@ -4129,10 +4108,10 @@ void SwHTMLParser::NewTxtFmtColl( int nToken, sal_uInt16 nColl )
 
 	PushContext( pCntxt );
 
-	// die neue Vorlage setzen
+	// set the new template
 	SetTxtCollAttrs( pCntxt );
 
-	// Laufbalkenanzeige aktualisieren
+	// update progress bar
 	ShowStatline();
 }
 
@@ -4162,18 +4141,18 @@ void SwHTMLParser::EndTxtFmtColl( int nToken )
 	else if( AM_SPACE==eMode )
 		AddParSpace();
 
-	// den aktuellen Kontext vom Stack holen
+	// get the current context from the stack
     _HTMLAttrContext *pCntxt = PopContext( static_cast< sal_uInt16 >(nToken & ~1) );
 
-	// und noch Attribute beenden
+	// and set end attribute
 	if( pCntxt )
 	{
 		EndContext( pCntxt );
-		SetAttr();	// Absatz-Atts wegen JavaScript moeglichst schnell setzen
+		SetAttr();	// set paragraph-atts as fast as possible because of JavaScript
 		delete pCntxt;
 	}
 
-	// und die bisherige Vorlage setzen
+	// and set the previous template
 	SetTxtCollAttrs();
 }
 
@@ -4207,14 +4186,14 @@ void SwHTMLParser::NewDefList()
 		}
 	}
 
-	// einen neuen Absatz aufmachen
+	// create new paragraph
 	sal_Bool bSpace = (GetNumInfo().GetDepth() + nDefListDeep) == 0;
 	if( pPam->GetPoint()->nContent.GetIndex() )
 		AppendTxtNode( bSpace ? AM_SPACE : AM_SOFTNOSPACE );
 	else if( bSpace )
 		AddParSpace();
 
-	// ein Level mehr
+	// one more level
 	nDefListDeep++;
 
 
@@ -4239,22 +4218,21 @@ void SwHTMLParser::NewDefList()
 	}
 
 
-	// ... und in einem Kontext merken
+	// ... and remember in a context
 	_HTMLAttrContext *pCntxt = new _HTMLAttrContext( HTML_DEFLIST_ON );
 
-	// darin auch die Raender merken
+	// remeber the borders, too
 	sal_uInt16 nLeft=0, nRight=0;
 	short nIndent=0;
 	GetMarginsFromContext( nLeft, nRight, nIndent );
 
-	// Die Einrueckung, die sich schon aus einem DL-ergibt, entspricht der
-	// eines DT auf dem aktuellen Level, und die entspricht der eines
-	// DD auf dem Level davor. Fue einen Level >=2 muss also ein DD-Abstand
-	// hinzugefuegt werden
+	// The indent, which already results from a DL-, corresponds to that
+	// of a DT on the current level, and that corresponds to that of a
+	// DD on the level before. So for a level >=2 a DD distance must be added
 	if( !bInDD && nDefListDeep > 1 )
 	{
 
-		// und den der DT-Vorlage des aktuellen Levels
+		// and that of the DT template of the current level
 		SvxLRSpaceItem rLRSpace =
 			pCSS1Parser->GetTxtFmtColl( RES_POOLCOLL_HTML_DD, aEmptyStr )
 					   ->GetLRSpace();
@@ -4263,7 +4241,7 @@ void SwHTMLParser::NewDefList()
 
 	pCntxt->SetMargins( nLeft, nRight, nIndent );
 
-	// Styles parsen
+	// parse styles
 	if( HasStyleOptions( aStyle, aId, aClass, &aLang, &aDir ) )
 	{
 		SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
@@ -4278,7 +4256,7 @@ void SwHTMLParser::NewDefList()
 
 	PushContext( pCntxt );
 
-	// die Attribute der neuen Vorlage setzen
+	// set the attributes of the new template
 	if( nDefListDeep > 1 )
 		SetTxtCollAttrs( pCntxt );
 }
@@ -4291,28 +4269,28 @@ void SwHTMLParser::EndDefList()
 	else if( bSpace )
 		AddParSpace();
 
-	// ein Level weniger
+	// reduce one level
 	if( nDefListDeep > 0 )
 		nDefListDeep--;
 
-	// den aktuellen Kontext vom Stack holen
+	// get the current context from the stack
 	_HTMLAttrContext *pCntxt = PopContext( HTML_DEFLIST_ON );
 
-	// und noch Attribute beenden
+	// and set end Attribute
 	if( pCntxt )
 	{
 		EndContext( pCntxt );
-		SetAttr();	// Absatz-Atts wegen JavaScript moeglichst schnell setzen
+		SetAttr();	// set paragraph-atts as fast as possible because of JavaScript
 		delete pCntxt;
 	}
 
-	// und Vorlage setzen
+	// and set Template
 	SetTxtCollAttrs();
 }
 
 void SwHTMLParser::NewDefListItem( int nToken )
 {
-	// festellen, ob das DD/DT in einer DL vorkommt
+	// determine whether the DD/DT occurs in a DL
 	sal_Bool bInDefList = sal_False, bNotInDefList = sal_False;
 	sal_uInt16 nPos = aContexts.Count();
 	while( !bInDefList && !bNotInDefList && nPos>nContextStMin )
@@ -4332,12 +4310,12 @@ void SwHTMLParser::NewDefListItem( int nToken )
 		}
 	}
 
-	// wenn nicht, implizit eine neue DL aufmachen
+	// if not, implicitly open a new DL
 	if( !bInDefList )
 	{
 		nDefListDeep++;
 		ASSERT( !nOpenParaToken,
-				"Jetzt geht ein offenes Absatz-Element verloren" );
+				"Now an open paragraph element is lost" );
         nOpenParaToken = static_cast< sal_uInt16 >(nToken);
 	}
 
@@ -4348,11 +4326,11 @@ void SwHTMLParser::NewDefListItem( int nToken )
 void SwHTMLParser::EndDefListItem( int nToken, sal_Bool bSetColl,
 								   sal_Bool /*bLastPara*/ )
 {
-	// einen neuen Absatz aufmachen
+	// create new paragraph
 	if( !nToken && pPam->GetPoint()->nContent.GetIndex() )
 		AppendTxtNode( AM_SOFTNOSPACE );
 
-	// Kontext zu dem Token suchen und vom Stack holen
+	// Search context to the token and get it from the stack
 	nToken &= ~1;
 	_HTMLAttrContext *pCntxt = 0;
 	sal_uInt16 nPos = aContexts.Count();
@@ -4370,26 +4348,26 @@ void SwHTMLParser::EndDefListItem( int nToken, sal_Bool bSetColl,
 			}
 			break;
 		case HTML_DEFLIST_ON:
-			// keine DD/DT ausserhalb der aktuelen DefListe betrachten
+			// do not consider DD/DT outside the current def list
 		case HTML_DIRLIST_ON:
 		case HTML_MENULIST_ON:
 		case HTML_ORDERLIST_ON:
 		case HTML_UNORDERLIST_ON:
-			// und auch nicht ausserhalb einer anderen Liste
+			// and also not outside of another list
 			nPos = nContextStMin;
 			break;
 		}
 	}
 
-	// und noch Attribute beenden
+	// and set end Attribute
 	if( pCntxt )
 	{
 		EndContext( pCntxt );
-		SetAttr();	// Absatz-Atts wegen JavaScript moeglichst schnell setzen
+		SetAttr();	// set paragraph-atts as fast as possible because of JavaScript
 		delete pCntxt;
 	}
 
-	// und die bisherige Vorlage setzen
+	// and set the previous template
 	if( bSetColl )
 		SetTxtCollAttrs();
 }
@@ -4399,11 +4377,11 @@ void SwHTMLParser::EndDefListItem( int nToken, sal_Bool bSetColl,
 sal_Bool SwHTMLParser::HasCurrentParaFlys( sal_Bool bNoSurroundOnly,
 									   sal_Bool bSurroundOnly ) const
 {
-	// bNoSurroundOnly:		Der Absatz enthaelt mindestens einen Rahmen
-	//						ohne Umlauf
-	// bSurroundOnly:		Der Absatz enthaelt mindestens einen Rahmen
-	//						mit Umlauf aber keinen ohne Umlauf
-	// sonst:				Der Absatz enthaelt irgendeinen Rahmen
+	// bNoSurroundOnly: The paragraph contains at least one frame
+	//                  without text flow
+	// bSurroundOnly:   The paragraph contains at least one frame
+	//                  with a text flow but none without a text flow
+	// else:            the paragraph contains at least one frame
 	SwNodeIndex& rNodeIdx = pPam->GetPoint()->nNode;
 
 	const SwSpzFrmFmts& rFrmFmtTbl = *pDoc->GetSpzFrmFmts();
@@ -4413,12 +4391,12 @@ sal_Bool SwHTMLParser::HasCurrentParaFlys( sal_Bool bNoSurroundOnly,
     {
         SwFrmFmt *const pFmt = rFrmFmtTbl[i];
         SwFmtAnchor const*const pAnchor = &pFmt->GetAnchor();
-		// Ein Rahmen wurde gefunden, wenn
-		// - er absatzgebunden ist, und
-		// - im aktuellen Absatz verankert ist, und
-		//   - jeder absatzgebunene Rahmen zaehlt, oder
-		//   - (nur Rahmen oder umlauf zaehlen und ) der Rahmen keinen
-		//     Umlauf besitzt
+		// A frame has been found if
+		// - it is paragraph-bound, and
+		// - it is anchored in the current paragraph, and
+		//    - every paragraph-bound frame counts, or
+		//    - (only frames or text flow counts) the frame has no
+		//      text flow
         SwPosition const*const pAPos = pAnchor->GetCntntAnchor();
         if (pAPos &&
             ((FLY_AT_PARA == pAnchor->GetAnchorId()) ||
@@ -4432,10 +4410,9 @@ sal_Bool SwHTMLParser::HasCurrentParaFlys( sal_Bool bNoSurroundOnly,
 			}
 			else
 			{
-				// fix #42282#: Wenn Rahmen mit Umlauf gesucht sind,
-				// auch keine mit Durchlauf beachten. Dabei handelt es
-				// sich (noch) um HIDDEN-Controls, und denen weicht man
-				// besser auch nicht aus.
+				// fix #42282#: If frames with circulation are wanted,
+				// do not consider any with circulation either. These are
+				// are (still) HIDDEN controls, and it's better not to avoid them.
 				SwSurround eSurround = pFmt->GetSurround().GetSurround();
 				if( bNoSurroundOnly )
 				{
@@ -4455,8 +4432,8 @@ sal_Bool SwHTMLParser::HasCurrentParaFlys( sal_Bool bNoSurroundOnly,
 					else if( SURROUND_THROUGHT!=eSurround )
 					{
 						bFound = sal_True;
-						// weitersuchen: Es koennten ja noch welche ohne
-						// Umlauf kommen ...
+						// continue searching: There might still be some without
+						// circulation ...
 					}
 				}
 			}
@@ -4468,7 +4445,7 @@ sal_Bool SwHTMLParser::HasCurrentParaFlys( sal_Bool bNoSurroundOnly,
 
 /*  */
 
-// die speziellen Methoden zum Einfuegen von Objecten
+// the special methods for inserting objects
 
 const SwFmtColl *SwHTMLParser::GetCurrFmtColl() const
 {
@@ -4479,16 +4456,16 @@ const SwFmtColl *SwHTMLParser::GetCurrFmtColl() const
 
 void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 {
-	SwTxtFmtColl *pCollToSet = 0;	// die zu setzende Vorlage
-	SfxItemSet *pItemSet = 0;		// der Set fuer harte Attrs
+	SwTxtFmtColl *pCollToSet = 0;	// the template to be set
+	SfxItemSet *pItemSet = 0;		// the set for hard attributes
 	sal_uInt16 nTopColl = pContext ? pContext->GetTxtFmtColl() : 0;
 	const String& rTopClass = pContext ? pContext->GetClass() : (const String&) aEmptyStr;
 	sal_uInt16 nDfltColl = RES_POOLCOLL_TEXT;
 
-	sal_Bool bInPRE=sal_False;							// etwas Kontext Info
+	sal_Bool bInPRE=sal_False; // some context info
 
-	sal_uInt16 nLeftMargin = 0, nRightMargin = 0;	// die Einzuege und
-	short nFirstLineIndent = 0;					// Abstaende
+	sal_uInt16 nLeftMargin = 0, nRightMargin = 0; // the margins and
+	short nFirstLineIndent = 0; // Indent
 	sal_uInt16 i;
 
 	for( i = nContextStAttrMin; i < aContexts.Count(); i++ )
@@ -4498,9 +4475,9 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 		sal_uInt16 nColl = pCntxt->GetTxtFmtColl();
 		if( nColl )
 		{
-			// Es gibt eine Vorlage, die zu setzen ist. Dann
-			// muss zunaechst einmal entschieden werden,
-			// ob die Vorlage auch gesetzt werden kann
+			// There is a template to be set. Then
+			// a decision has to be made first,
+			// whether the template can also be set
 			sal_Bool bSetThis = sal_True;
 			switch( nColl )
 			{
@@ -4508,14 +4485,14 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 				bInPRE = sal_True;
 				break;
 			case sal_uInt16(RES_POOLCOLL_TEXT):
-				// <TD><P CLASS=xxx> muss TD.xxx werden
+				// <TD><P CLASS=xxx> must become TD.xxx
 				if( nDfltColl==RES_POOLCOLL_TABLE ||
 					nDfltColl==RES_POOLCOLL_TABLE_HDLN )
 					nColl = nDfltColl;
 				break;
 			case sal_uInt16(RES_POOLCOLL_HTML_HR):
-				// <HR> auch in <PRE> als Vorlage setzen, sonst kann man sie
-				// nicht mehr exportieren
+				// <HR> also set in <PRE> as template, otherwise you can't
+				// no longer export
 				break;
 			default:
 				if( bInPRE )
@@ -4528,14 +4505,11 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 
 			if( bSetThis )
 			{
-				// wenn jetzt eine andere Vorlage gesetzt werden soll als
-				// bisher, muss die bishere Vorlage durch harte Attributierung
-				// ersetzt werden
-
+				// if now another template should be set than
+				// previously, the previous template must be replaced by hard attributes
 				if( pCollToSet )
 				{
-					// die Attribute, die die bisherige Vorlage setzt
-					// hart einfuegen
+					// Force the attributes set by the previous template
 					if( !pItemSet )
 						pItemSet = new SfxItemSet( pCollToSet->GetAttrSet() );
 					else
@@ -4546,9 +4520,8 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 						aItemSet.Set( rCollSet );
 						pItemSet->Put( aItemSet );
 					}
-					// aber die Attribute, die aktuelle Vorlage setzt
-					// entfernen, weil sie sonst spaeter ueberschrieben
-					// werden
+					// but remove the attributes that the current template sets
+					// because otherwise they will be overwritten later.
 					pItemSet->Differentiate( pNewColl->GetAttrSet() );
 				}
 
@@ -4556,7 +4529,7 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 			}
 			else
 			{
-				// hart Attributieren
+				// Force attributes
 				if( !pItemSet )
 					pItemSet = new SfxItemSet( pNewColl->GetAttrSet() );
 				else
@@ -4571,13 +4544,13 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 		}
 		else
 		{
-			// vielliecht gibt es ja eine Default-Vorlage?
+			// Maybe there is a default template?
 			nColl = pCntxt->GetDfltTxtFmtColl();
 			if( nColl )
 				nDfltColl = nColl;
 		}
 
-		// ggf. neue Absatz-Einzuege holen
+		// get new paragraph inserts if necessary
 		if( pCntxt->IsLRSpaceChanged() )
 		{
 			sal_uInt16 nLeft=0, nRight=0;
@@ -4588,11 +4561,11 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 		}
 	}
 
-	// wenn im aktuellen Kontext eine neue Vorlage gesetzt werden soll,
-	// muessen deren Absatz-Abstaende noch in den Kontext eingetragen werden
+	// if a new template is to be set in the current context,
+	// its paragraph spacing must still be entered into the context.
 	if( pContext && nTopColl )
 	{
-		// <TD><P CLASS=xxx> muss TD.xxx werden
+	    // <TD><P CLASS=xxx> must become TD.xxx
 		if( nTopColl==RES_POOLCOLL_TEXT &&
 			(nDfltColl==RES_POOLCOLL_TABLE ||
 			 nDfltColl==RES_POOLCOLL_TABLE_HDLN) )
@@ -4611,8 +4584,8 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 			sal_Int32 nRight = pLRItem->GetRight();
 			nFirstLineIndent = pLRItem->GetTxtFirstLineOfst();
 
-			// In Definitions-Listen enthalten die Abstaende auch die der
-			// vorhergehenden Level
+			// In definition lists, the distances also include those of the
+			// previous level
 			if( RES_POOLCOLL_HTML_DD == nTopColl )
 			{
 				const SvxLRSpaceItem& rDTLRSpace = pCSS1Parser
@@ -4627,7 +4600,7 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 				nRight = 0;
 			}
 
-			// die Absatz-Abstaende addieren sich
+			// the paragraph distances add up
             nLeftMargin = nLeftMargin + static_cast< sal_uInt16 >(nLeft);
             nRightMargin = nRightMargin + static_cast< sal_uInt16 >(nRight);
 
@@ -4642,7 +4615,7 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 		}
 	}
 
-	// wenn gar keine Vorlage im Kontext gesetzt ist, Textkoerper nehmen
+	// if no template is set in context, take text body
 	if( !pCollToSet )
 	{
 		pCollToSet = pCSS1Parser->GetTxtCollFromPool( nDfltColl );
@@ -4655,7 +4628,7 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 			nFirstLineIndent = rLRItem.GetTxtFirstLineOfst();
 	}
 
-	// bisherige harte Attributierung des Absatzes entfernen
+	// remove previous hard attribution of the paragraph
 	if( aParaAttrs.Count() )
 	{
 		for( i=0; i<aParaAttrs.Count(); i++ )
@@ -4664,10 +4637,10 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 		aParaAttrs.Remove( 0, aParaAttrs.Count() );
 	}
 
-	// Die Vorlage setzen
+	// Set the template
 	pDoc->SetTxtFmtColl( *pPam, pCollToSet );
 
-	// ggf. noch den Absatz-Einzug korrigieren
+	// correct the paragraph indentation if necessary
 	const SvxLRSpaceItem& rLRItem = pCollToSet->GetLRSpace();
 	sal_Bool bSetLRSpace;
 
@@ -4692,7 +4665,7 @@ void SwHTMLParser::SetTxtCollAttrs( _HTMLAttrContext *pContext )
 		}
 	}
 
-	// und nun noch die Attribute setzen
+	// and now set the attributes
 	if( pItemSet )
 	{
 		InsertParaAttrs( *pItemSet );
@@ -4730,15 +4703,15 @@ void SwHTMLParser::NewCharFmt( int nToken )
 		}
 	}
 
-	// einen neuen Kontext anlegen
+	// set up a new context
     _HTMLAttrContext *pCntxt = new _HTMLAttrContext( static_cast< sal_uInt16 >(nToken) );
 
-	// die Vorlage setzen und im Kontext merken
+	// Set the template and store it in the context
     SwCharFmt* pCFmt = pCSS1Parser->GetChrFmt( static_cast< sal_uInt16 >(nToken), aClass );
-	ASSERT( pCFmt, "keine Zeichenvorlage zu Token gefunden" );
+	ASSERT( pCFmt, "no character template found for token" );
 
 
-	// Styles parsen (zu Class siehe auch NewPara)
+	// parse styles (to Class see NewPara)
 	if( HasStyleOptions( aStyle, aId, aEmptyStr, &aLang, &aDir ) )
 	{
 		SfxItemSet aItemSet( pDoc->GetAttrPool(), pCSS1Parser->GetWhichMap() );
@@ -4753,13 +4726,13 @@ void SwHTMLParser::NewCharFmt( int nToken )
 		}
 	}
 
-	// Zeichen-Vorlagen werden in einem eigenen Stack gehalten und
-	// koennen nie durch Styles eingefuegt werden. Das Attribut ist deshalb
-	// auch gar nicht im CSS1-Which-Range enthalten
+	// Character templates are kept in their own stack and
+	// can never be inserted by styles. The attribute is therefore
+	// not included in the CSS1 Which range at all.
 	if( pCFmt )
 		InsertAttr( &aAttrTab.pCharFmts, SwFmtCharFmt( pCFmt ), pCntxt );
 
-	// den Kontext merken
+	// memorize context
 	PushContext( pCntxt );
 }
 
@@ -4768,7 +4741,7 @@ void SwHTMLParser::NewCharFmt( int nToken )
 
 void SwHTMLParser::InsertSpacer()
 {
-	// und es ggf. durch die Optionen veraendern
+	// and change it by the options if necessary
 	String aId;
     sal_Int16 eVertOri = text::VertOrientation::TOP;
     sal_Int16 eHoriOri = text::HoriOrientation::NONE;
@@ -4799,17 +4772,17 @@ void SwHTMLParser::InsertSpacer()
                                   eHoriOri );
 			break;
 		case HTML_O_WIDTH:
-			// erstmal nur als Pixelwerte merken!
+			// remember only as pixel values for now!
 			bPrcWidth = (pOption->GetString().Search('%') != STRING_NOTFOUND);
 			aSize.Width() = (long)pOption->GetNumber();
 			break;
 		case HTML_O_HEIGHT:
-			// erstmal nur als Pixelwerte merken!
+			// remember only as pixel values for now!
 			bPrcHeight = (pOption->GetString().Search('%') != STRING_NOTFOUND);
 			aSize.Height() = (long)pOption->GetNumber();
 			break;
 		case HTML_O_SIZE:
-			// erstmal nur als Pixelwerte merken!
+			// remember only as pixel values for now!
 			nSize = pOption->GetNumber();
 			break;
 		}
@@ -4819,18 +4792,18 @@ void SwHTMLParser::InsertSpacer()
 	{
 	case HTML_SPTYPE_BLOCK:
 		{
-			// einen leeren Textrahmen anlegen
+			// create an empty text frame
 
-			// den Itemset holen
+			// get the itemset
 			SfxItemSet aFrmSet( pDoc->GetAttrPool(),
 								RES_FRMATR_BEGIN, RES_FRMATR_END-1 );
 			if( !IsNewDoc() )
 				Reader::ResetFrmFmtAttrs( aFrmSet );
 
-			// den Anker und die Ausrichtung setzen
+			// set the anchor and the alignment
 			SetAnchorAndAdjustment( eVertOri, eHoriOri, aFrmSet );
 
-			// und noch die Groesse des Rahmens
+			// also the size of the frame
 			Size aDfltSz( MINFLY, MINFLY );
 			Size aSpace( 0, 0 );
 			SfxItemSet aDummyItemSet( pDoc->GetAttrPool(),
@@ -4841,17 +4814,17 @@ void SwHTMLParser::InsertSpacer()
 						aDummyItemSet, aDummyPropInfo, aFrmSet );
 			SetSpace( aSpace, aDummyItemSet, aDummyPropInfo, aFrmSet );
 
-			// den Inhalt schuetzen
+			// protect the content
             SvxProtectItem aProtectItem( RES_PROTECT) ;
 			aProtectItem.SetCntntProtect( sal_True );
 			aFrmSet.Put( aProtectItem );
 
-			// der Rahmen anlegen
+			// create the frame
 			RndStdIds eAnchorId =
 				((const SwFmtAnchor &)aFrmSet.Get(RES_ANCHOR)).GetAnchorId();
 			SwFrmFmt *pFlyFmt = pDoc->MakeFlySection( eAnchorId,
 											pPam->GetPoint(), &aFrmSet );
-			// Ggf Frames anlegen und auto-geb. Rahmen registrieren
+			// If necessary, create frames and register auto-generated frames
 			RegisterFlyFrm( pFlyFmt );
 		}
 		break;
@@ -4865,21 +4838,21 @@ void SwHTMLParser::InsertSpacer()
 											MapMode(MAP_TWIP) ).Height();
 			}
 
-			// einen Absatz-Abstand setzen
+			// set a paragraph spacing
 			SwTxtNode *pTxtNode = 0;
 			if( !pPam->GetPoint()->nContent.GetIndex() )
 			{
-				// den unteren Absatz-Abstand des vorherigen Nodes aendern,
-				// wenn moeglich
+				// change the lower paragraph spacing of the previous node,
+				// if possible
 
-				SetAttr();	// noch offene Absatz-Attribute setzen
+				SetAttr();	// Set more open paragraph attributes
 
 				pTxtNode = pDoc->GetNodes()[pPam->GetPoint()->nNode.GetIndex()-1]
 							   ->GetTxtNode();
 
-				// Wenn der Abstz davor kein Txtenode ist, dann wird jetzt
-				// ein leere Absatz angelegt, der eh schon eine Zeilenhoehe
-				// Abstand erzeugt.
+				// If the paragraph in front of it is not a txttenode, then now
+				// an empty paragraph is created which already creates a line height
+				// spacing
 				if( !pTxtNode )
 					nSize = nSize>HTML_PARSPACE ? nSize-HTML_PARSPACE : 0;
 			}
@@ -4896,15 +4869,15 @@ void SwHTMLParser::InsertSpacer()
                 NewAttr( &aAttrTab.pULSpace, SvxULSpaceItem( 0, (sal_uInt16)nSize, RES_UL_SPACE ) );
 				EndAttr( aAttrTab.pULSpace, 0, sal_False );
 
-				AppendTxtNode();	// nicht am Abstand drehen!
+				AppendTxtNode();	// do not change the distance!
 			}
 		}
 		break;
 	case HTML_SPTYPE_HORI:
 		if( nSize > 0 )
 		{
-			// wenn der Absatz noch leer ist, einen Erstzeilen-Einzug
-			// setzen, sondern Sperrschrift ueber einem Space aufspannen
+			// if the paragraph is still empty, set a first-line indentation
+			// but span blocking font over a space.
 
 			if( nSize && Application::GetDefaultDevice() )
 			{
@@ -5004,27 +4977,27 @@ void SwHTMLParser::InsertIDOption()
 
 void SwHTMLParser::InsertLineBreak()
 {
-	// <BR CLEAR=xxx> wird wie folgt behandelt:
-	// 1.) Es werden nur nur absatzgebundene Rahmen betrachtet, die
-	//     im aktuellen Absatz verankert sind.
-	// 2.) Fuer linksbuendig ausgerichtete Rahmen wird bei CLEAR=LEFT
-	//     oder ALL und auf rechtsbuendige ausgerichtete Rahmen bei
-	//     CLEAR=RIGHT oder ALL der Durchlauf wie folgt geaendert:
-	// 3.) Wenn der Absatz keinen Text enthaelt, bekommt der Rahmen keinen
-	//     Umlauf
-	// 4.) sonst erhaelt ein links ausgerichteter Rahmen eine rechten
-	//     "nur Anker" Umlauf und recht rechst ausg. Rahmen einen linken
-	//     "nur Anker" Umlauf.
-	// 5.) wenn in einem nicht-leeren Absatz der Umlauf eines Rahmens
-	//     geaendert wird, wird ein neuer Absatz aufgemacht
-	// 6.) Wenn von keinem Rahmen der Umlauf geaendert wird, wird ein
-	//     harter Zeilenumbruch eingefuegt
-
-	String aId, aStyle, aClass;			  	// die ID der Bookmark
+	// <BR CLEAR=xxx> is handled as follows:
+	// 1.) Only paragraph-bound frames are considered, which are
+	//     are anchored in the current paragraph.
+	// 2.) For left-aligned frames at CLEAR=LEFT
+	//     or ALL and for right oriented frames with
+	//     CLEAR=RIGHT or ALL the pass is changed as follows:
+	// 3.) If the paragraph contains no text, the frame gets no
+	//     text flow
+	// 4.) otherwise a left aligned frame receives a right
+	//     "anchor only" text flow and right aligned frame receives a
+	//      left "anchor only" text flow.
+	// 5.) if in a non-empty paragraph the text flow of a frame
+	//     is changed, a new paragraph is opened
+	// 6.) If the text flow is not changed by any frame, a 
+	//     hard line break is inserted
+
+	String aId, aStyle, aClass;			  	// the ID of the bookmark
 	sal_Bool bClearLeft = sal_False, bClearRight = sal_False;
-	sal_Bool bCleared = sal_False;	// wurde ein CLEAR ausgefuehrt?
+	sal_Bool bCleared = sal_False;	// was a CLEAR executed?
 
-	// dann holen wir mal die Optionen
+	// then get the options
 	const HTMLOptions *pHTMLOptions = GetOptions();
 	for( sal_uInt16 i = pHTMLOptions->Count(); i; )
 	{
@@ -5057,7 +5030,7 @@ void SwHTMLParser::InsertLineBreak()
 		}
 	}
 
-	// CLEAR wird nur fuer den aktuellen Absaetz unterstuetzt
+	// CLEAR is supported only for the current paragraph
 	if( bClearLeft || bClearRight )
 	{
 		SwNodeIndex& rNodeIdx = pPam->GetPoint()->nNode;
@@ -5103,12 +5076,12 @@ void SwHTMLParser::InsertLineBreak()
                         pFmt->SetFmtAttr( aSurround );
 						bCleared = sal_True;
 					}
-				} // Anker ist nicht im Node
-			} // Schleife ueber Fly-Frames
-		} // kein Text-Node
-	} // kein CLEAR
+				} // Anchor is not in the node
+			} // Loop over fly frames
+		} // no text node
+	} // no CLEAR
 
-	// Styles parsen
+	// parse styles
     SvxFmtBreakItem aBreakItem( SVX_BREAK_NONE, RES_BREAK );
 	sal_Bool bBreakItem = sal_False;
 	if( HasStyleOptions( aStyle, aId, aClass ) )
@@ -5136,18 +5109,18 @@ void SwHTMLParser::InsertLineBreak()
 
 	if( !bCleared && !bBreakItem )
 	{
-		// wenn kein CLEAR ausgefuehrt werden sollte oder konnte, wird
-		// ein Zeilenumbruch eingef?gt
+		// if no CLEAR should be executed or could be executed
+		// a line break is inserted
 		String sTmp( (sal_Unicode)0x0a );	// make the Mac happy :-)
         pDoc->InsertString( *pPam, sTmp );
 	}
 	else if( pPam->GetPoint()->nContent.GetIndex() )
 	{
-		// wenn ein Claer in einem nicht-leeren Absatz ausgefuehrt wurde,
-		// muss anschliessen ein neuer Absatz aufgemacht werden
-		// MIB 21.02.97: Eigentlich muesste man hier den unteren Absatz-
-		// Absatnd auf 0 drehen. Das geht aber bei sowas wie <BR ..><P>
-		// schief (>Netacpe). Deshalb lassen wir das erstmal.
+		// if a claer was executed in a non-empty paragraph,
+		// a new paragraph must be opened afterwards.
+		// MIB 21.02.97: Actually, the lower paragraph should be set to 0.
+		// But this works with something like <BR ..><P>.
+		// (>Netacpe). Therefore we leave it for now.
 		AppendTxtNode( AM_NOSPACE );
 	}
 	if( bBreakItem && SVX_BREAK_PAGE_BEFORE==aBreakItem.GetBreak() )
@@ -5171,7 +5144,7 @@ void SwHTMLParser::InsertHorzRule()
 	Color aColor;
 	String aId;
 
-	// dann holen wir mal die Optionen
+	// get the options
 	const HTMLOptions *pHTMLOptions = GetOptions();
 	for( sal_uInt16 i = pHTMLOptions->Count(); i; )
 	{
@@ -5189,7 +5162,7 @@ void SwHTMLParser::InsertHorzRule()
 			nWidth = (sal_uInt16)pOption->GetNumber();
 			if( bPrcWidth && nWidth>=100 )
 			{
-				// 100%-Linien sind der default-Fall (keine Attrs neotig)
+				// 100% lines are the default case (no attrs needed)
 				nWidth = 0;
 				bPrcWidth = sal_False;
 			}
@@ -5215,22 +5188,22 @@ void SwHTMLParser::InsertHorzRule()
 	AppendTxtNode();
 	pPam->Move( fnMoveBackward );
 
-	// ... und in einem Kontext merken
+	// ... and remember in a context
 	_HTMLAttrContext *pCntxt =
 		new _HTMLAttrContext( HTML_HORZRULE, RES_POOLCOLL_HTML_HR, aEmptyStr );
 
 	PushContext( pCntxt );
 
-	// die neue Vorlage setzen
+	// set the new template
 	SetTxtCollAttrs( pCntxt );
 
-	// die harten Attribute an diesem Absatz werden nie mehr ungueltig
+	// the hard attributes on this paragraph will never be invalid again
 	if( aParaAttrs.Count() )
 		aParaAttrs.Remove( 0, aParaAttrs.Count() );
 
 	if( nSize>0 || bColor || bNoShade )
 	{
-		// Farbe und/oder Breite der Linie setzen
+		// Set color and/or width of the line
 		if( !bColor )
 			aColor.SetColor( COL_GRAY );
 
@@ -5261,18 +5234,18 @@ void SwHTMLParser::InsertHorzRule()
 	}
 	if( nWidth )
 	{
-		// Wenn wir in keiner Tabelle sind, wird die Breitenangabe durch
-		// Absatz-Einzuege "getuerkt". In einer Tabelle macht das wenig
-		// Sinn. Um zu Vermeiden, dass die Linie bei der Breitenberechnung
-		// beruecksichtigt wird, bekommt sie aber trotzdem entsprechendes
-		// LRSpace-Item verpasst.
+		// If we are not in a table, the width specification will be "killed" by
+		// paragraph indents. In a table this makes little
+		// sense. To avoid that the line is taken into account in the width calculation
+		// width calculation, it will still be assigned the appropriate
+		// LRSpace item to the line.
 #ifdef FIX41370
 		const SwFmtColl *pColl = GetCurrFmtColl();
 		SvxLRSpaceItem aLRItem( pColl->GetLRSpace() );
 #endif
 		if( !pTable )
 		{
-			// Laenge und Ausrichtung der Linie ueber Absatz-Einzuege "tuerken"
+			// "Tune" the length and alignment of the line using paragraph indents
 			long nBrowseWidth = GetCurrentBrowseWidth();
 			nWidth = bPrcWidth ? (sal_uInt16)((nWidth*nBrowseWidth) / 100)
 							   : ToTwips( (sal_uInt16)nBrowseWidth );
@@ -5316,18 +5289,18 @@ void SwHTMLParser::InsertHorzRule()
 #endif
 	}
 
-	// Bookmarks koennen nicht in Hyperlinks eingefueht werden
+	// Bookmarks cannot be inserted into hyperlinks
 	if( aId.Len() )
 		InsertBookmark( aId );
 
-	// den aktuellen Kontext vom Stack holen
+	// get the current context from the stack
 	_HTMLAttrContext *pPoppedContext = PopContext( HTML_HORZRULE );
-	ASSERT( pPoppedContext==pCntxt, "wo kommt denn da ein HR-Kontext her?" );
+	ASSERT( pPoppedContext==pCntxt, "where does an HR context come from?" );
 	delete pPoppedContext;
 
 	pPam->Move( fnMoveForward );
 
-	// und im Absatz danach die dort aktuelle Vorlage setzen
+	// and in the paragraph after that set the template that is current there
 	SetTxtCollAttrs();
 }
 
@@ -5356,10 +5329,10 @@ void SwHTMLParser::ParseMoreMetaOptions()
         }
     }
 
-    // Hier wird es etwas tricky: Wir wissen genau, da? die Dok-Info
-    // nicht geaendert wurde. Deshalb genuegt es, auf Generator und
-    // auf refresh abzufragen, um noch nicht verarbeitete Token zu finden,
-    // denn das sind die einzigen, die die Dok-Info nicht modifizieren.
+    // Here's where it gets a little tricky: we know for a fact that the doc-info
+    // has not been changed. Therefore it is sufficient to query on generator and
+    // refresh to find tokens which have not been processed yet,
+    // because those are the only ones that do not modify the doc info.
     if( aName.EqualsIgnoreCaseAscii( OOO_STRING_SVTOOLS_HTML_META_generator ) ||
         aName.EqualsIgnoreCaseAscii( OOO_STRING_SVTOOLS_HTML_META_refresh ) ||
         aName.EqualsIgnoreCaseAscii( OOO_STRING_SVTOOLS_HTML_META_content_type ) ||
@@ -5450,10 +5423,10 @@ _HTMLAttr::~_HTMLAttr()
 
 _HTMLAttr *_HTMLAttr::Clone( const SwNodeIndex& rEndPara, sal_uInt16 nEndCnt ) const
 {
-	// das Attribut mit der alten Start-Position neu anlegen
+	// recreate the attribute with the old start position
 	_HTMLAttr *pNew = new _HTMLAttr( *this, rEndPara, nEndCnt, ppHead );
 
-	// die Previous-Liste muss uebernommen werden, die Next-Liste nicht!
+	// the Previous list must be taken over, the Next list must not!
 	pNew->pPrev = pPrev;
 
 	return pNew;
@@ -5462,13 +5435,13 @@ _HTMLAttr *_HTMLAttr::Clone( const SwNodeIndex& rEndPara, sal_uInt16 nEndCnt ) c
 void _HTMLAttr::Reset( const SwNodeIndex& rSttPara, sal_uInt16 nSttCnt,
 					   _HTMLAttr **ppHd )
 {
-	// den Anfang (und das Ende) neu setzen
+	// reset the beginning (and the end)
 	nSttPara = rSttPara;
 	nSttCntnt = nSttCnt;
 	nEndPara = rSttPara;
 	nEndCntnt = nSttCnt;
 
-	// den Head korrigieren und die Verkettungen aufheben
+	// correct the head and undo the concatenations
 	pNext = 0;
 	pPrev = 0;
 	ppHead = ppHd;
@@ -5477,11 +5450,11 @@ void _HTMLAttr::Reset( const SwNodeIndex& rSttPara, sal_uInt16 nSttCnt,
 void _HTMLAttr::InsertPrev( _HTMLAttr *pPrv )
 {
 	ASSERT( !pPrv->pNext || pPrv->pNext == this,
-			"_HTMLAttr::InsertPrev: pNext falsch" );
+			"_HTMLAttr::InsertPrev: pNext wrong" );
 	pPrv->pNext = 0;
 
 	ASSERT( 0 == pPrv->ppHead || ppHead == pPrv->ppHead,
-			"_HTMLAttr::InsertPrev: ppHead falsch" );
+			"_HTMLAttr::InsertPrev: ppHead wrong" );
 	pPrv->ppHead = 0;
 
 	_HTMLAttr *pAttr = this;
diff --git a/main/sw/source/filter/html/swhtml.hxx b/main/sw/source/filter/html/swhtml.hxx
index a36528d01a..5ca49cd026 100644
--- a/main/sw/source/filter/html/swhtml.hxx
+++ b/main/sw/source/filter/html/swhtml.hxx
@@ -74,13 +74,13 @@ class SvxCSS1PropertyInfo;
 #define HTML_DFLT_IMG_WIDTH (MM50*4)
 #define HTML_DFLT_IMG_HEIGHT (MM50*2)
 
-// ein par Sachen, die man oefter mal braucht
+// a few things that are needed from time to time
 extern HTMLOptionEnum __FAR_DATA aHTMLPAlignTable[];
 extern HTMLOptionEnum __FAR_DATA aHTMLImgHAlignTable[];
 extern HTMLOptionEnum __FAR_DATA aHTMLImgVAlignTable[];
 
 
-// der Attribut Stack:
+// the attribute stack:
 
 class _HTMLAttr;
 typedef _HTMLAttr *_HTMLAttrPtr;
@@ -94,28 +94,25 @@ class _HTMLAttr
 	SwNodeIndex nSttPara, nEndPara;
 	xub_StrLen nSttCntnt, nEndCntnt;
 	sal_Bool bInsAtStart : 1;
-	sal_Bool bLikePara : 1; // Attribut ueber dem gesamten Absatz setzen
-	sal_Bool bValid : 1;	// ist das Attribut gueltig?
+	sal_Bool bLikePara : 1;// Set attribute over the entire paragraph
+	sal_Bool bValid : 1;// is the attribute valid?
 
 	SfxPoolItem* pItem;
-	sal_uInt16 nCount;		// Anzahl noch zu schliessender Attrs mit einem Wert
-	_HTMLAttr *pNext;	// noch zu schliessene Attrs mit unterschiedl. Werten
-	_HTMLAttr *pPrev;	// bereits geschlossene aber noch nicht gesetze Attrs
-	_HTMLAttr **ppHead;	// der Listenkopf
+	sal_uInt16 nCount;// open attrs, with different values
+	_HTMLAttr *pNext;// Attrs with different values still to be closed. Values
+	_HTMLAttr *pPrev;// Attrs already closed but not yet legislated
+	_HTMLAttr **ppHead;// the list header
 
-	_HTMLAttr( const SwPosition& rPos, const SfxPoolItem& rItem,
-			   _HTMLAttr **pHd=0 );
+	_HTMLAttr( const SwPosition& rPos, const SfxPoolItem& rItem, _HTMLAttr **pHd=0 );
 
-	_HTMLAttr( const _HTMLAttr &rAttr, const SwNodeIndex &rEndPara,
-			   xub_StrLen nEndCnt, _HTMLAttr **pHd );
+	_HTMLAttr( const _HTMLAttr &rAttr, const SwNodeIndex &rEndPara, xub_StrLen nEndCnt, _HTMLAttr **pHd );
 
 public:
 
 	~_HTMLAttr();
 
 	_HTMLAttr *Clone( const SwNodeIndex& rEndPara, xub_StrLen nEndCnt ) const;
-	void Reset( const SwNodeIndex& rSttPara, xub_StrLen nSttCnt,
-			    _HTMLAttr **pHd );
+	void Reset( const SwNodeIndex& rSttPara, xub_StrLen nSttCnt, _HTMLAttr **pHd );
 	inline void SetStart( const SwPosition& rPos );
 
 	sal_uInt32 GetSttParaIdx() const { return nSttPara.GetIndex(); }
@@ -142,27 +139,27 @@ public:
 
 	void SetHead( _HTMLAttr **ppHd ) { ppHead = ppHd; }
 
-	// Beim Setzen von Attributen aus Vorlagen kann es passieren,
-	// dass Attribute doch nicht mehr gesetzt werden sollen. Die zu loeschen
-	// waere sehr aufwendig, da man nicht so genau weiss, wo sie eingekettet
-	// sind. Sie werden deshalb einfach invalidiert und erst beim naechsten
-	// _SetAttr() geloescht.
+	// When setting attributes from templates, it can happen,
+	// that attributes should not be set after all. To delete them
+	// would be very time-consuming, because you don't know exactly
+	// where they are chained. Therefore, they are simply invalidated
+	// and deleted with next _SetAttr().
 	void Invalidate() { bValid = sal_False; }
 	sal_Bool IsValid() const { return bValid; }
 };
 
-// Tabelle der Attribute: Hier ist die Reihenfolge wichtig: Die Attribute
-// vorne in der Tabelle werden in EndAllAttrs auch zuerst gesetzt.
+// Table of attributes: Here the order is important: the attributes
+// at the front of the table are also set first in EndAllAttrs.
 struct _HTMLAttrTable
 {
 	_HTMLAttr
-				*pKeep,			// ::com::sun::star::frame::Frame-Attribure
+				*pKeep,// ::com::sun::star::frame::Frame-Attribute
 				*pBox,
 				*pBrush,
 				*pBreak,
 				*pPageDesc,
 
-				*pLRSpace,		// Absatz-Attribute
+				*pLRSpace,// paragraph-attributes
 				*pULSpace,
 				*pLineSpacing,
 				*pAdjust,
@@ -172,10 +169,10 @@ struct _HTMLAttrTable
 				*pOrphans,
 				*pDirection,
 
-				*pCharFmts,		// Text-Attribute
+				*pCharFmts,// text-attributes
 				*pINetFmt,
 
-				*pBold,			// Zeichen-Attribute
+				*pBold,// character-attributes
 				*pBoldCJK,
 				*pBoldCTL,
 				*pItalic,
@@ -193,8 +190,8 @@ struct _HTMLAttrTable
 				*pFontColor,
 				*pEscapement,
 				*pCaseMap,
-				*pKerning,		// (nur fuer SPACER)
-				*pCharBrush,	// Zeichen-Hintergrund
+				*pKerning,// (only for SPACER)
+				*pCharBrush,// Character background
 				*pLanguage,
 				*pLanguageCJK,
 				*pLanguageCTL
@@ -204,40 +201,40 @@ struct _HTMLAttrTable
 class _HTMLAttrContext_SaveDoc;
 
 enum SwHTMLAppendMode {
-	 AM_NORMAL, 		// keine Absatz-Abstand-Behandlung
-	 AM_NOSPACE, 		// Abstand hart auf 0cm setzen
-	 AM_SPACE, 			// Abstand hart auf 0.5cm setzen
-	 AM_SOFTNOSPACE, 	// Abstand nicht setzen aber 0cm merken
-	 AM_NONE			// gar kein Append
+	 AM_NORMAL,// no paragraph spacing treatment
+	 AM_NOSPACE,// Force 0cm spacing
+	 AM_SPACE,// Force 0.5 cm spacing
+	 AM_SOFTNOSPACE,// Do not set distance but remember 0cm
+	 AM_NONE// no append at all
 };
 
 class _HTMLAttrContext
 {
-	_HTMLAttrs aAttrs;		// die in dem Kontext gestarteten Attribute
+	_HTMLAttrs aAttrs;// the attributes started in the context
 
-	String aClass;			// die Klasse des Kontexts
+	String aClass;// the class of the context
 
 	_HTMLAttrContext_SaveDoc *pSaveDocContext;
 	SfxItemSet *pFrmItemSet;
 
-	sal_uInt16 	nToken;			// das Token, zu dem der Kontext gehoehrt
+	sal_uInt16 	nToken;// the token to which the context belongs
 
-	sal_uInt16 	nTxtFmtColl;	// eine in dem Kontext begonnene Vorlage oder 0
+	sal_uInt16 	nTxtFmtColl;// a template started in the context or 0
 
-	sal_uInt16 	nLeftMargin;		// ein veraenderter linker Rand
-	sal_uInt16 	nRightMargin;		// ein veraenderter rechter Rand
-	sal_uInt16	nFirstLineIndent;	// ein veraenderter Erstzeilen-Einzug
+	sal_uInt16 	nLeftMargin;// a changed left edge
+	sal_uInt16 	nRightMargin;// a changed right edge
+	sal_uInt16	nFirstLineIndent;// a changed first line indent
 
 	sal_uInt16	nUpperSpace;
 	sal_uInt16	nLowerSpace;
 
 	SwHTMLAppendMode eAppend;
 
-	sal_Bool	bLRSpaceChanged : 1;// linker/rechtr Rand, Einzug veraendert?
-	sal_Bool	bULSpaceChanged : 1;// oberer/unterer Rand veraendert?
-	sal_Bool	bDfltTxtFmtColl : 1;// nTxtFmtColl ist nur ein default
-	sal_Bool	bSpansSection : 1; 	// Der Kontext spannt eine SwSection auf
-	sal_Bool	bPopStack : 1; 		// Oberhalb liegende Stack-Elemente entf.
+	sal_Bool	bLRSpaceChanged : 1;// left/right edge, indent changed?
+	sal_Bool	bULSpaceChanged : 1;// upper/lower edge changed?
+	sal_Bool	bDfltTxtFmtColl : 1;// nTxtFmtColl is only a default
+	sal_Bool	bSpansSection : 1;// The context spans a SwSection
+	sal_Bool	bPopStack : 1;// Delete the element above in the stack
 	sal_Bool	bFinishPREListingXMP : 1;
 	sal_Bool	bRestartPRE : 1;
 	sal_Bool	bRestartXMP : 1;
@@ -366,7 +363,7 @@ SV_DECL_PTRARR( SwHTMLFrmFmts, SwFrmFmtPtr, 2, 2 )
 	(HTML_CNTXT_PROTECT_STACK | \
 	 HTML_CNTXT_STRIP_PARA)
 
-#define HTML_FF_BOX		 			0x0001
+#define HTML_FF_BOX		 		0x0001
 #define HTML_FF_BACKGROUND			0x0002
 #define HTML_FF_PADDING				0x0004
 #define HTML_FF_DIRECTION			0x0008
@@ -382,120 +379,119 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
 	String		sSaveBaseURL;
 	String		aBasicLib;
 	String		aBasicModule;
-	String		aScriptSource;	// Inhalt des aktuellen Script-Blocks
-	String		aScriptType;	// Type des gelesenen Scripts (StarBasic/VB/JAVA)
-	String		aScriptURL;		// URL eines Scripts
-	String		aStyleSource;	// Inhalt des aktuellen Style-Sheets
-	String		aContents;		// Text des akteullen Marquee, Feldes etc.
+	String		aScriptSource;// Content of the current script block
+	String		aScriptType;// Type of the loaded script (StarBasic/VB/JAVA)
+	String		aScriptURL;// URL of a script
+	String		aStyleSource;// Contents of the current style sheet
+	String		aContents;// Text of the actual marquee, field, etc.
 	String		sTitle;
-	String		aUnknownToken;	// ein gestartetes unbekanntes Token
+	String		aUnknownToken;// a started unknown token
 	String		aBulletGrfs[MAXLEVEL];
 	String		sJmpMark;
 
-	SvUShorts	aBaseFontStack; // Stack fuer <BASEFONT>
-								// Bit 0-2: Fontgroesse (1-7)
-	SvUShorts	aFontStack; 	// Stack fuer <FONT>, <BIG>, <SMALL>
-								// Bit 0-2: Fontgroesse (1-7)
-								// Bit 15: Fontfarbe wurde gesetzt
-
-	_HTMLAttrs		aSetAttrTab;// "geschlossene", noch nicht gesetzte Attr.
-	_HTMLAttrs		aParaAttrs;	// vorlauefige Absatz-Attribute
-	_HTMLAttrTable	aAttrTab;	// "offene" Attribute
-	_HTMLAttrContexts aContexts;// der aktuelle Attribut/Token-Kontext
-	SwHTMLFrmFmts	aMoveFlyFrms;// Fly-Frames, the anchor is moved
+	SvUShorts	aBaseFontStack;// Stack for <BASEFONT>
+                                       // Bit 0-2: Font size (1-7)
+	SvUShorts	aFontStack;// Stack for <FONT>, <BIG>, <SMALL>
+				   // Bit 0-2: Font size (1-7)
+				   // Bit 15: Font color was set
+
+	_HTMLAttrs		aSetAttrTab;// "closed" attribute, not set yet
+	_HTMLAttrs		aParaAttrs;// leading paragraph attributes
+	_HTMLAttrTable	aAttrTab;// "open" attributes
+	_HTMLAttrContexts aContexts;// the current attribute/token context
+	SwHTMLFrmFmts	aMoveFlyFrms;// Fly-Frames, der Anker wird verschoben
 	SvXub_StrLens	aMoveFlyCnts;// and the Content-Positions
 
-	SwApplet_Impl *pAppletImpl;	// das aktuelle Applet
+	SwApplet_Impl *pAppletImpl;// the current applet
 
-	SwCSS1Parser 	*pCSS1Parser;	// der Style-Sheet-Parser
+	SwCSS1Parser 	*pCSS1Parser;// the style sheet parser
 	SwHTMLNumRuleInfo *pNumRuleInfo;
 	SwPendingStack	*pPendStack;
 
 	SwDoc			*pDoc;
-	SwPaM			*pPam;		// SwPosition duerfte doch reichen, oder ??
-	ViewShell		*pActionViewShell;	// ViewShell, an der das StartAction
-										// gerufen wurde.
+	SwPaM			*pPam;// SwPosition should be enough, right?
+	ViewShell		*pActionViewShell;// ViewShell, at which the StartAction
+										// was called.
 	SwNodeIndex		*pSttNdIdx;
 
-	HTMLTable		*pTable;	// die aktuelle "auesserste" Tabelle
-	SwHTMLForm_Impl *pFormImpl;// die aktuelle Form
-	SdrObject		*pMarquee;	// aktuelles Marquee
-	SwField			*pField;	// aktuelles Feld
-	ImageMap		*pImageMap;	// aktuelle Image-Map
-	ImageMaps		*pImageMaps;// alle gelesenen Image-Maps
+	HTMLTable		*pTable;// the current "outermost" table
+	SwHTMLForm_Impl *pFormImpl;// the current form
+	SdrObject		*pMarquee;// current marquee
+	SwField			*pField;// current field
+	ImageMap		*pImageMap;// current image map
+	ImageMaps		*pImageMaps;// all image maps read so far
 	SwHTMLFootEndNote_Impl *pFootEndNoteImpl;
 
-	Size 	aHTMLPageSize;	 	// die Seitengroesse der HTML-Vorlage
+	Size 	aHTMLPageSize;// the page size of the HTML template
 
-	sal_uInt32 	aFontHeights[7];	// die Font-Hoehen 1-7
-	sal_uInt32	nScriptStartLineNr;	// Zeilennummer eines Script-Blocks
+	sal_uInt32 	aFontHeights[7];// the font heights 1-7
+	sal_uInt32	nScriptStartLineNr;// Line number of a script block
 	sal_uLong		nEventId;
 
-	sal_uInt16	nBaseFontStMin;		//
-	sal_uInt16	nFontStMin; 		//
-	sal_uInt16	nDefListDeep;       //
-	sal_uInt16	nFontStHeadStart;	// Elemente im Font-Stack bei <Hn>
-	sal_uInt16	nSBModuleCnt;		// Zaehler fuer Basic-Module
-	sal_uInt16	nMissingImgMaps;	// Wie viele Image-Maps fehlen noch?
+	sal_uInt16	nBaseFontStMin;
+	sal_uInt16	nFontStMin; 
+	sal_uInt16	nDefListDeep;
+	sal_uInt16	nFontStHeadStart;// Elements in the font stack at <Hn>.
+	sal_uInt16	nSBModuleCnt;// Counter for Basic modules
+	sal_uInt16	nMissingImgMaps;// How many image maps are missing?
 	sal_uInt16 	nParaCnt;
-	sal_uInt16	nContextStMin;		// Untergrenze fuer PopContext
-	sal_uInt16	nContextStAttrMin;	// Untergrenze fuer Attributierung
-	sal_uInt16	nSelectEntryCnt;	// Anzahl der Eintraege der akt. Listbox
-	sal_uInt16	nOpenParaToken;		// ein geoeffnetes Absatz-Element
+	sal_uInt16	nContextStMin;// Lower limit for PopContext
+	sal_uInt16	nContextStAttrMin;// Lower limit for attribution
+	sal_uInt16	nSelectEntryCnt;// Number of entries in the current list box
+	sal_uInt16	nOpenParaToken;// an opened paragraph element
 
 	enum JumpToMarks { JUMPTO_NONE, JUMPTO_MARK, JUMPTO_TABLE, JUMPTO_FRAME,
 						JUMPTO_REGION, JUMPTO_GRAPHIC } eJumpTo;
 
 #ifdef DBG_UTIL
-	sal_uInt16	nContinue;			// Tiefe der Continue-Aufrufe
+	sal_uInt16	nContinue;// Depth of Continue calls
 #endif
 
-	SvxAdjust	eParaAdjust;	// Ausrichtung des aktuellen Absatz
-	HTMLScriptLanguage eScriptLang; // die aktuelle Script-Language
+	SvxAdjust	eParaAdjust;// Alignment of the current paragraph
+	HTMLScriptLanguage eScriptLang;// the current script language
 
-	sal_Bool bOldIsHTMLMode : 1;	// War's mal ein HTML-Dokument?
+	sal_Bool bOldIsHTMLMode : 1;// Was it once an HTML document?
 
-	sal_Bool bDocInitialized : 1;	// Dokument bzw. Shell wurden initialisiert
-								// Flag um doppeltes init durch Rekursion
-								// zu verhindern.
-	sal_Bool bViewCreated : 1;		// die View wurde schon erzeugt (asynchron)
-	sal_Bool bSetCrsr : 1;			// Crsr wieder auf den Anfang setzen
+	sal_Bool bDocInitialized : 1;// Document or shell were initialized
+                                     // Flag used to avoid double initialization due to recursion
+	sal_Bool bViewCreated : 1;// the view was already created (asynchronous)
+	sal_Bool bSetCrsr : 1;// Set Crsr back to the beginning
 	sal_Bool bSetModEnabled : 1;
 
-	sal_Bool bInFloatingFrame : 1;	// Wir sind in einen Floating ::com::sun::star::frame::Frame
+	sal_Bool bInFloatingFrame : 1;// We are in a floating ::com::sun::star::frame::Frame
 	sal_Bool bInField : 1;
-	sal_Bool bKeepUnknown : 1;		// unbekannte/nicht unterstuetze Tokens beh.
+	sal_Bool bKeepUnknown : 1;// unknown/unsupported tokens treatment
 	// 8
-	sal_Bool bCallNextToken : 1;	// In Tabellen: NextToken in jedem Fall rufen
-	sal_Bool bIgnoreRawData : 1;	// Inhalt eines Scripts/Styles ignorieren.
-	sal_Bool bLBEntrySelected : 1;	// Ist der aktuelle Listbox-Eintrag selekt.
-	sal_Bool bTAIgnoreNewPara : 1;	// naechstes LF in TextArea ignorieren?
-	sal_Bool bFixMarqueeWidth : 1;	// Groesse einer Laufschrift anpassen?
+	sal_Bool bCallNextToken : 1;// In tables: Call NextToken in any case
+	sal_Bool bIgnoreRawData : 1;// Ignore content of a script/style.
+	sal_Bool bLBEntrySelected : 1;// Is the current listbox entry selected.
+	sal_Bool bTAIgnoreNewPara : 1;// ignore next LF in TextArea?
+	sal_Bool bFixMarqueeWidth : 1;// Adjust the size of a ticker?
 	sal_Bool bFixMarqueeHeight : 1;
 
-	sal_Bool bUpperSpace : 1;		// obererer Absatz-Abstand wird benoetigt
+	sal_Bool bUpperSpace : 1;// upper paragraph spacing is required
 	sal_Bool bNoParSpace : 1;
 	// 16
 
-	sal_Bool bAnyStarBasic : 1;		// gibt es ueberhaupt ein StarBasic-Modul
-	sal_Bool bInNoEmbed : 1;		// Wir sind in einem NOEMBED-Bereich
+	sal_Bool bAnyStarBasic : 1;// there is a StarBasic module at all
+	sal_Bool bInNoEmbed : 1;// We are in a NOEMBED area
 
-	sal_Bool bInTitle : 1;			// Wir sind im Titel
+	sal_Bool bInTitle : 1;// We are in the title
 
-	sal_Bool bChkJumpMark : 1;		// springe ggfs. zu einem vorgegebenem Mark
+	sal_Bool bChkJumpMark : 1;// jump to a given marker if necessary
 	sal_Bool bUpdateDocStat : 1;
-	sal_Bool bFixSelectWidth : 1;	// Breite eines Selects neu setzen?
-	sal_Bool bFixSelectHeight : 1;	// Breite eines Selects neu setzen?
+	sal_Bool bFixSelectWidth : 1;// Reset the width of a select?
+	sal_Bool bFixSelectHeight : 1;// Reset the height of a select?
 	sal_Bool bTextArea : 1;
 	// 24
 	sal_Bool bSelect : 1;
 	sal_Bool bInFootEndNoteAnchor : 1;
 	sal_Bool bInFootEndNoteSymbol : 1;
-    sal_Bool bIgnoreHTMLComments : 1;
-    sal_Bool bRemoveHidden : 1; // the filter implementation might set the hidden flag
+        sal_Bool bIgnoreHTMLComments : 1;
+        sal_Bool bRemoveHidden : 1;// the filter implementation might set the hidden flag
 
-    /// the names corresponding to the DOCINFO field subtypes INFO[1-4]
-    ::rtl::OUString m_InfoNames[4];
+        // the names corresponding to the DOCINFO field subtypes INFO[1-4]
+        ::rtl::OUString m_InfoNames[4];
 
 	SfxViewFrame* pTempViewFrame;
 
@@ -521,13 +517,13 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
 
 	_HTMLAttr **GetAttrTabEntry( sal_uInt16 nWhich );
 
-	// Einen neuen Textknoten an PaM-Position anlegen
+	// Create a new text node at PaM position
 	sal_Bool AppendTxtNode( SwHTMLAppendMode eMode=AM_NORMAL, sal_Bool bUpdateNum=sal_True );
 	void AddParSpace();
 
-	// Ein Attribut beginnen/beenden
-	// ppDepAttr gibt einen Attribut-Tabellen-Eintrag an, dessen Attribute
-	// gesetzt sein muessen, bevor das Attribut beendet werden darf
+	// Start/end an attribute
+	// ppDepAttr specifies an attribute table entry whose attributes  
+	// must be set before the attribute can be terminated.
 	void NewAttr( _HTMLAttr **ppAttr, const SfxPoolItem& rItem );
 	void EndAttr( _HTMLAttr *pAttr, _HTMLAttr **ppDepAttr=0,
 				  sal_Bool bChkEmpty=sal_True );
@@ -566,26 +562,26 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
 	SwTwips GetCurrentBrowseWidth();
 
 	SwHTMLNumRuleInfo& GetNumInfo() { return *pNumRuleInfo; }
-    // --> OD 2008-04-02 #refactorlists#
-    // add parameter <bCountedInList>
-    void SetNodeNum( sal_uInt8 nLevel, bool bCountedInList );
-    // <--
+        // --> OD 2008-04-02 #refactorlists#
+        // add parameter <bCountedInList>
+        void SetNodeNum( sal_uInt8 nLevel, bool bCountedInList );
+        // <--
 
-	// Verwalten von Absatz-Vorlagen
+	// Manage paragraph templates
 
-	// die Vorlagen auf dem Stack bzw. deren Attribute setzen
+	// set the templates on the stack or their attributes.
 	void SetTxtCollAttrs( _HTMLAttrContext *pContext = 0 );
 
 	void InsertParaAttrs( const SfxItemSet& rItemSet );
 
-	// Verwalten des Attribut-Kontexts
+	// Manage the attribute context
 
-	// aktuellen Kontext merken
+	// remember current context
 	inline void PushContext( _HTMLAttrContext *pCntxt );
 
-	// den obersten/spezifizierten Kontext holen, aber nicht ausserhalb
-	// des Kontexts mit Token nLimit suchen. Wenn bRemove gesetzt ist,
-	// wird er entfernt
+	// get the topmost/specified context, but do not search outside
+	// of the context with token nLimit. If bRemove is set,
+	// it is removed
 	_HTMLAttrContext *PopContext( sal_uInt16 nToken=0, sal_uInt16 nLimit=0,
 								  sal_Bool bRemove=sal_True );
 	inline const _HTMLAttrContext *GetTopContext() const;
@@ -599,23 +595,23 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
 
 	void MovePageDescAttrs( SwNode *pSrcNd, sal_uLong nDestIdx, sal_Bool bFmtBreak );
 
-	// Behandlung von Tags auf Absatz-Ebene
+	// Handling tags at paragraph level
 
-	// <P> und <H1> bis <H6>
+	// <P> and <H1> to <H6>
 	void NewPara();
 	void EndPara( sal_Bool bReal = sal_False );
 	void NewHeading( int nToken );
 	void EndHeading();
 
-	// <ADDRESS>, <BLOCKQUOTE> und <PRE>
+	// <ADDRESS>, <BLOCKQUOTE> and <PRE>
 	void NewTxtFmtColl( int nToken, sal_uInt16 nPoolId );
 	void EndTxtFmtColl( int nToken );
 
-	// <DIV> und <CENTER>
+	// <DIV> and <CENTER>
 	void NewDivision( int nToken );
 	void EndDivision( int nToken );
 
-	// Fly-Frames einfuegen/verlassen
+	// Insert/exit fly frames
 	void InsertFlyFrame( const SfxItemSet& rItemSet, _HTMLAttrContext *pCntxt,
 						 const String& rId, sal_uInt16 nFlags );
 
@@ -623,7 +619,7 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
 					   const SwPosition *pNewPos );
 	void RestoreDocContext( _HTMLAttrContext *pCntxt );
 
-	// alle durch <DIV> aufgespannten Bereiche verlassen
+	// leave all areas spanned by <DIV>.
 	sal_Bool EndSections( sal_Bool bLFStripped );
 
 	// <MULTICOL>
@@ -635,16 +631,16 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
 	void EndMarquee();
 	void InsertMarqueeText();
 
-	// Behandluung von Listen
+	// List handling
 
-	// Numerierungs <OL> und Aufzaehlungs-Listen <UL> mit <LI>
+	// Numbering <OL> and Enumeration Lists <UL> with <LI>
 	void NewNumBulList( int nToken );
 	void EndNumBulList( int nToken=0 );
 	void NewNumBulListItem( int nToken );
 	void EndNumBulListItem( int nToken=0, sal_Bool bSetColl=sal_True,
 							sal_Bool bLastPara=sal_False );
 
-	// Definitions-Listen <DL> mit <DD>, <DT>
+	// Definition lists <DL> with <DD>, <DT>
 	void NewDefList();
 	void EndDefList();
 	void NewDefListItem( int nToken );
@@ -652,10 +648,10 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
 						 sal_Bool bLastPara=sal_False );
 
 
-	// Behandlung von Tags auf Zeichen-Ebene
+	// Handling tags at character level
 
-	// Tags wie <B>, <I> etc behandeln, die ein bestimmtes Attribut
-	// an und ausschalten, oder die wie SPAN nur Attribute aus Styles holen
+	// handle tags like <B>, <I> etc that turn a specific attribute
+	// on and off, or which like SPAN only fetch attributes from styles.
 	void NewStdAttr( int nToken );
 	void NewStdAttr( int nToken,
 					 _HTMLAttr **ppAttr, const SfxPoolItem & rItem,
@@ -663,55 +659,55 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
 					 _HTMLAttr **ppAttr3=0, const SfxPoolItem *pItem3=0 );
 	void EndTag( int nToken );
 
-	// Font-Attribute behandeln
-	void NewBasefontAttr(); 			// fuer <BASEFONT>
+	// Handle font attributes
+	void NewBasefontAttr(); 			// for <BASEFONT>
 	void EndBasefontAttr();
-	void NewFontAttr( int nToken );	// fuer <FONT>, <BIG> und <SMALL>
+	void NewFontAttr( int nToken );	// for <FONT>, <BIG> and <SMALL>
 	void EndFontAttr( int nToken );
 
-	// Tags, die durch Zeichenvorlagen realisiert werden
+	// Tags realized by character templates
 	void NewCharFmt( int nToken );
 
 	// <SDFIELD>
 public:
 	static sal_uInt16 GetNumType( const String& rStr, sal_uInt16 eDfltType );
-private:
-	void NewField();
+private: 
+        void NewField();
 	void EndField();
 	void InsertFieldText();
 
 	// <SPACER>
 	void InsertSpacer();
 
-	// Einfuegen von Grafiken, Plugins und Applets
+	// Inserting graphics, plugins and applets
 
-	// Image-Maps suchen und mit Grafik-Nodes verbinden
+	// Search image maps and connect them with graphic nodes
 	ImageMap *FindImageMap( const String& rURL ) const;
 	void ConnectImageMaps();
 
-	// Verankerung eines Fly-Frames bestimmen und entsprechende Attribute
-	// in den Attrset setzen (htmlgrin.cxx)
-    void SetAnchorAndAdjustment( sal_Int16 eVertOri,
-                                 sal_Int16 eHoriOri,
-								 const SfxItemSet &rItemSet,
-								 const SvxCSS1PropertyInfo &rPropInfo,
-								 SfxItemSet& rFrmSet );
-    void SetAnchorAndAdjustment( sal_Int16 eVertOri,
-                                 sal_Int16 eHoriOri,
-								 SfxItemSet& rFrmSet,
-								 sal_Bool bDontAppend=sal_False );
+        // Determine anchoring of a fly frame and set corresponding attributes 
+        // set in the attrset (htmlgrin.cxx)
+        void SetAnchorAndAdjustment( sal_Int16 eVertOri,
+                                     sal_Int16 eHoriOri,
+                                     const SfxItemSet &rItemSet,
+                                     const SvxCSS1PropertyInfo &rPropInfo,
+                                     SfxItemSet& rFrmSet );
+        void SetAnchorAndAdjustment( sal_Int16 eVertOri,
+                                     sal_Int16 eHoriOri,
+                                     SfxItemSet& rFrmSet,
+                                     sal_Bool bDontAppend=sal_False );
 	void SetAnchorAndAdjustment( const SfxItemSet &rItemSet,
-								 const SvxCSS1PropertyInfo &rPropInfo,
-								 SfxItemSet &rFrmItemSet );
+                                     const SvxCSS1PropertyInfo &rPropInfo,
+                                     SfxItemSet &rFrmItemSet );
 
 	void SetFrmFmtAttrs( SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo,
 						 sal_uInt16 nFlags, SfxItemSet &rFrmItemSet );
 
-	// Frames anlegen und Auto-gebundene Rahmen registrieren
+	// Create frames and register auto-bound frames
 	void RegisterFlyFrm( SwFrmFmt *pFlyFrm );
 
-	// Die Groesse des Fly-Frames an die Vorgaben und Gegebenheiten anpassen
-	// (nicht fuer Grafiken, deshalb htmlplug.cxx)
+	// Adapt the size of the fly-frame to the specifications and conditions.
+	// (not for graphics, therefore htmlplug.cxx)
 	void SetFixSize( const Size& rPixSize, const Size& rTwipDfltSize,
 					 sal_Bool bPrcWidth, sal_Bool bPrcHeight,
 					 SfxItemSet &rItemSet, SvxCSS1PropertyInfo &rPropInfo,
@@ -727,112 +723,109 @@ private:
 	void GetDefaultScriptType( ScriptType& rType,
 							   String& rTypeStr ) const;
 
-	// die eigentlichen Einfuege-Methoden fuer <IMG>, <EMBED> und <APPLET>
-	// und <PARAM>
-	void InsertImage();		// htmlgrin.cxx
-	void InsertEmbed();		// htmlplug.cxx
+	// the actual insert methods for <IMG>, <EMBED>, and <APPLET>
+	// and <PARAM>
+	void InsertImage();// htmlgrin.cxx
+	void InsertEmbed();// htmlplug.cxx
 
 #ifdef SOLAR_JAVA
-	void NewObject();	// htmlplug.cxx
+	void NewObject();// htmlplug.cxx
 #endif
-	void EndObject();		// CommandLine mit Applet verkn. (htmlplug.cxx)
+	void EndObject();// CommandLine with Applet link. (htmlplug.cxx)
 #ifdef SOLAR_JAVA
-	void InsertApplet();	// htmlplug.cxx
+	void InsertApplet();// htmlplug.cxx
 #endif
-	void EndApplet();		// CommandLine mit Applet verkn. (htmlplug.cxx)
-	void InsertParam();		// htmlplug.cxx
+	void EndApplet();// CommandLine with Applet link. (htmlplug.cxx)
+	void InsertParam();// htmlplug.cxx
 
 	void InsertFloatingFrame();
 	void EndFloatingFrame() { bInFloatingFrame = sal_False; }
 
-	// <BODY>-Tag auswerten: Hintergrund-Grafiken und -Farben setzen (htmlgrin.cxx)
+	// <BODY> tag evaluate: set background graphics and colors (htmlgrin.cxx)
 	void InsertBodyOptions();
 
 
-	// Einfuegen von Links und ::com::sun::star::text::Bookmarks (htmlgrin.cxx)
+	// Inserting links and ::com::sun::star::text::Bookmarks (htmlgrin.cxx)
 
-	// <A>-Tag auswerten: einen Link bzw. eine ::com::sun::star::text::Bookmark einfuegen
+	// Evaluate <A> tag: insert a link or ::com::sun::star::text::bookmark.
 	void NewAnchor();
 	void EndAnchor();
 
-	// eine ::com::sun::star::text::Bookmark einfuegen
+	// insert a ::com::sun::star::text::bookmark
 	void InsertBookmark( const String& rName );
 
 
 	void InsertCommentText( const sal_Char *pTag = 0 );
 	void InsertComment( const String& rName, const sal_Char *pTag = 0 );
 
-	// sind im aktuellen Absatz ::com::sun::star::text::Bookmarks vorhanden?
+	// are there any ::com::sun::star::text::bookmarks in the current paragraph?
 	sal_Bool HasCurrentParaBookmarks( sal_Bool bIgnoreStack=sal_False ) const;
 
 
-	// Einfuegen von Script/Basic-Elementen
+	// Inserting Script/Basic elements
 
-	// das zueletzt gelsene Basic-Modul parsen (htmlbas.cxx)
+	// parse the last Basic module (htmlbas.cxx) that was loaded
 	void NewScript();
 	void EndScript();
 
 	void AddScriptSource();
 
-	// ein Event in die SFX-Konfiguation eintragen (htmlbas.cxx)
+	// add an event to the SFX configuration (htmlbas.cxx)
 	void InsertBasicDocEvent( rtl::OUString aEventName, const String& rName,
 							  ScriptType eScrType, const String& rScrType );
 
-	// ein Event an ein VC-Control anhaengen (htmlform.cxx)
+	// attach an event to a VC control (htmlform.cxx)
 	void InsertBasicCtrlEvent( sal_uInt16 nEvent, const String& rName );
 
-	// Einfuegen von Styles
+	// Inserting styles
 
 	// <STYLE>
 	void NewStyle();
 	void EndStyle();
 
-	inline sal_Bool HasStyleOptions( const String &rStyle, const String &rId,
-								 const String &rClass, const String *pLang=0,
-		   						 const String *pDir=0 );
+	inline sal_Bool HasStyleOptions( const String &rStyle, const String &rId,const String &rClass, const String *pLang=0,const String *pDir=0 );
 	sal_Bool ParseStyleOptions( const String &rStyle, const String &rId,
 							const String &rClass, SfxItemSet &rItemSet,
 							SvxCSS1PropertyInfo &rPropInfo,
 							 const String *pLang=0, const String *pDir=0 );
 
 
-	// Einfuegen von Controls und ::com::sun::star::form::Forms (htmlform.cxx)
+	// Inserting controls and ::com::sun::star::form::Forms (htmlform.cxx)
 
-	// Ein Draw-Objekt in das Dokuement eintragen
+	// Add a Draw object to the docuement
 	void InsertDrawObject( SdrObject* pNewDrawObj, const Size& rSpace,
-                           sal_Int16 eVertOri,
-                           sal_Int16 eHoriOri,
-						   SfxItemSet& rCSS1ItemSet,
-						   SvxCSS1PropertyInfo& rCSS1PropInfo,
-						   sal_Bool bHidden=sal_False );
-						::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >  InsertControl( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > & rFormComp,
-						const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rFCompPropSet,
-						const Size& rSize,
-                        sal_Int16 eVertOri,
-                        sal_Int16 eHoriOri,
-						SfxItemSet& rCSS1ItemSet,
-						SvxCSS1PropertyInfo& rCSS1PropInfo,
-						const SvxMacroTableDtor& rMacroTbl,
-						const SvStringsDtor& rUnoMacroTbl,
-						const SvStringsDtor& rUnoMacroParamTbl,
-						sal_Bool bSetPropSet = sal_True,
-						sal_Bool bHidden = sal_False );
-	void SetControlSize( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rShape, const Size& rTextSz,
-						 sal_Bool bMinWidth, sal_Bool bMinHeight, int nToken );
+                               sal_Int16 eVertOri,
+                               sal_Int16 eHoriOri,
+                               SfxItemSet& rCSS1ItemSet,
+                               SvxCSS1PropertyInfo& rCSS1PropInfo,
+                               sal_Bool bHidden=sal_False );
+        ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >  InsertControl( const ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent > & rFormComp,
+                                                                                              const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & rFCompPropSet,
+                                                                                              const Size& rSize,
+                                                                                              sal_Int16 eVertOri,
+                                                                                              sal_Int16 eHoriOri,
+	                                                                                      SfxItemSet& rCSS1ItemSet,
+                                                                                              SvxCSS1PropertyInfo& rCSS1PropInfo,
+	                                                                                      const SvxMacroTableDtor& rMacroTbl,
+	                                                                                      const SvStringsDtor& rUnoMacroTbl,
+	                                                                                      const SvStringsDtor& rUnoMacroParamTbl,
+                                                                                              sal_Bool bSetPropSet = sal_True,
+                                                                                              sal_Bool bHidden = sal_False );
+											      
+	void SetControlSize( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > & rShape, const Size& rTextSz,sal_Bool bMinWidth, sal_Bool bMinHeight, int nToken );
 	void SetPendingControlSize( int nToken );
 
 public:
 	void ResizeDrawObject( SdrObject* pObj, SwTwips nWidth );
 private:
-	void RegisterDrawObjectToTable( HTMLTable *pCurTable, SdrObject* pObj,
-									sal_uInt8 nWidth );
+	void RegisterDrawObjectToTable( HTMLTable *pCurTable, SdrObject* pObj, sal_uInt8 nWidth );
 
 
-	// eine neue Form beginnen
+	// start a new form
 	void NewForm( sal_Bool bAppend=sal_True );
 	void EndForm( sal_Bool bAppend=sal_True );
 
-	// die Einfuege-Methoden fuer <INPUT>, <TEXTAREA> und <SELECT>
+	// the insertion methods for <INPUT>, <TEXTAREA> and <SELECT>
 	void InsertInput();
 
 	void NewTextArea();
@@ -844,40 +837,33 @@ private:
 	void InsertSelectText();
 	void EndSelect();
 
-	// Einfuegen von Tabellen (htmltab.cxx)
+	// Insert tables (htmltab.cxx)
 
-public:			// wird in Tabellen benoetigt
+public:// is needed in tables
 
-	// einen Boxen-Inhalt hinter dem angegebenen Node einfuegen
+	// insert a box content after the specified node
 	const SwStartNode *InsertTableSection( const SwStartNode *pPrevStNd );
 
-	// Einen Boxen-Inhalt am Ende der Tabelle einfuegen, in der der PaM
-	// steht un den PaM in die Zelle schieben
+	// Insert a box content at the end of the table containing the PaM
+	// and move the PaM into the cell
 	const SwStartNode *InsertTableSection( sal_uInt16 nPoolId );
 
-	// Einfeuge-Methoden fuer die diversen Tabellen-Tags
+	// Insert methods for the various table tags
 	HTMLTableCnts *InsertTableContents( sal_Bool bHead );
 
 private:
-	// Eine Section fuer die voruebergende Aufnahme der Tabellen-Ueberschrift
-	// anlegen
+	// Create a section for the temporary setting of the table heading
 	SwStartNode *InsertTempTableCaptionSection();
 
 	void BuildTableCell( HTMLTable *pTable, sal_Bool bReadOptions, sal_Bool bHead );
-	void BuildTableRow( HTMLTable *pTable, sal_Bool bReadOptions,
-                        SvxAdjust eGrpAdjust, sal_Int16 eVertOri );
+	void BuildTableRow( HTMLTable *pTable, sal_Bool bReadOptions,SvxAdjust eGrpAdjust, sal_Int16 eVertOri );
 	void BuildTableSection( HTMLTable *pTable, sal_Bool bReadOptions, sal_Bool bHead );
 	void BuildTableColGroup( HTMLTable *pTable, sal_Bool bReadOptions );
 	void BuildTableCaption( HTMLTable *pTable );
-	HTMLTable *BuildTable( SvxAdjust eCellAdjust,
-						   sal_Bool bIsParentHead = sal_False,
-						   sal_Bool bHasParentSection=sal_True,
-						   sal_Bool bIsInMulticol = sal_False,
-						   sal_Bool bHasToFlow = sal_False );
-
+	HTMLTable *BuildTable( SvxAdjust eCellAdjust, sal_Bool bIsParentHead = sal_False, sal_Bool bHasParentSection=sal_True, sal_Bool bIsInMulticol = sal_False, sal_Bool bHasToFlow = sal_False );
 
-	// sonstiges ...
 
+// miscellaneous ...
 	void ParseMoreMetaOptions();
 
 	sal_Bool FileDownload( const String& rURL, String& rStr );
@@ -895,31 +881,31 @@ private:
 	SwNodeIndex *GetFootEndNoteSection( const String& rName );
 	void DeleteFootEndNoteImpl();
 
-	// Line-Break am Ende eines Absatzes entfernen
+	// Remove line break at the end of a paragraph
 	xub_StrLen StripTrailingLF();
 
-	// Einen leeren Absatz an der PaM-Position entfernen
-	void StripTrailingPara();
 
-	// sind im aktuellen Absatz Fly-Frames vorhanden?
-	sal_Bool HasCurrentParaFlys( sal_Bool bNoSurroundOnly = sal_False,
-							 sal_Bool bSurroundOnly = sal_False ) const;
+	// Remove an empty paragraph at the PaM position.
+	void StripTrailingPara();
+	
+	// Are there any visible Fly-Frames in the current paragraph?
+	sal_Bool HasCurrentParaFlys( sal_Bool bNoSurroundOnly = sal_False, sal_Bool bSurroundOnly = sal_False ) const;
 
-public:			// wird in Tabellen benoetigt
+public:// is needed in tables
 
-	// generieren eines BrushItems (mit new) oder 0
+	// generate a BrushItem (with new) or 0
 	SvxBrushItem* CreateBrushItem( const Color *pColor,
-								   const String &rImageURL,
-								   const String &rStyle,
-								   const String &rId,
-								   const String &rClass );
+                                       const String &rImageURL,
+                                       const String &rStyle,
+                                       const String &rId,
+                                       const String &rClass );
 
 protected:
-	// wird fuer jedes Token gerufen, das in CallParser erkannt wird
+	// is called for every token that is recognized in CallParser
 	virtual void NextToken( int nToken );
 	virtual ~SwHTMLParser();
 
-	// wird das Dok geloescht, ist auch der Parser zu loeschen
+	// if the doc is deleted, the parser has to be deleted as well
 	virtual void Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew );
 
     virtual void AddMetaUserDefined( ::rtl::OUString const & i_rMetaName );
@@ -930,20 +916,18 @@ public:
                     const String& rFileName,
                     const String& rBaseURL,
                     int bReadNewDoc = sal_True,
-					SfxMedium* pMed = 0, sal_Bool bReadUTF8 = sal_False,
+                    SfxMedium* pMed = 0, sal_Bool bReadUTF8 = sal_False,
                     sal_Bool bIgnoreHTMLComments = sal_False );
 
-	virtual SvParserState CallParser();   // Aufruf des Parsers
+	virtual SvParserState CallParser();// Call the parser
 
 
 	sal_uInt16 ToTwips( sal_uInt16 nPixel ) const;
 
-	// fuers asynchrone lesen aus dem SvStream
+	// for asynchronous reading from the SvStream
 	virtual void Continue( int nToken );
 
-    virtual bool ParseMetaOptions( const ::com::sun::star::uno::Reference<
-                ::com::sun::star::document::XDocumentProperties>&,
-            SvKeyValueIterator* );
+    virtual bool ParseMetaOptions( const ::com::sun::star::uno::Reference<::com::sun::star::document::XDocumentProperties>&, SvKeyValueIterator* );
 };
 
 
@@ -971,8 +955,7 @@ inline void _HTMLAttr::SetStart( const SwPosition& rPos )
 	nEndCntnt = nSttCntnt;
 }
 
-inline void _HTMLAttrContext::SetMargins( sal_uInt16 nLeft, sal_uInt16 nRight,
-										  short nIndent )
+inline void _HTMLAttrContext::SetMargins( sal_uInt16 nLeft, sal_uInt16 nRight, short nIndent )
 {
 	nLeftMargin = nLeft;
 	nRightMargin = nRight;
@@ -981,8 +964,8 @@ inline void _HTMLAttrContext::SetMargins( sal_uInt16 nLeft, sal_uInt16 nRight,
 }
 
 inline void _HTMLAttrContext::GetMargins( sal_uInt16& nLeft,
-										  sal_uInt16& nRight,
-										  short& nIndent ) const
+                                          sal_uInt16& nRight,
+                                          short& nIndent ) const
 {
 	if( bLRSpaceChanged )
 	{
@@ -1010,10 +993,10 @@ inline void _HTMLAttrContext::GetULSpace( sal_uInt16& rUpper,
 }
 
 inline sal_Bool SwHTMLParser::HasStyleOptions( const String &rStyle,
-											const String &rId,
-											const String &rClass,
-											const String *pLang,
-	   										const String *pDir )
+                                               const String &rId,
+                                               const String &rClass,
+                                               const String *pLang,
+                                               const String *pDir )
 {
 	return rStyle.Len() || rId.Len() || rClass.Len() ||
 		   (pLang && pLang->Len()) || (pDir && pDir->Len());