Skip to content
This repository

fix bug 759356 - update devmo_url for kuma #269

Merged
merged 2 commits into from almost 2 years ago

2 participants

luke crouch Les Orchard
luke crouch
Owner

need someone to review:

  • have to manually migrate translated version of pages
  • caching the url's to avoid a hundred queries per page
  • devmo_url can't automatically follow re-directs without refactoring redirect_url
templates/base.html
... ...
@@ -169,10 +169,10 @@ <h1 id="logo"><a href="{{ url('home') }}"><img src="{{ MEDIA_URL }}img/mdn-logo-
169 169
       <img src="{{ MEDIA_URL }}img/mdn-logo-tiny.png" alt="" width="42" height="48">
170 170
       <p id="copyright">&copy; {{ thisyear() }} Mozilla Developer Network</p>
171 171
       <p>
172  
-      {% trans copyright_url=devmo_url(_('/Project:Copyrights')) %}
  172
+      {% trans copyright_url=devmo_url('/Project:Copyrights') %}
1
Les Orchard Collaborator
lmorchard added a note June 13, 2012

This looks like it should be Project:Copyrights - no leading '/'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
templates/base.html
((6 lines not shown))
173 173
       Content is available under <a href="{{ copyright_url }}">these licenses</a>
174 174
       {% endtrans %}
175  
-      &bull; <a href="{{ devmo_url(_('/Project:en/About')) }}">{{ _('About MDN') }}</a> &bull;
  175
+      &bull; <a href="{{ devmo_url('/Project:en/About') }}">{{ _('About MDN') }}</a> &bull;
1
Les Orchard Collaborator
lmorchard added a note June 13, 2012

This looks like it should be Project:About - no leading '/' or en in the slug

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
apps/devmo/helpers.py
((12 lines not shown))
79 80
     """
80 81
     if not settings.DEKIWIKI_ENDPOINT:
81  
-        # HACK: If MindTouch is unavailable, skip the rest of this and lean on
82  
-        # locale processing redirects to resolve things. Might be interesting
83  
-        # to resolve some of the redirects first, and come up with the ultimate
84  
-        # real URL. See bug 759356 for followup.
85  
-        path = path.replace('/en', '')
86  
-        return '/%s/docs%s' % (context['request'].locale, path)
  82
+        locale = context['request'].locale
  83
+        url = cache.get('devmo_url:%s_%s' % (locale, path))
  84
+        if not url:
  85
+            url = reverse('wiki.document',
  86
+                          locale=settings.WIKI_DEFAULT_LANGUAGE,
  87
+                          args=[path])
  88
+            if locale != settings.WIKI_DEFAULT_LANGUAGE:
  89
+                    try:
1
Les Orchard Collaborator
lmorchard added a note June 13, 2012

One too many levels of indentation in this try / except block.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Les Orchard
Collaborator

Beyond nits found in eyeballing the code, tests pass, and it seems to work in a manual check.

luke crouch
Owner

nits fixed + code cleanup. verify tests still pass?

Les Orchard
Collaborator

Tests pass, seems like it works for me

Les Orchard lmorchard merged commit 824118b into from June 14, 2012
Les Orchard lmorchard closed this June 14, 2012
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
This page is out of date. Refresh to see the latest.
6  apps/demos/__init__.py
@@ -153,7 +153,7 @@
153 153
         "summary": _("The HTML5 audio element lets you embed sound in webpages without requiring your users to rely on plug-ins."),
154 154
         "description": _("The HTML5 audio element lets you embed sound in webpages without requiring your users to rely on plug-ins."),
155 155
         "learn_more": [],
156  
-        "tab_copy": _("<p>The <a href=\"https://developer.mozilla.org/en/HTML/Element/audio\">HTML5 &lt;audio&gt;</a> element lets you embed sound in Web pages. More importantly, it lets you do so without requiring your users to rely on plug-ins. This means sound for everyone, everywhere, in the most open way possible. In particular, you can play sounds in games with <a href=\"http://robert.ocallahan.org/2011/11/latency-of-html5-sounds.html\">very low latency</a>, making for a responsive, immersive game experience.</p><p>What else can you do with the audio element? Show us by submitting to the Dev Derby today.</p>"),
  156
+        "tab_copy": _("<p>The <a href=\"/en-US/docs//HTML/Element/audio\">HTML5 &lt;audio&gt;</a> element lets you embed sound in Web pages. More importantly, it lets you do so without requiring your users to rely on plug-ins. This means sound for everyone, everywhere, in the most open way possible. In particular, you can play sounds in games with <a href=\"http://robert.ocallahan.org/2011/11/latency-of-html5-sounds.html\">very low latency</a>, making for a responsive, immersive game experience.</p><p>What else can you do with the audio element? Show us by submitting to the Dev Derby today.</p>"),
157 157
     },
158 158
     {
159 159
         "tag_name": "challenge:2012:may",
@@ -165,7 +165,7 @@
165 165
         "summary": _("With the Websocket API and protocol, you can open a two-way channel between the browser and a server, for scalable and real-time data flow. No more server polling!"),
166 166
         "description": _("With the Websocket API and protocol, you can open a two-way channel between the browser and a server, for scalable and real-time data flow. No more server polling!"),
167 167
         "learn_more": [],
168  
-        "tab_copy": _("""<p>With the <a href="https://developer.mozilla.org/en/WebSockets">Websocket API and protocol</a>, you can open a two-way communication channel between the browser and a server. This lets you send messages to the server and receive event-driven responses in real time, all without server polling. Websockets are simple, scalable, and future-proof. <a href="http://www.websocket.org/">Websocket.org</a> even argues that Websockets are the "next evolutionary step in web communication."</p>
  168
