[PATCH] fdo#39468: Translated German comments

gerhard öttl (via_Code_Review) gerrit at gerrit.libreoffice.org
Wed Mar 20 06:20:51 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/2871

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/71/2871/1

fdo#39468: Translated German comments

I am not shure how to translate the german word "band" in this
context (bar/row/line/...) and decided for bar.

Change-Id: I85c8675881db9facdd543c02c846ec64642f8449
---
M sw/source/filter/ww8/ww8par2.cxx
1 file changed, 237 insertions(+), 253 deletions(-)



diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx
index e9a7f7e..2f83910 100644
--- a/sw/source/filter/ww8/ww8par2.cxx
+++ b/sw/source/filter/ww8/ww8par2.cxx
@@ -52,7 +52,7 @@
 #include <fmtftn.hxx>
 #include <charfmt.hxx>
 #include <SwStyleNameMapper.hxx>
-#include <fltshell.hxx>         // fuer den Attribut Stack
+#include <fltshell.hxx>         // for the attribute stack
 #include <fmtanchr.hxx>
 #include <fmtrowsplt.hxx>
 #include <fmtfollowtextflow.hxx> // #i33818#
@@ -67,7 +67,7 @@
 
 #include <iostream>
 
-#define MAX_COL 64  // WW6-Beschreibung: 32, WW6-UI: 31 & WW8-UI: 63!
+#define MAX_COL 64  // WW6-description: 32, WW6-UI: 31 & WW8-UI: 63!
 
 using namespace ::com::sun::star;
 
@@ -102,12 +102,12 @@
     short nLineHeight;
     short nRows;
     sal_uInt16 maDirections[MAX_COL + 1];
-    short nCenter[MAX_COL + 1]; // X-Rand aller Zellen dieses Bandes
-    short nWidth[MAX_COL + 1];  // Laenge aller Zellen dieses Bandes
-    short nWwCols;      // sal_uInt8 wuerde reichen, alignment -> short
-    short nSwCols;      // SW: so viele Spalten fuer den Writer
-    bool bLEmptyCol;    // SW: Links eine leere Zusatz-Spalte
-    bool bREmptyCol;    // SW: dito rechts
+    short nCenter[MAX_COL + 1]; // X-edge of all cells of this bar
+    short nWidth[MAX_COL + 1];  // length of all cells of this bar
+    short nWwCols;      // sal_uInt8 would be sufficient, alignment -> short
+    short nSwCols;      // SW: number of columns for the writer
+    bool bLEmptyCol;    // SW: an additional empty column at the left
+    bool bREmptyCol;    // SW: same at the right
     bool bCantSplit;
     bool bCantSplit90;
     WW8_TCell* pTCs;
@@ -117,8 +117,8 @@
     sal_uInt32* pNewSHDs;
     WW8_BRC aDefBrcs[6];
 
-    bool bExist[MAX_COL];           // Existiert diese Zelle ?
-    sal_uInt8 nTransCell[MAX_COL + 2];  // UEbersetzung WW-Index -> SW-Index
+    bool bExist[MAX_COL];           // does this cell exist ?
+    sal_uInt8 nTransCell[MAX_COL + 2];  // translation WW-Index -> SW-Index
 
     sal_uInt8 transCell(sal_uInt8 nWwCol) const
     {
@@ -126,7 +126,7 @@
     }
 
     WW8TabBandDesc();
-    WW8TabBandDesc(WW8TabBandDesc& rBand);    // tief kopieren
+    WW8TabBandDesc(WW8TabBandDesc& rBand);    // deep copy
     ~WW8TabBandDesc();
     static void setcelldefaults(WW8_TCell *pCells, short nCells);
     void ReadDef(bool bVer67, const sal_uInt8* pS);
@@ -170,13 +170,13 @@
 
     SwPosition* pTmpPos;
 
-    SwTableNode* pTblNd;            // Tabellen-Node
-    const SwTableLines* pTabLines;  // Zeilen-Array davon
-    SwTableLine* pTabLine;          // akt. Zeile
-    SwTableBoxes* pTabBoxes;        // Boxen-Array in akt. Zeile
-    SwTableBox* pTabBox;            // akt. Zelle
+    SwTableNode* pTblNd;            // table node
+    const SwTableLines* pTabLines;  // row array of node
+    SwTableLine* pTabLine;          // current row
+    SwTableBoxes* pTabBoxes;        // boxes array in current row
+    SwTableBox* pTabBox;            // current cell
 
-    WW8MergeGroups aMergeGroups;   // Listen aller zu verknuepfenden Zellen
+    WW8MergeGroups aMergeGroups;   // list of all cells to be merged
 
     WW8_TCell* pAktWWCell;
 
@@ -194,15 +194,15 @@
     bool bClaimLineFmt;
     sal_Int16 eOri;
     bool bIsBiDi;
-                                // 2. allgemeine Verwaltungsinfo
+                                // 2. common admin info
     short nAktRow;
-    short nAktBandRow;          // SW: in dieser Zeile des akt. Bandes bin ich
-                                // 3. Verwaltungsinfo fuer Writer
+    short nAktBandRow;          // SW: row of current bar
+                                // 3. admin info for writer
     short nAktCol;
 
     sal_uInt16 nRowsToRepeat;
 
-    // 4. Methoden
+    // 4. methods
 
     sal_uInt16 GetLogicalWWCol() const;
     void SetTabBorders( SwTableBox* pBox, short nIdx );
@@ -216,8 +216,8 @@
 
     WW8SelBoxInfo* FindMergeGroup(short nX1, short nWidth, bool bExact);
 
-    // einzelne Box ggfs. in eine Merge-Gruppe aufnehmen
-    // (die Merge-Gruppen werden dann spaeter auf einen Schlag abgearbeitet)
+    // single box - maybe used in a merge group
+    // (the merge groups are processed later at once)
     SwTableBox* UpdateTableMergeGroup(WW8_TCell& rCell,
         WW8SelBoxInfo* pActGroup, SwTableBox* pActBox, sal_uInt16 nCol  );
     void StartMiserableHackForUnsupportedDirection(short nWwCol);
@@ -226,7 +226,7 @@
     WW8TabDesc(const WW8TabDesc&);
     WW8TabDesc &operator=(const WW8TabDesc&);
 public:
-    const SwTable* pTable;          // Tabelle
+    const SwTable* pTable;          // table
     SwPosition* pParentPos;
     SwFlyFrmFmt* pFlyFmt;
     SfxItemSet aItemSet;
@@ -366,7 +366,7 @@
     if (pFN)
     {
 
-        SwPosition aTmpPos( *pPaM->GetPoint() );    // merke alte Cursorposition
+        SwPosition aTmpPos( *pPaM->GetPoint() );    // remember old cursor position
         WW8PLCFxSaveAll aSave;
         pPlcxMan->SaveAllPLCFx( aSave );
         WW8PLCFMan* pOldPlcxMan = pPlcxMan;
@@ -612,7 +612,7 @@
     return aRet;
 }
 //---------------------------------------------------------------------
-//   Hilfroutinen fuer Kapitelnummerierung und Aufzaehlung / Gliederung
+// helper methods for outline, numbering and bullets
 //---------------------------------------------------------------------
 
 static void SetBaseAnlv(SwNumFmt &rNum, WW8_ANLV &rAV, sal_uInt8 nSwLevel )
@@ -623,7 +623,7 @@
 
     static SvxAdjust eAdjA[4] = { SVX_ADJUST_LEFT,
         SVX_ADJUST_RIGHT, SVX_ADJUST_LEFT, SVX_ADJUST_LEFT };
