- [bug] The Babel plugin has been repaired to work on Python 3.
diff --git a/CHANGES b/CHANGES
index fb83453..1e5cad8 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,8 @@
   is backwards incompatible vs. code that is relying upon a _('')
   translation to be working within a call tag.
 
+- [bug] The Babel plugin has been repaired to work on Python 3.
+
 0.8.1
 - [bug] Changed setup.py to skip installing markupsafe
   if Python version is < 2.6 or is between 3.0 and
diff --git a/mako/compat.py b/mako/compat.py
index 3a4742d..5e9c201 100644
--- a/mako/compat.py
+++ b/mako/compat.py
@@ -18,6 +18,8 @@
     binary_type = bytes
     text_type = str
 
+    from io import BytesIO as byte_buffer
+
     def u(s):
         return s
 
@@ -30,6 +32,9 @@
         from cStringIO import StringIO
     except:
         from StringIO import StringIO
+
+    byte_buffer = StringIO
+
     from urllib import quote_plus, unquote_plus
     from htmlentitydefs import codepoint2name, name2codepoint
     string_types = basestring,
diff --git a/mako/ext/babelplugin.py b/mako/ext/babelplugin.py
index e4feceb..2f6b7fb 100644
--- a/mako/ext/babelplugin.py
+++ b/mako/ext/babelplugin.py
@@ -113,10 +113,10 @@
             translator_comments = \
                 [comment[1] for comment in translator_comments]
 
-        if not compat.py3k and isinstance(code, compat.text_type):
+        if isinstance(code, compat.text_type):
             code = code.encode('ascii', 'backslashreplace')
 
-        code = StringIO(code)
+        code = compat.byte_buffer(code)
         for lineno, funcname, messages, python_translator_comments \
                 in extract_python(code, keywords, comment_tags, options):
             yield (node.lineno + (lineno - 1), funcname, messages,