diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 666469c..a1c7f8c 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -123,7 +123,7 @@
 			<action type="update" issue="LOG4PHP-29" dev="Knut Urdalen">Load classes through autoload instead of explicitly include them</action>
 			<action type="update" issue="LOG4PHP-30" dev="Christian Grobmeier">Implement LoggerAppenderPDO</action>
 			<action type="update" issue="LOG4PHP-31" dev="Knut Urdalen">Removing unnecessary use of LOG4PHP_DIR</action>
-			<action type="update" issue="LOG4PHP-32" dev="Knut Urdalen, Christian Grobmeier">Refactor from using define to class contants (Knut Urdalen, Christian Grobmeier)</action>
+			<action type="update" issue="LOG4PHP-32" dev="Knut Urdalen, Christian Grobmeier">Refactor from using define to class constants (Knut Urdalen, Christian Grobmeier)</action>
 			<action type="update" issue="LOG4PHP-34" dev="Christian Grobmeier">Remove all internal debugging</action>
 			<action type="update" issue="LOG4PHP-35" dev="Knut Urdalen">Replace LOG4PHP_LINE_SEP with PHP_EOL</action>
 			<action type="update" issue="LOG4PHP-37" dev="Christian Grobmeier">removed LoggerAppenderDB in favour to LoggerAppenderPDO</action>
diff --git a/src/main/php/Logger.php b/src/main/php/Logger.php
index 9751f59..b433574 100644
--- a/src/main/php/Logger.php
+++ b/src/main/php/Logger.php
@@ -526,7 +526,7 @@
 	 * Configures log4php.
 	 * 
 	 * This method needs to be called before the first logging event has 
-	 * occured. If this method is not called before then the default
+	 * occurred. If this method is not called before then the default
 	 * configuration will be used.
 	 *
 	 * @param string|array $configuration Either a path to the configuration
diff --git a/src/main/php/LoggerLoggingEvent.php b/src/main/php/LoggerLoggingEvent.php
index 29ba361..93eb860 100644
--- a/src/main/php/LoggerLoggingEvent.php
+++ b/src/main/php/LoggerLoggingEvent.php
@@ -310,7 +310,7 @@
 	 * to the time the event was constructed.
 	 * 
 	 * @deprecated This method has been replaced by getRelativeTime which 
-	 * 		does not perform unneccesary multiplication and formatting.
+	 * 		does not perform unnecessary multiplication and formatting.
 	 * 
 	 * @return integer 
 	 */
diff --git a/src/main/php/appenders/LoggerAppenderDailyFile.php b/src/main/php/appenders/LoggerAppenderDailyFile.php
index 8dce015..972c0de 100644
--- a/src/main/php/appenders/LoggerAppenderDailyFile.php
+++ b/src/main/php/appenders/LoggerAppenderDailyFile.php
@@ -88,7 +88,7 @@
 			
 			// Close the file if it's open.
 			// Note: $this->close() is not called here because it would set
-			//       $this->closed to true and the appender would not recieve
+			//       $this->closed to true and the appender would not receive
 			//       any more logging requests
 			if (is_resource($this->fp)) {
 				$this->write($this->layout->getFooter());
diff --git a/src/main/php/appenders/LoggerAppenderFirePHP.php b/src/main/php/appenders/LoggerAppenderFirePHP.php
index b9ac76c..c56446d 100644
--- a/src/main/php/appenders/LoggerAppenderFirePHP.php
+++ b/src/main/php/appenders/LoggerAppenderFirePHP.php
@@ -49,7 +49,7 @@
 	
 	/**
 	 * The target for log messages. Possible values are: 'page' (default), 
-	 * 'request', 'package' and 'contoller'.
+	 * 'request', 'package' and 'controller'.
 	 */
 	protected $target = 'page';
 
diff --git a/src/main/php/appenders/LoggerAppenderPDO.php b/src/main/php/appenders/LoggerAppenderPDO.php
index 6443aad..6586dfe 100644
--- a/src/main/php/appenders/LoggerAppenderPDO.php
+++ b/src/main/php/appenders/LoggerAppenderPDO.php
@@ -27,7 +27,7 @@
  * - table           - Name of the table to which log entries are be inserted.
  * - insertSQL       - Sets the insert statement for a logging event. Defaults
  *                     to the correct one - change only if you are sure what you are doing.
- * - insertPattern   - The conversion pattern to use in conjuction with insert 
+ * - insertPattern   - The conversion pattern to use in conjunction with insert 
  *                     SQL. Must contain the same number of comma separated 
  *                     conversion patterns as there are question marks in the 
  *                     insertSQL.
diff --git a/src/main/php/configurators/LoggerConfiguratorDefault.php b/src/main/php/configurators/LoggerConfiguratorDefault.php
index f78b797..8f89c99 100644
--- a/src/main/php/configurators/LoggerConfiguratorDefault.php
+++ b/src/main/php/configurators/LoggerConfiguratorDefault.php
@@ -329,7 +329,7 @@
 			return;
 		}
 		if (!class_exists($class)) {
-			$this->warn("Nonexistant layout class [$class] specified for appender [$name]. Reverting to default layout.");
+			$this->warn("Nonexistent layout class [$class] specified for appender [$name]. Reverting to default layout.");
 			return;
 		}
 		