-//          eigentlich folgende 2, aber Writer-UI bietet es nicht an
+//      in fact the following 2, but writer UI does not provide
 //      SVX_ADJUST_CENTER, SVX_ADJUST_BLOCKLINE };
 
     rNum.SetNumberingType( static_cast< sal_Int16 >(( SVBT8ToByte( rAV.nfc ) < 8 ) ?
@@ -642,13 +642,13 @@
         rNum.SetAbsLSpace( nIndent );
     }
     else
-        rNum.SetCharTextDistance( nIndent );        // Breite der Nummer fehlt
+        rNum.SetCharTextDistance( nIndent );        // width of number is missing
 
     if( SVBT8ToByte( rAV.nfc ) == 5 || SVBT8ToByte( rAV.nfc ) == 7 )
     {
         String sP( rNum.GetSuffix() );
         sP.Insert( '.', 0 );
-        rNum.SetSuffix( sP );   // Ordinalzahlen
+        rNum.SetSuffix( sP );   // ordinal number
     }
 }
 
@@ -677,17 +677,17 @@
     }
 
     if( bOutline )
-    {                             // Gliederung
-        if( !rNum.GetIncludeUpperLevels()           // es sind  <= 1 Nummern anzuzeigen
-            || rNum.GetNumberingType() == SVX_NUM_NUMBER_NONE )    // oder dieser Level hat keine
+    {                             // outline
+        if( !rNum.GetIncludeUpperLevels()                          // there are  <= 1 number to show
+            || rNum.GetNumberingType() == SVX_NUM_NUMBER_NONE )    // or this level has none
         {
-                                                // eigenen Ziffern
-            bInsert = true;                     // -> dann uebernehme Zeichen
+                                                // if self defined digits
+            bInsert = true;                     // then apply character
 
             // replace by simple Bullet ?
             if( bListSymbol )
             {
-                //cBulletChar benutzen, damit auf dem MAC richtig gemappt wird
+                // use cBulletChar for correct mapping on MAC
                 OUStringBuffer aBuf;
                 comphelper::string::padToLength(aBuf, SVBT8ToByte(rAV.cbTextBefore)
                     + SVBT8ToByte(rAV.cbTextAfter), cBulletChar);
@@ -696,7 +696,7 @@
         }
     }
     else
-    {                                       // Nummerierung / Aufzaehlung
+    {                                       // numbering / bullets
         bInsert = true;
         if( bListSymbol )
         {
@@ -738,38 +738,38 @@
                                   SVBT8ToByte( rAV.cbTextAfter  ) ) );
             rNum.SetSuffix( sP );
         }
-// Die Zeichen vor und hinter mehreren Ziffern koennen leider nicht uebernommen
-// werden, da sie der Writer ganz anders behandelt und das Ergebnis i.A.
-// schlechter als ohne waere.
+// The characters before and after multipe digits do not apply because
+// those are handled different by the writer and the result is in most
+// cases worse than without.
     }
 }
 
-// SetAnld bekommt einen WW-ANLD-Descriptor und einen Level und modifiziert
-// die durch pNumR anggebeben NumRules. Wird benutzt fuer alles ausser
-// Gliederung im Text
+// SetAnld gets a WW-ANLD-Descriptor and a Level and modifies the NumRules
+// which are provided by pNumR. This is used for everything beside
+// outline inside the text.
 void SwWW8ImplReader::SetAnld(SwNumRule* pNumR, WW8_ANLD* pAD, sal_uInt8 nSwLevel,
     bool bOutLine)
 {
     SwNumFmt aNF;
     if (pAD)
-    {                                   // Es gibt einen Anld-Sprm
+    {                                                       // there is a Anld-Sprm
         bAktAND_fNumberAcross = 0 != SVBT8ToByte( pAD->fNumberAcross );
         WW8_ANLV &rAV = pAD->eAnlv;
-        SetBaseAnlv(aNF, rAV, nSwLevel);        // Setze Basis-Format
-        SetAnlvStrings(aNF, rAV, pAD->rgchAnld, bOutLine );// und Rest
+        SetBaseAnlv(aNF, rAV, nSwLevel);                    // set the base format
+        SetAnlvStrings(aNF, rAV, pAD->rgchAnld, bOutLine ); // set the rest
     }
     pNumR->Set(nSwLevel, aNF);
 }
 
 //-------------------------------------------------------
-//          Kapitelnummerierung und Kapitelbullets
+// chapter numbering and bullets
 //-------------------------------------------------------
-// Kapitelnummerierung findet in Styledefinionen statt. Sprm 13 gibt den Level
-// an, Sprm 12 den Inhalt
+// Chapter numbering happens in the style definition.
+// Sprm 13 provides the level, Sprm 12 the content.
 
 SwNumRule* SwWW8ImplReader::GetStyRule()
 {
-    if( pStyles->pStyRule )         // Bullet-Style bereits vorhanden
+    if( pStyles->pStyRule )         // Bullet-Style already present
         return pStyles->pStyRule;
 
     const String aBaseName(rtl::OUString("WW8StyleNum"));
@@ -788,7 +788,7 @@
 // Sprm 13
 void SwWW8ImplReader::Read_ANLevelNo( sal_uInt16, const sal_uInt8* pData, short nLen )
 {
-    nSwNumLevel = 0xff; // Default: ungueltig
+    nSwNumLevel = 0xff; // Default: invalid
 
     if( nLen <= 0 )
         return;
@@ -796,27 +796,27 @@
     // StyleDef ?
     if( pAktColl )
     {
-        // nur fuer SwTxtFmtColl, nicht CharFmt
+        // only for SwTxtFmtColl, not CharFmt
         // WW: 0 = no Numbering
         SwWW8StyInf * pColl = GetStyle(nAktColl);
         if (pColl != NULL && pColl->bColl && *pData)
         {
-            // Bereich WW:1..9 -> SW:0..8 keine Aufzaehlung / Nummerierung
+            // Range WW:1..9 -> SW:0..8 no bullets / numbering
 
             if (*pData <= MAXLEVEL && *pData <= 9)
             {
                 nSwNumLevel = *pData - 1;
                 if (!bNoAttrImport)
                     ((SwTxtFmtColl*)pAktColl)->AssignToListLevelOfOutlineStyle( nSwNumLevel ); //<-end,zhaojianwei
-                    // Bei WW-NoNumbering koennte auch NO_NUMBERING gesetzt
-                    // werden. ( Bei normaler Nummerierung muss NO_NUM gesetzt
-                    // werden: NO_NUM : Nummerierungs-Pause,
-                    // NO_NUMBERING : ueberhaupt keine Nummerierung )
+                    // For WW-NoNumbering also NO_NUMBERING could be used.
+                    // ( For normal numberierung NO_NUM has to be used:
+                    //   NO_NUM : pauses numbering,
+                    //   NO_NUMBERING : no numbering at all )
 
             }
             else if( *pData == 10 || *pData == 11 )
             {
-                // Typ merken, der Rest geschieht bei Sprm 12
+                // remember type, the rest happens at Sprm 12
                 pStyles->nWwNumLevel = *pData;
             }
         }
@@ -825,7 +825,7 @@
     {
         //Not StyleDef
         if (!bAnl)
-            StartAnl(pData);        // Anfang der Gliederung / Aufzaehlung
+            StartAnl(pData);        // begin of outline / bullets
         NextAnlLine(pData);
     }
 }
@@ -870,19 +870,18 @@
 }
 
 //-----------------------------------------
-//      Nummerierung / Aufzaehlung
+// Numbering / Bullets
 //-----------------------------------------
 
-// SetNumOlst() traegt die Numrules fuer diese Zeile ins SwNumFmt ein
-// ( nur fuer Gliederungen im Text; Aufzaehlungen / Nummerierungen laufen
-// ueber ANLDs )
-// dabei wird die Info aus dem OLST geholt und nicht aus dem ANLD ( s.u. )
+// SetNumOlst() carries the Numrules for this cell to SwNumFmt.
+// For this the info is fetched from OLST and not from ANLD ( see later )
+// ( only for outline inside text; Bullets / numbering use ANLDs )
 void SwWW8ImplReader::SetNumOlst(SwNumRule* pNumR, WW8_OLST* pO, sal_uInt8 nSwLevel)
 {
     SwNumFmt aNF;
     WW8_ANLV &rAV = pO->rganlv[nSwLevel];
     SetBaseAnlv(aNF, rAV, nSwLevel);
-                                            // ... und then the Strings
+                                            // ... and then the Strings
     int nTxtOfs = 0;
     sal_uInt8 i;
     WW8_ANLV* pAV1;                 // search String-Positions
@@ -894,14 +893,14 @@
 
     if (!bVer67)
         nTxtOfs *= 2;
-    SetAnlvStrings(aNF, rAV, pO->rgch + nTxtOfs, true); // und rein
+    SetAnlvStrings(aNF, rAV, pO->rgch + nTxtOfs, true); // and apply
     pNumR->Set(nSwLevel, aNF);
 }
 
-// der OLST kommt am Anfang jeder Section, die Gliederungen enthaelt. Die ANLDs,
-// die an jeder Gliederungszeile haengen, enthalten nur Stuss, also werden die
-// OLSTs waehrend der Section gemerkt, damit die Informationen beim Auftreten
-// von Gliederungsabsaetzen zugreifbar ist.
+// The OLST is at the beginning of each section that contains outlines.
+// The ANLDs that are connected to each outline-line contain only nonsense,
+// so the OLSTs are remembered for the section to have usable information
+// when outline-paragraphs occur.
 void SwWW8ImplReader::Read_OLST( sal_uInt16, const sal_uInt8* pData, short nLen )
 {
     delete pNumOlst;
@@ -911,7 +910,7 @@
         return;
     }
     pNumOlst = new WW8_OLST;
-    if( nLen < sal::static_int_cast< sal_Int32 >(sizeof( WW8_OLST )) )         // auffuellen, falls zu kurz
+    if( nLen < sal::static_int_cast< sal_Int32 >(sizeof( WW8_OLST )) )   // fill if to short
         memset( pNumOlst, 0, sizeof( *pNumOlst ) );
     *pNumOlst = *(WW8_OLST*)pData;
 }
@@ -944,8 +943,8 @@
 }
 
 
