[Libreoffice-commits] .: 2 commits - tools/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Sun Aug 19 12:27:32 PDT 2012


 tools/source/datetime/tdate.cxx    |   10 -
 tools/source/datetime/ttime.cxx    |   20 +--
 tools/source/debug/debug.cxx       |    2 
 tools/source/fsys/comdep.hxx       |   18 +-
 tools/source/fsys/dirent.cxx       |  179 ++++++++++++++---------------
 tools/source/fsys/filecopy.cxx     |   14 +-
 tools/source/fsys/tdir.cxx         |   44 +++----
 tools/source/fsys/unx.cxx          |   17 +-
 tools/source/fsys/wldcrd.cxx       |   19 +--
 tools/source/fsys/wntmsc.cxx       |   41 +++---
 tools/source/generic/b3dtrans.cxx  |   54 ++++----
 tools/source/generic/bigint.cxx    |   73 +++++-------
 tools/source/generic/config.cxx    |  109 ++++++++---------
 tools/source/generic/fract.cxx     |  128 ++++++++-------------
 tools/source/generic/gen.cxx       |   10 -
 tools/source/generic/poly.cxx      |   51 +++-----
 tools/source/generic/poly2.cxx     |   34 +----
 tools/source/generic/svborder.cxx  |    4 
 tools/source/memtools/multisel.cxx |   18 +-
 tools/source/memtools/unqidx.cxx   |   23 +--
 tools/source/rc/resmgr.cxx         |   41 +++---
 tools/source/ref/errinf.cxx        |   57 +++------
 tools/source/ref/globname.cxx      |    3 
 tools/source/ref/pstm.cxx          |  225 ++++++++++++++-----------------------
 tools/source/stream/cachestr.cxx   |    5 
 tools/source/stream/stream.cxx     |  127 +++++++++-----------
 tools/source/stream/strmunx.cxx    |   18 +-
 tools/source/stream/strmwnt.cxx    |   34 ++---
 tools/source/string/strascii.cxx   |   82 ++++++-------
 tools/source/string/strimp.cxx     |  102 +++++++---------
 tools/source/string/tustring.cxx   |  122 ++++++++------------
 31 files changed, 750 insertions(+), 934 deletions(-)

New commits:
commit 17d4bb38fad453cc56a93f8cb9f389ed6ee03af8
Author: Philipp Riemer <ruderphilipp at gmail.com>
Date:   Sun Aug 19 21:19:29 2012 +0200

    cleanup files in tools/source
    
    This is a follow-up patch of 7710faa45640d25a83136a35044aafdb1b168d88.
    
    Change-Id: I1f54cbe5c3170e9a79e11e9b9c1da3791419a4ba