+        "tab_copy": _("""<p>With the <a href="/en-US/docs/WebSockets">Websocket API and protocol</a>, you can open a two-way communication channel between the browser and a server. This lets you send messages to the server and receive event-driven responses in real time, all without server polling. Websockets are simple, scalable, and future-proof. <a href="http://www.websocket.org/">Websocket.org</a> even argues that Websockets are the "next evolutionary step in web communication."</p>
169 169
 <p>Not excited yet? This is about more than just sending messages&mdash;it's about highly interactive experiences. Last month, Little Workshop and Mozilla collaborated to create <a href="https://hacks.mozilla.org/2012/03/browserquest/">BrowserQuest</a>, a multiplayer online game that uses Websockets at its core. As if that weren't enough, Mozilla's very own Rob Hawkes created <a href="http://rawkets.com/">Rawkets</a>, a multiplayer space shooter that also uses Websockets.</p>
170 170
 <p>Of course, you can't do much with Websockets unless you have a server to communicate with. Thankfully, there are many free Websockets servers available on the web, such as <a href="http://www.heroku.com/">Heroku</a> and <a href="http://nodejitsu.com/#/">Nodejitsu</a>. If you prefer, you could even use your own Websockets server.</p>
171 171
 <p>Setting up a Websockets demo is more involved than setting up a static demo, but we know you can do it. As long as you keep these <a href="https://hacks.mozilla.org/2012/05/may-dev-derby-show-us-what-you-can-do-with-websockets/#may-derby-setup">three simple rules</a> in mind, everything should work flawlessly.</p>
@@ -182,7 +182,7 @@
182 182
         "description": _("WebGL brings the power of OpenGL, for creating interactive 3D graphics, to the Web, with no plug-ins required."),
183 183
         "learn_more": [],
184 184
         "tab_copy": _("""<p>WebGL brings the power of OpenGL to the Web. Using WebGL, you can create interactive 3D graphics that work directly in modern browsers without plug-ins.
185  
-<p>Using WebGL is easier if you already have experience with graphics programming, but don't let that hold you back. <a href="http://learningwebgl.com/blog/?page_id=1217">Learning WebGL</a> provides a great set of tutorials for newcomers and the MDN offers <a href="https://developer.mozilla.org/en/WebGL">WebGL articles</a> that make a great next step. While you're working, you might also appreciate <a href="http://webglplayground.net/">WebGL Playground</a>, a handy tool that lets you edit your creations and see the results in real time.</p>
  185
+<p>Using WebGL is easier if you already have experience with graphics programming, but don't let that hold you back. <a href="http://learningwebgl.com/blog/?page_id=1217">Learning WebGL</a> provides a great set of tutorials for newcomers and the MDN offers <a href="/en-US/docs/WebGL">WebGL articles</a> that make a great next step. While you're working, you might also appreciate <a href="http://webglplayground.net/">WebGL Playground</a>, a handy tool that lets you edit your creations and see the results in real time.</p>
186 186
 <p>Best of all, you have the power of the open-source community on your side. Be sure to consider the <a href="http://dev.opera.com/articles/view/an-introduction-to-webgl/#webgllib">many JavaScript libraries</a> that make writing WebGL animations even easier.</p>
187 187
 <p>What can you do with WebGL? Show us this month in the June Dev Derby!</p>"""),
188 188
     },
38  apps/devmo/helpers.py
@@ -17,7 +17,8 @@
17 17
 from soapbox.models import Message
18 18
 
19 19
 import utils
20  
-from sumo.urlresolvers import split_path
  20
+from sumo.urlresolvers import split_path, reverse
  21
+from wiki.models import Document
21 22
 
22 23
 
23 24
 # Yanking filters from Django.
@@ -70,20 +71,39 @@ def jsonencode(data):
70 71
     return jinja2.Markup(simplejson.dumps(data))
71 72
 
72 73
 
  74
+# TODO: move this to wiki/helpers.py
73 75
 @register.function
74 76
 @jinja2.contextfunction
75 77
 def devmo_url(context, path):
76 78
     """ Create a URL pointing to devmo.
77  
-        Look for a wiki page in the current locale first,
78  
-        then default to given path
  79
+        Look for a wiki page in the current locale, or default to given path
79 80
     """
80 81
     if not settings.DEKIWIKI_ENDPOINT:
81  
-        # HACK: If MindTouch is unavailable, skip the rest of this and lean on
82  
-        # locale processing redirects to resolve things. Might be interesting
83  
-        # to resolve some of the redirects first, and come up with the ultimate
84  
-        # real URL. See bug 759356 for followup.
85  
-        path = path.replace('/en', '')
86  
-        return '/%s/docs%s' % (context['request'].locale, path)
  82
+        locale = context['request'].locale
  83
+        url = cache.get('devmo_url:%s_%s' % (locale, path))
  84
+        if not url:
  85
+            url = reverse('wiki.document',
  86
+                          locale=settings.WIKI_DEFAULT_LANGUAGE,
  87
+                          args=[path])
  88
+            if locale != settings.WIKI_DEFAULT_LANGUAGE:
  89
+                try:
  90
+                    parent = Document.objects.get(
  91
+                        locale=settings.WIKI_DEFAULT_LANGUAGE, slug=path)
  92
+                    """ # TODO: redirect_document is coupled to doc view
  93
+                    follow redirects vs. update devmo_url calls
  94
+
  95
+                    target = parent.redirect_document()
  96
+                    if target:
  97
+                        parent = target
  98
+                    """
  99
+                    child = Document.objects.get(locale=locale,
  100
+                                                 parent=parent)
  101
+                    url = reverse('wiki.document', locale=locale,
  102
+                                  args=[child.slug])
  103
+                except Document.DoesNotExist:
  104
+                    pass
  105
+            cache.set('devmo_url:%s_%s' % (locale, path), url)
  106
+        return url
87 107
 
88 108
     # HACK: If DEKIWIKI_MOCK is True, just skip hitting the API. This can speed
89 109
     # up a lot of tests without adding decorators, and should never be true in
60  apps/devmo/tests/test_misc.py
... ...
@@ -1,32 +1,15 @@
1 1
 import logging
2  
-import csv
3 2
 import shlex
4 3
 import urllib2
5  
-from os.path import basename, dirname, isfile, isdir
6 4
 
7  
-import mock
8  
-from mock import patch
9  
-from nose.tools import assert_equal, with_setup, assert_false, eq_, ok_
10  
-from nose.plugins.attrib import attr
  5
+from nose.tools import eq_
11 6
 from nose import SkipTest
12  
-from pyquery import PyQuery as pq
13 7
 import test_utils
14 8
 
15 9
 from django.conf import settings
16  
-from django.contrib.auth.models import User, AnonymousUser
17 10
 
18 11
 from devmo.helpers import devmo_url
19 12
 from devmo import urlresolvers
20  
-from devmo.models import Calendar, Event, UserProfile
21  
-
22  
-from dekicompat.backends import DekiUser
23  
-
24  
-from sumo.tests import LocalizingClient
25  
-from sumo.urlresolvers import reverse
26  
-
27  
-from nose.plugins.skip import SkipTest
28  
-
29  
-from . import SkippedTestCase
30 13
 
31 14
 
32 15
 def parse_robots(base_url):
@@ -60,7 +43,7 @@ class TestDevMoRobots(test_utils.TestCase):
60 43
         acceptance tests """
61 44
     def test_production(self):
62 45
         # Skip this test, because it runs against external sites and breaks.
63  
-        raise SkipTest()        
  46
+        raise SkipTest()
64 47
         rules = [
65 48
             ("User-Agent", "*"),
66 49
             ("Crawl-delay", "5"),
@@ -77,7 +60,7 @@ def test_production(self):
77 60
 
78 61
     def test_stage_bug607996(self):
79 62
         # Skip this test, because it runs against external sites and breaks.
80  
-        raise SkipTest()        
  63
+        raise SkipTest()
81 64
         rules = [
82 65
             ("User-agent", "*"),
83 66
             ("Disallow", "/"),
@@ -95,10 +78,12 @@ def test_stage_bug607996(self):
95 78
 
96 79
 
97 80
 class TestDevMoHelpers(test_utils.TestCase):
  81
+    fixtures = ['wiki/documents.json']
  82
+
98 83
     def test_devmo_url(self):
99 84
 
100 85
         # Skipping this test for now, because it hits unreliable prod resources
101  
-        raise SkipTest()        
  86
+        raise SkipTest()
102 87
 
103 88
         en_only_page = '/en/HTML/HTML5'
104 89
         localized_page = '/en/HTML'
@@ -112,30 +97,27 @@ def test_devmo_url(self):
112 97
         req.locale = 'zh-TW'
113 98
         eq_(devmo_url(context, localized_page), '/zh_tw/HTML')
114 99
 
115  
-
116  
-    @attr('current')
117  
-    @mock.patch('devmo.helpers.check_devmo_local_page')
118  
-    def test_devmo_url_mindtouch_disabled(self, mock_check_devmo_local_page):
  100
+    def test_devmo_url_mindtouch_disabled(self):
119 101
         _old = settings.DEKIWIKI_ENDPOINT
120 102
         settings.DEKIWIKI_ENDPOINT = False
121 103
 
122  
-        # HACK: mock has an assert_called_with, but I want something like
123  
-        # never_called or call_count. Instead, I have this:
124  
-        trap = {'was_called': False}
125  
-        def my_check_devmo_local_page(username, password, force=False):
126  
-            trap['was_called'] = True
127  
-            return None
128  
-        mock_check_devmo_local_page.side_effect = my_check_devmo_local_page
129  
-
130  
-        en_only_page = '/en/HTML/HTML5'
131  
-        localized_page = '/en/HTML'
  104
+        localized_page = 'article-title'
132 105
         req = test_utils.RequestFactory().get('/')
133 106
         context = {'request': req}
134 107
 
135  
-        req.locale = 'de'
136  
-        eq_(devmo_url(context, localized_page), '/de/docs/HTML')
  108
+        req.locale = 'fr'
  109
+        eq_(devmo_url(context, localized_page), '/fr/docs/le-title')
  110
+
  111
+        settings.DEKIWIKI_ENDPOINT = _old
  112
+
  113
+    def test_devmo_url_mindtouch_disabled_redirect(self):
  114
+        # Skipping this test for now, redirect model logic is coupled to view
  115
+        raise SkipTest()
  116
+        _old = settings.DEKIWIKI_ENDPOINT
  117
+        settings.DEKIWIKI_ENDPOINT = False
  118
+
  119
+        # TODO: add redirect localized pages to fixture and test
137 120
 
138  
-        ok_(not trap['was_called'])
139 121
         settings.DEKIWIKI_ENDPOINT = _old
140 122
 
141 123
 
@@ -143,7 +125,7 @@ class TestDevMoUrlResolvers(test_utils.TestCase):
143 125
     def test_prefixer_get_language(self):
144 126
 
145 127
         # Skipping this test for now, because it hits unreliable prod resources
146  
-        raise SkipTest()        
  128
+        raise SkipTest()
147 129
 
148 130
         # language precedence is GET param > cookie > Accept-Language
149 131
         req = test_utils.RequestFactory().get('/', {'lang': 'es'})
34  apps/docs/templates/docs/docs.html
@@ -30,27 +30,27 @@
30 30
       </header>
31 31
       <ul id="doc-topics">
32 32
         <li>
33  
-          <h3><a href="{{ devmo_url(_('/en/HTML')) }}">{{ _('HTML') }}</a></h3>
  33
+          <h3><a href="{{ devmo_url('HTML') }}">{{ _('HTML') }}</a></h3>
34 34
           <p>{{ _('HyperText Markup Language, the core language of the web.') }}</p>
35 35
         </li>
36 36
         <li>
37  
-          <h3><a href="{{ devmo_url(_('/en/HTML/HTML5')) }}">{{ _('HTML5') }}</a></h3>
  37
+          <h3><a href="{{ devmo_url('HTML/HTML5') }}">{{ _('HTML5') }}</a></h3>
38 38
           <p>{{ _('The next generation of HTML, HTML5 adds powerful new capabilities for web sites and web applications.') }}</p>
39 39
         </li>
40 40
         <li>
41  
-          <h3><a href="{{ devmo_url(_('/en/JavaScript')) }}">{{ _('JavaScript') }}</a></h3>
  41
+          <h3><a href="{{ devmo_url('JavaScript') }}">{{ _('JavaScript') }}</a></h3>
42 42
           <p>{{ _('The scripting language that powers modern web applications.') }}</p>
43 43
         </li>
44 44
         <li>
45  
-          <h3><a href="{{ devmo_url(_('/en/CSS')) }}">{{ _('CSS') }}</a></h3>
  45
+          <h3><a href="{{ devmo_url('CSS') }}">{{ _('CSS') }}</a></h3>
46 46
           <p>{{ _('Cascading Style Sheets provide advanced layout and formatting of web content.') }}</p>
47 47
         </li>
48 48
         <li>
49  
-          <h3><a href="{{ devmo_url(_('/en/DOM')) }}">{{ _('DOM') }}</a></h3>
  49
+          <h3><a href="{{ devmo_url('DOM') }}">{{ _('DOM') }}</a></h3>
50 50
           <p>{{ _('The Document Object Model describes the structure and content of web pages.') }}</p>
51 51
         </li>
52 52
         <li>
53  
-          <h3><a href="{{ devmo_url(_('/en/AJAX')) }}">{{ _('AJAX') }}</a></h3>
  53
+          <h3><a href="{{ devmo_url('AJAX') }}">{{ _('AJAX') }}</a></h3>
54 54
           <p>{{ _('"Asynchronous JavaScript and XML" is a term that describes the use of all these technologies together to create powerful web applications.') }}</p>
55 55
         </li>
56 56
       </ul>
@@ -94,29 +94,29 @@
94 94
         <div class="section">
95 95
           <h4><a href="{{ url('mobile') }}" class="mobile">{{ _('Mobile') }}</a></h4>
96 96
           <ul>
97  
-            <li><a href="{{ devmo_url(_('/en/Mobile')) }}">{{ _('Firefox Mobile for developers') }}</a></li>
98  
-            <li><a href="{{ devmo_url(_('/en/Detecting_device_orientation')) }}">{{ _('Detecting device orientation') }}</a></li>
99  
-            <li><a href="{{ devmo_url(_('/en/Using_geolocation')) }}">{{ _('Using geolocation') }}</a></li>
  97
+            <li><a href="{{ devmo_url('Mobile') }}">{{ _('Firefox Mobile for developers') }}</a></li>
  98
+            <li><a href="{{ devmo_url('Detecting_device_orientation') }}">{{ _('Detecting device orientation') }}</a></li>
  99
+            <li><a href="{{ devmo_url('Using_geolocation') }}">{{ _('Using geolocation') }}</a></li>
100 100
           </ul>
101 101
         </div>
102 102
         <div class="section">
103 103
           <h4><a href="{{ url('addons') }}" class="addons">{{ _('Add-ons') }}</a></h4>
104 104
           <ul>
105 105
             <li><a href="https://addons.mozilla.org/en-US/developers/">{{ _('AMO Developer Hub') }}</a></li>
106  
-            <li><a href="{{ devmo_url(_('/en/Extensions')) }}">{{ _('Extensions') }}</a></li>
107  
-            <li><a href="{{ devmo_url(_('/en/Plugins')) }}">{{ _('Plugins') }}</a></li>
  106
+            <li><a href="{{ devmo_url('Extensions') }}">{{ _('Extensions') }}</a></li>
  107
+            <li><a href="{{ devmo_url('Plugins') }}">{{ _('Plugins') }}</a></li>
108 108
             <li><a href="https://builder.mozillalabs.com/">{{ _('Add-ons Builder') }}</a></li>
109  
-            <li><a href="{{ devmo_url(_('/en/Themes')) }}">{{ _('Themes') }}</a></li>
110  
-            <li><a href="{{ devmo_url(_('/en/Creating_OpenSearch_plugins_for_Firefox')) }}">{{ _('Search engine plugins') }}</a></li>
  109
+            <li><a href="{{ devmo_url('Themes') }}">{{ _('Themes') }}</a></li>
  110
+            <li><a href="{{ devmo_url('Creating_OpenSearch_plugins_for_Firefox') }}">{{ _('Search engine plugins') }}</a></li>
111 111
           </ul>
112 112
         </div>
113 113
         <div class="section">
114 114
           <h4><a href="{{ url('mozilla') }}" class="mozilla">{{ _('Mozilla') }}</a></h4>
115 115
           <ul>
116  
-            <li><a href="{{ devmo_url(_('/en/Participating_in_the_Mozilla_project')) }}">{{ _('Participating in the Mozilla project') }}</a></li>
117  
-            <li><a href="{{ devmo_url(_('/en/Using_Mozilla_code_in_other_projects')) }}">{{ _('Using Mozilla code in other projects') }}</a></li>
118  
-            <li><a href="{{ devmo_url(_('/en/Localization')) }}">{{ _('Localization') }}</a></li>
119  
-            <li><a href="{{ devmo_url(_('/en/QA')) }}">{{ _('Quality Assurance') }}</a></li>
  116
+            <li><a href="{{ devmo_url('Participating_in_the_Mozilla_project') }}">{{ _('Participating in the Mozilla project') }}</a></li>
  117
+            <li><a href="{{ devmo_url('Using_Mozilla_code_in_other_projects') }}">{{ _('Using Mozilla code in other projects') }}</a></li>
  118
+            <li><a href="{{ devmo_url('Localization') }}">{{ _('Localization') }}</a></li>
  119
+            <li><a href="{{ devmo_url('QA') }}">{{ _('Quality Assurance') }}</a></li>
120 120
           </ul>
121 121
         </div>
122 122
       </div>
40  apps/docs/templates/docs/glossary.html
... ...
@@ -1,26 +1,26 @@
1 1
 <ul id="glossary">
2 2
   <li>
3 3
     <ul class="cols-4">
4  
-      <li><a href="{{ devmo_url(_('/en/HTML')) }}">{{ _('HTML') }}</a></li>
5  
-      <li><a href="{{ devmo_url(_('/en/CSS')) }}">{{ _('CSS') }}</a></li>
6  
-      <li><a href="{{ devmo_url(_('/en/JavaScript')) }}">{{ _('JavaScript') }}</a></li>
7  
-      <li><a href="{{ devmo_url(_('/en/HTML/HTML5')) }}">{{ _('HTML5') }}</a></li>
8  
-      <li><a href="{{ devmo_url(_('/en/DOM')) }}">{{ _('DOM') }}</a></li>
9  
-      <li><a href="{{ devmo_url(_('/en/SVG')) }}">{{ _('SVG') }}</a></li>
10  
-      <li><a href="{{ devmo_url(_('/en/HTML/Element/canvas')) }}">{{ _('Canvas') }}</a></li>
11  
-      <li><a href="{{ devmo_url(_('/en/AJAX')) }}">{{ _('AJAX') }}</a></li>
12  
-      <li><a href="{{ devmo_url(_('/en/CSS/Media_queries')) }}">{{ _('Media Queries') }}</a></li>
13  
-      <li><a href="{{ devmo_url(_('/en/WebGL')) }}">{{ _('WebGL') }}</a></li>
14  
-      <li><a href="{{ devmo_url(_('/en/DOM/Storage')) }}">{{ _('Web Storage') }}</a></li>
15  
-      <li><a href="{{ devmo_url(_('/en/Using_audio_and_video_in_Firefox')) }}">{{ _('Audio') }}</a></li>
16  
-      <li><a href="{{ devmo_url(_('/en/Using_audio_and_video_in_Firefox')) }}">{{ _('Video') }}</a></li>
17  
-      <li><a href="{{ devmo_url(_('/en/Using_web_workers')) }}">{{ _('Web Workers') }}</a></li>
18  
-      <li><a href="{{ devmo_url(_('/en/Using_files_from_web_applications')) }}">{{ _('Files') }}</a></li>
19  
-      <li><a href="{{ devmo_url(_('/en/DragDrop/Drag_and_Drop')) }}">{{ _('Drag and Drop') }}</a></li>
20  
-      <li><a href="{{ devmo_url(_('/en/CSS/Using_CSS_transforms')) }}">{{ _('CSS Transforms') }}</a></li>
21  
-      <li><a href="{{ devmo_url(_('/en/Using_gradients')) }}">{{ _('CSS Gradients') }}</a></li>
22  
-      <li><a href="{{ devmo_url(_('/en/Security')) }}">{{ _('Security') }}</a></li>
23  
-      <li><a href="{{ devmo_url(_('/en/IndexedDB')) }}">{{ _('IndexedDB') }}</a></li>
  4
+      <li><a href="{{ devmo_url('HTML') }}">{{ _('HTML') }}</a></li>
  5
+      <li><a href="{{ devmo_url('CSS') }}">{{ _('CSS') }}</a></li>
  6
+      <li><a href="{{ devmo_url('JavaScript') }}">{{ _('JavaScript') }}</a></li>
  7
+      <li><a href="{{ devmo_url('HTML/HTML5') }}">{{ _('HTML5') }}</a></li>
  8
+      <li><a href="{{ devmo_url('DOM') }}">{{ _('DOM') }}</a></li>
  9
+      <li><a href="{{ devmo_url('SVG') }}">{{ _('SVG') }}</a></li>
  10
+      <li><a href="{{ devmo_url('HTML/Element/canvas') }}">{{ _('Canvas') }}</a></li>
  11
+      <li><a href="{{ devmo_url('AJAX') }}">{{ _('AJAX') }}</a></li>
  12
+      <li><a href="{{ devmo_url('CSS/Media_queries') }}">{{ _('Media Queries') }}</a></li>
  13
+      <li><a href="{{ devmo_url('WebGL') }}">{{ _('WebGL') }}</a></li>
  14
+      <li><a href="{{ devmo_url('DOM/Storage') }}">{{ _('Web Storage') }}</a></li>
  15
+      <li><a href="{{ devmo_url('Using_audio_and_video_in_Firefox') }}">{{ _('Audio') }}</a></li>
  16
+      <li><a href="{{ devmo_url('Using_audio_and_video_in_Firefox') }}">{{ _('Video') }}</a></li>
  17
+      <li><a href="{{ devmo_url('Using_web_workers') }}">{{ _('Web Workers') }}</a></li>
  18
+      <li><a href="{{ devmo_url('Using_files_from_web_applications') }}">{{ _('Files') }}</a></li>
  19
+      <li><a href="{{ devmo_url('DragDrop/Drag_and_Drop') }}">{{ _('Drag and Drop') }}</a></li>
  20
+      <li><a href="{{ devmo_url('CSS/Using_CSS_transforms') }}">{{ _('CSS Transforms') }}</a></li>
  21
+      <li><a href="{{ devmo_url('Using_gradients') }}">{{ _('CSS Gradients') }}</a></li>
  22
+      <li><a href="{{ devmo_url('Security') }}">{{ _('Security') }}</a></li>
  23
+      <li><a href="{{ devmo_url('IndexedDB') }}">{{ _('IndexedDB') }}</a></li>
24 24
     </ul>
25 25
   </li>
26 26
 </ul>
2  apps/landing/templates/landing/addons.html
@@ -59,7 +59,7 @@ <h4 class="entry-title"><a href="https://addons.mozilla.org/en-US/developers/doc
59 59
             <p class="entry-summary">{{ _('The official documentation on APIs and languages. What you need, when you need it, to create your masterpiece.') }}</p>
60 60
           </li>
61 61
           <li class="hentry">
62  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Extensions')) }}" rel="bookmark">{{ _('Extensions') }}</a></h4>
  62
+            <h4 class="entry-title"><a href="{{ devmo_url('Extensions') }}" rel="bookmark">{{ _('Extensions') }}</a></h4>
63 63
             <p class="entry-summary">{{ _('Complete documentation for developing extensions for Mozilla applications.') }}</p>
64 64
           </li>
65 65
           <li class="hentry">
10  apps/landing/templates/landing/apps.html
@@ -23,7 +23,7 @@ <h1 class="page-title">{{ _('Apps')|safe }}</h1>
23 23
       <div class="boxed">
24 24
         <h2>{{ _('Getting Started') }}</h2>
25 25
         {% if waffle.switch('apps-market-launch') %}
26  
-          {% trans apps_url=devmo_url(_('/en/Apps')) %}
  26
+          {% trans apps_url=devmo_url('Apps') %}
27 27
             <p>The Mozilla Web Apps platform lets you <a href="{{ apps_url }}">build apps</a> powered by Web standards like HTML5, CSS3, JavaScript and related APIs.</p>
28 28
           {% endtrans %}
29 29
         {% else %}
@@ -31,7 +31,7 @@ <h1 class="page-title">{{ _('Apps')|safe }}</h1>
31 31
             <p>The Mozilla Marketplace lets you build app experiences powered by Web standards like HTML5, CSS3, JavaScript and related APIs.</p>
32 32
           {% endtrans %}
33 33
         {% endif %}
34  
-        <p class="more"><a href="{{ devmo_url(_('/en/Apps/Getting_Started')) }}" class="go">{{ _('Learn more') }}</a></p>
  34
+        <p class="more"><a href="{{ devmo_url('Apps/Getting_Started') }}" class="go">{{ _('Learn more') }}</a></p>
35 35
       </div>
36 36
       
37 37
       <div class="boxed">
@@ -85,7 +85,7 @@ <h4 class="entry-title"><a href="{{ url('learn_html5') }}" rel="bookmark">{{ _('
85 85
             </p>
86 86
           </li>
87 87
           <li class="hentry">
88  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Apps/For_mobile_developers')) }}" rel="bookmark">{{ _('For mobile apps developers') }}</a></h4>
  88
+            <h4 class="entry-title"><a href="{{ devmo_url('Apps/For_mobile_developers') }}" rel="bookmark">{{ _('For mobile apps developers') }}</a></h4>
89 89
             <p class="entry-summary">
90 90
             {% trans %}
91 91
             If you already develop apps for mobile devices, here's how to develop Open Web apps.
@@ -93,7 +93,7 @@ <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Apps/For_mobile_developers'
93 93
             </p>
94 94
           </li>
95 95
           <li class="hentry">
96  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Apps/For_Web_developers')) }}" rel="bookmark">{{ _('For web developers') }}</a></h4>
  96
+            <h4 class="entry-title"><a href="{{ devmo_url('Apps/For_Web_developers') }}" rel="bookmark">{{ _('For web developers') }}</a></h4>
97 97
             <p class="entry-summary">
98 98
             {% trans %}
99 99
             If you already develop websites, here's how to make them into installable apps.
@@ -101,7 +101,7 @@ <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Apps/For_Web_developers'))
101 101
             </p>
102 102
           </li>
103 103
           <li class="hentry">
104  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Apps/Using_apps_offline')) }}" rel="bookmark">{{ _('Using apps offline') }}</a></h4>
  104
+            <h4 class="entry-title"><a href="{{ devmo_url('Apps/Using_apps_offline') }}" rel="bookmark">{{ _('Using apps offline') }}</a></h4>
105 105
             <p class="entry-summary">
106 106
             {% trans %}
107 107
             How to design apps so they can be cached and used without an Internet connection.
50  apps/landing/templates/landing/home.html
@@ -38,46 +38,46 @@
38 38
       <ul>
39 39
         <li>
40 40
           <ul>
41  
-            <li><a href="{{ devmo_url(_('/en/HTML')) }}">HTML</a></li>
42  
-            <li><a href="{{ devmo_url(_('/en/HTML/HTML5')) }}">HTML5</a></li>
43  
-            <li><a href="{{ devmo_url(_('/en/CSS')) }}">CSS</a></li>
44  
-            <li><a href="{{ devmo_url(_('/en/JavaScript')) }}">JavaScript</a></li>
45  
-            <li><a href="{{ devmo_url(_('/en/DOM')) }}">DOM</a></li>
  41
+            <li><a href="{{ devmo_url('HTML') }}">HTML</a></li>
  42
+            <li><a href="{{ devmo_url('HTML/HTML5') }}">HTML5</a></li>
  43
+            <li><a href="{{ devmo_url('CSS') }}">CSS</a></li>
  44
+            <li><a href="{{ devmo_url('JavaScript') }}">JavaScript</a></li>
  45
+            <li><a href="{{ devmo_url('DOM') }}">DOM</a></li>
46 46
           </ul>
47 47
         </li>
48 48
         <li>
49 49
           <ul> 
50  
-            <li><a href="{{ devmo_url(_('/en/HTML/Canvas')) }}">Canvas</a></li>
51  
-            <li><a href="{{ devmo_url(_('/en/SVG')) }}">SVG</a></li>
52  
-            <li><a href="{{ devmo_url(_('/en/WebGL')) }}">WebGL</a></li>
53  
-            <li><a href="{{ devmo_url(_('/en/Using_audio_and_video_in_Firefox')) }}">Video</a></li>
54  
-            <li><a href="{{ devmo_url(_('/en/Using_audio_and_video_in_Firefox')) }}">Audio</a></li>
  50
+            <li><a href="{{ devmo_url('HTML/Canvas') }}">Canvas</a></li>
  51
+            <li><a href="{{ devmo_url('SVG') }}">SVG</a></li>
  52
+            <li><a href="{{ devmo_url('WebGL') }}">WebGL</a></li>
  53
+            <li><a href="{{ devmo_url('Using_audio_and_video_in_Firefox') }}">Video</a></li>
  54
+            <li><a href="{{ devmo_url('Using_audio_and_video_in_Firefox') }}">Audio</a></li>
55 55
           </ul>
56 56
         </li>
57 57
         <li>
58 58
           <ul>
59  
-            <li><a href="{{ devmo_url(_('/en/Using_gradients')) }}">Gradients</a></li>
60  
-            <li><a href="{{ devmo_url(_('/en/CSS/Using_CSS_transforms')) }}">Transforms</a></li>
61  
-            <li><a href="{{ devmo_url(_('/en/CSS/CSS_transitions')) }}">Transitions</a></li>
62  
-            <li><a href="{{ devmo_url(_('/en/CSS/CSS_animations')) }}">Animations</a></li>
63  
-            <li><a href="{{ devmo_url(_('/en/CSS/Media_queries')) }}">Media Queries</a></li>
  59
+            <li><a href="{{ devmo_url('Using_gradients') }}">Gradients</a></li>
  60
+            <li><a href="{{ devmo_url('CSS/Using_CSS_transforms') }}">Transforms</a></li>
  61
+            <li><a href="{{ devmo_url('CSS/CSS_transitions') }}">Transitions</a></li>
  62
+            <li><a href="{{ devmo_url('CSS/CSS_animations') }}">Animations</a></li>
  63
+            <li><a href="{{ devmo_url('CSS/Media_queries') }}">Media Queries</a></li>
64 64
           </ul>
65 65
         </li>
66 66
         <li>
67 67
           <ul>
68  
-            <li><a href="{{ devmo_url(_('/en/Ajax')) }}">AJAX</a></li>
69  
-            <li><a href="{{ devmo_url(_('/en/WebSockets')) }}">WebSockets</a></li>
70  
-            <li><a href="{{ devmo_url(_('/en/Offline_resources_in_Firefox')) }}">Offline Cache</a></li>
71  
-            <li><a href="{{ devmo_url(_('/en/DOM/Storage')) }}">Local Storage</a></li>
72  
-            <li><a href="{{ devmo_url(_('/en/IndexedDB')) }}">IndexedDB</a></li>
  68
+            <li><a href="{{ devmo_url('Ajax') }}">AJAX</a></li>
  69
+            <li><a href="{{ devmo_url('WebSockets') }}">WebSockets</a></li>
  70
+            <li><a href="{{ devmo_url('HTML/Using_the_application_cache') }}">Offline Cache</a></li>
  71
+            <li><a href="{{ devmo_url('DOM/Storage') }}">Local Storage</a></li>
  72
+            <li><a href="{{ devmo_url('IndexedDB') }}">IndexedDB</a></li>
73 73
           </ul>
74 74
         </li>
75 75
         <li>
76 76
           <ul>
77  
-            <li><a href="{{ devmo_url(_('/en/Using_geolocation')) }}">Geolocation</a></li>
78  
-            <li><a href="{{ devmo_url(_('/en/DragDrop/Drag_and_Drop')) }}">Drag &amp; Drop</a></li>
79  
-            <li><a href="{{ devmo_url(_('/en/Using_files_from_web_applications')) }}">File API</a></li>
80  
-            <li><a href="{{ devmo_url(_('/en/Using_web_workers')) }}">Web Workers</a></li>
  77
+            <li><a href="{{ devmo_url('Using_geolocation') }}">Geolocation</a></li>
  78
+            <li><a href="{{ devmo_url('DragDrop/Drag_and_Drop') }}">Drag &amp; Drop</a></li>
  79
+            <li><a href="{{ devmo_url('Using_files_from_web_applications') }}">File API</a></li>
  80
+            <li><a href="{{ devmo_url('Using_web_workers') }}">Web Workers</a></li>
81 81
             <li><a href="{{ url('docs') }}" class="more">{{_("and more")}}&hellip;</a></li>
82 82
           </ul>
83 83
         </li>
@@ -111,7 +111,7 @@
111 111
       </div>
112 112
       
113 113
       <div class="promo" id="promo-foxdev">
114  
-        <a href="{{ devmo_url(_('/en/Firefox_for_developers')) }}">
  114
+        <a href="{{ devmo_url('Firefox_for_developers') }}">
115 115
           <h2>{{_("Firefox for Devs")}}</h2>
116 116
           <p>{{_("See what's new for Web developers in the latest version of Firefox.")}}</p>
117 117
         </a>
10  apps/landing/templates/landing/learn_css.html
@@ -29,7 +29,7 @@ <h1 class="page-title">{{ _('Learn CSS') }}</h1>
29 29
       <h2>{{ _('Introductory Level') }}</h2>
30 30
       <ul class="link-list">
31 31
         <li>
32  
-          <h3 class="title"><a href="{{ devmo_url('/en/CSS/Getting_Started') }}">{{ _('CSS Getting Started') }}</a></h3>
  32
+          <h3 class="title"><a href="{{ devmo_url('CSS/Getting_Started') }}">{{ _('CSS Getting Started') }}</a></h3>
33 33
           <h4 class="source">MDN</h4>
34 34
           <p>{{ _('This tutorial introduces you to Cascading Style Sheets (CSS). It guides you through the basic features of CSS with practical examples that you can try for yourself on your own computer.') }}</p>
35 35
         </li>
@@ -59,7 +59,7 @@ <h4 class="source">Google Code University</h4>
59 59
           <p>{{ _('Video tutorial on styling pages with CSS.') }}</p>
60 60
         </li>
61 61
         <li>
62  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/Common_CSS_Questions'))}}">{{ _('Common CSS Questions') }}</a></h3>
  62
+          <h3 class="title"><a href="{{ devmo_url('Common_CSS_Questions')}}">{{ _('Common CSS Questions') }}</a></h3>
63 63
           <h4 class="source">MDN</h4>
64 64
           <p>{{ _('Common questions and answers for beginners.') }}</p>
65 65
         </li>
@@ -70,7 +70,7 @@ <h4 class="source">MDN</h4>
70 70
       <h2>{{ _('Intermediate Level') }}</h2>
71 71
       <ul class="link-list">
72 72
         <li>
73  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/CSS_Reference'))}}">{{ _('CSS Reference') }}</a></h3>
  73
+          <h3 class="title"><a href="{{ devmo_url('CSS_Reference')}}">{{ _('CSS Reference') }}</a></h3>
74 74
           <h4 class="source">MDN</h4>
75 75
           <p>{{ _('Complete reference to CSS, with details on support by Firefox and other browsers.') }}</p>
76 76
         </li>
@@ -111,12 +111,12 @@ <h4 class="source">Addy Osmani</h4>
111 111
           <p>{{ _('A quick introduction to some of the core features introduced in CSS3.') }}</p>
112 112
         </li>
113 113
         <li>  
114  
-          <h3 class="title"><a href="{{ devmo_url(_('/En/CSS/Using_CSS_transforms'))}}">{{ _('Using CSS Transforms') }}</a> <span class="tag css3" title="{{ _('This site features CSS3') }}">(CSS3)</span></h3>
  114
+          <h3 class="title"><a href="{{ devmo_url('/En/CSS/Using_CSS_transforms')}}">{{ _('Using CSS Transforms') }}</a> <span class="tag css3" title="{{ _('This site features CSS3') }}">(CSS3)</span></h3>
115 115
           <h4 class="source">MDN</h4>
116 116
           <p>{{ _('Apply rotation, skewing, scaling, and translation using CSS.') }}</p>
117 117
         </li>
118 118
         <li>  
119  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/CSS/CSS_transitions'))}}">{{ _('CSS Transitions') }}</a> <span class="tag css3" title="{{ _('This site features CSS3') }}">(CSS3)</span></h3>
  119
+          <h3 class="title"><a href="{{ devmo_url('CSS/CSS_transitions')}}">{{ _('CSS Transitions') }}</a> <span class="tag css3" title="{{ _('This site features CSS3') }}">(CSS3)</span></h3>
120 120
           <h4 class="source">MDN</h4>
121 121
           <p>{{ _('CSS transitions, part of the draft CSS3 specification, provide a way to animate changes to CSS properties, instead of having the changes take effect instantly.') }}</p>
122 122
         </li>
6  apps/landing/templates/landing/learn_html.html
@@ -58,7 +58,7 @@ <h4 class="source">Wikiversity</h4>
58 58
           <p>{{ _('Use these challenges to hone your HTML skills (for example, "Should I use an &lt;h2&gt; element or a &lt;strong&gt; element?"), focusing on meaningful mark-up.') }}</p>
59 59
         </li>
60 60
         <li>
61  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/HTML/Element')) }}">MDN HTML Element Reference</a></h3>
  61
+          <h3 class="title"><a href="{{ devmo_url('HTML/Element') }}">MDN HTML Element Reference</a></h3>
62 62
           <h4 class="source">{{ _('MDN') }}</h4>
63 63
           <p>{{ _('A comprehensive reference for HTML elements, and how Firefox and other browsers support them.') }}</p>
64 64
         </li>
@@ -69,7 +69,7 @@ <h4 class="source">{{ _('MDN') }}</h4>
69 69
       <h2>{{ _('Advanced Level') }}</h2>
70 70
       <ul class="link-list">
71 71
         <li>
72  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/Tips_for_Authoring_Fast-loading_HTML_Pages')) }}">{{ _('Tips for Authoring Fast-loading HTML Pages') }}</a></h3>
  72
+          <h3 class="title"><a href="{{ devmo_url('Tips_for_Authoring_Fast-loading_HTML_Pages') }}">{{ _('Tips for Authoring Fast-loading HTML Pages') }}</a></h3>
73 73
           <h4 class="source">{{ _('MDN') }}</h4>
74 74
           <p>{{ _('Optimize web pages to provide a more responsive site for visitors and reduce the load on your web server and Internet connection.') }}</p>
75 75
         </li>
@@ -94,7 +94,7 @@ <h4 class="source">{{ _('A List Apart') }}</h4>
94 94
           <p>{{ _('Learn meaningful mark-up that is extensible and backwards- and forwards-compatible.') }}</p>
95 95
         </li>
96 96
         <li>
97  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/Canvas_tutorial')) }}">{{ _('Canvas Tutorial') }}</a> <span class="tag html5" title="{{ _('This site features HTML5') }}">(HTML5)</span></h3>
  97
+          <h3 class="title"><a href="{{ devmo_url('Canvas_tutorial') }}">{{ _('Canvas Tutorial') }}</a> <span class="tag html5" title="{{ _('This site features HTML5') }}">(HTML5)</span></h3>
98 98
           <h4 class="source">{{ _('MDN') }}</h4>
99 99
           <p>{{ _('Learn how to draw graphics using scripting using the &lt;canvas&gt; element.') }}</p>
100 100
         </li>
82  apps/landing/templates/landing/learn_html5.html
@@ -32,7 +32,7 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
32 32
     
33 33
     <div id="topic-content">
34 34
       <section id="topic-html5" class="block">
35  
-        {% trans html5=devmo_url(_('/en/HTML/HTML5')) %}<p><b><a href="{{ html5 }}">HTML5</a> is the set of
  35
+        {% trans html5=devmo_url('HTML/HTML5') %}<p><b><a href="{{ html5 }}">HTML5</a> is the set of
36 36
         technology standards that support the next phase in the development of the Web.</b>
37 37
         From its beginning, Mozilla has championed Web standards to ensure freedom of choice
38 38
         for those who use the Web and independence for those who build it. Leaders from Mozilla
@@ -49,15 +49,15 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
49 49
         <h2>{{ _('CSS3 Styling') }}</h2>
50 50
 
51 51
         {% trans
52  
-            CSS=devmo_url(_('/en/CSS')),
53  
-            CSS_gradients=devmo_url(_('/en/CSS/Using_CSS_gradients')),
54  
-            CSS_transforms=devmo_url(_('/en/CSS/Using_CSS_transforms')),
55  
-            CSS_layouts=devmo_url(_('/en/CSS/Using_CSS_multi-column_layouts')),
56  
-            flexbox=devmo_url(_('/en/Using_flexbox')),
57  
-            calc=devmo_url(_('/en/CSS/calc')),
58  
-            transitions=devmo_url(_('/en/CSS/CSS_transitions')),
59  
-            animations=devmo_url(_('/en/CSS/CSS_animations')),
60  
-            Media_queries=devmo_url(_('/en/CSS/Media_queries'))
  52
+            CSS=devmo_url('CSS'),
  53
+            CSS_gradients=devmo_url('CSS/Using_CSS_gradients'),
  54
+            CSS_transforms=devmo_url('CSS/Using_CSS_transforms'),
  55
+            CSS_layouts=devmo_url('CSS/Using_CSS_multi-column_layouts'),
  56
+            flexbox=devmo_url('Using_flexbox'),
  57
+            calc=devmo_url('CSS/calc'),
  58
+            transitions=devmo_url('CSS/CSS_transitions'),
  59
+            animations=devmo_url('CSS/CSS_animations'),
  60
+            Media_queries=devmo_url('CSS/Media_queries')
61 61
         %}<p><a href="{{ CSS }}">Cascading Style Sheets</a> deliver a wide
62 62
         range of stylization and effects, enhancing web pages without sacrificing their semantic
63 63
         structure or performance. CSS3 is the latest
@@ -79,8 +79,8 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
79 79
       <section id="topic-semantics" class="block">
80 80
         <h2>{{ _('Semantics') }}</h2>
81 81
         {% trans
82  
-            new_elements=devmo_url(_('/en/Sections_and_Outlines_of_an_HTML5_document')),
83  
-            new_forms=devmo_url(_('/en/HTML/Forms_in_HTML'))
  82
+            new_elements=devmo_url('Sections_and_Outlines_of_an_HTML5_document'),
  83
+            new_forms=devmo_url('HTML/Forms_in_HTML')
84 84
         %}<p>HTML5 introduces a number of
85 85
         <a href="{{ new_elements }}">new elements and attributes</a>
86 86
         to support content in more meaningful ways.
@@ -92,8 +92,8 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
92 92
       <section id="topic-connectivity" class="block">
93 93
         <h2>{{ _('Connectivity') }}</h2>
94 94
         {% trans
95  
-            websockets=devmo_url(_('/en/WebSockets')),
96  
-            server_events=devmo_url(_('/en/Server-sent_events'))
  95
+            websockets=devmo_url('WebSockets'),
  96
+            server_events=devmo_url('Server-sent_events')
97 97
         %}<p>More efficient connectivity means more real-time chats, faster games, and better
98 98
         communication. <a href="{{ websockets }}">WebSockets</a> and
99 99
         <a href="{{ server_events }}">Server-Sent Events</a>
@@ -103,10 +103,10 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
103 103
       <section id="topic-performance" class="block">
104 104
         <h2>{{ _('Performance & Integration') }}</h2>
105 105
         {% trans
106  
-            web_workers=devmo_url(_('/en/Using_web_workers')),
107  
-            xhr=devmo_url(_('/en/DOM/XMLHttpRequest')),
108  
-            ajax=devmo_url(_('/en/AJAX')),
109  
-            history=devmo_url(_('/en/DOM/Manipulating_the_browser_history'))
  106
+            web_workers=devmo_url('Using_web_workers'),
  107
+            xhr=devmo_url('DOM/XMLHttpRequest'),
  108
+            ajax=devmo_url('AJAX'),
  109
+            history=devmo_url('DOM/Manipulating_the_browser_history')
110 110
         %}<p>Make apps more seamless and make dynamic content load faster with a variety of techniques
111 111
         and technologies such as <a href="{{ web_workers }}">Web Workers</a>,
112 112
         <a href="{{ xhr }}">XMLHttpRequest Level 2</a> (the technology behind
@@ -117,10 +117,10 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
117 117
       <section id="topic-offline" class="block">
118 118
         <h2>{{ _('Offline & Storage') }}</h2>
119 119
         {% trans
120  
-            app_cache=devmo_url(_('/en/Using_the_Application_Cache')),
121  
-            local_storage=devmo_url(_('/en/DOM/Storage')),
122  
-            indexed_db=devmo_url(_('/en/IndexedDB')),
123  
-            file_api=devmo_url(_('/en/Using_files_from_web_applications'))
  120
+            app_cache=devmo_url('Using_the_Application_Cache'),
  121
+            local_storage=devmo_url('DOM/Storage'),
  122
+            indexed_db=devmo_url('IndexedDB'),
  123
+            file_api=devmo_url('Using_files_from_web_applications')
124 124
         %}<p>Web apps can still function even if there is no internet connection, thanks
125 125
         to the <a href="{{ app_cache }}">HTML5 App Cache</a>,
126 126
         as well as the <a href="{{ local_storage }}">Local Storage</a>,
@@ -132,7 +132,7 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
132 132
       
133 133
       <section id="topic-multimedia" class="block">
134 134
         <h2>{{ _('Multimedia') }}</h2>
135  
-        {% trans html5_av=devmo_url(_('/en/Using_HTML5_audio_and_video')) %}<p>Incorporating audio or video into a web page has long required an additional plug-in
  135
+        {% trans html5_av=devmo_url('Using_HTML5_audio_and_video') %}<p>Incorporating audio or video into a web page has long required an additional plug-in
136 136
         to add more capabilities to the browser that weren&#8217;t native to the browser itself, but
137 137
         that&#8217;s changing with HTML5. The new <a href="{{ html5_av }}">audio and video elements</a>
138 138
         allow web developers to embed sound and moving pictures into web pages without any
@@ -143,10 +143,10 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
143 143
       <section id="topic-graphics" class="block">
144 144
         <h2>{{ _('3D, Graphics, & Effects') }}</h2>
145 145
         {% trans
146  
-            svg=devmo_url(_('/en/SVG')),
147  
-            canvas=devmo_url(_('/en/HTML/Canvas')),
148  
-            webgl=devmo_url(_('/en/WebGL')),
149  
-            css3d=devmo_url(_('/en/CSS/Using_CSS_transforms#3D_specific_CSS_properties'))
  146
+            svg=devmo_url('SVG'),
  147
+            canvas=devmo_url('HTML/Canvas'),
  148
+            webgl=devmo_url('WebGL'),
  149
+            css3d=devmo_url('CSS/Using_CSS_transforms#3D_specific_CSS_properties')
150 150
         %}<p>Images on the Web have always been flat and static, created once and then living forever
151 151
         in a permanent, unchanging, 2-dimensional state. Now <a href="{{ svg }}">SVG</a>
152 152
         and <a href="{{ canvas }}">canvas</a> can generate dynamic,
@@ -159,9 +159,9 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
159 159
       <section id="topic-devices" class="block">
160 160
         <h2>{{ _('Device Access') }}</h2>
161 161
         {% trans
162  
-            geolocation=devmo_url(_('/en/Using_geolocation')),
163  
-            touch=devmo_url(_('/en/DOM/Touch_events')),
164  
-            orientation=devmo_url(_('/en/detecting_device_orientation'))
  162
+            geolocation=devmo_url('Using_geolocation'),
  163
+            touch=devmo_url('DOM/Touch_events'),
  164
+            orientation=devmo_url('detecting_device_orientation')
165 165
         %}<p>The Web is becoming more mobile every day, with an ever-growing number and variety of devices accessing it.
166 166
         With new technologies like the <a href="{{ geolocation }}">Geolocation API</a> and
167 167
         <a href="{{ touch }}">touch events</a>, web applications can
@@ -198,17 +198,17 @@ <h1 class="page-title">{{ _('HTML5 & Friends') }}</h1>
198 198
       <h3 class="mod-title">{{ _('MDN Docs') }}</h3>
199 199
       <p class="mod-intro">{{ _('Community docs of HTML5 features and related technologies') }}</p>
200 200
       <ul class="prose">
201  
-        <li><a href="{{ devmo_url(_('/en/HTML')) }}">{{ _('HTML') }}</a></li>
202  
-        <li><a href="{{ devmo_url(_('/en/HTML/HTML5')) }}">{{ _('HTML5') }}</a></li>
203  
-        <li><a href="{{ devmo_url(_('/en/CSS')) }}">{{ _('CSS') }}</a></li>
204  
-        <li><a href="{{ devmo_url(_('/en/Using_HTML5_audio_and_video')) }}">{{ _('HTML5 Audio and Video') }}</a></li>
205  
-        <li><a href="{{ devmo_url(_('/en/HTML/Canvas')) }}">{{ _('Canvas') }}</a></li>
206  
-        <li><a href="{{ devmo_url(_('/en/WebSockets')) }}">{{ _('WebSockets') }}</a></li>
207  
-        <li><a href="{{ devmo_url(_('/en/Using_the_Application_Cache')) }}">{{ _('HTML5 App Cache') }}</a></li>
208  
-        <li><a href="{{ devmo_url(_('/en/DOM/Storage')) }}">{{ _('Local Storage') }}</a></li>
209  
-        <li><a href="{{ devmo_url(_('/en/IndexedDB')) }}">{{ _('Indexed Database') }}</a></li>
210  
-        <li><a href="{{ devmo_url(_('/en/Using_files_from_web_applications')) }}">{{ _('File API') }}</a></li>
211  
-        <li><a href="{{ devmo_url(_('/en/Using_geolocation')) }}">{{ _('Geolocation API') }}</a></li>
  201
+        <li><a href="{{ devmo_url('HTML') }}">{{ _('HTML') }}</a></li>
  202
+        <li><a href="{{ devmo_url('HTML/HTML5') }}">{{ _('HTML5') }}</a></li>
  203
+        <li><a href="{{ devmo_url('CSS') }}">{{ _('CSS') }}</a></li>
  204
+        <li><a href="{{ devmo_url('Using_HTML5_audio_and_video') }}">{{ _('HTML5 Audio and Video') }}</a></li>
  205
+        <li><a href="{{ devmo_url('HTML/Canvas') }}">{{ _('Canvas') }}</a></li>
  206
+        <li><a href="{{ devmo_url('WebSockets') }}">{{ _('WebSockets') }}</a></li>
  207
+        <li><a href="{{ devmo_url('Using_the_Application_Cache') }}">{{ _('HTML5 App Cache') }}</a></li>
  208
+        <li><a href="{{ devmo_url('DOM/Storage') }}">{{ _('Local Storage') }}</a></li>
  209
+        <li><a href="{{ devmo_url('IndexedDB') }}">{{ _('Indexed Database') }}</a></li>
  210
+        <li><a href="{{ devmo_url('Using_files_from_web_applications') }}">{{ _('File API') }}</a></li>
  211
+        <li><a href="{{ devmo_url('Using_geolocation') }}">{{ _('Geolocation API') }}</a></li>
212 212
       </ul>
213 213
     </div>
214 214
   
8  apps/landing/templates/landing/learn_javascript.html
@@ -32,7 +32,7 @@ <h4 class="source">Codecademy</h4>
32 32
           <p>{{ _('Codecademy is the easiest way to learn how to code JavaScript. It\'s interactive, fun, and you can do it with your friends.') }}</p>
33 33
         </li>
34 34
         <li>
35  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/JavaScript/Getting_Started')) }}">{{ _('Getting Started with JavaScript') }}</a></h3>
  35
+          <h3 class="title"><a href="{{ devmo_url('JavaScript/Getting_Started') }}">{{ _('Getting Started with JavaScript') }}</a></h3>
36 36
           <h4 class="source">MDN</h4>
37 37
           <p>{{ _('What is JavaScript and how can it help you?') }}</p>
38 38
         </li>
@@ -58,7 +58,7 @@ <h4 class="source">Dev.Opera</h4>
58 58
       <h2>{{ _('Intermediate Level') }}</h2>
59 59
       <ul class="link-list">
60 60
         <li>
61  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/A_re-introduction_to_JavaScript')) }}">{{ _('A Re-introduction to JavaScript') }}</a></h3>
  61
+          <h3 class="title"><a href="{{ devmo_url('A_re-introduction_to_JavaScript') }}">{{ _('A Re-introduction to JavaScript') }}</a></h3>
62 62
           <h4 class="source">MDN</h4>
63 63
           <p>{{ _('A recap of the JavaScript programming language aimed at intermediate-level developers.') }}</p>
64 64
         </li>
@@ -77,7 +77,7 @@ <h4 class="source">YUI Blog</h4>
77 77
           <p>{{ _('Douglas Crockford explores the language as it is today, and how it came to be.') }}</p>
78 78
         </li>
79 79
         <li>
80  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/Introduction_to_Object-Oriented_JavaScript')) }}">{{ _('Introduction to Object-oriented JavaScript') }}</a></h3>
  80
+          <h3 class="title"><a href="{{ devmo_url('Introduction_to_Object-Oriented_JavaScript') }}">{{ _('Introduction to Object-oriented JavaScript') }}</a></h3>
81 81
           <h4 class="source">MDN</h4>
82 82
           <p>{{ _('Learn about the JavaScript object model.') }}</p>
83 83
         </li>
@@ -124,7 +124,7 @@ <h4 class="source">YUI Blog</h4>
124 124
           <p>{{ _('Tips on improving the download performance of pages containing JavaScript.') }}</p>
125 125
         </li>
126 126
         <li>
127  
-          <h3 class="title"><a href="{{ devmo_url(_('/en/JavaScript/Guide')) }}">{{ _('JavaScript Guide') }}</a></h3>
  127
+          <h3 class="title"><a href="{{ devmo_url('JavaScript/Guide') }}">{{ _('JavaScript Guide') }}</a></h3>
128 128
           <h4 class="source">MDN</h4>
129 129
           <p>{{ _('A comprehensive, regularly updated guide to JavaScript for all levels of learning from beginner to advanced.') }}</p>
130 130
         </li>
4  apps/landing/templates/landing/mobile.html
@@ -65,7 +65,7 @@ <h4 class="entry-title"><a href="https://wiki.mozilla.org/Mobile/Fennec/Extensio
65 65
           <li class="hentry">
66 66
             <h4 class="entry-title"><a href="https://wiki.mozilla.org/Mobile/DeviceAPIs">{{ _('Location-Aware Applications') }}</a></h4>
67 67
             <p class="entry-summary">
68  
-            {% trans geo_url=devmo_url(_('/en/Using_geolocation')) %}
  68
+            {% trans geo_url=devmo_url('Using_geolocation') %}
69 69
             Learn how to use the <a href="{{ geo_url }}">Geolocation API</a> and put people on the
70 70
             right path. Location-Aware Browsing is a must when you're out and about on your mobile.
71 71
             Learn how to build innovative apps that delight your audience.
@@ -84,7 +84,7 @@ <h4 class="entry-title"><a href="https://wiki.mozilla.org/Mobile#Get_Involved">{
84 84
             </p>
85 85
           </li>
86 86
         </ul>
87  
-        <p class="all"><a href="{{ devmo_url(_('/en/Mobile')) }}" class="go">{{ _('All mobile development documentation') }}</a></p>
  87
+        <p class="all"><a href="{{ devmo_url('Mobile') }}" class="go">{{ _('All mobile development documentation') }}</a></p>
88 88
       </section>
89 89
       
90 90
       <section id="videos">
14  apps/landing/templates/landing/mozilla.html
@@ -38,7 +38,7 @@ <h1 class="intro">{{ _('Welcome to the <b>Mozilla Developer Community</b>')|safe
38 38
         
39 39
         <ul class="hfeed">
40 40
           <li class="hentry">
41  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Developer_Guide')) }}" rel="bookmark">{{ _('Mozilla Developer Guide') }}</a></h4>
  41
+            <h4 class="entry-title"><a href="{{ devmo_url('Developer_Guide') }}" rel="bookmark">{{ _('Mozilla Developer Guide') }}</a></h4>
42 42
             <p class="entry-summary">
43 43
             {% trans %}
44 44
             Whether you're an old hand or just getting started, this is the
@@ -47,7 +47,7 @@ <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Developer_Guide')) }}" rel=
47 47
             </p>
48 48
           </li>
49 49
           <li class="hentry">
50  
-          <h4 class="entry-title"><a href="{{ devmo_url(_('/en/The_Mozilla_platform')) }}" rel="bookmark">{{ _('The Mozilla Platform') }}</a></h4>
  50
+          <h4 class="entry-title"><a href="{{ devmo_url('The_Mozilla_platform') }}" rel="bookmark">{{ _('The Mozilla Platform') }}</a></h4>
51 51
             <p class="entry-summary">
52 52
             {% trans %}
53 53
             Learn more about the technologies at the core of Mozilla products
@@ -56,7 +56,7 @@ <h4 class="entry-title"><a href="{{ devmo_url(_('/en/The_Mozilla_platform')) }}"
56 56
             </p>
57 57
           </li>
58 58
           <li class="hentry">
59  
-          <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Using_Mozilla_code_in_other_projects')) }}" rel="bookmark">{{ _('Using Mozilla code in other projects') }}</a></h4>
  59
+          <h4 class="entry-title"><a href="{{ devmo_url('Using_Mozilla_code_in_other_projects') }}" rel="bookmark">{{ _('Using Mozilla code in other projects') }}</a></h4>
60 60
             <p class="entry-summary">
61 61
             {% trans %}
62 62
             There are several ways you can use Mozilla code in your own
@@ -66,7 +66,7 @@ <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Using_Mozilla_code_in_other
66 66
             </p>
67 67
           </li>
68 68
           <li class="hentry">
69  
-          <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Debugging')) }}" rel="bookmark">{{ _('Debugging') }}</a></h4>
  69
+          <h4 class="entry-title"><a href="{{ devmo_url('Debugging') }}" rel="bookmark">{{ _('Debugging') }}</a></h4>
70 70
             <p class="entry-summary">
71 71
             {% trans %}
72 72
             Mozilla developers have come up with not just technologies
@@ -76,7 +76,7 @@ <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Debugging')) }}" rel="bookm
76 76
             </p>
77 77
           </li>
78 78
           <li class="hentry">
79  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Localization')) }}" rel="bookmark">{{ _('Localization') }}</a></h4>
  79
+            <h4 class="entry-title"><a href="{{ devmo_url('Localization') }}" rel="bookmark">{{ _('Localization') }}</a></h4>
80 80
             <p class="entry-summary">
81 81
             {% trans %}
82 82
             Localization (L10n) is the process of translating software user
@@ -87,7 +87,7 @@ <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Localization')) }}" rel="bo
87 87
             </p>
88 88
           </li>
89 89
         </ul>
90  
-        <p class="all"><a href="{{ devmo_url(_('/en/Tools')) }}" class="go">{{ _('All applications development documentation') }}</a></p>
  90
+        <p class="all"><a href="{{ devmo_url('Tools') }}" class="go">{{ _('All applications development documentation') }}</a></p>
91 91
       </section>
92 92
 
93 93
       <section id="fave-tools">
@@ -104,7 +104,7 @@ <h4 class="entry-title"><a href="{{ devmo_url(_('/en/Localization')) }}" rel="bo
104 104
             <h4><a href="http://mxr.mozilla.org/">{{ _('MXR') }} <img src="{{ MEDIA_URL }}img/icn-tool-mozilla.png" alt="" width="65" /></a></h4>
105 105
             <p class="desc">{{ _('A Mozilla source tree browser.') }}</p>
106 106
           </li>
107  
-          <li class="all"><a href="{{ devmo_url(_('/en/Tools')) }}" class="go">{{ _('All application development tools') }}</a></li>
  107
+          <li class="all"><a href="{{ devmo_url('Tools') }}" class="go">{{ _('All application development tools') }}</a></li>
108 108
         </ul>
109 109
       </section>
110 110
       
10  apps/landing/templates/landing/web.html
@@ -56,23 +56,23 @@ <h4 class="entry-title"><a href="http://hacks.mozilla.org/demos/" rel="bookmark"
56 56
 
57 57
         <ul class="hfeed">
58 58
           <li class="hentry">
59  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/HTML/HTML5')) }}" rel="bookmark">{{ _('HTML5') }}</a></h4>
  59
+            <h4 class="entry-title"><a href="{{ devmo_url('HTML/HTML5') }}" rel="bookmark">{{ _('HTML5') }}</a></h4>
60 60
             <p class="entry-summary">{{ _('Find out what HTML5 is really all about and how you can develop for a better Web through open standards.') }}</p>
61 61
           </li>
62 62
           <li class="hentry">
63  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/JavaScript')) }}" rel="bookmark">{{ _('JavaScript') }}</a></h4>
  63
+            <h4 class="entry-title"><a href="{{ devmo_url('JavaScript') }}" rel="bookmark">{{ _('JavaScript') }}</a></h4>
64 64
             <p class="entry-summary">{{ _('A great resource for anyone working with JS.') }}</p>
65 65
           </li>
66 66
           <li class="hentry">
67  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/CSS')) }}" rel="bookmark">{{ _('CSS') }}</a></h4>
  67
+            <h4 class="entry-title"><a href="{{ devmo_url('CSS') }}" rel="bookmark">{{ _('CSS') }}</a></h4>
68 68
             <p class="entry-summary">{{ _("You'll find everything you need in the CSS reference and helpful tutorials to build pretty websites.") }}</p>
69 69
           </li>
70 70
           <li class="hentry">
71  
-            <h4 class="entry-title"><a href="{{ devmo_url(_('/en/DOM')) }}" rel="bookmark">{{ _('DOM') }}</a></h4>
  71
+            <h4 class="entry-title"><a href="{{ devmo_url('DOM') }}" rel="bookmark">{{ _('DOM') }}</a></h4>
72 72
             <p class="entry-summary">{{ _("The DOM is the architecture for Web documents; learn how to use the DOM and its API to look at and manipulate Web content.") }}</p>
73 73
           </li>
74 74
         </ul>
75  
-        <p class="all"><a href="{{ devmo_url(_('/en/Web_Development')) }}" class="go">{{ _('All web development documentation') }}</a></p>
  75
+        <p class="all"><a href="{{ devmo_url('Web_Development') }}" class="go">{{ _('All web development documentation') }}</a></p>
76 76
       </section>
77 77
 
78 78
       <section id="fave-tools">
52  templates/base.html
@@ -78,42 +78,42 @@ <h1 id="logo"><a href="{{ url('home') }}"><img src="{{ MEDIA_URL }}img/mdn-logo-
78 78
               <ul>
79 79
                 <li>
80 80
                   <ul>
81  
-                    <li><a href="{{ devmo_url(_('/en/HTML')) }}">{{ _('HTML') }}</a></li>
82  
-                    <li><a href="{{ devmo_url(_('/en/DOM')) }}">{{ _('DOM') }}</a></li>
83  
-                    <li><a href="{{ devmo_url(_('/en/Using_audio_and_video_in_Firefox')) }}">{{ _('Video') }}</a></li>
84  
-                    <li><a href="{{ devmo_url(_('/en/Using_audio_and_video_in_Firefox')) }}">{{ _('Audio') }}</a></li>
85  
-                    <li><a href="{{ devmo_url(_('/en/SVG')) }}">{{ _('SVG') }}</a></li>
86  
-                    <li><a href="{{ devmo_url(_('/en/WebGL')) }}">{{ _('WebGL') }}</a></li>
  81
+                    <li><a href="{{ devmo_url('HTML') }}">{{ _('HTML') }}</a></li>
  82
+                    <li><a href="{{ devmo_url('DOM') }}">{{ _('DOM') }}</a></li>
  83
+                    <li><a href="{{ devmo_url('Using_audio_and_video_in_Firefox') }}">{{ _('Video') }}</a></li>
  84
+                    <li><a href="{{ devmo_url('Using_audio_and_video_in_Firefox') }}">{{ _('Audio') }}</a></li>
  85
+                    <li><a href="{{ devmo_url('SVG') }}">{{ _('SVG') }}</a></li>
  86
+                    <li><a href="{{ devmo_url('WebGL') }}">{{ _('WebGL') }}</a></li>
87 87
                   </ul>
88 88
                 </li>
89 89
                 <li>
90 90
                   <ul>
91  
-                    <li><a href="{{ devmo_url(_('/en/HTML/HTML5')) }}">{{ _('HTML5') }}</a></li>
92  
-                    <li><a href="{{ devmo_url(_('/en/WebSockets')) }}">{{ _('WebSockets') }}</a></li>
93  
-                    <li><a href="{{ devmo_url(_('/en/Offline_resources_in_Firefox')) }}">{{ _('Offline Cache') }}</a></li>
94  
-                    <li><a href="{{ devmo_url(_('/en/DOM/Storage')) }}">{{ _('Local Storage') }}</a></li>
95  
-                    <li><a href="{{ devmo_url(_('/en/IndexedDB')) }}">{{ _('IndexedDB') }}</a></li>
96  
-                    <li><a href="{{ devmo_url(_('/en/Using_files_from_web_applications')) }}">{{ _('File API') }}</a></li>
  91
+                    <li><a href="{{ devmo_url('HTML/HTML5') }}">{{ _('HTML5') }}</a></li>
  92
+                    <li><a href="{{ devmo_url('WebSockets') }}">{{ _('WebSockets') }}</a></li>
  93
+                    <li><a href="{{ devmo_url('Offline_resources_in_Firefox') }}">{{ _('Offline Cache') }}</a></li>
  94
+                    <li><a href="{{ devmo_url('DOM/Storage') }}">{{ _('Local Storage') }}</a></li>
  95
+                    <li><a href="{{ devmo_url('IndexedDB') }}">{{ _('IndexedDB') }}</a></li>
  96
+                    <li><a href="{{ devmo_url('Using_files_from_web_applications') }}">{{ _('File API') }}</a></li>
97 97
                   </ul>
98 98
                 </li>
99 99
                 <li>
100 100
                   <ul>
101  
-                    <li><a href="{{ devmo_url(_('/en/CSS')) }}">{{ _('CSS') }}</a></li>
102  
-                    <li><a href="{{ devmo_url(_('/en/Using_gradients')) }}">{{ _('Gradients') }}</a></li>
103  
-                    <li><a href="{{ devmo_url(_('/en/CSS/Using_CSS_transforms')) }}">{{ _('Transforms') }}</a></li>
104  
-                    <li><a href="{{ devmo_url(_('/en/CSS/CSS_transitions')) }}">{{ _('Transitions') }}</a></li>
105  
-                    <li><a href="{{ devmo_url(_('/en/CSS/CSS_animations')) }}">{{ _('Animations') }}</a></li>
106  
-                    <li><a href="{{ devmo_url(_('/en/CSS/Media_queries')) }}">{{ _('Media Queries') }}</a></li>
  101
+                    <li><a href="{{ devmo_url('CSS') }}">{{ _('CSS') }}</a></li>
  102
+                    <li><a href="{{ devmo_url('Using_gradients') }}">{{ _('Gradients') }}</a></li>
  103
+                    <li><a href="{{ devmo_url('CSS/Using_CSS_transforms') }}">{{ _('Transforms') }}</a></li>
  104
+                    <li><a href="{{ devmo_url('CSS/CSS_transitions') }}">{{ _('Transitions') }}</a></li>
  105
+                    <li><a href="{{ devmo_url('CSS/CSS_animations') }}">{{ _('Animations') }}</a></li>
  106
+                    <li><a href="{{ devmo_url('CSS/Media_queries') }}">{{ _('Media Queries') }}</a></li>
107 107
                   </ul>
108 108
                 </li>
109 109
                 <li>
110 110
                   <ul>
111  
-                    <li><a href="{{ devmo_url(_('/en/JavaScript')) }}">{{ _('JavaScript') }}</a></li>
112  
-                    <li><a href="{{ devmo_url(_('/en/AJAX')) }}">{{ _('AJAX') }}</a></li>
113  
-                    <li><a href="{{ devmo_url(_('/en/HTML/Canvas')) }}">{{ _('Canvas') }}</a></li>
114  
-                    <li><a href="{{ devmo_url(_('/en/Using_geolocation')) }}">{{ _('Geolocation') }}</a></li>
115  
-                    <li><a href="{{ devmo_url(_('/en/DragDrop/Drag_and_Drop')) }}">{{ _('Drag &amp; Drop')|safe }}</a></li>
116  
-                    <li><a href="{{ devmo_url(_('/en/Using_web_workers')) }}">{{ _('Web Workers') }}</a></li>
  111
+                    <li><a href="{{ devmo_url('JavaScript') }}">{{ _('JavaScript') }}</a></li>
  112
+                    <li><a href="{{ devmo_url('AJAX') }}">{{ _('AJAX') }}</a></li>
  113
+                    <li><a href="{{ devmo_url('HTML/Canvas') }}">{{ _('Canvas') }}</a></li>
  114
+                    <li><a href="{{ devmo_url('Using_geolocation') }}">{{ _('Geolocation') }}</a></li>
  115
+                    <li><a href="{{ devmo_url('DragDrop/Drag_and_Drop') }}">{{ _('Drag &amp; Drop')|safe }}</a></li>
  116
+                    <li><a href="{{ devmo_url('Using_web_workers') }}">{{ _('Web Workers') }}</a></li>
117 117
                   </ul>
118 118
                 </li>
119 119
               </ul>
@@ -169,10 +169,10 @@ <h1 id="logo"><a href="{{ url('home') }}"><img src="{{ MEDIA_URL }}img/mdn-logo-
169 169
       <img src="{{ MEDIA_URL }}img/mdn-logo-tiny.png" alt="" width="42" height="48">
170 170
       <p id="copyright">&copy; {{ thisyear() }} Mozilla Developer Network</p>
171 171
       <p>
172  
-      {% trans copyright_url=devmo_url(_('/Project:Copyrights')) %}
  172
+      {% trans copyright_url=devmo_url('Project:Copyrights') %}
173 173
       Content is available under <a href="{{ copyright_url }}">these licenses</a>
174 174
       {% endtrans %}
175  
-      &bull; <a href="{{ devmo_url(_('/Project:en/About')) }}">{{ _('About MDN') }}</a> &bull;
  175
+      &bull; <a href="{{ devmo_url('Project:en/About') }}">{{ _('About MDN') }}</a> &bull;