Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


Hi everybody

As Nicolas Christener and I promised to Cedric at FOSDEM, we set sail to
translate the german comments in the sw/source/core/layout/ directory.

We're still not quite done, but here's what we have so far.

This, and any future contributions to LibreOffice are available
under the MPL / LGPLv3+ unless stated otherwise.

As far as I know, Nicolas has already sent his license statement, Stefan
will follow soon.

Since we're not very familiar with the code, it may well be that there
are conceptual mistakes in our translation, so read with care ;)


-- Dave

-- 
Adfinis SyGroup AG
David Vogt, Software Engineer / Project Manager
Keltenstrasse 98 | CH-3018 Bern
Tel. 031 381 70 47 | Direct 031 550 31 12

From c0d27bdb00eaf35332465fcb0a208ed2a35e6ae1 Mon Sep 17 00:00:00 2001
From: David Vogt <david.vogt@adfinis-sygroup.ch>
Date: Sun, 5 Feb 2012 16:39:12 +0100
Subject: [PATCH 01/22] Translated german code comments to english

---
 sw/source/core/layout/flypos.cxx |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/sw/source/core/layout/flypos.cxx b/sw/source/core/layout/flypos.cxx
index 0368882..b77236c 100644
--- a/sw/source/core/layout/flypos.cxx
+++ b/sw/source/core/layout/flypos.cxx
@@ -56,7 +56,7 @@ SwPosFlyFrm::SwPosFlyFrm( const SwNodeIndex& rIdx, const SwFrmFmt* pFmt,
     {
         if( RES_FLYFRMFMT == pFmt->Which() )
         {
-            // Schauen, ob es ein SdrObject dafuer gibt
+            // Let's see if we have an SdrObject for this
             SwFlyFrm* pFly = SwIterator<SwFlyFrm,SwFmt>::FirstElement(*pFmt);
             if( pFly )
             {
@@ -66,7 +66,7 @@ SwPosFlyFrm::SwPosFlyFrm( const SwNodeIndex& rIdx, const SwFrmFmt* pFmt,
         }
         else if( RES_DRAWFRMFMT == pFmt->Which() )
         {
-            // Schauen, ob es ein SdrObject dafuer gibt
+            // Let's see if we have an SdrObject for this
             SwDrawContact* pContact = SwIterator<SwDrawContact,SwFmt>::FirstElement(*pFmt);
             if( pContact )
             {
@@ -94,14 +94,14 @@ SwPosFlyFrm::~SwPosFlyFrm()
 
 sal_Bool SwPosFlyFrm::operator==( const SwPosFlyFrm& )
 {
-    return sal_False;   // FlyFrames koennen auf der gleichen Position stehen
+    return sal_False;   // FlyFrames can sit at the same position
 }
 
 sal_Bool SwPosFlyFrm::operator<( const SwPosFlyFrm& rPosFly )
 {
     if( pNdIdx->GetIndex() == rPosFly.pNdIdx->GetIndex() )
     {
-        // dann entscheidet die Ordnungsnummer!
+        // In this case, the order number decides!
         return nOrdNum < rPosFly.nOrdNum;
     }
     return pNdIdx->GetIndex() < rPosFly.pNdIdx->GetIndex();
-- 
1.7.9.1


From 6178e1ddb8ee73faa73ea0fc39b266d59757dab5 Mon Sep 17 00:00:00 2001
From: David Vogt <david.vogt@adfinis-sygroup.ch>
Date: Sun, 5 Feb 2012 16:39:23 +0100
Subject: [PATCH 02/22] Translated german code comments to english

---
 sw/source/core/layout/calcmove.cxx |  470 +++++++++++++++++-------------------
 1 files changed, 227 insertions(+), 243 deletions(-)

diff --git a/sw/source/core/layout/calcmove.cxx b/sw/source/core/layout/calcmove.cxx
index 1ca1b93..aa01638 100644
--- a/sw/source/core/layout/calcmove.cxx
+++ b/sw/source/core/layout/calcmove.cxx
@@ -65,14 +65,14 @@
 #include <ndtxt.hxx>
 
 //------------------------------------------------------------------------
-//              Move-Methoden
+//              Move methods
 //------------------------------------------------------------------------
 
 /*************************************************************************
 |*
 |*  SwCntntFrm::ShouldBwdMoved()
 |*
-|*  Beschreibung        Returnwert sagt, ob der Frm verschoben werden sollte.
+|*  Description        Return value tells whether the Frm should be moved.
 |*
 |*************************************************************************/
 
@@ -81,27 +81,24 @@ sal_Bool SwCntntFrm::ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool, sal_Bool
 {
     if ( (SwFlowFrm::IsMoveBwdJump() || !IsPrevObjMove()))
     {
-        //Das zurueckfliessen von Frm's ist leider etwas Zeitintensiv.
-        //Der haufigste Fall ist der, dass dort wo der Frm hinfliessen
-        //moechte die FixSize die gleiche ist, die der Frm selbst hat.
-        //In diesem Fall kann einfach geprueft werden, ob der Frm genug
-        //Platz fuer seine VarSize findet, ist dies nicht der Fall kann
-        //gleich auf das Verschieben verzichtet werden.
-        //Die Pruefung, ob der Frm genug Platz findet fuehrt er selbst
-        //durch, dabei wird beruecksichtigt, dass er sich moeglicherweise
-        //aufspalten kann.
-        //Wenn jedoch die FixSize eine andere ist oder Flys im Spiel sind
-        //(an der alten oder neuen Position) hat alle Prueferei keinen Sinn
-        //der Frm muss dann halt Probehalber verschoben werden (Wenn ueberhaupt
-        //etwas Platz zur Verfuegung steht).
-
-        //Die FixSize der Umgebungen in denen Cntnts herumlungern ist immer
-        //Die Breite.
-
-        //Wenn mehr als ein Blatt zurueckgegangen wurde (z.B. ueberspringen
-        //von Leerseiten), so muss in jedemfall gemoved werden - sonst wuerde,
-        //falls der Frm nicht in das Blatt passt, nicht mehr auf die
-        //dazwischenliegenden Blaetter geachtet werden.
+        // Floating back a frm uses a bit of time unfortunately.
+        // The most common case is the following: The Frm wants to float to 
+        // somewhere where the FixSize is the same that the Frm itself has already.
+        // In that case it's pretty easy to check if the Frm has enough space
+        // for it's VarSize. If this is NOT the case, we already know that
+        // we don't need to move.
+        // The Frm checks itself whether it has enough space - respecting the fact
+        // that it could probably split itself if needed.
+        // If, however, the FixSize differs from the Frm or there are Flys involved
+        // (either in the old or the new position), we don't need to check anything,
+        // and we have to move the Frm just to see what happens - if there's
+        // some space available to do it, that is.
+
+        // The FixSize of the surroundings of Cntnts is always the width.
+
+        // If we moved more than one sheet back (for example jumping over empty 
+        // pages), we have to move either way. Otherwise, if the Frm doesn't fit
+        // into the page, empty pages wouldn't be respected anymore.
         sal_uInt8 nMoveAnyway = 0;
         SwPageFrm * const pNewPage = pNewUpper->FindPageFrm();
         SwPageFrm *pOldPage = FindPageFrm();
@@ -126,8 +123,12 @@ sal_Bool SwCntntFrm::ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool, sal_Bool
         SWRECTFN( this )
         SWRECTFNX( pNewUpper )
         if( Abs( (pNewUpper->Prt().*fnRectX->fnGetWidth)() -
-                 (GetUpper()->Prt().*fnRect->fnGetWidth)() ) > 1 )
-            nMoveAnyway = 2; // Damit kommt nur noch ein _WouldFit mit Umhaengen in Frage
+                 (GetUpper()->Prt().*fnRect->fnGetWidth)() ) > 1 ) {
+            // In this case, only a _WouldFit with relocating is possible
+            // TODO after translating the comment: what did the original german "umhaengen"
+            //      mean? What does actually make sense in context of the code here?
+            nMoveAnyway = 2; 
+        }
 
         // OD 2004-05-26 #i25904# - do *not* move backward,
         // if <nMoveAnyway> equals 3 and no space is left in new upper.
@@ -192,17 +193,16 @@ sal_Bool SwCntntFrm::ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool, 
sal_Bool
             {
                 if ( nSpace )
                 {
-                    //Keine Beruecksichtigung der Fussnoten die an dem Absatz
-                    //kleben, denn dies wuerde extrem unuebersichtlichen Code
-                    //beduerfen (wg. Beruecksichtung der Breiten und vor allem
-                    //der Flys, die ja wieder Einfluss auf die Fussnoten nehmen...).
-
-                    // _WouldFit kann bei gleicher Breite und _nur_ selbst verankerten Flys
-                    // befragt werden.
-                    // _WouldFit kann auch gefragt werden, wenn _nur_ fremdverankerte Flys 
vorliegen,
-                    // dabei ist sogar die Breite egal, da ein TestFormat in der neuen Umgebung
-                    // vorgenommen wird.
-                    //
+                    // Not respecting footnotes which are stuck to the paragraph:
+                    // This would require extremely confusing code, regarding the widths
+                    // and Flys, that in turn influence the footnotes, ...
+
+                    // _WouldFit can only be used if the width is the same and ONLY
+                    // with self-anchored Flys.
+
+                    // _WouldFit can also be used if ONLY Flys anchored somewhere else are present.
+                    // In this case, the width doesn't even matter, because we're running a 
TestFormat
+                    // in the new surrounding.
                     const sal_uInt8 nBwdMoveNecessaryResult =
                                             BwdMoveNecessary( pNewPage, aRect);
                     const bool bObjsInNewUpper( nBwdMoveNecessaryResult == 2 ||
@@ -211,16 +211,16 @@ sal_Bool SwCntntFrm::ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool, 
sal_Bool
                     return _WouldFit( nSpace, pNewUpper, nMoveAnyway == 2,
                                       bObjsInNewUpper );
                 }
-                //Bei einem spaltigen Bereichsfrischling kann _WouldFit kein
-                //brauchbares Ergebnis liefern, also muessen wir wirklich
-                //zurueckfliessen
+                // It's impossible for _WouldFit to return a usable result if
+                // we have a fresh multi-column section - so we really have to
+                // float back
                 else if( pNewUpper->IsInSct() && pNewUpper->IsColBodyFrm() &&
                     !(pNewUpper->Prt().*fnRectX->fnGetWidth)() &&
                     ( pNewUpper->GetUpper()->GetPrev() ||
                       pNewUpper->GetUpper()->GetNext() ) )
                     return sal_True;
                 else
-                    return sal_False; // Kein Platz, dann ist es sinnlos, zurueckzufliessen
+                    return sal_False; // No space. No sense in floating back
             }
             else
             {
@@ -236,27 +236,27 @@ sal_Bool SwCntntFrm::ShouldBwdMoved( SwLayoutFrm *pNewUpper, sal_Bool, 
sal_Bool
 }
 
 //------------------------------------------------------------------------
-//              Calc-Methoden
+//              Calc methods
 //------------------------------------------------------------------------
 
 /*************************************************************************
 |*
 |*  SwFrm::Prepare()
 |*
-|*  Beschreibung        Bereitet den Frm auf die 'Formatierung' (MakeAll())
-|*      vor. Diese Methode dient dazu auf dem Stack Platz einzusparen,
-|*      denn zur Positionsberechnung des Frm muss sichergestellt sein, dass
-|*      die Position von Upper und Prev gueltig sind, mithin also ein
-|*      rekursiver Aufruf (Schleife waere relativ teuer, da selten notwendig).
-|*      Jeder Aufruf von MakeAll verbraucht aber ca. 500Byte Stack -
-|*      das Ende ist leicht abzusehen. _Prepare benoetigt nur wenig Stack,
-|*      deshalb solle der Rekursive Aufruf hier kein Problem sein.
-|*      Ein weiterer Vorteil ist, das eines schoenen Tages das _Prepare und
-|*      damit die Formatierung von Vorgaengern umgangen werden kann.
-|*      So kann evtl. mal 'schnell' an's Dokumentende gesprungen werden.
+|*  Description:        Prepares the Frm for "formatting" (MakeAll()).
+|*      This method serves to save stack space: To calculate the position
+|*      of the Frm we have to make sure that the positions of Upper and Prev
+|*      respectively are valid. This may require a recursive call (a loop 
+|*      would be quite expensive, as it's not required very often).
+|*      Every call of MakeAll requires around 500 bytes on the stack - you
+|*      easily see where this leads. _Prepare requires only a little bit of
+|*      stack space, so the recursive call should not be a problem here.
+|*      Another advantage is that one nice day, _Prepare and with it
+|*      the formatting of predecessors could be avoided. Then it could
+|*      probably be possible to jump "quickly" to the document's end.
 |*
 |*************************************************************************/
-//Zwei kleine Freundschaften werden hier zu einem Geheimbund.
+// Two little friendships form a secret society
 inline void PrepareLock( SwFlowFrm *pTab )
 {
     pTab->LockJoin();
@@ -285,7 +285,7 @@ void SwFrm::PrepareMake()
     {
         if ( lcl_IsCalcUpperAllowed( *this ) )
             GetUpper()->Calc();
-        OSL_ENSURE( GetUpper(), ":-( Layoutgeruest wackelig (Upper wech)." );
+        OSL_ENSURE( GetUpper(), ":-( Layout unstable (Upper gone)." );
         if ( !GetUpper() )
             return;
 
@@ -330,39 +330,37 @@ void SwFrm::PrepareMake()
             SwFrm *pFrm = GetUpper()->Lower();
             while ( pFrm != this )
             {
-                OSL_ENSURE( pFrm, ":-( Layoutgeruest wackelig (this not found)." );
+                OSL_ENSURE( pFrm, ":-( Layout unstable (this not found)." );
                 if ( !pFrm )
                     return; //Oioioioi ...
 
                 if ( !pFrm->IsValid() )
                 {
-                    //Ein kleiner Eingriff der hoffentlich etwas zur Verbesserung
-                    //der Stabilitaet beitraegt:
-                    //Wenn ich Follow _und_ Nachbar eines Frms vor mir bin,
-                    //so wuerde dieser mich beim Formatieren deleten; wie jeder
-                    //leicht sehen kann waere dies eine etwas unuebersichtliche
-                    //Situation die es zu vermeiden gilt.
+                    // A small interference that hopefully improves on the stability:
+                    // If I'm Follow AND neighbor of a Frm before me, it would delete
+                    // me when formatting. This as you can see could easily become a
+                    // confusing situation that we want to avoid.
                     if ( bFoll && pFrm->IsFlowFrm() &&
                          (SwFlowFrm::CastFlowFrm(pFrm))->IsAnFollow( pThis ) )
                         break;
 
-    //MA: 24. Mar. 94, Calc wuerde doch nur wieder in ein _Prepare laufen und so
-    //die ganze Kette nocheinmal abhuenern.
+    //MA: 24. Mar. 94, Calc would run into a _Prepare again and cause the whole chain to
+    // be run again.
     //              pFrm->Calc();
                     pFrm->MakeAll();
                     if( IsSctFrm() && !((SwSectionFrm*)this)->GetSection() )
                         break;
                 }
-                //Die Kette kann bei CntntFrms waehrend des durchlaufens
-                //aufgebrochen werden, deshalb muss der Nachfolger etwas
-                //umstaendlich ermittelt werden. However, irgendwann _muss_
-                //ich wieder bei mir selbst ankommen.
+                // With CntntFrms, the chain may be broken while walking through
+                // it. Therefore we have to figure out the follower in a bit more
+                // complicated way. However, I'll HAVE to get back to myself
+                // sometime again.
                 pFrm = pFrm->FindNext();
 
-                //Wenn wir in einem SectionFrm gestartet sind, koennen wir durch die
-                //MakeAll-Aufrufe in einen Section-Follow gewandert sein.
-                //FindNext liefert allerdings den SectionFrm, nicht seinen Inhalt.
-                // => wir finden uns selbst nicht mehr!
+                // If we started out in a SectionFrm, it might have happened that
+                // we landed in a Section Follow via the MakeAll calls.
+                // FindNext only gives us the SectionFrm, not it's content - we
+                // won't find ourselves anymore!
                 if( bNoSect && pFrm && pFrm->IsSctFrm() )
                 {
                     SwFrm* pCnt = ((SwSectionFrm*)pFrm)->ContainsAny();
@@ -370,14 +368,14 @@ void SwFrm::PrepareMake()
                         pFrm = pCnt;
                 }
             }
-            OSL_ENSURE( GetUpper(), "Layoutgeruest wackelig (Upper wech II)." );
+            OSL_ENSURE( GetUpper(), "Layout unstable (Upper gone II)." );
             if ( !GetUpper() )
                 return;
 
             if ( lcl_IsCalcUpperAllowed( *this ) )
                 GetUpper()->Calc();
 
-            OSL_ENSURE( GetUpper(), "Layoutgeruest wackelig (Upper wech III)." );
+            OSL_ENSURE( GetUpper(), "Layout unstable (Upper gone III)." );
         }
 
         if ( bTab && !bOldTabLock )
@@ -393,7 +391,7 @@ void SwFrm::OptPrepareMake()
          !GetUpper()->IsFlyFrm() )
     {
         GetUpper()->Calc();
-        OSL_ENSURE( GetUpper(), ":-( Layoutgeruest wackelig (Upper wech)." );
+        OSL_ENSURE( GetUpper(), ":-( Layout unstable (Upper gone)." );
         if ( !GetUpper() )
             return;
     }
@@ -416,7 +414,7 @@ void SwFrm::PrepareCrsr()
         GetUpper()->PrepareCrsr();
         GetUpper()->Calc();
 
-        OSL_ENSURE( GetUpper(), ":-( Layoutgeruest wackelig (Upper wech)." );
+        OSL_ENSURE( GetUpper(), ":-( Layout unstable (Upper gone)." );
         if ( !GetUpper() )
             return;
 
@@ -443,28 +441,26 @@ void SwFrm::PrepareCrsr()
         SwFrm *pFrm = GetUpper()->Lower();
         while ( pFrm != this )
         {
-            OSL_ENSURE( pFrm, ":-( Layoutgeruest wackelig (this not found)." );
+            OSL_ENSURE( pFrm, ":-( Layout unstable (this not found)." );
             if ( !pFrm )
                 return; //Oioioioi ...
 
             if ( !pFrm->IsValid() )
             {
-                //Ein kleiner Eingriff der hoffentlich etwas zur Verbesserung
-                //der Stabilitaet beitraegt:
-                //Wenn ich Follow _und_ Nachbar eines Frms vor mir bin,
-                //so wuerde dieser mich beim Formatieren deleten; wie jeder
-                //leicht sehen kann waere dies eine etwas unuebersichtliche
-                //Situation die es zu vermeiden gilt.
+                // A small interference that hopefully improves on the stability:
+                // If I'm Follow AND neighbor of a Frm before me, it would delete
+                // me when formatting. This as you can see could easily become a
+                // confusing situation that we want to avoid.
                 if ( bFoll && pFrm->IsFlowFrm() &&
                      (SwFlowFrm::CastFlowFrm(pFrm))->IsAnFollow( pThis ) )
                     break;
 
                 pFrm->MakeAll();
             }
-            //Die Kette kann bei CntntFrms waehrend des durchlaufens
-            //aufgebrochen werden, deshalb muss der Nachfolger etwas
-            //umstaendlich ermittelt werden. However, irgendwann _muss_
-            //ich wieder bei mir selbst ankommen.
+            // With CntntFrms, the chain may be broken while walking through
+            // it. Therefore we have to figure out the follower in a bit more
+            // complicated way. However, I'll HAVE to get back to myself
+            // sometime again.
             pFrm = pFrm->FindNext();
             if( bNoSect && pFrm && pFrm->IsSctFrm() )
             {
@@ -473,13 +469,13 @@ void SwFrm::PrepareCrsr()
                     pFrm = pCnt;
             }
         }
-        OSL_ENSURE( GetUpper(), "Layoutgeruest wackelig (Upper wech II)." );
+        OSL_ENSURE( GetUpper(), "Layout unstable (Upper gone II)." );
         if ( !GetUpper() )
             return;
 
         GetUpper()->Calc();
 
-        OSL_ENSURE( GetUpper(), "Layoutgeruest wackelig (Upper wech III)." );
+        OSL_ENSURE( GetUpper(), "Layout unstable (Upper gone III)." );
 
         if ( bTab && !bOldTabLock )
             ::PrepareUnlock( (SwTabFrm*)this );
@@ -493,8 +489,7 @@ void SwFrm::PrepareCrsr()
 |*
 |*************************************************************************/
 
-// Hier wird GetPrev() zurueckgegeben, allerdings werden
-// dabei leere SectionFrms ueberlesen
+// Here we return GetPrev(); however we will overlook empty SectionFrms
 SwFrm* lcl_Prev( SwFrm* pFrm, sal_Bool bSectPrv = sal_True )
 {
     SwFrm* pRet = pFrm->GetPrev();
@@ -535,7 +530,7 @@ void SwFrm::MakePos()
                  !pPrv->GetAttrSet()->GetKeep().GetValue()
                )
             {
-                pPrv->Calc();   //hierbei kann der Prev verschwinden!
+                pPrv->Calc();   // This may cause Prev to vanish!
             }
             else if ( pPrv->Frm().Top() == 0 )
             {
@@ -663,8 +658,7 @@ void SwFrm::MakePos()
 // #i28701# - new type <SwSortedObjs>
 void lcl_CheckObjects( SwSortedObjs* pSortedObjs, SwFrm* pFrm, long& rBot )
 {
-    //Und dann kann es natuerlich noch Absatzgebundene
-    //Rahmen geben, die unterhalb ihres Absatzes stehen.
+    // And then there can be paragraph anchored frames that sit below their paragraph.
     long nMax = 0;
     for ( sal_uInt16 i = 0; i < pSortedObjs->Count(); ++i )
     {
@@ -688,7 +682,7 @@ void lcl_CheckObjects( SwSortedObjs* pSortedObjs, SwFrm* pFrm, long& rBot )
             nTmp = pObj->GetObjRect().Bottom();
         nMax = Max( nTmp, nMax );
     }
-    ++nMax; //Unterkante vs. Hoehe!
+    ++nMax; // Lower edge vs. height!
     rBot = Max( rBot, nMax );
 }
 
@@ -696,8 +690,8 @@ void SwPageFrm::MakeAll()
 {
     PROTOCOL_ENTER( this, PROT_MAKEALL, 0, 0 )
 
-    const SwRect aOldRect( Frm() );     //Anpassung der Root-Groesse
-    const SwLayNotify aNotify( this );  //uebernimmt im DTor die Benachrichtigung
+    const SwRect aOldRect( Frm() );     // Adjust root size
+    const SwLayNotify aNotify( this );  // takes care of the notification in the dtor
     SwBorderAttrAccess *pAccess = 0;
     const SwBorderAttrs*pAttrs = 0;
 
@@ -725,7 +719,7 @@ void SwPageFrm::MakeAll()
                     pAccess = new SwBorderAttrAccess( SwFrm::GetCache(), this );
                     pAttrs = pAccess->Get();
                 }
-                //Bei der BrowseView gelten feste Einstellungen.
+                // In BrowseView, we use fixed settings
                 ViewShell *pSh = getRootFrm()->GetCurrShell();
                 if ( pSh && pSh->GetViewOptions()->getBrowseMode() )
                 {
@@ -748,13 +742,12 @@ void SwPageFrm::MakeAll()
                     SwLayoutFrm *pBody = FindBodyCont();
                     if ( pBody && pBody->Lower() && pBody->Lower()->IsColumnFrm() )
                     {
-                        //Fuer Spalten gilt eine feste Hoehe
+                        // Columns have a fixed height
                         Frm().Height( pAttrs->GetSize().Height() );
                     }
                     else
                     {
-                        //Fuer Seiten ohne Spalten bestimmt der Inhalt die
-                        //Groesse.
+                        // In pages without columns, the content defines the size.
                         long nBot = Frm().Top() + nTop;
                         SwFrm *pFrm = Lower();
                         while ( pFrm )
@@ -793,15 +786,15 @@ void SwPageFrm::MakeAll()
                             if ( !pFrm->IsBodyFrm() )
                                 nTmp = Min( nTmp, pFrm->Frm().Height() );
                             nBot += nTmp;
-                            // Hier werden die absatzgebundenen Objekte ueberprueft,
-                            // ob sie ueber den Body/FtnCont hinausragen.
+                            // Here we check whether paragraph anchored objects
+                            // protrude outside the Body/FtnCont.
                             if( pSortedObjs && !pFrm->IsHeaderFrm() &&
                                 !pFrm->IsFooterFrm() )
                                 lcl_CheckObjects( pSortedObjs, pFrm, nBot );
                             pFrm = pFrm->GetNext();
                         }
                         nBot += nBottom;
-                        //Und die Seitengebundenen
+                        // And the page anchored ones
                         if ( pSortedObjs )
                             lcl_CheckObjects( pSortedObjs, this, nBot );
                         nBot -= Frm().Top();
@@ -824,8 +817,8 @@ void SwPageFrm::MakeAll()
                     bValidSize = bValidPrtArea = sal_True;
                 }
                 else
-                {   //FixSize einstellen, bei Seiten nicht vom Upper sondern vom
-                    //Attribut vorgegeben.
+                {   // Set FixSize. For pages, this is not done from Upper, but from
+                    // the attribute.
                     Frm().SSize( pAttrs->GetSize() );
                     Format( pAttrs );
                 }
@@ -853,7 +846,7 @@ void SwLayoutFrm::MakeAll()
 {
     PROTOCOL_ENTER( this, PROT_MAKEALL, 0, 0 )
 
-        //uebernimmt im DTor die Benachrichtigung
+    // takes care of the notification in the dtor
     const SwLayNotify aNotify( this );
     sal_Bool bVert = IsVertical();
     //Badaa: 2008-04-18 * Support for Classical Mongolian Script (SCMS) joint with Jiayanmin
@@ -879,8 +872,7 @@ void SwLayoutFrm::MakeAll()
             {
                 if ( !bValidSize )
                 {
-                    //FixSize einstellen, die VarSize wird von Format() nach
-                    //Berechnung der PrtArea eingestellt.
+                    // Set FixSize; VarSize is set by Format() after calculating the PrtArea
                     bValidPrtArea = sal_False;
 
                     SwTwips nPrtWidth = (GetUpper()->Prt().*fnRect->fnGetWidth)();
@@ -994,10 +986,10 @@ sal_Bool SwCntntFrm::MakePrtArea( const SwBorderAttrs &rAttrs )
         }
         else
         {
-            //Vereinfachung: CntntFrms sind immer in der Hoehe Variabel!
+            // Simplification: CntntFrms are always variable in height!
 
-            //An der FixSize gibt der umgebende Frame die Groesse vor, die
-            //Raender werden einfach abgezogen.
+            // At the FixSize, the surrounding Frame enforces the size;
+            // the borders are simply subtracted.
             const long nLeft = rAttrs.CalcLeft( this );
             const long nRight = ((SwBorderAttrs&)rAttrs).CalcRight( this );
             (this->*fnRect->fnSetXMargins)( nLeft, nRight );
@@ -1005,12 +997,12 @@ sal_Bool SwCntntFrm::MakePrtArea( const SwBorderAttrs &rAttrs )
             ViewShell *pSh = getRootFrm()->GetCurrShell();
             SwTwips nWidthArea;
             if( pSh && 0!=(nWidthArea=(pSh->VisArea().*fnRect->fnGetWidth)()) &&
-                GetUpper()->IsPageBodyFrm() &&  // nicht dagegen bei BodyFrms in Columns
+                GetUpper()->IsPageBodyFrm() &&  // Not against for BodyFrms in Columns
                 pSh->GetViewOptions()->getBrowseMode() )
             {
-                //Nicht ueber die Kante des sichbaren Bereiches hinausragen.
-                //Die Seite kann breiter sein, weil es Objekte mit "ueberbreite"
-                //geben kann (RootFrm::ImplCalcBrowseWidth())
+                // Do not protrude the edge of the visible area. The page may be
+                // wider, because there may be objects with excess width
+                // (RootFrm::ImplCalcBrowseWidth())
                 long nMinWidth = 0;
 
                 for (sal_uInt16 i = 0; GetDrawObjs() && i < GetDrawObjs()->Count();++i)
@@ -1045,8 +1037,8 @@ sal_Bool SwCntntFrm::MakePrtArea( const SwBorderAttrs &rAttrs )
 
             if ( (Prt().*fnRect->fnGetWidth)() <= MINLAY )
             {
-                //Die PrtArea sollte schon wenigstens MINLAY breit sein, passend
-                //zu den Minimalwerten des UI
+                // The PrtArea should already be at least MINLAY wide, matching the
+                // minimal values of the UI
                 (Prt().*fnRect->fnSetWidth)( Min( long(MINLAY),
                                              (Frm().*fnRect->fnGetWidth)() ) );
                 SwTwips nTmp = (Frm().*fnRect->fnGetWidth)() -
@@ -1055,16 +1047,17 @@ sal_Bool SwCntntFrm::MakePrtArea( const SwBorderAttrs &rAttrs )
                     (Prt().*fnRect->fnSetLeft)( nTmp );
             }
 
-            //Fuer die VarSize gelten folgende Regeln:
-            //1. Der erste einer Kette hat keinen Rand nach oben
-            //2. Nach unten gibt es nie einen Rand
-            //3. Der Rand nach oben ist das Maximum aus dem Abstand des
-            //   Prev nach unten und dem eigenen Abstand nach oben.
-            //Die drei Regeln werden auf die Berechnung der Freiraeume, die von
-            //UL- bzw. LRSpace vorgegeben werden, angewand. Es gibt in alle
-            //Richtungen jedoch ggf. trotzdem einen Abstand; dieser wird durch
-            //Umrandung und/oder Schatten vorgegeben.
-            //4. Der Abstand fuer TextFrms entspricht mindestens dem Durchschuss
+            // The following rules apply for VarSize:
+            // 1. The first entry of a chain has no top border
+            // 2. There is never a bottom border
+            // 3. The top border is the maximum of the distance
+            //    of Prev downwards and our own distance upwards
+            // Those three rules apply when calculating spacings
+            // that are given by UL- and LRSpace. There might be a spacing
+            // in all directions however; this may be caused by borders
+            // and / or shadows.
+            // 4. The spacing for TextFrms corresponds to the interline lead, 
+            //    at a minimum.
 
             nUpper = CalcUpperSpace( &rAttrs, NULL );
 
@@ -1090,8 +1083,8 @@ sal_Bool SwCntntFrm::MakePrtArea( const SwBorderAttrs &rAttrs )
             nUpper -= (Frm().*fnRect->fnGetHeight)() -
                       (Prt().*fnRect->fnGetHeight)();
         }
-        //Wenn Unterschiede zwischen Alter und neuer Groesse,
-        //Grow() oder Shrink() rufen
+        // If there's a difference between old and new size, call Grow() or 
+        // Shrink() respectively.
         if ( nUpper )
         {
             if ( nUpper > 0 )
@@ -1125,7 +1118,7 @@ inline void ValidateSz( SwFrm *pFrm )
 
 void SwCntntFrm::MakeAll()
 {
-    OSL_ENSURE( GetUpper(), "keinen Upper?" );
+    OSL_ENSURE( GetUpper(), "no Upper?" );
     OSL_ENSURE( IsTxtFrm(), "MakeAll(), NoTxt" );
 
     if ( !IsFollow() && StackHack::IsLocked() )
@@ -1140,7 +1133,7 @@ void SwCntntFrm::MakeAll()
 
     if ( ((SwTxtFrm*)this)->IsLocked() )
     {
-        OSL_FAIL( "Format fuer gelockten TxtFrm." );
+        OSL_FAIL( "Format for locked TxtFrm." );
         return;
     }
 
@@ -1165,7 +1158,7 @@ void SwCntntFrm::MakeAll()
     }
 #endif
 
-    //uebernimmt im DTor die Benachrichtigung
+    // takes care of the notification in the dtor
     SwCntntNotify *pNotify = new SwCntntNotify( this );
 
     // as long as bMakePage is true, a new page can be created (exactly once)
@@ -1175,28 +1168,24 @@ void SwCntntFrm::MakeAll()
     // as long as bMovedFwd is false, the Frm may flow backwards (until
     // it has been moved forward once)
     bool bMovedFwd  = false;
-    sal_Bool    bFormatted  = sal_False;    //Fuer die Witwen und Waisen Regelung
-                                    //wird der letzte CntntFrm einer Kette
-                                    //u.U. zum Formatieren angeregt, dies
-                                    //braucht nur einmal zu passieren.
-                                    //Immer wenn der Frm gemoved wird muss
-                                    //das Flag zurueckgesetzt werden.
-    sal_Bool    bMustFit    = sal_False;    //Wenn einmal die Notbremse gezogen wurde,
-                                    //werden keine anderen Prepares mehr
-                                    //abgesetzt.
-    sal_Bool    bFitPromise = sal_False;    //Wenn ein Absatz nicht passte, mit WouldFit
-                                    //aber verspricht, dass er sich passend
-                                    //einstellt wird dieses Flag gesetzt.
-                                    //Wenn er dann sein Versprechen nicht haelt,
-                                    //kann kontrolliert verfahren werden.
+    sal_Bool    bFormatted  = sal_False;    // For the widow/orphan rules, we encourage the
+                                            // last CntntFrm of a chain to format. This only
+                                            // needs to happen once. Every time the Frm is
+                                            // moved, the flag will have to be reset.
+    sal_Bool    bMustFit    = sal_False;    // Once the emergency brake is pulled, 
+                                            // no other prepares will be triggered
+    sal_Bool    bFitPromise = sal_False;    // If a paragraph didn't fit, but promises
+                                            // with WouldFit that it would adjust accordingly,
+                                            // this flag is set. If it turns out that it
+                                            // didn't keep it's promise, we can act in a
+                                            // controlled fashion.
     sal_Bool bMoveable;
     const sal_Bool bFly = IsInFly();
     const sal_Bool bTab = IsInTab();
     const sal_Bool bFtn = IsInFtn();
     const sal_Bool bSct = IsInSct();
-    Point aOldFrmPos;               //Damit bei Turnarounds jew. mit der
-    Point aOldPrtPos;               //letzten Pos verglichen und geprueft
-                                    //werden kann, ob ein Prepare sinnvoll ist.
+    Point aOldFrmPos;               // This is so we can compare with the last pos
+    Point aOldPrtPos;               // and determine whether it makes sense to Prepare
 
     SwBorderAttrAccess aAccess( SwFrm::GetCache(), this );
     const SwBorderAttrs &rAttrs = *aAccess.Get();
@@ -1256,8 +1245,8 @@ void SwCntntFrm::MakeAll()
         }
     }
 
-    //Wenn ein Follow neben seinem Master steht und nicht passt, kann er
-    //gleich verschoben werden.
+    // If a Follow sits next to it's Master and doesn't fit, we know it can
+    // be moved right now.
     if ( lcl_Prev( this ) && ((SwTxtFrm*)this)->IsFollow() && IsMoveable() )
     {
         bMovedFwd = true;
@@ -1309,11 +1298,10 @@ void SwCntntFrm::MakeAll()
                 bMovedFwd = true;
                 if ( bMovedBwd )
                 {
-                    //Beim zurueckfliessen wurde der Upper angeregt sich
-                    //vollstaendig zu Painten, dass koennen wir uns jetzt
-                    //nach dem hin und her fliessen sparen.
+                    // while floating back, the Upper was encouraged to completely
+                    // re-paint itself. We can skip this now after floating sideways.
                     GetUpper()->ResetCompletePaint();
-                    //Der Vorgaenger wurde Invalidiert, das ist jetzt auch obsolete.
+                    // The predecessor was invalidated, so this is obsolete as well now.
                     OSL_ENSURE( pPre, "missing old Prev" );
                     if( !pPre->IsSctFrm() )
                         ::ValidateSz( pPre );
@@ -1328,7 +1316,7 @@ void SwCntntFrm::MakeAll()
         if ( !bValidPos )
             MakePos();
 
-        //FixSize einstellen, die VarSize wird von Format() justiert.
+        //Set FixSize. VarSize is being adjusted by Format().
         if ( !bValidSize )
         {
             // #125452#
@@ -1387,11 +1375,10 @@ void SwCntntFrm::MakeAll()
             }
         }
 
-        //Damit die Witwen- und Waisen-Regelung eine Change bekommt muss der
-        //CntntFrm benachrichtigt werden.
-        //Kriterium:
-        //- Er muss Moveable sein (sonst mach das Spalten keinen Sinn.)
-        //- Er muss mit der Unterkante der PrtArea des Upper ueberlappen.
+        // To make the widow and orphan rules work, we need to notify the CntntFrm.
+        // Criteria:
+        // - It needs to be movable (otherwise, splitting doesn't make sense)
+        // - It needs to overlap with the lower edge of the PrtArea of the Upper
         if ( !bMustFit )
         {
             sal_Bool bWidow = sal_True;
@@ -1405,8 +1392,8 @@ void SwCntntFrm::MakeAll()
             if( (Frm().*fnRect->fnGetPos)() != aOldFrmPos ||
                 (Prt().*fnRect->fnGetPos)() != aOldPrtPos )
             {
-                // In diesem Prepare erfolgt ggf. ein _InvalidateSize().
-                // bValidSize wird sal_False und das Format() wird gerufen.
+                // In this Prepare, an _InvalidateSize() might happen.
+                // bValidSize becomes sal_False and Format() gets called.
                 Prepare( PREP_POS_CHGD, (const void*)&bFormatted, sal_False );
                 if ( bWidow && GetFollow() )
                 {   Prepare( PREP_WIDOWS_ORPHANS, 0, sal_False );
@@ -1481,7 +1468,7 @@ void SwCntntFrm::MakeAll()
                 }
                 SwFrm *pNxt = HasFollow() ? NULL : FindNext();
                 while( pNxt && pNxt->IsSctFrm() )
-                {   // Leere Bereiche auslassen, in die anderen hinein
+                {   // Leave empty sections out, go into the other ones.
                     if( ((SwSectionFrm*)pNxt)->GetSection() )
                     {
                         SwFrm* pTmp = ((SwSectionFrm*)pNxt)->ContainsAny();
@@ -1512,8 +1499,8 @@ void SwCntntFrm::MakeAll()
             }
         }
 
-        //Der TxtFrm Validiert sich bei Fussnoten ggf. selbst, dass kann leicht
-        //dazu fuehren, dass seine Position obwohl unrichtig valide ist.
+        // In footnotes, the TxtFrm may validate itself, which can lead to the
+        // situation that it's position is wrong despite being "valid".
         if ( bValidPos )
         {
             // #i59341#
@@ -1547,29 +1534,31 @@ void SwCntntFrm::MakeAll()
             }
         }
 
-        //Wieder ein Wert ungueltig? - dann nochmal das ganze...
+        // Yet again an invalid value? Repeat from the start...
         if ( !bValidPos || !bValidSize || !bValidPrtArea )
             continue;
 
-        //Fertig?
-        // Achtung, wg. Hoehe==0, ist es besser statt Bottom() Top()+Height() zu nehmen
-        // (kommt bei Undersized TxtFrms an der Unterkante eines spaltigen Bereichs vor)
+        // Done?
+        // Attention: because height == 0, it's better to use Top()+Height() instead of
+        // Bottom(). This might happen with undersized TextFrms on the lower edge of a
+        // multi-column section
         const long nPrtBottom = (GetUpper()->*fnRect->fnGetPrtBottom)();
         const long nBottomDist =  (Frm().*fnRect->fnBottomDist)( nPrtBottom );
         if( nBottomDist >= 0 )
         {
             if ( bKeep && bMoveable )
             {
-                //Wir sorgen dafuer, dass der Nachfolger gleich mit formatiert
-                //wird. Dadurch halten wir das Heft in der Hand, bis wirklich
-                //(fast) alles stabil ist. So vermeiden wir Endlosschleifen,
-                //die durch staendig wiederholte Versuche entstehen.
-                //Das bMoveFwdInvalid ist fuer #38407# notwendig. War urspruenglich
-                //in flowfrm.cxx rev 1.38 behoben, das unterbrach aber obiges
-                //Schema und spielte lieber Tuerme von Hanoi (#43669#).
+                // We make sure the successor will be formatted the same.
+                // This way, we keep control until (almost) everything is stable,
+                // allowing us to avoid endless loops caused by ever repeating
+                // retries.
+                //
+                // bMoveFwdInvalid is required for #38407#. This was originally solved
+                // in flowfrm.cxx rev 1.38, but broke the above schema and
+                // preferred to play towers of hanoi (#43669#).
                 SwFrm *pNxt = HasFollow() ? NULL : FindNext();
-                // Bei Bereichen nehmen wir lieber den Inhalt, denn nur
-                // dieser kann ggf. die Seite wechseln
+                // For sections we prefer the content, because it can change
+                // the page if required.
                 while( pNxt && pNxt->IsSctFrm() )
                 {
                     if( ((SwSectionFrm*)pNxt)->GetSection() )
@@ -1601,13 +1590,12 @@ void SwCntntFrm::MakeAll()
             continue;
         }
 
-        //Ich passe nicht mehr in meinen Uebergeordneten, also ist es jetzt
-        //an der Zeit moeglichst konstruktive Veranderungen vorzunehmen
+        // I don't fit into my parents, so it's time to make changes 
+        // as constructively as possible.
 
-        //Wenn ich den uebergeordneten Frm nicht verlassen darf, habe
-        //ich ein Problem; Frei nach Artur Dent tun wir das einzige das man
-        //mit einen nicht loesbaren Problem tun kann: wir ignorieren es - und
-        //zwar mit aller Kraft.
+        //If I'm NOT allowed to leave the parent Frm, I've got a problem.
+        // Following Arthur Dent, we do the only thing that you can do with
+        // an unsolvable problem: We ignore it with all our power.
         if ( !bMoveable || IsUndersized() )
         {
             if( !bMoveable && IsInTab() )
@@ -1621,15 +1609,15 @@ void SwCntntFrm::MakeAll()
             break;
         }
 
-        //Wenn ich nun ueberhaupt ganz und garnicht in meinen Upper passe
-        //so kann die Situation vielleicht doch noch durch Aufbrechen
-        //aufgeklart werden. Diese Situation tritt bei einem frisch
-        //erzeugten Follow auf, der zwar auf die Folgeseite geschoben wurde
-        //aber selbst noch zu gross fuer diese ist; also wiederum
-        //aufgespalten werden muss.
-        //Wenn ich nicht passe und nicht Spaltbar (WouldFit()) bin, so schicke
-        //ich meinem TxtFrmanteil die Nachricht, dass eben falls moeglich
-        //trotz des Attributes 'nicht aufspalten' aufgespalten werden muss.
+        // If there's no way I can make myself fit into my Upper, the situation
+        // could still probably be mitigated by splitting up.
+        // This situation arises with freshly created Follows that had been moved
+        // to the next page but is still too big for it - ie. needs to be split
+        // as well.
+        //
+        // If I'm unable to split (WouldFit()) and can't be fitted, I'm going
+        // to tell my TxtFrm part that, if possible, we still need to split despite
+        // the "don't split" attribute.
         sal_Bool bMoveOrFit = sal_False;
         sal_Bool bDontMoveMe = !GetIndPrev();
         if( bDontMoveMe && IsInSct() )
@@ -1661,14 +1649,13 @@ void SwCntntFrm::MakeAll()
                     continue;
                 }
                 /* --------------------------------------------------
-                 * Frueher wurde in Rahmen und Bereichen niemals versucht,
-                 * durch bMoveOrFit den TxtFrm unter Verzicht auf seine
-                 * Attribute (Widows,Keep) doch noch passend zu bekommen.
-                 * Dies haette zumindest bei spaltigen Rahmen versucht
-                 * werden muessen, spaetestens bei verketteten Rahmen und
-                 * in Bereichen muss es versucht werden.
-                 * Ausnahme: Wenn wir im FormatWidthCols stehen, duerfen die
-                 * Attribute nicht ausser Acht gelassen werden.
+                 * In earlier days, we never tried to fit TextFrms in 
+                 * frames and sections using bMoveOrFit by setting aside
+                 * the attributes (Widows, Keep).
+                 * This should have been done at least for column frames;
+                 * as it must be tried anyway with linked frames and sections.
+                 * Exception: If we sit in FormatWidthCols, we may not ignore
+                 * the attributes.
                  * --------------------------------------------------*/
                 else if ( !bFtn && bMoveable &&
                       ( !bFly || !FindFlyFrm()->IsColLocked() ) &&
@@ -1678,20 +1665,20 @@ void SwCntntFrm::MakeAll()
 #if OSL_DEBUG_LEVEL > 0
             else
             {
-                OSL_FAIL( "+TxtFrm hat WouldFit-Versprechen nicht eingehalten." );
+                OSL_FAIL( "+TxtFrm didn't respect WouldFit promise." );
             }
 #endif
         }
 
-        //Mal sehen ob ich irgenwo Platz finde...
-        //Benachbarte Fussnoten werden in _MoveFtnCntFwd 'vorgeschoben'
+        // Let's see if I can find some space somewhere...
+        // footnotes in the neighbourhood are moved into _MoveFtnCntFwd
         SwFrm *pPre = GetIndPrev();
         SwFrm *pOldUp = GetUpper();
 
-/* MA 13. Oct. 98: Was soll das denn sein!?
- * AMA 14. Dec 98: Wenn ein spaltiger Bereich keinen Platz mehr fuer seinen ersten ContentFrm
- *      bietet, so soll dieser nicht nur in die naechste Spalte, sondern ggf. bis zur naechsten
- *      Seite wandern und dort einen Section-Follow erzeugen.
+/* MA 13. Oct. 98: What is this supposed to be!?
+ * AMA 14. Dec 98: If a column section can't find any space for its first ContentFrm, it should be
+ *                 moved not only to the next column, but probably even to the next page, creating
+ *                 a section-follow there.
  */
         if( IsInSct() && bMovedFwd && bMakePage && pOldUp->IsColBodyFrm() &&
             pOldUp->GetUpper()->GetUpper()->IsSctFrm() &&
@@ -1741,7 +1728,7 @@ void SwCntntFrm::MakeAll()
 #endif
         }
         if ( bMovedBwd && GetUpper() )
-        {   //Unuetz gewordene Invalidierungen zuruecknehmen.
+        {   // Retire invalidations that have become useless.
             GetUpper()->ResetCompletePaint();
             if( pPre && !pPre->IsSctFrm() )
                 ::ValidateSz( pPre );
@@ -1792,17 +1779,16 @@ void SwCntntFrm::MakeAll()
 
 void MakeNxt( SwFrm *pFrm, SwFrm *pNxt )
 {
-    //fix(25455): Validieren, sonst kommt es zu einer Rekursion.
-    //Der erste Versuch, der Abbruch mit pFrm = 0 wenn !Valid,
-    //fuehrt leider zu dem Problem, dass das Keep dann u.U. nicht mehr
-    //korrekt beachtet wird (27417)
+    // fix(25455): Validate, otherwise this leads to a recursion.
+    // The first try, cancelling with pFrm = 0 if !Valid, leads to a problem, as
+    // the Keep may not be considered properly anymore (27417).
     const sal_Bool bOldPos = pFrm->GetValidPosFlag();
     const sal_Bool bOldSz  = pFrm->GetValidSizeFlag();
     const sal_Bool bOldPrt = pFrm->GetValidPrtAreaFlag();
     pFrm->bValidPos = pFrm->bValidPrtArea = pFrm->bValidSize = sal_True;
 
-    //fix(29272): Nicht MakeAll rufen, dort wird evtl. pFrm wieder invalidert
-    //und kommt rekursiv wieder herein.
+    // fix(29272): Don't call MakeAll - there, pFrm might be invalidated again, and
+    // we recursively end up in here again.
     if ( pNxt->IsCntntFrm() )
     {
         SwCntntNotify aNotify( (SwCntntFrm*)pNxt );
@@ -1838,21 +1824,21 @@ void MakeNxt( SwFrm *pFrm, SwFrm *pNxt )
     pFrm->bValidPrtArea  = bOldPrt;
 }
 
-// Diese Routine ueberprueft, ob zwischen dem FtnBoss von pFrm und dem
-// von pNxt keine anderen FtnBosse liegen
+// This routine checks whether there are no other FtnBosses
+// between the pFrm's FtnBoss and the pNxt's FtnBoss.
 
 sal_Bool lcl_IsNextFtnBoss( const SwFrm *pFrm, const SwFrm* pNxt )
 {
     OSL_ENSURE( pFrm && pNxt, "lcl_IsNextFtnBoss: No Frames?" );
     pFrm = pFrm->FindFtnBossFrm();
     pNxt = pNxt->FindFtnBossFrm();
-    // Falls pFrm eine letzte Spalte ist, wird stattdessen die Seite genommen
+    // If pFrm is a last column, we use the page instead.
     while( pFrm && pFrm->IsColumnFrm() && !pFrm->GetNext() )
         pFrm = pFrm->GetUpper()->FindFtnBossFrm();
-    // Falls pNxt eine erste Spalte ist, wird stattdessen die Seite genommen
+    // If pNxt is a first column, we use the page instead.
     while( pNxt && pNxt->IsColumnFrm() && !pNxt->GetPrev() )
         pNxt = pNxt->GetUpper()->FindFtnBossFrm();
-    // So, jetzt muessen pFrm und pNxt entweder zwei benachbarte Seiten oder Spalten sein.
+    // So.. now pFrm and pNxt are either two adjacent pages or columns.
     return ( pFrm && pNxt && pFrm->GetNext() == pNxt );
 }
 
@@ -1862,10 +1848,9 @@ sal_Bool SwCntntFrm::_WouldFit( SwTwips nSpace,
                             sal_Bool bTstMove,
                             const bool bObjsInNewUpper )
 {
-    //Damit die Fussnote sich ihren Platz sorgsam waehlt, muss
-    //sie in jedem Fall gemoved werden, wenn zwischen dem
-    //neuen Upper und ihrer aktuellen Seite/Spalte mindestens eine
-    //Seite/Spalte liegt.
+    // To have the footnote select it's place carefully, it needs
+    // to be moved in any case if there is at least one page/column
+    // between the footnote and the new Upper.
     SwFtnFrm* pFtnFrm = 0;
     if ( IsInFtn() )
     {
@@ -1893,17 +1878,16 @@ sal_Bool SwCntntFrm::_WouldFit( SwTwips nSpace,
              ( pFrm->GetUpper()->IsColBodyFrm() || ( pFtnFrm &&
                pFtnFrm->GetUpper()->GetUpper()->IsColumnFrm() ) ) ) )
         {
-            //Jetzt wirds ein bischen hinterlistig; empfindliche Gemueter sollten
-            //lieber wegsehen. Wenn ein Flys Spalten enthaelt so sind die Cntnts
-            //moveable, mit Ausnahme der in der letzten Spalte (siehe
-            //SwFrm::IsMoveable()). Zurueckfliessen duerfen sie aber natuerlich.
-            //Das WouldFit() liefert leider nur dann einen vernueftigen Wert, wenn
-            //der Frm moveable ist. Um dem WouldFit() einen Moveable Frm
-            //vorzugaukeln haenge ich ihn einfach solange um.
-            // Auch bei spaltigen Bereichen muss umgehaengt werden, damit
-            // SwSectionFrm::Growable() den richtigen Wert liefert.
-            // Innerhalb von Fussnoten muss ggf. sogar der SwFtnFrm umgehaengt werden,
-            // falls es dort keinen SwFtnFrm gibt.
+            // This is going to get a bit insidious now. If you're faint of heart,
+            // you'd better look away here. If a Fly contains columns, then the Cntnts
+            // are movable, except the one in the last column (see SwFrm::IsMoveable()).
+            // Of course they're allowed to float back. WouldFit() only returns a usable
+            // value if the Frm is movable. To fool WouldFit() into believing there's 
+            // a movable Frm, I'm just going to hang it somewhere else for the time.
+            // The same procedure applies for column sections to make SwSectionFrm::Growable()
+            // return the proper value.
+            // Within footnotes, we may even need to put the SwFtnFrm somewhere else, if 
+            // there's no SwFtnFrm there.
             SwFrm* pTmpFrm = pFrm->IsInFtn() && !pNewUpper->FindFtnFrm() ?
                              (SwFrm*)pFrm->FindFtnFrm() : pFrm;
             SwLayoutFrm *pUp = pTmpFrm->GetUpper();
@@ -1937,8 +1921,8 @@ sal_Bool SwCntntFrm::_WouldFit( SwTwips nSpace,
         SwBorderAttrAccess aAccess( SwFrm::GetCache(), pFrm );
         const SwBorderAttrs &rAttrs = *aAccess.Get();
 
-        //Bitter aber wahr: Der Abstand muss auch noch mit einkalkuliert werden.
-        //Bei TestFormatierung ist dies bereits geschehen.
+        // Sad but true: We need to consider the spacing in our calculation.
+        // This already happened in TestFormat.
         if ( bRet && !bTstMove )
         {
             SwTwips nUpper;
@@ -1990,7 +1974,7 @@ sal_Bool SwCntntFrm::_WouldFit( SwTwips nSpace,
                 // #i46181#
                 if ( nSecondCheck > 0 )
                 {
-                    // The following code is indented to solve a (rare) problem
+                    // The following code is intended to solve a (rare) problem
                     // causing some frames not to move backward:
                     // SwTxtFrm::WouldFit() claims that the whole paragraph
                     // fits into the given space and subtracts the height of
@@ -2042,7 +2026,7 @@ sal_Bool SwCntntFrm::_WouldFit( SwTwips nSpace,
                 ( !pFtnFrm || ( pNxt->IsInFtn() &&
                   pNxt->FindFtnFrm()->GetAttr() == pFtnFrm->GetAttr() ) ) )
             {
-                // ProbeFormatierung vertraegt keine absatz- oder gar zeichengebundene Objekte
+                // TestFormat(?) does not like paragraph- or character anchored objects.
                 //
                 // current solution for the test formatting doesn't work, if
                 // objects are present in the remaining area of the new upper
@@ -2055,9 +2039,9 @@ sal_Bool SwCntntFrm::_WouldFit( SwTwips nSpace,
                 if ( !pNxt->IsValid() )
                     MakeNxt( pFrm, pNxt );
 
-                //Kleiner Trick: Wenn der naechste einen Vorgaenger hat, so hat
-                //er den Absatzabstand bereits berechnet. Er braucht dann nicht
-                //teuer kalkuliert werden.
+                // Little trick: if the next has a predecessor, then the paragraph
+                // spacing has been calculated already, and we don't need to re-calculate
+                // it in an expensive way.
                 if( lcl_NotHiddenPrev( pNxt ) )
                     pTmpPrev = 0;
                 else
-- 
1.7.9.1


From 23b43e5aa6b663cb8f4119ac240eef16f29de000 Mon Sep 17 00:00:00 2001
From: David Vogt <david.vogt@adfinis-sygroup.ch>
Date: Mon, 6 Feb 2012 10:45:17 +0100
Subject: [PATCH 03/22] Translated german code comments to english

---
 sw/source/core/layout/newfrm.cxx |   56 ++++++++++++++++++-------------------
 1 files changed, 27 insertions(+), 29 deletions(-)

diff --git a/sw/source/core/layout/newfrm.cxx b/sw/source/core/layout/newfrm.cxx
index 1e9b0e8..a74e03b 100644
--- a/sw/source/core/layout/newfrm.cxx
+++ b/sw/source/core/layout/newfrm.cxx
@@ -356,8 +356,8 @@ SwRectFn fnRectVL2R = &aVerticalRightToLeft;
 // #i65250#
 sal_uInt32 SwFrm::mnLastFrmId=0;
 
-TYPEINIT1(SwFrm,SwClient);      //rtti fuer SwFrm
-TYPEINIT1(SwCntntFrm,SwFrm);    //rtti fuer SwCntntFrm
+TYPEINIT1(SwFrm,SwClient);      //rtti for SwFrm
+TYPEINIT1(SwCntntFrm,SwFrm);    //rtti for SwCntntFrm
 
 
 void _FrmInit()
@@ -376,12 +376,12 @@ void _FrmInit()
 void _FrmFinit()
 {
 #if OSL_DEBUG_LEVEL > 0
-    // im Chache duerfen nur noch 0-Pointer stehen
+    // The cache may only contain null pointers at this time.
     for( sal_uInt16 n = SwFrm::GetCachePtr()->Count(); n; )
         if( (*SwFrm::GetCachePtr())[ --n ] )
         {
             SwCacheObj* pObj = (*SwFrm::GetCachePtr())[ n ];
-            OSL_ENSURE( !pObj, "Wer hat sich nicht ausgetragen?");
+            OSL_ENSURE( !pObj, "Wer hat sich nicht ausgetragen?"); // TOOD: translate?
         }
 #endif
     delete SwRootFrm::pVout;
@@ -390,7 +390,7 @@ void _FrmFinit()
 
 /*************************************************************************
 |*
-|*  RootFrm::Alles was so zur CurrShell gehoert
+|*  RootFrm::Everything that belongs to CurrShell
 |*
 |*************************************************************************/
 
@@ -400,7 +400,7 @@ SV_IMPL_PTRARR_SORT(SwCurrShells,CurrShellPtr)
 
 CurrShell::CurrShell( ViewShell *pNew )
 {
-    OSL_ENSURE( pNew, "0-Shell einsetzen?" );
+    OSL_ENSURE( pNew, "insert 0-Shell?" );
     pRoot = pNew->GetLayout();
     if ( pRoot )
     {
@@ -438,15 +438,15 @@ void SetShell( ViewShell *pSh )
 
 void SwRootFrm::DeRegisterShell( ViewShell *pSh )
 {
-    //Wenn moeglich irgendeine Shell aktivieren
+    // Activate some shell if possible
     if ( pCurrShell == pSh )
         pCurrShell = pSh->GetNext() != pSh ? (ViewShell*)pSh->GetNext() : 0;
 
-    //Das hat sich eruebrigt
+    // Doesn't matter anymore
     if ( pWaitingCurrShell == pSh )
         pWaitingCurrShell = 0;
 
-    //Referenzen entfernen.
+    // Remove references
     for ( sal_uInt16 i = 0; i < pCurrShells->Count(); ++i )
     {
         CurrShell *pC = (*pCurrShells)[i];
@@ -465,10 +465,10 @@ void InitCurrShells( SwRootFrm *pRoot )
 |*
 |*  SwRootFrm::SwRootFrm()
 |*
-|*  Beschreibung:
-|*      Der RootFrm laesst sich grundsaetzlich vom Dokument ein eigenes
-|*      FrmFmt geben. Dieses loescht er dann selbst im DTor.
-|*      Das eigene FrmFmt wird vom uebergebenen Format abgeleitet.
+|*  Description:
+|*      The RootFrm requests an own FrmFmt from the document, which it is
+|*      going to delete again in the dtor. The own FrmFmt is derived from
+|*      the passed-in FrmFmt.
 |*
 |*************************************************************************/
 
@@ -483,7 +483,7 @@ SwRootFrm::SwRootFrm( SwFrmFmt *pFmt, ViewShell * pSh ) :
     mbBookMode( false ),
     mbSidebarChanged( false ),
     mbNeedGrammarCheck( false ),
-    nBrowseWidth( MM50*4 ), //2cm Minimum
+    nBrowseWidth( MM50*4 ), //2cm minimum
     pTurbo( 0 ),
     pLastPage( 0 ),
     pCurrShell( pSh ),
@@ -508,8 +508,8 @@ void SwRootFrm::Init( SwFrmFmt* pFmt )
     IDocumentFieldsAccess *pFieldsAccess = pFmt->getIDocumentFieldsAccess();
     const IDocumentSettingAccess *pSettingAccess = pFmt->getIDocumentSettingAccess();
     pTimerAccess->StopIdling();
-    pLayoutAccess->SetCurrentViewShell( this->GetCurrShell() );     //Fuer das Erzeugen der Flys 
durch MakeFrms()   //swmod 071108//swmod 071225
-    bCallbackActionEnabled = sal_False; //vor Verlassen auf sal_True setzen!
+    pLayoutAccess->SetCurrentViewShell( this->GetCurrShell() );     // Helps creating the Flys by 
MakeFrms()   //swmod 071108//swmod 071225
+    bCallbackActionEnabled = sal_False; // needs to be set to sal_True before leaving!
 
     SdrModel *pMd = pFmt->getIDocumentDrawModelAccess()->GetDrawModel();
     if ( pMd )
@@ -522,10 +522,9 @@ void SwRootFrm::Init( SwFrmFmt* pFmt )
         pDrawPage->SetSize( Frm().SSize() );
     }
 
-    //Initialisierung des Layouts: Seiten erzeugen. Inhalt mit cntnt verbinden
-    //usw.
-    //Zuerst einiges initialiseren und den ersten Node besorgen (der wird
-    //fuer den PageDesc benoetigt).
+    // Initialize the layout: create pages, link content with Cntnt etc.
+    // First, initialize some stuff, then get hold of the first 
+    // node (which will be needed for the PageDesc).
 
     SwDoc* pDoc = pFmt->GetDoc();
     SwNodeIndex aIndex( *pDoc->GetNodes().GetEndOfContent().StartOfSectionNode() );
@@ -533,8 +532,7 @@ void SwRootFrm::Init( SwFrmFmt* pFmt )
     // #123067# pNode = 0 can really happen
     SwTableNode *pTblNd= pNode ? pNode->FindTableNode() : 0;
 
-    //PageDesc besorgen (entweder vom FrmFmt des ersten Node oder den
-    //initialen.)
+    // Get hold of PageDesc (either via FrmFmt of the first node or the initial one).
     SwPageDesc *pDesc = 0;
     sal_uInt16 nPgNum = 1;
 
@@ -542,14 +540,14 @@ void SwRootFrm::Init( SwFrmFmt* pFmt )
     {
         const SwFmtPageDesc &rDesc = pTblNd->GetTable().GetFrmFmt()->GetPageDesc();
         pDesc = (SwPageDesc*)rDesc.GetPageDesc();
-        //#19104# Seitennummeroffset beruecksictigen!!
+        //#19104# respect the page number offset!!
         bIsVirtPageNum = 0 != ( nPgNum = rDesc.GetNumOffset() );
     }
     else if ( pNode )
     {
         const SwFmtPageDesc &rDesc = pNode->GetSwAttrSet().GetPageDesc();
         pDesc = (SwPageDesc*)rDesc.GetPageDesc();
-        //#19104# Seitennummeroffset beruecksictigen!!
+        //#19104# respect the page number offset!!
         bIsVirtPageNum = 0 != ( nPgNum = rDesc.GetNumOffset() );
     }
     else
@@ -559,17 +557,17 @@ void SwRootFrm::Init( SwFrmFmt* pFmt )
             &const_cast<const SwDoc *>(pDoc)->GetPageDesc( 0 );
     const sal_Bool bOdd = !nPgNum || 0 != ( nPgNum % 2 );
 
-    //Eine Seite erzeugen und in das Layout stellen
+    // Create a page and put it in the layout
     SwPageFrm *pPage = ::InsertNewPage( *pDesc, this, bOdd, sal_False, sal_False, 0 );
 
-    //Erstes Blatt im Bodytext-Bereich suchen.
+    // Find the first page in the Bodytext section.
     SwLayoutFrm *pLay = pPage->FindBodyCont();
     while( pLay->Lower() )
         pLay = (SwLayoutFrm*)pLay->Lower();
 
     SwNodeIndex aTmp( *pDoc->GetNodes().GetEndOfContent().StartOfSectionNode(), 1 );
     ::_InsertCnt( pLay, pDoc, aTmp.GetIndex(), sal_True );
-    //Noch nicht ersetzte Master aus der Liste entfernen.
+    //Remove masters that haven't been replaced yet from the list.
     RemoveMasterObjs( pDrawPage );
     if( pSettingAccess->get(IDocumentSettingAccess::GLOBAL_DOCUMENT) )
         pFieldsAccess->UpdateRefFlds( NULL );
@@ -624,7 +622,7 @@ SwRootFrm::~SwRootFrm()
     delete pDestroy;
     pDestroy = 0;
 
-    //Referenzen entfernen.
+    // Remove references
     for ( sal_uInt16 i = 0; i < pCurrShells->Count(); ++i )
         (*pCurrShells)[i]->pRoot = 0;
 
@@ -642,7 +640,7 @@ SwRootFrm::~SwRootFrm()
 
 void SwRootFrm::RemoveMasterObjs( SdrPage *pPg )
 {
-    //Alle Masterobjekte aus der Page entfernen. Nicht loeschen!!
+    // Remove all master objects from the Page. But don't delete!
     for( sal_uLong i = pPg ? pPg->GetObjCount() : 0; i; )
     {
         SdrObject* pObj = pPg->GetObj( --i );
-- 
1.7.9.1


From ff62ea37690fa9fd4e1c6d6b6bd7794364ffa229 Mon Sep 17 00:00:00 2001
From: David Vogt <david.vogt@adfinis-sygroup.ch>
Date: Mon, 6 Feb 2012 11:00:35 +0100
Subject: [PATCH 04/22] Translated german code comments to english

---
 sw/source/core/layout/hffrm.cxx |   42 +++++++++++++++++++-------------------
 1 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/sw/source/core/layout/hffrm.cxx b/sw/source/core/layout/hffrm.cxx
index 723a91b..1f496c5 100644
--- a/sw/source/core/layout/hffrm.cxx
+++ b/sw/source/core/layout/hffrm.cxx
@@ -89,7 +89,7 @@ static SwTwips lcl_CalcContentHeight(SwLayoutFrm & frm)
         {
             nTmp = ((SwTxtFrm*)pFrm)->GetParHeight()
                 - pFrm->Prt().Height();
-            // Dieser TxtFrm waere gern ein bisschen groesser
+            // This TxtFrm would like to be a bit bigger
             nRemaining += nTmp;
         }
         else if( pFrm->IsSctFrm() && ((SwSectionFrm*)pFrm)->IsUndersized() )
@@ -124,9 +124,9 @@ SwHeadFootFrm::SwHeadFootFrm( SwFrmFmt * pFmt, SwFrm* pSib, sal_uInt16 nTypeIn)
 
     const SwFmtCntnt &rCnt = pFmt->GetCntnt();
 
-    OSL_ENSURE( rCnt.GetCntntIdx(), "Kein Inhalt fuer Header." );
+    OSL_ENSURE( rCnt.GetCntntIdx(), "No content for Header." );
 
-    //Fuer Header Footer die Objekte gleich erzeugen lassen.
+    // Have the objects created right now for header and footer
     sal_Bool bOld = bObjsDirect;
     bObjsDirect = sal_True;
     sal_uLong nIndex = rCnt.GetCntntIdx()->GetIndex();
@@ -218,12 +218,12 @@ void SwHeadFootFrm::FormatPrt(SwTwips & nUL, const SwBorderAttrs * pAttrs)
     }
     else
     {
-        //Position einstellen.
+        // Set position
         aPrt.Left( pAttrs->CalcLeft( this ) );
         aPrt.Top ( pAttrs->CalcTop()  );
 
-        //Sizes einstellen; die Groesse gibt der umgebende Frm vor, die
-        //die Raender werden einfach abgezogen.
+        // Set sizes - the sizes are given by the surrounding Frm, just
+        // subtract the borders.
         // OD 23.01.2003 #106895# - add first parameter to <SwBorderAttrs::CalcRight(..)>
         SwTwips nLR = pAttrs->CalcLeft( this ) + pAttrs->CalcRight( this );
         aPrt.Width ( aFrm.Width() - nLR );
@@ -303,7 +303,7 @@ void SwHeadFootFrm::FormatSize(SwTwips nUL, const SwBorderAttrs * pAttrs)
 
                     if( pFrm->IsTxtFrm() &&
                         ((SwTxtFrm*)pFrm)->IsUndersized() )
-                        // Dieser TxtFrm waere gern ein bisschen groesser
+                        // This TxtFrm would like to be a bit bigger
                         nRemaining += ((SwTxtFrm*)pFrm)->GetParHeight()
                             - pFrm->Prt().Height();
                     else if( pFrm->IsSctFrm() &&
@@ -374,14 +374,14 @@ void SwHeadFootFrm::FormatSize(SwTwips nUL, const SwBorderAttrs * pAttrs)
                     }
                     else
                         Shrink( -nDiff );
-                    //Schnell auf dem kurzen Dienstweg die Position updaten.
+                    // Quickly update the position
 
                     MakePos();
                     ColLock();
                 }
                 else
                     break;
-                //Unterkante des Uppers nicht ueberschreiten.
+                // Don't overwrite the lower edge of the upper
                 if ( GetUpper() && Frm().Height() )
                 {
                     const SwTwips nDeadLine = GetUpper()->Frm().Top() +
@@ -413,7 +413,7 @@ void SwHeadFootFrm::FormatSize(SwTwips nUL, const SwBorderAttrs * pAttrs)
 
 void SwHeadFootFrm::Format(const SwBorderAttrs * pAttrs)
 {
-    OSL_ENSURE( pAttrs, "SwFooterFrm::Format, pAttrs ist 0." );
+    OSL_ENSURE( pAttrs, "SwFooterFrm::Format, pAttrs is 0." );
 
     if ( bValidPrtArea && bValidSize )
         return;
@@ -670,7 +670,7 @@ sal_Bool SwHeadFootFrm::GetEatSpacing() const
 |*
 |*  SwPageFrm::PrepareHeader()
 |*
-|*  Beschreibung        Erzeugt oder Entfernt Header
+|*  Description        Creates or removes headers
 |*
 |*************************************************************************/
 
@@ -708,11 +708,11 @@ void SwPageFrm::PrepareHeader()
     const sal_Bool bOn = !(pSh && pSh->GetViewOptions()->getBrowseMode());
 
     if ( bOn && rH.IsActive() )
-    {   //Header einsetzen, vorher entfernen falls vorhanden.
-        OSL_ENSURE( rH.GetHeaderFmt(), "FrmFmt fuer Header nicht gefunden." );
+    {   //Implant header, but remove first, if already present
+        OSL_ENSURE( rH.GetHeaderFmt(), "FrmFmt for Header not found." );
 
         if ( pLay->GetFmt() == (SwFrmFmt*)rH.GetHeaderFmt() )
-            return; //Der Footer ist bereits der richtige
+            return; // Header is already the correct one.
 
         if ( pLay->IsHeaderFrm() )
         {   SwLayoutFrm *pDel = pLay;
@@ -721,14 +721,14 @@ void SwPageFrm::PrepareHeader()
             pDel->Cut();
             delete pDel;
         }
-        OSL_ENSURE( pLay, "Wohin mit dem Header?" );
+        OSL_ENSURE( pLay, "Where to with the Header?" );
         SwHeaderFrm *pH = new SwHeaderFrm( (SwFrmFmt*)rH.GetHeaderFmt(), this );
         pH->Paste( this, pLay );
         if ( GetUpper() )
             ::RegistFlys( this, pH );
     }
     else if ( pLay && pLay->IsHeaderFrm() )
-    {   //Header entfernen falls vorhanden.
+    {   // Remove header if present.
         ::DelFlys( pLay, this );
         pLay->Cut();
         delete pLay;
@@ -738,7 +738,7 @@ void SwPageFrm::PrepareHeader()
 |*
 |*  SwPageFrm::PrepareFooter()
 |*
-|*  Beschreibung        Erzeugt oder Entfernt Footer
+|*  Description        Creates or removes footer
 |*
 |*************************************************************************/
 
@@ -757,11 +757,11 @@ void SwPageFrm::PrepareFooter()
     const sal_Bool bOn = !(pSh && pSh->GetViewOptions()->getBrowseMode());
 
     if ( bOn && rF.IsActive() )
-    {   //Footer einsetzen, vorher entfernen falls vorhanden.
-        OSL_ENSURE( rF.GetFooterFmt(), "FrmFmt fuer Footer nicht gefunden." );
+    {   //Implant footer, but remove first, if already present
+        OSL_ENSURE( rF.GetFooterFmt(), "FrmFmt for Footer not found." );
 
         if ( pLay->GetFmt() == (SwFrmFmt*)rF.GetFooterFmt() )
-            return; //Der Footer ist bereits der richtige.
+            return;  // Footer is already the correct one.
 
         if ( pLay->IsFooterFrm() )
         {   ::DelFlys( pLay, this );
@@ -774,7 +774,7 @@ void SwPageFrm::PrepareFooter()
             ::RegistFlys( this, pF );
     }
     else if ( pLay && pLay->IsFooterFrm() )
-    {   //Footer entfernen falls vorhanden.
+    {   // Remove footer if already present
         ::DelFlys( pLay, this );
         ViewShell *pShell;
         if ( pLay->GetPrev() && 0 != (pShell = getRootFrm()->GetCurrShell()) &&
-- 
1.7.9.1


From 65d7bafd427d62e729460588e9f04f3597a26cd1 Mon Sep 17 00:00:00 2001
From: David Vogt <david.vogt@adfinis-sygroup.ch>
Date: Mon, 6 Feb 2012 12:10:38 +0100
Subject: [PATCH 05/22] flylay: german comments translated

---
 sw/source/core/layout/flylay.cxx |  122 +++++++++++++++++++-------------------
 1 files changed, 60 insertions(+), 62 deletions(-)

diff --git a/sw/source/core/layout/flylay.cxx b/sw/source/core/layout/flylay.cxx
index 33c1e8c..44d8a2a 100644
--- a/sw/source/core/layout/flylay.cxx
+++ b/sw/source/core/layout/flylay.cxx
@@ -80,7 +80,7 @@ SwFlyFreeFrm::SwFlyFreeFrm( SwFlyFrmFmt *pFmt, SwFrm* pSib, SwFrm *pAnch ) :
 
 SwFlyFreeFrm::~SwFlyFreeFrm()
 {
-    //und Tschuess.
+    // and goodbye.
     // #i28701# - use new method <GetPageFrm()>
     if( GetPageFrm() )
     {
@@ -111,12 +111,10 @@ TYPEINIT1(SwFlyFreeFrm,SwFlyFrm);
 |*
 |*  SwFlyFreeFrm::NotifyBackground()
 |*
-|*  Beschreibung        Benachrichtigt den Hintergrund (alle CntntFrms die
-|*      gerade ueberlappt werden. Ausserdem wird das Window in einigen
-|*      Faellen direkt invalidiert (vor allem dort, wo keine CntntFrms
-|*      ueberlappt werden.
-|*      Es werden auch die CntntFrms innerhalb von anderen Flys
-|*      beruecksichtigt.
+|*  Description      notifies the background (all CntntFrms that currently
+|*       are overlapping. Additionally, the window is also directly
+|*       invalidated (especially where there are no overlapping CntntFrms)
+|*       This also takes into account the CntntFrms within other Flys.
 |*
 |*************************************************************************/
 
@@ -152,9 +150,9 @@ void SwFlyFreeFrm::MakeAll()
     if( !GetPageFrm() )
         return;
 
-    Lock(); //Der Vorhang faellt
+    Lock(); // The courtain drops
 
-    //uebernimmt im DTor die Benachrichtigung
+    // takes care of the notification in the dtor
     const SwFlyNotify aNotify( this );
 
     if ( IsClipped() )
@@ -182,13 +180,13 @@ void SwFlyFreeFrm::MakeAll()
     {
         SWRECTFN( this )
         const SwFmtFrmSize *pSz;
-        {   //Zusaetzlicher Scope, damit aAccess vor dem Check zerstoert wird!
+        {   // Additional scope, so aAccess will be destroyed before the check!
 
             SwBorderAttrAccess aAccess( SwFrm::GetCache(), this );
             const SwBorderAttrs &rAttrs = *aAccess.Get();
             pSz = &rAttrs.GetAttrSet().GetFrmSize();
 
-            //Nur einstellen wenn das Flag gesetzt ist!!
+            // Only set when the flag is set!
             if ( !bValidSize )
             {
                 bValidPrtArea = sal_False;
@@ -292,12 +290,12 @@ bool SwFlyFreeFrm::HasEnvironmentAutoSize() const
 
 void SwFlyFreeFrm::CheckClip( const SwFmtFrmSize &rSz )
 {
-    //Jetzt ist es ggf. an der Zeit geignete Massnahmen zu ergreifen wenn
-    //der Fly nicht in seine Umgebung passt.
-    //Zuerst gibt der Fly seine Position auf. Danach wird er zunaechst
-    //formatiert. Erst wenn er auch durch die Aufgabe der Position nicht
-    //passt wird die Breite oder Hoehe aufgegeben - der Rahmen wird soweit
-    //wie notwendig zusammengequetscht.
+    // It's probably time now to take appropriate measures if the Fly
+    // doesn't fit into it's surrounding.
+    // First, the Fly gives up it's position. Then it's formatted first.
+    // Only if it still doesn't fit after giving up the position, the
+    // width or height are given up as well. The frame will be squeezed
+    // as much as needed.
 
     const SwVirtFlyDrawObj *pObj = GetVirtDrawObj();
     SwRect aClip, aTmpStretch;
@@ -340,8 +338,10 @@ void SwFlyFreeFrm::CheckClip( const SwFmtFrmSize &rSz )
             if ( Frm().Left() != nOld )
             {
                 const SwFmtHoriOrient &rH = GetFmt()->GetHoriOrient();
-                // Links ausgerichtete duerfen nicht nach links verschoben werden,
-                // wenn sie einem anderen ausweichen.
+                // Left-aligned ones may not be moved to the left when they
+                // are avoiding another one.
+                // TODO comment-translator: what left-aligned things are they
+                //                          talking about here?
                 if( rH.GetHoriOrient() == text::HoriOrientation::LEFT )
                     Frm().Pos().X() = nOld;
                 else
@@ -353,22 +353,21 @@ void SwFlyFreeFrm::CheckClip( const SwFmtFrmSize &rSz )
             bValidSize = sal_False;
         else
         {
-            //Wenn wir hier ankommen ragt der Frm in unerlaubte Bereiche
-            //hinein, und eine Positionskorrektur ist nicht erlaubt bzw.
-            //moeglich oder noetig.
+            // If we reach this place, the Frm protrudes into forbidden
+            // sections, and correcting the position is neither allowed
+            // nor possible nor required.
 
-            //Fuer Flys mit OLE-Objekten als Lower sorgen wir dafuer, dass
-            //immer proportional Resized wird.
+            // With Flys that have OLE objects as lower, we make sure that
+            // we always resize proportionally
             Size aOldSize( Frm().SSize() );
 
-            //Zuerst wird das FrmRect eingestellt, und dann auf den Frm
-            //uebertragen.
+            // First, setup the FrmRect, then transfer it to the Frm.
             SwRect aFrmRect( Frm() );
 
             if ( bBot )
             {
                 long nDiff = nClipBot;
-                nDiff -= aFrmRect.Top(); //nDiff ist die verfuegbare Strecke.
+                nDiff -= aFrmRect.Top(); // nDiff represents the available distance
                 nDiff = aFrmRect.Height() - nDiff;
                 aFrmRect.Height( aFrmRect.Height() - nDiff );
                 bHeightClipped = sal_True;
@@ -376,7 +375,7 @@ void SwFlyFreeFrm::CheckClip( const SwFmtFrmSize &rSz )
             if ( bRig )
             {
                 long nDiff = nClipRig;
-                nDiff -= aFrmRect.Left();//nDiff ist die verfuegbare Strecke.
+                nDiff -= aFrmRect.Left();// nDiff represents the available distance
                 nDiff = aFrmRect.Width() - nDiff;
                 aFrmRect.Width( aFrmRect.Width() - nDiff );
                 bWidthClipped = sal_True;
@@ -396,8 +395,8 @@ void SwFlyFreeFrm::CheckClip( const SwFmtFrmSize &rSz )
                  ( static_cast<SwCntntFrm*>(Lower())->GetNode()->GetOLENode() ||
                    !HasEnvironmentAutoSize() ) )
             {
-                //Wenn Breite und Hoehe angepasst wurden, so ist die
-                //groessere Veraenderung massgeblich.
+                // If width and height got adjusted, then the bigger
+                // change is relevant.
                 if ( aFrmRect.Width() != aOldSize.Width() &&
                      aFrmRect.Height()!= aOldSize.Height() )
                 {
@@ -408,14 +407,14 @@ void SwFlyFreeFrm::CheckClip( const SwFmtFrmSize &rSz )
                         aFrmRect.Width( aOldSize.Width() );
                 }
 
-                //Breite angepasst? - Hoehe dann proportional verkleinern
+                // Adjusted the width? change height proportionally
                 if( aFrmRect.Width() != aOldSize.Width() )
                 {
                     aFrmRect.Height( aFrmRect.Width() * aOldSize.Height() /
                                      aOldSize.Width() );
                     bHeightClipped = sal_True;
                 }
-                //Hoehe angepasst? - Breite dann proportional verkleinern
+                // Adjusted the height? change width proportionally
                 else if( aFrmRect.Height() != aOldSize.Height() )
                 {
                     aFrmRect.Width( aFrmRect.Height() * aOldSize.Width() /
@@ -446,16 +445,16 @@ void SwFlyFreeFrm::CheckClip( const SwFmtFrmSize &rSz )
                 }
             }
 
-            //Jetzt die Einstellungen am Frm vornehmen, bei Spalten werden
-            //die neuen Werte in die Attribute eingetragen, weil es sonst
-            //ziemlich fiese Oszillationen gibt.
+            // Now change the Frm; with columns, put the new values into the
+            // attributes, because there may occur pretty bad oscillations 
+            // otherwise.
             const long nPrtHeightDiff = Frm().Height() - Prt().Height();
             const long nPrtWidthDiff  = Frm().Width()  - Prt().Width();
             Frm().Height( aFrmRect.Height() );
             Frm().Width ( Max( long(MINLAY), aFrmRect.Width() ) );
             if ( Lower() && Lower()->IsColumnFrm() )
             {
-                ColLock();  //Grow/Shrink locken.
+                ColLock();  //lock grow/shrink
                 const Size aTmpOldSize( Prt().SSize() );
                 Prt().Height( Frm().Height() - nPrtHeightDiff );
                 Prt().Width ( Frm().Width()  - nPrtWidthDiff );
@@ -463,7 +462,7 @@ void SwFlyFreeFrm::CheckClip( const SwFmtFrmSize &rSz )
                 SwFrm *pLow = Lower();
                 do
                 {   pLow->Calc();
-                    // auch den (Column)BodyFrm mitkalkulieren
+                    // also calculate the (Column)BodyFrm
                     ((SwLayoutFrm*)pLow)->Lower()->Calc();
                     pLow = pLow->GetNext();
                 } while ( pLow );
@@ -523,13 +522,13 @@ void SwFlyLayFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
     if( RES_ATTRSET_CHG == nWhich && SFX_ITEM_SET ==
         ((SwAttrSetChg*)pNew)->GetChgSet()->GetItemState( RES_ANCHOR, sal_False,
             (const SfxPoolItem**)&pAnch ))
-        ;       // Beim GetItemState wird der AnkerPointer gesetzt !
+                // GetItemState sets the anchor pointer!
 
     else if( RES_ANCHOR == nWhich )
     {
-        //Ankerwechsel, ich haenge mich selbst um.
-        //Es darf sich nicht um einen Wechsel des Ankertyps handeln,
-        //dies ist nur ueber die SwFEShell moeglich.
+        // Change of anchor. I'm attaching myself to the new place.
+        // It's not allowed to change the anchor type. This is only
+        // possible via SwFEShell.
         pAnch = (SwFmtAnchor*)pNew;
     }
 
@@ -537,10 +536,9 @@ void SwFlyLayFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
     {
         OSL_ENSURE( pAnch->GetAnchorId() ==
                 GetFmt()->GetAnchor().GetAnchorId(),
-                "8-) Unzulaessiger Wechsel des Ankertyps." );
+                "8-) Invalid change of anchor type." );
 
-        //Abmelden, Seite besorgen, an den entsprechenden LayoutFrm
-        //haengen.
+        // Unregister, get hold of the page, attach to the corresponding LayoutFrm.
         SwRect aOld( GetObjRectWithSpaces() );
         // #i28701# - use new method <GetPageFrm()>
         SwPageFrm *pOldPage = GetPageFrm();
@@ -625,7 +623,7 @@ void SwPageFrm::AppendFlyToPage( SwFlyFrm *pNew )
             pObj->SetOrdNum( nNewNum );
     }
 
-    //Flys die im Cntnt sitzen beachten wir nicht weiter.
+    // Don't look further at Flys that sit inside the Cntnt.
     if ( pNew->IsFlyInCntFrm() )
         InvalidateFlyInCnt();
     else
@@ -709,7 +707,7 @@ void SwPageFrm::RemoveFlyFromPage( SwFlyFrm *pToRemove )
         ((SwRootFrm*)GetUpper())->InvalidateBrowseWidth();
     }
 
-    //Flys die im Cntnt sitzen beachten wir nicht weiter.
+    // Don't look further at Flys that sit inside the Cntnt.
     if ( pToRemove->IsFlyInCntFrm() )
         return;
 
@@ -724,11 +722,11 @@ void SwPageFrm::RemoveFlyFromPage( SwFlyFrm *pToRemove )
                                   ->DisposeAccessibleFrm( pToRemove, sal_True );
     }
 
-    //Collections noch nicht loeschen. Das passiert am Ende
-    //der Action im RemoveSuperfluous der Seite - angestossen von gleich-
-    //namiger Methode der Root.
-    //Die FlyColl kann bereits weg sein, weil der DTor der Seite
-    //gerade 'laeuft'
+    // Don't delete collections just yet. This will happen at the end of the
+    // action in the RemoveSuperfluous of the page, kicked off by a method of
+    // the same name in the root.
+    // The FlyColl might be gone already, because the page's dtor is currently
+    // "running".
     if ( pSortedObjs )
     {
         pSortedObjs->Remove( *pToRemove );
@@ -748,7 +746,7 @@ void SwPageFrm::RemoveFlyFromPage( SwFlyFrm *pToRemove )
 
 void SwPageFrm::MoveFly( SwFlyFrm *pToMove, SwPageFrm *pDest )
 {
-    //Invalidierungen
+    // Invalidations
     if ( GetUpper() )
     {
         ((SwRootFrm*)GetUpper())->SetIdleFlags();
@@ -778,8 +776,8 @@ void SwPageFrm::MoveFly( SwFlyFrm *pToMove, SwPageFrm *pDest )
                                   ->DisposeAccessibleFrm( pToMove, sal_True );
     }
 
-    //Die FlyColl kann bereits weg sein, weil der DTor der Seite
-    //gerade 'laeuft'
+    // The FlyColl might be gone already, because the page's dtor is currently
+    // "running".
     if ( pSortedObjs )
     {
         pSortedObjs->Remove( *pToMove );
@@ -788,7 +786,7 @@ void SwPageFrm::MoveFly( SwFlyFrm *pToMove, SwPageFrm *pDest )
         }
     }
 
-    //Anmelden
+    // Register
     if ( !pDest->GetSortedObjs() )
         pDest->pSortedObjs = new SwSortedObjs();
 
@@ -948,12 +946,12 @@ void SwPageFrm::PlaceFly( SwFlyFrm* pFly, SwFlyFrmFmt* pFmt )
     }
     else
     {
-        //Wenn ein Fly uebergeben wurde, so benutzen wir diesen, ansonsten wird
-        //mit dem Format einer erzeugt.
+        // if we received a Fly, we use that one. Otherwise, create a new
+        // one using the Format.
         if ( pFly )
             AppendFly( pFly );
         else
-        {   OSL_ENSURE( pFmt, ":-( kein Format fuer Fly uebergeben." );
+        {   OSL_ENSURE( pFmt, ":-( No Format given for Fly." );
             pFly = new SwFlyLayFrm( (SwFlyFrmFmt*)pFmt, this, this );
             AppendFly( pFly );
             ::RegistFlys( this, pFly );
@@ -1005,14 +1003,14 @@ sal_Bool CalcClipRect( const SdrObject *pSdrObj, SwRect &rRect, sal_Bool 
bMove )
             rRect = pClip->Frm();
             SWRECTFN( pClip )
 
-            //Vertikales clipping: Top und Bottom, ggf. an PrtArea
+            // vertical clipping: Top and Bottom, also to PrtArea if neccessary
             if( rV.GetVertOrient() != text::VertOrientation::NONE &&
                 rV.GetRelationOrient() == text::RelOrientation::PRINT_AREA )
             {
                 (rRect.*fnRect->fnSetTop)( (pClip->*fnRect->fnGetPrtTop)() );
                 (rRect.*fnRect->fnSetBottom)( (pClip->*fnRect->fnGetPrtBottom)() );
             }
-            //Horizontales clipping: Left und Right, ggf. an PrtArea
+            // horizontal clipping: Top and Bottom, also to PrtArea if necessary
             const SwFmtHoriOrient &rH = pFly->GetFmt()->GetHoriOrient();
             if( rH.GetHoriOrient() != text::HoriOrientation::NONE &&
                 rH.GetRelationOrient() == text::RelOrientation::PRINT_AREA )
@@ -1178,8 +1176,8 @@ sal_Bool CalcClipRect( const SdrObject *pSdrObj, SwRect &rRect, sal_Bool 
bMove )
                 }
                 if ( pCell )
                 {
-                    //CellFrms koennen auch in 'unerlaubten' Bereichen stehen, dann
-                    //darf der Fly das auch.
+                    // CellFrms might also sit in unallowed sections. In this case,
+                    // the Fly is allowed to do so as well
                     SwRect aTmp( pCell->Prt() );
                     aTmp += pCell->Frm().Pos();
                     rRect.Union( aTmp );
-- 
1.7.9.1


From 290ae356d4f465edbf0dc44473bfeb508f89c2f8 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:36:21 +0100
Subject: [PATCH 06/22] translate german comments

---
 sw/source/core/layout/atrfrm.cxx |  191 +++++++++++++++++++-------------------
 1 files changed, 94 insertions(+), 97 deletions(-)

diff --git a/sw/source/core/layout/atrfrm.cxx b/sw/source/core/layout/atrfrm.cxx
index 5c379e5..f610585 100644
--- a/sw/source/core/layout/atrfrm.cxx
+++ b/sw/source/core/layout/atrfrm.cxx
@@ -123,7 +123,7 @@ TYPEINIT2(SwFmtPageDesc,  SfxPoolItem, SwClient );
 TYPEINIT1_AUTOFACTORY(SwFmtLineNumber, SfxPoolItem);
 
 /* --------------------------------------------------
- *  Umwandlung fuer QueryValue
+ *  Conversation for QueryValue
  * --------------------------------------------------*/
 sal_Int16 lcl_RelToINT(sal_Int16 eRelation)
 {
@@ -168,9 +168,8 @@ sal_Int16 lcl_IntToRelation(const uno::Any& rVal)
 
 void DelHFFormat( SwClient *pToRemove, SwFrmFmt *pFmt )
 {
-    //Wenn der Client der letzte ist der das Format benutzt, so muss dieses
-    //vernichtet werden. Zuvor muss jedoch ggf. die Inhaltssection vernichtet
-    //werden.
+    //If the client is the last one who uses this format, then we have to delete
+    //it - before this is done, we may need to delete the content-section.
     SwDoc* pDoc = pFmt->GetDoc();
     pFmt->Remove( pToRemove );
     if( pDoc->IsInDtor() )
@@ -179,11 +178,11 @@ void DelHFFormat( SwClient *pToRemove, SwFrmFmt *pFmt )
         return;
     }
 
-    //Nur noch Frms angemeldet?
+    // Are the only frms registred?
     sal_Bool bDel = sal_True;
     {
-        // Klammer, weil im DTOR SwClientIter das Flag bTreeChg zurueck
-        // gesetzt wird. Unguenstig, wenn das Format vorher zerstoert wird.
+        // Brace, because the DTOR of SwClientIter resets the flag bTreeChg.
+        // It's suboptimal if the format is deleted beforehand.
         SwClientIter aIter( *pFmt );        // TODO
         SwClient *pLast = aIter.GoStart();
         if( pLast )
@@ -195,8 +194,8 @@ void DelHFFormat( SwClient *pToRemove, SwFrmFmt *pFmt )
 
     if ( bDel )
     {
-        //Wenn in einem der Nodes noch ein Crsr angemeldet ist, muss das
-        //ParkCrsr einer (beliebigen) Shell gerufen werden.
+        // If there is a Crsr registered in one of the nodes, we need to call the
+        // ParkCrsr in an (arbitrary) shell.
         SwFmtCntnt& rCnt = (SwFmtCntnt&)pFmt->GetCntnt();
         if ( rCnt.GetCntntIdx() )
         {
@@ -208,8 +207,8 @@ void DelHFFormat( SwClient *pToRemove, SwFrmFmt *pFmt )
                 // is deleted on below made method call <pDoc->DeleteSection(pNode)>
 //                SwNodeIndex aIdx( *rCnt.GetCntntIdx(), 1 );
                 SwNodeIndex aIdx( *rCnt.GetCntntIdx(), 0 );
-                //Wenn in einem der Nodes noch ein Crsr angemeldet ist, muss das
-                //ParkCrsr einer (beliebigen) Shell gerufen werden.
+                // If there is a Crsr registered in one of the nodes, we need to call the
+                // ParkCrsr in an (arbitrary) shell.
                 pNode = & aIdx.GetNode();
                 sal_uInt32 nEnd = pNode->EndOfSectionIndex();
                 while ( aIdx < nEnd )
@@ -230,11 +229,11 @@ void DelHFFormat( SwClient *pToRemove, SwFrmFmt *pFmt )
             }
             rCnt.SetNewCntntIdx( (const SwNodeIndex*)0 );
 
-            // beim Loeschen von Header/Footer-Formaten IMMER das Undo
-            // abschalten! (Bug 31069)
+            // When deleting a header/footer-format, we ALWAYS need to disable
+            // the undo function (Bug 31069)
             ::sw::UndoGuard const undoGuard(pDoc->GetIDocumentUndoRedo());
 
-            OSL_ENSURE( pNode, "Ein grosses Problem." );
+            OSL_ENSURE( pNode, "A big problem." );
             pDoc->DeleteSection( pNode );
         }
         delete pFmt;
@@ -242,7 +241,7 @@ void DelHFFormat( SwClient *pToRemove, SwFrmFmt *pFmt )
 }
 
 //  class SwFmtFrmSize
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtFrmSize::SwFmtFrmSize( SwFrmSize eSize, SwTwips nWidth, SwTwips nHeight )
     : SfxPoolItem( RES_FRM_SIZE ),
@@ -280,7 +279,7 @@ SfxPoolItem*  SwFmtFrmSize::Clone( SfxItemPool* ) const
 
 bool SwFmtFrmSize::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     switch ( nMemberId )
     {
@@ -466,7 +465,7 @@ bool SwFmtFrmSize::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 }
 
 //  class SwFmtFillOrder
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtFillOrder::SwFmtFillOrder( SwFillOrder nFO )
     : SfxEnumItem( RES_FILL_ORDER, sal_uInt16(nFO) )
@@ -483,7 +482,7 @@ sal_uInt16  SwFmtFillOrder::GetValueCount() const
 }
 
 //  class SwFmtHeader
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtHeader::SwFmtHeader( SwFrmFmt *pHeaderFmt )
     : SfxPoolItem( RES_HEADER ),
@@ -530,7 +529,7 @@ void SwFmtHeader::RegisterToFormat( SwFmt& rFmt )
 }
 
 //  class SwFmtFooter
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtFooter::SwFmtFooter( SwFrmFmt *pFooterFmt )
     : SfxPoolItem( RES_FOOTER ),
@@ -577,7 +576,7 @@ SfxPoolItem*  SwFmtFooter::Clone( SfxItemPool* ) const
 }
 
 //  class SwFmtCntnt
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtCntnt::SwFmtCntnt( const SwFmtCntnt &rCpy )
     : SfxPoolItem( RES_CNTNT )
@@ -619,7 +618,7 @@ SfxPoolItem*  SwFmtCntnt::Clone( SfxItemPool* ) const
 }
 
 //  class SwFmtPageDesc
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtPageDesc::SwFmtPageDesc( const SwFmtPageDesc &rCpy )
     : SfxPoolItem( RES_PAGEDESC ),
@@ -700,9 +699,8 @@ void SwFmtPageDesc::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew )
     switch( nWhichId )
     {
         case RES_OBJECTDYING:
-                //Der Pagedesc, bei dem ich angemeldet bin stirbt, ich trage
-                //mich also bei meinem Format aus.
-                //Dabei werden ich Deletet!!!
+                //The Pagedesc where I'm registered dies, therefore I unregister
+                //from that format. During this I get deleted!
             if( IS_TYPE( SwFmt, pDefinedIn ))
             {
                 bool const bResult =
@@ -726,7 +724,7 @@ void SwFmtPageDesc::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew )
 
 bool SwFmtPageDesc::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool    bRet = true;
     switch ( nMemberId )
@@ -757,7 +755,7 @@ bool SwFmtPageDesc::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 
 bool SwFmtPageDesc::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     sal_Bool bRet = sal_True;
     switch ( nMemberId )
@@ -773,9 +771,9 @@ bool SwFmtPageDesc::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
         break;
 
         case MID_PAGEDESC_PAGEDESCNAME:
-            /* geht nicht, weil das Attribut eigentlich nicht den Namen
-             * sondern einen Pointer auf den PageDesc braucht (ist Client davon).
-             * Der Pointer waere aber ueber den Namen nur vom Dokument zu erfragen.
+            /* Doesn't work, because the attribute doesn't need the name but a 
+             * pointer to the PageDesc (it's a client of it). The pointer can 
+             * only be requested using the name of the document.
              */
         default:
             OSL_ENSURE( !this, "unknown MemberId" );
@@ -786,7 +784,7 @@ bool SwFmtPageDesc::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 
 
 //  class SwFmtCol
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwColumn::SwColumn() :
     nWish ( 0 ),
@@ -859,7 +857,7 @@ SwFmtCol::SwFmtCol()
 
 int SwFmtCol::operator==( const SfxPoolItem& rAttr ) const
 {
-    OSL_ENSURE( SfxPoolItem::operator==( rAttr ), "keine gleichen Attribute" );
+    OSL_ENSURE( SfxPoolItem::operator==( rAttr ), "no equal attributes" );
     const SwFmtCol &rCmp = (const SwFmtCol&)rAttr;
     if( !(eLineStyle        == rCmp.eLineStyle  &&
           nLineWidth        == rCmp.nLineWidth  &&
@@ -934,9 +932,8 @@ void SwFmtCol::SetGutterWidth( sal_uInt16 nNew, sal_uInt16 nAct )
 
 void SwFmtCol::Init( sal_uInt16 nNumCols, sal_uInt16 nGutterWidth, sal_uInt16 nAct )
 {
-    //Loeschen scheint hier auf den erste Blick vielleicht etwas zu heftig;
-    //anderfalls muessten allerdings alle Werte der verbleibenden SwColumn's
-    //initialisiert werden.
+    // Deleting seems to be a bit radical on the first sight; but otherwise we
+    // have to initialize all values of the remaining SwCloumns.
     if ( aColumns.Count() )
         aColumns.DeleteAndDestroy( 0, aColumns.Count() );
     for ( sal_uInt16 i = 0; i < nNumCols; ++i )
@@ -958,7 +955,7 @@ void SwFmtCol::SetOrtho( sal_Bool bNew, sal_uInt16 nGutterWidth, sal_uInt16 nAct
 
 sal_uInt16 SwFmtCol::CalcColWidth( sal_uInt16 nCol, sal_uInt16 nAct ) const
 {
-    OSL_ENSURE( nCol < aColumns.Count(), ":-( ColumnsArr ueberindiziert." );
+    OSL_ENSURE( nCol < aColumns.Count(), ":-( ColumnsArr over indexed." );
     if ( nWidth != nAct )
     {
         long nW = aColumns[nCol]->GetWishWidth();
@@ -972,7 +969,7 @@ sal_uInt16 SwFmtCol::CalcColWidth( sal_uInt16 nCol, sal_uInt16 nAct ) const
 
 sal_uInt16 SwFmtCol::CalcPrtColWidth( sal_uInt16 nCol, sal_uInt16 nAct ) const
 {
-    OSL_ENSURE( nCol < aColumns.Count(), ":-( ColumnsArr ueberindiziert." );
+    OSL_ENSURE( nCol < aColumns.Count(), ":-( ColumnsArr over indexed." );
     sal_uInt16 nRet = CalcColWidth( nCol, nAct );
     SwColumn *pCol = aColumns[nCol];
     nRet = nRet - pCol->GetLeft();
@@ -984,17 +981,17 @@ void SwFmtCol::Calc( sal_uInt16 nGutterWidth, sal_uInt16 nAct )
 {
     if(!GetNumCols())
         return;
-    //Erstmal die Spalten mit der Aktuellen Breite einstellen, dann die
-    //Wunschbreite der Spalten anhand der Gesamtwunschbreite hochrechnen.
+    //First set the column widths with the current width, then calculate the 
+    //column's with using the requested total width.
 
     const sal_uInt16 nGutterHalf = nGutterWidth ? nGutterWidth / 2 : 0;
 
-    //Breite der PrtAreas ist Gesamtbreite - Zwischenraeume / Anzahl
+    //Width of PrtAreas is totalwidth - spacings / count
     const sal_uInt16 nPrtWidth =
                 (nAct - ((GetNumCols()-1) * nGutterWidth)) / GetNumCols();
     sal_uInt16 nAvail = nAct;
 
-    //Die erste Spalte ist PrtBreite + (Zwischenraumbreite/2)
+    //The fist column is PrtWidth + (gap width / 2)
     const sal_uInt16 nLeftWidth = nPrtWidth + nGutterHalf;
     SwColumn *pCol = aColumns[0];
     pCol->SetWishWidth( nLeftWidth );
@@ -1002,7 +999,7 @@ void SwFmtCol::Calc( sal_uInt16 nGutterWidth, sal_uInt16 nAct )
     pCol->SetLeft ( 0 );
     nAvail = nAvail - nLeftWidth;
 
-    //Spalte 2 bis n-1 ist PrtBreite + Zwischenraumbreite
+    //Column 2 to n-1 is PrtWidth + gap width
     const sal_uInt16 nMidWidth = nPrtWidth + nGutterWidth;
     sal_uInt16 i;
 
@@ -1015,15 +1012,14 @@ void SwFmtCol::Calc( sal_uInt16 nGutterWidth, sal_uInt16 nAct )
         nAvail = nAvail - nMidWidth;
     }
 
-    //Die Letzte Spalte entspricht wieder der ersten, um Rundungsfehler
-    //auszugleichen wird der letzten Spalte alles zugeschlagen was die
-    //anderen nicht verbraucht haben.
+    //The last column is equivalent to the first one - to compensate rounding
+    //errors we add the remaining space of the other columns to the last one.
     pCol = aColumns[aColumns.Count()-1];
     pCol->SetWishWidth( nAvail );
     pCol->SetLeft ( nGutterHalf );
     pCol->SetRight( 0 );
 
-    //Umrechnen der aktuellen Breiten in Wunschbreiten.
+    //Convert the current width to the requested width.
     for ( i = 0; i < aColumns.Count(); ++i )
     {
         pCol = aColumns[i];
@@ -1036,7 +1032,7 @@ void SwFmtCol::Calc( sal_uInt16 nGutterWidth, sal_uInt16 nAct )
 
 bool SwFmtCol::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     if(MID_COLUMN_SEPARATOR_LINE == nMemberId)
     {
@@ -1052,7 +1048,7 @@ bool SwFmtCol::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 
 bool SwFmtCol::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = false;
     if(MID_COLUMN_SEPARATOR_LINE == nMemberId)
@@ -1068,7 +1064,7 @@ bool SwFmtCol::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
             uno::Sequence<text::TextColumn> aSetColumns = xCols->getColumns();
             const text::TextColumn* pArray = aSetColumns.getConstArray();
             aColumns.DeleteAndDestroy(0, aColumns.Count());
-            //max. Count ist hier 64K - das kann das Array aber nicht
+            //max count is 64k here - this is something the array can't do
             sal_uInt16 nCount = Min( (sal_uInt16)aSetColumns.getLength(),
                                      (sal_uInt16) 0x3fff );
             sal_uInt16 nWidthSum = 0;
@@ -1127,7 +1123,7 @@ bool SwFmtCol::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 
 
 //  class SwFmtSurround
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtSurround::SwFmtSurround( SwSurround eFly ) :
     SfxEnumItem( RES_SURROUND, sal_uInt16( eFly ) )
@@ -1165,7 +1161,7 @@ sal_uInt16  SwFmtSurround::GetValueCount() const
 
 bool SwFmtSurround::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -1200,7 +1196,7 @@ bool SwFmtSurround::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 
 bool SwFmtSurround::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -1234,7 +1230,7 @@ bool SwFmtSurround::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 }
 
 //  class SwFmtVertOrient
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtVertOrient::SwFmtVertOrient( SwTwips nY, sal_Int16 eVert,
                                   sal_Int16 eRel )
@@ -1246,7 +1242,7 @@ SwFmtVertOrient::SwFmtVertOrient( SwTwips nY, sal_Int16 eVert,
 
 int  SwFmtVertOrient::operator==( const SfxPoolItem& rAttr ) const
 {
-    OSL_ENSURE( SfxPoolItem::operator==( rAttr ), "keine gleichen Attribute" );
+    OSL_ENSURE( SfxPoolItem::operator==( rAttr ), "not the same attributes" );
     return ( nYPos     == ((SwFmtVertOrient&)rAttr).nYPos &&
              eOrient   == ((SwFmtVertOrient&)rAttr).eOrient &&
              eRelation == ((SwFmtVertOrient&)rAttr).eRelation );
@@ -1259,7 +1255,7 @@ SfxPoolItem*  SwFmtVertOrient::Clone( SfxItemPool* ) const
 
 bool SwFmtVertOrient::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -1346,7 +1342,7 @@ bool SwFmtVertOrient::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 
 
 //  class SwFmtHoriOrient
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtHoriOrient::SwFmtHoriOrient( SwTwips nX, sal_Int16 eHori,
                               sal_Int16 eRel, sal_Bool bPos )
@@ -1373,7 +1369,7 @@ SfxPoolItem*  SwFmtHoriOrient::Clone( SfxItemPool* ) const
 
 bool SwFmtHoriOrient::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -1472,7 +1468,7 @@ bool SwFmtHoriOrient::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 
 
 //  class SwFmtAnchor
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 SwFmtAnchor::SwFmtAnchor( RndStdIds nRnd, sal_uInt16 nPage )
     : SfxPoolItem( RES_ANCHOR ),
@@ -1551,7 +1547,7 @@ sal_uInt32 SwFmtAnchor::GetOrder() const
 
 bool SwFmtAnchor::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -1605,7 +1601,7 @@ bool SwFmtAnchor::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 
 bool SwFmtAnchor::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -1672,7 +1668,8 @@ bool SwFmtAnchor::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 }
 
 //  class SwFmtURL
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
+
 
 SwFmtURL::SwFmtURL() :
     SfxPoolItem( RES_URL ),
@@ -1698,7 +1695,7 @@ SwFmtURL::~SwFmtURL()
 
 int SwFmtURL::operator==( const SfxPoolItem &rAttr ) const
 {
-    OSL_ENSURE( SfxPoolItem::operator==( rAttr ), "keine gleichen Attribute" );
+    OSL_ENSURE( SfxPoolItem::operator==( rAttr ), "not the same attributes" );
     const SwFmtURL &rCmp = (SwFmtURL&)rAttr;
     sal_Bool bRet = bIsServerMap     == rCmp.IsServerMap() &&
                 sURL             == rCmp.GetURL() &&
@@ -1734,7 +1731,7 @@ extern const SvEventDescription* lcl_GetSupportedMacroItems();
 
 bool SwFmtURL::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -1785,7 +1782,7 @@ bool SwFmtURL::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 
 bool SwFmtURL::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -2062,7 +2059,7 @@ void SwFmtChain::SetNext( SwFlyFrmFmt *pFmt )
 
 bool SwFmtChain::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool   bRet = true;
     XubString aRet;
@@ -2115,7 +2112,7 @@ SfxPoolItem* SwFmtLineNumber::Clone( SfxItemPool* ) const
 
 bool SwFmtLineNumber::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -2138,7 +2135,7 @@ bool SwFmtLineNumber::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
 
 bool SwFmtLineNumber::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
 {
-    // hier wird immer konvertiert!
+    // here we convert always!
     nMemberId &= ~CONVERT_TWIPS;
     bool bRet = true;
     switch ( nMemberId )
@@ -2459,7 +2456,7 @@ SfxPoolItem* SwHeaderAndFooterEatSpacingItem::Clone( SfxItemPool* ) const
 
 
 //  class SwFrmFmt
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 TYPEINIT1( SwFrmFmt, SwFmt );
 IMPL_FIXEDMEMPOOL_NEWDEL_DLL( SwFrmFmt )
@@ -2484,19 +2481,19 @@ void SwFrmFmt::Modify( const SfxPoolItem* pOld, const SfxPoolItem* pNew )
         pF = (SwFmtFooter*)pNew;
 
     if( pH && pH->IsActive() && !pH->GetHeaderFmt() )
-    {   //Hat er keinen, mach ich ihm einen
+    {   //If he doesn't have one, I'll add one
         SwFrmFmt *pFmt = GetDoc()->MakeLayoutFmt( RND_STD_HEADER, 0 );
         pH->RegisterToFormat( *pFmt );
     }
 
     if( pF && pF->IsActive() && !pF->GetFooterFmt() )
-    {   //Hat er keinen, mach ich ihm einen
+    {   //If he doesn't have one, I'll add one
         SwFrmFmt *pFmt = GetDoc()->MakeLayoutFmt( RND_STD_FOOTER, 0 );
         pF->RegisterToFormat( *pFmt );
     }
 
-    // MIB 24.3.98: Modify der Basisklasse muss immer gerufen werden, z.B.
-    // wegen RESET_FMTWRITTEN.
+    // MIB 24.3.98: We always have to call Modify of the baseclass, for example 
+    // because of RESET_FMTWRITTEN.
 //  if ( GetDepends() )
         SwFmt::Modify( pOld, pNew );
 
@@ -2511,7 +2508,7 @@ void SwFrmFmt::RegisterToFormat( SwFmt& rFmt )
     rFmt.Add( this );
 }
 
-//Vernichtet alle Frms, die in aDepend angemeldet sind.
+//Deletes all Frms which are registered in aDepend.
 
 void SwFrmFmt::DelFrms()
 {
@@ -2538,7 +2535,7 @@ SwRect SwFrmFmt::FindLayoutRect( const sal_Bool bPrtArea, const Point* pPoint,
     SwFrm *pFrm = 0;
     if( ISA( SwSectionFmt ) )
     {
-        // dann den frame::Frame per Node2Layout besorgen
+        // get the frame::Frame using Node2Layout
         SwSectionNode* pSectNd = ((SwSectionFmt*)this)->GetSectionNode();
         if( pSectNd )
         {
@@ -2547,12 +2544,11 @@ SwRect SwFrmFmt::FindLayoutRect( const sal_Bool bPrtArea, const Point* 
pPoint,
 
             if( pFrm && !pFrm->KnowsFormat(*this) )
             {
-                // die Section hat keinen eigenen frame::Frame, also falls
-                // jemand die tatsaechliche Groe?e braucht, so muss das
-                // noch implementier werden, in dem sich vom Ende noch
-                // der entsprechende frame::Frame besorgt wird.
-                // PROBLEM: was passiert bei SectionFrames, die auf unter-
-                //          schiedlichen Seiten stehen??
+                // the section doesn't have his own frame::Frame, so if someone
+                // needs the real size, we have to implement this by requesting 
+                // frame::Frame from the end.
+                // PROBLEM: what happens if SectionFrames overlaps multiple
+                //          pages?
                 if( bPrtArea )
                     aRet = pFrm->Prt();
                 else
@@ -2560,7 +2556,7 @@ SwRect SwFrmFmt::FindLayoutRect( const sal_Bool bPrtArea, const Point* pPoint,
                     aRet = pFrm->Frm();
                     --aRet.Pos().Y();
                 }
-                pFrm = 0;       // das Rect ist ja jetzt fertig
+                pFrm = 0;       // the rect is finished by now
             }
         }
     }
@@ -2609,8 +2605,8 @@ SdrObject* SwFrmFmt::FindRealSdrObject()
 
 sal_Bool SwFrmFmt::IsLowerOf( const SwFrmFmt& rFmt ) const
 {
-    //Auch eine Verkettung von Innen nach aussen oder von aussen
-    //nach innen ist nicht zulaessig.
+    //Also linking from inside to outside or from outside to inside is not
+    //allowed.
     SwFlyFrm *pSFly = SwIterator<SwFlyFrm,SwFmt>::FirstElement(*this);
     if( pSFly )
     {
@@ -2619,7 +2615,7 @@ sal_Bool SwFrmFmt::IsLowerOf( const SwFrmFmt& rFmt ) const
             return pSFly->IsLowerOf( pAskFly );
     }
 
-    // dann mal ueber die Node-Positionen versuchen
+    // let's try it using the node positions
     const SwFmtAnchor* pAnchor = &rFmt.GetAnchor();
     if ((FLY_AT_PAGE != pAnchor->GetAnchorId()) && pAnchor->GetCntntAnchor())
     {
@@ -2628,7 +2624,7 @@ sal_Bool SwFrmFmt::IsLowerOf( const SwFrmFmt& rFmt ) const
                                 FindFlyStartNode();
         while( pFlyNd )
         {
-            // dann ueber den Anker nach oben "hangeln"
+            // then we walk up using the anchor
             sal_uInt16 n;
             for( n = 0; n < rFmts.Count(); ++n )
             {
@@ -2653,7 +2649,7 @@ sal_Bool SwFrmFmt::IsLowerOf( const SwFrmFmt& rFmt ) const
             }
             if( n >= rFmts.Count() )
             {
-                OSL_ENSURE( !this, "Fly-Section aber kein Format gefunden" );
+                OSL_ENSURE( !this, "Fly section but no format found" );
                 return sal_False;
             }
         }
@@ -2687,7 +2683,7 @@ String SwFrmFmt::GetDescription() const
 }
 
 //  class SwFlyFrmFmt
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 TYPEINIT1( SwFlyFrmFmt, SwFrmFmt );
 IMPL_FIXEDMEMPOOL_NEWDEL( SwFlyFrmFmt )
@@ -2710,12 +2706,12 @@ SwFlyFrmFmt::~SwFlyFrmFmt()
         } while( 0 != ( pC = a2ndIter.Next() ));
 }
 
-//Erzeugen der Frms wenn das Format einen Absatzgebundenen Rahmen beschreibt.
-//MA: 14. Feb. 94, Erzeugen der Frms auch fuer Seitengebundene Rahmen.
+//Creates the Frms if the format describes a paragraph-bound frame.
+//MA: 1994-02-14, creates the Frms also for page-bound borders.
 
 void SwFlyFrmFmt::MakeFrms()
 {
-    // gibts ueberhaupt ein Layout ??
+    // does a layout even exists?
     if( !GetDoc()->GetCurrentViewShell() )
         return; //swmod 071108//swmod 071225
 
@@ -2736,10 +2732,11 @@ void SwFlyFrmFmt::MakeFrms()
     case FLY_AT_FLY:
         if( aAnchorAttr.GetCntntAnchor() )
         {
-            //Erst einmal ueber den Inhalt suchen, weil konstant schnell. Kann
-            //Bei verketteten Rahmen aber auch schief gehen, weil dann evtl.
-            //niemals ein frame::Frame zu dem Inhalt existiert. Dann muss leider noch
-            //die Suche vom StartNode zum FrameFormat sein.
+            //First search in the content because this is O(1)
+            //This can go wrong for linked borders because in this case it's
+            //possible, that no frame::Frame exists for this content.
+            //In such a situation we also need to search from StartNode to
+            //FrameFormat.
             SwNodeIndex aIdx( aAnchorAttr.GetCntntAnchor()->nNode );
             SwCntntNode *pCNd = GetDoc()->GetNodes().GoNext( &aIdx );
             // #i105535#
@@ -3127,7 +3124,7 @@ SwHandleAnchorNodeChg::~SwHandleAnchorNodeChg()
     }
 }
 //  class SwDrawFrmFmt
-//  Implementierung teilweise inline im hxx
+//  Partially implemented inline in hxx
 
 TYPEINIT1( SwDrawFrmFmt, SwFrmFmt );
 IMPL_FIXEDMEMPOOL_NEWDEL( SwDrawFrmFmt )
@@ -3148,7 +3145,7 @@ void SwDrawFrmFmt::MakeFrms()
 void SwDrawFrmFmt::DelFrms()
 {
     SwDrawContact *pContact = (SwDrawContact *)FindContactObj();
-    if ( pContact ) //fuer den Reader und andere Unabwaegbarkeiten.
+    if ( pContact ) //for the reader and other unpredictable things.
         pContact->DisconnectFromLayout();
 }
 
@@ -3225,8 +3222,8 @@ IMapObject* SwFrmFmt::GetIMapObject( const Point& rPoint,
             return 0;
     }
 
-    //Orignialgroesse fuer OLE und Grafik ist die TwipSize,
-    //ansonsten die Groesse vom FrmFmt des Fly.
+    //Original size for OLE and graphic is TwipSize, otherwise the size of
+    //FrmFmt of the Fly.
     const SwFrm *pRef;
     SwNoTxtNode *pNd = 0;
     Size aOrigSz;
-- 
1.7.9.1


From 96248b78052994788ba8be4fd3a8f9177ad6a240 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:36:53 +0100
Subject: [PATCH 07/22] translate german comments

---
 sw/source/core/layout/colfrm.cxx |   65 +++++++++++++++++--------------------
 1 files changed, 30 insertions(+), 35 deletions(-)

diff --git a/sw/source/core/layout/colfrm.cxx b/sw/source/core/layout/colfrm.cxx
index 6d352d6..d88942a 100644
--- a/sw/source/core/layout/colfrm.cxx
+++ b/sw/source/core/layout/colfrm.cxx
@@ -41,7 +41,7 @@
 #include "frmtool.hxx"
 #include "colfrm.hxx"
 #include "pagefrm.hxx"
-#include "bodyfrm.hxx"   // ColumnFrms jetzt mit BodyFrm
+#include "bodyfrm.hxx"   // ColumnFrms now with BodyFrm
 #include "rootfrm.hxx"   // wg. RemoveFtns
 #include "sectfrm.hxx"   // wg. FtnAtEnd-Flag
 #include "switerator.hxx"
@@ -60,7 +60,7 @@ SwColumnFrm::SwColumnFrm( SwFrmFmt *pFmt, SwFrm* pSib ):
 {
     nType = FRMC_COLUMN;
     SwBodyFrm* pColBody = new SwBodyFrm( pFmt->GetDoc()->GetDfltFrmFmt(), pSib );
-    pColBody->InsertBehind( this, 0 ); // ColumnFrms jetzt mit BodyFrm
+    pColBody->InsertBehind( this, 0 ); // ColumnFrms now with BodyFrm
     SetMaxFtnHeight( LONG_MAX );
 }
 
@@ -70,8 +70,8 @@ SwColumnFrm::~SwColumnFrm()
     SwDoc *pDoc;
     if ( !(pDoc = pFmt->GetDoc())->IsInDtor() && pFmt->IsLastDepend() )
     {
-        //Ich bin der einzige, weg mit dem Format.
-        //Vorher ummelden, damit die Basisklasse noch klarkommt.
+        //I'm the only one, delete the format.
+        //Get default format before, so the base class can cope with it.
         pDoc->GetDfltFrmFmt()->Add( this );
         pDoc->DelFrmFmt( pFmt );
     }
@@ -100,7 +100,7 @@ void MA_FASTCALL lcl_RemoveColumns( SwLayoutFrm *pCont, sal_uInt16 nCnt )
     {
         SwColumnFrm *pTmp = (SwColumnFrm*)pColumn->GetPrev();
         pColumn->Cut();
-        delete pColumn; //Format wird ggf. im DTor mit vernichtet.
+        delete pColumn; //format is going to be destroyed in the DTor if needed.
         pColumn = pTmp;
     }
 }
@@ -128,11 +128,10 @@ static sal_Bool lcl_AddColumns( SwLayoutFrm *pCont, sal_uInt16 nCount )
     SwDoc *pDoc = pCont->GetFmt()->GetDoc();
     const sal_Bool bMod = pDoc->IsModified();
 
-    //Format sollen soweit moeglich geshared werden. Wenn es also schon einen
-    //Nachbarn mit den selben Spalteneinstellungen gibt, so koennen die
-    //Spalten an die selben Formate gehaengt werden.
-    //Der Nachbar kann ueber das Format gesucht werden, wer der Owner des Attributes
-    //ist, ist allerdings vom Frametyp abhaengig.
+    //Formats should be shared whenever possible. If a neighbour already has
+    //the same column settings we can add them to the same format.
+    //The neighbour can be searched using the format, however the owner of the
+    //attribute depends on the frame type.
     SwLayoutFrm *pAttrOwner = pCont;
     if ( pCont->IsBodyFrm() )
         pAttrOwner = pCont->FindPageFrm();
@@ -228,24 +227,22 @@ void SwLayoutFrm::ChgColumns( const SwFmtCol &rOld, const SwFmtCol &rNew,
     else
         bAtEnd = sal_False;
 
-    //Einstellung der Spaltenbreiten ist nur bei neuen Formaten notwendig.
+    //Setting the column width is only needed for new formats.
     sal_Bool bAdjustAttributes = nOldNum != rOld.GetNumCols();
 
-    //Wenn die Spaltenanzahl unterschiedlich ist, wird der Inhalt
-    //gesichert und restored.
+    //The content is saved and restored if the column count is different.
     SwFrm *pSave = 0;
     if( nOldNum != nNewNum || bChgFtn )
     {
         SwDoc *pDoc = GetFmt()->GetDoc();
-        OSL_ENSURE( pDoc, "FrmFmt gibt kein Dokument her." );
-        // SaveCntnt wuerde auch den Inhalt der Fussnotencontainer aufsaugen
-        // und im normalen Textfluss unterbringen.
+        OSL_ENSURE( pDoc, "FrmFmt doesn't return a document." );
+        // SaveCntnt would also suck up the content of the footnote container
+        // and store it within the normal text flow.
         if( IsPageBodyFrm() )
             pDoc->GetCurrentLayout()->RemoveFtns( (SwPageFrm*)GetUpper(), sal_True, sal_False );   
 //swmod 080218
         pSave = ::SaveCntnt( this );
 
-        //Wenn Spalten existieren, jetzt aber eine Spaltenanzahl von
-        //0 oder eins gewuenscht ist, so werden die Spalten einfach vernichtet.
+        //If columns exist, they get deleted if a column count of 0 or 1 is requested.
         if ( nNewNum == 1 && !bAtEnd )
         {
             ::lcl_RemoveColumns( this, nOldNum );
@@ -296,11 +293,11 @@ void SwLayoutFrm::ChgColumns( const SwFmtCol &rOld, const SwFmtCol &rNew,
         }
     }
 
-    //Sodele, jetzt koennen die Spalten bequem eingestellt werden.
+    //The columns can now be easily adjusted.
     AdjustColumns( &rNew, bAdjustAttributes );
 
-    //Erst jetzt den Inhalt restaurieren. Ein frueheres Restaurieren wuerde
-    //unnuetzte Aktionen beim Einstellen zur Folge haben.
+    //Don't restore the content before. An earlier restore would trigger useless
+    //actions during setup.
     if ( pSave )
     {
         OSL_ENSURE( Lower() && Lower()->IsLayoutFrm() &&
@@ -329,9 +326,8 @@ void SwLayoutFrm::AdjustColumns( const SwFmtCol *pAttr, sal_Bool bAdjustAttribut
     //Badaa: 2008-04-18 * Support for Classical Mongolian Script (SCMS) joint with Jiayanmin
     SwRectFn fnRect = bVert ? ( IsVertLR() ? fnRectVertL2R : fnRectVert ) : fnRectHori;
 
-    //Ist ein Pointer da, oder sollen wir die Attribute einstellen,
-    //so stellen wir auf jeden Fall die Spaltenbreiten ein. Andernfalls
-    //checken wir, ob eine Einstellung notwendig ist.
+    //If we have a pointer or we have to configure an attribute, we set the
+    //column widths in any case. Otherwise we check if a configuration is needed.
     if ( !pAttr )
     {
         pAttr = &GetFmt()->GetCol();
@@ -347,9 +343,8 @@ void SwLayoutFrm::AdjustColumns( const SwFmtCol *pAttr, sal_Bool bAdjustAttribut
         }
     }
 
-    //Sodele, jetzt koennen die Spalten bequem eingestellt werden.
-    //Die Breiten werden mitgezaehlt, damit wir dem letzten den Rest geben
-    //koennen.
+    //The columns can now be easily adjusted.
+    //The widths get counted so we can give the reminder to the last one.
     SwTwips nAvail = (Prt().*fnRect->fnGetWidth)();
     const sal_Bool bLine = pAttr->GetLineAdj() != COLADJ_NONE;
     const sal_uInt16 nMin = bLine ? sal_uInt16( 20 + ( pAttr->GetLineWidth() / 2) ) : 0;
@@ -377,10 +372,10 @@ void SwLayoutFrm::AdjustColumns( const SwFmtCol *pAttr, sal_Bool 
bAdjustAttribut
 
             pCol->ChgSize( aColSz );
 
-            // Hierdurch werden die ColumnBodyFrms von Seitenspalten angepasst und
-            // ihr bFixHeight-Flag wird gesetzt, damit sie nicht schrumpfen/wachsen.
-            // Bei Rahmenspalten hingegen soll das Flag _nicht_ gesetzt werden,
-            // da BodyFrms in Rahmenspalten durchaus wachsen/schrumpfen duerfen.
+            // With this, the ColumnBodyFrms from page columns gets adjusted and
+            // their bFixHeight flag is set so they won't shrink/grow.
+            // Don't use the flag with border columns because BodyFrms in border
+            // columns can grow/shrink.
             if( IsBodyFrm() )
                 ((SwLayoutFrm*)pCol)->Lower()->ChgSize( aColSz );
 
@@ -393,10 +388,10 @@ void SwLayoutFrm::AdjustColumns( const SwFmtCol *pAttr, sal_Bool 
bAdjustAttribut
             const SwAttrSet* pSet = pCol->GetAttrSet();
             SvxLRSpaceItem aLR( pSet->GetLRSpace() );
 
-            //Damit die Trennlinien Platz finden, muessen sie hier
-            //Beruecksichtigung finden. Ueberall wo zwei Spalten aufeinanderstossen
-            //wird jeweils rechts bzw. links ein Sicherheitsabstand von 20 plus
-            //der halben Penbreite einkalkuliert.
+            //In order to have enough space for the separation lines, we have to
+            //take them into account here. Every time two columns meet we
+            //calculate a clearance of 20 + half the pen width on the left or
+            //right side, respectively.
             const sal_uInt16 nLeft = pC->GetLeft();
             const sal_uInt16 nRight = pC->GetRight();
 
-- 
1.7.9.1


From 870b692e34d12b27dcd4233809dcf98e6d0ad42d Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:37:03 +0100
Subject: [PATCH 08/22] translate german comments

---
 sw/source/core/layout/dbg_lay.cxx |  329 +++++++++++++++++++++----------------
 1 files changed, 189 insertions(+), 140 deletions(-)

diff --git a/sw/source/core/layout/dbg_lay.cxx b/sw/source/core/layout/dbg_lay.cxx
index fc166cb..68cffd8 100644
--- a/sw/source/core/layout/dbg_lay.cxx
+++ b/sw/source/core/layout/dbg_lay.cxx
@@ -29,51 +29,74 @@
 #ifdef DBG_UTIL
 
 /*
- * Und hier die Beschreibung:
+ * And here's the description:
  *
- * Durch die PROTOCOL-Makros wird es ermoeglicht, Ereignisse im Frame-Methoden zu protokollieren.
- * In protokollwuerdigen Stellen in Frame-Methoden muss entweder ein PROTOCOL(...) oder bei 
Methoden,
- * bei denen auch das Verlassen der Methode mitprotokolliert werden soll, ein 
PROTOCOL_ENTER(...)-Makro
- * stehen.
- * Die Parameter der PROTOCOL-Makros sind
- * 1.   Ein Pointer auf einen SwFrm, also meist "this" oder "rThis"
- * 2.   Die Funktionsgruppe z.B. PROT_MAKEALL, hierueber wird (inline) entschieden, ob dies
- *      zur Zeit protokolliert werden soll oder nicht.
- * 3.   Die Aktion, im Normalfall 0, aber z.B. ein ACT_START bewirkt eine Einrueckung in der
- *      Ausgabedatei, ein ACT_END nimmt dies wieder zurueck. Auf diese Art wird z.B. durch
- *      PROTOCOL_ENTER am Anfang einer Methode eingerueckt und beim Verlassen wieder zurueck.
- * 4.   Der vierte Parameter ist ein void-Pointer, damit man irgendetwas uebergeben kann,
- *      was in das Protokoll einfliessen kann, typesches Beispiel bei PROT_GROW muss man
- *      einen Pointer auf den Wert, um den gegrowt werden soll, uebergeben.
+ * The PROTOCOL macros allow you to log events in frame methods. In places where
+ * logging is useful either one of the PROTOCOL(...) or PROTOCOL_ENTER(...) can
+ * be used. PROTOCOL_ENTER(...) additionally logs the leaving of a method.
+ 
+ * The PROTOCOL macros accept the following parameters:
+ * 1.   A pointer to an SwFrm (usually "this" or "rThis")
+ * 2.   The function group i.e. PROT_MAKEALL. This is used to decide (inline)
+ *      whether this event shall be logged at the current time. 
+ * 3.   The action, usually 0. For example ACT_START indents output in the log
+ *      file and ACT_END stops the indentation. This allows for example 
+ *      PROTOCOL_ENTER to indent at the beginning of a method and stop indenting
+ *      when leaving the method.
+ * 4.   The fourth parameter is a void pointer which allows to pass anything
+ *      which can be used in the log. A good example is PROT_GROW: this requires
+ *      a pointer to the value which defines how much to grow.
  *
- *
- * Das Protokoll ist die Datei "dbg_lay.out" im aktuellen (BIN-)Verzeichnis.
- * Es enthaelt Zeilen mit FrmId, Funktionsgruppe sowie weiteren Infos.
+ * The log file is called "dbg_lay.out", which is saved in the current (BIN-)
+ * directory. The file contains lines with FrmId, function group and additional
+ * information.
  *
  * Was genau protokolliert wird, kann auf folgende Arten eingestellt werden:
- * 1.   Die statische Variable SwProtokoll::nRecord enthaelt die Funktionsgruppen,
- *      die aufgezeichnet werden sollen.
- *      Ein Wert von z.B. PROT_GROW bewirkt, das Aufrufe von SwFrm::Grow dokumentiert werden,
- *      PROT_MAKEALL protokolliert Aufrufe von xxx::MakeAll.
- *      Die PROT_XY-Werte koennen oderiert werden.
- *      Default ist Null, es wird keine Methode aufgezeichnet.
- * 2.   In der SwImplProtocol-Klasse gibt es einen Filter fuer Frame-Typen,
- *      nur die Methodenaufrufe von Frame-Typen, die dort gesetzt sind, werden protokolliert.
- *      Der Member nTypes kann auf Werte wie FRM_PAGE, FRM_SECTION gesetzt und oderiert werden.
- *      Default ist 0xFFFF, d.h. alle Frame-Typen.
+ * What exactly is going to be logged, can be defined as follows:
+ * 1.   The static variable SwProtocol::nRecord contains the function groups
+ *      which shall be logged.
+ *      A value of i.e. PROT_GROW causes calls to SwFrm::Grow to be
+ *      logged; PROT_MAKEALL logs the calls to xxx::MakeAll.
+ *      The PROT_XY values can be combined using binary OR, the default value
+ *      is null - no method calls are logged.
+ * 2.   The SwImplProtocol class contains a filter for frame types, only method
+ *      call of frame types which are defined there are logged.
+ *      The member nTypes can be set to values like FRM_PAGE or FRM_SECTION and
+ *      may be combined using binary OR. The default values is 0xFFFF - meaning
+ *      all frame types.
+
  * 3.   In der SwImplProtocol-Klasse gibt es einen ArrayPointer auf FrmIds, die zu ueberwachen 
sind.
  *      Ist der Pointer Null, so werden alle Frames protokolliert, ansonsten nur Frames,
  *      die in dem Array vermerkt sind.
+ 
+ * 3.   The SwImplProtocol class contains an ArrayPointer to FrmIds which need to be
+ *      tracked. If the pointer is null, all frames will be logged; otherwise
+ *      only frames of linked from the array will be logged.
  *
  * Eine Aufzeichnung in Gang zu setzen, erfordert entweder Codemanipulation, z.B. in
  * SwProtocol::Init() einen anderen Default fuer nRecord setzen oder Debuggermanipulation.
  * Im Debugger gibt verschiedene, sich anbietende Stellen:
+ 
+ * Code changes are needed to start logging; either change the default of nRecord
+ * in SwProtocol::Init() or change the debugger. There are several possible
+ * places in the debugger:
+ 
  * 1.   In SwProtocol::Init() einen Breakpoint setzen und dort nRecord manipulieren, ggf.
  *      FrmIds eintragen, dann beginnt die Aufzeichnung bereits beim Programmstart.
+ 
+ * 1.   Set a breakpoint in SwProtocol::Init() and manipulate nRecord there, set
+        FrmIds accordingly then start logging during program start.
+ 
  * 2.   Waehrend des Programmlaufs einen Breakpoint vor irgendein PROTOCOL oder PROTOCOL_ENTER-
  *      Makro setzen, dann am SwProtocol::nRecord das unterste Bit setzen (PROT_INIT). Dies
  *      bewirkt, dass die Funktionsgruppe des folgenden Makros aktiviert und in Zukunft
  *      protokolliert wird.
+ 
+ * 2.   Set a breakpoint before any PROTOCOL or PROTOCOL_ENTER macro during
+        program execution, then set the lowest bit (PROT_INIT) of
+        SwProtocol::nRecord. This activates the function group of the following
+        macro and causes it to be logged in the future.
+ 
  * 3.   Spezialfall von 2.: Wenn man 2. in der Methode SwRootFrm::Paint(..) anwendet, werden
  *      die Aufzeichnungseinstellung aus der Datei "dbg_lay.ini" ausgelesen!
  *      In dieser INI-Datei kann es Kommentarzeilen geben, diese beginnen mit '#', dann
@@ -98,9 +121,39 @@
  *          [frmtype] !0x3FFF 0x4
  *      ------------------------------------------
  *
+ * 3.   There's a special case for 2: If one uses 2. in SwRootFrm::Paint(..),
+ *      the log settings are taken from the file "dbg_lay.ini"!
+ *      In this INI-file you can have comment lines starting with a '#'.
+ *      The sections "[frmid]", "[frmtype]" and "[record]" are relevant.
+ *      In the [frmid] section, you can put FrameIds of the Frames to be logged.
+ *      If there are no entries in this section, all Frames will be logged.
+ *      In the [frmtype] section, the frame types which should be logged are
+ *      listed; default is USHRT_MAX which means that all types are logged.
+ *      It's possible to remove types from the list using '!' in front of a
+ *      value. The value !0xC000 would for example exclude SwCntntFrms from
+ *      logging.
+ *      In the [record] section the functions group which should be logged are
+ *      listed; default is 0 which means that none are logged. It's also
+ *      possible to remove functions using '!'.
+ *      An example INI file:
+ *      ------------------------------------------
+ *           #Functions: all, except PRTARE
+ *           [record] 0xFFFFFFFE !0x200
+ *           [frmid]
+ *           #the following FrmIds:
+ *           1 2 12 13 14 15
+ *           #no layout frames, except ColumnFrms
+ *           [frmtype] !0x3FFF 0x4
+ *      ------------------------------------------
+ 
  * Wenn die Aufzeichnung erstmal laeuft, kann man in SwImplProtocol::_Record(...) mittels
  * Debugger vielfaeltige Manipulationen vornehmen, z.B. bezueglich FrameTypen oder FrmIds.
  *
+ 
+ * As soon as the logging is in process, one can manipulate many things in 
+ * SwImplProtocol::_Record(...) using a debugger, especially concerning
+ * frame types and FrmIds.
+ 
  * --------------------------------------------------*/
 
 #include "dbg_lay.hxx"
@@ -137,16 +190,15 @@ sal_uLong lcl_GetFrameId( const SwFrm* pFrm )
 
 class SwImplProtocol
 {
-    SvFileStream *pStream;      // Ausgabestream
-    std::set<sal_uInt16> *pFrmIds;      // welche FrmIds sollen aufgezeichnet werden ( NULL == 
alle )
-    std::vector<long> aVars;    // Variables
-    rtl::OStringBuffer aLayer;          // Einrueckung der Ausgabe ("  " pro Start/End)
-    sal_uInt16 nTypes;              // welche Typen sollen aufgezeichnet werden
-    sal_uInt16 nLineCount;          // Ausgegebene Zeilen
-    sal_uInt16 nMaxLines;           // Maximal auszugebende Zeilen
-    sal_uInt8 nInitFile;                // Bereich (FrmId,FrmType,Record) beim Einlesen der 
INI-Datei
-    sal_uInt8 nTestMode;                // Special fuer Testformatierung, es wird ggf. nur
-                                // innerhalb einer Testformatierung aufgezeichnet.
+    SvFileStream *pStream;          // output stream
+    std::set<sal_uInt16> *pFrmIds;  // which FrmIds shall be logged ( NULL == all)
+    std::vector<long> aVars;        // variables
+    rtl::OStringBuffer aLayer;      // indentation of output ("  " per start/end)
+    sal_uInt16 nTypes;              // which types shall be logged
+    sal_uInt16 nLineCount;          // printed lines
+    sal_uInt16 nMaxLines;           // max lines to be printed
+    sal_uInt8 nInitFile;            // range (FrmId,FrmType,Record) during reading of the INI file
+    sal_uInt8 nTestMode;            // special for test formating, logging may only be done in 
test formating.
     void _Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong nAct, void* pParam );
     sal_Bool NewStream();
     void CheckLine( rtl::OString& rLine );
@@ -154,12 +206,12 @@ class SwImplProtocol
 public:
     SwImplProtocol();
     ~SwImplProtocol();
-    // Aufzeichnen
+    // logging
     void Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong nAct, void* pParam )
         { if( pStream ) _Record( pFrm, nFunction, nAct, pParam ); }
-    sal_Bool InsertFrm( sal_uInt16 nFrmId );    // FrmId aufnehmen zum Aufzeichnen
-    sal_Bool DeleteFrm( sal_uInt16 nFrmId );    // FrmId entfernen, diesen nicht mehr Aufzeichnen
-    void FileInit();                    // Auslesen der INI-Datei
+    sal_Bool InsertFrm( sal_uInt16 nFrmId );    // take FrmId for logging
+    sal_Bool DeleteFrm( sal_uInt16 nFrmId );    // remove FrmId; don't log him anymore
+    void FileInit();                    // read the INI file
     void ChkStream() { if( !pStream ) NewStream(); }
     void SnapShot( const SwFrm* pFrm, sal_uLong nFlags );
     void GetVar( const sal_uInt16 nNo, long& rVar )
@@ -167,31 +219,28 @@ public:
 };
 
 /* --------------------------------------------------
- * Durch das PROTOCOL_ENTER-Makro wird ein SwEnterLeave-Objekt erzeugt,
- * wenn die aktuelle Funktion aufgezeichnet werden soll, wird ein
- * SwImplEnterLeave-Objekt angelegt. Der Witz dabei ist, das der Ctor
- * des Impl-Objekt am Anfang der Funktion und automatisch der Dtor beim
- * Verlassen der Funktion gerufen wird. In der Basis-Implementierung ruft
- * der Ctor lediglich ein PROTOCOL(..) mit ACT_START und im Dtor ein
- * PROTOCOL(..) mit ACT_END.
- * Es lassen sich Ableitungen der Klasse bilden, um z.B. beim Verlassen
- * einer Funktion Groessenaenderungen des Frames zu dokumentieren u.v.a.m.
- * Dazu braucht dann nur noch in SwEnterLeave::Ctor(...) die gewuenschte
- * SwImplEnterLeave-Klasse angelegt zu werden.
- *
+ * Through the PROTOCOL_ENTER macro a SwEnterLeave object gets created. If the
+ * current function should be logged a SwImplEnterLeace object gets created.
+ * The funny thing here is, that the Ctor of the Impl object is automatically
+ * called at the beginning of the function and the Dtor is automatically called
+ * when leaving the function. In the base implementation the Ctor calls only
+ * PROTOCOL(..) with ACT_START and in the Dtor a PROTOCOL(..) with ACT_END.
+ * It's possible to derive from this class, for example to be able to document
+ * frame resize while leaving a function. To do this, one only needs to add the
+ * desired SwImplEnterLeave class in SwEnterLeave::Ctor().
  * --------------------------------------------------*/
 
 class SwImplEnterLeave
 {
 protected:
-    const SwFrm* pFrm;              // Der Frame,
-    sal_uLong nFunction, nAction;       // die Funktion, ggf. die Aktion
-    void* pParam;                   // und weitere Parameter
+    const SwFrm* pFrm;              // the frame
+    sal_uLong nFunction, nAction;   // the function, the action if needed
+    void* pParam;                   // further parameter
 public:
     SwImplEnterLeave( const SwFrm* pF, sal_uLong nFunct, sal_uLong nAct, void* pPar )
         : pFrm( pF ), nFunction( nFunct ), nAction( nAct ), pParam( pPar ) {}
-    virtual void Enter();           // Ausgabe beim Eintritt
-    virtual void Leave();           // Ausgabe beim Verlassen
+    virtual void Enter();           // message when entering
+    virtual void Leave();           // message when leaving
 };
 
 class SwSizeEnterLeave : public SwImplEnterLeave
@@ -200,7 +249,7 @@ class SwSizeEnterLeave : public SwImplEnterLeave
 public:
     SwSizeEnterLeave( const SwFrm* pF, sal_uLong nFunct, sal_uLong nAct, void* pPar )
         : SwImplEnterLeave( pF, nFunct, nAct, pPar ), nFrmHeight( pF->Frm().Height() ) {}
-    virtual void Leave();           // Ausgabe der Groessenaenderung
+    virtual void Leave();           // resize message
 };
 
 class SwUpperEnterLeave : public SwImplEnterLeave
@@ -209,8 +258,8 @@ class SwUpperEnterLeave : public SwImplEnterLeave
 public:
     SwUpperEnterLeave( const SwFrm* pF, sal_uLong nFunct, sal_uLong nAct, void* pPar )
         : SwImplEnterLeave( pF, nFunct, nAct, pPar ), nFrmId( 0 ) {}
-    virtual void Enter();           // Ausgabe
-    virtual void Leave();           // Ausgabe der FrmId des Uppers
+    virtual void Enter();           // message
+    virtual void Leave();           // message of FrmId from upper
 };
 
 class SwFrmChangesLeave : public SwImplEnterLeave
@@ -219,33 +268,34 @@ class SwFrmChangesLeave : public SwImplEnterLeave
 public:
     SwFrmChangesLeave( const SwFrm* pF, sal_uLong nFunct, sal_uLong nAct, void* pPar )
         : SwImplEnterLeave( pF, nFunct, nAct, pPar ), aFrm( pF->Frm() ) {}
-    virtual void Enter();           // keine Ausgabe
-    virtual void Leave();           // Ausgabe bei Aenderung der Frm-Area
+    virtual void Enter();           // no message
+    virtual void Leave();           // message when resizing the Frm area
 };
 
 void SwProtocol::Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong nAct, void* pParam )
 {
     if( Start() )
-    {   // Hier landen wir, wenn im Debugger SwProtocol::nRecord mit PROT_INIT(0x1) oderiert wurde
-        sal_Bool bFinit = sal_False; // Dies bietet im Debugger die Moeglichkeit,
-        if( bFinit )         // die Aufzeichnung dieser Action zu beenden
+    {   // We reach this point if SwProtocol::nRecord is binary OR'd with PROT_INIT(0x1) using the 
debugger
+        sal_Bool bFinit = sal_False; // This gives the possibility to stop logging of this action 
in the debugger
+        if( bFinit )
         {
-            nRecord &= ~nFunction;  // Diese Funktion nicht mehr aufzeichnen
-            nRecord &= ~PROT_INIT;  // PROT_INIT stets zuruecksetzen
+            nRecord &= ~nFunction;  // Don't log this function any longer
+            nRecord &= ~PROT_INIT;  // Always reset PROT_INIT
             return;
         }
-        nRecord |= nFunction;       // Aufzeichnung dieser Funktion freischalten
-        nRecord &= ~PROT_INIT;      // PROT_INIT stets zuruecksetzen
+        nRecord |= nFunction;       // Acitivate logging of this function
+        nRecord &= ~PROT_INIT;      // Always reset PROT_INIT
         if( pImpl )
             pImpl->ChkStream();
     }
-    if( !pImpl )                        // Impl-Object anlegen, wenn noetig
+    if( !pImpl )                        // Create Impl object if needed
         pImpl = new SwImplProtocol();
-    pImpl->Record( pFrm, nFunction, nAct, pParam ); // ...und Aufzeichnen
+    pImpl->Record( pFrm, nFunction, nAct, pParam ); // ...and start logging
 }
 
-// Die folgende Funktion wird beim Anziehen der Writer-DLL durch TxtInit(..) aufgerufen
-// und ermoeglicht dem Debuggenden Funktionen und/oder FrmIds freizuschalten
+// The following function gets called when pulling in the writer DLL through
+// TxtInit(..) and gives the possibility to release functions
+// and/or FrmIds to the debugger
 
 void SwProtocol::Init()
 {
@@ -260,7 +310,7 @@ void SwProtocol::Init()
     aStream.Close();
 }
 
-// Ende der Aufzeichnung
+// End of logging
 
 void SwProtocol::Stop()
 {
@@ -321,43 +371,43 @@ SwImplProtocol::~SwImplProtocol()
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::CheckLine analysiert eine Zeile der INI-Datei
+ * SwImplProtocol::CheckLine analyzes a line in the INI file
  * --------------------------------------------------*/
 
 void SwImplProtocol::CheckLine( rtl::OString& rLine )
 {
-    rLine = rLine.toAsciiLowerCase(); // Gross/Kleinschreibung ist einerlei
+    rLine = rLine.toAsciiLowerCase(); // upper/lower case is the same
     rLine = rLine.replace( '\t', ' ' );
-    if( '#' == rLine[0] )   // Kommentarzeilen beginnen mit '#'
+    if( '#' == rLine[0] )   // comments start with '#'
         return;
-    if( '[' == rLine[0] )   // Bereiche: FrmIds, Typen oder Funktionen
+    if( '[' == rLine[0] )   // section: FrmIds, type or funciton
     {
         rtl::OString aTmp = comphelper::string::getToken(rLine, 0, ']');
-        if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[frmid")))      // Bereich FrmIds
+        if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[frmid")))      // section FrmIds
         {
             nInitFile = 1;
             pFrmIds->clear();
             delete pFrmIds;
-            pFrmIds = NULL;         // Default: Alle Frames aufzeichnen
+            pFrmIds = NULL;         // default: log all frames
         }
-        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[frmtype")))// Bereich Typen
+        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[frmtype")))// section types
         {
             nInitFile = 2;
-            nTypes = USHRT_MAX;     // Default: Alle FrmaeTypen aufzeichnen
+            nTypes = USHRT_MAX;     // default: log all frame types
         }
-        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[record")))// Bereich Funktionen
+        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[record")))// section functions
         {
             nInitFile = 3;
-            SwProtocol::SetRecord( 0 );// Default: Keine Funktion wird aufgezeichnet
+            SwProtocol::SetRecord( 0 );// default: don't log any function
         }
-        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[test")))// Bereich Funktionen
+        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[test")))// section functions
         {
-            nInitFile = 4; // Default:
-            nTestMode = 0; // Ausserhalb der Testformatierung wird aufgezeichnet
+            nInitFile = 4; // default:
+            nTestMode = 0; // log outside of test formating
         }
-        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[max")))// maximale Zeilenzahl
+        else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[max")))// Max number of lines
         {
-            nInitFile = 5; // Default:
+            nInitFile = 5; // default:
             nMaxLines = USHRT_MAX;
         }
         else if (aTmp.equalsL(RTL_CONSTASCII_STRINGPARAM("[var")))// variables
@@ -365,11 +415,11 @@ void SwImplProtocol::CheckLine( rtl::OString& rLine )
             nInitFile = 6;
         }
         else
-            nInitFile = 0;          // Nanu: Unbekannter Bereich?
+            nInitFile = 0;          // oops: unknown section?
         rLine = rLine.copy(aTmp.getLength() + 1);
     }
 
-    // Blanks (oder Tabs) sind die Trenner
+    // spaces (or tabs) are the delimiter
     sal_Int32 nIndex = 0;
     do
     {
@@ -377,7 +427,7 @@ void SwImplProtocol::CheckLine( rtl::OString& rLine )
         sal_Bool bNo = sal_False;
         if( '!' == aTok[0] )
         {
-            bNo = sal_True;                 // Diese(n) Funktion/Typ entfernen
+            bNo = sal_True;                 // remove this function/type
             aTok = aTok.copy(1);
         }
         if( !aTok.isEmpty() )
@@ -386,31 +436,31 @@ void SwImplProtocol::CheckLine( rtl::OString& rLine )
             sscanf( aTok.getStr(), "%li", &nVal );
             switch ( nInitFile )
             {
-                case 1: InsertFrm( sal_uInt16( nVal ) );    // FrmId aufnehmen
+                case 1: InsertFrm( sal_uInt16( nVal ) );    // add FrmId 
                         break;
                 case 2: {
                             sal_uInt16 nNew = (sal_uInt16)nVal;
                             if( bNo )
-                                nTypes &= ~nNew;    // Typ entfernen
+                                nTypes &= ~nNew;    // remove type
                             else
-                                nTypes |= nNew;     // Typ aufnehmen
+                                nTypes |= nNew;     // add type
                         }
                         break;
                 case 3: {
                             sal_uLong nOld = SwProtocol::Record();
                             if( bNo )
-                                nOld &= ~nVal;      // Funktion entfernen
+                                nOld &= ~nVal;      // remove function
                             else
-                                nOld |= nVal;       // Funktion aufnehmen
+                                nOld |= nVal;       // remove function
                             SwProtocol::SetRecord( nOld );
                         }
                         break;
                 case 4: {
                             sal_uInt8 nNew = (sal_uInt8)nVal;
                             if( bNo )
-                                nTestMode &= ~nNew; // TestMode zuruecksetzen
+                                nTestMode &= ~nNew; // reset test mode
                             else
-                                nTestMode |= nNew;      // TestMode setzen
+                                nTestMode |= nNew;      // set test mode
                         }
                         break;
                 case 5: nMaxLines = (sal_uInt16)nVal;
@@ -424,8 +474,8 @@ void SwImplProtocol::CheckLine( rtl::OString& rLine )
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::FileInit() liest die Datei "dbg_lay.ini"
- * im aktuellen Verzeichnis und wertet sie aus.
+ * SwImplProtocol::FileInit() reads the file "dbg_lay.ini"
+ * in the current directory and evaluates it.
  * --------------------------------------------------*/
 void SwImplProtocol::FileInit()
 {
@@ -439,25 +489,25 @@ void SwImplProtocol::FileInit()
         {
             sal_Char c;
             aStream >> c;
-            if( '\n' == c || '\r' == c )    // Zeilenende
+            if( '\n' == c || '\r' == c )    // line ending
             {
                 aLine = aLine.trim();
                 if( !aLine.isEmpty() )
-                    CheckLine( aLine );     // Zeile auswerten
+                    CheckLine( aLine );     // evaluate line
                 aLine = rtl::OString();
             }
             else
                 aLine = rtl::OString(c);
         }
         if( !aLine.isEmpty() )
-            CheckLine( aLine );     // letzte Zeile auswerten
+            CheckLine( aLine );     // evaluate last line
     }
     aStream.Close();
 }
 
 /* --------------------------------------------------
- * lcl_Start sorgt fuer Einrueckung um zwei Blanks bei ACT_START
- * und nimmt diese bei ACT_END wieder zurueck.
+ * lcl_Start enables indentation by two spaces during ACT_START and disables
+ * it again at ACT_END.
  * --------------------------------------------------*/
 void lcl_Start(rtl::OStringBuffer& rOut, rtl::OStringBuffer& rLay, sal_uLong nAction)
 {
@@ -478,8 +528,8 @@ void lcl_Start(rtl::OStringBuffer& rOut, rtl::OStringBuffer& rLay, sal_uLong nAc
 }
 
 /* --------------------------------------------------
- * lcl_Flags gibt das ValidSize-, ValidPos- und ValidPrtArea-Flag ("Sz","Ps","PA")
- * des Frames aus, "+" fuer valid, "-" fuer invalid.
+ * lcl_Flags outputs the ValidSize-, ValidPos- and ValidPrtArea-Flag ("Sz","Ps","PA")
+ * of the frame; "+" stands for valid, "-" stands for invalid.
  * --------------------------------------------------*/
 
 void lcl_Flags(rtl::OStringBuffer& rOut, const SwFrm* pFrm)
@@ -493,7 +543,7 @@ void lcl_Flags(rtl::OStringBuffer& rOut, const SwFrm* pFrm)
 }
 
 /* --------------------------------------------------
- * lcl_FrameType gibt den Typ des Frames in Klartext aus.
+ * lcl_FrameType outputs the type of the frame as clear text.
  * --------------------------------------------------*/
 
 void lcl_FrameType( rtl::OStringBuffer& rOut, const SwFrm* pFrm )
@@ -542,16 +592,15 @@ void lcl_FrameType( rtl::OStringBuffer& rOut, const SwFrm* pFrm )
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::Record(..) wird nur gerufen, wenn das PROTOCOL-Makro
- * feststellt, dass die Funktion aufgezeichnet werden soll ( SwProtocol::nRecord ).
- * In dieser Methode werden noch die beiden weiteren Einschraenkungen ueberprueft,
- * ob die FrmId und der FrameType zu den aufzuzeichnenden gehoeren.
+ * SwImplProtocol::Record(..) is only called if the PROTOCOL macro finds out, 
+ * that this function should be recorded ( SwProtocol::nRecord ).
+ * In this method we also check if FrmId and frame type should be logged.
  * --------------------------------------------------*/
 
 void SwImplProtocol::_Record( const SwFrm* pFrm, sal_uLong nFunction, sal_uLong nAct, void* pParam 
)
 {
     sal_uInt16 nSpecial = 0;
-    if( nSpecial )  // Debugger-Manipulationsmoeglichkeit
+    if( nSpecial )  // the possible debugger manipulations
     {
         sal_uInt16 nId = sal_uInt16(lcl_GetFrameId( pFrm ));
         switch ( nSpecial )
@@ -564,22 +613,22 @@ void SwImplProtocol::_Record( const SwFrm* pFrm, sal_uLong nFunction, 
sal_uLong
         return;
     }
     if( !pStream && !NewStream() )
-        return; // Immer noch kein Stream
+        return; // still no stream
 
     if( pFrmIds && !pFrmIds->count( sal_uInt16(lcl_GetFrameId( pFrm )) ) )
-        return; // gehoert nicht zu den gewuenschten FrmIds
+        return; // doesn't belong to the wished FrmIds
 
     if( !(pFrm->GetType() & nTypes) )
-        return; // Der Typ ist unerwuenscht
+        return; // the type is unwanted
 
     if( 1 == nTestMode && nFunction != PROT_TESTFORMAT )
-        return; // Wir sollen nur innerhalb einer Testformatierung aufzeichnen
+        return; // we may only log inside a test formating
     sal_Bool bTmp = sal_False;
     rtl::OStringBuffer aOut(aLayer);
     aOut.append(static_cast<sal_Int64>(lcl_GetFrameId(pFrm)));
     aOut.append(' ');
-    lcl_FrameType( aOut, pFrm );    // dann den FrameType
-    switch ( nFunction )            // und die Funktion
+    lcl_FrameType( aOut, pFrm );    // then the frame type
+    switch ( nFunction )            // and the function
     {
         case PROT_SNAPSHOT: lcl_Flags( aOut, pFrm );
                             break;
@@ -701,15 +750,15 @@ void SwImplProtocol::_Record( const SwFrm* pFrm, sal_uLong nFunction, 
sal_uLong
                                 break;
                             }
     }
-    *pStream << aOut.getStr() << endl;  // Ausgabe
-    pStream->Flush();   // Gleich auf die Platte, damit man mitlesen kann
-    if( ++nLineCount >= nMaxLines )     // Maximale Ausgabe erreicht?
-        SwProtocol::SetRecord( 0 );        // => Ende der Aufzeichnung
+    *pStream << aOut.getStr() << endl;  // output
+    pStream->Flush();   // to the disk, so we can read it immediately
+    if( ++nLineCount >= nMaxLines )     // max number of lines reached?
+        SwProtocol::SetRecord( 0 );        // => end f logging
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::SectFunc(...) wird von SwImplProtocol::_Record(..) gerufen,
- * hier werden die Ausgaben rund um SectionFrms abgehandelt.
+ * SwImplProtocol::SectFunc(...) is called from SwImplProtocol::_Record(..)
+ * here we handle the output of the SectionFrms.
  * --------------------------------------------------*/
 
 void SwImplProtocol::SectFunc(rtl::OStringBuffer &rOut, const SwFrm* , sal_uLong nAct, void* 
pParam)
@@ -740,9 +789,9 @@ void SwImplProtocol::SectFunc(rtl::OStringBuffer &rOut, const SwFrm* , sal_uLong
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::InsertFrm(..) nimmt eine neue FrmId zum Aufzeichnen auf,
- * wenn pFrmIds==NULL, werden alle aufgezeichnet, sobald durch InsertFrm(..)
- * pFrmIds angelegt wird, werden nur noch die enthaltenen FrmIds aufgezeichnet.
+ * SwImplProtocol::InsertFrm(..) takes a new FrmId for logging; if pFrmIds==NULL
+ * all are going to be logged but as soon as pFrmIds are set through
+ * InsertFrm(..) only the added FrmIds are being logged.
  * --------------------------------------------------*/
 
 sal_Bool SwImplProtocol::InsertFrm( sal_uInt16 nId )
@@ -756,8 +805,8 @@ sal_Bool SwImplProtocol::InsertFrm( sal_uInt16 nId )
 }
 
 /* --------------------------------------------------
- * SwImplProtocol::DeleteFrm(..) entfernt eine FrmId aus dem pFrmIds-Array,
- * so dass diese Frame nicht mehr aufgezeichnet wird.
+ * SwImplProtocol::DeleteFrm(..) removes a FrmId from the pFrmIds array, so they
+ * won't be logged anymore.
  * --------------------------------------------------*/
 sal_Bool SwImplProtocol::DeleteFrm( sal_uInt16 nId )
 {
@@ -803,10 +852,10 @@ void SwImplProtocol::SnapShot( const SwFrm* pFrm, sal_uLong nFlags )
 }
 
 /* --------------------------------------------------
- * SwEnterLeave::Ctor(..) wird vom eigentlichen (inline-)Kontruktor gerufen,
- * wenn die Funktion aufgezeichnet werden soll.
- * Die Aufgabe ist es abhaengig von der Funktion das richtige SwImplEnterLeave-Objekt
- * zu erzeugen, alles weitere geschieht dann in dessen Ctor/Dtor.
+ * SwEnterLeave::Ctor(..) is called from the (inline-)CTor if the function should
+ * be logged.
+ * The task here is to find the right SwImplEnterLeave object based on the
+ * function; everything else is then done in his Ctor/Dtor.
  * --------------------------------------------------*/
 void SwEnterLeave::Ctor( const SwFrm* pFrm, sal_uLong nFunc, sal_uLong nAct, void* pPar )
 {
@@ -824,9 +873,9 @@ void SwEnterLeave::Ctor( const SwFrm* pFrm, sal_uLong nFunc, sal_uLong nAct, voi
 }
 
 /* --------------------------------------------------
- * SwEnterLeave::Dtor() ruft lediglich den Destruktor des SwImplEnterLeave-Objekts,
- * ist nur deshalb nicht inline, damit die SwImplEnterLeave-Definition nicht
- * im dbg_lay.hxx zu stehen braucht.
+ * SwEnterLeave::Dtor() only calls the Dtor of the SwImplEnterLeave object. It's
+ * just no inline because we don't want the SwImplEnterLeave definition inside
+ * dbg_lay.hxx.
  * --------------------------------------------------*/
 
 void SwEnterLeave::Dtor()
-- 
1.7.9.1


From 54b9ed01a1b10533b3e9b1ceb940f5184e90f018 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:37:08 +0100
Subject: [PATCH 09/22] translate german comments

---
 sw/source/core/layout/findfrm.cxx |  143 +++++++++++++++++-------------------
 1 files changed, 68 insertions(+), 75 deletions(-)

diff --git a/sw/source/core/layout/findfrm.cxx b/sw/source/core/layout/findfrm.cxx
index 35750c7..ca2d014 100644
--- a/sw/source/core/layout/findfrm.cxx
+++ b/sw/source/core/layout/findfrm.cxx
@@ -53,8 +53,7 @@
 |*
 |*  FindBodyCont, FindLastBodyCntnt()
 |*
-|*  Beschreibung        Sucht den ersten/letzten CntntFrm im BodyText unterhalb
-|*      der Seite.
+|*  Description     Searches the first/last CntntFrm in BodyText below the page.
 |*
 |*************************************************************************/
 SwLayoutFrm *SwFtnBossFrm::FindBodyCont()
@@ -80,20 +79,19 @@ SwCntntFrm *SwPageFrm::FindLastBodyCntnt()
 |*
 |*  SwLayoutFrm::ContainsCntnt
 |*
-|*  Beschreibung            Prueft, ob der Frame irgendwo in seiner
-|*          untergeordneten Struktur einen oder mehrere CntntFrm's enthaelt;
-|*          Falls ja wird der erste gefundene CntntFrm zurueckgegeben.
+|*  Description     Checks if the frame contains one or more CntntFrm's
+|*          anywhere in his subsidiary structure; if so the first found CntntFrm
+|*          is returned
 |*
 |*************************************************************************/
 
 const SwCntntFrm *SwLayoutFrm::ContainsCntnt() const
 {
-    //LayoutBlatt nach unten hin suchen und wenn dieses keinen Inhalt hat
-    //solange die weiteren Blatter abklappern bis Inhalt gefunden oder der
-    //this verlassen wird.
-    //Sections: Cntnt neben Sections wuerde so nicht gefunden (leere Section
-    //direct neben CntntFrm), deshalb muss fuer diese Aufwendiger rekursiv gesucht
-    //werden.
+    //Search downwards the layout sheet and if there is no content, jump to the
+    //next sheet until content is found or "this" is leaved.
+    //Sections: Cntnt next to sections would not be found this way (empty
+    //sections directely next to CntntFrm) therefore we need to recursively
+    //search form them even if it's more complex.
 
     const SwLayoutFrm *pLayLeaf = this;
     do
@@ -132,11 +130,10 @@ const SwCntntFrm *SwLayoutFrm::ContainsCntnt() const
 |*
 |*  SwLayoutFrm::FirstCell
 |*
-|*  Beschreibung    ruft zunaechst ContainsAny auf, um in die innerste Zelle
-|*                  hineinzukommen. Dort hangelt es sich wieder hoch zum
-|*                  ersten SwCellFrm, seit es SectionFrms gibt, reicht kein
-|*                  ContainsCntnt()->GetUpper() mehr...
-|*
+|*  Description     Calls ContainsAny first to reach the innermost cell. From
+|*                  there we walk back up to the first SwCellFrm. Since we use 
+|*                  SectionFrms ContainsCntnt()->GetUpper() is not enough any
+|*                  more.
 |*************************************************************************/
 
 const SwCellFrm *SwLayoutFrm::FirstCell() const
@@ -151,9 +148,8 @@ const SwCellFrm *SwLayoutFrm::FirstCell() const
 |*
 |*  SwLayoutFrm::ContainsAny
 |*
-|*  Beschreibung wie ContainsCntnt, nur dass nicht nur CntntFrms, sondern auch
-|*          Bereiche und Tabellen zurueckgegeben werden.
-|*
+|*  Description      like CotainsCntnt, but does not only return CntnFrms but
+|*  also ranges and tables.
 |*************************************************************************/
 
 // #130797#
@@ -161,10 +157,9 @@ const SwCellFrm *SwLayoutFrm::FirstCell() const
 // content of footnotes for sections.
 const SwFrm *SwLayoutFrm::ContainsAny( const bool _bInvestigateFtnForSections ) const
 {
-    //LayoutBlatt nach unten hin suchen und wenn dieses keinen Inhalt hat
-    //solange die weiteren Blatter abklappern bis Inhalt gefunden oder der
-    //this verlassen wird.
-    // Oder bis wir einen SectionFrm oder TabFrm gefunden haben
+    //Search downwards the layout sheet and if there is no content, jump to the
+    //next sheet until content is found, "this" is leaved or until we found
+    //a SectionFrm or a TabFrm.
 
     const SwLayoutFrm *pLayLeaf = this;
     // #130797#
@@ -179,8 +174,8 @@ const SwFrm *SwLayoutFrm::ContainsAny( const bool _bInvestigateFtnForSections )
         if( ( pLayLeaf->IsTabFrm() || pLayLeaf->IsSctFrm() )
             && pLayLeaf != this )
         {
-            // Wir liefern jetzt auch "geloeschte" SectionFrms zurueck,
-            // damit diese beim SaveCntnt und RestoreCntnt mitgepflegt werden.
+            // Now we also return "deleted" SectionFrms so they can be
+            // maintained on SaveCntnt and RestoreCntnt
             return pLayLeaf;
         }
         else if ( pLayLeaf->Lower() )
@@ -383,20 +378,16 @@ const SwLayoutFrm *SwFrm::ImplGetNextLayoutLeaf( bool bFwd ) const
 |*
 |*    SwFrm::ImplGetNextCntntFrm( bool )
 |*
-|*      Rueckwaertswandern im Baum: Den untergeordneten Frm greifen,
-|*      wenn es einen gibt und nicht gerade zuvor um eine Ebene
-|*      aufgestiegen wurde (das wuerde zu einem endlosen Auf und Ab
-|*      fuehren!). Damit wird sichergestellt, dass beim
-|*      Rueckwaertswandern alle Unterbaeume durchsucht werden. Wenn
-|*      abgestiegen wurde, wird zuerst an das Ende der Kette gegangen,
-|*      weil im weiteren ja vom letzten Frm innerhalb eines anderen
-|*      Frms rueckwaerts gegangen wird.
-|*      Vorwaetzwander funktioniert analog.
-|*
+|*      Walk back inside the tree: grab the subordinate Frm if one exists and
+|*      the last step was not moving up a level (this would lead to an infinite
+|*      up/down loop!). With this we get sure that during walking back we search
+|*      through all sub trees. If we walked downwards we have to go to the end
+|*      of the chain first because we go backwards from the last Frm inside
+|*      another Frm. Walking forward works the same.
 |*************************************************************************/
 
-// Achtung: Fixes in ImplGetNextCntntFrm() muessen moeglicherweise auch in
-// die weiter oben stehende Methode lcl_NextFrm(..) eingepflegt werden
+// Caution: fixes in ImplGetNextCntntFrm() may also need to be applied to the
+// lcl_NextFrm(..) method above
 const SwCntntFrm* SwCntntFrm::ImplGetNextCntntFrm( bool bFwd ) const
 {
     const SwFrm *pFrm = this;
@@ -469,8 +460,8 @@ SwPageFrm* SwFrm::FindPageFrm()
 SwFtnBossFrm* SwFrm::FindFtnBossFrm( sal_Bool bFootnotes )
 {
     SwFrm *pRet = this;
-    // Innerhalb einer Tabelle gibt es keine Fussnotenbosse, auch spaltige
-    // Bereiche enthalten dort keine Fussnotentexte
+    // Footnoteboses can't exists inside a table; also column based sections
+    // don't contain footnote textes there
     if( pRet->IsInTab() )
         pRet = pRet->FindTabFrm();
     while ( pRet && !pRet->IsFtnBossFrm() )
@@ -570,7 +561,7 @@ SwFrm* SwFrm::FindFooterOrHeader()
 {
     SwFrm* pRet = this;
     do
-    {   if ( pRet->GetType() & 0x0018 ) //Header und Footer
+    {   if ( pRet->GetType() & 0x0018 ) //header and footer
             return pRet;
         else if ( pRet->GetUpper() )
             pRet = pRet->GetUpper();
@@ -648,26 +639,23 @@ const SwAttrSet* SwFrm::GetAttrSet() const
 /*************************************************************************
 |*
 |*  SwFrm::_FindNext(), _FindPrev(), InvalidateNextPos()
-|*         _FindNextCnt() geht in Tabellen und Bereiche hineinund liefert
-|*         nur SwCntntFrms.
-|*
-|*  Beschreibung        Invalidiert die Position des Naechsten Frames.
-|*      Dies ist der direkte Nachfolger, oder bei CntntFrm's der naechste
-|*      CntntFrm der im gleichen Fluss liegt wie ich:
-|*      - Body,
-|*      - Fussnoten,
-|*      - Bei Kopf-/Fussbereichen ist die Benachrichtigung nur innerhalb des
-|*        Bereiches weiterzuleiten.
-|*      - dito fuer Flys.
-|*      - Cntnts in Tabs halten sich ausschliesslich innerhalb ihrer Zelle
-|*        auf.
-|*      - Tabellen verhalten sich prinzipiell analog zu den Cntnts
-|*      - Bereiche ebenfalls
+|*         _FindNextCnt() visits tables and sections and only returns SwCntntFrms.
 |*
+|*  Description         Invalidates the position of the next frame.
+|*      This is the direct succesor or when talking about CntntFrms the next
+|*      CntntFrm which sits in the same flow as I do:
+|*      - body,
+|*      - footnote,
+|*      - in head-/footnote sections the notification only needs to be forwarded
+|*        inside the section
+|*      - same for Flys
+|*      - Cntnts in tabs remain only inside their cell
+|*      - in principle tables behave exactly like the Cntnts
+|*      - sections also
 |*************************************************************************/
 
-// Diese Hilfsfunktion ist ein Aequivalent zur ImplGetNextCntntFrm()-Methode,
-// sie liefert allerdings neben ContentFrames auch TabFrms und SectionFrms.
+// This helper function is an equivalent to the ImplGetNextCntntFrm() method,
+// besides ContentFrames this function also returns TabFrms and SectionFrms.
 SwFrm* lcl_NextFrm( SwFrm* pFrm )
 {
     SwFrm *pRet = 0;
@@ -704,9 +692,9 @@ SwFrm *SwFrm::_FindNext()
 
     if ( IsTabFrm() )
     {
-        //Der letzte Cntnt der Tabelle wird
-        //gegriffen und dessen Nachfolger geliefert. Um die Spezialbeh.
-        //Fuer Tabellen (s.u.) auszuschalten wird bIgnoreTab gesetzt.
+        //The last Cntnt of the table gets picked up and his follower is
+        //returned. To be able to deactivate the special case for tables
+        //(see below) bIgnoreTab will be set.
         if ( ((SwTabFrm*)this)->GetFollow() )
             return ((SwTabFrm*)this)->GetFollow();
 
@@ -717,8 +705,7 @@ SwFrm *SwFrm::_FindNext()
     }
     else if ( IsSctFrm() )
     {
-        //Der letzte Cntnt des Bereichs wird gegriffen und dessen Nachfolger
-        // geliefert.
+        //The last Cntnt of the section gets picked and his follower is returned.
         if ( ((SwSectionFrm*)this)->GetFollow() )
             return ((SwSectionFrm*)this)->GetFollow();
 
@@ -798,7 +785,7 @@ SwFrm *SwFrm::_FindNext()
                 pRet = pNxtCnt->IsInTab() ? pNxtCnt->FindTabFrm()
                                             : (SwFrm*)pNxtCnt;
             }
-            else    //Fuss-/oder Kopfbereich
+            else    //footer-/or header section
             {
                 const SwFrm *pUp = pThis->GetUpper();
                 const SwFrm *pCntUp = pNxtCnt->GetUpper();
@@ -821,6 +808,9 @@ SwFrm *SwFrm::_FindNext()
         SwSectionFrm* pSct = pRet->FindSctFrm();
         //Fussnoten in spaltigen Rahmen duerfen nicht den Bereich
         //liefern, der die Fussnoten umfasst
+
+        //Footnotes in column frames must not return the section which
+        //contains the footnote
         if( !pSct->IsAnLower( this ) &&
             (!bFtn || pSct->IsInFtn() ) )
             return pSct;
@@ -1089,9 +1079,9 @@ SwFrm *SwFrm::_FindPrev()
 
     if ( IsTabFrm() )
     {
-        //Der erste Cntnt der Tabelle wird
-        //gegriffen und dessen Vorgaenger geliefert. Um die Spezialbeh.
-        //Fuer Tabellen (s.u.) auszuschalten wird bIgnoreTab gesetzt.
+        //The first Cntnt of the table gets picked up and his predecessor is
+        //returnd. To be able to deactivate the special case for tables
+        //(see below) bIgnoreTab will be set.
         if ( ((SwTabFrm*)this)->IsFollow() )
             return ((SwTabFrm*)this)->FindMaster();
         else
@@ -1109,7 +1099,7 @@ SwFrm *SwFrm::_FindPrev()
             SwLayoutFrm *pUp = pThis->GetUpper();
             while ( !pUp->IsCellFrm() )
                 pUp = pUp->GetUpper();
-            OSL_ENSURE( pUp, "Cntnt in Tabelle aber nicht in Zelle." );
+            OSL_ENSURE( pUp, "Cntnt in table but not in cell." );
             if ( pUp->IsAnLower( pPrvCnt ) )
                 return pPrvCnt;
         }
@@ -1138,7 +1128,7 @@ SwFrm *SwFrm::_FindPrev()
                                             : (SwFrm*)pPrvCnt;
                 return pRet;
             }
-            else    //Fuss-/oder Kopfbereich oder Fly
+            else    //foot-/or head section or Fly
             {
                 const SwFrm *pUp = pThis->GetUpper();
                 const SwFrm *pCntUp = pPrvCnt->GetUpper();
@@ -1186,6 +1176,9 @@ void SwFrm::ImplInvalidateNextPos( sal_Bool bNoFtn )
                 if ( pFrm->IsSctFrm())
                 { // Damit der Inhalt eines Bereichs die Chance erhaelt,
                   // die Seite zu wechseln, muss er ebenfalls invalidiert werden.
+
+                  // We need to invalidate a sections content so it gets the
+                  // chance to change the page.
                     SwFrm* pTmp = ((SwSectionFrm*)pFrm)->ContainsAny();
                     if( pTmp )
                         pTmp->InvalidatePos();
@@ -1257,9 +1250,9 @@ void SwFrm::InvalidateNextPrtArea()
 /*************************************************************************
 |*
 |*    lcl_IsInColSect()
-|*      liefert nur sal_True, wenn der Frame _direkt_ in einem spaltigen Bereich steht,
-|*      nicht etwa, wenn er in einer Tabelle steht, die in einem spaltigen Bereich ist.
 |*
+|*      returns sal_True, if the frame _directly_ sits in a column section but
+|*      not if it sits in a table which itself sits in a column section.
 |*************************************************************************/
 
 sal_Bool lcl_IsInColSct( const SwFrm *pUp )
@@ -1363,8 +1356,8 @@ bool SwFrm::IsMoveable( const SwLayoutFrm* _pLayoutFrm ) const
 |*************************************************************************/
 void SwFrm::SetInfFlags()
 {
-    if ( !IsFlyFrm() && !GetUpper() ) //noch nicht gepastet, keine Informationen
-        return;                       //lieferbar
+    if ( !IsFlyFrm() && !GetUpper() ) //not yet pasted, no information available
+        return;
 
     bInfInvalid = bInfBody = bInfTab = bInfFly = bInfFtn = bInfSct = sal_False;
 
@@ -1372,7 +1365,7 @@ void SwFrm::SetInfFlags()
     if( IsFtnContFrm() )
         bInfFtn = sal_True;
     do
-    {   // bInfBody wird nur am Seitenbody, nicht im ColumnBody gesetzt
+        // bInfBody is only set in the page body, but not in the column body
         if ( pFrm->IsBodyFrm() && !bInfFtn && pFrm->GetUpper()
              && pFrm->GetUpper()->IsPageFrm() )
             bInfBody = sal_True;
@@ -1389,7 +1382,7 @@ void SwFrm::SetInfFlags()
 
         pFrm = pFrm->GetUpper();
 
-    } while ( pFrm && !pFrm->IsPageFrm() ); //Oberhalb der Seite kommt nix
+    } while ( pFrm && !pFrm->IsPageFrm() ); //there is nothing above the page
 }
 
 /*
@@ -1436,7 +1429,7 @@ void SwFrm::SetDirFlags( sal_Bool bVert )
             const SwFrm* pAsk = IsFlyFrm() ?
                           ((SwFlyFrm*)this)->GetAnchorFrm() : GetUpper();
 
-            OSL_ENSURE( pAsk != this, "Autsch! Stack overflow is about to happen" );
+            OSL_ENSURE( pAsk != this, "Oops! Stack overflow is about to happen" );
 
             if( pAsk )
                 bRightToLeft = pAsk->IsRightToLeft() ? 1 : 0;
-- 
1.7.9.1


From 405f9fad35d04d9a97b8f44a66ad6ef8af1a5480 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:37:18 +0100
Subject: [PATCH 10/22] translate german comments

---
 sw/source/core/layout/flycnt.cxx |  189 ++++++++++++++++++--------------------
 1 files changed, 89 insertions(+), 100 deletions(-)

diff --git a/sw/source/core/layout/flycnt.cxx b/sw/source/core/layout/flycnt.cxx
index 265c741..3eb4ab7 100644
--- a/sw/source/core/layout/flycnt.cxx
+++ b/sw/source/core/layout/flycnt.cxx
@@ -94,22 +94,22 @@ void SwFlyAtCntFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
     if( RES_ATTRSET_CHG == nWhich && SFX_ITEM_SET ==
         ((SwAttrSetChg*)pNew)->GetChgSet()->GetItemState( RES_ANCHOR, sal_False,
             (const SfxPoolItem**)&pAnch ))
-        ;       // Beim GetItemState wird der AnkerPointer gesetzt !
+        ;       // The anchor pointer is set at GetItemState!
 
     else if( RES_ANCHOR == nWhich )
     {
-        //Ankerwechsel, ich haenge mich selbst um.
-        //Es darf sich nicht um einen Wechsel des Ankertyps handeln,
-        //dies ist nur ueber die SwFEShell moeglich.
+        //Change anchor, I move myself to a new place.
+        //The anchor type must not change, this is only possible using
+        //SwFEShell.
         pAnch = (const SwFmtAnchor*)pNew;
     }
 
     if( pAnch )
     {
         OSL_ENSURE( pAnch->GetAnchorId() == GetFmt()->GetAnchor().GetAnchorId(),
-                "Unzulaessiger Wechsel des Ankertyps." );
+                "Illegal change of anchor type. " );
 
-        //Abmelden, neuen Anker besorgen und 'dranhaengen.
+        //Unregister, get hold of a new anchor and attach it
         SwRect aOld( GetObjRectWithSpaces() );
         SwPageFrm *pOldPage = FindPageFrm();
         const SwFrm *pOldAnchor = GetAnchorFrm();
@@ -118,19 +118,18 @@ void SwFlyAtCntFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
 
         const sal_Bool bBodyFtn = (pCntnt->IsInDocBody() || pCntnt->IsInFtn());
 
-        //Den neuen Anker anhand des NodeIdx suchen, am alten und
-        //neuen NodeIdx kann auch erkannt werden, in welche Richtung
-        //gesucht werden muss.
+        //Search the new anchor usind the NodeIdx, based on the old and new
+        //NodeIdx can also be discovered in which direction searching has to be
+        //done.
         const SwNodeIndex aNewIdx( pAnch->GetCntntAnchor()->nNode );
         SwNodeIndex aOldIdx( *pCntnt->GetNode() );
 
-        //fix: Umstellung, ehemals wurde in der do-while-Schleife nach vorn bzw.
-        //nach hinten gesucht; je nachdem wie welcher Index kleiner war.
-        //Das kann aber u.U. zu einer Endlosschleife fuehren. Damit
-        //wenigstens die Schleife unterbunden wird suchen wir nur in eine
-        //Richtung. Wenn der neue Anker nicht gefunden wird koennen wir uns
-        //immer noch vom Node einen Frame besorgen. Die Change, dass dies dann
-        //der richtige ist, ist gut.
+        //fix: depending on which index was smaller, searching in the do-while
+        //loop previously was done forward or backwards respectively. This however
+        //could lead to an infinite loop. To at least avoid the loop, searching
+        //is now done in only one direction. Getting hold of a frame from the node
+        //is still possible if the new anchor could not be found. Chances are
+        //good that this will be the correct one.
         const bool bNext = aOldIdx < aNewIdx;
         // consider the case that at found anchor frame candidate already a
         // fly frame of the given fly format is registered.
@@ -176,14 +175,14 @@ void SwFlyAtCntFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
             pCntnt = pNode->getLayoutFrm( getRootFrm(), &pOldAnchor->Frm().Pos(), 0, sal_False );
             OSL_ENSURE( pCntnt, "Neuen Anker nicht gefunden" );
         }
-        //Flys haengen niemals an einem Follow sondern immer am
-        //Master, den suchen wir uns jetzt.
+        //Flys are never attached to a follow, but always on the master which
+        //we are going to search now.
         SwCntntFrm* pFlow = pCntnt;
         while ( pFlow->IsFollow() )
             pFlow = pFlow->FindMaster();
         pCntnt = pFlow;
 
-        //und schwupp angehaengt das teil...
+        //and *puff* it's attached...
         pCntnt->AppendFly( this );
         if ( pOldPage && pOldPage != FindPageFrm() )
             NotifyBackground( pOldPage, aOld, PREP_FLY_LEAVE );
@@ -204,28 +203,24 @@ void SwFlyAtCntFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
 |*
 |*  SwFlyAtCntFrm::MakeAll()
 |*
-|*  Beschreibung        Bei einem Absatzgebunden Fly kann es durchaus sein,
-|*      das der Anker auf die Veraenderung des Flys reagiert. Auf diese
-|*      Reaktion hat der Fly natuerlich auch wieder zu reagieren.
-|*      Leider kann dies zu Oszillationen fuehren z.b. Der Fly will nach
-|*      unten, dadurch kann der Inhalt nach oben, der TxtFrm wird kleiner,
-|*      der Fly muss wieder hoeher woduch der Text wieder nach unten
-|*      verdraengt wird...
-|*      Um derartige Oszillationen zu vermeiden, wird ein kleiner Positions-
-|*      stack aufgebaut. Wenn der Fly ein Position erreicht, die er bereits
-|*      einmal einnahm, so brechen wir den Vorgang ab. Um keine Risiken
-|*      einzugehen, wird der Positionsstack so aufgebaut, dass er fuenf
-|*      Positionen zurueckblickt.
-|*      Wenn der Stack ueberlaeuft, wird ebenfalls abgebrochen.
-|*      Der Abbruch fuer dazu, dass der Fly am Ende eine unguenste Position
-|*      einnimmt. Damit es nicht durch einen wiederholten Aufruf von
-|*      Aussen zu einer 'grossen Oszillation' kommen kann wird im Abbruch-
-|*      fall das Attribut des Rahmens auf automatische Ausrichtung oben
-|*      eingestellt.
-|*
+|*  Description         With a paragraph-anchored fly it's absolutely possible that
+|*      the anchor reacts to changes of the fly. To this reaction the fly must
+|*      certaily react too. Sadly this can lead to oscillations; for example the
+|*      fly wants to go down therefore the content can go up - this leads to a 
+|*      smaller TxtFrm thus the fly needs to go up again whereby the text will
+|*      get pushed down...
+|*      To avoid such oscillations, a small position stack is built. If the fly
+|*      reaches a position which it already had once, the action is stopped.
+|*      To not run into problems, the stack is designed to hold five positions.
+|*      If the stack flows over, the action is stopped too.
+|*      Cancellation leads to the situation that the fly has a bad position in
+|*      the end. In case of cancellation, the frame is set to automatic top
+|*      alignment to not trigger a 'big oscillation' when calling from outside
+|*      again.
 |*************************************************************************/
-//Wir brauchen ein Paar Hilfsklassen zur Kontrolle der Ozillation und ein paar
-//Funktionen um die Uebersicht zu gewaehrleisten.
+//We need some helper classes to monitor the oscillation and a few functions
+//to not get lost.
+
 // #i3317# - re-factoring of the position stack
 class SwOszControl
 {
@@ -503,11 +498,11 @@ void SwFlyAtCntFrm::MakeAll()
 
                 if ( bExtra && Lower() && !Lower()->GetValidPosFlag() )
                 {
-                    // Wenn ein mehrspaltiger Rahmen wg. Positionswechsel ungueltige
-                    // Spalten hinterlaesst, so drehen wir lieber hier eine weitere
-                    // Runde und formatieren unseren Inhalt via FormatWidthCols nochmal.
+                    // If a multi column frame leaves invalid columns because of
+                    // a position change, we loop once more and formate
+                    // our content using FormatWidthCols again.
                         _InvalidateSize();
-                    bExtra = sal_False; // Sicherhaltshalber gibt es nur eine Ehrenrunde.
+                    bExtra = sal_False; // Get sure to only make one additional loop run
                 }
             } while ( !IsValid() && !bOsz &&
                       // #i3317#
@@ -566,10 +561,9 @@ bool SwFlyAtCntFrm::IsFormatPossible() const
 |*
 |*  FindAnchor() und Hilfsfunktionen.
 |*
-|*  Beschreibung:       Sucht ausgehend von pOldAnch einen Anker fuer
-|*      Absatzgebundene Objekte.
-|*      Wird beim Draggen von Absatzgebundenen Objekten zur Ankeranzeige sowie
-|*      fuer Ankerwechsel benoetigt.
+|*  Description:        Searches an anchor for paragraph bound objects
+|*      starting from pOldAnch. This is used to show anchors as well as changing
+|*      anchors when dragging paragraph bound objects.
 |*
 |*************************************************************************/
 
@@ -593,8 +587,8 @@ const SwFrm * MA_FASTCALL lcl_CalcDownDist( SwDistance &rRet,
                                          const SwCntntFrm *pCnt )
 {
     rRet.nSub = 0;
-    //Wenn der Point direkt innerhalb des Cnt steht ist die Sache klar und
-    //der Cntnt hat automatisch eine Entfernung von 0
+    //If the point stays inside the Cnt everything is clear already; the Cntn
+    //automatically has a distance of 0.
     if ( pCnt->Frm().IsInside( rPt ) )
     {
         rRet.nMain = 0;
@@ -603,14 +597,14 @@ const SwFrm * MA_FASTCALL lcl_CalcDownDist( SwDistance &rRet,
     else
     {
         const SwLayoutFrm *pUp = pCnt->IsInTab() ? pCnt->FindTabFrm()->GetUpper() : 
pCnt->GetUpper();
-        // einspaltige Bereiche muessen zu ihrem Upper durchschalten
+        // single column sections need to interconnect to their upper
         while( pUp->IsSctFrm() )
             pUp = pUp->GetUpper();
         const bool bVert = pUp->IsVertical();
         //Badaa: 2008-04-18 * Support for Classical Mongolian Script (SCMS) joint with Jiayanmin
         const bool bVertL2R = pUp->IsVertLR();
 
-        //Dem Textflus folgen.
+        //Follow the text flow.
         // #i70582#
         // --> OD 2009-03-05 - adopted for Support for Classical Mongolian Script
         const SwTwips nTopForObjPos =
@@ -907,9 +901,9 @@ sal_uLong MA_FASTCALL lcl_FindCntDiff( const Point &rPt, const SwLayoutFrm *pLay
                           const SwCntntFrm *& rpCnt,
                           const sal_Bool bBody, const sal_Bool bFtn )
 {
-    //Sucht unterhalb von pLay den dichtesten Cnt zum Point. Der Bezugspunkt
-    //der Cntnts ist immer die linke obere Ecke.
-    //Der Cnt soll moeglichst ueber dem Point liegen.
+    //Searches the nearest Cnt to the point belows pLay. The reference point of
+    //the Cntnts is always the left upper corner.
+    //The Cnt should preferably be above the point.
 
 #if OSL_DEBUG_LEVEL > 1
     Point arPoint( rPt );
@@ -931,8 +925,8 @@ sal_uLong MA_FASTCALL lcl_FindCntDiff( const Point &rPt, const SwLayoutFrm *pLay
     {
         do
         {
-            //Jetzt die Entfernung zwischen den beiden Punkten berechnen.
-            //'Delta' X^2 + 'Delta'Y^2 = 'Entfernung'^2
+            //Calculate the distance between those two points.
+            //'delta' X^2 + 'delta' Y^2 = 'distance'^2
             sal_uInt32 dX = Max( pCnt->Frm().Left(), rPt.X() ) -
                        Min( pCnt->Frm().Left(), rPt.X() ),
                   dY = Max( pCnt->Frm().Top(), rPt.Y() ) -
@@ -943,7 +937,7 @@ sal_uLong MA_FASTCALL lcl_FindCntDiff( const Point &rPt, const SwLayoutFrm *pLay
             if ( pCnt->Frm().Top() <= rPt.Y() )
             {
                 if ( nDiff < nDistance )
-                {   //Der ist dichter dran
+                    //This one is the nearer one
                     nDistance = nNearest = nDiff;
                     rpCnt = pNearest = pCnt;
                 }
@@ -970,16 +964,14 @@ sal_uLong MA_FASTCALL lcl_FindCntDiff( const Point &rPt, const SwLayoutFrm 
*pLay
 const SwCntntFrm * MA_FASTCALL lcl_FindCnt( const Point &rPt, const SwCntntFrm *pCnt,
                                   const sal_Bool bBody, const sal_Bool bFtn )
 {
-    //Sucht ausgehen von pCnt denjenigen CntntFrm, dessen linke obere
-    //Ecke am dichtesten am Point liegt.
-    //Liefert _immer_ einen CntntFrm zurueck.
-
-    //Zunaechst wird versucht den dichtesten Cntnt innerhalt derjenigen
-    //Seite zu suchen innerhalb derer der Cntnt steht.
-    //Ausgehend von der Seite muessen die Seiten in beide
-    //Richtungen beruecksichtigt werden.
-    //Falls moeglich wird ein Cntnt geliefert, dessen Y-Position ueber der
-    //des Point sitzt.
+    //Starting from pCnt searches the CntntFrm whose left upper corner is the
+    //nearest to the point.
+    //Always returns a CntntFrm.
+
+    //First the nearest Cntnt inside the page which contains the Cntnt is
+    //searched. Starting from this page the pages in both directions need to
+    //take into account. If possible a Cntnt is returned whose Y-position is
+    //above the point.
     const SwCntntFrm  *pRet, *pNew;
     const SwLayoutFrm *pLay = pCnt->FindPageFrm();
     sal_uLong nDist;
@@ -1070,8 +1062,8 @@ void lcl_PointToPrt( Point &rPoint, const SwFrm *pFrm )
 const SwCntntFrm *FindAnchor( const SwFrm *pOldAnch, const Point &rNew,
                               const sal_Bool bBodyOnly )
 {
-    //Zu der angegebenen DokumentPosition wird der dichteste Cnt im
-    //Textfluss gesucht. AusgangsFrm ist der uebergebene Anker.
+    //Search the nearest Cnt around the given document position in the text
+    //flow. The omited anchor is the starting Frm.
     const SwCntntFrm* pCnt;
     if ( pOldAnch->IsCntntFrm() )
     {
@@ -1089,16 +1081,15 @@ const SwCntntFrm *FindAnchor( const SwFrm *pOldAnch, const Point &rNew,
         pCnt = pTmpLay->GetCntntPos( aTmp, sal_False, bBodyOnly );
     }
 
-    //Beim Suchen darauf achten, dass die Bereiche sinnvoll erhalten
-    //bleiben. D.h. in diesem Fall nicht in Header/Footer hinein und
-    //nicht aus Header/Footer hinaus.
+    //Take care to use meaningful ranges during search. This means to not enter
+    //or leave header/footer in this case.
     const sal_Bool bBody = pCnt->IsInDocBody() || bBodyOnly;
     const sal_Bool bFtn  = !bBodyOnly && pCnt->IsInFtn();
 
     Point aNew( rNew );
     if ( bBody )
     {
-        //#38848 Vom Seitenrand in den Body ziehen.
+        //#38848 drag from page border into the body.
         const SwFrm *pPage = pCnt->FindPageFrm();
         ::lcl_PointToPrt( aNew, pPage->GetUpper() );
         SwRect aTmp( aNew, Size( 0, 0 ) );
@@ -1110,9 +1101,8 @@ const SwCntntFrm *FindAnchor( const SwFrm *pOldAnch, const Point &rNew,
         return pCnt;
     else if ( pOldAnch->IsInDocBody() || pOldAnch->IsPageFrm() )
     {
-        //Vielleicht befindet sich der gewuenschte Anker ja auf derselben
-        //Seite wie der aktuelle Anker.
-        //So gibt es kein Problem mit Spalten.
+        //Maybe the selected anchor is on the same page like the current anchor.
+        //Whit this we won't run into problems with the columns.
         Point aTmp( aNew );
         const SwCntntFrm *pTmp = pCnt->FindPageFrm()->
                                         GetCntntPos( aTmp, sal_False, sal_True, sal_False );
@@ -1120,16 +1110,16 @@ const SwCntntFrm *FindAnchor( const SwFrm *pOldAnch, const Point &rNew,
             return pTmp;
     }
 
-    //Ausgehend vom Anker suche ich jetzt in beide Richtungen bis ich
-    //den jeweils dichtesten gefunden habe.
-    //Nicht die direkte Entfernung ist relevant sondern die Strecke die
-    //im Textfluss zurueckgelegt werden muss.
+    //Starting from the anchor we now search in both directions until we found
+    //the nearest one respectively.
+    //Not the direct distance is relevant but the distance which needs to be
+    //traveled through the text flow.
     const SwCntntFrm *pUpLst;
     const SwCntntFrm *pUpFrm = pCnt;
     SwDistance nUp, nUpLst;
     ::lcl_CalcDownDist( nUp, aNew, pUpFrm );
     SwDistance nDown = nUp;
-    sal_Bool bNegAllowed = sal_True;//Einmal aus dem negativen Bereich heraus lassen.
+    sal_Bool bNegAllowed = sal_True;// Make it possible to leave the negative section once.
     do
     {
         pUpLst = pUpFrm; nUpLst = nUp;
@@ -1140,8 +1130,8 @@ const SwCntntFrm *FindAnchor( const SwFrm *pOldAnch, const Point &rNew,
         if ( pUpFrm )
         {
             ::lcl_CalcDownDist( nUp, aNew, pUpFrm );
-            //Wenn die Distanz innnerhalb einer Tabelle waechst, so lohnt es
-            //sich weiter zu suchen.
+            //It makes sense to search further, if the distance grows inside
+            //a table.
             if ( pUpLst->IsInTab() && pUpFrm->IsInTab() )
             {
                 while ( pUpFrm && ((nUpLst < nUp && pUpFrm->IsInTab()) ||
@@ -1158,8 +1148,8 @@ const SwCntntFrm *FindAnchor( const SwFrm *pOldAnch, const Point &rNew,
         if ( nUp.nMain >= 0 && LONG_MAX != nUp.nMain )
         {
             bNegAllowed = sal_False;
-            if ( nUpLst.nMain < 0 ) //nicht den falschen erwischen, wenn der Wert
-                                    //gerade von negativ auf positiv gekippt ist.
+            if ( nUpLst.nMain < 0 ) //don't take the wrong one, if the value
+                                    //just changed from negative to positive.
             {   pUpLst = pUpFrm;
                 nUpLst = nUp;
             }
@@ -1183,8 +1173,8 @@ const SwCntntFrm *FindAnchor( const SwFrm *pOldAnch, const Point &rNew,
             ::lcl_CalcDownDist( nDown, aNew, pDownFrm );
             if ( nDown.nMain < 0 )
                 nDown.nMain = LONG_MAX;
-            //Wenn die Distanz innnerhalb einer Tabelle waechst, so lohnt es
-            //sich weiter zu suchen.
+            //It makes sense to search further, if the distance grows inside
+            //a table.
             if ( pDownLst->IsInTab() && pDownFrm->IsInTab() )
             {
                 while ( pDownFrm && ( ( nDown.nMain != LONG_MAX && pDownFrm->IsInTab()) || bBody 
!= pDownFrm->IsInDocBody() ) )
@@ -1203,10 +1193,9 @@ const SwCntntFrm *FindAnchor( const SwFrm *pOldAnch, const Point &rNew,
     } while ( pDownFrm && nDown <= nDownLst &&
               nDown.nMain != LONG_MAX && nDownLst.nMain != LONG_MAX );
 
-    //Wenn ich in beide Richtungen keinen gefunden habe, so suche ich mir
-    //denjenigen Cntnt dessen linke obere Ecke dem Point am naechsten liegt.
-    //Eine derartige Situation tritt z.b. auf, wenn der Point nicht im Text-
-    //fluss sondern in irgendwelchen Raendern steht.
+    //If we couldn't find one in both directions, we'll search the Cntnt whose
+    //left upper corner is the nearest to the point. Such a situation may
+    //happen, if the point doesn't lay in the text flow but in any border.
     if ( nDownLst.nMain == LONG_MAX && nUpLst.nMain == LONG_MAX )
     {
         // If an OLE objects, which is contained in a fly frame
@@ -1256,7 +1245,7 @@ void SwFlyAtCntFrm::SetAbsPos( const Point &rNew )
 
     if ( pCnt->IsInDocBody() )
     {
-        //#38848 Vom Seitenrand in den Body ziehen.
+        //#38848 drag from page border into the body.
         pTmpPage = pCnt->FindPageFrm();
         ::lcl_PointToPrt( aNew, pTmpPage->GetUpper() );
         SwRect aTmp( aNew, Size( 0, 0 ) );
@@ -1264,10 +1253,10 @@ void SwFlyAtCntFrm::SetAbsPos( const Point &rNew )
         ::lcl_PointToPrt( aNew, pTmpPage );
     }
 
-    //RelPos einstellen, nur auf Wunsch invalidieren.
-    //rNew ist eine Absolute Position. Um die RelPos korrekt einzustellen
-    //muessen wir uns die Entfernung von rNew zum Anker im Textfluss besorgen.
-//!!!!!Hier kann Optimiert werden: FindAnchor koennte die RelPos mitliefern!
+    //Setup RelPos, only invalidate if requested.
+    //rNew is an absolute position. We need to calculate the distance from rNew
+    //to the anchor inside the text flow to correctly set RelPos.
+//!!!!!We can optimize here: FindAnchor could also return RelPos!
     const SwFrm *pFrm = 0;
     SwTwips nY;
     if ( pCnt->Frm().IsInside( aNew ) )
@@ -1307,8 +1296,8 @@ void SwFlyAtCntFrm::SetAbsPos( const Point &rNew )
 
     if ( pCnt->IsFollow() )
     {
-        //Flys haengen niemals an einem Follow sondern immer am
-        //Master, den suchen wir uns jetzt.
+        //Flys are never attached to the flow but always to the master which 
+        //we're going to search now.
         const SwCntntFrm *pOriginal = pCnt;
         const SwCntntFrm *pFollow = pCnt;
         while ( pCnt->IsFollow() )
@@ -1409,7 +1398,7 @@ void SwFlyAtCntFrm::SetAbsPos( const Point &rNew )
     if( pCnt != GetAnchorFrm() || ( IsAutoPos() && pCnt->IsTxtFrm() &&
                                   
GetFmt()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::HTML_MODE)) )
     {
-        //Das Ankerattribut auf den neuen Cnt setzen.
+        //Set the anchor attribute according to the new Cnt.
         SwFmtAnchor aAnch( pFmt->GetAnchor() );
         SwPosition *pPos = (SwPosition*)aAnch.GetCntntAnchor();
         if( IsAutoPos() && pCnt->IsTxtFrm() )
-- 
1.7.9.1


From cced2e158b69500cfb02752d071e98e9e608ce95 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:37:23 +0100
Subject: [PATCH 11/22] translate german comments

---
 sw/source/core/layout/flyincnt.cxx |   26 ++++++++++++--------------
 1 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/sw/source/core/layout/flyincnt.cxx b/sw/source/core/layout/flyincnt.cxx
index bd0eb2e..8b57281 100644
--- a/sw/source/core/layout/flyincnt.cxx
+++ b/sw/source/core/layout/flyincnt.cxx
@@ -40,7 +40,7 @@
 // OD 2004-01-19 #110582#
 #include <dflyobj.hxx>
 
-//aus FlyCnt.cxx
+//from FlyCnt.cxx
 void DeepCalc( const SwFrm *pFrm );
 
 /*************************************************************************
@@ -64,7 +64,7 @@ SwFlyInCntFrm::SwFlyInCntFrm( SwFlyFrmFmt *pFmt, SwFrm* pSib, SwFrm *pAnch ) :
 
 SwFlyInCntFrm::~SwFlyInCntFrm()
 {
-    //und Tschuess.
+    //good bye
     if ( !GetFmt()->GetDoc()->IsInDtor() && GetAnchorFrm() )
     {
         SwRect aTmp( GetObjRectWithSpaces() );
@@ -154,14 +154,14 @@ void SwFlyInCntFrm::Modify( const SfxPoolItem* pOld, const SfxPoolItem *pNew )
 |*
 |*  SwFlyInCntFrm::Format()
 |*
-|*  Beschreibung:       Hier wird der Inhalt initial mit Formatiert.
+|*  Description:        Here the content gets formated initially.
 |*
 |*************************************************************************/
 void SwFlyInCntFrm::Format( const SwBorderAttrs *pAttrs )
 {
     if ( !Frm().Height() )
     {
-        Lock(); //nicht hintenherum den Anker formatieren.
+        Lock(); //don't format the anchor on the crook.
         SwCntntFrm *pCntnt = ContainsCntnt();
         while ( pCntnt )
         {   pCntnt->Calc();
@@ -175,10 +175,8 @@ void SwFlyInCntFrm::Format( const SwBorderAttrs *pAttrs )
 |*
 |*  SwFlyInCntFrm::MakeFlyPos()
 |*
-|*  Beschreibung        Im Unterschied zu anderen Frms wird hier nur die
-|*      die RelPos berechnet. Die absolute Position wird ausschliesslich
-|*      per SetAbsPos errechnet.
-|*
+|*  Description         In contrast to other Frms we only calculate the RelPos
+|*      here. The absolute position is only calculated using SetAbsPos.
 |*************************************************************************/
 // OD 2004-03-23 #i26791#
 //void SwFlyInCntFrm::MakeFlyPos()
@@ -189,8 +187,8 @@ void SwFlyInCntFrm::MakeObjPos()
         bValidPos = sal_True;
         SwFlyFrmFmt *pFmt = (SwFlyFrmFmt*)GetFmt();
         const SwFmtVertOrient &rVert = pFmt->GetVertOrient();
-        //Und ggf. noch die aktuellen Werte im Format updaten, dabei darf
-        //zu diesem Zeitpunkt natuerlich kein Modify verschickt werden.
+        //Update the current values in the format if needed, during this we of
+        //course must not send any Modify.
         const bool bVert = GetAnchorFrm()->IsVertical();
         const bool bRev = GetAnchorFrm()->IsReverse();
         SwTwips nOld = rVert.GetPos();
@@ -248,7 +246,7 @@ void SwFlyInCntFrm::RegistFlys()
 {
     // vgl. SwRowFrm::RegistFlys()
     SwPageFrm *pPage = FindPageFrm();
-    OSL_ENSURE( pPage, "Flys ohne Seite anmelden?" );
+    OSL_ENSURE( pPage, "Register Flys without pages?" );
     ::RegistFlys( pPage, this );
 }
 
@@ -268,9 +266,9 @@ void SwFlyInCntFrm::MakeAll()
     if ( !GetAnchorFrm() || IsLocked() || IsColLocked() || !FindPageFrm() )
         return;
 
-    Lock(); //Der Vorhang faellt
+    Lock(); // The curtain falls
 
-        //uebernimmt im DTor die Benachrichtigung
+        //does the notification in the DTor
     const SwFlyNotify aNotify( this );
     SwBorderAttrAccess aAccess( SwFrm::GetCache(), this );
     const SwBorderAttrs &rAttrs = *aAccess.Get();
@@ -280,7 +278,7 @@ void SwFlyInCntFrm::MakeAll()
 
     while ( !bValidPos || !bValidSize || !bValidPrtArea )
     {
-        //Nur einstellen wenn das Flag gesetzt ist!!
+        //Only stop, if the flag is set!!
         if ( !bValidSize )
         {
             bValidPrtArea = sal_False;
-- 
1.7.9.1


From ab353aa5ce1d072c99f687ab52eeef04e467d536 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:37:28 +0100
Subject: [PATCH 12/22] translate german comments

---
 sw/source/core/layout/laycache.cxx |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/sw/source/core/layout/laycache.cxx b/sw/source/core/layout/laycache.cxx
index b04de85a..0e5b102 100644
--- a/sw/source/core/layout/laycache.cxx
+++ b/sw/source/core/layout/laycache.cxx
@@ -658,18 +658,18 @@ sal_Bool SwLayHelper::CheckInsertPage()
                          bNextPageOdd, bInsertEmpty, sal_False, rpPage->GetNext() );
         if ( bEnd )
         {
-            OSL_ENSURE( rpPage->GetNext(), "Keine neue Seite?" );
+            OSL_ENSURE( rpPage->GetNext(), "No new page?" );
             do
             {   rpPage = (SwPageFrm*)rpPage->GetNext();
             } while ( rpPage->GetNext() );
         }
         else
         {
-            OSL_ENSURE( rpPage->GetNext(), "Keine neue Seite?" );
+            OSL_ENSURE( rpPage->GetNext(), "No new page?" );
             rpPage = (SwPageFrm*)rpPage->GetNext();
             if ( rpPage->IsEmptyPage() )
             {
-                OSL_ENSURE( rpPage->GetNext(), "Keine neue Seite?" );
+                OSL_ENSURE( rpPage->GetNext(), "No new page?" );
                 rpPage = (SwPageFrm*)rpPage->GetNext();
             }
         }
@@ -952,8 +952,8 @@ sal_Bool SwLayHelper::CheckInsert( sal_uLong nNodeIndex )
 
                 if ( rpActualSection )
                 {
-                    //Hatte der SectionFrm ueberhaupt Inhalt? Wenn
-                    //nicht kann er gleich umgehaengt werden.
+                    //Did the SectionFrm even have a content? If not, we can
+                    //directly put it somewhere else
                     SwSectionFrm *pSct;
                     bool bInit = false;
                     if ( !rpActualSection->GetSectionFrm()->ContainsCntnt())
@@ -973,7 +973,7 @@ sal_Bool SwLayHelper::CheckInsert( sal_uLong nNodeIndex )
                     if( bInit )
                         pSct->Init();
                     pSct->Frm().Pos() = rpLay->Frm().Pos();
-                    pSct->Frm().Pos().Y() += 1; //wg. Benachrichtigungen.
+                    pSct->Frm().Pos().Y() += 1; //because of the notifications
 
                     rpLay = pSct;
                     if ( rpLay->Lower() && rpLay->Lower()->IsLayoutFrm() )
-- 
1.7.9.1


From 0f429b26095858ca660334dca86c6ea7e4d37694 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:37:38 +0100
Subject: [PATCH 13/22] translate german comments

---
 sw/source/core/layout/pagedesc.cxx |   29 ++++++++++++++---------------
 1 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/sw/source/core/layout/pagedesc.cxx b/sw/source/core/layout/pagedesc.cxx
index 56dec5b..38ece9d 100644
--- a/sw/source/core/layout/pagedesc.cxx
+++ b/sw/source/core/layout/pagedesc.cxx
@@ -47,7 +47,7 @@
 #include <node.hxx>
 #include <swtable.hxx>
 #include <frmtool.hxx>
-#include <doc.hxx>          // fuer GetAttrPool
+#include <doc.hxx>          // for GetAttrPool
 #include <poolfmt.hxx>
 #include <switerator.hxx>
 
@@ -117,8 +117,8 @@ SwPageDesc::~SwPageDesc()
 |*
 |*  SwPageDesc::Mirror()
 |*
-|*  Beschreibung        Gespiegelt werden nur die Raender.
-|*      Attribute wie Umrandung und dergleichen werden 1:1 kopiert.
+|*  Description         Only the margin is mirrored.
+|*      Attributes like borders and so on are copied 1:1.
 |*
 |*************************************************************************/
 
@@ -126,8 +126,7 @@ SwPageDesc::~SwPageDesc()
 
 void SwPageDesc::Mirror()
 {
-    //Das Spiegeln findet nur beim RandAttribut statt, alle anderen Werte
-    //werden schlicht uebertragen.
+    //Only the margins are mirrored, all other values are just copied.
     SvxLRSpaceItem aLR( RES_LR_SPACE );
     const SvxLRSpaceItem &rLR = aMaster.GetLRSpace();
     aLR.SetLeft(  rLR.GetRight() );
@@ -160,12 +159,12 @@ void SwPageDesc::ResetAllAttr( sal_Bool bLeft )
 |*
 |*                SwPageDesc::GetInfo()
 |*
-|*    Beschreibung      erfragt Informationen
+|*    Description       retrieves information
 |*
 *************************************************************************/
 
 
-    // erfrage vom Modify Informationen
+    // gets information from Modify
 sal_Bool SwPageDesc::GetInfo( SfxPoolItem & rInfo ) const
 {
     if( !aMaster.GetInfo( rInfo ) )
@@ -177,7 +176,7 @@ sal_Bool SwPageDesc::GetInfo( SfxPoolItem & rInfo ) const
 |*
 |*                SwPageDesc::SetRegisterFmtColl()
 |*
-|*    Beschreibung      setzt die Vorlage fuer die Registerhaltigkeit
+|*    Description       sets the template for the grid alignment
 |*
 *************************************************************************/
 
@@ -199,7 +198,7 @@ void SwPageDesc::SetRegisterFmtColl( const SwTxtFmtColl* pFmt )
 |*
 |*                SwPageDesc::GetRegisterFmtColl()
 |*
-|*    Beschreibung      holt die Vorlage fuer die Registerhaltigkeit
+|*    Description       retrieves the template for the grid alignment
 |*
 *************************************************************************/
 
@@ -214,7 +213,7 @@ const SwTxtFmtColl* SwPageDesc::GetRegisterFmtColl() const
 |*
 |*                SwPageDesc::RegisterChange()
 |*
-|*    Beschreibung      benachrichtigt alle betroffenen PageFrames
+|*    Description       notifies all affected page frames
 |*
 *************************************************************************/
 
@@ -259,8 +258,8 @@ void SwPageDesc::RegisterChange()
 |*
 |*                SwPageDesc::Modify()
 |*
-|*    Beschreibung      reagiert insbesondere auf Aenderungen
-|*                      der Vorlage fuer die Registerhaltigkeit
+|*    Description       acts particularly if the template of the grid alignment
+|*                      changes
 |*
 *************************************************************************/
 
@@ -311,7 +310,7 @@ const SwPageDesc* SwPageDesc::GetPageDescOfNode(const SwNode& rNd)
 const SwFrmFmt* SwPageDesc::GetPageFmtOfNode( const SwNode& rNd,
                                               sal_Bool bCheckForThisPgDc ) const
 {
-    // welches PageDescFormat ist fuer diesen Node gueltig?
+    // which PageDescFormat is valid for this node?
     const SwFrmFmt* pRet;
     const SwFrm* pChkFrm = lcl_GetFrmOfNode( rNd );
 
@@ -321,7 +320,7 @@ const SwFrmFmt* SwPageDesc::GetPageFmtOfNode( const SwNode& rNd,
                                 ((SwPageFrm*)pChkFrm)->GetPageDesc();
         pRet = &pPd->GetMaster();
         OSL_ENSURE( ((SwPageFrm*)pChkFrm)->GetPageDesc() == pPd, "Wrong node for detection of page 
format!" );
-        // an welchem Format haengt diese Seite?
+        // this page is assigned to which format?
         if( !pChkFrm->KnowsFormat(*pRet) )
         {
             pRet = &pPd->GetLeft();
@@ -343,7 +342,7 @@ sal_Bool SwPageDesc::IsFollowNextPageOfNode( const SwNode& rNd ) const
             pChkFrm->IsPageFrm() &&
             ( !pChkFrm->GetNext() || GetFollow() ==
                         ((SwPageFrm*)pChkFrm->GetNext())->GetPageDesc() ))
-            // die Seite gefunden, auf die der Follow verweist
+            // the page on which the follow points was found
             bRet = sal_True;
     }
     return bRet;
-- 
1.7.9.1


From 1f1dbcf804f1e68f06321ca790b6fb0c10ca80de Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:37:43 +0100
Subject: [PATCH 14/22] translate german comments

---
 sw/source/core/layout/paintfrm.cxx |  314 +++++++++++++++++------------------
 1 files changed, 153 insertions(+), 161 deletions(-)

diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index 8aee0ec..31f3ae8 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -134,19 +134,19 @@ using namespace ::com::sun::star;
 
 #define GETOBJSHELL()       ((SfxObjectShell*)rSh.GetDoc()->GetDocShell())
 
-//Tabellenhilfslinien an?
+//subsidiary lines enabled?
 #define IS_SUBS_TABLE \
     (pGlobalShell->GetViewOptions()->IsTable() && \
     !pGlobalShell->GetViewOptions()->IsPagePreview()&&\
     !pGlobalShell->GetViewOptions()->IsReadonly()&&\
     !pGlobalShell->GetViewOptions()->IsFormView() &&\
      SwViewOption::IsTableBoundaries())
-//sonstige Hilfslinien an?
+//other subsidiary lines enabled?
 #define IS_SUBS (!pGlobalShell->GetViewOptions()->IsPagePreview() && \
         !pGlobalShell->GetViewOptions()->IsReadonly() && \
         !pGlobalShell->GetViewOptions()->IsFormView() &&\
          SwViewOption::IsDocBoundaries())
-//Hilfslinien fuer Bereiche
+//subsidiary lines for sections
 #define IS_SUBS_SECTION (!pGlobalShell->GetViewOptions()->IsPagePreview() && \
                          !pGlobalShell->GetViewOptions()->IsReadonly()&&\
                          !pGlobalShell->GetViewOptions()->IsFormView() &&\
@@ -158,8 +158,7 @@ using namespace ::com::sun::star;
 
 #define SW_MAXBORDERCACHE 20
 
-//Klassendeklarationen. Hier weil sie eben nur in diesem File benoetigt
-//werden.
+//Class declaration; here because they are only used in this file
 
 #define SUBCOL_PAGE     0x01    //Helplines of the page
 #define SUBCOL_TAB      0x08    //Helplines inside tables
@@ -172,9 +171,9 @@ class SwLineRect : public SwRect
     Color aColor;
     SvxBorderStyle  nStyle;
     const SwTabFrm *pTab;
-          sal_uInt8     nSubColor;  //Hilfslinien einfaerben
-          sal_Bool      bPainted;   //schon gepaintet?
-          sal_uInt8     nLock;      //Um die Linien zum Hell-Layer abzugrenzen.
+          sal_uInt8     nSubColor;  //colorize subsidiary lines
+          sal_Bool      bPainted;   //already painted?
+          sal_uInt8     nLock;      //To distinguish the line and the hell layer.
 public:
     SwLineRect( const SwRect &rRect, const Color *pCol, const SvxBorderStyle nStyle,
                 const SwTabFrm *pT , const sal_uInt8 nSCol );
@@ -199,7 +198,7 @@ SV_DECL_VARARR( SwLRects, SwLineRect, 100 )
 
 class SwLineRects : public SwLRects
 {
-    sal_uInt16 nLastCount;  //unuetze Durchlaeufe im PaintLines verhindern.
+    sal_uInt16 nLastCount;  //avoid unnecessary cycles in PainLines
 public:
     SwLineRects() : nLastCount( 0 ) {}
     void AddLineRect( const SwRect& rRect,  const Color *pColor, const SvxBorderStyle nStyle,
@@ -224,14 +223,14 @@ public:
 
 static ViewShell *pGlobalShell = 0;
 
-//Wenn vom Fly ein Metafile abgezogen wird, so soll nur der FlyInhalt und vor
-//nur hintergrund vom FlyInhalt gepaintet werden.
+//Only repaint the Fly content as well as the background of the Fly content if
+//a metafile is subtracted from the Fly.
 static sal_Bool bFlyMetafile = sal_False;
 static OutputDevice *pFlyMetafileOut = 0;
 
-//Die Retouche fuer Durchsichtige Flys wird vom Hintergrund der Flys
-//erledigt. Dabei darf der Fly selbst natuerlich nicht ausgespart werden.
-//siehe PaintBackground und lcl_SubtractFlys()
+//Retouch for transparent Flys is done by the background of the Flys.
+//The Fly itself should certainly not be spared out. See PaintBackground and
+//lcl_SubtractFlys()
 static SwFlyFrm *pRetoucheFly  = 0;
 static SwFlyFrm *pRetoucheFly2 = 0;
 
@@ -262,10 +261,10 @@ static SfxProgress *pProgress = 0;
 
 static SwFlyFrm *pFlyOnlyDraw = 0;
 
-//Damit die Flys auch fuer den Hack richtig gepaintet werden koennen.
+//So the flys can also be painted right for the hack.
 static sal_Bool bTableHack = sal_False;
 
-//Um das teure Ermitteln der RetoucheColor zu optimieren
+//To optimize the expensive RetouchColor determination
 Color aGlobalRetoucheColor;
 
 // Set borders alignment statics.
@@ -325,7 +324,7 @@ void SwCalcPixStatics( OutputDevice *pOut )
     aScaleY = rMap.GetScaleY();
 }
 
-//Zum Sichern der statics, damit das Paint (quasi) reentrant wird.
+//To be able to save the statics so the paint is more or lees reentrant.
 class SwSavePaintStatics
 {
     sal_Bool            bSFlyMetafile,
@@ -472,6 +471,9 @@ void SwLineRects::AddLineRect( const SwRect &rRect, const Color *pCol, const Svx
 {
     //Rueckwaerts durch, weil Linien die zusammengefasst werden koennen i.d.R.
     //im gleichen Kontext gepaintet werden.
+
+    //Loop backwards because lines which can be combined, can usually be painted
+    //in the same context.
     for ( sal_uInt16 i = Count(); i ; )
     {
         SwLineRect &rLRect = operator[](--i);
@@ -733,7 +735,7 @@ void SwSubsRects::RemoveSuperfluousSubsidiaryLines( const SwLineRects &rRects )
                         break;
                     }
                 }
-                else                                    //Horizontal
+                else                                    //horizontal
                 {
                     if ( aSubsRect.Top() <= rLine.Bottom() &&
                          aSubsRect.Bottom() >= rLine.Top() )
@@ -1221,7 +1223,7 @@ long MA_FASTCALL lcl_MinWidthDist( const long nDist )
     return ::lcl_AlignWidth( Max( nDist, nMinDistPixelW ));
 }
 
-//Ermittelt PrtArea plus Umrandung plus Schatten.
+//Calculate PrtArea plus surrounding plus shadow.
 void MA_FASTCALL lcl_CalcBorderRect( SwRect &rRect, const SwFrm *pFrm,
                                         const SwBorderAttrs &rAttrs,
                                         const sal_Bool bShadow )
@@ -1369,20 +1371,20 @@ void MA_FASTCALL lcl_SubtractFlys( const SwFrm *pFrm, const SwPageFrm 
*pPage,
         const sal_Bool bLowerOfSelf = pSelfFly && pFly->IsLowerOf( pSelfFly ) ?
                                             sal_True : sal_False;
 
-        //Bei zeichengebundenem Fly nur diejenigen betrachten, in denen er
-        //nicht selbst verankert ist.
-        //Warum nur bei zeichengebundenen? Es macht doch nie Sinn
-        //Rahmen abzuziehen in denen er selbst verankert ist oder?
+        //For character bound Flys only examine those Flys in which it is not
+        //anchored itself.
+        //Why only for character bound ones you may ask? It never makes sense to
+        //subtract borders in which it is anchored itself right?
         if ( pSelfFly && pSelfFly->IsLowerOf( pFly ) )
             continue;
 
-        //Und warum gilt das nicht analog fuer den RetoucheFly?
+        //Any why does it not apply for the RetoucheFly too?
         if ( pRetoucheFly && pRetoucheFly->IsLowerOf( pFly ) )
             continue;
 
 #if OSL_DEBUG_LEVEL > 0
-        //Flys, die innerhalb des eigenen verankert sind, muessen eine
-        //groessere OrdNum haben oder Zeichengebunden sein.
+        //Flys who are anchored inside their own one, must have a bigger OrdNum
+        //or be character bound.
         if ( pSelfFly && bLowerOfSelf )
         {
             OSL_ENSURE( pFly->IsFlyInCntFrm() ||
@@ -1398,14 +1400,14 @@ void MA_FASTCALL lcl_SubtractFlys( const SwFrm *pFrm, const SwPageFrm 
*pPage,
             if ( pSdrObj->GetLayer() == pTmp->GetLayer() )
             {
                 if ( pSdrObj->GetOrdNumDirect() < pTmp->GetOrdNumDirect() )
-                    //Im gleichen Layer werden nur obenliegende beachtet.
+                    //In the same layer we only observe those how are overhead.
                     continue;
             }
             else
             {
                 if ( !bLowerOfSelf && !pFly->GetFmt()->GetOpaque().GetValue() )
-                    //Aus anderem Layer interessieren uns nur nicht transparente
-                    //oder innenliegende
+                    //From other layers we are only interested in non
+                    //transparent ones or those how are internal
                     continue;
                 bStopOnHell = sal_False;
             }
@@ -1416,21 +1418,21 @@ void MA_FASTCALL lcl_SubtractFlys( const SwFrm *pFrm, const SwPageFrm 
*pPage,
             if ( pSdrObj->GetLayer() == pTmp->GetLayer() )
             {
                 if ( pSdrObj->GetOrdNumDirect() < pTmp->GetOrdNumDirect() )
-                    //Im gleichen Layer werden nur obenliegende beachtet.
+                    //In the same layer we only observe those how are overhead.
                     continue;
             }
             else
             {
                 if ( !pFly->IsLowerOf( pRetoucheFly ) && !pFly->GetFmt()->GetOpaque().GetValue() )
-                    //Aus anderem Layer interessieren uns nur nicht transparente
-                    //oder innenliegende
+                    //From other layers we are only interested in non
+                    //transparent ones or those how are internal
                     continue;
                 bStopOnHell = sal_False;
             }
         }
 
-        //Wenn der Inhalt des Fly Transparent ist, wird er nicht abgezogen, es sei denn
-        //er steht im Hell-Layer
+        //If the content of the Fly is transparent, we subtract it only if it's
+        //contained in the hell layer.
         const IDocumentDrawModelAccess* pIDDMA = pFly->GetFmt()->getIDocumentDrawModelAccess();
         sal_Bool bHell = pSdrObj->GetLayer() == pIDDMA->GetHellId();
         if ( (bStopOnHell && bHell) ||
@@ -1485,8 +1487,8 @@ void MA_FASTCALL lcl_SubtractFlys( const SwFrm *pFrm, const SwPageFrm *pPage,
 
         if ( bHell && pFly->GetAnchorFrm()->IsInFly() )
         {
-            //Damit die Umrandung nicht vom Hintergrund des anderen Flys
-            //zerlegt wird.
+            //So the border won't get dismantled by the background of the other
+            //Fly.
             SwRect aRect;
             SwBorderAttrAccess aAccess( SwFrm::GetCache(), (SwFrm*)pFly );
             const SwBorderAttrs &rAttrs = *aAccess.Get();
@@ -1504,7 +1506,7 @@ void MA_FASTCALL lcl_SubtractFlys( const SwFrm *pFrm, const SwPageFrm *pPage,
         pRetoucheFly = 0;
 }
 
-//---------------- Ausgabe fuer das BrushItem ----------------
+//---------------- Output for BrushItem ----------------
 
 /** lcl_DrawGraphicBackgrd - local help method to draw a background for a graphic
 
@@ -2747,20 +2749,19 @@ namespace
 |*
 |*  SwRootFrm::Paint()
 |*
-|*  Beschreibung
-|*      Fuer jede sichtbare Seite, die von Rect ber?hrt wird einmal Painten.
-|*      1. Umrandungen und Hintergruende Painten.
-|*      2. Den Draw Layer (Ramen und Zeichenobjekte) der unter dem Dokument
-|*         liegt painten (Hoelle).
-|*      3. Den Dokumentinhalt (Text) Painten.
-|*      4. Den Drawlayer der ueber dem Dokuemnt liegt painten.
-|*
+|*  Description
+|*      Paint once for every visible page which is touched by Rect.
+|*      1. Paint frames and backgrounds.
+|*      2. Paint the draw layer (frames and drawing objects) which are located
+|*         under the document (hell).
+|*      3. Paint the document content (text)
+|*      4. Paint the draw layer which are located above the document.
 |*************************************************************************/
 
 void
 SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) const
 {
-    OSL_ENSURE( Lower() && Lower()->IsPageFrm(), "Lower der Root keine Seite." );
+    OSL_ENSURE( Lower() && Lower()->IsPageFrm(), "Lower of root is no page." );
 
     PROTOCOL( this, PROT_FILE_INIT, 0, 0)
 
@@ -2793,9 +2794,9 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) 
const
     ::SwCalcPixStatics( pSh->GetOut() );
     aGlobalRetoucheColor = pSh->Imp()->GetRetoucheColor();
 
-    //Ggf. eine Action ausloesen um klare Verhaeltnisse zu schaffen.
-    //Durch diesen Kunstgriff kann in allen Paints davon ausgegangen werden,
-    //das alle Werte gueltigt sind - keine Probleme, keine Sonderbehandlung(en).
+    //Trigger an action to clear things up if needed.
+    //Using this trick we can ensure that all values are valid in all paints -
+    //no problems, no special case(s).
     // #i92745#
     // Extend check on certain states of the 'current' <ViewShell> instance to
     // all existing <ViewShell> instances.
@@ -2832,7 +2833,7 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) 
const
 
     const sal_Bool bExtraData = ::IsExtraData( GetFmt()->GetDoc() );
 
-    pLines = new SwLineRects;   //Sammler fuer Umrandungen.
+    pLines = new SwLineRects;   //Container for borders.
 
     // #104289#. During painting, something (OLE) can
     // load the linguistic, which in turn can cause a reformat
@@ -3083,7 +3084,7 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) 
const
         }
 
         OSL_ENSURE( !pPage->GetNext() || pPage->GetNext()->IsPageFrm(),
-                "Nachbar von Seite keine Seite." );
+                "Neighbour of page is not a page." );
         pPage = (SwPageFrm*)pPage->GetNext();
     }
 
@@ -3110,7 +3111,7 @@ SwRootFrm::Paint(SwRect const& rRect, SwPrintData const*const pPrintData) 
const
 
 void MA_FASTCALL lcl_EmergencyFormatFtnCont( SwFtnContFrm *pCont )
 {
-    //Es kann sein, dass der Cont vernichtet wird.
+    //It's possible that the Cont will get destroyed.
     SwCntntFrm *pCnt = pCont->ContainsCntnt();
     while ( pCnt && pCnt->IsInFtn() )
     {
@@ -3201,9 +3202,8 @@ void SwLayoutFrm::Paint(SwRect const& rRect, SwPrintData const*const) const
         if ( bCnt && pProgress )
             pProgress->Reschedule();
 
-        //Wenn ein Frm es explizit will muss retouchiert werden.
-        //Erst die Retouche, denn selbige koennte die aligned'en Raender
-        //plaetten.
+        //We need to retouch if a frame explicitly requests it.
+        //First do the retouch, because this could flatten the borders.
         if ( pFrm->IsRetouche() )
         {
             if ( pFrm->IsRetoucheFrm() && bWin && !pFrm->GetNext() )
@@ -3219,14 +3219,14 @@ void SwLayoutFrm::Paint(SwRect const& rRect, SwPrintData const*const) const
             if ( bCnt && pFrm->IsCompletePaint() &&
                  !rRect.IsInside( aPaintRect ) && GetpApp()->AnyInput( VCL_INPUT_KEYBOARD ) )
             {
-                //fix(8104): Es kann vorkommen, dass die Verarbeitung nicht
-                //vollstaendig war, aber trotzdem Teile des Absatzes gepaintet
-                //werden. In der Folge werden dann evtl. wiederum andere Teile
-                //des Absatzes garnicht mehr gepaintet. Einziger Ausweg scheint
-                //hier ein Invalidieren der Windows zu sein.
-                //Um es nicht alzu Heftig werden zu lassen versuche ich hier
-                //das Rechteck zu begrenzen indem der gewuenschte Teil gepaintet
-                //und nur die uebrigen Absatzanteile invalidiert werden.
+                //fix(8104): It may happen, that the processing wasn't complete
+                //but some parts of the paragraph were still repainted.
+                //This could lead to the situation, that other parts of the
+                //paragraph won't be repainted at all. The only solution seems
+                //to be an invalidation of the window.
+                //To not make it to severe the rectangle is limited by
+                //repainting the desired part and only invalidating the
+                //remaining paragraph parts.
                 if ( aPaintRect.Left()  == rRect.Left() &&
                      aPaintRect.Right() == rRect.Right() )
                 {
@@ -3256,8 +3256,8 @@ void SwLayoutFrm::Paint(SwRect const& rRect, SwPrintData const*const) const
 
             if ( Lower() && Lower()->IsColumnFrm() )
             {
-                //Ggf. die Spaltentrennlinien malen. Fuer den Seitenbody ist
-                //nicht der Upper sondern die Seite Zustaendig.
+                //Paint the column separator line if needed. The page is
+                //responsible for the page frame - not the upper.
                 const SwFrmFmt *pFmt = GetUpper() && GetUpper()->IsPageFrm()
                                             ? GetUpper()->GetFmt()
                                             : GetFmt();
@@ -3610,7 +3610,7 @@ sal_Bool SwFlyFrm::IsPaint( SdrObject *pObj, const ViewShell *pSh )
     if ( 0 == ( pUserCall = GetUserCall(pObj) ) )
         return sal_True;
 
-    //Attributabhaengig nicht fuer Drucker oder PreView painten
+    //Attribute dependant, don't paint for printer or PreView
     sal_Bool bPaint =  pFlyOnlyDraw ||
                        ((SwContact*)pUserCall)->GetFmt()->GetPrint().GetValue();
     if ( !bPaint )
@@ -3618,7 +3618,7 @@ sal_Bool SwFlyFrm::IsPaint( SdrObject *pObj, const ViewShell *pSh )
 
     if ( bPaint )
     {
-        //Das Paint kann evtl. von von uebergeordneten Flys verhindert werden.
+        //The paint may be prevented by the superior Flys.
         SwFrm *pAnch = 0;
         if ( pObj->ISA(SwVirtFlyDrawObj) )
         {
@@ -3626,12 +3626,11 @@ sal_Bool SwFlyFrm::IsPaint( SdrObject *pObj, const ViewShell *pSh )
             if ( pFlyOnlyDraw && pFlyOnlyDraw == pFly )
                 return sal_True;
 
-            //Die Anzeige eines Zwischenstadiums vermeiden, Flys die nicht mit
-            //der Seite auf der sie verankert sind ueberlappen werden auch
-            //nicht gepaintet.
-            //HACK: Ausnahme: Drucken von Rahmen in Tabellen, diese koennen
-            //bei uebergrossen Tabellen (HTML) schon mal auserhalb der Seite
-            //stehen.
+            //Try to avoid displaying the intermediate stage, Flys which don't
+            //overlap with the page on which they are anchored won't be
+            //repainted.
+            //HACK: exception: printing of frames in tables, those can overlap
+            //a page once in a while when dealing with oversized tables (HTML).
             SwPageFrm *pPage = pFly->FindPageFrm();
             if ( pPage )
             {
@@ -3660,12 +3659,11 @@ sal_Bool SwFlyFrm::IsPaint( SdrObject *pObj, const ViewShell *pSh )
                     pAnch = 0;
                 else if ( long(pSh->GetOut()) == long(pSh->getIDocumentDeviceAccess()->getPrinter( 
false )))
                 {
-                    //HACK: fuer das Drucken muessen wir ein paar Objekte
-                    //weglassen, da diese sonst doppelt gedruckt werden.
-                    //Die Objekte sollen gedruckt werden, wenn der TableHack
-                    //gerade greift. In der Folge duerfen sie nicht gedruckt werden
-                    //wenn sie mit der Seite dran sind, ueber der sie von der
-                    //Position her gerade schweben.
+                    //HACK: we have to omit some of the objects for printing,
+                    //otherwise they would be printed twice.
+                    //The objects should get printed if the TableHack is active
+                    //right now. Afterwards they must not be printed if the
+                    //page over which they float position wise gets printed.
                     const SwPageFrm *pPage = pAnch->FindPageFrm();
                     if ( !bTableHack &&
                          !pPage->Frm().IsOver( pObj->GetCurrentBoundRect() ) )
@@ -3716,9 +3714,9 @@ void MA_FASTCALL lcl_PaintLowerBorders( const SwLayoutFrm *pLay,
 
 void SwFlyFrm::Paint(SwRect const& rRect, SwPrintData const*const) const
 {
-    //wegen der Ueberlappung von Rahmen und Zeichenobjekten muessen die
-    //Flys ihre Umrandung (und die der Innenliegenden) direkt ausgeben.
-    //z.B. #33066#
+    //because of the overlapping of frames and drawing objects the flys have to
+    //paint their frames (and those of the internal ones) directly.
+    //i.e. #33066#
     pLines->LockLines(sal_True);
 
     SwRect aRect( rRect );
@@ -3807,8 +3805,9 @@ void SwFlyFrm::Paint(SwRect const& rRect, SwPrintData const*const) const
 
         if ( bPaintCompleteBack || bPaintMarginOnly )
         {
-            //#24926# JP 01.02.96, PaintBaBo in teilen hier, damit PaintBorder
-            //das orig. Rect bekommt, aber PaintBackground das begrenzte.
+            //#24926# JP 01.02.96, PaintBaBo is here partially so PaintBorder
+            //receives the original Rect but PaintBackground only the limited
+            //one.
 
             // OD 2004-04-23 #116347#
             pOut->Push( PUSH_FILLCOLOR|PUSH_LINECOLOR );
@@ -3828,8 +3827,8 @@ void SwFlyFrm::Paint(SwRect const& rRect, SwPrintData const*const) const
                 if ( bPaintMarginOnly ||
                      ( pNoTxt && !bIsGraphicTransparent ) )
                 {
-                    //Was wir eigentlich Painten wollen ist der schmale Streifen
-                    //zwischen PrtArea und aeusserer Umrandung.
+                    //What we actually want to paint is the small stripe between
+                    //PrtArea and outer frame.
                     SwRect aTmp( Prt() ); aTmp += Frm().Pos();
                     aRegion -= aTmp;
                 }
@@ -3985,10 +3984,10 @@ void SwTabFrm::Paint(SwRect const& rRect, SwPrintData const*const) const
 |*
 |*  SwFrm::PaintShadow()
 |*
-|*  Beschreibung        Malt einen Schatten wenns das FrmFormat fordert.
-|*      Der Schatten wird immer an den auesseren Rand des OutRect gemalt.
-|*      Das OutRect wird ggf. so verkleinert, dass auf diesem das
-|*      malen der Umrandung stattfinden kann.
+|*  Description         Paints a shadow if the format requests so.
+|*      The shadow is always painted on the outer edge of the OutRect.
+|*      If needed, the OutRect is shrunk so the painting of the border can be
+|*      done on it.
 |*
 |*************************************************************************/
 /// OD 23.08.2002 #99657#
@@ -4235,7 +4234,7 @@ void SwFrm::PaintBorderLine( const SwRect& rRect,
 |*
 |*  SwFrm::PaintBorderLines()
 |*
-|*  Beschreibung        Nur alle Linien einfach oder alle Linien doppelt!!!!
+|*  Descrtiption        Only all lines once or all lines twice!
 |*
 |*************************************************************************/
 
@@ -4649,7 +4648,7 @@ const SwFrm* lcl_HasNextCell( const SwFrm& rFrm )
 |*
 |*  SwFrm::PaintBorder()
 |*
-|*  Beschreibung        Malt Schatten und Umrandung
+|*  Description         Paints shadows and borders
 |*
 |*************************************************************************/
 
@@ -4890,10 +4889,10 @@ void SwFrm::PaintBorder( const SwRect& rRect, const SwPageFrm *pPage,
     //-hack
     if ( bLine || bShadow || bFoundCellForTopOrBorderAttrs )
     {
-        //Wenn das Rechteck vollstandig innerhalb der PrtArea liegt,
-        //so braucht kein Rand gepainted werden.
-        //Fuer die PrtArea muss der Aligned'e Wert zugrunde gelegt werden,
-        //anderfalls wuerden u.U. Teile nicht verarbeitet.
+        //If the rectangle is completely inside the PrtArea, no border needs to
+        //be painted.
+        //For the PrtArea the aligned value needs to be used, otherwise it could
+        //happen, that some parts won't be processed.
         SwRect aRect( Prt() );
         aRect += Frm().Pos();
         ::SwAlignRect( aRect, pGlobalShell );
@@ -4983,17 +4982,16 @@ void SwFrm::PaintBorder( const SwRect& rRect, const SwPageFrm *pPage,
 |*
 |*  SwFtnContFrm::PaintBorder()
 |*
-|*  Beschreibung        Spezialimplementierung wg. der Fussnotenlinie.
-|*      Derzeit braucht nur der obere Rand beruecksichtigt werden.
-|*      Auf andere Linien und Schatten wird verzichtet.
-|*
+|*  Description         Special implementation because of the footnote line.
+|*      Currently only the top frame needs to be taken into account.
+|*      Other lines and shadows are set aside.
 |*************************************************************************/
 
 void SwFtnContFrm::PaintBorder( const SwRect& rRect, const SwPageFrm *pPage,
                                 const SwBorderAttrs & ) const
 {
-    //Wenn das Rechteck vollstandig innerhalb der PrtArea liegt, so gibt es
-    //keinen Rand zu painten.
+    //If the rectangle is completely inside the PrtArea, no border needs to
+    //be painted.
     SwRect aRect( Prt() );
     aRect.Pos() += Frm().Pos();
     if ( !aRect.IsInside( rRect ) )
@@ -5003,16 +5001,16 @@ void SwFtnContFrm::PaintBorder( const SwRect& rRect, const SwPageFrm *pPage,
 |*
 |*  SwFtnContFrm::PaintLine()
 |*
-|*  Beschreibung        Fussnotenline malen.
+|*  Description         Paint footnote lines.
 |*
 |*************************************************************************/
 
 void SwFtnContFrm::PaintLine( const SwRect& rRect,
                               const SwPageFrm *pPage ) const
 {
-    //Laenge der Linie ergibt sich aus der prozentualen Angabe am PageDesc.
-    //Die Position ist ebenfalls am PageDesc angegeben.
-    //Der Pen steht direkt im PageDesc.
+    //The length of the line is derived from the percentual indication on the
+    //PageDesc. The position is also stated on the PageDesc.
+    //The pen can directly be taken from the PageDesc.
 
     if ( !pPage )
         pPage = FindPageFrm();
@@ -5033,7 +5031,7 @@ void SwFtnContFrm::PaintLine( const SwRect& rRect,
         case FTNADJ_LEFT:
             /* do nothing */; break;
         default:
-            OSL_ENSURE( !this, "Neues Adjustment fuer Fussnotenlinie?" );
+            OSL_ENSURE( !this, "New adjustment for footnote lines?" );
     }
     SwTwips nLineWidth = rInf.GetLineWidth();
     const SwRect aLineRect = bVert ?
@@ -5050,8 +5048,7 @@ void SwFtnContFrm::PaintLine( const SwRect& rRect,
 |*
 |*  SwLayoutFrm::PaintColLines()
 |*
-|*  Beschreibung        Painted die Trennlinien fuer die innenliegenden
-|*                      Spalten.
+|*  Description         Paints the separator line for inside columns
 |*
 |*************************************************************************/
 
@@ -5080,7 +5077,7 @@ void SwLayoutFrm::PaintColLines( const SwRect &rRect, const SwFmtCol &rFmtCol,
         case COLADJ_BOTTOM:
             break;
         default:
-            OSL_ENSURE( !this, "Neues Adjustment fuer Spaltenlinie?" );
+            OSL_ENSURE( !this, "New adjustment for column lines?" );
     }
 
     if( nTop )
@@ -5092,7 +5089,7 @@ void SwLayoutFrm::PaintColLines( const SwRect &rRect, const SwFmtCol &rFmtCol,
     (aLineRect.*fnRect->fnSetWidth)( nPenHalf );
     nPenHalf /= 2;
 
-    //Damit uns nichts verlorengeht muessen wir hier etwas grosszuegiger sein.
+    //We need to be a bit generous here, to not lose something.
     SwRect aRect( rRect );
     (aRect.*fnRect->fnSubLeft)( nPenHalf + nPixelSzW );
     (aRect.*fnRect->fnAddRight)( nPenHalf + nPixelSzW );
@@ -5910,7 +5907,7 @@ void SwFrm::PaintBackground( const SwRect &rRect, const SwPageFrm *pPage,
     sal_Bool bLowMode = sal_True;
 
     sal_Bool bBack = GetBackgroundBrush( pItem, pCol, aOrigBackRect, bLowerMode );
-    //- Ausgabe wenn ein eigener Hintergrund mitgebracht wird.
+    //- Output if a separate background is used.
     bool bNoFlyBackground = !bFlyMetafile && !bBack && IsFlyFrm();
     if ( bNoFlyBackground )
     {
@@ -6025,9 +6022,9 @@ void SwFrm::PaintBackground( const SwRect &rRect, const SwPageFrm *pPage,
     /// delete temporary background brush.
     delete pTmpBackBrush;
 
-    //Jetzt noch Lower und dessen Nachbarn.
-    //Wenn ein Frn dabei die Kette verlaesst also nicht mehr Lower von mir ist
-    //so hoert der Spass auf.
+    //Now process lower and his neighbour.
+    //We end this as soon as a Frn leaves the chain and therefore is not a lower
+    //of me anymore
     const SwFrm *pFrm = GetLower();
     if ( pFrm )
     {
@@ -6062,7 +6059,7 @@ void SwFrm::PaintBackground( const SwRect &rRect, const SwPageFrm *pPage,
 |*
 |*  SwPageFrm::RefreshSubsidiary()
 |*
-|*  Beschreibung        Erneuert alle Hilfslinien der Seite.
+|*  Description         Refreshes all subsidiary lines of a page.
 |*
 |*************************************************************************/
 
@@ -6076,8 +6073,8 @@ void SwPageFrm::RefreshSubsidiary( const SwRect &rRect ) const
         //::SwAlignRect( aRect, pGlobalShell );
         if ( aRect.HasArea() )
         {
-            //Beim Paint ueber die Root wird das Array von dort gesteuert.
-            //Anderfalls kuemmern wir uns selbst darum.
+            //During paint using the root, the array is controlled from there.
+            //Otherwise we'll handle it for our self.
             sal_Bool bDelSubs = sal_False;
             if ( !pSubsLines )
             {
@@ -6155,12 +6152,12 @@ void SwLayoutFrm::RefreshLaySubsidiary( const SwPageFrm *pPage,
 |*
 |*  SwLayoutFrm::PaintSubsidiaryLines()
 |*
-|*  Beschreibung        Hilfslinien um die PrtAreas malen
-|*      Nur die LayoutFrm's die direkt Cntnt enthalten.
+|*  Description         Subsidiary lines to paint the PrtAreas
+|*      Only the LayoutFrms which directly contain Cntnt.
 |*
 |*************************************************************************/
 
-//Malt die angegebene Linie, achtet darauf, dass keine Flys uebermalt werden.
+//Paints the desired line and pays attention to not overpaint any flys.
 
 typedef long Size::* SizePtr;
 typedef long Point::* PointPtr;
@@ -6178,9 +6175,9 @@ void MA_FASTCALL lcl_RefreshLine( const SwLayoutFrm *pLay,
                                   const sal_uInt8 nSubColor,
                                   SwLineRects* _pSubsLines )
 {
-    //In welche Richtung gehts? Kann nur Horizontal oder Vertikal sein.
+    //In which direction do we loop? Can only be horizontal or vertical.
     OSL_ENSURE( ((rP1.X() == rP2.X()) || (rP1.Y() == rP2.Y())),
-            "Schraege Hilfslinien sind nicht erlaubt." );
+            "Sloped subsidiary lines are not allowed." );
     const PointPtr pDirPt = rP1.X() == rP2.X() ? pY : pX;
     const PointPtr pOthPt = pDirPt == pX ? pY : pX;
     const SizePtr pDirSz = pDirPt == pX ? pWidth : pHeight;
@@ -6189,17 +6186,16 @@ void MA_FASTCALL lcl_RefreshLine( const SwLayoutFrm *pLay,
           aP2( rP2 );
 
     while ( aP1.*pDirPt < aP2.*pDirPt )
-    {   //Der Startpunkt wird jetzt, falls er in einem Fly sitzt, direkt
-        //hinter den Fly gesetzt.
-        //Wenn der Endpunkt in einem Fly sitzt oder zwischen Start und Endpunkt
-        //ein Fly sitzt, so wird der Endpunkt eben an den Start herangezogen.
-        //Auf diese art und weise wird eine Portion nach der anderen
-        //ausgegeben.
-
-        //Wenn ich selbst ein Fly bin, weiche ich nur denjenigen Flys aus,
-        //die 'ueber' mir sitzen; d.h. die in dem Array hinter mir stehen.
-        //Auch wenn ich in einem Fly sitze oder in einem Fly im Fly usw. weiche
-        //ich keinem dieser Flys aus.
+        //If the starting point lies in a fly, it is directly set behind the
+        //fly.
+        //The end point moves to the start if the end point lies in a fly or we
+        //have a fly between starting point and end point.
+        //Using this, every position is outputted one by one.
+
+        //If I'm a fly I'll only avoid those flys which are places 'above' me;
+        //this means those who are behind me in the array.
+        //Even if I'm inside a fly or inside a fly inside a fly a.s.o I won't 
+        //avoid any of those flys.
         SwOrderIter aIter( pPage );
         const SwFlyFrm *pMyFly = pLay->FindFlyFrm();
         if ( pMyFly )
@@ -6219,8 +6215,8 @@ void MA_FASTCALL lcl_RefreshLine( const SwLayoutFrm *pLay,
             const SwVirtFlyDrawObj *pObj = (SwVirtFlyDrawObj*)aIter();
             const SwFlyFrm *pFly = pObj ? pObj->GetFlyFrm() : 0;
 
-            //Mir selbst weiche ich natuerlich nicht aus. Auch wenn ich
-            //_in_ dem Fly sitze weiche ich nicht aus.
+            //I certainly won't avoid myself, even if I'm placed _inside_ the
+            //fly I won't avoid.
             if ( !pFly || (pFly == pLay || pFly->IsAnLower( pLay )) )
             {
                 aIter.Next();
@@ -6238,7 +6234,7 @@ void MA_FASTCALL lcl_RefreshLine( const SwLayoutFrm *pLay,
                 continue;
             }
 
-            //Sitzt das Obj auf der Linie
+            //Is the Obj placed on the line
             const Rectangle &rBound = pObj->GetCurrentBoundRect();
             const Point aDrPt( rBound.TopLeft() );
             const Size  aDrSz( rBound.GetSize() );
@@ -6566,9 +6562,9 @@ void SwLayoutFrm::PaintSubsidiaryLines( const SwPageFrm *pPage,
 |*
 |*  SwPageFrm::RefreshExtraData(), SwLayoutFrm::RefreshExtraData()
 |*
-|*  Beschreibung        Erneuert alle Extradaten (Zeilennummern usw) der Seite.
-|*                      Grundsaetzlich sind nur diejenigen Objekte beruecksichtig,
-|*                      die in die seitliche Ausdehnung des Rects ragen.
+|* Description          Refreshes all extra data (line breaks a.s.o) of the
+|*                      page. Basically only those objects are considered who
+|*                      edgewise loom inside the Rect.
 |*
 |*************************************************************************/
 
@@ -6690,11 +6686,10 @@ const Font& SwPageFrm::GetEmptyPageFont()
 |*
 |*    SwFrm::Retouche
 |*
-|*    Beschreibung      Retouche fuer einen Bereich.
-|*      Retouche wird nur dann durchgefuehrt, wenn der Frm der letzte seiner
-|*      Kette ist. Der Gesamte Bereich des Upper unterhalb des Frm wird
-|*      per PaintBackground gecleared.
-|*
+|*    Description       Retouch for a section.
+|*      Retouch will only be done, if the Frm is the last one in his chain.
+|*      The whole area of the upper which is located below the Frm will be
+|*      using PainBackground cleared.
 |*************************************************************************/
 
 void SwFrm::Retouche( const SwPageFrm * pPage, const SwRect &rRect ) const
@@ -6702,8 +6697,8 @@ void SwFrm::Retouche( const SwPageFrm * pPage, const SwRect &rRect ) const
     if ( bFlyMetafile )
         return;
 
-    OSL_ENSURE( GetUpper(), "Retoucheversuch ohne Upper." );
-    OSL_ENSURE( getRootFrm()->GetCurrShell() && pGlobalShell->GetWin(), "Retouche auf dem 
Drucker?" );
+    OSL_ENSURE( GetUpper(), "Retouche try without Upper." );
+    OSL_ENSURE( getRootFrm()->GetCurrShell() && pGlobalShell->GetWin(), "Retouche on a printer?" );
 
     SwRect aRetouche( GetUpper()->PaintArea() );
     aRetouche.Top( Frm().Top() + Frm().Height() );
@@ -6711,8 +6706,8 @@ void SwFrm::Retouche( const SwPageFrm * pPage, const SwRect &rRect ) const
 
     if ( aRetouche.HasArea() )
     {
-        //Uebergebenes Rect ausparen. Dafuer brauchen wir leider eine Region
-        //zum ausstanzen.
+        //Omit the passed Rect. To do this, we unfortunately need a region to
+        //cut out.
         SwRegionRects aRegion( aRetouche );
         aRegion -= rRect;
         ViewShell *pSh = getRootFrm()->GetCurrShell();
@@ -6726,9 +6721,8 @@ void SwFrm::Retouche( const SwPageFrm * pPage, const SwRect &rRect ) const
 
             GetUpper()->PaintBaBo( rRetouche, pPage, sal_True );
 
-            //Hoelle und Himmel muessen auch refreshed werden.
-            //Um Rekursionen zu vermeiden muss mein Retouche Flag zuerst
-            //zurueckgesetzt werden!
+            //Hell and Heaven needs to be refreshed too.
+            //To avoid recursion my retouch flag needs to be reseted first!
             ResetRetouche();
             SwRect aRetouchePart( rRetouche );
             if ( aRetouchePart.HasArea() )
@@ -6751,8 +6745,8 @@ void SwFrm::Retouche( const SwPageFrm * pPage, const SwRect &rRect ) const
 
             SetRetouche();
 
-            //Da wir uns ausserhalb aller Paint-Bereiche begeben muessen hier
-            //leider die Hilfslinien erneuert werden.
+            //Because we leave all paint areas, we need to refresh the
+            //subsidiary lines.
             pPage->RefreshSubsidiary( aRetouchePart );
         }
     }
@@ -6774,11 +6768,9 @@ void SwFrm::Retouche( const SwPageFrm * pPage, const SwRect &rRect ) const
     (3) New (OD 20.08.2002) - Background brush is taken, if on background drawing
         of the frame transparency is considered and its color is not "no fill"/"auto fill"
     ---- old description in german:
-    Beschreibung        Liefert die Backgroundbrush fuer den Bereich des
-        des Frm. Die Brush wird entweder von ihm selbst oder von einem
-        Upper vorgegeben, die erste Brush wird benutzt.
-        Ist fuer keinen Frm eine Brush angegeben, so wird sal_False zurueck-
-        geliefert.
+    Description         Returns the Backgroundbrush for the area of the Frm.
+        The Brush is defined from it self or from an upper, the first Brush is
+        used. If no Brush is defined for a Frm, sal_False is returned.
 
     @param rpBrush
     output parameter - constant reference pointer the found background brush
@@ -6917,7 +6909,7 @@ Graphic SwFrmFmt::MakeGraphic( ImageMap* )
 Graphic SwFlyFrmFmt::MakeGraphic( ImageMap* pMap )
 {
     Graphic aRet;
-    //irgendeinen Fly suchen!
+    //search any Fly!
     SwIterator<SwFrm,SwFmt> aIter( *this );
     SwFrm *pFirst = aIter.First();
     ViewShell *pSh;
@@ -6952,7 +6944,7 @@ Graphic SwFlyFrmFmt::MakeGraphic( ImageMap* pMap )
         aDev.SetFillColor();
         aDev.SetFont( pOld->GetFont() );
 
-        //Rechteck ggf. ausdehnen, damit die Umrandunge mit aufgezeichnet werden.
+        //Enlarge the rectangle if needed, so the border is painted too.
         SwRect aOut( pFly->Frm() );
         SwBorderAttrAccess aAccess( SwFrm::GetCache(), pFly );
         const SwBorderAttrs &rAttrs = *aAccess.Get();
-- 
1.7.9.1


From 45cc59e263dd269262cc7eace7c6f5049eb30cd4 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:37:48 +0100
Subject: [PATCH 15/22] translate german comments

---
 sw/source/core/layout/ssfrm.cxx |   27 ++++++++++++++-------------
 1 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/sw/source/core/layout/ssfrm.cxx b/sw/source/core/layout/ssfrm.cxx
index adc552d..e043c50 100644
--- a/sw/source/core/layout/ssfrm.cxx
+++ b/sw/source/core/layout/ssfrm.cxx
@@ -458,7 +458,7 @@ SwCntntFrm::~SwCntntFrm()
     if( 0 != ( pCNd = PTR_CAST( SwCntntNode, GetRegisteredIn() )) &&
         !pCNd->GetDoc()->IsInDtor() )
     {
-        //Bei der Root abmelden wenn ich dort noch im Turbo stehe.
+        //Unregister from root if I'm still in turbo there.
         SwRootFrm *pRoot = getRootFrm();
         if( pRoot && pRoot->GetTurbo() == this )
         {
@@ -526,13 +526,14 @@ void SwCntntFrm::DelFrms( const SwCntntNode& rNode )
             pMaster->SetFollow( pFrm->GetFollow() );
             pFrm->_SetIsFollow( sal_False );
         }
-        pFrm->SetFollow( 0 );//Damit er nicht auf dumme Gedanken kommt.
-                                //Andernfalls kann es sein, dass ein Follow
-                                //vor seinem Master zerstoert wird, der Master
-                                //greift dann ueber den ungueltigen
-                                //Follow-Pointer auf fremdes Memory zu.
-                                //Die Kette darf hier zerknauscht werden, weil
-                                //sowieso alle zerstoert werden.
+        pFrm->SetFollow( 0 );//So it doesn't get funny ideas.
+                                //Otherwise it could be possible that a follow
+                                //gets destroyed before its master. Following
+                                //the now invalid pointer will then lead to an
+                                //illegal memory access. The chain can be
+                                //crushed here because we'll destroy all of it
+                                //anyway.
+                                
         if( pFrm->GetUpper() && pFrm->IsInFtn() && !pFrm->GetIndNext() &&
             !pFrm->GetIndPrev() )
         {
@@ -566,10 +567,10 @@ SwLayoutFrm::~SwLayoutFrm()
     {
         while ( pFrm )
         {
-            //Erst die Objs des Frm vernichten, denn diese koennen sich sonst nach
-            //dem Remove nicht mehr bei der Seite abmelden.
-            //Falls sich einer nicht abmeldet wollen wir nicht gleich
-            //endlos schleifen.
+            //First delete the Objs of the Frm because they can't unregister
+            //from the page after remove.
+            //We don't want to create an endless loop only because one couldn't
+            //unregister.
 
             sal_uInt32 nCnt;
             while ( pFrm->GetDrawObjs() && pFrm->GetDrawObjs()->Count() )
@@ -601,7 +602,7 @@ SwLayoutFrm::~SwLayoutFrm()
             delete pFrm;
             pFrm = pLower;
         }
-        //Fly's vernichten. Der letzte loescht gleich das Array.
+        //Delete the Flys, the last one also deletes the array.
         sal_uInt32 nCnt;
         while ( GetDrawObjs() && GetDrawObjs()->Count() )
         {
-- 
1.7.9.1


From e46459865c6747fb5f14f3691cb37cfbb66338f9 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:37:54 +0100
Subject: [PATCH 16/22] translate german comments

---
 sw/source/core/layout/unusedf.cxx |   16 ++++++++--------
 1 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/sw/source/core/layout/unusedf.cxx b/sw/source/core/layout/unusedf.cxx
index f68f2b7..d28eb5f 100644
--- a/sw/source/core/layout/unusedf.cxx
+++ b/sw/source/core/layout/unusedf.cxx
@@ -34,17 +34,17 @@
 
 void SwFrm::Format( const SwBorderAttrs * )
 {
-    OSL_FAIL( "Format() der Basisklasse gerufen." );
+    OSL_FAIL( "Format() of the base class called." );
 }
 
 void SwFrm::Paint(SwRect const&, SwPrintData const*const) const
 {
-    OSL_FAIL( "Paint() der Basisklasse gerufen." );
+    OSL_FAIL( "Paint() of the base class called." );
 }
 
 sal_Bool SwCntntFrm::WouldFit( SwTwips &, sal_Bool&, sal_Bool )
 {
-    OSL_FAIL( "WouldFit des CntntFrm gerufen." );
+    OSL_FAIL( "WouldFit of CntntFrm called." );
     return sal_False;
 }
 
@@ -56,7 +56,7 @@ bool SwFrm::FillSelection( SwSelectionList& , const SwRect& ) const
 
 sal_Bool SwFrm::GetCrsrOfst( SwPosition *, Point&, SwCrsrMoveState*  ) const
 {
-    OSL_FAIL( "GetCrsrOfst der Basisklasse, hi!" );
+    OSL_FAIL( "GetCrsrOfst of the base class, hi!" );
     return sal_False;
 }
 
@@ -64,17 +64,17 @@ sal_Bool SwFrm::GetCrsrOfst( SwPosition *, Point&, SwCrsrMoveState*  ) const
 
 void SwRootFrm::Cut()
 {
-    OSL_FAIL( "Cut() des RootFrm gerufen." );
+    OSL_FAIL( "Cut() of RootFrm called." );
 }
 
 void SwRootFrm::Paste( SwFrm *, SwFrm * )
 {
-    OSL_FAIL( "Paste() des RootFrm gerufen." );
+    OSL_FAIL( "Paste() of RootFrm called." );
 }
 
 void SwFlyFrm::Paste( SwFrm *, SwFrm * )
 {
-    OSL_FAIL( "Paste() des FlyFrm gerufen." );
+    OSL_FAIL( "Paste() of FlyFrm called." );
 }
 
 #endif
@@ -82,7 +82,7 @@ void SwFlyFrm::Paste( SwFrm *, SwFrm * )
 sal_Bool SwFrm::GetCharRect( SwRect&, const SwPosition&,
                          SwCrsrMoveState* ) const
 {
-    OSL_FAIL( "GetCharRect() der Basis gerufen." );
+    OSL_FAIL( "GetCharRect() of the base called." );
     return sal_False;
 }
 
-- 
1.7.9.1


From f518342cae99a62b776478239e472f16eb9049b3 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:38:02 +0100
Subject: [PATCH 17/22] translate german comments

---
 sw/source/core/layout/virtoutp.cxx |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/sw/source/core/layout/virtoutp.cxx b/sw/source/core/layout/virtoutp.cxx
index b4acf6c..831b9e0 100644
--- a/sw/source/core/layout/virtoutp.cxx
+++ b/sw/source/core/layout/virtoutp.cxx
@@ -68,9 +68,9 @@ inline DbgRect::DbgRect( OutputDevice *pOutDev, const Rectangle &rRect,
 
 #endif
 
-/* class SwLayVout verwaltet das virtuelle Outputdevice
- * Es gibt von dieser Klasse einen statischen Member am RootFrm,
- * dieser wird in _FrmInit angelegt und in _FrmFinit zerstoert.
+/* The SWLayVout class manages the virtual output devices.
+ * RootFrm has a static member of this class which is created in _FrmInit
+ * and destroyed in _FrmFinit.
  * */
 
 sal_Bool SwRootFrm::FlushVout()
@@ -136,7 +136,7 @@ void SetMappingForVirtDev(  const Point&    _rNewOrigin,
  *                          SwVOut::DoesFit()
  *************************************************************************/
 
-// rSize muss in Pixel-Koordinaten vorliegen!
+// rSize must be pixel coordinates!
 sal_Bool SwLayVout::DoesFit( const Size &rNew )
 {
     if( rNew.Height() > VIRTUALHEIGHT )
@@ -197,7 +197,7 @@ void SwLayVout::Enter(  ViewShell *pShell, SwRect &rRect, sal_Bool bOn )
         pSh = pShell;
         pOut = NULL;
         OutputDevice *pO = pSh->GetOut();
-// Auf dem Drucker oder einem virt. Outputdevice wird nicht getrickst...
+// We don't cheat on printers or virtual output devices...
         if( OUTDEV_WINDOW != pO->GetOutDevType() )
             return;
 
@@ -211,7 +211,7 @@ void SwLayVout::Enter(  ViewShell *pShell, SwRect &rRect, sal_Bool bOn )
         OSL_ENSURE( !pSh->GetWin()->IsReallyVisible() ||
                 aTmpRect.GetWidth() <= pSh->GetWin()->GetOutputSizePixel().Width() + 2,
                 "Paintwidth bigger than visarea?" );
-        // Passt das Rechteck in unseren Buffer ?
+        // Does the rectangle fit in our buffer?
         if( !DoesFit( aTmpRect.GetSize() ) )
         {
             pOut = NULL;
-- 
1.7.9.1


From f3e7026875b481d42e1b7a78d3e7273fead05681 Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:38:09 +0100
Subject: [PATCH 18/22] translate german comments

---
 sw/source/core/layout/virtoutp.hxx |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/sw/source/core/layout/virtoutp.hxx b/sw/source/core/layout/virtoutp.hxx
index f6ecb88..61e712f 100644
--- a/sw/source/core/layout/virtoutp.hxx
+++ b/sw/source/core/layout/virtoutp.hxx
@@ -42,7 +42,7 @@ class ViewShell;
 
 class SwLayVout
 {
-    friend void _FrmFinit();    //loescht das Vout
+    friend void _FrmFinit();    //deletes Vout
 private:
     ViewShell*      pSh;
     OutputDevice*   pOut;
-- 
1.7.9.1


From 3e97ae9f54f85b597a44dc0b3cf3a727fd5c7d2e Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Mon, 13 Feb 2012 11:38:19 +0100
Subject: [PATCH 19/22] translate german comments

---
 sw/source/core/layout/wsfrm.cxx |  145 +++++++++++++++++++--------------------
 1 files changed, 71 insertions(+), 74 deletions(-)

diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index 737f45c..fe1e719 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -101,7 +101,7 @@ SwFrm::SwFrm( SwModify *pMod, SwFrm* pSib ) :
     bInfFtn ( sal_False ),
     bInfSct ( sal_False )
 {
-    OSL_ENSURE( pMod, "Kein Frameformat uebergeben." );
+    OSL_ENSURE( pMod, "No frame format passed." );
     bInvalidR2L = bInvalidVert = 1;
     //Badaa: 2008-04-18 * Support for Classical Mongolian Script (SCMS) joint with Jiayanmin
     bDerivedR2L = bDerivedVert = bRightToLeft = bVertical = bReverse = bVertLR = 0;
@@ -308,7 +308,7 @@ void SwFrm::_UpdateAttrFrm( const SfxPoolItem *pOld, const SfxPoolItem *pNew,
         case RES_BOX:
         case RES_SHADOW:
             Prepare( PREP_FIXSIZE_CHG );
-            // hier kein break !
+            // no break here!
         case RES_LR_SPACE:
         case RES_UL_SPACE:
             rInvFlags |= 0x0B;
@@ -351,7 +351,7 @@ void SwFrm::_UpdateAttrFrm( const SfxPoolItem *pOld, const SfxPoolItem *pNew,
             break;
         }
         case RES_COL:
-            OSL_FAIL( "Spalten fuer neuen FrmTyp?" );
+            OSL_FAIL( "Columns for new FrmTyp?" );
             break;
 
         default:
@@ -372,9 +372,9 @@ void SwFrm::Prepare( const PrepareHint, const void *, sal_Bool )
 /*************************************************************************
 |*
 |*    SwFrm::InvalidatePage()
-|*    Beschreibung:     Invalidiert die Seite, in der der Frm gerade steht.
-|*      Je nachdem ob es ein Layout, Cntnt oder FlyFrm ist wird die Seite
-|*      entsprechend Invalidiert.
+|*    Description:      Invalidates the page in which the Frm is placed
+|*      currently. The page is invalidated depending on the type (Layout,
+|*      Cntnt, FlyFrm)
 |*
 |*************************************************************************/
 void SwFrm::InvalidatePage( const SwPageFrm *pPage ) const
@@ -414,16 +414,16 @@ void SwFrm::InvalidatePage( const SwPageFrm *pPage ) const
         {
             if ( pRoot->IsTurboAllowed() )
             {
-                // JP 21.09.95: wenn sich der ContentFrame 2 mal eintragen
-                //              will, kann es doch eine TurboAction bleiben.
-                //  ODER????
+                // JP 21.09.95: it can still be a TurboAction if the 
+                // ContentFrame wants to register a second time.
+                //  RIGHT????
                 if ( !pRoot->GetTurbo() || this == pRoot->GetTurbo() )
                     pRoot->SetTurbo( (const SwCntntFrm*)this );
                 else
                 {
                     pRoot->DisallowTurbo();
-                    //Die Seite des Turbo koennte eine andere als die meinige
-                    //sein, deshalb muss sie invalidiert werden.
+                    //The page of the Turbo could be a different one then mine,
+                    //therefore we have to invalidate it.
                     const SwFrm *pTmp = pRoot->GetTurbo();
                     pRoot->ResetTurbo();
                     pTmp->InvalidatePage();
@@ -530,9 +530,9 @@ Size SwFrm::ChgSize( const Size& aNewSize )
                         GetUpper()->_InvalidateSize();
                 }
 
-                // Auch wenn das Grow/Shrink noch nicht die gewuenschte Breite eingestellt hat,
-                // wie z.B. beim Aufruf durch ChgColumns, um die Spaltenbreiten einzustellen,
-                // wird die Breite jetzt gesetzt.
+                // Even if grow/shrink did not yet set the desired width, for
+                // example when called by ChgColumns to set the column width, we
+                // set the right width now.
                 (aFrm.*fnRect->fnSetHeight)( nNew );
             }
         }
@@ -567,22 +567,21 @@ Size SwFrm::ChgSize( const Size& aNewSize )
 |*
 |*  SwFrm::InsertBefore()
 |*
-|*  Beschreibung        SwFrm wird in eine bestehende Struktur eingefuegt
-|*                      Eingefuegt wird unterhalb des Parent und entweder
-|*                      vor pBehind oder am Ende der Kette wenn pBehind
-|*                      leer ist.
+|*  Description         SwFrm is inserted into an existing structure.
+|*                      Insertion is done below the parent and either before
+|*                      pBehind or at the end of the chain if pBehind is empty.
 |*
 |*************************************************************************/
 void SwFrm::InsertBefore( SwLayoutFrm* pParent, SwFrm* pBehind )
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Insert." );
+    OSL_ENSURE( pParent, "No parent for insert." );
     OSL_ENSURE( (!pBehind || (pBehind && pParent == pBehind->GetUpper())),
-            "Framebaum inkonsistent." );
+            "Frame tree is inconsistent." );
 
     pUpper = pParent;
     pNext = pBehind;
     if( pBehind )
-    {   //Einfuegen vor pBehind.
+    {   //Inert before pBehind.
         if( 0 != (pPrev = pBehind->pPrev) )
             pPrev->pNext = this;
         else
@@ -590,7 +589,7 @@ void SwFrm::InsertBefore( SwLayoutFrm* pParent, SwFrm* pBehind )
         pBehind->pPrev = this;
     }
     else
-    {   //Einfuegen am Ende, oder als ersten Node im Unterbaum
+    {   //Insert at the end, or as first node in the sub tree
         pPrev = pUpper->Lower();
         if ( pPrev )
         {
@@ -607,30 +606,30 @@ void SwFrm::InsertBefore( SwLayoutFrm* pParent, SwFrm* pBehind )
 |*
 |*  SwFrm::InsertBehind()
 |*
-|*  Beschreibung        SwFrm wird in eine bestehende Struktur eingefuegt
-|*                      Eingefuegt wird unterhalb des Parent und entweder
-|*                      hinter pBefore oder am Anfang der Kette wenn pBefore
-|*                      leer ist.
+|*  Description         SwFrm is inserted in an existing structure.
+|*                      Insertion is done below the parent and either behind
+|*                      pBefore or at the beginning of the chain if pBefore is
+|*                      empty.
 |*
 |*************************************************************************/
 void SwFrm::InsertBehind( SwLayoutFrm *pParent, SwFrm *pBefore )
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Insert." );
+    OSL_ENSURE( pParent, "No Parent for Insert." );
     OSL_ENSURE( (!pBefore || (pBefore && pParent == pBefore->GetUpper())),
-            "Framebaum inkonsistent." );
+            "Frame tree is inconsistent." );
 
     pUpper = pParent;
     pPrev = pBefore;
     if ( pBefore )
     {
-        //Einfuegen hinter pBefore
+        //Insert after pBefore
         if ( 0 != (pNext = pBefore->pNext) )
             pNext->pPrev = this;
         pBefore->pNext = this;
     }
     else
     {
-        //Einfuegen am Anfang der Kette
+        //Insert at the beginning of the chain
         pNext = pParent->Lower();
         if ( pParent->Lower() )
             pParent->Lower()->pPrev = this;
@@ -642,31 +641,28 @@ void SwFrm::InsertBehind( SwLayoutFrm *pParent, SwFrm *pBefore )
 |*
 |*  SwFrm::InsertGroup()
 |*
-|*  Beschreibung        Eine Kette von SwFrms wird in eine bestehende Struktur
-|*                      eingefuegt
+|*  Description         A chain of SwFrms gets inserted in an existing structure
 |*
-|*  Bisher wird dies genutzt, um einen SectionFrame, der ggf. schon Geschwister
-|*  mit sich bringt, in eine bestehende Struktur einzufuegen.
+|*  Until now this is used to insert a SectionFrame which may has some siblings
+|*  into an existing structure.
 |*
-|*  Wenn man den dritten Parameter als NULL uebergibt, entspricht
-|*  diese Methode dem SwFrm::InsertBefore(..), nur eben mit Geschwistern.
+|*  If the third parameter is NULL, this method is (besides handling the
+|*  siblings) equal to SwFrm::InsertBefore(..)
 |*
-|*  Wenn man einen dritten Parameter uebergibt, passiert folgendes:
-|*  this wird pNext von pParent,
-|*  pSct wird pNext vom Letzten der this-Kette,
-|*  pBehind wird vom pParent an den pSct umgehaengt.
-|*  Dies dient dazu: ein SectionFrm (this) wird nicht als
-|*  Kind an einen anderen SectionFrm (pParent) gehaengt, sondern pParent
-|*  wird in zwei Geschwister aufgespalten (pParent+pSct) und this dazwischen
-|*  eingebaut.
+|*  If the third parameter is passed, the following happens:
+|*  - this becomes pNext of pParent
+|*  - pSct becomes pNext of the last on in the this-chains
+|*  - pBehind is reconnected from pParent to pSct
+|*  This leads to: a SectionFrm (pParent) won't be connected, but pParent get
+|*  split up into two siblings (pParent+pSect) and inserted between.
 |*
 |*************************************************************************/
 void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Insert." );
+    OSL_ENSURE( pParent, "No parent for insert." );
     OSL_ENSURE( (!pBehind || ( (pBehind && (pParent == pBehind->GetUpper()))
             || ((pParent->IsSctFrm() && pBehind->GetUpper()->IsColBodyFrm())) ) ),
-            "Framebaum inkonsistent." );
+            "Frame tree inconsistent." );
     if( pSct )
     {
         pUpper = pParent->GetUpper();
@@ -698,7 +694,7 @@ void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
             pLast->pUpper = GetUpper();
         }
         if( pBehind )
-        {   //Einfuegen vor pBehind.
+        {   //Insert befor pBehind.
             if( pBehind->GetPrev() )
                 pBehind->GetPrev()->pNext = NULL;
             else
@@ -737,7 +733,7 @@ void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
         }
         pLast->pNext = pBehind;
         if( pBehind )
-        {   //Einfuegen vor pBehind.
+        {   //Insert befor pBehind.
             if( 0 != (pPrev = pBehind->pPrev) )
                 pPrev->pNext = this;
             else
@@ -745,7 +741,7 @@ void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
             pBehind->pPrev = pLast;
         }
         else
-        {   //Einfuegen am Ende, oder des ersten Nodes im Unterbaum
+            //Insert at the end, or ... the first node in the subtree
             pPrev = pUpper->Lower();
             if ( pPrev )
             {
@@ -766,20 +762,20 @@ void SwFrm::InsertGroupBefore( SwFrm* pParent, SwFrm* pBehind, SwFrm* pSct )
 |*************************************************************************/
 void SwFrm::Remove()
 {
-    OSL_ENSURE( pUpper, "Removen ohne Upper?" );
+    OSL_ENSURE( pUpper, "Remove without upper?" );
 
     if( pPrev )
-        // einer aus der Mitte wird removed
+        // one out of the middle is removed
         pPrev->pNext = pNext;
     else
-    {   // der erste in einer Folge wird removed
-        OSL_ENSURE( pUpper->pLower == this, "Layout inkonsistent." );
+    {   // the first in a list is removed //TODO
+        OSL_ENSURE( pUpper->pLower == this, "Layout is inconsistent." );
         pUpper->pLower = pNext;
     }
     if( pNext )
         pNext->pPrev = pPrev;
 
-    // Verbindung kappen.
+    // Remove link
     pNext  = pPrev  = 0;
     pUpper = 0;
 }
@@ -790,16 +786,16 @@ void SwFrm::Remove()
 |*************************************************************************/
 void SwCntntFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Paste." );
-    OSL_ENSURE( pParent->IsLayoutFrm(), "Parent ist CntntFrm." );
-    OSL_ENSURE( pParent != this, "Bin selbst der Parent." );
-    OSL_ENSURE( pSibling != this, "Bin mein eigener Nachbar." );
+    OSL_ENSURE( pParent, "No parent for pasting." );
+    OSL_ENSURE( pParent->IsLayoutFrm(), "Parent is CntntFrm." );
+    OSL_ENSURE( pParent != this, "I'm the parent." );
+    OSL_ENSURE( pSibling != this, "I'm my own neighbour." );
     OSL_ENSURE( !GetPrev() && !GetNext() && !GetUpper(),
-            "Bin noch irgendwo angemeldet." );
+            "I'm still registered somewhere" );
     OSL_ENSURE( !pSibling || pSibling->IsFlowFrm(),
             "<SwCntntFrm::Paste(..)> - sibling not of expected type." );
 
-    //In den Baum einhaengen.
+    //Insert in the tree.
     InsertBefore( (SwLayoutFrm*)pParent, pSibling );
 
     SwPageFrm *pPage = FindPageFrm();
@@ -835,13 +831,13 @@ void SwCntntFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
     if ( GetPrev() )
     {
         if ( IsFollow() )
-            //Ich bin jetzt direkter Nachfolger meines Masters geworden
+            //I'm a direct follower of my master now
             ((SwCntntFrm*)GetPrev())->Prepare( PREP_FOLLOW_FOLLOWS );
         else
         {
             if ( GetPrev()->Frm().Height() !=
                  GetPrev()->Prt().Height() + GetPrev()->Prt().Top() )
-                //Umrandung zu beruecksichtigen?
+                //Take the frame into account?
                 GetPrev()->_InvalidatePrt();
             // OD 18.02.2003 #104989# - force complete paint of previous frame,
             // if frame is inserted at the end of a section frame, in order to
@@ -895,7 +891,7 @@ void SwCntntFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 |*************************************************************************/
 void SwCntntFrm::Cut()
 {
-    OSL_ENSURE( GetUpper(), "Cut ohne Upper()." );
+    OSL_ENSURE( GetUpper(), "Cut without Upper()." );
 
     SwPageFrm *pPage = FindPageFrm();
     InvalidatePage( pPage );
@@ -935,8 +931,9 @@ void SwCntntFrm::Cut()
     }
 
     if( 0 != (pFrm = GetIndNext()) )
-    {   //Der alte Nachfolger hat evtl. einen Abstand zum Vorgaenger
-        //berechnet, der ist jetzt, wo er der erste wird obsolet bzw. anders.
+        //The old follower may calculated a gap to the predecessor which now
+        //becomes obsolete or different respectively as it becomes the first
+        //one itself.
         pFrm->_InvalidatePrt();
         pFrm->_InvalidatePos();
         pFrm->InvalidatePage( pPage );
@@ -965,16 +962,16 @@ void SwCntntFrm::Cut()
     else
     {
         InvalidateNextPos();
-        //Einer muss die Retusche uebernehmen: Vorgaenger oder Upper
+        //Someone needs to do the retouching: predecessor or upper
         if ( 0 != (pFrm = GetPrev()) )
         {   pFrm->SetRetouche();
             pFrm->Prepare( PREP_WIDOWS_ORPHANS );
             pFrm->_InvalidatePos();
             pFrm->InvalidatePage( pPage );
         }
-        //Wenn ich der einzige CntntFrm in meinem Upper bin (war), so muss
-        //er die Retouche uebernehmen.
         //Ausserdem kann eine Leerseite entstanden sein.
+        //If I'm (was) the only CntntFrm in my upper, he has to do the
+        //retouching.
         else
         {   SwRootFrm *pRoot = getRootFrm();
             if ( pRoot )
@@ -1006,7 +1003,7 @@ void SwCntntFrm::Cut()
             }
         }
     }
-    //Erst removen, dann Upper Shrinken.
+    //Remove first, then shrink the upper.
     SwLayoutFrm *pUp = GetUpper();
     Remove();
     if ( pUp )
@@ -1047,9 +1044,9 @@ void SwCntntFrm::Cut()
                          ( pUp->IsFtnFrm() && pUp->IsColLocked() ) )
                     {
                         pSct->DelEmpty( sal_False );
-                        // Wenn ein gelockter Bereich nicht geloescht werden darf,
-                        // so ist zumindest seine Groesse durch das Entfernen seines
-                        // letzten Contents ungueltig geworden.
+                        // If a loosened area may not be deleted then at least
+                        // its size became invalid after removing its last
+                        // content.
                         pSct->_InvalidateSize();
                     }
                     else
@@ -1077,8 +1074,8 @@ void SwCntntFrm::Cut()
 |*************************************************************************/
 void SwLayoutFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 {
-    OSL_ENSURE( pParent, "Kein Parent fuer Paste." );
-    OSL_ENSURE( pParent->IsLayoutFrm(), "Parent ist CntntFrm." );
+    OSL_ENSURE( pParent, "No parent for pasting." );
+    OSL_ENSURE( pParent->IsLayoutFrm(), "Parent is CntntFrm." );
     OSL_ENSURE( pParent != this, "Bin selbst der Parent." );
     OSL_ENSURE( pSibling != this, "Bin mein eigener Nachbar." );
     OSL_ENSURE( !GetPrev() && !GetNext() && !GetUpper(),
-- 
1.7.9.1


From 6a40e3dcc0419d53817bcfc41bd8aedffa0629ff Mon Sep 17 00:00:00 2001
From: Nicolas Christener <nicolas.christener@adfinis-sygroup.ch>
Date: Wed, 15 Feb 2012 22:30:06 +0100
Subject: [PATCH 20/22] translate german comments

---
 sw/source/core/layout/wsfrm.cxx |  393 +++++++++++++++++++--------------------
 1 files changed, 187 insertions(+), 206 deletions(-)

diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx
index fe1e719..ad035bb 100644
--- a/sw/source/core/layout/wsfrm.cxx
+++ b/sw/source/core/layout/wsfrm.cxx
@@ -969,7 +969,6 @@ void SwCntntFrm::Cut()
             pFrm->_InvalidatePos();
             pFrm->InvalidatePage( pPage );
         }
-        //Ausserdem kann eine Leerseite entstanden sein.
         //If I'm (was) the only CntntFrm in my upper, he has to do the
         //retouching.
         else
@@ -1076,12 +1075,12 @@ void SwLayoutFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 {
     OSL_ENSURE( pParent, "No parent for pasting." );
     OSL_ENSURE( pParent->IsLayoutFrm(), "Parent is CntntFrm." );
-    OSL_ENSURE( pParent != this, "Bin selbst der Parent." );
-    OSL_ENSURE( pSibling != this, "Bin mein eigener Nachbar." );
+    OSL_ENSURE( pParent != this, "I'm the parent oneself." );
+    OSL_ENSURE( pSibling != this, "I'm my own neighbour." );
     OSL_ENSURE( !GetPrev() && !GetNext() && !GetUpper(),
-            "Bin noch irgendwo angemeldet." );
+            "I'm still registered somewhere." );
 
-    //In den Baum einhaengen.
+    //Insert in the tree.
     InsertBefore( (SwLayoutFrm*)pParent, pSibling );
 
     // OD 24.10.2002 #103517# - correct setting of variable <fnRect>
@@ -1151,8 +1150,8 @@ void SwLayoutFrm::Paste( SwFrm* pParent, SwFrm* pSibling)
 
     if( (Frm().*fnRect->fnGetHeight)() )
     {
-        // AdjustNeighbourhood wird jetzt auch in Spalten aufgerufen,
-        // die sich nicht in Rahmen befinden
+        // AdjustNeighbourhood is now also called in columns which are not
+        // placed inside the frame
         sal_uInt8 nAdjust = GetUpper()->IsFtnBossFrm() ?
                 ((SwFtnBossFrm*)GetUpper())->NeighbourhoodAdjustment( this )
                 : NA_GROW_SHRINK;
@@ -1185,11 +1184,11 @@ void SwLayoutFrm::Cut()
     SWRECTFN( this )
     SwTwips nShrink = (Frm().*fnRect->fnGetHeight)();
 
-    //Erst removen, dann Upper Shrinken.
+    //Remove first, then shrink upper.
     SwLayoutFrm *pUp = GetUpper();
 
-    // AdjustNeighbourhood wird jetzt auch in Spalten aufgerufen,
-    // die sich nicht in Rahmen befinden
+    // AdjustNeighbourhood is now also called in columns which are not
+    // placed inside the frame
 
     // Remove must not be called before a AdjustNeighbourhood, but it has to
     // be called before the upper-shrink-call, if the upper-shrink takes care
@@ -1241,7 +1240,7 @@ void SwLayoutFrm::Cut()
 |*************************************************************************/
 SwTwips SwFrm::Grow( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 {
-    OSL_ENSURE( nDist >= 0, "Negatives Wachstum?" );
+    OSL_ENSURE( nDist >= 0, "Negative growth?" );
 
     PROTOCOL_ENTER( this, bTst ? PROT_GROW_TST : PROT_GROW, 0, &nDist )
 
@@ -1290,7 +1289,7 @@ SwTwips SwFrm::Grow( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 |*************************************************************************/
 SwTwips SwFrm::Shrink( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 {
-    OSL_ENSURE( nDist >= 0, "Negative Verkleinerung?" );
+    OSL_ENSURE( nDist >= 0, "Negative reduction?" );
 
     PROTOCOL_ENTER( this, bTst ? PROT_SHRINK_TST : PROT_SHRINK, 0, &nDist )
 
@@ -1333,50 +1332,46 @@ SwTwips SwFrm::Shrink( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 |*
 |*  SwFrm::AdjustNeighbourhood()
 |*
-|*  Beschreibung        Wenn sich die Groesse eines Frm's direkt unterhalb
-|*      eines Fussnotenbosses (Seite/Spalte) veraendert hat, so muss dieser
-|*      "Normalisiert" werden.
-|*      Es gibt dort immer einen Frame, der den "maximal moeglichen" Raum
-|*      einnimmt (der Frame, der den Body.Text enhaelt) und keinen oder
-|*      mehrere Frames die den Platz einnehmen den sie halt brauchen
-|*      (Kopf-/Fussbereich, Fussnoten).
-|*      Hat sich einer der Frames veraendert, so muss der Body-Text-Frame
-|*      entsprechen wachsen oder schrumpfen; unabhaegig davon, dass er fix ist.
-|*      !! Ist es moeglich dies allgemeiner zu loesen, also nicht auf die
-|*      Seite beschraenkt und nicht auf einen Speziellen Frame, der den
-|*      maximalen Platz einnimmt (gesteuert ueber Attribut FrmSize)? Probleme:
-|*      Was ist wenn mehrere Frames nebeneinander stehen, die den maximalen
-|*      Platz einnehmen?
-|*      Wie wird der Maximale Platz berechnet?
-|*      Wie klein duerfen diese Frames werden?
-|*
-|*      Es wird auf jeden Fall nur so viel Platz genehmigt, dass ein
-|*      Minimalwert fuer die Hoehe des Bodys nicht unterschritten wird.
-|*
-|*  Parameter: nDiff ist der Betrag, um den Platz geschaffen werden muss
+|*  Description         A Frm needs "normalization" if it is directly placed
+|*       below a footnote boss (page/column) and its size changed.
+|*       There's always a frame which takes the maximum possible space (the
+|*       frame which contains the Body.Text) and zero or more frames which
+|*       only take the space needed (header/footer area, footnote).
+|*       If one of frames changed, the body-text-frame has to grow or shrink
+|*       accordingly; even tough it's fixed.
+|*       !! Is it possible to do this in a generic way and not restrict it to
+|*       the page and a distinct frame which takes the maximum space (controlled
+|*       using the FrmSize attribute)? Problems: What if multiple frames taking
+|*       the maximum space are placed next to each other?
+|*       How is the maximum space calculated?
+|*       How small can those frames become?
+|*
+|*       In any case, only a certain amount of space is allowed, so we
+|*       never go below a minimum value for the height of the body.
+|*
+|*  Parameter: nDiff is the value around which the space has to be allocated
 |*
 |*************************************************************************/
 SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
 {
     PROTOCOL_ENTER( this, PROT_ADJUSTN, 0, &nDiff );
 
-    if ( !nDiff || !GetUpper()->IsFtnBossFrm() ) // nur innerhalb von Seiten/Spalten
+    if ( !nDiff || !GetUpper()->IsFtnBossFrm() ) // only inside pages/columns
         return 0L;
 
     const ViewShell *pSh = getRootFrm()->GetCurrShell();
     const sal_Bool bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode();
 
-    //Der (Page)Body veraendert sich nur im BrowseMode, aber nicht wenn er
-    //Spalten enthaelt.
+    //The (Page-)Body only changes in BrwoseMode, but only if it does not
+    //contain columns.
     if ( IsPageBodyFrm() && (!bBrowse ||
           (((SwLayoutFrm*)this)->Lower() &&
            ((SwLayoutFrm*)this)->Lower()->IsColumnFrm())) )
         return 0L;
 
-    //In der BrowseView kann der PageFrm selbst ersteinmal einiges von den
-    //Wuenschen abfangen.
+    //In BrowseView mode the PageFrm can handle some of the requests.
     long nBrowseAdd = 0;
-    if ( bBrowse && GetUpper()->IsPageFrm() ) // nur (Page)BodyFrms
+    if ( bBrowse && GetUpper()->IsPageFrm() ) // only (Page-)BodyFrms
     {
         ViewShell *pViewShell = getRootFrm()->GetCurrShell();
         SwLayoutFrm *pUp = GetUpper();
@@ -1399,8 +1394,7 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                 SetCompletePaint();
                 if ( !pViewShell || pViewShell->VisArea().Height() >= pUp->Frm().Height() )
                 {
-                    //Ersteinmal den Body verkleinern. Der waechst dann schon
-                    //wieder.
+                    //First minimize Body, it will grow again later.
                     SwFrm *pBody = ((SwFtnBossFrm*)pUp)->FindBodyCont();
                     const long nTmp = nChg - pBody->Prt().Height();
                     if ( !bTst )
@@ -1423,20 +1417,19 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
         }
         else
         {
-            //Die Seite kann bis auf 0 schrumpfen. Die erste Seite bleibt
-            //mindestens so gross wie die VisArea.
+            //The page can shrink to 0. The fist page keeps the same size like
+            //VisArea.
             nChg = nDiff;
             long nInvaAdd = 0;
             if ( pViewShell && !pUp->GetPrev() &&
                  pUp->Frm().Height() + nDiff < pViewShell->VisArea().Height() )
             {
-                //Das heisst aber wiederum trotzdem, das wir geeignet invalidieren
-                //muessen.
+                //This means, that we have to invalidate adequate.
                 nChg = pViewShell->VisArea().Height() - pUp->Frm().Height();
                 nInvaAdd = -(nDiff - nChg);
             }
 
-            //Invalidieren inklusive unterem Rand.
+            //Invalidate including bottom border.
             long nBorder = nUpPrtBottom + 20;
             nBorder -= nChg;
             aInva.Top( aInva.Bottom() - (nBorder+nInvaAdd) );
@@ -1446,15 +1439,14 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                 if ( !IsHeaderFrm() )
                     ((SwFtnBossFrm*)pUp)->FindBodyCont()->SetCompletePaint();
             }
-            //Wegen der Rahmen die Seite invalidieren. Dadurch wird die Seite
-            //wieder entsprechend gross wenn ein Rahmen nicht passt. Das
-            //funktioniert anderfalls nur zufaellig fuer absatzgebundene Rahmen
-            //(NotifyFlys).
+            //Invalidate the page because of the frames. Thereby the page becomes
+            //the right size again if a frame didn't fit. This only works
+            //randomly for paragraph bound frames otherwise (NotifyFlys).
             pUp->InvalidateSize();
         }
         if ( !bTst )
         {
-            //Unabhaengig von nChg
+            //Independent from nChg
             if ( pViewShell && aInva.HasArea() && pUp->GetUpper() )
                 pViewShell->InvalidateWindows( aInva );
         }
@@ -1469,7 +1461,7 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
             if ( GetNext() )
                 GetNext()->_InvalidatePos();
 
-            //Ggf. noch ein Repaint ausloesen.
+            //Trigger a repaint if necessary.
             const SvxGraphicPosition ePos = pUp->GetFmt()->GetBackground().GetGraphicPos();
             if ( ePos != GPOS_NONE && ePos != GPOS_TILED )
                 pViewShell->InvalidateWindows( pUp->Frm() );
@@ -1479,10 +1471,10 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                 if ( pUp->GetNext() )
                     pUp->GetNext()->InvalidatePos();
 
-                //Mies aber wahr: im Notify am ViewImp wird evtl. ein Calc
-                //auf die Seite und deren Lower gerufen. Die Werte sollten
-                //unverandert bleiben, weil der Aufrufer bereits fuer die
-                //Anpassung von Frm und Prt sorgen wird.
+                //Sad but true: during notify on ViewImp a Calc on the page and
+                //its Lower may be called. The values should not be changed
+                //because the caller takes care of the adjustment of Frm and
+                //Prt.
                 const long nOldFrmHeight = Frm().Height();
                 const long nOldPrtHeight = Prt().Height();
                 const sal_Bool bOldComplete = IsCompletePaint();
@@ -1564,13 +1556,13 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
         if ( !pFrm )
             return 0;
 
-        //Wenn ich keinen finde eruebrigt sich alles weitere.
+        //If not one is found, everything else is solved.
         nReal = (pFrm->Frm().*fnRect->fnGetHeight)();
         if( nReal > nDiff )
             nReal = nDiff;
         if( !bFtnPage )
         {
-            //Minimalgrenze beachten!
+            //Respect the minimal boundary!
             if( nReal )
             {
                 const SwTwips nMax = pBoss->GetVarSpace();
@@ -1582,9 +1574,8 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                 && ( pFrm->GetNext()->IsVertical() == IsVertical() )
                 )
             {
-                //Wenn der Body nicht genuegend her gibt, kann ich noch mal
-                //schauen ob es eine Fussnote gibt, falls ja kann dieser
-                //entsprechend viel gemopst werden.
+                //If the Body doesn't return enough, we look for a footnote, if
+                //there is one, we steal there accordingly.
                 const SwTwips nAddMax = (pFrm->GetNext()->Frm().*fnRect->
                                         fnGetHeight)();
                 nAdd = nDiff - nReal;
@@ -1634,11 +1625,12 @@ SwTwips SwFrm::AdjustNeighbourhood( SwTwips nDiff, sal_Bool bTst )
                     OSL_ENSURE( !pFly->IsFlyInCntFrm(), "FlyInCnt at Page?" );
                     const SwFmtVertOrient &rVert =
                                         pFly->GetFmt()->GetVertOrient();
-                   // Wann muss invalidiert werden?
-                   // Wenn ein Rahmen am SeitenTextBereich ausgerichtet ist,
-                   // muss bei Aenderung des Headers ein TOP, MIDDLE oder NONE,
-                   // bei Aenderung des Footers ein BOTTOM oder MIDDLE
-                   // ausgerichteter Rahmen seine Position neu berechnen.
+                    // When do we have to invalidate?
+                    // If a frame is aligned on a PageTextArea and the header
+                    // changes a TOP, MIDDLE or NONE aligned frame needs to
+                    // recalculate it's position; if the footer changes a BOTTOM
+                    // or MIDDLE aligned frame needs to recalculate it's
+                    // position.
                     if( ( rVert.GetRelationOrient() == text::RelOrientation::PRINT_AREA ||
                           rVert.GetRelationOrient() == text::RelOrientation::PAGE_PRINT_AREA )    
&&
                         ((IsHeaderFrm() && rVert.GetVertOrient()!=text::VertOrientation::BOTTOM) ||
@@ -1855,7 +1847,7 @@ SwTwips SwCntntFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 
     const ViewShell *pSh = getRootFrm()->GetCurrShell();
     const sal_Bool bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode();
-    const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body
+    const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse with Body
     if( !(GetUpper()->GetType() & nTmpType) && GetUpper()->HasFixSize() )
     {
         if ( !bTst )
@@ -1890,7 +1882,7 @@ SwTwips SwCntntFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 
     if ( !bTst )
     {
-        //Cntnts werden immer auf den gewuenschten Wert gebracht.
+        //Cntnts are always resized to the wished value.
         long nOld = (Frm().*fnRect->fnGetHeight)();
         (Frm().*fnRect->fnSetHeight)( nOld + nDist );
         //Badaa: 2008-04-18 * Support for Classical Mongolian Script (SCMS) joint with Jiayanmin
@@ -1909,7 +1901,7 @@ SwTwips SwCntntFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
         }
     }
 
-    //Upper nur growen wenn notwendig.
+    //Only grow Upper if necessary.
     if ( nReal < nDist )
     {
         if( GetUpper() )
@@ -1959,7 +1951,7 @@ SwTwips SwCntntFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
     SWRECTFN( this )
     OSL_ENSURE( nDist >= 0, "nDist < 0" );
     OSL_ENSURE( nDist <= (Frm().*fnRect->fnGetHeight)(),
-            "nDist > als aktuelle Grosse." );
+            "nDist > than current size." );
 
     if ( !bTst )
     {
@@ -2058,11 +2050,10 @@ SwTwips SwCntntFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo 
)
 
     if ( !bTst )
     {
-        //Die Position des naechsten Frm's veraendert sich auf jeden Fall.
+        //The position of the next Frm changes for sure.
         InvalidateNextPos();
 
-        //Wenn ich keinen Nachfolger habe, so muss ich mich eben selbst um
-        //die Retusche kuemmern.
+        //If I don't have a successor I have to do the retouch by myself.
         if ( !GetNext() )
             SetRetouche();
     }
@@ -2157,9 +2148,9 @@ void SwCntntFrm::_UpdateAttr( const SfxPoolItem* pOld, const SfxPoolItem* 
pNew,
     {
         case RES_FMT_CHG:
             rInvFlags = 0xFF;
-            /* kein break hier */
+            /* no break here */
 
-        case RES_PAGEDESC:                      //Attributaenderung (an/aus)
+        case RES_PAGEDESC:                      //attribute changes (on/off)
             if ( IsInDocBody() && !IsInTab() )
             {
                 rInvFlags |= 0x02;
@@ -2205,9 +2196,9 @@ void SwCntntFrm::_UpdateAttr( const SfxPoolItem* pOld, const SfxPoolItem* 
pNew,
                     // OD 2004-07-01 #i28701# - use new method <InvalidateObjs(..)>
                     GetIndNext()->InvalidateObjs( true );
                 }
-                Prepare( PREP_UL_SPACE );   //TxtFrm muss Zeilenabst. korrigieren.
+                Prepare( PREP_UL_SPACE );   //TxtFrm has to correct line spacing.
                 rInvFlags |= 0x80;
-                /* kein Break hier */
+                /* no break here */
             }
         case RES_LR_SPACE:
         case RES_BOX:
@@ -2365,7 +2356,7 @@ SwTwips SwLayoutFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 {
     const ViewShell *pSh = getRootFrm()->GetCurrShell();
     const sal_Bool bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode();
-    const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse mit Body
+    const sal_uInt16 nTmpType = bBrowse ? 0x2084: 0x2004; //Row+Cell, Browse with Body
     if( !(GetType() & nTmpType) && HasFixSize() )
         return 0;
 
@@ -2406,7 +2397,7 @@ SwTwips SwLayoutFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
     if ( nReal > 0 )
     {
         if ( GetUpper() )
-        {   // AdjustNeighbourhood jetzt auch in Spalten (aber nicht in Rahmen)
+        {   // AdjustNeighbourhood now only for the columns (but not in frames)
             sal_uInt8 nAdjust = GetUpper()->IsFtnBossFrm() ?
                 ((SwFtnBossFrm*)GetUpper())->NeighbourhoodAdjustment( this )
                 : NA_GROW_SHRINK;
@@ -2443,7 +2434,7 @@ SwTwips SwLayoutFrm::GrowFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
 
                 if ( IsFtnFrm() && (nGrow != nReal) && GetNext() )
                 {
-                    //Fussnoten koennen ihre Nachfolger verdraengen.
+                    //Footnotes can replace their successor.
                     SwTwips nSpace = bTst ? 0 : -nDist;
                     const SwFrm *pFrm = GetUpper()->Lower();
                     do
@@ -2578,7 +2569,7 @@ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
                    ((SwFtnBossFrm*)GetUpper())->NeighbourhoodAdjustment( this )
                    : NA_GROW_SHRINK;
 
-    // AdjustNeighbourhood auch in Spalten (aber nicht in Rahmen)
+    // AdjustNeighbourhood also in columns (but not in frames)
     if( NA_ONLY_ADJUST == nAdjust )
     {
         if ( IsPageBodyFrm() && !bBrowse )
@@ -2656,7 +2647,7 @@ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
             {
                 if( IsTabFrm() )
                     ((SwTabFrm*)this)->SetComplete();
-                if ( Lower() )  //Kann auch im Join stehen und leer sein!
+                if ( Lower() )  //Can also be in the Join an be empty!
                     InvalidateNextPos();
             }
         }
@@ -2682,9 +2673,8 @@ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool bInfo )
               0 != (pCnt = ((SwFtnFrm*)this)->GetRefFromAttr() ) )
         {
             if ( pCnt->IsFollow() )
-            {   // Wenn wir sowieso schon in einer anderen Spalte/Seite sitzen
-                // als der Frame mit der Referenz, dann brauchen wir nicht
-                // auch noch seinen Master zu invalidieren.
+            {   // If we are in an other column/page than the frame with the
+                // reference, we don't need to invalidate its master.
                 SwFrm *pTmp = pCnt->FindFtnBossFrm(sal_True) == FindFtnBossFrm(sal_True)
                               ?  pCnt->FindMaster()->GetFrm() : pCnt;
                 pTmp->Prepare( PREP_ADJUST_FRM );
@@ -2700,11 +2690,11 @@ SwTwips SwLayoutFrm::ShrinkFrm( SwTwips nDist, sal_Bool bTst, sal_Bool 
bInfo )
 |*
 |*  SwLayoutFrm::ChgLowersProp()
 |*
-|*  Beschreibung        Aendert die Grosse der direkt untergeordneten Frm's
-|*      die eine Fixe Groesse haben, proportional zur Groessenaenderung der
-|*      PrtArea des Frm's.
-|*      Die Variablen Frm's werden auch proportional angepasst; sie werden
-|*      sich schon wieder zurechtwachsen/-schrumpfen.
+|*  Description          Changes the size of the directly subsidiary Frm's
+|*      which have a fixed size, proportionally to the size change of the
+|*      PrtArea of the Frm's.
+|*      The variable Frm's are also proportionally adapted; they will grow/shrink
+|*      again oneself.
 |*
 |*************************************************************************/
 void SwLayoutFrm::ChgLowersProp( const Size& rOldSize )
@@ -3063,9 +3053,8 @@ void SwLayoutFrm::ChgLowersProp( const Size& rOldSize )
 
         if ( !pLowerFrm->GetNext() && pLowerFrm->IsRetoucheFrm() )
         {
-            //Wenn ein Wachstum stattgefunden hat, und die untergeordneten
-            //zur Retouche faehig sind (derzeit Tab, Section und Cntnt), so
-            //trigger ich sie an.
+            //If a growth took place and the subordinate elements can retouch
+            //oneself (currently Tabs, Sections and Cntnt) we trigger it.
             if ( rOldSize.Height() < Prt().SSize().Height() ||
                  rOldSize.Width() < Prt().SSize().Width() )
                 pLowerFrm->SetRetouche();
@@ -3101,8 +3090,8 @@ void SwLayoutFrm::ChgLowersProp( const Size& rOldSize )
 |*
 |*  SwLayoutFrm::Format()
 |*
-|*  Beschreibung:       "Formatiert" den Frame; Frm und PrtArea.
-|*                      Die Fixsize wird hier nicht eingestellt.
+|*  Description:        "Formats" the Frame; Frm and PrtArea.
+|*                      The Fixsize is not set here.
 |*
 |*************************************************************************/
 void SwLayoutFrm::Format( const SwBorderAttrs *pAttrs )
@@ -3137,14 +3126,14 @@ void SwLayoutFrm::Format( const SwBorderAttrs *pAttrs )
             do
             {   bValidSize = sal_True;
 
-                //Die Groesse in der VarSize wird durch den Inhalt plus den
-                //Raendern bestimmt.
+                //The size in VarSize is calculated using the content plus the
+                //frames.
                 SwTwips nRemaining = 0;
                 SwFrm *pFrm = Lower();
                 while ( pFrm )
                 {   nRemaining += (pFrm->Frm().*fnRect->fnGetHeight)();
                     if( pFrm->IsTxtFrm() && ((SwTxtFrm*)pFrm)->IsUndersized() )
-                    // Dieser TxtFrm waere gern ein bisschen groesser
+                    // This TxtFrm would like to be a bit bigger
                         nRemaining += ((SwTxtFrm*)pFrm)->GetParHeight()
                                       - (pFrm->Prt().*fnRect->fnGetHeight)();
                     else if( pFrm->IsSctFrm() && ((SwSectionFrm*)pFrm)->IsUndersized() )
@@ -3162,10 +3151,10 @@ void SwLayoutFrm::Format( const SwBorderAttrs *pAttrs )
                         Grow( nDiff );
                     else
                         Shrink( -nDiff );
-                    //Schnell auf dem kurzen Dienstweg die Position updaten.
+                    //Updates the positions using the fast channel.
                     MakePos();
                 }
-                //Unterkante des Uppers nicht ueberschreiten.
+                //Don't exceed the bottom edge of the Upper.
                 if ( GetUpper() && (Frm().*fnRect->fnGetHeight)() )
                 {
                     const SwTwips nLimit = (GetUpper()->*fnRect->fnGetPrtBottom)();
@@ -3313,7 +3302,7 @@ long MA_FASTCALL lcl_CalcMinColDiff( SwLayoutFrm *pLayFrm )
                     nDiff = nDiff ? Min( nDiff, nTmp ) : nTmp;
             }
         }
-        //Leere Spalten ueberspringen!
+        //Skip empty columns!
         pCol = (SwLayoutFrm*)pCol->GetNext();
         while ( pCol && 0 == (pFrm = pCol->Lower()) )
             pCol = (SwLayoutFrm*)pCol->GetNext();
@@ -3357,20 +3346,16 @@ sal_Bool lcl_IsFlyHeightClipped( SwLayoutFrm *pLay )
 void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                                    const SwTwips nBorder, const SwTwips nMinHeight )
 {
-    //Wenn Spalten im Spiel sind, so wird die Groesse an der
-    //letzten Spalte ausgerichtet.
-    //1. Inhalt formatieren.
-    //2. Hoehe der letzten Spalte ermitteln, wenn diese zu
-    //   zu gross ist muss der Fly wachsen.
-    //   Der Betrag um den der Fly waechst ist aber nicht etwa
-    //   der Betrag des Ueberhangs, denn wir muessen davon
-    //   ausgehen, dass etwas Masse zurueckfliesst und so
-    //   zusaetzlicher Platz geschaffen wird.
-    //   Im Ersten Ansatz ist der Betrag um den gewachsen wird
-    //   der Ueberhang geteilt durch die Spaltenanzahl oder
-    //   der Ueberhang selbst wenn er kleiner als die Spalten-
-    //   anzahl ist.
-    //3. Weiter mit 1. bis zur Stabilitaet.
+    //If there are columns involved, the size is adjusted using the last column.
+    //1. Format content.
+    //2. Calculate height of the last column if it's too big, the Fly has to
+    //   grow. The amount by which the Fly grows is not the amount of the
+    //   overhang because we have to act on the assumption that some bulk floats
+    //   back which will generate some more space.
+    //   In the first paragraph the amount which we grow by equals the overhang
+    //   divided by the amount of columns or the overhang itself if it's smaller
+    //   than the amount of columns.
+    //3. Go back to 1. until everything is stable.
 
     const SwFmtCol &rCol = rAttrs.GetAttrSet().GetCol();
     const sal_uInt16 nNumCols = rCol.GetNumCols();
@@ -3380,34 +3365,33 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
     ViewShell *pSh = getRootFrm()->GetCurrShell();
     SwViewImp *pImp = pSh ? pSh->Imp() : 0;
     {
-        // Zugrunde liegender Algorithmus
-        // Es wird versucht, eine optimale Hoehe fuer die Spalten zu finden.
-        // nMinimum beginnt mit der uebergebenen Mindesthoehe und wird dann als
-        // Maximum der Hoehen gepflegt, bei denen noch Spalteninhalt aus einer
-        // Spalte herausragt.
-        // nMaximum beginnt bei LONG_MAX und wird als Minimum der Hoehen gepflegt,
-        // bei denen der Inhalt gepasst hat.
-        // Bei spaltigen Bereichen beginnt nMaximum bei dem maximalen Wert, den
-        // die Umgebung vorgibt, dies kann natuerlich ein Wert sein, bei dem noch
-        // Inhalt heraushaengt.
-        // Es werden die Spalten formatiert, wenn Inhalt heraushaengt, wird nMinimum
-        // ggf. angepasst, dann wird gewachsen, mindestens um nMinDiff, aber nicht ueber
-        // ein groesseres nMaximum hinaus. Wenn kein Inhalt heraushaengt, sondern
-        // noch Luft in einer Spalte ist, schrumpfen wir entsprechend, mindestens um
-        // nMinDiff, aber nicht unter das nMinimum.
-        // Abgebrochen wird, wenn kein Inhalt mehr heraushaengt und das Minimum sich auf
-        // weniger als ein MinDiff dem Maximum angenaehert hat oder das von der
-        // Umgebung vorgegebene Maximum erreicht ist und trotzdem Inhalt heraus-
-        // haengt.
-
-        // Kritik an der Implementation
-        // 1. Es kann theoretisch Situationen geben, in denen der Inhalt in einer geringeren
-        // Hoehe passt und in einer groesseren Hoehe nicht passt. Damit der Code robust
-        // gegen solche Verhaeltnisse ist, sind ein paar Abfragen bezgl. Minimum und Maximum
-        // drin, die wahrscheinlich niemals zuschlagen koennen.
-        // 2. Es wird fuer das Schrumpfen das gleiche nMinDiff benutzt wie fuer das Wachstum,
-        // das nMinDiff ist allerdings mehr oder weniger die kleinste erste Zeilenhoehe und
-        // als Mindestwert fuer das Schrumpfen nicht unbedingt optimal.
+        // Underlying algorithm
+        // We try to find the optimal height for the column.
+        // nMinimum starts with the passed minimum height and is then remembered
+        // as the maximum height on which column content still juts out of a 
+        // column.
+        // nMaximum starts with LONG_MAX and is then remembered as the minimum
+        // width on which the content fitted.
+        // In column based sections nMaximum starts at the maximum value which
+        // the surrounding defines, this can certainly be a value on which
+        // content still juts out.
+        // If content still juts out, the columns are formated and nMinimum is
+        // adjusted accordingly, then the growth is done, at least by uMinDiff
+        // but not over a certain nMaximum. If no content juts out but there is
+        // still some space left in the column, shrinking is done accordingly, at
+        // least by nMindIff but not below the nMinimum.
+        // Cancel as soon as no content juts out and the difference from minimum
+        // to maximum is less than MinDiff or the maximum which was defined by
+        // the surrounding is reached even if some content still juts out.
+
+        // Criticism of this implementation
+        // 1. Theoretically situations are possible in which the content fits in
+        // a lower height but not in a higher height. To ensure that the code
+        // handles such situations the code contains a few checks concerning
+        // minimum and maximum which probably are never triggered.
+        // 2. We use the same nMinDiff for shrinking and growing, but nMinDiff
+        // is more or less the smallest first line height and doesn't fit ideal
+        // as minimum value.
 
         long nMinimum = nMinHeight;
         long nMaximum;
@@ -3480,15 +3464,14 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
         }
         do
         {
-            //Kann eine Weile dauern, deshalb hier auf Waitcrsr pruefen.
+            //Could take a while therefore check for Waitcrsr here.
             if ( pImp )
                 pImp->CheckWaitCrsr();
 
             bValidSize = sal_True;
-            //Erstmal die Spalten formatieren, das entlastet den
-            //Stack ein wenig.
-            //Bei der Gelegenheit stellen wir auch gleich mal die
-            //Breiten und Hoehen der Spalten ein (so sie denn falsch sind).
+            //First format the column as this will relieve the stack a bit.
+            //Also set width and height of the column (if they are wrong)
+            //while we are at it.
             SwLayoutFrm *pCol = (SwLayoutFrm*)Lower();
 
             // #i27399#
@@ -3499,7 +3482,7 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
             for ( sal_uInt16 i = 0; i < nNumCols; ++i )
             {
                 pCol->Calc();
-                // ColumnFrms besitzen jetzt einen BodyFrm, der auch kalkuliert werden will
+                // ColumnFrms have a BodyFrm now, which need to be calculated too
                 pCol->Lower()->Calc();
                 if( pCol->Lower()->GetNext() )
                     pCol->Lower()->GetNext()->Calc();  // SwFtnCont
@@ -3509,8 +3492,8 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
             ::CalcCntnt( this );
 
             pCol = (SwLayoutFrm*)Lower();
-            OSL_ENSURE( pCol && pCol->GetNext(), ":-( Spalten auf Urlaub?");
-            // bMinDiff wird gesetzt, wenn es keine leere Spalte gibt
+            OSL_ENSURE( pCol && pCol->GetNext(), ":-( column making holidays?");
+            // set bMinDiff if no empty columns exist
             sal_Bool bMinDiff = sal_True;
             // OD 28.03.2003 #108446# - check for all column content and all columns
             while ( bMinDiff && pCol )
@@ -3524,7 +3507,7 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
             SwTwips nDiff = 0;
             SwTwips nMaxFree = 0;
             SwTwips nAllFree = LONG_MAX;
-            // bFoundLower wird gesetzt, wenn es mind. eine nichtleere Spalte gibt
+            // set bFoundLower if there is at least one non-empty column
             sal_Bool bFoundLower = sal_False;
             while( pCol )
             {
@@ -3567,59 +3550,59 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
             if ( bFoundLower || ( IsSctFrm() && ((SwSectionFrm*)this)->HasFollow() ) )
             {
                 SwTwips nMinDiff = ::lcl_CalcMinColDiff( this );
-                // Hier wird entschieden, ob wir wachsen muessen, naemlich wenn
-                // ein Spalteninhalt (nDiff) oder ein Fly herausragt.
-                // Bei spaltigen Bereichen wird beruecksichtigt, dass mit dem
-                // Besitz eines nichtleeren Follows die Groesse festgelegt ist.
+                // Here we decide if growing is needed - this is the case, if
+                // column content (nDiff) or a Fly juts over.
+                // In sections with columns we take into account to set the size
+                // when having a non-empty Follow.
                 if ( nDiff || ::lcl_IsFlyHeightClipped( this ) ||
                      ( IsSctFrm() && ((SwSectionFrm*)this)->CalcMinDiff( nMinDiff ) ) )
                 {
                     long nPrtHeight = (Prt().*fnRect->fnGetHeight)();
-                    // Das Minimum darf nicht kleiner sein als unsere PrtHeight,
-                    // solange noch etwas herausragt.
+                    // The minimum must not be smaller than our PrtHeight as
+                    // long as something juts over.
                     if( nMinimum < nPrtHeight )
                         nMinimum = nPrtHeight;
-                    // Es muss sichergestellt sein, dass das Maximum nicht kleiner
-                    // als die PrtHeight ist, wenn noch etwas herausragt
+                    // The maximum must not be smaller than PrtHeight if
+                    // something still juts over.
                     if( nMaximum < nPrtHeight )
-                        nMaximum = nPrtHeight;  // Robust, aber kann das ueberhaupt eintreten?
-                    if( !nDiff ) // wenn nur Flys herausragen, wachsen wir um nMinDiff
+                        nMaximum = nPrtHeight;  // Robust, but will this ever happen?
+                    if( !nDiff ) // If only Flys jut over, we grow by nMinDiff
                         nDiff = nMinDiff;
-                    // Wenn wir um mehr als nMinDiff wachsen wollen, wird dies auf die
-                    // Spalten verteilt
+                    // If we should grow more than by nMindDiff we split it over
+                    // the columns
                     if ( Abs(nDiff - nMinDiff) > nNumCols && nDiff > (long)nNumCols )
                         nDiff /= nNumCols;
 
                     if ( bMinDiff )
-                    {   // Wenn es keinen leeren Spalten gibt, wollen wir mind. um nMinDiff
-                        // wachsen. Sonderfall: Wenn wir kleiner als die minimale Frmhoehe
-                        // sind und die PrtHeight kleiner als nMinDiff ist, wachsen wir so,
-                        // dass die PrtHeight hinterher genau nMinDiff ist.
+                    {   // If no empty column exists, we want to grow at least
+                        // by nMinDiff. Special case: If we are smaller than the
+                        // minimal FrmHeight and PrtHeight is smaller than
+                        // nMindiff we grow in a way that PrtHeight is exactly 
+                        // nMinDiff afterwards.
                         long nFrmHeight = (Frm().*fnRect->fnGetHeight)();
                         if ( nFrmHeight > nMinHeight || nPrtHeight >= nMinDiff )
                             nDiff = Max( nDiff, nMinDiff );
                         else if( nDiff < nMinDiff )
                             nDiff = nMinDiff - nPrtHeight + 1;
                     }
-                    // nMaximum ist eine Groesse, in der der Inhalt gepasst hat,
-                    // oder der von der Umgebung vorgegebene Wert, deshalb
-                    // brauchen wir nicht ueber diesen Wrt hinauswachsen.
+                    // nMaximum has a size which fits the content or the
+                    // requested value from the surrounding therefore we don't
+                    // need to exceed this value.
                     if( nDiff + nPrtHeight > nMaximum )
                         nDiff = nMaximum - nPrtHeight;
                 }
-                else if( nMaximum > nMinimum ) // Wir passen, haben wir auch noch Spielraum?
+                else if( nMaximum > nMinimum ) // We fit, do we still have some margin?
                 {
                     long nPrtHeight = (Prt().*fnRect->fnGetHeight)();
                     if ( nMaximum < nPrtHeight )
-                        nDiff = nMaximum - nPrtHeight; // wir sind ueber eine funktionierende
-                        // Hoehe hinausgewachsen und schrumpfen wieder auf diese zurueck,
-                        // aber kann das ueberhaupt eintreten?
+                        nDiff = nMaximum - nPrtHeight; // We grew over a working
+                        // height and shrink back it, but will this ever happen?
                     else
-                    {   // Wir haben ein neues Maximum, eine Groesse, fuer die der Inhalt passt.
+                    {   // We have a new maximum, a size which fits for the content.
                         nMaximum = nPrtHeight;
-                        // Wenn der Freiraum in den Spalten groesser ist als nMinDiff und wir
-                        // nicht dadurch wieder unter das Minimum rutschen, wollen wir ein wenig
-                        // Luft herauslassen.
+                        // If the margin in the column is bigger than nMinDiff
+                        // and we therefore drop under the minimum, we deflate
+                        // a bit.
                         if ( !bNoBalance &&
                              // #i23129# - <nMinDiff> can be
                              // big, because of an object at the beginning of
@@ -3629,10 +3612,10 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                              ( !nAllFree ||
                                nMinimum < nPrtHeight - nMinDiff ) )
                         {
-                            nMaxFree /= nNumCols; // auf die Spalten verteilen
-                            nDiff = nMaxFree < nMinDiff ? -nMinDiff : -nMaxFree; // mind. nMinDiff
-                            if( nPrtHeight + nDiff <= nMinimum ) // Unter das Minimum?
-                                nDiff = ( nMinimum - nMaximum ) / 2; // dann lieber die Mitte
+                            nMaxFree /= nNumCols; // disperse over the columns
+                            nDiff = nMaxFree < nMinDiff ? -nMinDiff : -nMaxFree; // min nMinDiff
+                            if( nPrtHeight + nDiff <= nMinimum ) // below the minimum?
+                                nDiff = ( nMinimum - nMaximum ) / 2; // Take the center
                         }
                         else if( nAllFree )
                         {
@@ -3642,7 +3625,7 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                         }
                     }
                 }
-                if( nDiff ) // jetzt wird geschrumpft oder gewachsen..
+                if( nDiff ) // now we shrink or grow...
                 {
                     Size aOldSz( Prt().SSize() );
                     long nTop = (this->*fnRect->fnGetTopMargin)();
@@ -3675,10 +3658,9 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                             }
                         }
                     }
-                    //Es muss geeignet invalidiert werden, damit
-                    //sich die Frms huebsch ausbalancieren
-                    //- Der jeweils erste ab der zweiten Spalte bekommt
-                    //  ein InvalidatePos();
+                    //Invalidate suitable to nicely balance the Frms.
+                    //- Every first one after the second column gets a 
+                    //  InvalidatePos();
                     pCol = (SwLayoutFrm*)Lower()->GetNext();
                     while ( pCol )
                     {
@@ -3689,9 +3671,8 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
                     }
                     if( IsSctFrm() && ((SwSectionFrm*)this)->HasFollow() )
                     {
-                        // Wenn wir einen Follow erzeugt haben, muessen wir
-                        // seinem Inhalt die Chance geben, im CalcCntnt
-                        // zurueckzufliessen
+                        // If we created a Follow, we need to give its content
+                        // the opportunity to flow back inside the CalcCntnt
                         SwCntntFrm* pTmpCntnt =
                             ((SwSectionFrm*)this)->GetFollow()->ContainsCntnt();
                         if( pTmpCntnt )
@@ -3728,9 +3709,9 @@ void SwLayoutFrm::FormatWidthCols( const SwBorderAttrs &rAttrs,
 SwCntntFrm* lcl_InvalidateSection( SwFrm *pCnt, sal_uInt8 nInv )
 {
     SwSectionFrm* pSect = pCnt->FindSctFrm();
-    // Wenn unser CntntFrm in einer Tabelle oder Fussnote steht, sind nur
-    // Bereiche gemeint, die ebenfalls innerhalb liegen.
-    // Ausnahme: Wenn direkt eine Tabelle uebergeben wird.
+    // If our CntntFrm is placed inside a table or a footnote, only sections
+    // which are also placed inside are meant.
+    // Exception: If a table is directly passed.
     if( ( ( pCnt->IsInTab() && !pSect->IsInTab() ) ||
         ( pCnt->IsInFtn() && !pSect->IsInFtn() ) ) && !pCnt->IsTabFrm() )
         return NULL;
@@ -3773,7 +3754,7 @@ void lcl_InvalidateCntnt( SwCntntFrm *pCnt, sal_uInt8 nInv )
         {
             if( pCnt->IsInSct() )
             {
-                // Siehe oben bei Tabellen
+                // See above at tables
                 if( !pLastSctCnt )
                     pLastSctCnt = lcl_InvalidateSection( pCnt, nInv );
                 if( pLastSctCnt == pCnt )
@@ -3788,14 +3769,14 @@ void lcl_InvalidateCntnt( SwCntntFrm *pCnt, sal_uInt8 nInv )
         {
             if( pCnt->IsInTab() )
             {
-                // Um nicht fuer jeden CntntFrm einer Tabelle das FindTabFrm() zu rufen
-                // und wieder die gleiche Tabelle zu invalidieren, merken wir uns den letzten
-                // CntntFrm der Tabelle und reagieren erst wieder auf IsInTab(), wenn wir
-                // an diesem vorbei sind.
-                // Beim Eintritt in die Tabelle wird der LastSctCnt auf Null gesetzt,
-                // damit Bereiche im Innern der Tabelle richtig invalidiert werden.
-                // Sollte die Tabelle selbst in einem Bereich stehen, so wird an
-                // diesem die Invalidierung bis zu dreimal durchgefuehrt, das ist vertretbar.
+                // To not call FindTabFrm() for each CntntFrm of a table and
+                // then invalidate the table, we remember the last CntntFrm of
+                // the table and stop to react to IsInTab() until we passed it
+                // up.
+                // When entering the table, LastSctCnt is set to null, so areas
+                // inside the table are correctly invalidated.
+                // If the table itself is placed in such an area the
+                // invalidation is done three times, which is acceptable.
                 if( !pLastTabCnt )
                 {
                     pLastTabCnt = lcl_InvalidateTable( pCnt->FindTabFrm(), nInv );
@@ -3848,7 +3829,7 @@ void lcl_InvalidateAllCntnt( SwCntntFrm *pCnt, sal_uInt8 nInv )
 
 void SwRootFrm::InvalidateAllCntnt( sal_uInt8 nInv )
 {
-    // Erst werden alle Seitengebundenen FlyFrms abgearbeitet.
+    // First process all page bound FlyFrms.
     SwPageFrm *pPage = (SwPageFrm*)Lower();
     while( pPage )
     {
@@ -3857,7 +3838,7 @@ void SwRootFrm::InvalidateAllCntnt( sal_uInt8 nInv )
         pPage->InvalidateFlyInCnt();
         pPage->InvalidateLayout();
         pPage->InvalidateCntnt();
-        pPage->InvalidatePage( pPage ); //Damit ggf. auch der Turbo verschwindet
+        pPage->InvalidatePage( pPage ); // So even the Turbo disappears if applicable
 
         if ( pPage->GetSortedObjs() )
         {
@@ -3879,7 +3860,7 @@ void SwRootFrm::InvalidateAllCntnt( sal_uInt8 nInv )
         pPage = (SwPageFrm*)(pPage->GetNext());
     }
 
-    //Hier den gesamten Dokumentinhalt und die zeichengebundenen Flys.
+    //Invalidate the whole document content and the drawn Flys here.
     ::lcl_InvalidateCntnt( ContainsCntnt(), nInv );
 
     if( nInv & INV_PRTAREA )
-- 
1.7.9.1


From 1531f910e0c99ad708a68609cc68aac935f2337a Mon Sep 17 00:00:00 2001
From: Stefan Heinemann <stefan.heinemann@codedump.ch>
Date: Thu, 16 Feb 2012 12:01:24 +0100
Subject: [PATCH 21/22] Translated German comments to English

---
 sw/source/core/layout/sectfrm.cxx |  426 ++++++++++++++++++-------------------
 1 files changed, 209 insertions(+), 217 deletions(-)

diff --git a/sw/source/core/layout/sectfrm.cxx b/sw/source/core/layout/sectfrm.cxx
index 6a0e3d9..b76ec18 100644
--- a/sw/source/core/layout/sectfrm.cxx
+++ b/sw/source/core/layout/sectfrm.cxx
@@ -161,9 +161,10 @@ SwSectionFrm::~SwSectionFrm()
             {
                 PROTOCOL( this, PROT_SECTION, ACT_DEL_FOLLOW, pMaster )
                 pMaster->SetFollow( GetFollow() );
-                // Ein Master greift sich immer den Platz bis zur Unterkante seines
-                // Uppers. Wenn er keinen Follow mehr hat, kann er diesen ggf. wieder
-                // freigeben, deshalb wird die Size des Masters invalidiert.
+                // A Master always grabs the space until the lower edge of his
+                // Upper. If he doesn't have a Follow anymore, he can
+                // release it, which is why the Size of the Master is 
+                // invalidated.
                 if( !GetFollow() )
                     pMaster->InvalidateSize();
             }
@@ -213,9 +214,10 @@ void SwSectionFrm::DelEmpty( sal_Bool bRemove )
     {
         SwSectionFrm *pMaster = FindMaster();
         pMaster->SetFollow( GetFollow() );
-        // Ein Master greift sich immer den Platz bis zur Unterkante seines
-        // Uppers. Wenn er keinen Follow mehr hat, kann er diesen ggf. wieder
-        // freigeben, deshalb wird die Size des Masters invalidiert.
+        // A Master always grabs the space until the lower edge of his
+        // Upper. If he doesn't have a Follow anymore, he can
+        // release it, which is why the Size of the Master is 
+        // invalidated.
         if( !GetFollow() && !pMaster->IsColLocked() )
             pMaster->InvalidateSize();
         bIsFollow = sal_False;
@@ -226,18 +228,18 @@ void SwSectionFrm::DelEmpty( sal_Bool bRemove )
     if( pUp )
     {
         Frm().Height( 0 );
-        // Wenn wir sowieso sofort zerstoert werden, brauchen/duerfen wir
-        // uns gar nicht erst in die Liste eintragen
+        // If we are destroyed immediately anyway, we don't need
+        // to put us into the list
         if( bRemove )
-        {   // Wenn wir bereits halbtot waren vor diesem DelEmpty, so
-            // stehen wir vermutlich auch in der Liste und muessen uns
-            // dort austragen
+        {   // If we already were half dead before this DelEmpty,
+            // we are likely in the list and have to remove us from
+            // it
             if( !pSection && getRootFrm() )
                 getRootFrm()->RemoveFromList( this );
         }
         else if( getRootFrm() )
             getRootFrm()->InsertEmptySct( this );   //swmod 071108//swmod 071225
-        pSection = NULL; // damit ist allerdings eine Reanimierung quasi ausgeschlossen
+        pSection = NULL;  // like this a reanimation is virtually impossible though
     }
 }
 
@@ -264,8 +266,8 @@ void SwSectionFrm::_Cut( sal_Bool bRemove )
     while( pFrm && pFrm->IsSctFrm() && !((SwSectionFrm*)pFrm)->GetSection() )
         pFrm = pFrm->GetNext();
     if( pFrm )
-    {   //Der alte Nachfolger hat evtl. einen Abstand zum Vorgaenger
-        //berechnet der ist jetzt wo er der erste wird obsolete
+    {   // The former successor might have calculated a gap to the predecessor
+        // which is now obsolete since he becomes the first
         pFrm->_InvalidatePrt();
         pFrm->_InvalidatePos();
         if( pFrm->IsSctFrm() )
@@ -280,23 +282,23 @@ void SwSectionFrm::_Cut( sal_Bool bRemove )
     else
     {
         InvalidateNextPos();
-        //Einer muss die Retusche uebernehmen: Vorgaenger oder Upper
+        // Someone has to take over the retouching: successor or Upper
         if ( 0 != (pFrm = GetPrev()) )
         {   pFrm->SetRetouche();
             pFrm->Prepare( PREP_WIDOWS_ORPHANS );
             if ( pFrm->IsCntntFrm() )
                 pFrm->InvalidatePage( pPage );
         }
-        //Wenn ich der einzige FlowFrm in meinem Upper bin (war), so muss
-        //er die Retouche uebernehmen.
-        //Ausserdem kann eine Leerseite entstanden sein.
+        // If I am (was) the only FlowFrm in my Upper, then he has to take over
+        // the retouching.
+        // Furthermore a blank page could have emerged
         else
         {   SwRootFrm *pRoot = (SwRootFrm*)pPage->GetUpper();
             pRoot->SetSuperfluous();
             GetUpper()->SetCompletePaint();
         }
     }
-    //Erst removen, dann Upper Shrinken.
+    // First remove, then shrink Upper
     SwLayoutFrm *pUp = GetUpper();
     if( bRemove )
     {
@@ -344,7 +346,7 @@ void SwSectionFrm::Paste( SwFrm* pParent, SwFrm* pSibling )
 
     PROTOCOL( this, PROT_PASTE, 0, GetUpper() )
 
-    //In den Baum einhaengen.
+    // Add to the tree
     SwSectionFrm* pSect = pParent->FindSctFrm();
     // #156927#
     // Assure that parent is not inside a table frame, which is inside the found section frame.
@@ -361,20 +363,20 @@ void SwSectionFrm::Paste( SwFrm* pParent, SwFrm* pSibling )
     SWRECTFN( pParent )
     if( pSect && HasToBreak( pSect ) )
     {
-        if( pParent->IsColBodyFrm() ) // handelt es sich um einen spaltigen Bereich
+        if( pParent->IsColBodyFrm() ) // dealing with a single-column area
         {
-            // Falls wir zufaellig am Ende einer Spalte stehen, muss pSibling
-            // auf den ersten Frame der naechsten Spalte zeigen, damit
-            // der Inhalt der naechsten Spalte von InsertGroup richtig in den
-            // neu angelegten pSect umgehaengt wird.
+            // If we are coincidentally at the end of a column, pSibling
+            // has to point to the first frame of the next column in order
+            // that the content of the next column is moved correctly to the 
+            // newly created pSect by the InsertGroup
             SwColumnFrm *pCol = (SwColumnFrm*)pParent->GetUpper();
             while( !pSibling && 0 != ( pCol = (SwColumnFrm*)pCol->GetNext() ) )
                 pSibling = ((SwLayoutFrm*)((SwColumnFrm*)pCol)->Lower())->Lower();
             if( pSibling )
             {
-                // Schlimmer noch: alle folgenden Spalteninhalte muessen
-                // an die pSibling-Kette angehaengt werden, damit sie
-                // mitgenommen werden.
+                // Even worse: every following column content has to
+                // be attached to the pSibling-chain in order that they will
+                // be taken along
                 SwFrm *pTmp = pSibling;
                 while ( 0 != ( pCol = (SwColumnFrm*)pCol->GetNext() ) )
                 {
@@ -387,8 +389,8 @@ void SwSectionFrm::Paste( SwFrm* pParent, SwFrm* pSibling )
         }
         pParent = pSect;
         pSect = new SwSectionFrm( *((SwSectionFrm*)pParent)->GetSection(), pParent );
-        // Wenn pParent in zwei Teile zerlegt wird, so muss sein Follow am
-        // neuen, zweiten Teil angebracht werden.
+        // if pParent is decomposed into two parts, its Follow has to be attached
+        // to the new second part
         pSect->SetFollow( ((SwSectionFrm*)pParent)->GetFollow() );
         ((SwSectionFrm*)pParent)->SetFollow( NULL );
         if( pSect->GetFollow() )
@@ -438,10 +440,10 @@ void SwSectionFrm::Paste( SwFrm* pParent, SwFrm* pSibling )
 |*
 |*  SwSectionFrm::HasToBreak()
 |*
-|*  Hier wird entschieden, ob der this-SectionFrm den uebergebenen
-|*  (Section)Frm aufbrechen soll oder nicht.
-|*  Zunaechst werden uebergeordnete Bereiche immer aufgebrochen,
-|*  spaeter koennte man es einstellbar machen.
+|*  Here it's decided whether the this-SectionFrm should break up
+|*  the passed (Section)frm.
+|*  At first, all superior sections are broken up. Later on that could
+|*  be made adjustable.
 |*
 |*************************************************************************/
 
@@ -469,10 +471,9 @@ sal_Bool SwSectionFrm::HasToBreak( const SwFrm* pFrm ) const
 |*
 |*  SwSectionFrm::MergeNext()
 |*
-|*  Verschmilzt zwei SectionFrms, falls es sich um den
-|*  gleichen Bereich handelt.
-|*  Notwendig kann dies sein, wenn ein (Unter-)Bereich geloescht wird, der
-|*  einen anderen in zwei Teile zerlegt hatte.
+|*  Merges two SectionFrms, in case it's about the same section.
+|*  This can be necessary when a (sub)section is deleted that had
+|*  divided another one into two parts
 |*
 |*************************************************************************/
 
@@ -492,7 +493,7 @@ void SwSectionFrm::MergeNext( SwSectionFrm* pNxt )
                 while( pLast->GetNext() )
                     pLast = pLast->GetNext();
                 if( pLast->IsColumnFrm() )
-                {   // Spalten jetzt mit BodyFrm
+                {   // Columns now with BodyFrm
                     pLay = (SwLayoutFrm*)((SwLayoutFrm*)pLast)->Lower();
                     pLast = pLay->Lower();
                     if( pLast )
@@ -515,11 +516,10 @@ void SwSectionFrm::MergeNext( SwSectionFrm* pNxt )
 |*
 |*  SwSectionFrm::SplitSect()
 |*
-|*  Zerteilt einen SectionFrm in zwei Teile, der zweite Teil beginnt mit dem
-|*  uebergebenen Frame.
-|*  Benoetigt wird dies beim Einfuegen eines inneren Bereichs, weil innerhalb
-|*  von Rahmen oder Tabellenzellen das MoveFwd nicht den erwuenschten Effekt
-|*  haben kann.
+|*  Divides a SectionFrm into two parts. The second one starts with the
+|*  passed frame.
+|*  This is required when inserting an inner section, because the MoveFwd
+|*  cannot have the desired effect within a frame or a table cell.
 |*
 |*************************************************************************/
 
@@ -532,11 +532,11 @@ sal_Bool SwSectionFrm::SplitSect( SwFrm* pFrm, sal_Bool bApres )
     SwSectionFrm* pSect = pOther->FindSctFrm();
     if( pSect != this )
         return sal_False;
-    // Den Inhalt zur Seite stellen
+    // Put the content aside
     SwFrm* pSav = ::SaveCntnt( this, bApres ? pOther : pFrm );
     OSL_ENSURE( pSav, "SplitSect: What's on?" );
-    if( pSav ) // Robust
-    {   // Einen neuen SctFrm anlegen, nicht als Follow/Master
+    if( pSav ) // robust
+    {   // Create a new SctFrm, not as as Follower/master
         SwSectionFrm* pNew = new SwSectionFrm( *pSect->GetSection(), pSect );
         pNew->InsertBehind( pSect->GetUpper(), pSect );
         pNew->Init();
@@ -568,15 +568,15 @@ sal_Bool SwSectionFrm::SplitSect( SwFrm* pFrm, sal_Bool bApres )
 |*
 |*  SwSectionFrm::MoveCntntAndDelete()
 |*
-|*  MoveCntnt wird zur Zerstoerung eines SectionFrms wg. Aufhebung oder
-|*  Verstecken des Bereichs gerufen, um den Inhalt umzuhaengen.
-|*  Wenn der SectionFrm keinen anderen aufbrach, so wird der Inhalt in
-|*  den Upper bewegt. Anderfalls wird der Inhalt in den anderen SectionFrm
-|*  umgehaengt, dieser muss ggf. gemergt werden.
-|*
+|*  MoveCntnt is called for the destroying of a SectionFrms because of
+|*  the cancellation or concealment of a section, to add the content.
+|*  If the SectionFrm hasn't broken up another one, then the content
+|*  is moved to the Upper. Otherwise the content is moved to another
+|*  SectionFrm, which has to be merged.
+|* 
 |*************************************************************************/
-// Wenn ein mehrspaltiger Bereich aufgehoben wird, muessen die ContentFrms
-// invalidiert werden
+// If a multi-column section is cancelled, the ContentFrms have to be
+// invalidated
 
 void lcl_InvalidateInfFlags( SwFrm* pFrm, sal_Bool bInva )
 {
@@ -662,16 +662,15 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
     if( pDel->IsInTab() && pParent )
     {
         SwTabFrm *pTab = pDel->FindTabFrm();
-        // Wenn wir innerhalb einer Tabelle liegen, koennen wir nur Bereiche
-        // aufgebrochen haben, die ebenfalls innerhalb liegen, nicht etwa
-        // einen Bereich, der die gesamte Tabelle umfasst.
+        // If we are within a table, we can only have broken up sections that
+        // are inside as well, but not a section that enfolds the whole table.
         if( pTab->IsInSct() && pParent == pTab->FindSctFrm()->GetFmt() )
             pParent = NULL;
     }
-    // Wenn unser Format einen Parent besitzt, so haben wir vermutlich
-    // einen anderen SectionFrm aufgebrochen, dies muss geprueft werden,
-    // dazu besorgen wir uns zunaechst den vorhergehende und den nach-
-    // folgenden CntntFrm, mal sehen, ob diese in SectionFrms liegen.
+    // If our Format has a parent, we have probably broken up another 
+    // SectionFrm, which has to be checked. To do so we first acquire the
+    // succeeding and the preceding CntntFrm, let's see if they
+    // lay in the SectionFrms.
     // OD 27.03.2003 #i12711# - check, if previous and next section belonging
     // together and can be joined, *not* only if deleted section contains content.
     if ( pParent )
@@ -687,7 +686,7 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
         pPrvSct = pNxtSct = NULL;
     }
 
-    // Jetzt wird der Inhalt beseite gestellt und der Frame zerstoert
+    // Now the content is put aside and the frame is destroyed
     SwFrm *pSave = bSave ? ::SaveCntnt( pDel ) : NULL;
     sal_Bool bOldFtn = sal_True;
     if( pSave && pUp->IsFtnFrm() )
@@ -698,36 +697,36 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
     pDel->DelEmpty( sal_True );
     delete pDel;
     if( pParent )
-    {   // Hier wird die geeignete Einfuegeposition gesucht
+    {   // Here the appropriate insert position is seeked
         if( pNxtSct && pNxtSct->GetFmt() == pParent )
-        {   // Hier koennen wir uns am Anfang einfuegen
+        {   // Here we can insert us at the beginning
             pUp = FIRSTLEAF( pNxtSct );
             pPrv = NULL;
             if( pPrvSct && !( pPrvSct->GetFmt() == pParent ) )
-                pPrvSct = NULL; // damit nicht gemergt wird
+                pPrvSct = NULL; // In order that nothing is merged
         }
         else if( pPrvSct && pPrvSct->GetFmt() == pParent )
-        {   // Wunderbar, hier koennen wir uns am Ende einfuegen
+        {   // Wonderful, here we can insert us at the end
             pUp = pPrvSct;
             if( pUp->Lower() && pUp->Lower()->IsColumnFrm() )
             {
                 pUp = static_cast<SwLayoutFrm*>(pUp->GetLastLower());
-                // Der Body der letzten Spalte
+                // The body of the last column
                 pUp = static_cast<SwLayoutFrm*>(pUp->Lower());
             }
-            // damit hinter dem letzten eingefuegt wird
+            // In order that the insertion is done after the last one
             pPrv = pUp->GetLastLower();
-            pPrvSct = NULL; // damit nicht gemergt wird
+            pPrvSct = NULL; // In order that nothing is merged
         }
         else
         {
             if( pSave )
-            {   // Folgende Situationen: Vor und hinter dem zu loeschenden Bereich
-                // ist entweder die Bereichsgrenze des umfassenden Bereichs oder
-                // es schliesst ein anderer (Geschwister-)Bereich direkt an, der
-                // vom gleichen Parent abgeleitet ist.
-                // Dann gibt es (noch) keinen Teil unseres Parents, der den Inhalt
-                // aufnehmen kann,also bauen wir ihn uns.
+            {   // Following situations: before and after the section to be 
+                // deleted there is the section boundary of the enclosing
+                // section or another (sibling) section connects subsequently
+                // that derives from the same Parent.
+                // Then there is only a small part of our parent left that can
+                // store the content, so we reconstruct it.
                 pPrvSct = new SwSectionFrm( *pParent->GetSection(), pUp );
                 pPrvSct->InsertBehind( pUp, pPrv );
                 pPrvSct->Init();
@@ -736,10 +735,10 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
                 pUp = FIRSTLEAF( pPrvSct );
                 pPrv = NULL;
             }
-            pPrvSct = NULL; // damit nicht gemergt wird
+            pPrvSct = NULL; // In order that nothing will be merged
         }
     }
-    // Der Inhalt wird eingefuegt..
+    // The content is inserted..
     if( pSave )
     {
         lcl_InvalidateInfFlags( pSave, bSize );
@@ -748,7 +747,7 @@ void SwSectionFrm::MoveCntntAndDelete( SwSectionFrm* pDel, sal_Bool bSave )
         if( !bOldFtn )
             ((SwFtnFrm*)pUp)->ColUnlock();
     }
-    // jetzt koennen eventuell zwei Teile des uebergeordneten Bereich verschmelzen
+    // Now two parts of the superior section could possibly be merged
     if( pPrvSct && !pPrvSct->IsJoinLocked() )
     {
         OSL_ENSURE( pNxtSct, "MoveCntnt: No Merge" );
@@ -760,7 +759,7 @@ void SwSectionFrm::MakeAll()
 {
     if ( IsJoinLocked() || IsColLocked() || StackHack::IsLocked() || StackHack::Count() > 50 )
         return;
-    if( !pSection ) // Durch DelEmpty
+    if( !pSection ) // Through DelEmpty
     {
 #ifdef DBG_UTIL
         OSL_ENSURE( getRootFrm()->IsInDelList( this ), "SectionFrm without Section" );
@@ -776,7 +775,7 @@ void SwSectionFrm::MakeAll()
         bValidSize = bValidPos = bValidPrtArea = sal_True;
         return;
     }
-    LockJoin(); //Ich lass mich nicht unterwegs vernichten.
+    LockJoin(); // I don't let myself to be destroyed on the way
 
     while( GetNext() && GetNext() == GetFollow() )
     {
@@ -801,8 +800,8 @@ void SwSectionFrm::MakeAll()
         }
     }
 
-    // Ein Bereich mit Follow nimmt allen Platz bis zur Unterkante des Uppers
-    // in Anspruch. Bewegt er sich, so kann seine Groesse zu- oder abnehmen...
+    // A section with Follow uses all the space until the lower edge of the
+    // Upper. If it moves, its size can grow or decrease...
     if( !bValidPos && ToMaximize( sal_False ) )
         bValidSize = sal_False;
 
@@ -1021,12 +1020,12 @@ void SwSectionFrm::CollectEndnotes( SwLayouter* pLayouter )
 |*
 |*  SwSectionFrm::_CheckClipping( sal_Bool bGrow, sal_Bool bMaximize )
 |*
-|*  Beschreibung:       Passt die Groesse an die Umgebung an.
-|*      Wer einen Follow oder Fussnoten besitzt, soll bis zur Unterkante
-|*      des Uppers gehen (bMaximize).
-|*      Niemand darf ueber den Upper hinausgehen, ggf. darf man versuchen (bGrow)
-|*      seinen Upper zu growen.
-|*      Wenn die Groesse veraendert werden musste, wird der Inhalt kalkuliert.
+|*  Description: Fits the size to the vicinity.
+|*  Those that have a Follow or foot notes, have to reach until
+|*  the lower edge of a upper (bMaximize)
+|*  They must not reach above the Upper, as the case may be one can
+|*  try to grow its upper (bGrow)
+|*  If the size had to be changed, the content is calculated.
 |*
 |*************************************************************************/
 
@@ -1099,9 +1098,8 @@ void SwSectionFrm::_CheckClipping( sal_Bool bGrow, sal_Bool bMaximize )
         bool bHeightChanged = bVert ?
                             (aOldSz.Width() != Prt().Width()) :
                             (aOldSz.Height() != Prt().Height());
-        // Wir haben zu guter Letzt noch einmal die Hoehe geaendert,
-        // dann wird das innere Layout (Columns) kalkuliert und
-        // der Inhalt ebenfalls.
+        // Last but not least we have changed the height again, then the inner
+        // layout (columns) is calculated and the content as well.
         // OD 18.09.2002 #100522#
         // calculate content, only if height has changed.
         // OD 03.11.2003 #i19737# - restriction of content calculation too strong.
@@ -1294,13 +1292,13 @@ class ExtraFormatToPositionObjs
 |*
 |*  SwSectionFrm::Format()
 |*
-|*  Beschreibung:       "Formatiert" den Frame; Frm und PrtArea.
+|*  Description:        "formats" the frame; Frm and PrtArea
 |*
 |*************************************************************************/
 
 void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
 {
-    if( !pSection ) // Durch DelEmpty
+    if( !pSection ) // through DelEmpty
     {
 #ifdef DBG_UTIL
         OSL_ENSURE( getRootFrm()->IsInDelList( this ), "SectionFrm without Section" );
@@ -1338,10 +1336,9 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
 
         bValidSize = sal_True;
 
-        //die Groesse wird nur dann vom Inhalt bestimmt, wenn der SectFrm
-        //keinen Follow hat. Anderfalls fuellt er immer den Upper bis
-        //zur Unterkante aus. Fuer den Textfluss ist nicht er, sondern sein
-        //Inhalt selbst verantwortlich.
+        // The size is only determined when the SectFrm does not have a
+        // Follow. Otherwise it fills (occupies) the Upper until the lower edge.
+        // It is not responsible for the text flow, but the content is.
         sal_Bool bMaximize = ToMaximize( sal_False );
 
         // OD 2004-05-17 #i28701# - If the wrapping style has to be considered
@@ -1385,7 +1382,7 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
             bValidSize = sal_True;
         }
 
-        //Breite der Spalten pruefen und ggf. einstellen.
+        // Check the width of the columns and adjust if necessary
         if ( bHasColumns && ! Lower()->GetNext() && bMaximize )
             ((SwColumnFrm*)Lower())->Lower()->Calc();
 
@@ -1426,9 +1423,8 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
                         pFrm = ((SwLayoutFrm*)pFrm)->Lower();
                         CalcFtnCntnt();
                     }
-                    // Wenn wir in einem spaltigen Rahmen stehen und dieser
-                    // gerade im FormatWidthCols ein CalcCntnt ruft, muss
-                    // unser Inhalt ggf. kalkuliert werden.
+                    // If we are in a columned frame which calls a CalcCtnt
+                    // in the FormatWidthCols, the content has to be calculated
                     if( pFrm && !pFrm->IsValid() && IsInFly() &&
                         FindFlyFrm()->IsColLocked() )
                         ::CalcCntnt( this );
@@ -1466,10 +1462,9 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
                 InvalidateNextPos();
                 if( pLower && ( !pLower->IsColumnFrm() || !pLower->GetNext() ) )
                 {
-                    // Wenn ein einspaltiger Bereich gerade den Platz geschaffen
-                    // hat, den sich die "undersized" Absaetze gewuenscht haben,
-                    // muessen diese invalidiert und kalkuliert werden, damit
-                    // sie diesen ausfuellen.
+                    // If a single-column section just created the space that
+                    // was requested by the "undersized" paragraphs, then they
+                    // have to be invalidated and calculated, so they occupy it
                     pFrm = pLower;
                     if( pFrm->IsColumnFrm() )
                     {
@@ -1497,8 +1492,8 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
             }
         }
 
-        //Unterkante des Uppers nicht ueberschreiten. Fuer Sections mit
-        //Follows die Unterkante auch nicht unterschreiten.
+        // Do not exceed the lower edge of the Upper. 
+        // Do not fall below the lower edge with Sections with Follows
         if ( GetUpper() )
             _CheckClipping( sal_True, bMaximize );
         if( !bOldLock )
@@ -1507,7 +1502,7 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
         if( nDiff > 0 )
         {
             if( !GetNext() )
-                SetRetouche(); // Dann muessen wir die Retusche selbst uebernehmen
+                SetRetouche(); // Then we have to take over the retouching ourselves
             if( GetUpper() && !GetUpper()->IsFooterFrm() )
                 GetUpper()->Shrink( nDiff );
         }
@@ -1520,42 +1515,42 @@ void SwSectionFrm::Format( const SwBorderAttrs *pAttr )
 |*
 |*  SwFrm::GetNextSctLeaf()
 |*
-|*  Beschreibung        Liefert das naechste Layoutblatt in das der Frame
-|*      gemoved werden kann.
-|*      Neue Seiten werden nur dann erzeugt, wenn der Parameter sal_True ist.
-|*
+|*  Description:        Returns the next layout sheet where the frame
+|*      can be moved in.
+|*      New pages are created only if the parameter sal_True is set
+|* 
 |*************************************************************************/
 
 
 SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
 {
-    //Achtung: Geschachtelte Bereiche werden zur Zeit nicht unterstuetzt.
+    // Attention: Nested sections are currently not supported
 
     PROTOCOL_ENTER( this, PROT_LEAF, ACT_NEXT_SECT, GetUpper()->FindSctFrm() )
 
-    // Abkuerzungen fuer spaltige Bereiche, wenn wir noch nicht in der letzten Spalte sind.
-    // Koennen wir in die naechste Spalte des Bereichs rutschen?
+    // Shortcuts for "columned" sections, if we're not in the last column
+    // Can we slide to the next column of the section?
     if( IsColBodyFrm() && GetUpper()->GetNext() )
         return (SwLayoutFrm*)((SwLayoutFrm*)GetUpper()->GetNext())->Lower();
     if( GetUpper()->IsColBodyFrm() && GetUpper()->GetUpper()->GetNext() )
         return (SwLayoutFrm*)((SwLayoutFrm*)GetUpper()->GetUpper()->GetNext())->Lower();
-    // Innerhalb von Bereichen in Tabellen oder Bereichen in Kopf/Fusszeilen kann
-    // nur ein Spaltenwechsel erfolgen, eine der oberen Abkuerzungen haette zuschlagen muessen
+    // Inside a section in tables or sections in headers/footers there can only 
+    // one column shift be made, one of the above shortcuts should have applied
     if( GetUpper()->IsInTab() || FindFooterOrHeader() )
         return 0;
 
-//MA 03. Feb. 99: Warum GetUpper()? Das knallt mit Buch.sgl weil im
-//FlyAtCnt::MakeFlyPos ein Orient der SectionFrm ist und auf diesen ein
-//GetLeaf gerufen wird.
+// MA 03. Feb. 99: Why GetUpper()? This crashes with Buch.sgl because in 
+// FlyAtCnt::MakeFlyPos there is an Orient of the SectionFrm and on this a
+// GetLeaf is called
 //  SwSectionFrm *pSect = GetUpper()->FindSctFrm();
     SwSectionFrm *pSect = FindSctFrm();
     sal_Bool bWrongPage = sal_False;
     OSL_ENSURE( pSect, "GetNextSctLeaf: Missing SectionFrm" );
 
-    // Hier eine Abkuerzung fuer Bereiche mit Follows,
-    // dieser kann akzeptiert werden, wenn keine Spalten oder Seiten (ausser Dummyseiten)
-    // dazwischen liegen.
-    // Bei verketteten Rahmen und ind Fussnoten wuerde die Abkuerzung noch aufwendiger
+    // Here a shortcut for sections with Follows. This can be accepted,
+    // if no columns or pages (except dummy pages) lie in between
+    // In case of chained frames and in footnotes the shortcut would get
+    // costlier
     if( pSect->HasFollow() && pSect->IsInDocBody() )
     {
         if( pSect->GetFollow() == pSect->GetNext() )
@@ -1572,19 +1567,19 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
             if( !pSect->GetUpper()->IsColBodyFrm() ||
                 0 == ( pTmp = pSect->GetUpper()->GetUpper()->GetNext() ) )
                 pTmp = pSect->FindPageFrm()->GetNext();
-            if( pTmp ) // ist jetzt die naechste Spalte oder Seite
+            if( pTmp ) // is now the next column or page
             {
                 SwFrm* pTmpX = pTmp;
                 if( pTmp->IsPageFrm() && ((SwPageFrm*)pTmp)->IsEmptyPage() )
-                    pTmp = pTmp->GetNext(); // Dummyseiten ueberspringen
+                    pTmp = pTmp->GetNext(); // skip dummy pages
                 SwFrm *pUp = pSect->GetFollow()->GetUpper();
-                // pUp wird die Spalte, wenn der Follow in einer "nicht ersten" Spalte
-                // liegt, ansonsten die Seite:
+                // pUp becomes the next column if the Follow lies in a column
+                // that is not a "not first" one, otherwise the page
                 if( !pUp->IsColBodyFrm() ||
                     !( pUp = pUp->GetUpper() )->GetPrev() )
                     pUp = pUp->FindPageFrm();
-                // Jetzt muessen pUp und pTmp die gleiche Seite/Spalte sein,
-                // sonst liegen Seiten oder Spalten zwischen Master und Follow.
+                // Now pUp and pTmp have to be the same page/column, otherwise
+                // pages or columns lie between Master and Follow
                 if( pUp == pTmp || pUp->GetNext() == pTmpX )
                 {
                     SwPageFrm* pNxtPg = pUp->IsPageFrm() ?
@@ -1598,12 +1593,12 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
         }
     }
 
-    // Immer im gleichen Bereich landen: Body wieder in Body etc.
+    // Always end up in the same section: Body again in Body etc.
     const sal_Bool bBody = IsInDocBody();
     const sal_Bool bFtnPage = FindPageFrm()->IsFtnPage();
 
     SwLayoutFrm *pLayLeaf;
-    // Eine Abkuerzung fuer TabFrms, damit nicht alle Zellen abgehuehnert werden
+    // A short cut for TabFrms so not all cells need to be visited
     if( bWrongPage )
         pLayLeaf = 0;
     else if( IsTabFrm() )
@@ -1621,32 +1616,31 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
         }
     }
 
-    SwLayoutFrm *pOldLayLeaf = 0;           //Damit bei neu erzeugten Seiten
-                                            //nicht wieder vom Anfang gesucht
-                                            //wird.
+    SwLayoutFrm *pOldLayLeaf = 0;           // In order that in case of newly
+                                            // created pages the search is
+                                            // not started over at the beginning
 
     while( sal_True )
     {
         if( pLayLeaf )
         {
-            // Ein Layoutblatt wurde gefunden, mal sehen, ob er mich aufnehmen kann,
-            // ob hier ein weiterer SectionFrm eingefuegt werden kann
-            // oder ob wir weitersuchen muessen.
+            // A layout leaf was found, let's see whether it can store me or
+            // another SectionFrm can be inserted here or we have to continue
+            // searching
             SwPageFrm* pNxtPg = pLayLeaf->FindPageFrm();
             if ( !bFtnPage && pNxtPg->IsFtnPage() )
-            {   //Wenn ich bei den Endnotenseiten angelangt bin hat sichs.
+            {   // If I reached the end note pages it's over
                 pLayLeaf = 0;
                 continue;
             }
-            // Einmal InBody, immer InBody, nicht in Tabellen hinein
-            // und nicht in fremde Bereiche hinein
+            // Once inBody always inBody, not in tables and not in other sections
             if ( (bBody && !pLayLeaf->IsInDocBody()) ||
                  (IsInFtn() != pLayLeaf->IsInFtn() ) ||
                  pLayLeaf->IsInTab() ||
                  ( pLayLeaf->IsInSct() && ( !pSect->HasFollow()
                    || pSect->GetFollow() != pLayLeaf->FindSctFrm() ) ) )
             {
-                //Er will mich nicht; neuer Versuch, neues Glueck
+                // He doesn't want me, new try new luck
                 pOldLayLeaf = pLayLeaf;
                 pLayLeaf = pLayLeaf->GetNextLayoutLeaf();
                 continue;
@@ -1661,15 +1655,14 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
                 continue;
             }
         }
-        //Es gibt keinen passenden weiteren LayoutFrm, also muss eine
-        //neue Seite her, allerdings nuetzen uns innerhalb eines Rahmens
-        //neue Seiten nichts.
+        // There is no further LayoutFrm that fits, so a new page 
+        // has to be created, although new pages are worthless within a frame
         else if( !pSect->IsInFly() &&
             ( eMakePage == MAKEPAGE_APPEND || eMakePage == MAKEPAGE_INSERT ) )
         {
             InsertPage(pOldLayLeaf ? pOldLayLeaf->FindPageFrm() : FindPageFrm(),
                        sal_False );
-            //und nochmal das ganze
+            // and again the whole thing
             pLayLeaf = pOldLayLeaf ? pOldLayLeaf : GetNextLayoutLeaf();
             continue;
         }
@@ -1678,14 +1671,14 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
 
     if( pLayLeaf )
     {
-        // Das passende Layoutblatt haben wir gefunden, wenn es dort bereits einen
-        // Follow unseres Bereichs gibt, nehmen wir dessen erstes Layoutblatt,
-        // andernfalls wird es Zeit, einen Bereichsfollow zu erzeugen
+        // We have found the suitable layout sheet. If there (in the sheet) is 
+        // already a Follow of our section, we take its first layout sheet, 
+        // otherwise it is time to create a section follow
         SwSectionFrm* pNew;
 
-        //Dies kann entfallen, wenn bei existierenden Follows bereits abgekuerzt wurde
+        // This can be omitted if existing Follows were cut short
         SwFrm* pFirst = pLayLeaf->Lower();
-        // Auch hier muessen zum Loeschen angemeldete SectionFrms ignoriert werden
+        // Here SectionFrms that are to be deleted must be ignored
         while( pFirst && pFirst->IsSctFrm() && !((SwSectionFrm*)pFirst)->GetSection() )
             pFirst = pFirst->GetNext();
         if( pFirst && pFirst->IsSctFrm() && pSect->GetFollow() == pFirst )
@@ -1700,8 +1693,8 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
             SWRECTFN( pNew )
             (pNew->*fnRect->fnMakePos)( pLayLeaf, NULL, sal_True );
 
-            // Wenn unser Bereichsframe einen Nachfolger hat, so muss dieser
-            // umgehaengt werden hinter den neuen Follow der Bereichsframes.
+            // If our section frame has a successor then that has to be
+            // moved behind the new Follow of the section frames
             SwFrm* pTmp = pSect->GetNext();
             if( pTmp && pTmp != pSect->GetFollow() )
             {
@@ -1746,7 +1739,7 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
             if( pNew->GetFollow() )
                 pNew->SimpleFormat();
         }
-        // Das gesuchte Layoutblatt ist jetzt das erste des ermittelten SctFrms:
+        // The wanted layout sheet is now the first of the determined SctFrms:
         pLayLeaf = FIRSTLEAF( pNew );
     }
     return pLayLeaf;
@@ -1756,8 +1749,8 @@ SwLayoutFrm *SwFrm::GetNextSctLeaf( MakePageType eMakePage )
 |*
 |*  SwFrm::GetPrevSctLeaf()
 |*
-|*  Beschreibung        Liefert das vorhergehende LayoutBlatt in das der
-|*      Frame gemoved werden kann.
+|*  Description         Returns the preceding layout sheet where the frame
+|*      can be moved into
 |*
 |*************************************************************************/
 
@@ -1767,7 +1760,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
     PROTOCOL_ENTER( this, PROT_LEAF, ACT_PREV_SECT, GetUpper()->FindSctFrm() )
 
     SwLayoutFrm* pCol;
-    // ColumnFrm beinhalten jetzt stets einen BodyFrm
+    // ColumnFrm always contain a BodyFrm now
     if( IsColBodyFrm() )
         pCol = GetUpper();
     else if( GetUpper()->IsColBodyFrm() )
@@ -1782,31 +1775,32 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
             do
             {
                 pCol = (SwLayoutFrm*)pCol->GetPrev();
+                // Is there any content?
                 // Gibt es dort Inhalt?
                 if( ((SwLayoutFrm*)pCol->Lower())->Lower() )
                 {
-                    if( bJump )     // Haben wir eine leere Spalte uebersprungen?
+                    if( bJump )     // Did we skip a blank page?
                         SwFlowFrm::SetMoveBwdJump( sal_True );
-                    return (SwLayoutFrm*)pCol->Lower();  // Der Spaltenbody
+                    return (SwLayoutFrm*)pCol->Lower();  // The columnm body
                 }
                 bJump = sal_True;
             } while( pCol->GetPrev() );
 
-            // Hier landen wir, wenn alle Spalten leer sind,
-            // pCol ist jetzt die erste Spalte, wir brauchen aber den Body:
+            // We get here when all columns are empty, pCol is now the
+            // first column, we need the body though
             pCol = (SwLayoutFrm*)pCol->Lower();
         }
         else
             pCol = NULL;
     }
 
-    if( bJump )     // Haben wir eine leere Spalte uebersprungen?
+    if( bJump )     // Did we skip a blank page?
         SwFlowFrm::SetMoveBwdJump( sal_True );
 
-    // Innerhalb von Bereichen in Tabellen oder Bereichen in Kopf/Fusszeilen kann
-    // nur ein Spaltenwechsel erfolgen, eine der oberen Abkuerzungen haette
-    // zuschlagen muessen, ebenso wenn der Bereich einen pPrev hat.
-    // Jetzt ziehen wir sogar eine leere Spalte in Betracht...
+    // Within sections in tables or section in headers/footers there can
+    // be only one column change be made, one of the above shortcuts should 
+    // have applied, also when the section has a pPrev.
+    // Now we even consider an empty column...
     OSL_ENSURE( FindSctFrm(), "GetNextSctLeaf: Missing SectionFrm" );
     if( ( IsInTab() && !IsTabFrm() ) || FindFooterOrHeader() )
         return pCol;
@@ -1831,7 +1825,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
         SwFrm *pPrv;
         if( 0 != ( pPrv = pSect->GetIndPrev() ) )
         {
-            // Herumlungernde, halbtote SectionFrms sollen uns nicht beirren
+            // Mooching, half dead SectionFrms shouldn't confuse us
             while( pPrv && pPrv->IsSctFrm() && !((SwSectionFrm*)pPrv)->GetSection() )
                 pPrv = pPrv->GetPrev();
             if( pPrv )
@@ -1847,7 +1841,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
 
     while ( pLayLeaf )
     {
-        //In Tabellen oder Bereiche geht's niemals hinein.
+        // Never step into tables or sections
         if ( pLayLeaf->IsInTab() || pLayLeaf->IsInSct() )
         {
             pLayLeaf = pLayLeaf->GetPrevLayoutLeaf();
@@ -1881,7 +1875,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
                 SwFlowFrm::SetMoveBwdJump( sal_True );
         }
         else if ( bFly )
-            break;  //Cntnts in Flys sollte jedes Layout-Blatt recht sein. Warum?
+            break;  // Cntnts in Flys every layout sheet should be right. Why?
         else
             pLayLeaf = pLayLeaf->GetPrevLayoutLeaf();
     }
@@ -1893,7 +1887,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
     }
 
     SwSectionFrm* pNew = NULL;
-    // Zunaechst einmal an das Ende des Layoutblatts gehen
+    // At first go to the end of the layout sheet
     SwFrm *pTmp = pLayLeaf->Lower();
     if( pTmp )
     {
@@ -1901,7 +1895,7 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
             pTmp = pTmp->GetNext();
         if( pTmp->IsSctFrm() )
         {
-            // Halbtote stoeren hier nur...
+            // Half dead ones only interfere here
             while( !((SwSectionFrm*)pTmp)->GetSection() && pTmp->GetPrev() &&
                     pTmp->GetPrev()->IsSctFrm() )
                 pTmp = pTmp->GetPrev();
@@ -1918,10 +1912,10 @@ SwLayoutFrm *SwFrm::GetPrevSctLeaf( MakePageType )
         (pNew->*fnRect->fnMakePos)( pLayLeaf, pNew->GetPrev(), sal_True );
 
         pLayLeaf = FIRSTLEAF( pNew );
-        if( !pNew->Lower() )    // einspaltige Bereiche formatieren
+        if( !pNew->Lower() )    // Format single column sections
         {
             pNew->MakePos();
-            pLayLeaf->Format(); // damit die PrtArea fuers MoveBwd stimmt
+            pLayLeaf->Format(); // In order that the PrtArea is correct for the MoveBwd
         }
         else
             pNew->SimpleFormat();
@@ -1958,7 +1952,7 @@ SwTwips lcl_DeadLine( const SwFrm* pFrm )
     {
         if( pUp->IsSctFrm() )
             pUp = pUp->GetUpper();
-        // Spalten jetzt mit BodyFrm
+        // Columns now with BodyFrm
         else if( pUp->IsColBodyFrm() && pUp->GetUpper()->GetUpper()->IsSctFrm() )
             pUp = pUp->GetUpper()->GetUpper();
         else
@@ -1968,9 +1962,8 @@ SwTwips lcl_DeadLine( const SwFrm* pFrm )
     return pUp ? (pUp->*fnRect->fnGetPrtBottom)() :
                  (pFrm->Frm().*fnRect->fnGetBottom)();
 }
-
-// SwSectionFrm::Growable(..) prueft, ob der SectionFrm noch wachsen kann,
-// ggf. muss die Umgebung gefragt werden
+// SwSectionFrm::Growable(..) checks whether the SectionFrm is still able to 
+// grow, as case may be the environment has to be asked
 
 sal_Bool SwSectionFrm::Growable() const
 {
@@ -2124,8 +2117,8 @@ SwTwips SwSectionFrm::_Shrink( SwTwips nDist, sal_Bool bTst )
 
             if ( Lower()->IsColumnFrm() && Lower()->GetNext() && // FtnAtEnd
                  !GetSection()->GetFmt()->GetBalancedColumns().GetValue() )
-            {   //Bei Spaltigkeit ubernimmt das Format die Kontrolle ueber
-                //das Wachstum (wg. des Ausgleichs).
+            {   // With column bases the format takes over the control of the 
+                // growth (because of the balance)
                 if ( !bTst )
                     InvalidateSize();
                 return nDist;
@@ -2192,23 +2185,22 @@ SwTwips SwSectionFrm::_Shrink( SwTwips nDist, sal_Bool bTst )
 |*
 |*  SwSectionFrm::MoveAllowed()
 |*
-|*  Wann sind Frms innerhalb eines SectionFrms moveable?
-|*  Wenn sie noch nicht in der letzten Spalte des SectionFrms sind,
-|*  wenn es einen Follow gibt,
-|*  wenn der SectionFrm nicht mehr wachsen kann, wird es komplizierter,
-|*  dann kommt es darauf an, ob der SectionFrm ein naechstes Layoutblatt
-|*  finden kann. In (spaltigen/verketteten) Flys wird dies via GetNextLayout
-|*  geprueft, in Tabellen und in Kopf/Fusszeilen gibt es keins, im DocBody
-|*  und auch im Fussnoten dagegen immer.
-|*
-|*  Benutzt wird diese Routine im TxtFormatter, um zu entscheiden, ob ein
-|*  (Absatz-)Follow erzeugt werden darf oder ob der Absatz zusammenhalten muss.
+|*  When are Frms within a SectionFrms moveable?
+|*  When they are not in the last column of a SectionFrms yet,
+|*  when there is no Follow,
+|*  when the SectionFrm cannot grow anymore, then it gets more complicated,
+|*  in that case it depends on whether the SectionFrm can find a next
+|*  layout sheet. In (column based/chained) Flys this is checked via
+|*  GetNextLayout, in tables and headers/footers there is none, however in the
+|*  DocBody and in foot notes there is always one.
+|*  This routine is used in the TxtFormatter to decided whether it's allowed to 
+|*  create a (paragraph-)Follow or whether the paragraph has to stick together
 |*
 |*************************************************************************/
 
 sal_Bool SwSectionFrm::MoveAllowed( const SwFrm* pFrm) const
 {
-    // Gibt es einen Follow oder ist der Frame nicht in der letzten Spalte?
+    // Is there a Follow or is the Frame not in the last column?
     if( HasFollow() || ( pFrm->GetUpper()->IsColBodyFrm() &&
         pFrm->GetUpper()->GetUpper()->GetNext() ) )
         return sal_True;
@@ -2247,14 +2239,14 @@ sal_Bool SwSectionFrm::MoveAllowed( const SwFrm* pFrm) const
                 return sal_True;
         }
     }
-    // Oder kann der Bereich noch wachsen?
+    // Or can the section still grow?
     if( !IsColLocked() && Growable() )
         return sal_False;
-    // Jetzt muss untersucht werden, ob es ein Layoutblatt gibt, in dem
-    // ein Bereichsfollow erzeugt werden kann.
+    // Now it has to be examined whether there is a layout sheet wherein
+    // a section Follow can be created
     if( IsInTab() || ( !IsInDocBody() && FindFooterOrHeader() ) )
-        return sal_False; // In Tabellen/Kopf/Fusszeilen geht es nicht
-    if( IsInFly() ) // Bei spaltigen oder verketteten Rahmen
+        return sal_False; // It doesn't work in tables/headers/footers
+    if( IsInFly() ) // In column based or chained frames
         return 0 != ((SwFrm*)GetUpper())->GetNextLeaf( MAKEPAGE_NONE );
     return sal_True;
 }
@@ -2312,8 +2304,8 @@ SwFrm* SwFrm::_GetIndNext()
     if( pSct->IsSctFrm() )
         return pSct->GetIndNext();
     if( pSct->IsColBodyFrm() && (pSct = pSct->GetUpper()->GetUpper())->IsSctFrm() )
-    {   // Wir duerfen nur den Nachfolger des SectionFrms zurueckliefern,
-        // wenn in keiner folgenden Spalte mehr Inhalt ist
+    {   // We can only return the successor of the SectionFrms if there is no
+        // content in the successing columns
         SwFrm* pCol = GetUpper()->GetUpper()->GetNext();
         while( pCol )
         {
@@ -2446,16 +2438,16 @@ void SwSectionFrm::_UpdateAttr( const SfxPoolItem *pOld, const SfxPoolItem 
*pNew
     sal_Bool bClear = sal_True;
     const sal_uInt16 nWhich = pOld ? pOld->Which() : pNew ? pNew->Which() : 0;
     switch( nWhich )
-    {   // Mehrspaltigkeit in Fussnoten unterdruecken...
+    {   // Suppress multi columns in foot notes
         case RES_FMT_CHG:
         {
             const SwFmtCol& rNewCol = GetFmt()->GetCol();
             if( !IsInFtn() )
             {
-                //Dummer Fall. Bei der Zuweisung einer Vorlage k?nnen wir uns
-                //nicht auf das alte Spaltenattribut verlassen. Da diese
-                //wenigstens anzahlgemass fuer ChgColumns vorliegen muessen,
-                //bleibt uns nur einen temporaeres Attribut zu basteln.
+                // Stupid case. When allocating a template we can not count
+                // on the old column attribute. Since they have to exist
+                // at least in numbers, we are left with creating a temporary
+                // attribute.
                 SwFmtCol aCol;
                 if ( Lower() && Lower()->IsColumnFrm() )
                 {
@@ -2632,9 +2624,10 @@ void SwSectionFrm::InvalidateFtnPos()
 }
 
 /*--------------------------------------------------
- * SwSectionFrm::Undersize() liefert den Betrag, um den der Bereich gern
- * groesser waere, wenn in ihm Undersized TxtFrms liegen, ansonsten Null.
- * Das Undersized-Flag wird ggf. korrigiert.
+ * SwSectionFrm::Undersize() returns the value that the section
+ * would like to be greater if it has undersized TxtFrms in it,
+ * otherwise Null..
+ * As the case may be the undersized-flag is corrected.
  * --------------------------------------------------*/
 
 long SwSectionFrm::Undersize( sal_Bool bOverSize )
@@ -2684,18 +2677,17 @@ void SwSectionFrm::CalcFtnCntnt()
         }
     }
 }
-
 /* --------------------------------------------------
- * Wenn ein SectionFrm leerlaeuft, z.B. weil sein Inhalt die Seite/Spalte wechselt,
- * so wird er nicht sofort zerstoert (es koennte noch jemand auf dem Stack einen Pointer
- * auf ihn halten), sondern er traegt sich in eine Liste am RootFrm ein, die spaeter
- * abgearbeitet wird (in LayAction::Action u.a.). Seine Groesse wird auf Null gesetzt und
- * sein Zeiger auf seine Section ebenfalls. Solche zum Loeschen vorgesehene SectionFrms
- * muessen vom Layout/beim Formatieren ignoriert werden.
+ * If a SectionFrm gets empty, e.g. because its content changes the page/column,
+ * it is not destroyed immediately (there could be a pointer left to it on the 
+ * stack), instead it puts itself in a list at the RootFrm, which is processed
+ * later on (in Layaction::Action among others). Its size is set to Null and
+ * the pointer to its page as well. Such SectionFrms that are to be deleted
+ * must be ignored by the layout/when formatting.
  *
- * Mit InsertEmptySct nimmt der RootFrm einen SectionFrm in die Liste auf,
- * mit RemoveFromList kann ein SectionFrm wieder aus der Liste entfernt werden (Dtor),
- * mit DeleteEmptySct wird die Liste abgearbeitet und die SectionFrms zerstoert
+ * With InsertEmptySct the RootFrm stores a SectionFrm in the list,
+ * with RemoveFromList it can be removed from the list (Dtor), 
+ * with DeleteEmptySct the list is processed and the SectionFrms are destroyed.
  * --------------------------------------------------*/
 
 void SwRootFrm::InsertEmptySct( SwSectionFrm* pDel )
-- 
1.7.9.1


From 5ea63816c372234e02c4cd53bc3538114cb7e57b Mon Sep 17 00:00:00 2001
From: David Vogt <david.vogt@adfinis-sygroup.ch>
Date: Thu, 16 Feb 2012 19:14:20 +0100
Subject: [PATCH 22/22] Translated German comments to English

---
 sw/source/core/layout/layact.cxx |  256 ++++++++++++++++++--------------------
 1 files changed, 124 insertions(+), 132 deletions(-)

diff --git a/sw/source/core/layout/layact.cxx b/sw/source/core/layout/layact.cxx
index 1978093..48d3cb5 100644
--- a/sw/source/core/layout/layact.cxx
+++ b/sw/source/core/layout/layact.cxx
@@ -46,8 +46,8 @@
 #include "ndtxt.hxx"    // OnlineSpelling
 #include "frmfmt.hxx"
 #include "swregion.hxx"
-#include "viewopt.hxx"  // OnlineSpelling ueber Internal-TabPage testen.
-#include "pam.hxx"      // OnlineSpelling wg. der aktuellen Cursorposition
+#include "viewopt.hxx"  // test OnlineSpelling using internal TabPage
+#include "pam.hxx"      // OnlineSpelling because of the current cursor position
 #include "dbg_lay.hxx"
 #include "layouter.hxx" // LoopControlling
 #include "docstat.hxx"
@@ -93,7 +93,7 @@
 
 /*************************************************************************
 |*
-|*  SwLayAction Statisches Geraffel
+|*  SwLayAction static stuff
 |*
 |*************************************************************************/
 
@@ -101,7 +101,7 @@
 #define IS_INVAFLY (pPage->IsInvalidFly())
 
 
-//Sparen von Schreibarbeit um den Zugriff auf zerstoerte Seiten zu vermeiden.
+// Save some typing work to avoid accessing destroyed pages.
 #if OSL_DEBUG_LEVEL > 1
 
 static void BreakPoint()
@@ -169,7 +169,7 @@ void SwLayAction::CheckWaitCrsr()
 |*  SwLayAction::CheckIdleEnd()
 |*
 |*************************************************************************/
-//Ist es wirklich schon soweit...
+// Is it really time now?
 inline void SwLayAction::CheckIdleEnd()
 {
     if ( !IsInput() )
@@ -196,10 +196,10 @@ void SwLayAction::SetStatBar( sal_Bool bNew )
 |*
 |*  SwLayAction::PaintCntnt()
 |*
-|*  Beschreibung        Je nach Typ wird der Cntnt entsprechend seinen
-|*      Veraenderungen ausgegeben bzw. wird die auszugebende Flaeche in der
-|*      Region eingetragen.
-|*      PaintCntnt:  fuellt die Region,
+|*  Description        Depending of the type, the Cntnt is output
+|*      according to it's changes, or the area to be outputted is
+|*      registered in the region, respectively.
+|*      PaintCntnt: fills the region
 |*
 |*************************************************************************/
 sal_Bool SwLayAction::PaintWithoutFlys( const SwRect &rRect, const SwCntntFrm *pCnt,
@@ -240,15 +240,15 @@ sal_Bool SwLayAction::PaintWithoutFlys( const SwRect &rRect, const SwCntntFrm 
*p
             if ( pO->GetLayer() == pTmp->GetLayer() )
             {
                 if ( pO->GetOrdNumDirect() < pTmp->GetOrdNumDirect() )
-                    //Im gleichen Layer werden nur obenliegende beachtet.
+                    // Only look at things above when in the same layer
                     continue;
             }
             else
             {
                 const sal_Bool bLowerOfSelf = pFly->IsLowerOf( pSelfFly );
                 if ( !bLowerOfSelf && !pFly->GetFmt()->GetOpaque().GetValue() )
-                    //Aus anderem Layer interessieren uns nur nicht transparente
-                    //oder innenliegende
+                    // Things from other layers are only interesting to us if 
+                    // they're not transparent or lie inwards
                     continue;
             }
         }
@@ -374,13 +374,13 @@ SwLayAction::SwLayAction( SwRootFrm *pRt, SwViewImp *pI ) :
     // OD 14.04.2003 #106346# - init new flag <mbFormatCntntOnInterrupt>.
     mbFormatCntntOnInterrupt = sal_False;
 
-    pImp->pLayAct = this;   //Anmelden
+    pImp->pLayAct = this;   // Register
 }
 
 SwLayAction::~SwLayAction()
 {
     OSL_ENSURE( !pWait, "Wait object not destroyed" );
-    pImp->pLayAct = 0;      //Abmelden
+    pImp->pLayAct = 0;      // Unregister
 }
 
 /*************************************************************************
@@ -442,7 +442,7 @@ void SwLayAction::Action()
 {
     bActionInProgress = sal_True;
 
-    //TurboMode? Disqualifiziert fuer Idle-Format.
+    //TurboMode? Disqualifies for idle-format
     if ( IsPaint() && !IsIdle() && TurboAction() )
     {
         delete pWait, pWait = 0;
@@ -475,7 +475,7 @@ void SwLayAction::Action()
 
     delete pWait, pWait = 0;
 
-    //Turbo-Action ist auf jedenfall wieder erlaubt.
+    //Turbo-Action allowed again in any case.
     pRoot->ResetTurboFlag();
     pRoot->ResetTurbo();
 
@@ -509,7 +509,7 @@ SwPageFrm* SwLayAction::CheckFirstVisPage( SwPageFrm *pPage )
             {
                 if ( bPageChgd )
                 {
-                    //Die 'oberste' Seite benutzten.
+                    // Use the 'topmost' page
                     SwPageFrm *pTmp = pCnt->FindPageFrm();
                     if ( pPage->GetPhyPageNum() > pTmp->GetPhyPageNum() )
                         pPage = pTmp;
@@ -559,23 +559,22 @@ class NotifyLayoutOfPageInProgress
 
 void SwLayAction::InternalAction()
 {
-    OSL_ENSURE( pRoot->Lower()->IsPageFrm(), ":-( Keine Seite unterhalb der Root.");
+    OSL_ENSURE( pRoot->Lower()->IsPageFrm(), ":-( No page below the root.");
 
     pRoot->Calc();
 
-    //Die erste ungueltige bzw. zu formatierende Seite ermitteln.
-    //Bei einer Complete-Action ist es die erste ungueltige; mithin ist die
-    //erste zu formatierende Seite diejenige Seite mit der Numemr eins.
-    //Bei einer Luegen-Formatierung ist die Nummer der erste Seite die Nummer
-    //der ersten Sichtbaren Seite.
+    // Figure out the first invalid page or the first one to be formatted,
+    // respectively. A complete-action means the first invalid page.
+    // However, the first page to be formatted might be the one having the 
+    // number 1.  If we're doing a Lie formatting, the number of the first
+    // page is the number of the first visible page.
     SwPageFrm *pPage = IsComplete() ? (SwPageFrm*)pRoot->Lower() :
                 pImp->GetFirstVisPage();
     if ( !pPage )
         pPage = (SwPageFrm*)pRoot->Lower();
 
-    //Wenn ein "Erster-Fliess-Cntnt" innerhalb der der ersten sichtbaren Seite
-    //ein Follow ist, so schalten wir die Seite zurueck auf den Ur-Master dieses
-    //Cntnt's
+    // If there's a first-flow-Cntnt in the first visible page that's also a Follow,
+    // we switch the page back to the original master of that Cntnt.
     if ( !IsComplete() )
         pPage = CheckFirstVisPage( pPage );
     sal_uInt16 nFirstPageNum = pPage->GetPhyPageNum();
@@ -617,7 +616,7 @@ void SwLayAction::InternalAction()
             ::SetProgressState( nPercentPageNum, pImp->GetShell()->GetDoc()->GetDocShell());
         }
         pOptTab = 0;
-             //Kein ShortCut fuer Idle oder CalcLayout
+             // No Shortcut for Idle or CalcLayout
         if ( !IsIdle() && !IsComplete() && IsShortCut( pPage ) )
         {
             pRoot->DeleteEmptySct();
@@ -665,8 +664,7 @@ void SwLayAction::InternalAction()
                     SwObjectFormatter::FormatObjsAtFrm( *pPage, *pPage, this );
                     if ( !IS_FLYS )
                     {
-                        //Wenn keine Flys (mehr) da sind, sind die Flags
-                        //mehr als fluessig.
+                        // If there are no (more) Flys, the flags are superfluous.
                         pPage->ValidateFlyLayout();
                         pPage->ValidateFlyCntnt();
                     }
@@ -724,12 +722,11 @@ void SwLayAction::InternalAction()
             } // end of scope for instance of class <NotifyLayoutOfPageInProgress>
 
 
-            //Eine vorige Seite kann wieder invalid sein.
+            // A previous page may be invalid again.
             XCHECKPAGE;
             if ( !IS_FLYS )
             {
-                //Wenn keine Flys (mehr) da sind, sind die Flags
-                //mehr als fluessig.
+                // If there are no (more) Flys, the flags are superfluous.
                 pPage->ValidateFlyLayout();
                 pPage->ValidateFlyCntnt();
             }
@@ -765,7 +762,7 @@ void SwLayAction::InternalAction()
                     pPage = (SwPageFrm*)pPage->GetPrev();
                 }
 
-                //Weiter bis zur naechsten invaliden Seite.
+                // Continue to the next invalid page
                 while ( pPage && !pPage->IsInvalid() &&
                         (!IS_FLYS || !IS_INVAFLY) )
                 {
@@ -803,21 +800,22 @@ void SwLayAction::InternalAction()
     }
     if ( IsInterrupt() && pPage )
     {
-        //Wenn ein Input anliegt wollen wir keinen Inhalt mehr Formatieren,
-        //Das Layout muessen wir aber schon in Ordnung bringen.
-        //Andernfalls kann folgende Situation auftreten (Bug: 3244):
-        //Am Ende des Absatz der letzten Seite wird Text eingegeben, so das
-        //der Absatz einen Follow fuer die nachste Seite erzeugt, ausserdem
-        //wird gleich schnell weitergetippt - Es liegt waehrend der
-        //Verarbeitung ein Input an. Der Absatz auf der neuen Seite wurde
-        //bereits anformatiert, die neue Seite ist Formatiert und steht
-        //auf CompletePaint, hat sich aber noch nicht im Auszugebenden Bereich
-        //eingetragen. Es wird gepaintet, das CompletePaint der Seite wird
-        //zurueckgesetzt weil der neue Absatz sich bereits eingetragen hatte,
-        //aber die Raender der Seite werden nicht gepaintet. Naja, bei der
-        //zwangslaeufig auftretenden naechsten LayAction traegt sich die Seite
-        //nicht mehr ein, weil ihre (LayoutFrm-)Flags bereits zurueckgesetzt
-        //wurden -- Der Rand der Seite wird nie gepaintet.
+        // If we have input, we don't want to format content anymore, but
+        // we still should clean the layout.
+        // Otherwise, the following situation might arise (Bug: 3244):
+        // The user enters some text at the end of the paragraph of the last 
+        // page, causing the paragraph to create a Follow for the next page.
+        // In the meanwhile the user continues typing, so we have input while
+        // still working.
+        // The paragraph on the new page has already been partially formatted,
+        // and the new page has been fully formatted and is set to CompletePaint,
+        // but hasn't added itself to the area to be output. Then we paint,
+        // the CompletePaint of the page is reset because the new paragraph
+        // already added itself, but the borders of the page haven't been painted
+        // yet.
+        // Oh well, with the inevitable following LayAction, the page doesn't
+        // register itself, because it's (LayoutFrm) flags have been reset
+        // already - the border of the page will never be painted.
         SwPageFrm *pPg = pPage;
         XCHECKPAGE;
         const SwRect &rVis = pImp->GetShell()->VisArea();
@@ -950,11 +948,10 @@ sal_Bool SwLayAction::_TurboAction( const SwCntntFrm *pCnt )
             {
                 if ( IsPaintExtraData() )
                     pImp->GetShell()->AddPaintRect( pCnt->Frm() );
-                //Damit die restlichen LineNums auf der Seite bereichnet werden
-                //und nicht hier abgebrochen wird.
-                //Das im RecalcAllLines zu erledigen waere teuer, weil dort
-                //auch in unnoetigen Faellen (normale Action) auch immer die
-                //Seite benachrichtigt werden muesste.
+                // We do this so the remaining LineNums on the page are calculated
+                // and we don't stop processing here. To do this in RecalcAllLines
+                // would be expensive, because we would have to notify the page even
+                // in unnecessary cases (normal actions).
                 const SwCntntFrm *pNxt = pCnt->GetNextCntntFrm();
                 while ( pNxt &&
                         (pNxt->IsInTab() || pNxt->IsInDocBody() != pCnt->IsInDocBody()) )
@@ -1005,15 +1002,13 @@ sal_Bool SwLayAction::TurboAction()
 |*
 |*  SwLayAction::IsShortCut()
 |*
-|*  Beschreibung:       Liefert ein True, wenn die Seite vollstaendig unter
-|*      oder rechts neben dem sichbaren Bereich liegt.
-|*      Es kann passieren, dass sich die Verhaeltnisse derart aendern, dass
-|*      die Verarbeitung (des Aufrufers!) mit der Vorgaengerseite der
-|*      uebergebenen Seite weitergefuehrt werden muss. Der Paramter wird also
-|*      ggf. veraendert!
-|*      Fuer den BrowseMode kann auch dann der ShortCut aktiviert werden,
-|*      wenn der ungueltige Inhalt der Seite unterhalb des sichbaren
-|*      bereiches liegt.
+|*  Description:       Returns True if the page lies directly below or 
+|*      right of the visible area.
+|*      It's possible for things to change in such a way that the processing
+|*      (of the caller!) has to continue with the predecessor of the passed
+|*      page. The parameter might therefore get modified!
+|*      For BrowseMode, you may even activate the ShortCut if the invalid 
+|*      content of the page lies below the visible area.
 |*
 |*************************************************************************/
 static bool lcl_IsInvaLay( const SwFrm *pFrm, long nBottom )
@@ -1136,8 +1131,8 @@ sal_Bool SwLayAction::IsShortCut( SwPageFrm *&prPage )
     const ViewShell *pSh = pRoot->GetCurrShell();
     const sal_Bool bBrowse = pSh && pSh->GetViewOptions()->getBrowseMode();
 
-    //Wenn die Seite nicht Gueltig ist wird sie schnell formatiert, sonst
-    //gibts nix als Aerger.
+    // If the page is not valid, we quickly format it, otherwise 
+    // there's gonna be be trouble
     if ( !prPage->IsValid() )
     {
         if ( bBrowse )
@@ -1168,17 +1163,16 @@ sal_Bool SwLayAction::IsShortCut( SwPageFrm *&prPage )
     {
         bRet = sal_True;
 
-        //Jetzt wird es ein bischen unangenehm: Der erste CntntFrm dieser Seite
-        //im Bodytext muss Formatiert werden, wenn er dabei die Seite
-        //wechselt, muss ich nochmal eine Seite zuvor anfangen, denn
-        //es wurde ein PageBreak verarbeitet.
-//Noch unangenehmer: Der naechste CntntFrm ueberhaupt muss
-        //Formatiert werden, denn es kann passieren, dass kurzfristig
-        //leere Seiten existieren (Bsp. Absatz ueber mehrere Seiten
-        //wird geloescht oder verkleinert).
+        // This is going to be a bit uncomfortable: The first CntntFrm of this 
+        // page in the Body text needs formatting; if it changes the page during 
+        // that process, I need to start over a page further back, because we 
+        // have been processing a PageBreak.
+        // Even more uncomfortable: The next CntntFrm must be formatted, 
+        // because it's possible for empty pages to exist temporarily (for example
+        // a paragraph across multiple pages gets deleted or reduced in size).
 
-        //Ist fuer den Browser uninteressant, wenn der letzte Cnt davor bereits
-        //nicht mehr sichbar ist.
+        // This is not interesting for the browser, if the last Cnt above it 
+        // isn't visible anymore.
 
         const SwPageFrm *p2ndPage = prPage;
         const SwCntntFrm *pCntnt;
@@ -1202,7 +1196,7 @@ sal_Bool SwLayAction::IsShortCut( SwPageFrm *&prPage )
             sal_Bool bTstCnt = sal_True;
             if ( bBrowse )
             {
-                //Der Cnt davor schon nicht mehr sichtbar?
+                // Is the Cnt before already invisible?
                 const SwFrm *pLst = pCntnt;
                 if ( pLst->IsInTab() )
                     pLst = pCntnt->FindTabFrm();
@@ -1357,7 +1351,7 @@ sal_Bool SwLayAction::IsShortCut( SwPageFrm *&prPage )
 // OD 15.11.2002 #105155# - introduce support for vertical layout
 sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
 {
-    OSL_ENSURE( !IsAgain(), "Ungueltige Seite beachten." );
+    OSL_ENSURE( !IsAgain(), "Attention to the invalid page." );
     if ( IsAgain() )
         return sal_False;
 
@@ -1388,7 +1382,7 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
              pLay->Lower() )
         {
             const ViewShell *pSh = pLay->getRootFrm()->GetCurrShell();
-            //Einschraenkungen wegen Kopf-/Fusszeilen
+            // Limitations because of headers / footers
             if( pSh && pSh->GetViewOptions()->getBrowseMode() &&
                 !( pLay->IsCompletePaint() && pLay->FindPageFrm()->FindFtnCont() ) )
                 bNoPaint = sal_True;
@@ -1415,7 +1409,7 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
             if( bPageInBrowseMode )
             {
                 // NOTE: no vertical layout in online layout
-                //Ist die Aenderung ueberhaupt sichtbar?
+                // Is the change even visible?
                 if ( pLay->IsCompletePaint() )
                 {
                     pImp->GetShell()->AddPaintRect( aPaint );
@@ -1523,9 +1517,9 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
     if ( IsAgain() )
         return sal_False;
 
-    //Jetzt noch diejenigen Lowers versorgen die LayoutFrm's sind
+    // Now, supply the lowers that are LayoutFrms
 
-    if ( pLay->IsFtnFrm() ) //Hat keine LayFrms als Lower.
+    if ( pLay->IsFtnFrm() ) // Has no LayFrms as Lower
         return bChanged;
 
     SwFrm *pLow = pLay->Lower();
@@ -1536,13 +1530,13 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
         {
             if ( pLow->IsTabFrm() )
                 bTabChanged |= FormatLayoutTab( (SwTabFrm*)pLow, bAddRect );
-            // bereits zum Loeschen angemeldete Ueberspringen
+            // Skip the ones already registered for deletion
             else if( !pLow->IsSctFrm() || ((SwSectionFrm*)pLow)->GetSection() )
                 bChanged |= FormatLayout( (SwLayoutFrm*)pLow, bAddRect );
         }
         else if ( pImp->GetShell()->IsPaintLocked() )
-            //Abkuerzung im die Zyklen zu minimieren, bei Lock kommt das
-            //Paint sowieso (Primaer fuer Browse)
+            // Shortcut to minimize the cycles. With Lock, the 
+            // paint is coming either way (primarily for browse)
             pLow->OptCalc();
 
         if ( IsAgain() )
@@ -1566,7 +1560,7 @@ sal_Bool SwLayAction::FormatLayout( SwLayoutFrm *pLay, sal_Bool bAddRect )
 
 sal_Bool SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
 {
-    OSL_ENSURE( !IsAgain(), "Ungueltige Seite beachten." );
+    OSL_ENSURE( !IsAgain(), "Attention to the invalid page." );
     if ( IsAgain() )
         return sal_False;
 
@@ -1575,7 +1569,7 @@ sal_Bool SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
 
     if ( !pFly->IsValid() || pFly->IsCompletePaint() || pFly->IsInvalid() )
     {
-        //Der Frame hat sich veraendert, er wird jetzt Formatiert
+        // The Frame has changed, now it's getting formatted.
         const SwRect aOldRect( pFly->Frm() );
         pFly->Calc();
         bChanged = aOldRect != pFly->Frm();
@@ -1603,7 +1597,7 @@ sal_Bool SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
     if ( IsAgain() )
         return sal_False;
 
-    //Jetzt noch diejenigen Lowers versorgen die LayoutFrm's sind
+    // Now, supply the lowers that are LayoutFrms
     sal_Bool bTabChanged = false;
     SwFrm *pLow = pFly->Lower();
     while ( pLow )
@@ -1624,7 +1618,7 @@ sal_Bool SwLayAction::FormatLayoutFly( SwFlyFrm* pFly )
 // Implement vertical layout support
 sal_Bool SwLayAction::FormatLayoutTab( SwTabFrm *pTab, sal_Bool bAddRect )
 {
-    OSL_ENSURE( !IsAgain(), "8-) Ungueltige Seite beachten." );
+    OSL_ENSURE( !IsAgain(), "8-) Attention to the invalid page." );
     if ( IsAgain() || !pTab->Lower() )
         return sal_False;
 
@@ -1740,12 +1734,12 @@ sal_Bool SwLayAction::FormatLayoutTab( SwTabFrm *pTab, sal_Bool bAddRect )
 
     pTimerAccess->UnblockIdling();
 
-    //Heftige Abkuerzung!
+    // Fierce shortcut!
     if ( pTab->IsLowersFormatted() &&
          (bPainted || !pImp->GetShell()->VisArea().IsOver( pTab->Frm())) )
         return sal_False;
 
-    //Jetzt noch die Lowers versorgen
+    // Now, supply the lowers
     if ( IsAgain() )
         return sal_False;
 
@@ -1783,13 +1777,12 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
 
     while ( pCntnt && pPage->IsAnLower( pCntnt ) )
     {
-        //Wenn der Cntnt sich eh nicht veraendert koennen wir ein paar
-        //Abkuerzungen nutzen.
+        // If the Cntnt didn't change, we can use a few shortcuts.
         const sal_Bool bFull = !pCntnt->IsValid() || pCntnt->IsCompletePaint() ||
                            pCntnt->IsRetouche() || pCntnt->GetDrawObjs();
         if ( bFull )
         {
-            //Damit wir nacher nicht suchen muessen.
+            // We do this so we don't have to search later on.
             const sal_Bool bNxtCnt = IsCalcLayout() && !pCntnt->GetFollow();
             const SwCntntFrm *pCntntNext = bNxtCnt ? pCntnt->GetNextCntntFrm() : 0;
             const SwCntntFrm *pCntntPrev = pCntnt->GetPrev() ? pCntnt->GetPrevCntntFrm() : 0;
@@ -1830,11 +1823,11 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
             if ( IsAgain() )
                 return sal_False;
 
-            //Wenn Layout oder Flys wieder Invalid sind breche ich die Verarbeitung
-            //vorlaeufig ab - allerdings nicht fuer die BrowseView, denn dort wird
-            //das Layout staendig ungueltig, weil die Seitenhoehe angepasst wird.
-            //Desgleichen wenn der Benutzer weiterarbeiten will und mindestens ein
-            //Absatz verarbeitet wurde.
+            // Temporarily interrupt processing if layout or Flys become invalid again.
+            // However not for the BrowseView: The layout is getting invalid 
+            // all the time because the page height gets adjusted.
+            // The same applies if the user wants to continue working and at least one
+            // paragraph has been processed.
             if ( (!pTab || (pTab && !bInValid)) )
             {
                 CheckIdleEnd();
@@ -1852,8 +1845,8 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
                 if (  nCurNum < pPage->GetPhyPageNum() )
                     nPreInvaPage = nCurNum;
 
-                //Wenn der Frm mehr als eine Seite rueckwaerts geflossen ist, so
-                //fangen wir nocheinmal von vorn an damit wir nichts auslassen.
+                // If the Frm flowed backwards more than one page, we need to
+                // start over again from the beginning, so nothing gets left out.
                 if ( !IsCalcLayout() && pPage->GetPhyPageNum() > nCurNum+1 )
                 {
                     SetNextCycle( sal_True );
@@ -1864,11 +1857,10 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
                     }
                 }
             }
-            //Wenn der Frame die Seite vorwaerts gewechselt hat, so lassen wir
-            //den Vorgaenger nocheinmal durchlaufen.
-            //So werden einerseits Vorgaenger erwischt, die jetzt f?r Retouche
-            //verantwortlich sind, andererseits werden die Fusszeilen
-            //auch angefasst.
+            // If the Frame moved forwards to the next page, we re-run through
+            // the predecessor.
+            // This way, we catch predecessors which are now responsible for
+            // retouching, but the footers will be touched also.
             sal_Bool bSetCntnt = sal_True;
             if ( pCntntPrev )
             {
@@ -1919,7 +1911,7 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
                     pImp->GetShell()->AddPaintRect( pCntnt->Frm() );
             }
 
-            //Falls der Frm schon vor der Abarbeitung hier formatiert wurde.
+            // Do this if the Frm has been formatted before.
             if ( pCntnt->IsTxtFrm() && ((SwTxtFrm*)pCntnt)->HasRepaint() &&
                   IsPaint() )
                 PaintCntnt( pCntnt, pPage, pCntnt->Frm(), pCntnt->Frm().Bottom());
@@ -1961,14 +1953,14 @@ sal_Bool SwLayAction::FormatCntnt( const SwPageFrm *pPage )
 |*
 |*  SwLayAction::_FormatCntnt()
 |*
-|*  Beschreibung        Returnt sal_True wenn der Absatz verarbeitet wurde,
-|*                      sal_False wenn es nichts zu verarbeiten gab.
+|*  Description         Returns sal_True if the paragraph has been processed,
+|*                      sal_False if there wasn't anything to be processed.
 |*
 |*************************************************************************/
 void SwLayAction::_FormatCntnt( const SwCntntFrm *pCntnt,
                                 const SwPageFrm  *pPage )
 {
-    //wird sind hier evtl. nur angekommen, weil der Cntnt DrawObjekte haelt.
+    // We probably only landed here because the Cntnt holds DrawObjects.
     const bool bDrawObjsOnly = pCntnt->IsValid() && !pCntnt->IsCompletePaint() &&
                          !pCntnt->IsRetouche();
     SWRECTFN( pCntnt )
@@ -1999,9 +1991,9 @@ void SwLayAction::_FormatCntnt( const SwCntntFrm *pCntnt,
 |*
 |*  SwLayAction::_FormatFlyCntnt()
 |*
-|*  Beschreibung:
-|*      - Returnt sal_True wenn alle Cntnts des Flys vollstaendig verarbeitet
-|*        wurden. sal_False wenn vorzeitig unterbrochen wurde.
+|*  Description:
+|*      - Returns sal_True if all Cntnts of the Fly have been processed completely.
+|*        Returns sal_False if processing has been interrupted prematurely.
 |*
 |*************************************************************************/
 sal_Bool SwLayAction::_FormatFlyCntnt( const SwFlyFrm *pFly )
@@ -2039,7 +2031,7 @@ sal_Bool SwLayAction::_FormatFlyCntnt( const SwFlyFrm *pFly )
         if ( IsAgain() )
             return sal_False;
 
-        //wenn eine Eingabe anliegt breche ich die Verarbeitung ab.
+        // If there's input, we interrupt processing.
         if ( !pFly->IsFlyInCntFrm() )
         {
             CheckIdleEnd();
@@ -2151,7 +2143,7 @@ sal_Bool SwLayIdle::_DoIdleJob( const SwCntntFrm *pCnt, IdleJobType eJob )
         }
     }
 
-    //Die im Absatz verankerten Flys wollen auch mitspielen.
+    // The Flys that are anchored to the paragraph wanna play too.
     if ( pCnt->GetDrawObjs() )
     {
         const SwSortedObjs &rObjs = *pCnt->GetDrawObjs();
@@ -2182,8 +2174,8 @@ sal_Bool SwLayIdle::_DoIdleJob( const SwCntntFrm *pCnt, IdleJobType eJob )
 
 sal_Bool SwLayIdle::DoIdleJob( IdleJobType eJob, sal_Bool bVisAreaOnly )
 {
-    //Spellchecken aller Inhalte der Seiten. Entweder nur der sichtbaren
-    //Seiten oder eben aller.
+    // Spellcheck all contents of the pages. Either only the 
+    // visible ones or all of them.
     const ViewShell* pViewShell = pImp->GetShell();
     const SwViewOption* pViewOptions = pViewShell->GetViewOptions();
     const SwDoc* pDoc = pViewShell->GetDoc();
@@ -2321,17 +2313,17 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
 
     pImp->GetShell()->EnableSmooth( sal_False );
 
-    //Zuerst den Sichtbaren Bereich Spellchecken, nur wenn dort nichts
-    //zu tun war wird das IdleFormat angestossen.
+    // First, spellcheck the visible area. Only if there's nothing
+    // to do there, we trigger the IdleFormat.
     if ( !DoIdleJob( SMART_TAGS, sal_True ) &&
          !DoIdleJob( ONLINE_SPELLING, sal_True ) &&
          !DoIdleJob( AUTOCOMPLETE_WORDS, sal_True ) ) // SMARTTAGS
     {
-        //Formatieren und ggf. Repaint-Rechtecke an der ViewShell vormerken.
-        //Dabei muessen kuenstliche Actions laufen, damit es z.B. bei
-        //Veraenderungen der Seitenzahl nicht zu unerwuenschten Effekten kommt.
-        //Wir merken uns bei welchen Shells der Cursor sichtbar ist, damit
-        //wir ihn bei Dokumentaenderung ggf. wieder sichbar machen koennen.
+        // Format, then register repaint rectangles with the ViewShell if necessary.
+        // This requires running artificial actions, so we don't get undesired 
+        // effects when for instance the page count gets changed.
+        // We remember the shells where the cursor is visible, so we can make
+        // it visible again if needed after a document change.
         std::vector<bool> aBools;
         ViewShell *pSh = pImp->GetShell();
         do
@@ -2354,8 +2346,8 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
         aAction.SetWaitAllowed( sal_False );
         aAction.Action();
 
-        //Weitere Start-/EndActions nur auf wenn irgendwo Paints aufgelaufen
-        //sind oder wenn sich die Sichtbarkeit des CharRects veraendert hat.
+        // Further start/end actions only happen if there were paints started
+        // somewhere or if the visibility of the CharRects has changed.
         sal_Bool bActions = sal_False;
         sal_uInt16 nBoolIdx = 0;
         do
@@ -2390,8 +2382,8 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
 
         if ( bActions )
         {
-            //Start- EndActions aufsetzen. ueber die CrsrShell, damit der
-            //Cursor/Selektion und die VisArea korrekt gesetzt werden.
+            // Prepare start/end actions via CrsrShell, so the cursor, selection
+            // and VisArea can be set correctly.
             nBoolIdx = 0;
             do
             {
@@ -2402,9 +2394,9 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
 //              else
 //                  pSh->StartAction();
 
-                //Wenn Paints aufgelaufen sind, ist es am sinnvollsten schlicht das
-                //gesamte Window zu invalidieren. Anderfalls gibt es Paintprobleme
-                //deren Loesung unverhaeltnissmaessig aufwendig waere.
+                // If there are accrued paints, it's best to simply invalidate 
+                // the whole window. Otherwise there would arise paint problems whose
+                // solution would be disproportionally expensive.
                 //fix(18176):
                 SwViewImp *pViewImp = pSh->Imp();
                 sal_Bool bUnlock = sal_False;
@@ -2412,14 +2404,14 @@ SwLayIdle::SwLayIdle( SwRootFrm *pRt, SwViewImp *pI ) :
                 {
                     pViewImp->DelRegion();
 
-                    //Fuer Repaint mit virtuellem Device sorgen.
+                    // Cause a repaint with virtual device.
                     pSh->LockPaint();
                     bUnlock = sal_True;
                 }
 
                 if ( bCrsrShell )
-                    //Wenn der Crsr sichbar war wieder sichbar machen, sonst
-                    //EndCrsrMove mit sal_True fuer IdleEnd.
+                    // If the Crsr was visible, we need to make it visible again.
+                    // Otherwise, EndCrsrMove with sal_True for IdleEnd
                     ((SwCrsrShell*)pSh)->EndCrsrMove( sal_True^aBools[nBoolIdx] );
 //              else
 //                  pSh->EndAction();
-- 
1.7.9.1


Attachment: signature.asc
Description: OpenPGP digital signature


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.