-// StartAnl wird am Anfang eines Zeilenbereichs gerufen,
-//  der Gliederung / Nummerierung / Aufzaehlung enthaelt
+// StartAnl is called at the beginning of a row area that contains
+// outline / numbering / bullets
 void SwWW8ImplReader::StartAnl(const sal_uInt8* pSprm13)
 {
     bAktAND_fNumberAcross = false;
@@ -1008,15 +1007,15 @@
 
     bAnl = true;
 
-    // NumRules ueber Stack setzen
+    // set NumRules via stack
     pCtrlStck->NewAttr(*pPaM->GetPoint(),
         SfxStringItem(RES_FLTR_NUMRULE, pNumRule->GetName()));
 
     maANLDRules.SetNumRule(pNumRule, nWwNumType);
 }
 
-// NextAnlLine() wird fuer jede Zeile einer
-// Gliederung / Nummerierung / Aufzaehlung einmal gerufen
+// NextAnlLine() is called once for every row of a
+// outline / numbering / bullet
 void SwWW8ImplReader::NextAnlLine(const sal_uInt8* pSprm13)
 {
     if (!bAnl)
@@ -1027,25 +1026,25 @@
     // pNd->UpdateNum ohne Regelwerk gibt GPF spaetestens beim Speichern als
     // sdw3
 
-    // WW:10 = Nummerierung -> SW:0 & WW:11 = Auffzaehlung -> SW:0
+    // WW:10 = numberierung -> SW:0 & WW:11 = bullets -> SW:0
     if (*pSprm13 == 10 || *pSprm13 == 11)
     {
         nSwNumLevel = 0;
         if (!pNumRule->GetNumFmt(nSwNumLevel))
         {
-            // noch nicht definiert
+            // not defined yet
             // sprmAnld o. 0
             const sal_uInt8* pS12 = pPlcxMan->HasParaSprm(bVer67 ? 12 : 0xC63E);
             SetAnld(pNumRule, (WW8_ANLD*)pS12, nSwNumLevel, false);
         }
     }
-    else if( *pSprm13 > 0 && *pSprm13 <= MAXLEVEL )          // Bereich WW:1..9 -> SW:0..8
+    else if( *pSprm13 > 0 && *pSprm13 <= MAXLEVEL )          // range WW:1..9 -> SW:0..8
     {
-        nSwNumLevel = *pSprm13 - 1;             // Gliederung
-        // noch nicht definiert
+        nSwNumLevel = *pSprm13 - 1;             // outline
+        // undefined
         if (!pNumRule->GetNumFmt(nSwNumLevel))
         {
-            if (pNumOlst)                       // es gab ein OLST
+            if (pNumOlst)                       // there was a OLST
             {
                 //Assure upper levels are set, #i9556#
                 for (sal_uInt8 nI = 0; nI < nSwNumLevel; ++nI)
@@ -1056,7 +1055,7 @@
 
                 SetNumOlst(pNumRule, pNumOlst , nSwNumLevel);
             }
-            else                                // kein Olst, nimm Anld
+            else                                // no Olst -> use Anld
             {
                 // sprmAnld
                 const sal_uInt8* pS12 = pPlcxMan->HasParaSprm(bVer67 ? 12 : 0xC63E);
@@ -1065,7 +1064,7 @@
         }
     }
     else
-        nSwNumLevel = 0xff;                 // keine Nummer
+        nSwNumLevel = 0xff;                 // no number
 
     SwTxtNode* pNd = pPaM->GetNode()->GetTxtNode();
     if (nSwNumLevel < MAXLEVEL)
@@ -1134,15 +1133,15 @@
     memcpy(aDefBrcs, rBand.aDefBrcs, sizeof(aDefBrcs));
 }
 
-// ReadDef liest die Zellenpositionen und ggfs die Umrandungen eines Bandes ein
+// ReadDef reads the cell position and the borders of a bar
 void WW8TabBandDesc::ReadDef(bool bVer67, const sal_uInt8* pS)
 {
     if (!bVer67)
         pS++;
 
-    short nLen = (sal_Int16)SVBT16ToShort( pS - 2 ); // nicht schoen
+    short nLen = (sal_Int16)SVBT16ToShort( pS - 2 ); // not beautiful
 
-    sal_uInt8 nCols = *pS;                       // Anzahl der Zellen
+    sal_uInt8 nCols = *pS;                       // number of cells
     short nOldCols = nWwCols;
 
     if( nCols > MAX_COL )
@@ -1154,20 +1153,20 @@
     nLen --;
     int i;
     for(i=0; i<=nCols; i++, pT+=2 )
-        nCenter[i] = (sal_Int16)SVBT16ToShort( pT );    // X-Raender
+        nCenter[i] = (sal_Int16)SVBT16ToShort( pT );    // X-borders
     nLen -= 2 * ( nCols + 1 );
-    if( nCols != nOldCols ) // andere Spaltenzahl
+    if( nCols != nOldCols ) // different column count
     {
         delete[] pTCs, pTCs = 0;
         delete[] pSHDs, pSHDs = 0;
         delete[] pNewSHDs, pNewSHDs = 0;
     }
 
-    short nFileCols = nLen / ( bVer67 ? 10 : 20 );  // wirklich abgespeichert
+    short nFileCols = nLen / ( bVer67 ? 10 : 20 );  // realy saved
 
     if (!pTCs && nCols)
     {
-        // lege leere TCs an
+        // create empty TCs
         pTCs = new WW8_TCell[nCols];
         setcelldefaults(pTCs,nCols);
     }
@@ -1178,15 +1177,15 @@
 
     if( nColsToRead )
     {
-        // lies TCs ein
+        // read TCs
 
         /*
-            Achtung: ab Ver8 ist ein reserve-ushort je TC eingefuegt und auch
-                     der Border-Code ist doppelt so gross, daher ist hier
-                             kein simples kopieren moeglich,
-                             d.h.: pTCs[i] = *pTc;  geht leider nicht.
+            Attention: Beginning with Ver8 there is an extra ushort per TC
+                       added and the size of the border code is doubled.
+                       Because of this a simple copy (pTCs[i] = *pTc;)
+                       is not possible.
             ---
-            Vorteil: Arbeitstruktur ist jetzt viel bequemer zu handhaben!
+            Advantage: The work structure suits better.
         */
         WW8_TCell* pAktTC  = pTCs;
         if( bVer67 )
@@ -1195,7 +1194,7 @@
             for(i=0; i<nColsToRead; i++, ++pAktTC,++pTc)
             {
                 if( i < nColsToRead )
-                {               // TC aus File ?
+                {               // TC from file ?
                     sal_uInt8 aBits1 = SVBT8ToByte( pTc->aBits1Ver6 );
                     pAktTC->bFirstMerged    = ( ( aBits1 & 0x01 ) != 0 );
                     pAktTC->bMerged     = ( ( aBits1 & 0x02 ) != 0 );
@@ -1210,13 +1209,13 @@
                     if(    ( pAktTC->bMerged )
                             && ( i > 0             ) )
                     {
-                        // Cell gemerged -> merken
+                        // Cell gemerged -> remember
                         //bWWMergedVer6[i] = true;
                         memcpy( pTCs[i-1].rgbrc[ WW8_RIGHT ].aBits1,
                                 pTc->rgbrcVer6[  WW8_RIGHT ].aBits1, sizeof( SVBT16 ) );
-                            // right Border in vorige Zelle uebernehmen
-                            // Hier darf bExist nicht auf false gesetzt werden, da WW
-                            // in den Textboxen diese Zellen nicht mitzaehlt....
+                            // apply right border to previous cell
+                            // bExist must not be set to false, because WW
+                            // does not count this cells in text boxes....
                     }
                 }
             }
@@ -1235,10 +1234,10 @@
                 pAktTC->bVertMerge      = ( ( aBits1 & 0x0020 ) != 0 );
                 pAktTC->bVertRestart    = ( ( aBits1 & 0x0040 ) != 0 );
                 pAktTC->nVertAlign      = ( ( aBits1 & 0x0180 ) >> 7 );
-                // am Rande: im aBits1 verstecken sich noch 7 Reserve-Bits,
-                //           anschliessend folgen noch 16 weitere Reserve-Bits
+                // note: in aBits1 there are 7 bits unused,
+                //       followed by another 16 unused bits
 
-                // In Version 8 koennen wir alle Bordercodes auf einmal kopieren!
+                // In Version 8 koennen we can copy all border codes at once!
                 memcpy( pAktTC->rgbrc, pTc->rgbrcVer8, 4 * sizeof( WW8_BRC ) );
             }
         }
@@ -1610,8 +1609,8 @@
     }
 }
 