@@ -357,7 +357,7 @@
 		$name = $appender->getName();
 		$class = $config['class'];
 		if (!class_exists($class)) {
-			$this->warn("Nonexistant filter class [$class] specified on appender [$name]. Skipping filter definition.");
+			$this->warn("Nonexistent filter class [$class] specified on appender [$name]. Skipping filter definition.");
 			return;
 		}
 	
@@ -465,7 +465,7 @@
 				$object->$setter($value);
 			} else {
 				$class = get_class($object);
-				$this->warn("Nonexistant option [$name] specified on [$class]. Skipping.");
+				$this->warn("Nonexistent option [$name] specified on [$class]. Skipping.");
 			}
 		}
 	}
diff --git a/src/main/php/helpers/LoggerPatternParser.php b/src/main/php/helpers/LoggerPatternParser.php
index a2ed911..33afded 100644
--- a/src/main/php/helpers/LoggerPatternParser.php
+++ b/src/main/php/helpers/LoggerPatternParser.php
@@ -149,7 +149,7 @@
 			$converter = $this->getConverter($word, $formattingInfo, $option);
 			$this->addToChain($converter);	
 		} else {
-			trigger_error("log4php: Invalid keyword '%$word' in converison pattern. Ignoring keyword.", E_USER_WARNING);
+			trigger_error("log4php: Invalid keyword '%$word' in conversion pattern. Ignoring keyword.", E_USER_WARNING);
 		}
 	}
 	
