diff --git a/django/core/urlresolvers.py b/django/core/urlresolvers.py
index 141cd14..4e9bd85 100644
--- a/django/core/urlresolvers.py
+++ b/django/core/urlresolvers.py
@@ -686,6 +686,7 @@ def translate_url(url, lang_code):
         to_be_reversed = "%s:%s" % (match.namespace, match.url_name) if match.namespace else match.url_name
         with override(lang_code):
             try:
+                match.kwargs = dict((k, v) for k, v in match.kwargs.iteritems() if not v is None)
                 url = reverse(to_be_reversed, args=match.args, kwargs=match.kwargs)
             except NoReverseMatch:
                 pass
diff --git a/tests/i18n/patterns/tests.py b/tests/i18n/patterns/tests.py
index 1e8bb9d..485a3c7 100644
--- a/tests/i18n/patterns/tests.py
+++ b/tests/i18n/patterns/tests.py
@@ -138,6 +138,9 @@ class URLTranslationTests(URLTestCaseBase):
         with translation.override('en'):
             self.assertEqual(translate_url('/en/non-existent/', 'nl'), '/en/non-existent/')
             self.assertEqual(translate_url('/en/users/', 'nl'), '/nl/gebruikers/')
+            # URL with arguments
+            self.assertEqual(translate_url('/en/with-arguments/regular-argument/', 'nl'), '/nl/with-arguments/regular-argument/')
+            self.assertEqual(translate_url('/en/with-arguments/regular-argument/optional-argument.html', 'nl'), '/nl/with-arguments/regular-argument/optional-argument.html')
             # Namespaced URL
             self.assertEqual(translate_url('/en/account/register/', 'nl'), '/nl/profiel/registeren/')
             self.assertEqual(translation.get_language(), 'en')
diff --git a/tests/i18n/patterns/urls/default.py b/tests/i18n/patterns/urls/default.py
index caf1a76..d35a610 100644
--- a/tests/i18n/patterns/urls/default.py
+++ b/tests/i18n/patterns/urls/default.py
@@ -15,6 +15,7 @@ urlpatterns = [
 urlpatterns += i18n_patterns(
     url(r'^prefixed/$', view, name='prefixed'),
     url(r'^prefixed\.xml$', view, name='prefixed_xml'),
+    url(r'^with-arguments/(?P<argument>[\w-]+)/(?:(?P<argumentOptional>[\w-]+).html)?$', view, name='with-arguments'),
     url(_(r'^users/$'), view, name='users'),
     url(_(r'^account/'), include('i18n.patterns.urls.namespace', namespace='account')),
 )