-// ReadShd liest ggfs die Hintergrundfarben einer Zeile ein.
-// Es muss vorher ReadDef aufgerufen worden sein
+// ReadShd reads the background color of a cell
+// ReadDef must be called before
 void WW8TabBandDesc::ReadShd(const sal_uInt8* pS )
 {
     sal_uInt8 nLen = pS ? *(pS - 1) : 0;
@@ -1857,7 +1856,7 @@
         const sal_uInt8* pNewShadeSprm = 0;
         WW8_TablePos *pTabPos  = 0;
 
-        // Suche Ende einer TabZeile
+        // search end of a tab row
         if(!(pIo->SearchRowEnd(pPap, nStartCp, pIo->nInTable)))
         {
             bOk = false;
@@ -1978,10 +1977,10 @@
             }
         }
 
-        // WW-Tabellen koennen Fly-Wechsel beinhalten daher hier
-        // Tabellen abbrechen und neu beginnen noch steht *pPap noch vor
-        // TabRowEnd, daher kann TestApo() mit letztem Parameter false und
-        // damit wirksam gerufen werden.
+        // WW-Tables can contain Fly-changes. For this abort tables here
+        // and start again. *pPap is still before TabRowEnd, so TestApo()
+        // can be called with the last parameter set to false and therefore
+        // take effect.
 
         if (bTabRowJustRead)
         {
@@ -2102,14 +2101,14 @@
     {
         if( pActBand->nRows > 1 )
         {
-            // Letztes Band hat mehr als 1 Zeile
+            // last bar has more than 1 cell
             delete pNewBand;
-            pNewBand = new WW8TabBandDesc( *pActBand ); // neues machen
+            pNewBand = new WW8TabBandDesc( *pActBand ); // create new
             pActBand->nRows--;      // wegen Sonderbehandlung Raender-Defaults
             pNewBand->nRows = 1;
             pActBand->pNextBand = pNewBand; // am Ende einschleifen
             nBands++;
-            pNewBand = 0;                   // nicht loeschen
+            pNewBand = 0;                   // do not delete
         }
         CalcDefaults();
     }
@@ -2201,13 +2200,12 @@
         }
     }
 
-    // 2. Durchlauf: Zahl der Writer-Spalten feststellen Die Zahl der Writer
-    // Spalten kann um bis zu 2 hoeher sein als im WW, da der SW im Gegensatz
-    // zu WW keine ausgefransten linken und rechten Raender kann und diese
-    // durch leere Boxen aufgefuellt werden.  Durch nichtexistente Zellen
-    // koennen auch Zellen wegfallen
+    // 2. pass: Detect number of writer columns. This can exceed the count
+    // of columns in WW by 2, because SW in constrast to WW does not provide
+    // fringed left and right borders and has to fill with empty boxes.
+    // Non exisitent cells can reduce the number of columns.
 
-        // 3. Durchlauf: Wo noetig die Umrandungen durch die Defaults ersetzen
+    // 3. pass: Replace border with defaults if needed
     nConvertedLeft = nMinLeft;
 
     short nLeftMaxThickness = 0, nRightMaxThickness=0;
@@ -2231,19 +2229,19 @@
                     switch( i )
                     {
                     case 0:
-                        // Aussen oben  / Innen waagerecht
+                        // table outer top / horizontally inside (between cells)
                         j = (pR == pFirstBand) ? 0 : 4;
                         break;
                     case 1:
-                        // Aussen links / Innen senkrecht
+                        // table outer left / vertically inside (between cells)
                         j = k ? 5 : 1;
                         break;
                     case 2:
-                        // Aussen unten / Innen waagerecht
+                        // table outer bottom  / horizontally inside (between cells)
                         j = pR->pNextBand ? 4 : 2;
                         break;
                     case 3:
-                        // Aussen rechts/ Innen senkrecht
+                        // table outer right / vertically inside (between cells)
                         j = (k == pR->nWwCols - 1) ? 3 : 5;
                         break;
                     }
@@ -2336,8 +2334,8 @@
                 pR->nTransCell[n] = pR->nTransCell[k];
         }
 
-        pR->nTransCell[i++] = (sal_Int8)(j++);  // Wird u.a. wegen bREmptyCol um
-        pR->nTransCell[i] = (sal_Int8)j;        // max. 2 ueberindiziert
+        pR->nTransCell[i++] = (sal_Int8)(j++);  // Can exceed by 2 among other
+        pR->nTransCell[i] = (sal_Int8)j;        // things because of bREmptyCol
 
         pR->nSwCols = pR->nSwCols + nAddCols;
         if( pR->nSwCols < nMinCols )