@@ -168,7 +168,7 @@
 	 */
 	private function getConverter($word, $info, $option) {
 		if (!isset($this->converterMap[$word])) {
-			throw new LoggerException("Invalid keyword '%$word' in converison pattern. Ignoring keyword.");
+			throw new LoggerException("Invalid keyword '%$word' in conversion pattern. Ignoring keyword.");
 		}
 		
 		$converterClass = $this->converterMap[$word];
diff --git a/src/main/php/xml/log4php.dtd b/src/main/php/xml/log4php.dtd
index 54c6c7f..c7b16fc 100644
--- a/src/main/php/xml/log4php.dtd
+++ b/src/main/php/xml/log4php.dtd
@@ -62,7 +62,7 @@
 <!-- Appenders may contain an error handler, a layout, optional parameters -->
 <!-- and filters. They may also reference (or include) other appenders. -->
 <!-- [log4php] -->
-<!-- error handler tag has no effects since log4php does not handle errors. Defintion deleted. -->
+<!-- error handler tag has no effects since log4php does not handle errors. Definition deleted. -->
 <!-- [/log4php] -->
 <!ELEMENT appender (param*, layout?, filter*, appender-ref*)>
 <!ATTLIST appender
diff --git a/src/site/apt/contributingpatches.apt b/src/site/apt/contributingpatches.apt
index 93c9a5b..709fd3f 100644
--- a/src/site/apt/contributingpatches.apt
+++ b/src/site/apt/contributingpatches.apt
@@ -30,7 +30,7 @@
 
 * Respect the original style
 
-  Please respect the style of the orginal file. Make sure that your additions fit in with that style.
+  Please respect the style of the original file. Make sure that your additions fit in with that style.
   The framework has coding conventions and every contribution is supposed to adhere to them. 
   You might find it a little difficult to discover the conventions used by a particular class 
   but if you stick to the style of the original then that'll be fine. If in doubt, ask on the developers
@@ -42,7 +42,7 @@
 
   Most important codestyles:
 
-    * don't use vertical alignement
+    * don't use vertical alignment
     
     * keep brackets on the same line as the method signature
     
diff --git a/src/site/xdoc/docs/appenders.xml b/src/site/xdoc/docs/appenders.xml
index 8b88e13..ae937ef 100644
--- a/src/site/xdoc/docs/appenders.xml
+++ b/src/site/xdoc/docs/appenders.xml
@@ -172,7 +172,7 @@
 				will be ignored.</p>
 				
 				<p>For example, if you set <code>WARN</code> as a threshold, then <code>INFO</code>, <code>DEBUG</code>
-				and <code>TRACE</code> level events recieved by the appender will not be logged, but <code>WARN</code>,
+				and <code>TRACE</code> level events received by the appender will not be logged, but <code>WARN</code>,
 				<code>ERROR</code> and <code>FATAL</code> will.</p>
 				
 				<p>An example of setting an appender threshold:</p>
diff --git a/src/site/xdoc/docs/layouts/pattern.xml b/src/site/xdoc/docs/layouts/pattern.xml
index 7b3a6cf..055b2ba 100644
--- a/src/site/xdoc/docs/layouts/pattern.xml
+++ b/src/site/xdoc/docs/layouts/pattern.xml
@@ -273,7 +273,7 @@
     						</td>
     						<td>
     							<p>A platform dependent line-break character(s).</p>
-    							<p>Note that a line break will not be printed unless explicitely specified.</p>
+    							<p>Note that a line break will not be printed unless explicitly specified.</p>
     						</td>
     					</tr>
     					<tr>
@@ -572,7 +572,7 @@
 			    ensures that the message always starts at the same character position which improves log 
 			    readability.</p>
 			    
-			    <p>Notice that the newline between logging events (%n) has to be explicitely defined. Otherwise all 
+			    <p>Notice that the newline between logging events (%n) has to be explicitly defined. Otherwise all 
 			    logging events will be logged in the same line.</p>
 			    
 			    <h4>Formatting the date</h4>
diff --git a/src/site/xdoc/quickstart.xml b/src/site/xdoc/quickstart.xml
index cc54eab..d55e3f1 100644
--- a/src/site/xdoc/quickstart.xml
+++ b/src/site/xdoc/quickstart.xml
@@ -81,7 +81,7 @@
 					<li><em>line 6</em>: Sets the root logger level to <code>WARN</code>. This means that logging requests 
 					with the level lower than <code>WARN</code> will not be logged by the root logger.</li>
 					
-					<li><em>line 7</em>: Links <code>myAppender</code> to the root logger so that all events recieved by the root 
+					<li><em>line 7</em>: Links <code>myAppender</code> to the root logger so that all events received by the root 
 					logger will be forwarded to <code>myAppender</code> and written into the log file.</li>
 				</ul>
 
diff --git a/src/test/php/LoggerConfiguratorTest.php b/src/test/php/LoggerConfiguratorTest.php
index e8ff410..a342700 100644
--- a/src/test/php/LoggerConfiguratorTest.php
+++ b/src/test/php/LoggerConfiguratorTest.php
@@ -137,7 +137,7 @@
  	
     /**
  	 * @expectedException PHPUnit_Framework_Error
- 	 * @expectedExceptionMessage Nonexistant filter class [Foo] specified on appender [foo]. Skipping filter definition.
+ 	 * @expectedExceptionMessage Nonexistent filter class [Foo] specified on appender [foo]. Skipping filter definition.
  	 */
  	public function testNotExistingAppenderFilterClassSet() {
  		Logger::configure(PHPUNIT_CONFIG_DIR . '/appenders/config_not_existing_filter_class.xml');
@@ -145,9 +145,9 @@
 
     /**
  	 * @expectedException PHPUnit_Framework_Error
- 	 * @expectedExceptionMessage Nonexistant option [fooParameter] specified on [LoggerFilterStringMatch]. Skipping.
+ 	 * @expectedExceptionMessage Nonexistent option [fooParameter] specified on [LoggerFilterStringMatch]. Skipping.
  	 */
- 	public function testInvalidAppenderFilterParamter() {
+ 	public function testInvalidAppenderFilterParameter() {
  		Logger::configure(PHPUNIT_CONFIG_DIR . '/appenders/config_invalid_filter_parameters.xml');
  	} 	
  	
@@ -161,7 +161,7 @@
  	
     /**
  	 * @expectedException PHPUnit_Framework_Error
- 	 * @expectedExceptionMessage Nonexistant layout class [Foo] specified for appender [foo]. Reverting to default layout.
+ 	 * @expectedExceptionMessage Nonexistent layout class [Foo] specified for appender [foo]. Reverting to default layout.
  	 */
  	public function testNotExistingAppenderLayoutClassSet() {
  		Logger::configure(PHPUNIT_CONFIG_DIR . '/appenders/config_not_existing_layout_class.xml');
@@ -236,13 +236,13 @@
  	 * @expectedException PHPUnit_Framework_Error
  	 * @expectedExceptionMessage log4php: Configuration failed. File not found
  	 */
- 	public function testNonexistantFile() {
+ 	public function testNonexistentFile() {
  		Logger::configure('hopefully/this/path/doesnt/exist/config.xml');
  		
  	}
  	
  	/** Test correct fallback to the default configuration. */
- 	public function testNonexistantFileFallback() {
+ 	public function testNonexistentFileFallback() {
  		@Logger::configure('hopefully/this/path/doesnt/exist/config.xml');
  		$this->testDefaultConfig();
  	}
diff --git a/src/test/php/LoggerMDCTest.php b/src/test/php/LoggerMDCTest.php
index 20db81a..8d2b610 100644
--- a/src/test/php/LoggerMDCTest.php
+++ b/src/test/php/LoggerMDCTest.php
@@ -37,7 +37,7 @@
 	/** A pattern with 3 keys (one is numeric). */
 	private $pattern3 = "%-5p %c: %X{key1} %X{key2} %X{3} %m";
 	
-	/** A pattern with a non-existant key. */
+	/** A pattern with a non-existent key. */
 	private $pattern4 = "%-5p %c: %X{key_does_not_exist} %m";
 	
 	/** A pattern without a key. */
@@ -84,7 +84,7 @@
 		$expected = "INFO  test: valueofkey1 valueofkey2 valueofkey3 Test message";
 		self::assertEquals($expected, $actual);
 		
-		// Pattern with non-existant key
+		// Pattern with non-existent key
 		$actual = $this->formatEvent($event, $this->pattern4);
 		$expected = "INFO  test:  Test message";
 		self::assertEquals($expected, $actual);
diff --git a/src/test/php/configurators/LoggerConfigurationAdapterINITest.php b/src/test/php/configurators/LoggerConfigurationAdapterINITest.php
index 2159c73..da341c8 100644
--- a/src/test/php/configurators/LoggerConfigurationAdapterINITest.php
+++ b/src/test/php/configurators/LoggerConfigurationAdapterINITest.php
@@ -98,7 +98,7 @@
  	 * @expectedException LoggerException
  	 * @expectedExceptionMessage File [you/will/never/find/me.ini] does not exist.
 	 */
-	public function testNonExistantFileException() {
+	public function testNonExistentFileException() {
 		$adapter = new LoggerConfigurationAdapterINI();
 		$adapter->convert('you/will/never/find/me.ini');
 	}
diff --git a/src/test/php/configurators/LoggerConfigurationAdapterPHPTest.php b/src/test/php/configurators/LoggerConfigurationAdapterPHPTest.php
index 23a0c1e..edf5cb0 100644
--- a/src/test/php/configurators/LoggerConfigurationAdapterPHPTest.php
+++ b/src/test/php/configurators/LoggerConfigurationAdapterPHPTest.php
@@ -57,7 +57,7 @@
  	 * @expectedException LoggerException
  	 * @expectedExceptionMessage File [you/will/never/find/me.conf] does not exist.
 	 */
-	public function testNonExistantFileWarning() {
+	public function testNonExistentFileWarning() {
 		$adapter = new LoggerConfigurationAdapterPHP();
 		$adapter->convert('you/will/never/find/me.conf');
 	}
diff --git a/src/test/php/configurators/LoggerConfigurationAdapterXMLTest.php b/src/test/php/configurators/LoggerConfigurationAdapterXMLTest.php
index ff71ef1..bb0c02c 100644
--- a/src/test/php/configurators/LoggerConfigurationAdapterXMLTest.php
+++ b/src/test/php/configurators/LoggerConfigurationAdapterXMLTest.php
@@ -127,7 +127,7 @@
  	 * @expectedException LoggerException
  	 * @expectedExceptionMessage File [you/will/never/find/me.conf] does not exist.
 	 */
-	public function testNonExistantFile() {
+	public function testNonExistentFile() {
 		$adapter = new LoggerConfigurationAdapterXML();
 		$adapter->convert('you/will/never/find/me.conf');
 	}
@@ -164,7 +164,7 @@
 		$url =  PHPUNIT_CONFIG_DIR . '/adapters/xml/config_duplicate_logger.xml';
 		$adapter = new LoggerConfigurationAdapterXML();
 		
-		// Supress the warning so that test can continue 
+		// Suppress the warning so that test can continue 
 		$config = @$adapter->convert($url);
 
 		// Second definition of foo has level set to warn (the first to info)
diff --git a/src/test/php/filters/LoggerFilterLevelMatchTest.php b/src/test/php/filters/LoggerFilterLevelMatchTest.php
index c402030..315b6d8 100644
--- a/src/test/php/filters/LoggerFilterLevelMatchTest.php
+++ b/src/test/php/filters/LoggerFilterLevelMatchTest.php
@@ -47,7 +47,7 @@
 				$expected = ($event->getLevel() == $level) ? LoggerFilter::ACCEPT : LoggerFilter::NEUTRAL;
 				$actual = $filter->decide($event);
 					
-				// Get string represenations for logging
+				// Get string representations for logging
 				$sExpected = LoggerTestHelper::decisionToString($expected);
 				$sActual = LoggerTestHelper::decisionToString($actual);
 				
@@ -75,7 +75,7 @@
 				$expected = ($event->getLevel() == $level) ? LoggerFilter::DENY : LoggerFilter::NEUTRAL;
 				$actual = $filter->decide($event);
 					
-				// Get string represenations for logging
+				// Get string representations for logging
 				$sExpected = LoggerTestHelper::decisionToString($expected);
 				$sActual = LoggerTestHelper::decisionToString($actual);
 	
@@ -93,7 +93,7 @@
 			$expected = LoggerFilter::NEUTRAL;
 			$actual = $filter->decide($event);
 				
-			// Get string represenations for logging
+			// Get string representations for logging
 			$sExpected = LoggerTestHelper::decisionToString($expected);
 			$sActual = LoggerTestHelper::decisionToString($actual);
 			$level = $event->getLevel();
diff --git a/src/test/php/pattern/LoggerPatternConverterTest.php b/src/test/php/pattern/LoggerPatternConverterTest.php
index 12ab854..eccaeed 100644
--- a/src/test/php/pattern/LoggerPatternConverterTest.php
+++ b/src/test/php/pattern/LoggerPatternConverterTest.php
@@ -23,7 +23,7 @@
  * @link       http://logging.apache.org/log4php
  */
 
-/** Converter referencing non-existant superglobal variable. */
+/** Converter referencing non-existent superglobal variable. */
 class LoggerInvalidSuperglobalConverter extends LoggerPatternConverterSuperglobal {
 	protected $name = '_FOO';
 }
@@ -220,7 +220,7 @@
 		$expected = 'bar';
 		self::assertSame($expected, $actual);
 
-		// Non existant key
+		// Non existent key
 		$converter = new LoggerPatternConverterMDC($this->info, 'doesnotexist');
 		$actual = $converter->convert($this->event);
 		$expected = '';
@@ -310,7 +310,7 @@
 	 * @expectedException PHPUnit_Framework_Error
 	 * @expectedExceptionMessage log4php: LoggerInvalidSuperglobalConverter: Cannot find superglobal variable $_FOO
 	 */
-	public function testNonexistantSuperglobal() {
+	public function testNonexistentSuperglobal() {
 		$converter = new LoggerInvalidSuperglobalConverter($this->info);
 		$actual = $converter->convert($this->event);
 	}
diff --git a/src/test/php/renderers/LoggerRendererMapTest.php b/src/test/php/renderers/LoggerRendererMapTest.php
index 030f4b5..68602e3 100644
--- a/src/test/php/renderers/LoggerRendererMapTest.php
+++ b/src/test/php/renderers/LoggerRendererMapTest.php
@@ -102,7 +102,7 @@
 	}
 	
 	/**
-	 * Try adding a non-existant class as renderer.
+	 * Try adding a non-existent class as renderer.
 	 * @expectedException PHPUnit_Framework_Error
  	 * @expectedExceptionMessage Failed adding renderer. Rendering class [DoesNotExist] not found.
 	 */
@@ -134,7 +134,7 @@
 	}
 	
 	/**
-	 * Try setting a non-existant class as default renderer.
+	 * Try setting a non-existent class as default renderer.
 	 * @expectedException PHPUnit_Framework_Error
 	 * @expectedExceptionMessage Failed setting default renderer. Rendering class [DoesNotExist] not found.
 	 */