diff --git a/tools/source/datetime/tdate.cxx b/tools/source/datetime/tdate.cxx
index 2cb3ab0..d1a6c94 100644
--- a/tools/source/datetime/tdate.cxx
+++ b/tools/source/datetime/tdate.cxx
@@ -232,10 +232,10 @@ sal_uInt16 Date::GetWeekOfYear( DayOfWeek eStartDay,
         // x_monday - thursday
         if ( n1WDay < nMinimumNumberOfDaysInWeek )
             nWeek = 1;
-        // friday
+        // Friday
         else if ( n1WDay == nMinimumNumberOfDaysInWeek )
             nWeek = 53;
-        // saturday
+        // Saturday
         else if ( n1WDay == nMinimumNumberOfDaysInWeek + 1 )
         {
             // Year after leapyear
@@ -244,7 +244,7 @@ sal_uInt16 Date::GetWeekOfYear( DayOfWeek eStartDay,
             else
                 nWeek = 52;
         }
-        // sunday
+        // Sunday
         else
             nWeek = 52;
 
diff --git a/tools/source/debug/debug.cxx b/tools/source/debug/debug.cxx
index 1f30ef1..3d573b5 100644
--- a/tools/source/debug/debug.cxx
+++ b/tools/source/debug/debug.cxx
@@ -45,7 +45,7 @@
 
 #ifdef DBG_UTIL
 
-// --- PointerList ---
+// PointerList
 
 #define PBLOCKCOUNT     1024
 
diff --git a/tools/source/fsys/comdep.hxx b/tools/source/fsys/comdep.hxx
index eae34a3..1b0a04b 100644
--- a/tools/source/fsys/comdep.hxx
+++ b/tools/source/fsys/comdep.hxx
@@ -63,9 +63,9 @@ struct DirReader_Impl
                     bInUse( sal_False )
                 {
 
-                    // only use the String from Memer-Var
+                    // only use the String from Member-Var
 
-#if defined(UNX)    //for further eplanation see DirReader_Impl::Read() in unx.cxx
+#if defined(UNX)    // for further explanation see DirReader_Impl::Read() in unx.cxx
                     pDosDir = NULL;
 #else
                     aBypass = rtl::OUStringToOString(aPath, osl_getThreadTextEncoding());
@@ -84,18 +84,18 @@ struct DirReader_Impl
                 { if( pDosDir ) closedir( pDosDir ); }
 
     // Init and Read are system-independent
-    sal_uInt16  Init(); // Initializes (and if necessary) reads devices
-    sal_uInt16  Read(); // Reads one entry and appends it if ok
+    sal_uInt16  Init(); ///< Initializes (and if necessary) reads devices
+    sal_uInt16  Read(); ///< Reads one entry and appends it if ok
 };
 
 
 struct FileCopier_Impl
 {
-    FSysAction      nActions;       // action command  (Copy/Move/recur)
-    Link            aErrorLink;     // link to call upon errors
-    ErrCode         eErr;           // current errorcode in the handler
-    const DirEntry* pErrSource;     // for error handlers in case of Source error
-    const DirEntry* pErrTarget;     // for error handlers in case of Target error
+    FSysAction      nActions;       ///< action command  (Copy/Move/recur)
+    Link            aErrorLink;     ///< link to call upon errors
+    ErrCode         eErr;           ///< current errorcode in the handler
+    const DirEntry* pErrSource;     ///< for Error-Handler in case of Source error
+    const DirEntry* pErrTarget;     ///< for Error-Handler in case of Target error
 
                     FileCopier_Impl()
                     :   nActions( 0 ), eErr( 0 ),
diff --git a/tools/source/fsys/dirent.cxx b/tools/source/fsys/dirent.cxx
index 919e1c9..aef1299 100644
--- a/tools/source/fsys/dirent.cxx
+++ b/tools/source/fsys/dirent.cxx
@@ -998,7 +998,7 @@ sal_Bool DirEntry::operator==( const DirEntry& rEntry ) const
 {
     DBG_CHKTHIS( DirEntry, ImpCheckDirEntry );
 
-    // test wheather the contents are textual the same
+    // test whether the contents are textual the same
 
     if ( nError && ( nError == rEntry.nError ) )
         return sal_True;
diff --git a/tools/source/fsys/wntmsc.cxx b/tools/source/fsys/wntmsc.cxx
index f2eeffc..80fa6e8 100644
--- a/tools/source/fsys/wntmsc.cxx
+++ b/tools/source/fsys/wntmsc.cxx
@@ -586,6 +586,7 @@ sal_Bool FileStat::Update( const DirEntry& rDirEntry, sal_Bool bForceAccess )
         }
 
         // Special treatment if it's a root without device
+
         if ( !rDirEntry.aName.getLength() && rDirEntry.eFlag == FSYS_FLAG_ABSROOT )
         {
             nKindFlags = FSYS_KIND_DIR;
diff --git a/tools/source/generic/poly.cxx b/tools/source/generic/poly.cxx
index b15c97c..9f66f90 100644
--- a/tools/source/generic/poly.cxx
+++ b/tools/source/generic/poly.cxx
@@ -793,7 +793,7 @@ void Polygon::Optimize( sal_uIntPtr nOptimizeFlags, const PolyOptimizeData* pDat
 }
 
 
-/* Recursively subdivide cubic bezier curve via deCasteljau.
+/** Recursively subdivide cubic bezier curve via deCasteljau.
 
    @param rPointIter
    Output iterator, where the subdivided polylines are written to.
diff --git a/tools/source/ref/errinf.cxx b/tools/source/ref/errinf.cxx
index 48087a7..7126c06 100644
--- a/tools/source/ref/errinf.cxx
+++ b/tools/source/ref/errinf.cxx
@@ -156,13 +156,11 @@ ErrorInfo* EDcr_Impl::GetDynamicErrorInfo(sal_uIntPtr lId)
         return new ErrorInfo(lId & ~ERRCODE_DYNAMIC_MASK);
 }
 
-
 sal_uInt16 DynamicErrorInfo::GetDialogMask() const
 {
     return pImpl->nMask;
 }
 
-
 StringErrorInfo::StringErrorInfo(
     sal_uIntPtr UserId, const String& aStringP,  sal_uInt16 nFlags)
 : DynamicErrorInfo(UserId, nFlags), aString(aStringP)
diff --git a/tools/source/stream/stream.cxx b/tools/source/stream/stream.cxx
index c0a20ec..6ca4d07 100644
--- a/tools/source/stream/stream.cxx
+++ b/tools/source/stream/stream.cxx
@@ -745,8 +745,8 @@ rtl::OUString read_zeroTerminated_uInt8s_ToOUString(SvStream& rStream, rtl_TextE
         read_zeroTerminated_uInt8s_ToOString(rStream), eEnc);
 }
 
-//Attempt to write a prefixed sequence of nUnits 16bit units from an OUString,
-//returned value is number of bytes written
+/** Attempt to write a prefixed sequence of nUnits 16bit units from an OUString,
+    returned value is number of bytes written */
 sal_Size write_uInt16s_FromOUString(SvStream& rStrm, const rtl::OUString& rStr,
     sal_Size nUnits)
 {
diff --git a/tools/source/stream/strmwnt.cxx b/tools/source/stream/strmwnt.cxx
index 7f1e47d..1d7dfb2 100644
--- a/tools/source/stream/strmwnt.cxx
+++ b/tools/source/stream/strmwnt.cxx
@@ -17,9 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-/*
-    Todo: StreamMode <-> AllocateMemory
-*/
+// TODO: StreamMode <-> AllocateMemory
 
 #include <string.h>
 #include <limits.h>
commit 9cadf9bdf3c9210d9b79eaaed32282d6b7bf9e12
Author: Oliver Günther <mail at oliverguenther.de>
Date:   Sat Aug 11 23:01:00 2012 +0000

    fdo#39468: Translated German comments in core/tools/source
    
    Change-Id: I28ec097a70a8d71312d9e8382c3cf71a1eabde88

diff --git a/tools/source/datetime/tdate.cxx b/tools/source/datetime/tdate.cxx
index f49433a..2cb3ab0 100644
--- a/tools/source/datetime/tdate.cxx
+++ b/tools/source/datetime/tdate.cxx
@@ -238,7 +238,7 @@ sal_uInt16 Date::GetWeekOfYear( DayOfWeek eStartDay,
         // saturday
         else if ( n1WDay == nMinimumNumberOfDaysInWeek + 1 )
         {
-            // Jahr nach Schaltjahr
+            // Year after leapyear
             if ( Date( 1, 1, GetYear()-1 ).IsLeapYear() )
                 nWeek = 53;
             else
@@ -256,7 +256,7 @@ sal_uInt16 Date::GetWeekOfYear( DayOfWeek eStartDay,
                 nWeek = (nDayOfYear + n1WDay) / 7;
             if ( nWeek == 53 )
             {
-                // next x_Sonntag == first x_Sonntag in the new year
+                // next x_Sunday == first x_Sunday in the new year
                 // == still the same week!
                 long nTempDays = DateToDays( GetDay(), GetMonth(), GetYear() );
                 nTempDays +=  6 - (GetDayOfWeek()+(7-(short)eStartDay)) % 7;
diff --git a/tools/source/datetime/ttime.cxx b/tools/source/datetime/ttime.cxx
index 9667718..b32c090 100644
--- a/tools/source/datetime/ttime.cxx
+++ b/tools/source/datetime/ttime.cxx
@@ -41,7 +41,7 @@ static sal_Int32 TimeToSec100( const Time& rTime )
     sal_Int32   nSec    = rTime.GetSec();
     sal_Int32   n100Sec = rTime.Get100Sec();
 
-//  Wegen Interal Compiler Error bei MSC, etwas komplizierter
+//  Due to interal compiler error in MSC a little bit more complicated:
 //  return (n100Sec + (nSec*100) + (nMin*60*100) + (nHour*60*60*100) * nSign);
 
     sal_Int32 nRet = n100Sec;
@@ -74,7 +74,7 @@ Time::Time( TimeInitSystem )
     SYSTEMTIME aDateTime;
     GetLocalTime( &aDateTime );
 
-    // Zeit zusammenbauen
+    // construct time
     nTime = (((sal_Int32)aDateTime.wHour)*1000000) +
             (((sal_Int32)aDateTime.wMinute)*10000) +
             (((sal_Int32)aDateTime.wSecond)*100) +
@@ -83,10 +83,10 @@ Time::Time( TimeInitSystem )
     time_t     nTmpTime;
     struct tm aTime;
 
-    // Zeit ermitteln
+    // determine time
     nTmpTime = time( 0 );
 
-    // Zeit zusammenbauen
+    // construct time
     if ( localtime_r( &nTmpTime, &aTime ) )
     {
         nTime = (((sal_Int32)aTime.tm_hour)*1000000) +
@@ -105,7 +105,7 @@ Time::Time( const Time& rTime )
 
 Time::Time( sal_uIntPtr nHour, sal_uIntPtr nMin, sal_uIntPtr nSec, sal_uIntPtr n100Sec )
 {
-    // Zeit normalisieren
+    // normalize time
     nSec    += n100Sec / 100;
     n100Sec  = n100Sec % 100;
     nMin    += nSec / 60;
@@ -113,7 +113,7 @@ Time::Time( sal_uIntPtr nHour, sal_uIntPtr nMin, sal_uIntPtr nSec, sal_uIntPtr n
     nHour   += nMin / 60;
     nMin     = nMin % 60;
 
-    // Zeit zusammenbauen
+    // construct time
     nTime = (sal_Int32)(n100Sec + (nSec*100) + (nMin*10000) + (nHour*1000000));
 }
 
@@ -135,7 +135,7 @@ void Time::SetMin( sal_uInt16 nNewMin )
     sal_Int32   nSec      = GetSec();
     sal_Int32   n100Sec   = Get100Sec();
 
-    // kein Ueberlauf
+    // no overflow
     nNewMin = nNewMin % 60;
 
     nTime = (n100Sec + (nSec*100) + (((sal_Int32)nNewMin)*10000) +
@@ -149,7 +149,7 @@ void Time::SetSec( sal_uInt16 nNewSec )
     sal_Int32   nMin      = GetMin();
     sal_Int32   n100Sec   = Get100Sec();
 
-    // kein Ueberlauf
+    // no overflow
     nNewSec = nNewSec % 60;
 
     nTime = (n100Sec + (((sal_Int32)nNewSec)*100) + (nMin*10000) +
@@ -163,7 +163,7 @@ void Time::Set100Sec( sal_uInt16 nNew100Sec )
     sal_Int32   nMin      = GetMin();
     sal_Int32   nSec      = GetSec();
 
-    // kein Ueberlauf
+    // no overflow
     nNew100Sec = nNew100Sec % 100;
 
     nTime = (((sal_Int32)nNew100Sec) + (nSec*100) + (nMin*10000) +
@@ -271,7 +271,7 @@ Time Time::GetUTCOffset()
     sal_Int32           nUTC;
     short           nTempTime;
 
-    // Evt. Wert neu ermitteln
+    // determine value again if needed
     if ( (nCacheSecOffset == -1)            ||
          ((nTicks - nCacheTicks) > 360000)  ||
          ( nTicks < nCacheTicks ) // handle overflow
diff --git a/tools/source/fsys/dirent.cxx b/tools/source/fsys/dirent.cxx
index 8a729cc..919e1c9 100644
--- a/tools/source/fsys/dirent.cxx
+++ b/tools/source/fsys/dirent.cxx
@@ -248,11 +248,11 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
 
     do
     {
-        // den Namen vor dem ersten "\\" abspalten,
-        // falls '\\' am Anfang, ist der Name '\\',
-        // der Rest immer ohne die fuehrenden '\\'.
-        // ein ":" trennt ebenfalls, gehoert aber zum Namen
-        // den ersten '\\', '/' oder ':' suchen
+        // split name before first "\\",
+        // if '\\' is at beginning of string, name is set to '\\'.
+        // ":" also splits the string and belongs to the name.
+
+        // search first occurance of '\\', '/' or ':'
         sal_uInt16 nPos;
         for ( nPos = 0;
               nPos < aPfad.Len() &&                             //?O
@@ -261,7 +261,7 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
               nPos++ )
             /* do nothing */;
 
-        // ist der Name ein UNC Pathname?
+        // is the name a UNC pathname?
         if ( nPos == 0 && aPfad.Len() > 1 &&
              ( ( aPfad.GetChar(0) == '\\' && aPfad.GetChar(1) == '\\' ) ||
                ( aPfad.GetChar(0) == '/' && aPfad.GetChar(1) == '/' ) ) )
@@ -272,37 +272,36 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
             aName = rtl::OUStringToOString(aPfad.Copy( 2, nPos-2 ), osl_getThreadTextEncoding());
             aStack.Push( new DirEntry( aName, FSYS_FLAG_ABSROOT ) );
         }
-        // ist der Name die Root des aktuellen Drives?
+        // Is the name the root of the current drive?
         else if ( nPos == 0 && aPfad.Len() > 0 &&
                   ( aPfad.GetChar(0) == '\\' || aPfad.GetChar(0) == '/' ) )
         {
-            // Root-Directory des aktuellen Drives
+            // Push root directory of current drive
             aStack.Push( new DirEntry( FSYS_FLAG_ABSROOT ) );
         }
         else
         {
-            // ist der Name ein Drive?
+            // Is the name itself a drive?
             if ( nPos < aPfad.Len() && aPfad.GetChar(nPos) == ':' )
             {
                 aName = rtl::OUStringToOString(aPfad.Copy( 0, nPos + 1 ), osl_getThreadTextEncoding());
 
-                // ist der Name die Root des Drives
+                // Is the name the root of a drive?
                 if ( (nPos + 1) < aPfad.Len() &&
                      ( aPfad.GetChar(nPos+1) == '\\' || aPfad.GetChar(nPos+1) == '/' ) )
                 {
-                    // schon was auf dem Stack?
-                    // oder Novell-Format? (not supported wegen URLs)
+                    // unsupported if stack not empty or is a Novell format (URL)
                     if ( !aStack.Empty() || aName.getLength() > 2 )
                     {
                         aName = rPfad;
                         return FSYS_ERR_MISPLACEDCHAR;
                     }
-                    // Root-Directory des Drive
+                    // Push as root directory of drive
                     aStack.Push( new DirEntry( aName, FSYS_FLAG_ABSROOT ) );
                 }
                 else
                 {
-                    // liegt ein anderes Drive auf dem Stack?
+                    // clear stack if another drive is currently on it
                     if ( !aStack.Empty() )
                     {
                         rtl::OString aThis(aStack.Bottom()->aName);
@@ -313,48 +312,45 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
                             aStack.Clear();
                     }
 
-                    // liegt jetzt nichts mehr auf dem Stack?
                     if ( aStack.Empty() )
                         aStack.Push( new DirEntry( aName, FSYS_FLAG_RELROOT ) );
                 }
             }
-
-            // es ist kein Drive
+            // Name is not a drive
             else
             {
-                // den Namen ohne Trenner abspalten
+                // split the name without seperator
                 aName = rtl::OUStringToOString(aPfad.Copy( 0, nPos ), osl_getThreadTextEncoding());
 
-                // stellt der Name die aktuelle Directory dar?
+                // Is the name the current directory?
                 if ( aName == "." )
                     /* do nothing */;
 
-                // stellt der Name die Parent-Directory dar?
+                // Is the name the parent directory?
                 else if ( aName == ".." )
                 {
-                    // ist nichts, ein Parent oder eine relative Root
-                    // auf dem Stack?
+                    // Is the stack empty, or a parent (or relative root) on it?
                     if ( ( aStack.Empty() ) ||
                          ( aStack.Top()->eFlag == FSYS_FLAG_PARENT ) ||
                          ( aStack.Top()->eFlag == FSYS_FLAG_RELROOT ) )
-                        // fuehrende Parents kommen auf den Stack
+                        // add leading parent to stack
                         aStack.Push( new DirEntry( FSYS_FLAG_PARENT ) );
 
-                    // ist es eine absolute Root
+                    // It's an absolute root path
                     else if ( aStack.Top()->eFlag == FSYS_FLAG_ABSROOT )
                     {
-                        // die hat keine Parent-Directory
+                        // Then there is no parent directory
                         aName = rPfad;
                         return FSYS_ERR_NOTEXISTS;
                     }
                     else
-                        // sonst hebt der Parent den TOS auf
+                        // Otherwise removee parent TOS
                         delete aStack.Pop();
                 }
 
                 else
                 {
-                    // normalen Entries kommen auf den Stack
+                    // add ordinary entries to the stack
                     DirEntry *pNew = new DirEntry( aName, FSYS_FLAG_NORMAL );
                     if ( !pNew->IsValid() )
                     {
@@ -368,7 +364,7 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
             }
         }
 
-        // den Restpfad bestimmen
+        // determine remainder of path
         aPfad.Erase( 0, nPos + 1 );
         while ( aPfad.Len() && ( aPfad.GetChar(0) == '\\' || aPfad.GetChar(0) == '/' ) )
             aPfad.Erase( 0, 1 );
@@ -376,7 +372,7 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
     while ( aPfad.Len() );
 
     sal_uIntPtr nErr = ERRCODE_NONE;
-    // Haupt-Entry (selbst) zuweisen
+    // Set the main entry itself
     if ( aStack.Empty() )
     {
         eFlag = FSYS_FLAG_CURRENT;
@@ -390,59 +386,59 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
         delete aStack.Pop();
     }
 
-    // die Parent-Entries vom Stack holen
-    DirEntry** pTemp = &pParent; // Zeiger auf den Member pParent setzen
+    // pop parent entry from stack
+    DirEntry** pTemp = &pParent;
     while ( !aStack.Empty() )
     {
         *pTemp = aStack.Pop();
 
-        // Zeiger auf den Member pParent des eigenen Parent setzen
+        // set member pointer to the pParent of the member's own parent
         pTemp = &( (*pTemp)->pParent );
     }
 
-    // wird damit ein Volume beschrieben?
+    // Does this describe a volume?
     if ( !pParent && eFlag == FSYS_FLAG_RELROOT && !aName.isEmpty() )
         eFlag = FSYS_FLAG_VOLUME;
 
-    // bei gesetztem ErrorCode den Namen komplett "ubernehmen
+    // use full aName if error code was set
     if ( nErr )
         aName = rPfad;
     return nErr;
 #else
     DBG_CHKTHIS( DirEntry, ImpCheckDirEntry );
 
-    // die einzelnen Namen auf einen Stack packen
+    // Add single names to the stack
     DirEntryStack   aStack;
     rtl::OString aPfad(rPfad);
     do
     {
-        // den Namen vor dem ersten "/" abspalten,
-        // falls '/' am Anfang, ist der Name '/',
-        // der Rest immer ohne die fuehrenden '/'.
-        // den ersten '/' suchen
+        // split names on the first occurance of "/",
+        // if '/' starts the string, it itself becomes the name
+
+        // search first occurance of "/"
         sal_uInt16 nPos;
         for ( nPos = 0;
               nPos < aPfad.getLength() && aPfad[nPos] != '/';
               nPos++ )
             /* do nothing */;
 
-            // ist der Name die Root des aktuellen Drives?
+        // is the name the root of the current drive?
         if ( nPos == 0 && !aPfad.isEmpty() && ( aPfad[0] == '/' ) )
         {
-            // Root-Directory des aktuellen Drives
+            // push root directory of current drive to stack
             aStack.Push( new DirEntry( FSYS_FLAG_ABSROOT ) );
         }
         else
         {
-            // den Namen ohne Trenner abspalten
+            // split name without seperator
             aName = aPfad.copy(0, nPos);
 
-                        // stellt der Name die aktuelle Directory dar?
+            // Is the name the current directory?
             if ( aName == "." )
                 /* do nothing */;
 
 #ifdef UNX
-            // stellt der Name das User-Dir dar?
+            // Is the name the user's home directory?
             else if ( aName == "~" )
             {
                 DirEntry aHome( String( (const char *) getenv( "HOME" ), osl_getThreadTextEncoding()) );
@@ -450,30 +446,29 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
                     aStack.Push( new DirEntry( aHome[ (sal_uInt16) n-1 ] ) );
             }
 #endif
-            // stellt der Name die Parent-Directory dar?
+            // Is the name the current parent directory?
             else if ( aName == ".." )
             {
-                // ist nichts, ein Parent oder eine relative Root
-                // auf dem Stack?
+                // Is the stack empty, or a parent (or relative root) is on top?
                 if ( ( aStack.Empty() ) || ( aStack.Top()->eFlag == FSYS_FLAG_PARENT ) )
                 {
-                    // fuehrende Parents kommen auf den Stack
+                    // push leading parents to stack
                     aStack.Push( new DirEntry(rtl::OString(), FSYS_FLAG_PARENT) );
                 }
-                // ist es eine absolute Root
+                // Is the name an absolute root?
                 else if ( aStack.Top()->eFlag == FSYS_FLAG_ABSROOT )
                 {
-                    // die hat keine Parent-Directory
+                    // they do not have parent directories
                     return FSYS_ERR_NOTEXISTS;
                 }
                 else
-                    // sonst hebt der Parent den TOS auf
+                    // otherwise remove parent TOS from stack
                     delete aStack.Pop();
             }
             else
             {
                 DirEntry *pNew = NULL;
-                // normalen Entries kommen auf den Stack
+                // push ordinary entries on the stack
                 pNew = new DirEntry( aName, FSYS_FLAG_NORMAL );
                 if ( !pNew->IsValid() )
                 {
@@ -486,7 +481,7 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
             }
         }
 
-        // den Restpfad bestimmen
+        // get remainder of path
         aPfad = nPos < aPfad.getLength()
             ? aPfad.copy(nPos + 1) : rtl::OString();
         while ( !aPfad.isEmpty() && ( aPfad[0] == '/' ) )
@@ -494,7 +489,7 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
     }
     while (!aPfad.isEmpty());
 
-    // Haupt-Entry (selbst) zuweisen
+    // insert main entry itself
     if ( aStack.Empty() )
     {
         eFlag = FSYS_FLAG_CURRENT;
@@ -507,7 +502,7 @@ FSysError DirEntry::ImpParseName( const rtl::OString& rPfad )
         delete aStack.Pop();
     }
 
-    // die Parent-Entries vom Stack holen
+    // Get parent entries from stack
     DirEntry** pTemp = &pParent;
     while ( !aStack.Empty() )
     {
@@ -530,7 +525,7 @@ static FSysPathStyle GetStyle( FSysPathStyle eStyle )
 /** Convert name to match OS norm. */
 void DirEntry::ImpTrim()
 {
-    // Wildcards werden nicht geclipt
+    // Do not trim wildcard characters
     if ( ( aName.indexOf( '*' ) != -1 ) ||
          ( aName.indexOf( '?' ) != -1 ) ||
          ( aName.indexOf( ';' ) != -1 ) )
@@ -598,7 +593,7 @@ DirEntry::DirEntry( const String& rInitName, FSysPathStyle eStyle )
 
     pParent         = NULL;
 
-    // schnelle Loesung fuer Leerstring
+    // faster check for empty string
     if ( !rInitName.Len())
     {
         eFlag                   = FSYS_FLAG_CURRENT;
@@ -652,7 +647,7 @@ DirEntry::DirEntry( const rtl::OString& rInitName, FSysPathStyle eStyle )
 
     pParent         = NULL;
 
-    // schnelle Loesung fuer Leerstring
+    // faster check for empty string
     if ( rInitName.isEmpty() )
     {
         eFlag                   = FSYS_FLAG_CURRENT;
@@ -757,7 +752,7 @@ sal_Bool DirEntry::Exists( FSysAccess nAccess ) const
                 return sal_False;
 
 #if defined WNT
-    // spezielle Filenamen sind vom System da
+    // get special file names from system
     if ( aName.equalsIgnoreAsciiCaseL(RTL_CONSTASCII_STRINGPARAM("CLOCK$")) ||
            aName.equalsIgnoreAsciiCaseL(RTL_CONSTASCII_STRINGPARAM("CON")) ||
            aName.equalsIgnoreAsciiCaseL(RTL_CONSTASCII_STRINGPARAM("AUX")) ||
@@ -853,7 +848,7 @@ String DirEntry::GetFull( FSysPathStyle eStyle, sal_Bool bWithDelimiter,
 
     rtl::OString aRet = aBuf.makeStringAndClear();
 
-    //! noch ein Hack
+    // HACK
     if ( nMaxChars < STRING_MAXLEN )
         aRet = ImplCutPath( aRet, nMaxChars, ACCESSDELIM_C(eStyle) );
 
@@ -881,7 +876,7 @@ String DirEntry::GetExtension( char cSep ) const
 
     if ( p1 >= p0 )
     {
-        // es wurde ein cSep an der Position p1 gefunden
+        // found a cSep at position p1
         return rtl::OStringToOUString(aName.copy(p1 - p0 + 1),
             osl_getThreadTextEncoding());
     }
@@ -900,12 +895,12 @@ String DirEntry::GetBase( char cSep ) const
 
     if ( p1 >= p0 )
     {
-        // es wurde ein cSep an der Position p1 gefunden
+        // found a cSep at position p1
         return rtl::OStringToOUString(aName.copy(0, p1 - p0),
             osl_getThreadTextEncoding());
 
     }
-    // es wurde kein cSep gefunden
+    // did not find a cSep
     return rtl::OStringToOUString(aName, osl_getThreadTextEncoding());
 }
 
@@ -1037,7 +1032,7 @@ DirEntry& DirEntry::operator=( const DirEntry& rEntry )
         return *this;
     }
 
-    // Name und Typ uebernehmen, Refs beibehalten
+    // set name and type, but keep refs
     aName                       = rEntry.aName;
     eFlag                       = rEntry.eFlag;
     nError                      = FSYS_ERR_OK;
@@ -1083,19 +1078,19 @@ DirEntry DirEntry::operator+( const DirEntry& rEntry ) const
                 return rEntry;
     }
 
-    // irgendwas + "." (=> pEntryTop == &rEntry)
+    // something + "." (=> pEntryTop == &rEntry)
     if (pEntryTop->eFlag == FSYS_FLAG_RELROOT && pEntryTop->aName.isEmpty())
     {
         DBG_ASSERT( pEntryTop == &rEntry, "DirEntry::op+ buggy" );
         return *this;
     }
 
-    // root += ".." (=> unmoeglich)
+    // root += ".." (=> impossible)
         if ( pEntryTop->eFlag == FSYS_FLAG_PARENT && pThisTop == this &&
                 ( eFlag == FSYS_FLAG_ABSROOT ) )
                 return DirEntry( FSYS_FLAG_INVALID );
 
-        // irgendwas += abs (=> nur Device uebernehmen falls vorhanden)
+        // something += abs (=> only append device if existant)
         if ( pEntryTop->eFlag == FSYS_FLAG_ABSROOT )
         {
                 rtl::OString aDevice;
@@ -1107,7 +1102,7 @@ DirEntry DirEntry::operator+( const DirEntry& rEntry ) const
                 return aRet;
         }
 
-        // irgendwas += ".." (=> aufloesen)
+        // something += ".." (=> break apart)
         if ( eFlag == FSYS_FLAG_NORMAL && pEntryTop->eFlag == FSYS_FLAG_PARENT )
         {
                 String aConcated( GetFull() );
@@ -1116,7 +1111,7 @@ DirEntry DirEntry::operator+( const DirEntry& rEntry ) const
                 return DirEntry( aConcated );
         }
 
-        // sonst einfach hintereinander haengen
+        // otherwise append consecutively
         DirEntry aRet( rEntry );
         DirEntry *pTop = aRet.ImpGetTopPtr();
         pTop->pParent = new DirEntry( *this );
@@ -1149,14 +1144,14 @@ void DirEntry::SetExtension( const String& rExtension, char cSep )
 
     rtl::OStringBuffer aBuf(aName);
 
-    // cSep im Namen suchen
+    // search cSep within aName
     const sal_Char *p0 = aBuf.getStr();
     const sal_Char *p1 = p0 + aBuf.getLength() - 1;
     while ( p1 >= p0 && *p1 != cSep )
         p1--;
     if ( p1 >= p0 )
     {
-        // es wurde ein cSep an der Position p1 gefunden
+        // found a cSep on position p1
 
         sal_Int32 n = static_cast<sal_Int32>(
                 p1 - p0 + 1 - ( rExtension.Len() ? 0 : 1 ));
@@ -1165,7 +1160,7 @@ void DirEntry::SetExtension( const String& rExtension, char cSep )
     }
     else if ( rExtension.Len() )
     {
-        // es wurde kein cSep gefunden
+        // no cSep was found
         aBuf.append(cSep);
     }
 
@@ -1265,7 +1260,7 @@ namespace
 
 DirEntry DirEntry::TempName( DirEntryKind eKind ) const
 {
-        // ggf. Base-Temp-Dir verwenden (macht Remote keinen Sinn => vorher)
+        // use base-temp-dir if necessary
         const DirEntry &rEntry = TempNameBase_Impl::get();
         if ( !pParent && FSYS_FLAG_CURRENT != rEntry.eFlag && FSYS_FLAG_ABSROOT != eFlag )
         {
@@ -1430,7 +1425,7 @@ sal_Bool DirEntry::MakeDir( sal_Bool bSloppy ) const
 {
     DBG_CHKTHIS( DirEntry, ImpCheckDirEntry );
 
-        // Schnellpruefung, ob vorhanden
+        // fast check if exists
         if ( FileStat( *this ).IsKind( FSYS_KIND_DIR ) )
                 return sal_True;
         if ( bSloppy && pParent )
@@ -1440,11 +1435,11 @@ sal_Bool DirEntry::MakeDir( sal_Bool bSloppy ) const
         const DirEntry *pNewDir = bSloppy ? pParent : this;
         if ( pNewDir )
         {
-                // den Path zum Dir erzeugen
+                // Create path to dir
                 if ( pNewDir->pParent && !pNewDir->pParent->MakeDir(sal_False) )
                         return sal_False;
 
-                // das Dir selbst erzeugen
+                // create dir ourselves
                 if ( pNewDir->eFlag == FSYS_FLAG_ABSROOT ||
                          pNewDir->eFlag == FSYS_FLAG_VOLUME )
                         return sal_True;
@@ -1465,7 +1460,6 @@ sal_Bool DirEntry::MakeDir( sal_Bool bSloppy ) const
                                 sal_Bool bResult = (0 == _mkdir(bDirName.getStr()));
                                 if ( !bResult )
                                 {
-                                    // Wer hat diese Methode const gemacht ?
 #ifdef WIN32
                                     ((DirEntry *)this)->SetError( Sys2SolarError_Impl(  GetLastError() ) );
 #else
@@ -1487,7 +1481,7 @@ FSysError DirEntry::CopyTo( const DirEntry& rDest, FSysAction nActions ) const
         if ( FSYS_ACTION_COPYFILE != (nActions & FSYS_ACTION_COPYFILE) )
 #ifdef UNX
     {
-        // Hardlink anlegen
+        // create hardlink
         HACK(redirection missing)
         rtl::OString aThis(rtl::OUStringToOString(GetFull(), osl_getThreadTextEncoding()));
         rtl::OString aDest(rtl::OUStringToOString(rDest.GetFull(), osl_getThreadTextEncoding()));
@@ -1539,19 +1533,18 @@ FSysError DirEntry::MoveTo( const DirEntry& rNewName ) const
         aFromDevice=aFromDevice.GetDevice();
         aToDevice=aToDevice.GetDevice();
 
-        //Quelle und Ziel auf gleichem device?
         if (aFromDevice==aToDevice)
         {
-            // ja, also intra-device-move mit MoveFile
+            // same device, use intra-device-move with MoveFile
             MoveFile( bFrom.getStr(), bTo.getStr() );
-            // MoveFile ist buggy bei cross-device operationen.
-            // Der R?ckgabewert ist auch dann sal_True, wenn nur ein Teil der Operation geklappt hat.
-            // Zudem zeigt MoveFile unterschiedliches Verhalten bei unterschiedlichen NT-Versionen.
+            // Note: MoveFile is buggy for cross-device operations.
+            // Return value is TRUE, even if the operation was only partially successful.
+            // MoveFile has varying behavior between differing NT-versions.
             return Sys2SolarError_Impl( GetLastError() );
         }
         else
         {
-            //nein, also inter-device-move mit copy/delete
+            // Not the same device, use inter-device-move with copy/delete
             FSysError nCopyError = CopyTo(rNewName, FSYS_ACTION_COPYFILE);
 
             DirEntry aKill(rtl::OStringToOUString(bTo, osl_getThreadTextEncoding()));
@@ -1589,7 +1582,7 @@ FSysError DirEntry::MoveTo( const DirEntry& rNewName ) const
 #else
         {
                 if( errno == EXDEV )
-// cross device geht latuernich nicht mit rename
+                // simple rename does not work cross device
                 {
                         FILE *fpIN  = fopen( bFrom.getStr(), "r" );
                         FILE *fpOUT = fopen( bTo.getStr(), "w" );
@@ -1601,7 +1594,7 @@ FSysError DirEntry::MoveTo( const DirEntry& rNewName ) const
                                 while( ( nBytes = fread( pBuf, 1, sizeof(pBuf), fpIN ) ) && ! nErr )
                                 {
                                     nWritten = fwrite( pBuf, 1, nBytes, fpOUT );
-                                    // Fehler im fwrite     ?
+                                    // Error in fwrite ?
                                     if( nWritten < nBytes )
                                     {
                                         nErr = errno;
@@ -1654,7 +1647,7 @@ FSysError DirEntry::Kill(  FSysAction nActions ) const
         FSysError eError = FSYS_ERR_OK;
         FSysFailOnErrorImpl();
 
-        // Name als doppelt 0-terminierter String
+        // Terminate name string with two '0'
         String aTmpName( GetFull() );
         rtl::OString bTmpName(rtl::OUStringToOString(aTmpName, osl_getThreadTextEncoding()));
 
@@ -1662,7 +1655,7 @@ FSysError DirEntry::Kill(  FSysAction nActions ) const
         strcpy( pName, bTmpName.getStr() );
         pName[bTmpName.getLength()+1] = (char) 0;
 
-        //read-only files sollen auch geloescht werden koennen
+        // delete read-only files as well
         sal_Bool isReadOnly = FileStat::GetReadOnlyFlag(*this);
         if (isReadOnly)
         {
@@ -1672,7 +1665,7 @@ FSysError DirEntry::Kill(  FSysAction nActions ) const
         // directory?
         if ( FileStat( *this ).IsKind(FSYS_KIND_DIR) )
         {
-                // Inhalte recursiv loeschen?
+                // Delete recursively?
                 if ( FSYS_ACTION_RECURSIVE == (nActions & FSYS_ACTION_RECURSIVE) )
                 {
                         Dir aDir( *this, FSYS_KIND_DIR|FSYS_KIND_FILE );
@@ -1685,13 +1678,13 @@ FSysError DirEntry::Kill(  FSysAction nActions ) const
                         }
                 }
 
-                // das Dir selbst loeschen
+                // remove Dir myself
 #ifdef WIN32
                 SetLastError(0);
 #endif
                 if ( eError == FSYS_ERR_OK && 0 != _rmdir( (char*) pName ) )
                 {
-                        // falls L"oschen nicht ging, CWD umsetzen
+                        // Change CWD if deletion failed
 #ifdef WIN32
                     eError = Sys2SolarError_Impl( GetLastError() );
 #else
@@ -1756,7 +1749,7 @@ FSysError DirEntry::Kill(  FSysAction nActions ) const
                 }
         }
 
-        //falls Fehler, originales read-only flag wieder herstellen
+        // restore original read-only flag upon error
         if ( isReadOnly && (eError!=ERRCODE_NONE) )
         {
             FileStat::SetReadOnlyFlag(*this, isReadOnly);
diff --git a/tools/source/fsys/filecopy.cxx b/tools/source/fsys/filecopy.cxx
index 56c6aab..84b0833 100644
--- a/tools/source/fsys/filecopy.cxx
+++ b/tools/source/fsys/filecopy.cxx
@@ -92,12 +92,12 @@ sal_Bool FileCopier::Progress()
 
 ErrCode FileCopier::Error( ErrCode eErr, const DirEntry* pSource, const DirEntry* pTarget )
 {
-    // kein Fehler oder kein ErrorHandler?
+    // No error or no error handler?
     if ( !eErr || !pImp->aErrorLink )
-        // => Error beibehalten
+        // => keep error
         return eErr;
 
-    // sonst gesetzten ErrorHandler fragen
+    // otherwise request from ErrorHandler
     pImp->pErrSource = pSource;
     pImp->pErrTarget = pTarget;
     pImp->eErr = eErr;
@@ -112,7 +112,7 @@ FSysError FileCopier::DoCopy_Impl( const DirEntry &rSource, const DirEntry &rTar
     FSysError eRet = FSYS_ERR_OK;
     ErrCode eWarn = FSYS_ERR_OK;
 
-    // Zieldateiname ggf. kuerzen
+    // shorten target name if necessary
     DirEntry aTgt;
     aTgt = rTarget;
 
@@ -199,9 +199,9 @@ FSysError FileCopier::DoCopy_Impl( const DirEntry &rSource, const DirEntry &rTar
             else
                 eRet = Error( aTargetStream.GetError(), 0, &aTgt );
 
-            // unvollstaendiges File wieder loeschen
             aTargetStream.Close();
 
+            // remove incomplete file
             if ( nBytesCopied != nBytesTotal )
             {
                 aTgt.Kill();
@@ -242,14 +242,14 @@ FSysError FileCopier::DoCopy_Impl( const DirEntry &rSource, const DirEntry &rTar
         }
     }
 #endif
-    // bei Move ggf. das File/Dir loeschen
+    // Remove File/Dir upon Move if necessary
     if ( FSYS_ERR_OK == ERRCODE_TOERROR(eRet) && ( pImp->nActions  & FSYS_ACTION_MOVE ) )
     {
         ErrCode eKillErr = Error( rSource.Kill() | ERRCODE_WARNING_MASK, &rSource, 0 );
         if ( eKillErr != ERRCODE_WARNING_MASK )
         {
             if ( rSource.Exists() )
-                // loeschen ging nicht => dann die Kopie wieder loeschen
+                // Removal failed => remove copy
                 aTgt.Kill( pImp->nActions );
             if ( !eWarn )
                 eWarn = eKillErr;
diff --git a/tools/source/fsys/tdir.cxx b/tools/source/fsys/tdir.cxx
index f96c502..b33c9cf 100644
--- a/tools/source/fsys/tdir.cxx
+++ b/tools/source/fsys/tdir.cxx
@@ -37,7 +37,6 @@ sal_Bool Dir::ImpInsertPointReached( const DirEntry& rNewEntry,
     ( ( FSYS_KIND_FILE | FSYS_KIND_DIR | FSYS_KIND_DEV | \
         FSYS_KIND_CHAR | FSYS_KIND_BLOCK ) & nKindFlags )
 
-    // einfache Dinge erfordern einfache Loesungen
     if ( pLst->empty() )
         return sal_True;
 
@@ -168,7 +167,6 @@ sal_Bool Dir::ImpInsertPointReached( const DirEntry& rNewEntry,
     if ( nSortIndex == ( pSortLst->size() - 1 ) )
         return sal_True;
     else
-        //Rekursion
         return ImpInsertPointReached( rNewEntry, rNewStat,
                                       nCurPos, nSortIndex + 1 );
 #undef VALUE
@@ -177,7 +175,7 @@ sal_Bool Dir::ImpInsertPointReached( const DirEntry& rNewEntry,
 /// Insert as sorted
 void Dir::ImpSortedInsert( const DirEntry *pNewEntry, const FileStat *pNewStat )
 {
-    //Sonderfall, keine Sortierung gewuenscht.
+    // special case: no sorting required
     if ( !pSortLst ) {
         pLst->push_back( (DirEntry*)pNewEntry );
         return;
@@ -231,11 +229,11 @@ void Dir::Construct( DirEntryKind nKindFlags )
 
 void Dir::Reset()
 {
-    // ggf. alten Reader l"oschen
+    // remove old Reader if necessary
     if ( pReader && pReader->bInUse )
         DELETEZ(pReader);
 
-    // alle DirEntries aus der Liste entfernen und deren Speicher freigeben
+    // Remove all DirEntries from List and free memory
     if ( pLst )
     {
         for ( size_t i = 0, n = pLst->size(); i < n; ++i ) {
@@ -246,7 +244,7 @@ void Dir::Reset()
     else
         pLst = new DirEntryList();
 
-    //  Alte File-Stat's Loeschen
+    //  Remove old File-Stats
     if ( pStatLst )
     {
         for ( size_t i = 0, n = pStatLst->size(); i < n; ++i ) {
@@ -257,7 +255,7 @@ void Dir::Reset()
         pStatLst = NULL;
     }
 
-    // Verlangen die Sortierkriterien FileStat's?
+    // Does sorting require FileStats?
     if ( pSortLst )
     {
         for ( size_t i = 0, n = pSortLst->size(); i < n; ++i ) {
@@ -272,11 +270,11 @@ void Dir::Reset()
         }
     }
 
-    // ggf. einen neuen Reader aufsetzen
+    // Create new reader if necessary
     if ( !pReader )
         pReader = new DirReader_Impl( *this );
 
-    // gibt es das zu oeffnende Verzeichnis ueberhaupt?
+    // Does the directory exist at all?
 #if !defined(UNX)   //explanation: see DirReader_Impl::Read() in unx.cxx
     if( !pReader->pDosDir )
     {
@@ -290,30 +288,30 @@ void Dir::Reset()
 sal_uInt16 Dir::Scan( sal_uInt16 nCount )
 {
 
-    sal_uInt16 nRead = 0; // Anzahl in dieser Runde gelesener Eintr"age
+    sal_uInt16 nRead = 0; // Number of read entries in this round
     FSysFailOnErrorImpl();
 
-    // noch nicht fertig gewesen
+    // did not complete
     if ( pReader )
     {
-        // frischer Reader?
+        // is this a new reader?
         if ( pLst->empty() )
         {
-            // dann ggf. Laufwerke scannen
+            // Scan directories
             pReader->bInUse = sal_True;
             nRead = pReader->Init();
         }
 
-        // weiterlesen...
+        // continue reading
         while ( nRead <= nCount && !pReader->bReady )
             nRead = nRead + pReader->Read();
 
-        // fertig?
+        // done?
         if ( pReader && pReader->bReady )
             DELETEZ( pReader );
     }
 
-    // Anzahl der gelesenen zur"uckgeben
+    // Return read entry count
     return nRead;
 }
 
@@ -331,7 +329,7 @@ Dir::~Dir()
 {
     DBG_DTOR( Dir, NULL );
 
-    // alle DirEntries aus der Liste entfernen und deren Speicher freigeben
+    // Remove all DirEntries and free memory
     if ( pLst )
     {
         for ( size_t i = 0, n = pLst->size(); i < n; ++i ) {
@@ -341,14 +339,14 @@ Dir::~Dir()
         delete pLst;
     }
 
-    // alle Sorts aus der Liste entfernen und deren Speicher freigeben
+    // Remove all Sorts from list and free memory
     if ( pSortLst )
     {
         pSortLst->clear();
         delete pSortLst;
     }
 
-    // alle FileStat's aus der Liste entfernen und deren Speicher freigeben
+    // Remove all FileStats from list and free memory
     if ( pStatLst )
     {
         for ( size_t i = 0, n = pStatLst->size(); i < n; ++i ) {
@@ -358,7 +356,6 @@ Dir::~Dir()
         delete pStatLst;
     }
 
-    // ggf. laufenden Reader freigeben
     delete pReader;
 }
 
@@ -372,16 +369,15 @@ DirEntry& Dir::operator[] ( size_t nIndex ) const
 
 Dir& Dir::operator+=( const Dir& rDir )
 {
-    // ggf. erst den Rest lesen
+    // Read the rest of the directory
     if ( pReader )
         Scan( USHRT_MAX );
     DBG_ASSERT( !rDir.pReader, "Dir::+= with incomplete Dir" );
 
-    // ggf. initiale Liste erzeugen
     if ( !pLst )
         pLst = new DirEntryList();
 
-    //Verlangen die Sortierkriterien FileStat's?
+    // FileStats required by sorting criteria?
     sal_Bool bStat = sal_False;
     if ( pSortLst ) {
         for ( size_t i = 0, n = pSortLst->size(); i < n && !bStat; ++i ) {
@@ -411,7 +407,7 @@ Dir& Dir::operator+=( const Dir& rDir )
 
 size_t Dir::Count( sal_Bool bUpdated ) const
 {
-    // ggf. erst den Rest lesen
+    // Read the rest of the directory
     if ( bUpdated && pReader )
         ((Dir*)this)->Scan( USHRT_MAX );
 
diff --git a/tools/source/fsys/unx.cxx b/tools/source/fsys/unx.cxx
index 00472a5..59ca419 100644
--- a/tools/source/fsys/unx.cxx
+++ b/tools/source/fsys/unx.cxx
@@ -151,8 +151,7 @@ static sal_Bool GetMountEntry(dev_t dev, struct mymnttab *mytab)
                 continue;
         }
 #       ifdef LINUX
-        /* #61624# File mit setmntent oeffnen und mit fclose schliessen stoesst
-           bei der glibc-2.1 auf wenig Gegenliebe */
+        // #61624# Opening file with setmntent and closing with fclose fails for glibc-2.1
         endmntent( fp );
 #       else
         fclose (fp);
@@ -165,7 +164,7 @@ static sal_Bool GetMountEntry(dev_t dev, struct mymnttab *mytab)
         return sal_True;
     }
 #   ifdef LINUX
-    /* #61624# dito */
+    /* #61624# see above */
     endmntent( fp );
 #   else
     fclose (fp);
@@ -252,7 +251,7 @@ sal_uInt16 DirReader_Impl::Read()
         return 0;
     }
 
-    // Directories und Files auflisten?
+    // List directories and dirs
     if ( ( pDir->eAttrMask & FSYS_KIND_DIR || pDir->eAttrMask & FSYS_KIND_FILE ) &&
          ( ( pDosEntry = readdir( pDosDir ) ) != NULL ) )
     {
@@ -274,7 +273,7 @@ sal_uInt16 DirReader_Impl::Read()
                  !( pDir->eAttrMask & FSYS_KIND_VISIBLE &&
                     pDosEntry->d_name[0] == '.' ) )
             {
-                if ( pDir->pStatLst ) //Status fuer Sort gewuenscht?
+                if ( pDir->pStatLst ) // Does sorting criteria require status?
                     pDir->ImpSortedInsert( pTemp, new FileStat( aStat ) );
                 else
                     pDir->ImpSortedInsert( pTemp, NULL );
@@ -309,7 +308,7 @@ sal_Bool FileStat::Update( const DirEntry& rDirEntry, SAL_UNUSED_PARAMETER sal_B
         return sal_False;
     }
 
-    // Sonderbehandlung falls es sich um eine Root handelt
+    // Special case if DirEntry is root
     if ( rDirEntry.eFlag == FSYS_FLAG_ABSROOT )
     {
         nKindFlags = FSYS_KIND_DIR;
@@ -327,7 +326,7 @@ sal_Bool FileStat::Update( const DirEntry& rDirEntry, SAL_UNUSED_PARAMETER sal_B
         // note that this is not a solution, since filenames containing special characters
         // are handled badly across the whole Office
 
-        // Sonderbehandlung falls es sich um eine Wildcard handelt
+        // special treatment if name contains wildcards
         rtl::OString aTempName(rtl::OUStringToOString(rDirEntry.GetName(), osl_getThreadTextEncoding()));
         if ( aTempName.indexOf('?') != -1 ||
              aTempName.indexOf('*') != -1 ||
@@ -377,9 +376,9 @@ const char *TempDirImpl( char *pBuf )
     if ( pValue )
         strcpy( pBuf, pValue );
     else
-        // auf Solaris und Linux ist P_tmpdir vorgesehen
+        // P_tempdir exists in Solaris and Linux
         strcpy( pBuf, P_tmpdir );
-        // hart auf "/tmp"  sollte wohl nur im Notfall verwendet werden
+        // don't use "/tmp" as hard coded directory
         //strcpy( pBuf, "/tmp" );
 #endif /* MACOSX */
 
diff --git a/tools/source/fsys/wldcrd.cxx b/tools/source/fsys/wldcrd.cxx
index d61bea9..303b59c 100644
--- a/tools/source/fsys/wldcrd.cxx
+++ b/tools/source/fsys/wldcrd.cxx
@@ -19,12 +19,12 @@
 
 #include <tools/wldcrd.hxx>
 
-/* Diese Methode ueberprueft, ob die Wilde Karte in pWild mit dem String
- * in pStr matscht.
- * Vertragen sich die beiden, so wird 1 zurueckgegeben, sonst 0.
+/** Tests, whether a wildcard in pWild will match for pStr.
  *
- * ein '*' in pWild bedeutet n beliebige Zeichen, mit n>=0
- * ein '?' in pWild bedeutet genau ein beliebiges Zeichen
+ * If they match, return 1, otherwise 0.
+ *
+ * '*' in pWild means n chars for n > 0.
+ * '?' in pWild mean match exactly one character.
  *
  */
 sal_uInt16 WildCard::ImpMatch( const char *pWild, const char *pStr ) const
@@ -50,8 +50,8 @@ sal_uInt16 WildCard::ImpMatch( const char *pWild, const char *pStr ) const
                     else
                         pWild += pos;
                 else
-                    break;          // ACHTUNG laeuft unter bestimmten
-                                    // Umstaenden in den nachsten case rein!!
+                    break;          // WARNING: may cause execution of next case
+                                    // in some circumstances!
             case '*':
                 while ( *pWild == '*' )
                     pWild++;
@@ -97,12 +97,11 @@ sal_Bool WildCard::Matches( const String& rString ) const
     {
         while ( (nSepPos = aTmpWild.indexOf(cSepSymbol)) != -1 )
         {
-            // alle getrennten WildCard's pruefen
+            // Check all splitted wildcards
             if ( ImpMatch( aTmpWild.copy( 0, nSepPos ).getStr(), aString.getStr() ) )
                 return sal_True;
-            aTmpWild = aTmpWild.copy(nSepPos + 1); // Trennsymbol entfernen
+            aTmpWild = aTmpWild.copy(nSepPos + 1); // remove separator
         }
-        // und noch den hinter dem letzen Trennsymbol bzw. den einzigen
     }
 
     if ( ImpMatch( aTmpWild.getStr(), aString.getStr() ) )
diff --git a/tools/source/fsys/wntmsc.cxx b/tools/source/fsys/wntmsc.cxx
index f514b86..f2eeffc 100644
--- a/tools/source/fsys/wntmsc.cxx
+++ b/tools/source/fsys/wntmsc.cxx
@@ -63,7 +63,7 @@ struct dirent *readdir( DIR *pDir )
         char *pBuf = new char[ strlen( pDir->p ) + 5 ];
         if ( pBuf )
         {
-            // *.* dahinter, ggf mit "\\" abtrennen (falls nicht schon da)
+            // if string ends with *.*, seperate with "\\" (unless it exists)
             strcpy( pBuf, pDir->p );
             strcat( pBuf, "\\*.*" + ( *(pBuf + strlen( pBuf ) - 1 ) == '\\' ) );
             CharUpperBuff( pBuf, strlen(pBuf) );
@@ -145,12 +145,12 @@ String DirEntry::GetVolume() const
         rtl::OString aRootDir = pTop->aName;
         FSysFailOnErrorImpl();
 
-        // Network-Device zuerst probieren wegen langsamer Samba-Drives
+        // Try network device first due to slow samba drives
         if ( !WNetGetConnection( aRootDir.getStr(),
                                  sVolumeName, &nVolumeNameLen ) )
             aRet = String( sVolumeName, osl_getThreadTextEncoding());
 
-        // dann den VolumeNamen fuer lokale Drives
+        // Append volume name for local drives
         if ( aRet.Len() == 0 )
         {
             aRootDir += rtl::OString(RTL_CONSTASCII_STRINGPARAM("\\"));
@@ -190,14 +190,14 @@ sal_Bool DirEntry::SetCWD( sal_Bool bSloppy ) const
 
 USHORT DirReader_Impl::Init()
 {
-    // Block-Devices auflisten?
+    // List Block-devices?
     if ( pDir->eAttrMask & FSYS_KIND_BLOCK )
     {
-        // CWD merken
+        // remember CWD
         DirEntry aCurrentDir;
         aCurrentDir.ToAbs();
 
-        // einzeln auf Existenz und Masken-konformit"at pr"ufen
+        // Check for existence and conformity to flags
         USHORT nRead = 0;
         char sDrive[3] = { '?', ':', 0 };
         char sRoot[4] = { '?', ':', '\\', 0 };
@@ -208,7 +208,7 @@ USHORT DirReader_Impl::Init()
             DirEntry* pDrive = new DirEntry( sDrive, FSYS_FLAG_VOLUME );
             if ( pDir->aNameMask.Matches( String(rtl::OStringToOUString(sDrive, osl_getThreadTextEncoding())) ) && GetDriveType( sRoot ) != 1 )
             {
-                if ( pDir->pStatLst ) //Status fuer Sort gewuenscht?
+                if ( pDir->pStatLst ) // Status required by sorting criteria?
                 {
                     FileStat *pNewStat = new FileStat( *pDrive );
                     pDir->ImpSortedInsert( pDrive, pNewStat );
@@ -221,7 +221,7 @@ USHORT DirReader_Impl::Init()
                 delete pDrive;
         }
 
-        // CWD restaurieren
+        // restore CWD
         aCurrentDir.SetCWD();
         return nRead;
     }
@@ -231,19 +231,19 @@ USHORT DirReader_Impl::Init()
 
 USHORT DirReader_Impl::Read()
 {
-    // Directories und Files auflisten?
+    // List directories and Files?
     if ( ( pDir->eAttrMask & FSYS_KIND_DIR ||
            pDir->eAttrMask & FSYS_KIND_FILE ) &&
            ( ( pDosEntry = readdir( pDosDir ) ) != NULL ) )
     {
-        // Gross/Kleinschreibung nicht beruecksichtigen
+        // Do not distinguish between lower-/upper-case letters
         size_t nLen = strlen(pDosEntry->d_name);
         std::vector<char> aBuffer(nLen);
         memcpy(&aBuffer[0], pDosEntry->d_name, nLen);
         CharLowerBuff(&aBuffer[0], nLen);
         rtl::OString aLowerName(&aBuffer[0], nLen);
 
-        // Flags pruefen
+        // check Flags
         sal_Bool bIsDirAndWantsDir =
                 ( ( pDir->eAttrMask & FSYS_KIND_DIR ) &&
 #ifdef ICC
@@ -284,7 +284,7 @@ USHORT DirReader_Impl::Read()
 #endif
             if ( pParent )
                 pTemp->ImpChangeParent( new DirEntry( *pParent ), sal_False );
-            if ( pDir->pStatLst ) //Status fuer Sort gewuenscht?
+            if ( pDir->pStatLst ) // Status required by sorting criteria?
             {
                 FileStat *pNewStat = new FileStat( (void*) pDosDir );
                 pDir->ImpSortedInsert( pTemp, pNewStat );
@@ -585,8 +585,7 @@ sal_Bool FileStat::Update( const DirEntry& rDirEntry, sal_Bool bForceAccess )
             return sal_False;
         }
 
-        // Sonderbehandlung falls es sich um eine Root ohne Laufwerk handelt
-
+        // Special treatment if it's a root without device
         if ( !rDirEntry.aName.getLength() && rDirEntry.eFlag == FSYS_FLAG_ABSROOT )
         {
             nKindFlags = FSYS_KIND_DIR;
@@ -594,15 +593,15 @@ sal_Bool FileStat::Update( const DirEntry& rDirEntry, sal_Bool bForceAccess )
             return sal_True;
         }
 
-        // keine Error-Boxen anzeigen
+        // Don't show error boxes
         FSysFailOnErrorImpl();
 
         // Redirect
         String aPath( rDirEntry.GetFull() );
         DirEntry aDirEntry( aPath );
 
-        // ist ein Medium im Laufwerk?
-        HACK("wie?")
+        // Is a medium in this device?
+        HACK("How?")
         sal_Bool bAccess = sal_True;
         const DirEntry *pTop = aDirEntry.ImpGetTopPtr();
         rtl::OString aName = rtl::OString(pTop->aName).toAsciiLowerCase();
@@ -623,7 +622,7 @@ sal_Bool FileStat::Update( const DirEntry& rDirEntry, sal_Bool bForceAccess )
             DBG_WARNING( "floppy will clatter" );
         }
 
-        // Sonderbehandlung, falls es sich um ein Volume handelt
+        // Special treatment if it's a volume
         if ( aDirEntry.eFlag == FSYS_FLAG_VOLUME ||
              aDirEntry.eFlag == FSYS_FLAG_ABSROOT )
         {
@@ -667,18 +666,17 @@ sal_Bool FileStat::Update( const DirEntry& rDirEntry, sal_Bool bForceAccess )
             return sal_True;
         }
 
-        // Statusinformation vom Betriebssystem holen
+        // Get status data from OS
         HANDLE h; //()
         _WIN32_FIND_DATAA aEntry = INIT_WIN32_FIND_DATAA;
         DirEntry aAbsEntry( aDirEntry );
         if ( bAccess && aAbsEntry.ToAbs() )
         {
-            // im Namen k"onnen auch ';*?' als normale Zeichen vorkommen
+            // names can contain ';*?' as normal characters
             rtl::OString aFilePath(rtl::OUStringToOString(aAbsEntry.GetFull(), osl_getThreadTextEncoding()));
 
             OSL_TRACE( "FileStat: %s", aFilePath.getStr() );
             h = aFilePath.getLength() < 230
-                    // die Win32-API ist hier sehr schwammig
                     ? FindFirstFile( aFilePath.getStr(), &aEntry )//TPF: 2i
                     : INVALID_HANDLE_VALUE;
 
@@ -733,7 +731,7 @@ sal_Bool FileStat::Update( const DirEntry& rDirEntry, sal_Bool bForceAccess )
 
         if ( h == INVALID_HANDLE_VALUE )
         {
-            // Sonderbehandlung falls es sich um eine Wildcard handelt
+            // Special treatment if name contains wildcard
             rtl::OString aTempName(rtl::OUStringToOString(aDirEntry.GetName(), osl_getThreadTextEncoding()));
             if ( strchr( aTempName.getStr(), '?' ) ||
                  strchr( aTempName.getStr(), '*' ) ||
diff --git a/tools/source/generic/b3dtrans.cxx b/tools/source/generic/b3dtrans.cxx
index bb8ec2c..ce4ce26 100644
--- a/tools/source/generic/b3dtrans.cxx
+++ b/tools/source/generic/b3dtrans.cxx
@@ -129,7 +129,7 @@ void B3dTransformationSet::Ortho(basegfx::B3DHomMatrix& rTarget,
 /// reset values
 void B3dTransformationSet::Reset()
 {
-    // Matritzen auf Einheitsmatritzen
+    // Reset matrices to identity matrices
     maObjectTrans.identity();
     PostSetObjectTrans();
 
@@ -161,7 +161,7 @@ void B3dTransformationSet::Reset()
 /// Object transformation
 void B3dTransformationSet::PostSetObjectTrans()
 {
-    // Zuweisen und Inverse bestimmen
+    // Assign and compute inverse
     maInvObjectTrans = maObjectTrans;
     maInvObjectTrans.invert();
 }
@@ -180,7 +180,7 @@ void B3dTransformationSet::SetOrientation( basegfx::B3DPoint aVRP, basegfx::B3DV
 
 void B3dTransformationSet::PostSetOrientation()
 {
-    // Zuweisen und Inverse bestimmen
+    // Assign and compute inverse
     maInvOrientation = maOrientation;
     maInvOrientation.invert();
 }
@@ -201,11 +201,11 @@ const basegfx::B3DHomMatrix& B3dTransformationSet::GetProjection()
 
 void B3dTransformationSet::PostSetProjection()
 {
-    // Zuweisen und Inverse bestimmen
+    // Assign and comptue inverse
     maInvProjection = GetProjection();
     maInvProjection.invert();
 
-    // Abhaengige Matritzen invalidieren
+    // invalidate dependent matrices
     mbObjectToDeviceValid = sal_False;
     mbWorldToViewValid = sal_False;
 }
@@ -213,17 +213,16 @@ void B3dTransformationSet::PostSetProjection()
 /// Transformations for viewport
 void B3dTransformationSet::CalcViewport()
 {
-    // Faktoren fuer die Projektion
+    // Parameters for projection
     double fLeft(mfLeftBound);
     double fRight(mfRightBound);
     double fBottom(mfBottomBound);
     double fTop(mfTopBound);
 
-    // Soll das Seitenverhaeltnis Beachtung finden?
-    // Falls ja, Bereich der Projektion an Seitenverhaeltnis anpassen
+    // Adjust projection to aspect ratio, if set
     if(GetRatio() != 0.0)
     {
-        // Berechne aktuelles Seitenverhaeltnis der Bounds
+        // Compute current aspect ratio of boundaries
         double fBoundWidth = (double)(maViewportRectangle.GetWidth() + 1);
         double fBoundHeight = (double)(maViewportRectangle.GetHeight() + 1);
         double fActRatio = 1;
@@ -237,17 +236,17 @@ void B3dTransformationSet::CalcViewport()
         {
             case Base3DRatioShrink :
             {
-                // Kleineren Teil vergroessern
+                // Dilate smaller part
                 if(fActRatio > mfRatio)
                 {
-                    // X vergroessern
+                    // enlarge X
                     fFactor = 1.0 / fActRatio;
                     fRight  *= fFactor;
                     fLeft *= fFactor;
                 }
                 else
                 {
-                    // Y vergroessern
+                    // enlarge Y
                     fFactor = fActRatio;
                     fTop *= fFactor;
                     fBottom *= fFactor;
@@ -256,17 +255,17 @@ void B3dTransformationSet::CalcViewport()
             }
             case Base3DRatioGrow :
             {
-                // GroesserenTeil verkleinern
+                // scale down larger part
                 if(fActRatio > mfRatio)
                 {
-                    // Y verkleinern
+                    // scale down Y
                     fFactor = fActRatio;
                     fTop *= fFactor;
                     fBottom *= fFactor;
                 }
                 else
                 {
-                    // X verkleinern
+                    // scale down X
                     fFactor = 1.0 / fActRatio;
                     fRight  *= fFactor;
                     fLeft *= fFactor;
@@ -275,7 +274,7 @@ void B3dTransformationSet::CalcViewport()
             }
             case Base3DRatioMiddle :
             {
-                // Mitteln
+                // averaging
                 fFactor = ((1.0 / fActRatio) + 1.0) / 2.0;
                 fRight *= fFactor;
                 fLeft *= fFactor;
@@ -287,10 +286,10 @@ void B3dTransformationSet::CalcViewport()
         }
     }
 
-    // Ueberschneiden sich Darstellungsflaeche und Objektflaeche?
+    // Do projection and object areas overlap?
     maSetBound = maViewportRectangle;
 
-    // Mit den neuen Werten Projektion und ViewPort setzen
+    // Reset projection with new values
     basegfx::B3DHomMatrix aNewProjection;
 
     // #i36281#
@@ -299,8 +298,7 @@ void B3dTransformationSet::CalcViewport()
     // which is 1/10000th, comared with 1/tenth of a million from SMALL_DVALUE.
     const double fDistPart((mfFarBound - mfNearBound) * 0.0001);
 
-    // Near, Far etwas grosszuegiger setzen, um falsches,
-    // zu kritisches clippen zu verhindern
+    // To avoid critical clipping, set Near & Far generously
     if(mbPerspective)
     {
         Frustum(aNewProjection, fLeft, fRight, fBottom, fTop, mfNearBound - fDistPart, mfFarBound + fDistPart);
@@ -310,10 +308,10 @@ void B3dTransformationSet::CalcViewport()
         Ortho(aNewProjection, fLeft, fRight, fBottom, fTop, mfNearBound - fDistPart, mfFarBound + fDistPart);
     }
 
-    // jetzt schon auf gueltig setzen um Endlosschleife zu vermeiden
+    // Set to true to guarantee loop termination
     mbProjectionValid = sal_True;
 
-    // Neue Projektion setzen
+    // set new projection
     SetProjection(aNewProjection);
 
     // fill parameters for ViewportTransformation
@@ -322,12 +320,12 @@ void B3dTransformationSet::CalcViewport()
     maTranslate.setY((double)maSetBound.Top() + ((maSetBound.GetHeight() - 1L) / 2.0));
     maTranslate.setZ(ZBUFFER_DEPTH_RANGE / 2.0);
 
-    // Skalierung
+    // Scaling
     maScale.setX((maSetBound.GetWidth() - 1L) / 2.0);
     maScale.setY((maSetBound.GetHeight() - 1L) / -2.0);
     maScale.setZ(ZBUFFER_DEPTH_RANGE / 2.0);
 
-    // Auf Veraenderung des ViewPorts reagieren
+    // React to change of viewport
     PostSetViewport();
 }
 
@@ -356,7 +354,7 @@ void B3dTransformationSet::SetDeviceRectangle(double fL, double fR, double fB, d
         mbObjectToDeviceValid = sal_False;
         mbWorldToViewValid = sal_False;
 
-        // Aenderung bekanntmachen
+        // Broadcast changes
         if(bBroadCastChange)
             DeviceRectangleChange();
     }
@@ -472,7 +470,7 @@ void B3dCamera::DeviceRectangleChange()
     // call parent
     B3dViewport::DeviceRectangleChange();
 
-    // Auf Aenderung reagieren
+    // react to changes
     CalcNewViewportValues();
 }
 
@@ -517,14 +515,14 @@ sal_Bool B3dCamera::CalcFocalLength()
 
     if(bUseFocalLength)
     {
-        // Position aufgrund der FocalLength korrigieren
+        // Update position if focal length changes
         aCorrectedPosition = basegfx::B3DPoint(0.0, 0.0, fFocalLength * fWidth / 35.0);
         aCorrectedPosition = EyeToWorldCoor(aCorrectedPosition);
         bRetval = sal_True;
     }
     else
     {
-        // FocalLength anhand der Position anpassen
+        // Adjust focal length based on given position
         basegfx::B3DPoint aOldPosition;
         aOldPosition = WorldToEyeCoor(aOldPosition);
         if(fWidth != 0.0)
diff --git a/tools/source/generic/bigint.cxx b/tools/source/generic/bigint.cxx
index 331b603..9247b1f 100644
--- a/tools/source/generic/bigint.cxx
+++ b/tools/source/generic/bigint.cxx
@@ -31,14 +31,14 @@ static const long MY_MINLONG  = -MY_MAXLONG;
 static const long MY_MAXSHORT = 0x00007fff;
 static const long MY_MINSHORT = -MY_MAXSHORT;
 
-/* Die ganzen Algorithmen zur Addition, Subtraktion, Multiplikation und
- * Division von langen Zahlen stammen aus SEMINUMERICAL ALGORITHMS von
- * DONALD E. KNUTH aus der Reihe The Art of Computer Programming. Zu finden
- * sind diese Algorithmen im Kapitel 4.3.1. The Classical Algorithms.
+/*
+ * The algorithms for Addition, Substraction, Multiplication and Divison
+ * of large numbers originate from SEMINUMERICAL ALGORITHMS by
+ * DONALD E. KNUTH in the series The Art of Computer Programming:
+ * chapter 4.3.1. The Classical Algorithms.
  */
 
-// Muss auf sal_uInt16/INT16/sal_uInt32/sal_Int32 umgestellt werden !!! W.P.
-
+// TODO: Needs conversion to sal_uInt16/INT16/sal_uInt32/sal_Int32
 void BigInt::MakeBigInt( const BigInt& rVal )
 {
     if ( rVal.bIsBig )
@@ -91,9 +91,9 @@ void BigInt::Normalize()
             if ( bIsNeg )
                 nVal = -nVal;
         }
-        // else ist nVal undefiniert !!! W.P.
+        // else nVal is undefined !!! W.P.
     }
-    // wozu, nLen ist doch undefiniert ??? W.P.
+    // why? nVal is undefined ??? W.P.
     else if ( nVal & 0xFFFF0000L )
         nLen = 2;
     else
@@ -158,8 +158,8 @@ void BigInt::AddLong( BigInt& rB, BigInt& rErg )
         int  i;
         char len;
 
-        // wenn die Zahlen unterschiedlich lang sind, sollte zunaechst bei
-        // der kleineren Zahl die fehlenden Ziffern mit 0 initialisert werden
+        // if length of the two values differ, fill remaining positions
+        // of the smaller value with zeros.
         if (nLen >= rB.nLen)
         {
             len = nLen;
@@ -173,7 +173,7 @@ void BigInt::AddLong( BigInt& rB, BigInt& rErg )
                 nNum[i] = 0;
         }
 
-        // Die Ziffern werden von hinten nach vorne addiert
+        // Add numerals, starting from the back
         long k;
         long nZ = 0;
         for (i = 0, k = 0; i < len; i++) {
@@ -184,20 +184,18 @@ void BigInt::AddLong( BigInt& rB, BigInt& rErg )
                 k = 0;
             rErg.nNum[i] = (sal_uInt16)(nZ & 0xffffL);
         }
-        // Trat nach der letzten Addition ein Ueberlauf auf, muss dieser
-        // noch ins Ergebis uebernommen werden
-        if (nZ & 0xff0000L) // oder if(k)
+        // If an overflow occured, add to solution
+        if (nZ & 0xff0000L) // or if(k)
         {
             rErg.nNum[i] = 1;
             len++;
         }
-        // Die Laenge und das Vorzeichen setzen
+        // Set length and sign
         rErg.nLen   = len;
         rErg.bIsNeg = bIsNeg && rB.bIsNeg;
         rErg.bIsBig = sal_True;
     }
-    // Wenn nur einer der beiden Operanten negativ ist, wird aus der
-    // Addition eine Subtaktion
+    // If one of the values is negative, perform substraction instead
     else if (bIsNeg)
     {
         bIsNeg = sal_False;
@@ -220,8 +218,8 @@ void BigInt::SubLong( BigInt& rB, BigInt& rErg )
         char len;
         long nZ, k;
 
-        // wenn die Zahlen unterschiedlich lang sind, sollte zunaechst bei
-        // der kleineren Zahl die fehlenden Ziffern mit 0 initialisert werden
+        // if length of the two values differ, fill remaining positions
+        // of the smaller value with zeros.
         if (nLen >= rB.nLen)
         {
             len = nLen;
@@ -259,14 +257,13 @@ void BigInt::SubLong( BigInt& rB, BigInt& rErg )
                     k = 0;
                 rErg.nNum[i] = (sal_uInt16)(nZ & 0xffffL);
             }
-            // wenn a < b, dann Vorzeichen vom Ergebnis umdrehen
+            // if a < b, revert sign
             rErg.bIsNeg = !bIsNeg;
         }
         rErg.nLen   = len;
         rErg.bIsBig = sal_True;
     }
-    // Wenn nur einer der beiden Operanten negativ ist, wird aus der
-    // Subtaktion eine Addition
+    // If one of the values is negative, perform addition instead
     else if (bIsNeg)
     {
         bIsNeg = sal_False;
@@ -329,7 +326,7 @@ void BigInt::DivLong( const BigInt& rB, BigInt& rErg ) const
     aTmpB.Mult( rB, nMult );
 
     for (j = aTmpA.nLen - 1; j >= nLenB; j--)
-    { // Raten des Divisors
+    { // guess divisor
         nTmp = ( (long)aTmpA.nNum[j] << 16 ) + aTmpA.nNum[j - 1];
         if (aTmpA.nNum[j] == aTmpB.nNum[nLenB1])
             nQ = 0xFFFF;
@@ -339,7 +336,7 @@ void BigInt::DivLong( const BigInt& rB, BigInt& rErg ) const
         if ( ((sal_uInt32)aTmpB.nNum[nLenB1 - 1] * nQ) >
             ((((sal_uInt32)nTmp) - aTmpB.nNum[nLenB1] * nQ) << 16) + aTmpA.nNum[j - 2])
             nQ--;
-        // Und hier faengt das Teilen an
+        // Start division
         nK = 0;
         nTmp = 0;
         for (i = 0; i < nLenB; i++)
@@ -398,7 +395,7 @@ void BigInt::ModLong( const BigInt& rB, BigInt& rErg ) const
     aTmpB.Mult( rB, nMult);
 
     for (j = aTmpA.nLen - 1; j >= nLenB; j--)
-    { // Raten des Divisors
+    { // Guess divisor
         nTmp = ( (long)aTmpA.nNum[j] << 16 ) + aTmpA.nNum[j - 1];
         if (aTmpA.nNum[j] == aTmpB.nNum[nLenB1])
             nQ = 0xFFFF;
@@ -408,7 +405,7 @@ void BigInt::ModLong( const BigInt& rB, BigInt& rErg ) const
         if ( ((sal_uInt32)aTmpB.nNum[nLenB1 - 1] * nQ) >
             ((((sal_uInt32)nTmp) - aTmpB.nNum[nLenB1] * nQ) << 16) + aTmpA.nNum[j - 2])
             nQ--;
-        // Und hier faengt das Teilen an
+        // Start division
         nK = 0;
         nTmp = 0;
         for (i = 0; i < nLenB; i++)
@@ -669,13 +666,13 @@ BigInt& BigInt::operator+=( const BigInt& rVal )
     {
         if( nVal <= MY_MAXLONG && rVal.nVal <= MY_MAXLONG
             && nVal >= MY_MINLONG && rVal.nVal >= MY_MINLONG )
-        { // wir bewegen uns im ungefaehrlichem Bereich
+        { // No overflows may occur here
             nVal += rVal.nVal;
             return *this;
         }
 
         if( (nVal < 0) != (rVal.nVal < 0) )
-        { // wir bewegen uns im ungefaehrlichem Bereich
+        { // No overflows may occur here
             nVal += rVal.nVal;
             return *this;
         }
@@ -695,13 +692,13 @@ BigInt& BigInt::operator-=( const BigInt& rVal )
     {
         if ( nVal <= MY_MAXLONG && rVal.nVal <= MY_MAXLONG &&
              nVal >= MY_MINLONG && rVal.nVal >= MY_MINLONG )
-        { // wir bewegen uns im ungefaehrlichem Bereich
+        { // No overflows may occur here
             nVal -= rVal.nVal;
             return *this;
         }
 
         if ( (nVal < 0) == (rVal.nVal < 0) )
-        { // wir bewegen uns im ungefaehrlichem Bereich
+        { // No overflows may occur here
             nVal -= rVal.nVal;
             return *this;
         }
@@ -720,8 +717,8 @@ BigInt& BigInt::operator*=( const BigInt& rVal )
     if ( !bIsBig && !rVal.bIsBig
          && nVal <= MY_MAXSHORT && rVal.nVal <= MY_MAXSHORT
          && nVal >= MY_MINSHORT && rVal.nVal >= MY_MINSHORT )
-         // nicht optimal !!! W.P.
-    { // wir bewegen uns im ungefaehrlichem Bereich
+         // TODO: not optimal !!! W.P.
+    { // No overflows may occur here
         nVal *= rVal.nVal;
     }
     else
@@ -747,7 +744,7 @@ BigInt& BigInt::operator/=( const BigInt& rVal )
 
         if ( !bIsBig )
         {
-            // wir bewegen uns im ungefaehrlichem Bereich
+            // No overflows may occur here
             nVal /= rVal.nVal;
             return *this;
         }
@@ -763,7 +760,7 @@ BigInt& BigInt::operator/=( const BigInt& rVal )
 
         if ( rVal.nVal <= (long)0xFFFF && rVal.nVal >= -(long)0xFFFF )
         {
-            // ein BigInt durch ein sal_uInt16 teilen
+            // Divide BigInt with an sal_uInt16
             sal_uInt16 nTmp;
             if ( rVal.nVal < 0 )
             {
@@ -785,7 +782,7 @@ BigInt& BigInt::operator/=( const BigInt& rVal )
         return *this;
     }
 
-    // BigInt durch BigInt teilen
+    // Divide BigInt with BigInt
     BigInt aTmp1, aTmp2;
     aTmp1.MakeBigInt( *this );
     aTmp2.MakeBigInt( rVal );
@@ -806,14 +803,14 @@ BigInt& BigInt::operator%=( const BigInt& rVal )
 
         if ( !bIsBig )
         {
-            // wir bewegen uns im ungefaehrlichem Bereich
+            // No overflows may occur here
             nVal %= rVal.nVal;
             return *this;
         }
 
         if ( rVal.nVal <= (long)0xFFFF && rVal.nVal >= -(long)0xFFFF )
         {
-            // ein BigInt durch ein short teilen
+            // Divide Bigint by short
             sal_uInt16 nTmp;
             if ( rVal.nVal < 0 )
             {
@@ -832,7 +829,7 @@ BigInt& BigInt::operator%=( const BigInt& rVal )
     if ( ABS_IsLess( rVal ) )
         return *this;
 
-    // BigInt durch BigInt teilen
+    // Divide BigInt with BigInt
     BigInt aTmp1, aTmp2;
     aTmp1.MakeBigInt( *this );
     aTmp2.MakeBigInt( rVal );
diff --git a/tools/source/generic/config.cxx b/tools/source/generic/config.cxx
index c590f6b..d2852cf 100644
--- a/tools/source/generic/config.cxx
+++ b/tools/source/generic/config.cxx
@@ -196,11 +196,10 @@ rtl::OString makeOString(const sal_uInt8* p, sal_uInt64 n)
 static void ImplMakeConfigList( ImplConfigData* pData,
                                 const sal_uInt8* pBuf, sal_uInt64 nLen )
 {
-    // kein Buffer, keine Daten
     if ( !nLen )
         return;
 
-    // Buffer parsen und Liste zusammenbauen
+    // Parse buffer and build config list
     sal_uInt64 nStart;
     sal_uInt64 nLineLen;
     sal_uInt64 nNameLen;
@@ -218,29 +217,29 @@ static void ImplMakeConfigList( ImplConfigData* pData,
         if ( pBuf[i] == 0x1A )
             break;
 
-        // Spaces und Tabs entfernen
+        // Remove spaces and tabs
         while ( (pBuf[i] == ' ') || (pBuf[i] == '\t') )
             i++;
 
-        // Zeilenanfang merken
+        // remember line-starts
         nStart = i;
         pLine = pBuf+i;
 
-        // Zeilenende suchen
+        // search line-endings
         while (  (i < nLen) && pBuf[i] && (pBuf[i] != '\r') && (pBuf[i] != '\n') &&
                 (pBuf[i] != 0x1A) )
             i++;
 
         nLineLen = i-nStart;
 
-        // Wenn Zeilenende (CR/LF), dann noch einen weiterschalten
+        // if Line-ending is found, continue once
         if ( (i+1 < nLen) &&
              (pBuf[i] != pBuf[i+1]) &&
              ((pBuf[i+1] == '\r') || (pBuf[i+1] == '\n')) )
             i++;
         i++;
 
-        // Zeile auswerten
+        // evaluate line
         if ( *pLine == '[' )
         {
             pGroup               = new ImplGroupData;
@@ -255,10 +254,10 @@ static void ImplMakeConfigList( ImplConfigData* pData,
             pPrevKey    = NULL;
             pKey        = NULL;
 
-            // Gruppennamen rausfiltern
+            // filter group names
             pLine++;
             nLineLen--;
-            // Spaces und Tabs entfernen
+            // remove spaces and tabs
             while ( (*pLine == ' ') || (*pLine == '\t') )
             {
                 nLineLen--;
@@ -278,8 +277,7 @@ static void ImplMakeConfigList( ImplConfigData* pData,
         {
             if ( nLineLen )
             {
-                // Wenn noch keine Gruppe existiert, dann alle Keys in die
-                // Default-Gruppe
+                // If no group exists yet, add to default
                 if ( !pGroup )
                 {
                     pGroup              = new ImplGroupData;
@@ -294,7 +292,7 @@ static void ImplMakeConfigList( ImplConfigData* pData,
                     pPrevKey    = NULL;
                 }
 
-                // Falls Leerzeile vorhanden, dann anhaengen
+                // if empty line, append it
                 if ( pPrevKey )
                 {
                     while ( pGroup->mnEmptyLines )
@@ -307,7 +305,7 @@ static void ImplMakeConfigList( ImplConfigData* pData,
                     }
                 }
 
-                // Neuen Key erzeugen
+                // Generate new key
                 pKey        = new ImplKeyData;
                 pKey->mpNext = NULL;
                 if ( pPrevKey )
@@ -327,7 +325,7 @@ static void ImplMakeConfigList( ImplConfigData* pData,
                     while ( (nNameLen < nLineLen) && (pLine[nNameLen] != '=') )
                         nNameLen++;
                     nKeyLen = nNameLen;
-                    // Spaces und Tabs entfernen
+                    // Remove spaces and tabs
                     if ( nNameLen )
                     {
                         while ( (pLine[nNameLen-1] == ' ') || (pLine[nNameLen-1] == '\t') )
@@ -339,7 +337,7 @@ static void ImplMakeConfigList( ImplConfigData* pData,
                     {
                         pLine += nKeyLen;
                         nLineLen -= nKeyLen;
-                        // Spaces und Tabs entfernen
+                        // Remove spaces and tabs
                         while ( (*pLine == ' ') || (*pLine == '\t') )
                         {
                             nLineLen--;
@@ -356,10 +354,8 @@ static void ImplMakeConfigList( ImplConfigData* pData,
             }
             else
             {
-                // Leerzeilen werden nur gezaehlt und beim Erzeugen des
-                // naechsten Keys angehaengt, da wir Leerzeilen am Ende
-                // einer Gruppe auch nach hinzufuegen von neuen Keys nur
-                // am Ende der Gruppe wieder speichern wollen
+                // Spaces are counted and appended only after key generation,
+                // as we want to store spaces even after adding new keys
                 if ( pGroup )
                     pGroup->mnEmptyLines++;
             }
@@ -396,12 +392,11 @@ static sal_uInt8* ImplGetConfigBuffer( const ImplConfigData* pData, sal_uIntPtr&
         nLineEndLen = 2;
     }
 
-    // Buffergroesse ermitteln
     nBufLen = 0;
     pGroup = pData->mpFirstGroup;
     while ( pGroup )
     {
-        // Leere Gruppen werden nicht geschrieben
+        // Don't write empty groups
         if ( pGroup->mpFirstKey )
         {
             nBufLen += pGroup->maGroupName.getLength() + nLineEndLen + 2;
@@ -417,7 +412,7 @@ static sal_uInt8* ImplGetConfigBuffer( const ImplConfigData* pData, sal_uIntPtr&
                 pKey = pKey->mpNext;
             }
 
-            // Leerzeile nach jeder Gruppe auch wieder speichern
+            // Write empty lines after each group
             if ( !pGroup->mnEmptyLines )
                 pGroup->mnEmptyLines = 1;
             nBufLen += nLineEndLen * pGroup->mnEmptyLines;
@@ -426,7 +421,7 @@ static sal_uInt8* ImplGetConfigBuffer( const ImplConfigData* pData, sal_uIntPtr&
         pGroup = pGroup->mpNext;
     }
 
-    // Laenge dem Aufrufer mitteilen
+    // Output buffer length
     rLen = nBufLen;
     if ( !nBufLen )
     {
@@ -442,17 +437,17 @@ static sal_uInt8* ImplGetConfigBuffer( const ImplConfigData* pData, sal_uIntPtr&
             return 0;
     }
 
-    // Schreibbuffer anlegen (wird vom Aufrufer zerstoert)
+    // Allocate new write buffer (caller frees it)
     pWriteBuf = new sal_uInt8[nBufLen];
     if ( !pWriteBuf )
         return 0;
 
-    // Buffer fuellen
+    // fill buffer
     pBuf = pWriteBuf;
     pGroup = pData->mpFirstGroup;
     while ( pGroup )
     {
-        // Leere Gruppen werden nicht geschrieben
+        // Don't write empty groups
         if ( pGroup->mpFirstKey )
         {
             *pBuf = '[';    pBuf++;
@@ -499,7 +494,7 @@ static sal_uInt8* ImplGetConfigBuffer( const ImplConfigData* pData, sal_uIntPtr&
                 pKey = pKey->mpNext;
             }
 
-            // Leerzeile nach jeder Gruppe auch wieder speichern
+            // Store empty line after each group
             sal_uInt16 nEmptyLines = pGroup->mnEmptyLines;
             while ( nEmptyLines )
             {
@@ -526,7 +521,7 @@ static void ImplReadConfig( ImplConfigData* pData )
     sal_Bool    bIsUTF8BOM =sal_False;
     sal_uInt8*  pBuf = ImplSysReadConfig( pData->maFileName, nRead, bRead, bIsUTF8BOM, nTimeStamp );
 
-    // Aus dem Buffer die Config-Verwaltungsliste aufbauen
+    // Read config list from buffer
     if ( pBuf )
     {
         ImplMakeConfigList( pData, pBuf, nRead );
@@ -552,7 +547,7 @@ static void ImplWriteConfig( ImplConfigData* pData )
     }
 #endif
 
-    // Aus der Config-Liste einen Buffer zusammenbauen
+    // Read config list from buffer
     sal_uIntPtr nBufLen;
     sal_uInt8*  pBuf = ImplGetConfigBuffer( pData, nBufLen );
     if ( pBuf )
@@ -575,7 +570,7 @@ static void ImplDeleteConfigData( ImplConfigData* pData )
     {
         pTempGroup = pGroup->mpNext;
 
-        // Alle Keys loeschen
+        // remove all keys
         pKey = pGroup->mpFirstKey;
         while ( pKey )
         {
@@ -584,7 +579,7 @@ static void ImplDeleteConfigData( ImplConfigData* pData )
             pKey = pTempKey;
         }
 
-        // Gruppe loeschen und weiterschalten
+        // remove group and continue
         delete pGroup;
         pGroup = pTempGroup;
     }
@@ -617,7 +612,7 @@ static void ImplFreeConfigData( ImplConfigData* pDelData )
 
 sal_Bool Config::ImplUpdateConfig() const
 {
-    // Wenn sich TimeStamp unterscheidet, dann Datei neu einlesen
+    // Re-read file if timestamp differs
     if ( mpData->mnTimeStamp != ImplSysGetConfigTimeStamp( maFileName ) )
     {
         ImplDeleteConfigData( mpData );
@@ -644,7 +639,7 @@ ImplGroupData* Config::ImplGetGroup() const
             pGroup = pGroup->mpNext;
         }
 
-        // Falls Gruppe noch nicht existiert, dann dazufuegen
+        // Add group if not exists
         if ( !pGroup )
         {
             pGroup               = new ImplGroupData;
@@ -657,9 +652,7 @@ ImplGroupData* Config::ImplGetGroup() const
                 mpData->mpFirstGroup = pGroup;
         }
 
-        // Gruppenname immer uebernehmen, da er auch in dieser Form
-        // geschrieben werden soll. Ausserdem die Cache-Members der
-        // Config-Klasse updaten
+        // Always inherit group names and upate cache members
         pGroup->maGroupName             = maGroupName;
         ((Config*)this)->mnDataUpdateId = mpData->mnDataUpdateId;
         ((Config*)this)->mpActGroup     = pGroup;
@@ -670,7 +663,7 @@ ImplGroupData* Config::ImplGetGroup() const
 
 Config::Config( const rtl::OUString& rFileName )
 {
-    // Daten initialisieren und einlesen
+    // Initialize config data
     maFileName      = toUncPath( rFileName );
     mpData          = ImplGetConfigData( maFileName );
     mpActGroup      = NULL;
@@ -699,8 +692,7 @@ Config::~Config()
 
 void Config::SetGroup(const rtl::OString& rGroup)
 {
-    // Wenn neue Gruppe gesetzt wird, muss beim naechsten mal die
-    // Gruppe neu ermittelt werden
+    // If group is to be reset, it needs to be updated on next call
     if ( maGroupName != rGroup )
     {
         maGroupName     = rGroup;
@@ -710,7 +702,7 @@ void Config::SetGroup(const rtl::OString& rGroup)
 
 void Config::DeleteGroup(const rtl::OString& rGroup)
 {
-    // Config-Daten evt. updaten
+    // Update config data if necessary
     if ( !mnLockCount || !mpData->mbRead )
     {
         ImplUpdateConfig();
@@ -730,7 +722,7 @@ void Config::DeleteGroup(const rtl::OString& rGroup)
 
     if ( pGroup )
     {
-        // Alle Keys loeschen
+        // Remove all keys
         ImplKeyData* pTempKey;
         ImplKeyData* pKey = pGroup->mpFirstKey;
         while ( pKey )
@@ -740,14 +732,14 @@ void Config::DeleteGroup(const rtl::OString& rGroup)
             pKey = pTempKey;
         }
 
-        // Gruppe weiterschalten und loeschen
+        // Rewire pointers and remove group
         if ( pPrevGroup )
             pPrevGroup->mpNext = pGroup->mpNext;
         else
             mpData->mpFirstGroup = pGroup->mpNext;
         delete pGroup;
 
-        // Config-Datei neu schreiben
+        // Rewrite config data
         if ( !mnLockCount && mbPersistence )
             ImplWriteConfig( mpData );
         else
@@ -755,7 +747,6 @@ void Config::DeleteGroup(const rtl::OString& rGroup)
             mpData->mbModified = sal_True;
         }
 
-        // Gruppen auf ungluetig setzen
         mnDataUpdateId = mpData->mnDataUpdateId;
         mpData->mnDataUpdateId++;
     }
@@ -763,7 +754,7 @@ void Config::DeleteGroup(const rtl::OString& rGroup)
 
 rtl::OString Config::GetGroupName(sal_uInt16 nGroup) const
 {
-    // Config-Daten evt. updaten
+    // Update config data if necessary
     if ( !mnLockCount )
         ImplUpdateConfig();
 
@@ -787,7 +778,7 @@ rtl::OString Config::GetGroupName(sal_uInt16 nGroup) const
 
 sal_uInt16 Config::GetGroupCount() const
 {
-    // Config-Daten evt. updaten
+    // Update config data if necessary
     if ( !mnLockCount )
         ImplUpdateConfig();
 
@@ -804,7 +795,7 @@ sal_uInt16 Config::GetGroupCount() const
 
 sal_Bool Config::HasGroup(const rtl::OString& rGroup) const
 {
-    // Config-Daten evt. updaten
+    // Update config data if necessary
     if ( !mnLockCount )
         ImplUpdateConfig();
 
@@ -850,11 +841,11 @@ rtl::OString Config::ReadKey(const rtl::OString& rKey, const rtl::OString& rDefa
     OSL_TRACE("%s", aTraceStr.getStr());
 #endif
 
-    // Config-Daten evt. updaten
+    // Update config data if necessary
     if ( !mnLockCount )
         ImplUpdateConfig();
 
-    // Key suchen und Value zurueckgeben
+    // Search key, return value if found
     ImplGroupData* pGroup = ImplGetGroup();
     if ( pGroup )
     {
@@ -885,14 +876,14 @@ void Config::WriteKey(const rtl::OString& rKey, const rtl::OString& rStr)
     OSL_TRACE("%s", aTraceStr.getStr());
 #endif
 
-    // Config-Daten evt. updaten
+    // Update config data if necessary
     if ( !mnLockCount || !mpData->mbRead )
     {
         ImplUpdateConfig();
         mpData->mbRead = sal_True;
     }
 
-    // Key suchen und Value setzen
+    // Search key and update value if found
     ImplGroupData* pGroup = ImplGetGroup();
     if ( pGroup )
     {
@@ -939,14 +930,14 @@ void Config::WriteKey(const rtl::OString& rKey, const rtl::OString& rStr)
 
 void Config::DeleteKey(const rtl::OString& rKey)
 {
-    // Config-Daten evt. updaten
+    // Update config data if necessary
     if ( !mnLockCount || !mpData->mbRead )
     {
         ImplUpdateConfig();
         mpData->mbRead = sal_True;
     }
 
-    // Key suchen und Value setzen
+    // Search key and update value
     ImplGroupData* pGroup = ImplGetGroup();
     if ( pGroup )
     {
@@ -963,14 +954,14 @@ void Config::DeleteKey(const rtl::OString& rKey)
 
         if ( pKey )
         {
-            // Gruppe weiterschalten und loeschen
+            // Rewire group pointers and delete
             if ( pPrevKey )
                 pPrevKey->mpNext = pKey->mpNext;
             else
                 pGroup->mpFirstKey = pKey->mpNext;
             delete pKey;
 
-            // Config-Datei neu schreiben
+            // Rewrite config file
             if ( !mnLockCount && mbPersistence )
                 ImplWriteConfig( mpData );
             else
@@ -993,11 +984,11 @@ sal_uInt16 Config::GetKeyCount() const
     OSL_TRACE("%s", aTraceStr.getStr());
 #endif
 
-    // Config-Daten evt. updaten
+    // Update config data if necessary
     if ( !mnLockCount )
         ImplUpdateConfig();
 
-    // Key suchen und Value zurueckgeben
+    // Search key and update value
     sal_uInt16 nCount = 0;
     ImplGroupData* pGroup = ImplGetGroup();
     if ( pGroup )
@@ -1029,7 +1020,7 @@ rtl::OString Config::GetKeyName(sal_uInt16 nKey) const
     OSL_TRACE("%s", aTraceStr.getStr());
 #endif
 
-    // Key suchen und Name zurueckgeben
+    // search key and return name if found
     ImplGroupData* pGroup = ImplGetGroup();
     if ( pGroup )
     {
@@ -1064,7 +1055,7 @@ rtl::OString Config::ReadKey(sal_uInt16 nKey) const
     OSL_TRACE("%s", aTraceStr.getStr());
 #endif
 
-    // Key suchen und Value zurueckgeben
+    // Search key and return value if found
     ImplGroupData* pGroup = ImplGetGroup();
     if ( pGroup )
     {
diff --git a/tools/source/generic/fract.cxx b/tools/source/generic/fract.cxx
index a9a20de..5c805dc 100644
--- a/tools/source/generic/fract.cxx
+++ b/tools/source/generic/fract.cxx
@@ -23,20 +23,16 @@
 #include <tools/stream.hxx>
 #include <tools/bigint.hxx>
 
-// Beschreibung: Berechnet den groessten gemeinsamen Teiler von
-//               nVal1 und nVal2
-// Parameter     long nVal1, long nVal2
-
-// Die Funktion GetGGT berechnet den groessten gemeinsamen Teiler der
-// beiden als Parameter uebergebenen Werte nVal1 und nVal2 nach dem
-// Algorithmus von Euklid. Hat einer der beiden Parameter den Wert 0 oder
-// 1, so wird als Ergebnis der Wert 1 zur�ckgegeben. Da der Algorithmus
-// nur mit positiven Zahlen arbeitet, werden die beiden Parameter
-// entsprechend umgewandelt.
-// Zum Algorithmus: die beiden Parameter werden solange ducheinander
-//              geteilt, bis sie beide gleich sind oder bis bei der Division
-//              kein Rest bleibt. Der kleinere der beiden Werte ist dann der
-//              GGT.
+/** Compute greates common divisor using Euclidian algorithm
+
+    As the algorithm works on positive values only, the absolute value
+    of each parameter is used.
+
+    @param nVal1
+    @param nVal2
+
+    @note: If one parameter is {0,1}, GetGGT returns 1.
+*/
 static long GetGGT( long nVal1, long nVal2 )
 {
     nVal1 = Abs( nVal1 );
@@ -101,11 +97,10 @@ static void Reduce( BigInt &rVal1, BigInt &rVal2 )
     rVal2 /= nB;
 }
 
-// Zur Initialisierung eines Bruches wird nNum dem Zaehler und nDen dem
-// Nenner zugewiesen. Da negative Werte des Nenners einen Bruch als
-// ungueltig kennzeichnen, wird bei der Eingabe eines negativen Nenners
-// sowohl das Vorzeichen des Nenners und des Zaehlers invertiert um wieder
-// einen gueltigen Wert fuer den Bruch zu erhalten.
+// Initialized by setting nNum as nominator and nDen as denominator
+// Negative values in the denominator are invalid and cause the
+// inversion of both nominator and denominator signs
+// in order to return the correct value.
 Fraction::Fraction( long nNum, long nDen )
 {
     nNumerator = nNum;
@@ -116,17 +111,15 @@ Fraction::Fraction( long nNum, long nDen )
         nNumerator   = -nNumerator;
     }
 
-    // Kuerzen ueber Groesste Gemeinsame Teiler
+    // Reduce through GCD
     long n = GetGGT( nNumerator, nDenominator );
     nNumerator   /= n;
     nDenominator /= n;
 }
 
-// Wenn der Wert von dVal groesser ist als LONG_MAX, dann wird der Bruch
-// auf den Wert ungueltig gesetzt, ansonsten werden dVal und der Nenner
-// solange mit 10 multipliziert, bis entweder der Zaehler oder der Nenner
-// groesser als LONG_MAX / 10 ist. Zum Schluss wird der so entstandene Bruch
-// gekuerzt.
+// If dVal > LONG_MAX, the fraction is set as invalid.
+// Otherwise, dVal and denominator are multiplied with 10, until one of them
+// is larger than (LONG_MAX / 10) and the fraction is reduced with GCD
 Fraction::Fraction( double dVal )
 {
     long nDen = 1;
@@ -147,7 +140,7 @@ Fraction::Fraction( double dVal )
     nNumerator   = (long)dVal;
     nDenominator = nDen;
 
-    // Kuerzen ueber Groesste Gemeinsame Teiler
+    // Reduce through GCD
     long n = GetGGT( nNumerator, nDenominator );
     nNumerator   /= n;
     nDenominator /= n;
@@ -161,15 +154,12 @@ Fraction::operator double() const
         return (double)0;
 }
 
-// Zunaechst werden die beiden Parameter auf ihre Gueltigkeit ueberprueft.
-// Ist einer der Parameter ungueltig, dann ist auch des Ergebnis
-// ungueltig. Zur Addition werden die beiden Brueche erst durch
-// Erweiterung mit den Nenner des jeweils anderen Bruches auf einen
-// gemeinsamen Nenner gebracht. Anschliessend werden die beiden Zaehler
-// addiert und das Ergebnis gekuerzt (durch Division von Zaehler und
-// Nenner mit nGGT). Innerhalb der Funktion wird mit dem Datentyp SLong
-// gerechnet, um einen Moeglichen Ueberlauf erkennen zu koennen. Bei
-// einem Ueberlauf wird das Ergebnis auf den Wert ungueltig gesetzt.
+// This methods first validates both values.
+// If one of the arguments is invalid, the whole operation is invalid.
+// For addition both fractions are extended to match the denominator,
+// then nominators are added and reduced (through GCD).
+// Internal datatype for computation is SLong to detect overflows,
+// which cause the operation to be marked as invalid
 Fraction& Fraction::operator += ( const Fraction& rVal )
 {
     if ( !rVal.IsValid() )
@@ -206,15 +196,12 @@ Fraction& Fraction::operator += ( const Fraction& rVal )
     return *this;
 }
 
-// Zunaechst werden die beiden Parameter auf ihre Gueltigkeit ueberprueft.
-// Ist einer der Parameter ungueltig, dann ist auch des Ergebnis
-// ungueltig. Zur Subtraktion werden die beiden Brueche erst durch
-// Erweiterung mit den Nenner des jeweils anderen Bruches auf einen
-// gemeinsamen Nenner gebracht. Anschliessend werden die beiden Zaehler
-// subtrahiert und das Ergebnis gekuerzt (durch Division von Zaehler und
-// Nenner mit nGGT). Innerhalb der Funktion wird mit dem Datentyp BigInt
-// gerechnet, um einen Moeglichen Ueberlauf erkennen zu koennen. Bei
-// einem Ueberlauf wird das Ergebnis auf den Wert ungueltig gesetzt.
+// This methods first validates both values.
+// If one of the arguments is invalid, the whole operation is invalid.
+// For substraction, both fractions are extended to match the denominator,
+// then nominators are substracted and reduced (through GCD).
+// Internal datatype for computation is SLong to detect overflows,
+// which cause the operation to be marked as invalid
 Fraction& Fraction::operator -= ( const Fraction& rVal )
 {
     if ( !rVal.IsValid() )
@@ -251,16 +238,12 @@ Fraction& Fraction::operator -= ( const Fraction& rVal )
     return *this;
 }
 
-// Zunaechst werden die beiden Parameter auf ihre Gueltigkeit ueberprueft.
-// Ist einer der Parameter ungueltig, dann ist auch des Ergebnis
-// ungueltig. Zur Multiplikation werden jeweils die beiden Zaehler und
-// Nenner miteinander multipliziert. Um Ueberlaufe zu vermeiden, werden
-// vorher jeweils der GGT zwischen dem Zaehler des einen und dem Nenner
-// des anderen Bruches bestimmt und bei der Multiplikation Zaehler und
-// Nenner durch die entsprechenden Werte geteilt.
-// Innerhalb der Funktion wird mit dem Datentyp BigInt gerechnet, um
-// einen Moeglichen Ueberlauf erkennen zu koennen. Bei einem Ueberlauf
-// wird das Ergebnis auf den Wert ungueltig gesetzt.
+// This methods first validates both values.
+// If one of the arguments is invalid, the whole operation is invalid.
+// For mutliplication, nominator and denominators are first reduced
+// (through GCD), and then multiplied.
+// Internal datatype for computation is BigInt to detect overflows,
+// which cause the operation to be marked as invalid
 Fraction& Fraction::operator *= ( const Fraction& rVal )
 {
     if ( !rVal.IsValid() )
@@ -292,19 +275,12 @@ Fraction& Fraction::operator *= ( const Fraction& rVal )
     return *this;
 }
 
-// Zunaechst werden die beiden Parameter auf ihre Gueltigkeit ueberprueft.
-// Ist einer der Parameter ungueltig, dann ist auch des Ergebnis
-// ungueltig.
-// Um den Bruch a durch b zu teilen, wird a mit dem Kehrwert von b
-// multipliziert. Analog zu Multiplikation wird jezt jeweils der Zaehler
-// des einen Bruches mit dem Nenner des anderen multipliziert.
-// Um Ueberlaufe zu vermeiden, werden vorher jeweils der GGT zwischen den
-// beiden Zaehlern und den beiden Nennern bestimmt und bei der
-// Multiplikation Zaehler und Nenner durch die entsprechenden Werte
-// geteilt.
-// Innerhalb der Funktion wird mit dem Datentyp BigInt gerechnet, um
-// einen Moeglichen Ueberlauf erkennen zu koennen. Bei einem Ueberlauf
-// wird das Ergebnis auf den Wert ungueltig gesetzt.
+// This methods first validates both values.
+// If one of the arguments is invalid, the whole operation is invalid.
+// For dividing a/b, we multiply a with the inverse of b.
+// To avoid overflows, we first reduce both fractions with GCD.
+// Internal datatype for computation is BigInt to detect overflows,
+// which cause the operation to be marked as invalid
 Fraction& Fraction::operator /= ( const Fraction& rVal )
 {
     if ( !rVal.IsValid() )
@@ -472,12 +448,9 @@ bool operator == ( const Fraction& rVal1, const Fraction& rVal2 )
            && rVal1.nDenominator == rVal2.nDenominator;
 }
 
-// Beide Operanden werden zunaechst auf ihre Gueltigkeit ueberprueft und
-// anschliessend zur Sicherheit noch einmal gekuerzt. Um die Brueche
-// (a/b) und (c/d) zu vergleichen, werden sie zunaechst auf einen
-// gemeinsamen Nenner gebracht (b*d), um dann die beiden Zaehler (a*d)
-// und (c*b) zu vergleichen. Das Ergebnis dieses Vergleichs wird
-// zurueckgegeben.
+// This methods first validates and reduces both values.
+// To compare (a/b) with (c/d), extend denominators (b*d), then return
+// the result of comparing the nominators (a < c)
 bool operator < ( const Fraction& rVal1, const Fraction& rVal2 )
 {
     if ( !rVal1.IsValid() || !rVal2.IsValid() )
@@ -491,12 +464,9 @@ bool operator < ( const Fraction& rVal1, const Fraction& rVal2 )
     return nN < nD;
 }
 
-// Beide Operanden werden zunaechst auf ihre Gueltigkeit ueberprueft und
-// anschliessend zur Sicherheit noch einmal gekuerzt. Um die Brueche
-// (a/b) und (c/d) zu vergleichen, werden sie zunaechst auf einen
-// gemeinsamen Nenner gebracht (b*d), um dann die beiden Zaehler (a*d)
-// und (c*b) zu vergleichen. Das Ergebnis dieses Vergleichs wird
-// zurueckgegeben.
+// This methods first validates and reduces both values.
+// To compare (a/b) with (c/d), extend denominators (b*d), then return
+// the result of comparing nominators (a > c)
 bool operator > ( const Fraction& rVal1, const Fraction& rVal2 )
 {
     if ( !rVal1.IsValid() || !rVal2.IsValid() )
diff --git a/tools/source/generic/gen.cxx b/tools/source/generic/gen.cxx
index 0c1702e..e4a03a3 100644
--- a/tools/source/generic/gen.cxx
+++ b/tools/source/generic/gen.cxx
@@ -89,18 +89,18 @@ Rectangle& Rectangle::Intersection( const Rectangle& rRect )
         return *this;
     }
 
-    // nicht mit umgedrehten Rechtecken arbeiten
+    // Justify rectangle
     Rectangle aTmpRect( rRect );
     Justify();
     aTmpRect.Justify();
 
-    // Schnitt bilden
+    // Perform intersection
     nLeft  = Max( nLeft, aTmpRect.nLeft );
     nRight = Min( nRight, aTmpRect.nRight );
     nTop   = Max( nTop, aTmpRect.nTop );
     nBottom= Min( nBottom, aTmpRect.nBottom );
 
-    // Feststellen ob Schnitt leer
+    // Determine if intersection is empty
     if ( nRight < nLeft || nBottom < nTop )
         *this = Rectangle();
 
@@ -111,7 +111,6 @@ void Rectangle::Justify()
 {
     long nHelp;
 
-    // Abfrage, ob Right kleiner Left
     if ( (nRight < nLeft) && (nRight != RECT_EMPTY) )
     {
         nHelp = nLeft;
@@ -119,7 +118,6 @@ void Rectangle::Justify()
         nRight = nHelp;
     }
 
-    // Abfrage, ob Bottom kleiner Top
     if ( (nBottom < nTop) && (nBottom != RECT_EMPTY) )
     {
         nHelp = nBottom;
@@ -167,7 +165,7 @@ sal_Bool Rectangle::IsInside( const Rectangle& rRect ) const
 
 sal_Bool Rectangle::IsOver( const Rectangle& rRect ) const
 {
-    // Wenn sie sich nicht schneiden, ueberlappen sie auch nicht
+    // If there's no intersection, they don't overlap
     return !GetIntersection( rRect ).IsEmpty();
 }
 
diff --git a/tools/source/generic/poly.cxx b/tools/source/generic/poly.cxx
index cf0a017..b15c97c 100644
--- a/tools/source/generic/poly.cxx
+++ b/tools/source/generic/poly.cxx
@@ -218,7 +218,7 @@ void ImplPolygon::ImplSplit( sal_uInt16 nPos, sal_uInt16 nSpace, ImplPolygon* pI
 
     if( nPos >= mnPoints )
     {
-        // Hinten anhaengen
+        // Append at the back
         nPos = mnPoints;
         ImplSetSize( nNewSize, sal_True );
 
@@ -232,7 +232,6 @@ void ImplPolygon::ImplSplit( sal_uInt16 nPos, sal_uInt16 nSpace, ImplPolygon* pI
     }
     else
     {
-        // PointArray ist in diesem Zweig immer vorhanden
         const sal_uInt16    nSecPos = nPos + nSpace;
         const sal_uInt16    nRest = mnPoints - nPos;
 
@@ -248,7 +247,7 @@ void ImplPolygon::ImplSplit( sal_uInt16 nPos, sal_uInt16 nSpace, ImplPolygon* pI
         memcpy( pNewAry + nSecPos, mpPointAry + nPos, nRest * sizeof( Point ) );
         delete[] (char*) mpPointAry;
 
-        // ggf. FlagArray beruecksichtigen
+        // consider FlagArray
         if( mpFlagAry )
         {
             sal_uInt8* pNewFlagAry = new sal_uInt8[ nNewSize ];
@@ -281,7 +280,7 @@ void ImplPolygon::ImplCreateFlagArray()
 
 inline void Polygon::ImplMakeUnique()
 {
-    // Falls noch andere Referenzen bestehen, dann kopieren
+    // copy references if any exist
     if ( mpImplPolygon->mnRefCount != 1 )
     {
         if ( mpImplPolygon->mnRefCount )
@@ -413,7 +412,7 @@ Polygon::Polygon( const Point& rCenter, long nRadX, long nRadY, sal_uInt16 nPoin
 
     if( nRadX && nRadY )
     {
-        // Default berechnen (abhaengig von Groesse)
+        // Compute default (depends on size)
         if( !nPoints )
         {
             nPoints = (sal_uInt16) ( F_PI * ( 1.5 * ( nRadX + nRadY ) -
@@ -425,7 +424,7 @@ Polygon::Polygon( const Point& rCenter, long nRadX, long nRadY, sal_uInt16 nPoin
                 nPoints >>= 1;
         }
 
-        // Anzahl der Punkte auf durch 4 teilbare Zahl aufrunden
+        // Ceil number of points until divisible by four
         mpImplPolygon = new ImplPolygon( nPoints = (nPoints + 3) & ~3 );
 
         Point* pPt;
@@ -481,7 +480,7 @@ Polygon::Polygon( const Rectangle& rBound, const Point& rStart, const Point& rEn
         if( ( nRadX > 32 ) && ( nRadY > 32 ) && ( nRadX + nRadY ) < 8192 )
             nPoints >>= 1;
 
-        // Winkel berechnen
+        // compute threshold
         const double    fRadX = nRadX;
         const double    fRadY = nRadY;
         const double    fCenterX = aCenter.X();
@@ -499,9 +498,7 @@ Polygon::Polygon( const Rectangle& rBound, const Point& rStart, const Point& rEn
         if ( bFullCircle )
             fDiff = F_2PI;
 

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list