@@ -2355,7 +2353,7 @@
         (nMinLeft != -108 && bIsBiDi && text::HoriOrientation::RIGHT == eOri)) // Word sets the first nCenter value to -108 when no indent is used
         eOri = text::HoriOrientation::LEFT_AND_WIDTH; //  absolutely positioned
 
-    nDefaultSwCols = nMinCols;  // da Zellen einfuegen billiger ist als Mergen
+    nDefaultSwCols = nMinCols;  // because inserting cells is cheaper than merging
     if( nDefaultSwCols == 0 )
         bOk = false;
     pActBand = pFirstBand;
@@ -2433,10 +2431,10 @@
 
     pTmpPos = new SwPosition( *pIo->pPaM->GetPoint() );
 
-    // Die Tabelle ist beim Einfuegen noch recht klein: Zahl der Spalten ist
-    // die kleinste Spaltenanzahl des Originals, da Spalten einfuegen
-    // schneller geht als Loeschen Zahl der Zeilen ist die Zahl der Baender,
-    // da sich die (identischen) Zeilen eines Bandes prima duplizieren lassen
+    // The table is small: The number of columns is the lowest count of
+    // columns of the origin, because inserting is faster than deleting.
+    // The number of rows is the count of bars because (identically)
+    // rows of a bar can be duplicated easy.
     pTable = pIo->rDoc.InsertTable(
             SwInsertTableOptions( tabopts::HEADLINE_NO_BORDER, 0 ),
             *pTmpPos, nBands, nDefaultSwCols, eOri, 0, 0, sal_False, sal_True );
@@ -2453,10 +2451,10 @@
             *pTableNode);
     }
 
-    // Abfrage, ob im Node, in dem die Tabelle eingefuegt werden soll, bereits
-    // ein Pagedesc steht. Dann wuerde der PageDesc in die naechste Zeile
-    // hinter der Tabelle rutschen, wo er nichts zu suchen hat.  -> loeschen
-    // und spaeter an das Tabellenformat setzen
+    // Check if the node into which the table should be inserted already
+    // contains a Pagedesc. If so that Pagedesc would be moved to the
+    // row after the table, whats wrong. So delete and
+    // set later to the table format.
     if (SwTxtNode *const pNd = pTmpPos->nNode.GetNode().GetTxtNode())
     {
         if (const SfxItemSet* pSet = pNd->GetpSwAttrSet())
@@ -2469,7 +2467,7 @@
                 pNd->ResetAttr( RES_BREAK );
             }
 
-            // evtl den PageDesc/Break jetzt an der Tabelle setzen
+            // eventually set the PageDesc/Break now to the table
             if (pSetAttr)
             {
                 aItemSet.Put(*pSetAttr);
@@ -2478,7 +2476,7 @@
         }
     }
 
-    // Gesamtbreite der Tabelle
+    // total width of table
     if( nMaxRight - nMinLeft > MINLAY * nDefaultSwCols )
     {
         pTable->GetFrmFmt()->SetFmtAttr(SwFmtFrmSize(ATT_FIX_SIZE, nSwWidth));
@@ -2545,7 +2543,7 @@
 
 void WW8TabDesc::UseSwTable()
 {
-    // globale Varis initialisieren
+    // init global Vars
     pTabLines = &pTable->GetTabLines();
     nAktRow = nAktCol = nAktBandRow = 0;
 
@@ -2558,13 +2556,13 @@
         nRowsToRepeat = 1;
 
     pTblNd->GetTable().SetRowsToRepeat( nRowsToRepeat );
-    // ggfs. Zusatz-Zellen einfuegen u.dgl.
+    // insert extra cells if needed and something like this
     AdjustNewBand();
 
     WW8DupProperties aDup(pIo->rDoc,pIo->pCtrlStck);
     pIo->pCtrlStck->SetAttr(*pIo->pPaM->GetPoint(), 0, false);
 
-    // jetzt den PaM korrekt setzen und ggfs. erste Mergegruppe vorbereiten...
+    // now set the correct PaM and prepare first merger group if any
     SetPamInCell(nAktCol, true);
     aDup.Insert(*pIo->pPaM->GetPoint());
 
@@ -2578,9 +2576,7 @@
 
     for (pActBand=pFirstBand, nRow=0; pActBand; pActBand=pActBand->pNextBand)
     {
-        //
-        // ggfs. aktuelle Box in entsprechende Merge-Gruppe eintragen
-        //
+        // insert current box into merge group if appropriate
         if( pActBand->pTCs )
         {
             for( short j = 0; j < pActBand->nRows; j++, nRow++ )
@@ -2588,7 +2584,7 @@
                 {
                     WW8SelBoxInfo* pActMGroup = 0;
                     //
-                    // ggfs. eine neue Merge-Gruppe beginnen
+                    // start a new merge group if appropriate
                     //
                     OSL_ENSURE(nRow < (sal_uInt16)pTabLines->size(),
                         "Too few lines, table ended early");
@@ -2606,7 +2602,7 @@
                         return;
                     pTabBox = (*pTabBoxes)[nCol];
                     WW8_TCell& rCell = pActBand->pTCs[ i ];
-                    // ist dies die obere, linke-Zelle einer Merge-Gruppe ?
+                    // is this the left upper cell of a merge group ?
 
                     bool bMerge = false;
                     if ( rCell.bVertRestart && !rCell.bMerged )
@@ -2646,13 +2642,13 @@
                         short nX1    = pActBand->nCenter[ i ];
                         short nWidth = pActBand->nWidth[ i ];
 
-                        // 2. aktuelle Merge-Gruppe anlegen
+                        // 2. create current merge group
                         pActMGroup = new WW8SelBoxInfo( nX1, nWidth );
 
                         // determine size of new merge group
                         // before inserted the new merge group.
                         // Needed to correctly locked previously created merge groups.
-                        // Gesamtbreite ermitteln und zuweisen
+                        // Calculate total width and set
                         short nSizCell = pActBand->nWidth[ i ];
                         for (sal_uInt16 i2 = i+1; i2 < pActBand->nWwCols; i2++ )
                             if (pActBand->pTCs[ i2 ].bMerged &&
@@ -2666,9 +2662,8 @@
 
                         // locked previously created merge groups,
                         // after determining the size for the new merge group.
-                        // 1. ggfs. alte Mergegruppe(n) schliessen, die
-                        // den von unserer neuen Gruppe betroffenen
-                        // X-Bereich ueberdecken
+                        // 1. If necessary close old merge group(s) that overlap
+                        // the X-area of the new group
                         for (;;)
                         {
                             WW8SelBoxInfo* p = FindMergeGroup(
@@ -2680,13 +2675,12 @@
                             p->bGroupLocked = true;
                         }
 
-                        // 3. und in Gruppen-Array eintragen
+                        // 3. push to group array
                         aMergeGroups.push_back(pActMGroup);
                     }
 
-                    // ggfs. akt. Box zu einer Merge-Gruppe hinzufuegen (dies
-                    // kann eine soeben angelegte, oder eine andere Gruppe
-                    // sein)
+                    // if necessary add the current box to a merge group
+                    // (that can be a newly created or another group)
                     UpdateTableMergeGroup( rCell, pActMGroup, pTabBox, i );
                 }
             }
@@ -2753,10 +2747,10 @@
 
     MergeCells();
 
-    // falls noetig, zu mergende Zellen gruppenweise zusammenfassen
+    // if needed group cells together that should be merged
     if( !aMergeGroups.empty() )
     {
-        // bearbeite alle Merge-Gruppen nacheinander
+        // process all merge groups one by one
         for (
                 WW8MergeGroups::iterator groupIt = aMergeGroups.begin();
                 groupIt != aMergeGroups.end();
@@ -2783,54 +2777,54 @@
 }
 
 
-// durchsucht aMergeGroups, meldet Index der ersten, passenden Gruppe bzw. -1
+// browse aMergeGroups, detect the index of the first fitting group or -1 otherwise
 //
-// Parameter: nXcenter  = Mittenposition der anfragenden Box
-//            nWidth    = Breite der anfragenden Box
-//            bExact    = Flag, ob Box in dieser Gruppe passen muss,
-//                          oder diese nur zu tangieren braucht
+// Parameter: nXcenter  = center position of asking box
+//            nWidth    = width of asking box
+//            bExact    = flag, if box has to fit into group
+//                              or only has to touch
 //
 WW8SelBoxInfo* WW8TabDesc::FindMergeGroup(short nX1, short nWidth, bool bExact)
 {
     if( !aMergeGroups.empty() )
     {
-        // noch als gueltig angesehener Bereich in der Naehe der Grenzen
+        // still valid area near the boundery
         const short nToleranz = 4;
-        // Boxgrenzen
+        // box boundery
         short nX2 = nX1 + nWidth;
-        // ungefaehre Gruppengrenzen
+        // approximate group boundery
         short nGrX1;
         short nGrX2;
 
         // improvement: search backwards
         for ( short iGr = aMergeGroups.size() - 1; iGr >= 0; --iGr )
         {
-            // die aktuell untersuchte Gruppe
+            // the currently inspected group
             WW8SelBoxInfo& rActGroup = aMergeGroups[ iGr ];
             if (!rActGroup.bGroupLocked)
             {
-                // ungefaehre Gruppengrenzen mit Toleranz nach *aussen* hin
+                // approximate group boundery with room (tolerance) to the *outside*
                 nGrX1 = rActGroup.nGroupXStart - nToleranz;
                 nGrX2 = rActGroup.nGroupXStart
                              +rActGroup.nGroupWidth  + nToleranz;
                 //
-                // Falls Box reinpasst, melde auf jeden Fall den Erfolg
+                // If box fits report success
                 //
                 if( ( nX1 > nGrX1 ) && ( nX2 < nGrX2 ) )
                 {
                     return &rActGroup;
                 }
                 //
-                // hat die Box Bereiche mit der Gruppe gemeinsam?
+                // does the box share areas with the group?
                 //
                 if( !bExact )
                 {
-                    // melde Erfolg, wenn nX1 *oder* nX2 innerhalb der Gruppe liegen
+                    // successful if nX1 *or* nX2 are inside the group
                     if(    (     ( nX1 > nGrX1 )
                                         && ( nX1 < nGrX2 - 2*nToleranz ) )
                             || (     ( nX2 > nGrX1 + 2*nToleranz )
                                         && ( nX2 < nGrX2 ) )
-                            // oder nX1 und nX2 die Gruppe umfassen
+                            // or nX1 and nX2 surround the group
                             || (     ( nX1 <=nGrX1 )
                                         && ( nX2 >=nGrX2 ) ) )
                     {
@@ -2953,14 +2947,11 @@
         {
             pIo->pPaM->GetPoint()->nNode = pTabBox->GetSttIdx() + 1;
             pIo->pPaM->GetPoint()->nContent.Assign(pIo->pPaM->GetCntntNode(), 0);
-            // Zur Sicherheit schon jetzt setzen, da bei den Zellen, die
-            // zum Randausgleich eingefuegt werden, sonst der Style
-            // nicht gesetzt wird.
+            // Precautionally set now, otherwise the style is not set for cells
+            // that are inserted for margin balancing.
             pIo->rDoc.SetTxtFmtColl(*pIo->pPaM, (SwTxtFmtColl*)pIo->pDfltTxtFmtColl);
-            // uebrigens: da diese Zellen unsichtbare Hilfskonstruktionen sind,
-            //            und nur dazu dienen, zerfranste Aussehen der WW-Tabelle
-            //            nachzuahmen, braucht NICHT SetTxtFmtCollAndListLevel()
-            //            verwendet zu werden.
+            // because this cells are invisible helper constructions only to simulate
+            // the frayed view of WW-tables we do NOT need SetTxtFmtCollAndListLevel()
         }
 
         // Better to turn Snap to Grid off for all paragraphs in tables
@@ -2997,14 +2988,14 @@
 
     pIo->rDoc.GetNodes().InsBoxen( pTblNd, pTabLine, (SwTableBoxFmt*)pTabBox->GetFrmFmt(),
                             (SwTxtFmtColl*)pIo->pDfltTxtFmtColl, 0, pTabBoxes->size(), nIns );
-    // mit dem Dritten Parameter wird das FrmFmt der Boxen angegeben.
-    // hier kann man auch noch optimieren, um FrmFmts zu sparen
+    // The third parameter contains the FrmFmt of the boxes.
+    // Here it is possible to optimize to save (reduce) FrmFmts.
 }
 
 void WW8TabDesc::SetTabBorders(SwTableBox* pBox, short nWwIdx)
 {
     if( nWwIdx < 0 || nWwIdx >= pActBand->nWwCols )
-        return;                 // kuenstlich erzeugte Zellen -> Kein Rand
+        return;                 // faked cells -> no border
 
 
     SvxBoxItem aFmtBox( RES_BOX );
@@ -3032,8 +3023,7 @@
     else
         aFmtBox.SetDistance(pActBand->mnDefaultBottom,BOX_LINE_BOTTOM);
 
-    // nGapHalf bedeutet bei WW ein *horizontaler* Abstand zwischen
-    // Tabellenzelle und -Inhalt
+    // nGapHalf for WW is a *horizontal* gap between table cell and content.
     short nLeftDist =
         pActBand->mbHasSpacing ? pActBand->mnDefaultLeft : pActBand->nGapHalf;
     short nRightDist =
@@ -3061,7 +3051,7 @@
 void WW8TabDesc::SetTabShades( SwTableBox* pBox, short nWwIdx )
 {
     if( nWwIdx < 0 || nWwIdx >= pActBand->nWwCols )
-        return;                 // kuenstlich erzeugte Zellen -> Keine Farbe
+        return;                 // faked cells -> no color
 
     bool bFound=false;
     if (pActBand->pNewSHDs && pActBand->pNewSHDs[nWwIdx] != COL_AUTO)
@@ -3148,7 +3138,7 @@
 
 void WW8TabDesc::AdjustNewBand()
 {
-    if( pActBand->nSwCols > nDefaultSwCols )        // Zellen splitten
+    if( pActBand->nSwCols > nDefaultSwCols )        // split cells
         InsertCells( pActBand->nSwCols - nDefaultSwCols );
 
     SetPamInCell( 0, false);
@@ -3157,22 +3147,22 @@
 
     if( bClaimLineFmt )
     {
-        pTabLine->ClaimFrmFmt();            // noetig wg. Zeilenhoehe
+        pTabLine->ClaimFrmFmt();            // necessary becaus of cell height
         SwFmtFrmSize aF( ATT_MIN_SIZE, 0, 0 );  // default
 
         if (pActBand->nLineHeight == 0)    // 0 = Auto
             aF.SetHeightSizeType( ATT_VAR_SIZE );
         else
         {
-            if (pActBand->nLineHeight < 0) // Pos = min, Neg = exakt
+            if (pActBand->nLineHeight < 0) // positive = min, negative = exact
             {
                 aF.SetHeightSizeType(ATT_FIX_SIZE);
                 pActBand->nLineHeight = -pActBand->nLineHeight;
             }
-            if (pActBand->nLineHeight < MINLAY) // nicht erlaubte Zeilenhoehe
+            if (pActBand->nLineHeight < MINLAY) // invalid cell height
                 pActBand->nLineHeight = MINLAY;
 
-            aF.SetHeight(pActBand->nLineHeight);// Min- / Exakt-Hoehe setzen
+            aF.SetHeight(pActBand->nLineHeight);// set min/exact height
         }
         pTabLine->GetFrmFmt()->SetFmtAttr(aF);
     }
@@ -3190,13 +3180,13 @@
 
     short i;    // SW-Index
     short j;    // WW-Index
-    short nW;   // Breite
+    short nW;   // Width
     SwFmtFrmSize aFS( ATT_FIX_SIZE );
     j = pActBand->bLEmptyCol ? -1 : 0;
 
     for( i = 0; i < pActBand->nSwCols; i++ )
     {
-        // setze Zellenbreite
+        // set cell width
         if( j < 0 )
             nW = pActBand->nCenter[0] - nMinLeft;
         else
@@ -3213,8 +3203,7 @@
         }
 
         SwTableBox* pBox = (*pTabBoxes)[i];
-        // liesse sich durch intelligentes Umhaengen der FrmFmts noch weiter
-        // verringern
+        // could be reduced further by intelligent moving of FrmFmts
         pBox->ClaimFrmFmt();
 
         SetTabBorders(pBox, j);
@@ -3255,7 +3244,7 @@
         aFS.SetWidth( nW );
         pBox->GetFrmFmt()->SetFmtAttr( aFS );
 
-        // ueberspringe nicht existente Zellen
+        // skip non existing cells
         while( ( j < pActBand->nWwCols ) && !pActBand->bExist[j] )
         {
             pActBand->nWidth[j] = pActBand->nCenter[j+1] - pActBand->nCenter[j];
@@ -3270,7 +3259,7 @@
 
     EndMiserableHackForUnsupportedDirection(nAktCol);
 
-    // neue Zeile
+    // new line/row
     if( pIo->bWasTabRowEnd )
     {
         // bWasTabRowEnd will be deactivated in
@@ -3289,13 +3278,13 @@
         OSL_ENSURE( pActBand , "pActBand ist 0" );
         if( pActBand )
         {
-            if( nAktRow >= nRows )  // am Tabellenende gibt's nichts sinnvolles
-                return;                 // mehr zu tun
+            if( nAktRow >= nRows )  // nothing to at end of table
+                return;
 
             bool bNewBand = nAktBandRow >= pActBand->nRows;
             if( bNewBand )
-            {                       // neues Band noetig ?
-                pActBand = pActBand->pNextBand; //
+            {                       // new bar needed ?
+                pActBand = pActBand->pNextBand;
                 nAktBandRow = 0;
                 OSL_ENSURE( pActBand, "pActBand ist 0" );
                 AdjustNewBand();
@@ -3309,7 +3298,7 @@
         }
     }
     else
-    {                       // neue Spalte ( Zelle )
+    {                       // new column ( cell )
         nAktCol++;
     }
     SetPamInCell(nAktCol, true);
@@ -3319,16 +3308,16 @@
         pIo->StopAllAnl(IsValidCell(nAktCol));
 }
 
-// ggfs. die Box in fuer diese Col offene Merge-Gruppe eintragen
+// if necessary register the box for the merge group for this column
 SwTableBox* WW8TabDesc::UpdateTableMergeGroup(  WW8_TCell&     rCell,
                                                 WW8SelBoxInfo* pActGroup,
                                                 SwTableBox*    pActBox,
                                                 sal_uInt16         nCol )
 {
-    // Rueckgabewert defaulten
+    // set default for return
     SwTableBox* pResult = 0;
 
-    // pruefen, ob die Box zu mergen ist
+    // check if the box has to be merged
     // If cell is the first one to be merged, a new merge group has to be provided.
     // E.g., it could be that a cell is the first one to be merged, but no
     // new merge group is provided, because the potential other cell to be merged
@@ -3339,14 +3328,14 @@
            rCell.bVertMerge ||
            rCell.bVertRestart ) )
     {
-        // passende Merge-Gruppe ermitteln
+        // detect appropriate merge group
         WW8SelBoxInfo* pTheMergeGroup = 0;
         if( pActGroup )
-            // Gruppe uebernehmen
+            // assign group
             pTheMergeGroup = pActGroup;
         else
         {
-            // Gruppe finden
+            // find group
             pTheMergeGroup = FindMergeGroup(
                 pActBand->nCenter[ nCol ], pActBand->nWidth[  nCol ], true );
         }
@@ -3574,10 +3563,9 @@
     }
 }
 
-// GetTableLeft() wird fuer absatzgebundene Grafikobjekte in Tabellen
-// gebraucht.
-// WW nimmt bei eingerueckten Tabellen den Absatzrand, der ohne Tabelle
-// gueltig waere, als Basis; SW benutzt den linken Tabellenrand.
+// GetTableLeft() is needed for graphic objects bound to paragraphs in tables.
+// For indented tables the base for WW is the margin that would be used without
+// the table; SW uses the left table margin.
 short SwWW8ImplReader::GetTableLeft()
 {
     return (pTableDesc) ? pTableDesc->GetMinLeft() : 0;
@@ -3650,7 +3638,7 @@
 
     if( bPap )
     {
-        pParaSprms = pSprms;   // fuer HasParaSprms()
+        pParaSprms = pSprms;   // for HasParaSprms()
         nSprmsLen = nLen;
     }
 
@@ -3714,7 +3702,7 @@
         nLen-=2;
 
         if ( cbUPX > nLen )
-            cbUPX = nLen;       // !cbUPX auf nLen verkleinert!
+            cbUPX = nLen;       // shrink cbUPX to nLen
 
         if( (1 < cbUPX) || ( (0 < cbUPX) && !bPAP ) )
         {
@@ -3729,8 +3717,8 @@
 
             if( 0 < cbUPX )
             {
-                sal_Size nPos = pStStrm->Tell(); // falls etwas falsch interpretiert
-                                                 // wird, gehts danach wieder richtig
+                sal_Size nPos = pStStrm->Tell(); // if something is interpreted wrong,
+                                                 // this should make it work again
                 ImportSprms( nPos, cbUPX, bPAP );
 
                 if ( pStStrm->Tell() != nPos + cbUPX )
@@ -3830,7 +3818,7 @@
         bStyExist = aResult.second;
     }
 
-    bool bImport = !bStyExist || pIo->mbNewDoc; // Inhalte Importieren ?
+    bool bImport = !bStyExist || pIo->mbNewDoc; // import content ?
     bool bOldNoImp = pIo->bNoAttrImport;
     rSI.bImportSkipped = !bImport;
 
@@ -3842,10 +3830,10 @@
         {
             pColl->ResetAllFmtAttr(); // #i73790# - method renamed
         }
-        pColl->SetAuto(false);          // nach Empfehlung JP
-    }                                   // macht die UI aber anders
+        pColl->SetAuto(false);          // suggested by JP
+    }                                   // but changes the UI
     pIo->pAktColl = pColl;
-    rSI.pFmt = pColl;                  // UEbersetzung WW->SW merken
+    rSI.pFmt = pColl;                  // remember translation WW->SW
     rSI.bImportSkipped = !bImport;
 
     // Set Based on style
@@ -3855,7 +3843,7 @@
         SwWW8StyInf* pj = &pIo->vColl[j];
         if (rSI.pFmt && pj->pFmt && rSI.bColl == pj->bColl)
         {
-            rSI.pFmt->SetDerivedFrom( pj->pFmt );  // ok, Based on eintragen
+            rSI.pFmt->SetDerivedFrom( pj->pFmt );  // ok, set Based on
             rSI.eLTRFontSrcCharSet = pj->eLTRFontSrcCharSet;
             rSI.eRTLFontSrcCharSet = pj->eRTLFontSrcCharSet;
             rSI.eCJKFontSrcCharSet = pj->eCJKFontSrcCharSet;
@@ -3872,9 +3860,9 @@
     else if( pIo->mbNewDoc && bStyExist )
         rSI.pFmt->SetDerivedFrom(0);
 
-    rSI.nFollow = nNextStyle;       // Follow merken
+    rSI.nFollow = nNextStyle;       // remember Follow
 
-    pStyRule = 0;                   // falls noetig, neu anlegen
+    pStyRule = 0;                   // recreate if necessary
     bTxtColChanged = bFontChanged = bCJKFontChanged = bCTLFontChanged =
         bFSizeChanged = bFCTLSizeChanged = bWidowsChanged = false;
     pIo->SetNAktColl( nThisStyle );
@@ -3884,8 +3872,7 @@
 
 void WW8RStyle::PostStyle(SwWW8StyInf &rSI, bool bOldNoImp)
 {
-    // Alle moeglichen Attribut-Flags zuruecksetzen,
-    // da es in Styles keine Attr-Enden gibt
+    // Reset attribute flags, because there are no style-ends.
 
     pIo->bHasBorder = pIo->bShdTxtCol = pIo->bCharShdTxtCol
         = pIo->bSpec = pIo->bObj = pIo->bSymbol = false;
@@ -3894,19 +3881,16 @@
     // If Style basiert auf Nichts oder Basis ignoriert
     if ((rSI.nBase >= cstd || pIo->vColl[rSI.nBase].bImportSkipped) && rSI.bColl)
     {
-        //! Char-Styles funktionieren aus
-        // unerfindlichen Gruenden nicht
-        // -> dann evtl. harte WW-Defaults
-        // reinsetzen
+        // If Char-Styles does not work
+        // -> set hard WW-Defaults
         Set1StyleDefaults();
     }
 
-    pStyRule = 0;                   // zur Sicherheit
+    pStyRule = 0;                   // to be on the safe side
     pIo->bStyNormal = false;
     pIo->SetNAktColl( 0 );
     pIo->bNoAttrImport = bOldNoImp;
-    // rasch nochmal die Listen-Merk-Felder zuruecksetzen,
-    // fuer den Fall dass sie beim einlesen des Styles verwendet wurden
+    // reset the list-remember-fields, if used when reading styles
     pIo->nLFOPosition = USHRT_MAX;
     pIo->nListLevel = WW8ListManager::nMaxLevel;
 }
@@ -3921,10 +3905,9 @@
     if( rSI.bImported || !rSI.bValid )
         return;
 
-    rSI.bImported = true;                      // jetzt schon Flag setzen
-                                                // verhindert endlose Rekursion
+    rSI.bImported = true;                      // set flag now to avoid endless loops
                                                 //
-    // gueltig und nicht NIL und noch nicht Importiert
+    // valid and not NUL and not yet imported
 
     if( rSI.nBase < cstd && !pIo->vColl[rSI.nBase].bImported )
         Import1Style( rSI.nBase );
@@ -3934,7 +3917,7 @@
     short nSkip, cbStd;
     String sName;
 
-    boost::scoped_ptr<WW8_STD> xStd(Read1Style(nSkip, &sName, &cbStd));// lies Style
+    boost::scoped_ptr<WW8_STD> xStd(Read1Style(nSkip, &sName, &cbStd));// read Style
 
     if (xStd)
         rSI.SetOrgWWIdent( sName, xStd->sti );
@@ -3949,7 +3932,7 @@
 
     bool bOldNoImp = PrepareStyle(rSI, static_cast<ww::sti>(xStd->sti), nNr, xStd->istdNext);
 
-    // falls etwas falsch interpretiert wird, gehts danach wieder richtig
+    // if something is interpreted wrong, this should make it work again
     long nPos = pStStrm->Tell();
 
     //Variable parts of the STD start at even byte offsets, but "inside
@@ -4019,26 +4002,26 @@
     }
 }
 
-void WW8RStyle::ScanStyles()        // untersucht Style-Abhaengigkeiten
-{                               // und ermittelt die Filepos fuer jeden Style
+void WW8RStyle::ScanStyles()        // investigate style dependencies
+{                                   // and detect Filepos for each Style
     for (sal_uInt16 i = 0; i < cstd; ++i)
     {
         short nSkip;
         SwWW8StyInf &rSI = pIo->vColl[i];
 
-        rSI.nFilePos = pStStrm->Tell();        // merke FilePos
+        rSI.nFilePos = pStStrm->Tell();        // remember FilePos
         WW8_STD* pStd = Read1Style( nSkip, 0, 0 );  // read STD
         rSI.bValid = (0 != pStd);
         if (rSI.bValid)
         {
-            rSI.nBase = pStd->istdBase;        // merke Basis
+            rSI.nBase = pStd->istdBase;        // remember Basis
             rSI.bColl = ( pStd->sgc == 1 );    // Para-Style
         }
         else
             rSI = SwWW8StyInf();
 
         delete pStd;
-        pStStrm->SeekRel( nSkip );              // ueberlese Namen und Sprms
+        pStStrm->SeekRel( nSkip );              // skip Names and Sprms
     }
 }
 
@@ -4465,7 +4448,7 @@
 
 void WW8RStyle::ImportNewFormatStyles()
 {
-    ScanStyles();                       // Scanne Based On
+    ScanStyles();                       // Scan Based On
 
     for (sal_uInt16 i = 0; i < cstd; ++i) // import Styles
         if (pIo->vColl[i].bValid)
@@ -4499,24 +4482,25 @@
         if( j < cstd )
         {
             SwWW8StyInf* pj = &pIo->vColl[j];
-            if ( j != i                             // sinnvoller Index ?
+            if ( j != i                             // rational Index ?
                  && pi->pFmt                        // Format ok ?
                  && pj->pFmt                        // Derived-Format ok ?
-                 && pi->bColl                       // geht nur bei Absatz-Vorlagen (WW)
-                 && pj->bColl ){                    // beides gleicher Typ ?
+                 && pi->bColl                       // only possible for paragraph templates (WW)
+                 && pj->bColl ){                    // identical Typ ?
                     ( (SwTxtFmtColl*)pi->pFmt )->SetNextTxtFmtColl(
-                     *(SwTxtFmtColl*)pj->pFmt );    // ok, eintragen
+                     *(SwTxtFmtColl*)pj->pFmt );    // ok, register
             }
         }
     }
-// Die Sonderbehandlung zur Setzen der
-// Default-Zeichenvorlage "Absatz-Standardschriftart" ( Style-ID 65 ) fehlt
-// Sie ist aber defaultmaessig leer ( WW6 dt und US ) und von der
-// WW-UI nicht zu veraendern, so dass das nicht stoert.
-// Der Mechanismus waere folgender:
-//  if( bNew ) rDoc.SetDefault( pDefCharFmt->GetAttrSet() );
-//
-    // fuer z.B. Tabellen wird ein immer gueltiger Std-Style gebraucht
+
+    // Missing special handling for default character template
+    // "Absatz-Standardschriftart" ( Style-ID 65 ).
+    // That is empty by default ( WW6 dt and US ) and not changeable
+    // via WW-UI so this does not matter.
+    // This could be done by:
+    //  if( bNew ) rDoc.SetDefault( pDefCharFmt->GetAttrSet() );
+    //
+    // for e.g. tables an always valid Std-Style is necessary
 
     if( pIo->StyleExists(0) && !pIo->vColl.empty() &&
         pIo->vColl[0].pFmt && pIo->vColl[0].bColl && pIo->vColl[0].bValid )
@@ -4553,7 +4537,7 @@
         }
     }
 
-    // wir sind jetzt nicht mehr beim Style einlesen:
+    // we do not read styles anymore:
     pIo->pAktColl = 0;
 }
 

-- 
To view, visit https://gerrit.libreoffice.org/2871
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I85c8675881db9facdd543c02c846ec64642f8449
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: gerhard öttl <lodev at ogersoft.at>



More information about the LibreOffice mailing list