Bug 1182722 - Move DevTools l10n files. r=ochameau,glandium,Pike,bgrins
authorJ. Ryan Stinnett <jryans@gmail.com>
Wed, 04 Nov 2015 15:35:53 -0600
changeset 294973 a907d19137109d7bda15ebf09a67ec3e889fd466
parent 294972 072c116ae15aefa158b2f2ee13102abc634b460d
child 294989 33d3b4739eeb4a32d2a8c0257e978655d6eac475
push idunknown
push userunknown
push dateunknown
reviewersochameau, glandium, Pike, bgrins
bugs1182722
milestone45.0a1
Bug 1182722 - Move DevTools l10n files. r=ochameau,glandium,Pike,bgrins Move DevTools l10n files under /devtools/client and /devtools/shared. A script is attached to the bug for l10n repos to migrate their strings.
b2g/locales/filter.py
browser/locales/Makefile.in
browser/locales/en-US/chrome/browser/devtools/VariablesView.dtd
browser/locales/en-US/chrome/browser/devtools/aboutdebugging.dtd
browser/locales/en-US/chrome/browser/devtools/aboutdebugging.properties
browser/locales/en-US/chrome/browser/devtools/animationinspector.dtd
browser/locales/en-US/chrome/browser/devtools/animationinspector.properties
browser/locales/en-US/chrome/browser/devtools/app-manager.properties
browser/locales/en-US/chrome/browser/devtools/appcacheutils.properties
browser/locales/en-US/chrome/browser/devtools/canvasdebugger.dtd
browser/locales/en-US/chrome/browser/devtools/canvasdebugger.properties
browser/locales/en-US/chrome/browser/devtools/connection-screen.dtd
browser/locales/en-US/chrome/browser/devtools/connection-screen.properties
browser/locales/en-US/chrome/browser/devtools/debugger.dtd
browser/locales/en-US/chrome/browser/devtools/debugger.properties
browser/locales/en-US/chrome/browser/devtools/device.properties
browser/locales/en-US/chrome/browser/devtools/eyedropper.properties
browser/locales/en-US/chrome/browser/devtools/filterwidget.dtd
browser/locales/en-US/chrome/browser/devtools/filterwidget.properties
browser/locales/en-US/chrome/browser/devtools/font-inspector.dtd
browser/locales/en-US/chrome/browser/devtools/graphs.properties
browser/locales/en-US/chrome/browser/devtools/har.properties
browser/locales/en-US/chrome/browser/devtools/inspector.dtd
browser/locales/en-US/chrome/browser/devtools/inspector.properties
browser/locales/en-US/chrome/browser/devtools/jsonview.properties
browser/locales/en-US/chrome/browser/devtools/layoutview.dtd
browser/locales/en-US/chrome/browser/devtools/markers.properties
browser/locales/en-US/chrome/browser/devtools/memory.properties
browser/locales/en-US/chrome/browser/devtools/netmonitor.dtd
browser/locales/en-US/chrome/browser/devtools/netmonitor.properties
browser/locales/en-US/chrome/browser/devtools/performance.dtd
browser/locales/en-US/chrome/browser/devtools/performance.properties
browser/locales/en-US/chrome/browser/devtools/projecteditor.properties
browser/locales/en-US/chrome/browser/devtools/promisedebugger.dtd
browser/locales/en-US/chrome/browser/devtools/promisedebugger.properties
browser/locales/en-US/chrome/browser/devtools/responsiveUI.properties
browser/locales/en-US/chrome/browser/devtools/scratchpad.dtd
browser/locales/en-US/chrome/browser/devtools/scratchpad.properties
browser/locales/en-US/chrome/browser/devtools/shadereditor.dtd
browser/locales/en-US/chrome/browser/devtools/shadereditor.properties
browser/locales/en-US/chrome/browser/devtools/shared.properties
browser/locales/en-US/chrome/browser/devtools/sourceeditor.dtd
browser/locales/en-US/chrome/browser/devtools/sourceeditor.properties
browser/locales/en-US/chrome/browser/devtools/storage.properties
browser/locales/en-US/chrome/browser/devtools/styleeditor.dtd
browser/locales/en-US/chrome/browser/devtools/styleeditor.properties
browser/locales/en-US/chrome/browser/devtools/styleinspector.dtd
browser/locales/en-US/chrome/browser/devtools/tilt.properties
browser/locales/en-US/chrome/browser/devtools/toolbox.dtd
browser/locales/en-US/chrome/browser/devtools/toolbox.properties
browser/locales/en-US/chrome/browser/devtools/webConsole.dtd
browser/locales/en-US/chrome/browser/devtools/webaudioeditor.dtd
browser/locales/en-US/chrome/browser/devtools/webaudioeditor.properties
browser/locales/en-US/chrome/browser/devtools/webconsole.properties
browser/locales/en-US/chrome/browser/devtools/webide.dtd
browser/locales/en-US/chrome/browser/devtools/webide.properties
browser/locales/filter.py
browser/locales/jar.mn
browser/locales/l10n.ini
devtools/client/aboutdebugging/aboutdebugging.xhtml
devtools/client/aboutdebugging/components/addons.js
devtools/client/aboutdebugging/components/target-list.js
devtools/client/aboutdebugging/components/target.js
devtools/client/aboutdebugging/components/workers.js
devtools/client/animationinspector/animation-controller.js
devtools/client/animationinspector/animation-inspector.xhtml
devtools/client/animationinspector/components.js
devtools/client/animationinspector/test/browser_animation_running_on_compositor.js
devtools/client/canvasdebugger/canvasdebugger.js
devtools/client/canvasdebugger/canvasdebugger.xul
devtools/client/debugger/debugger-controller.js
devtools/client/debugger/debugger.xul
devtools/client/definitions.js
devtools/client/eyedropper/eyedropper.js
devtools/client/fontinspector/font-inspector.xhtml
devtools/client/framework/connect/connect.js
devtools/client/framework/connect/connect.xhtml
devtools/client/framework/dev-edition-promo/dev-edition-promo.xul
devtools/client/framework/gDevTools.jsm
devtools/client/framework/sidebar.js
devtools/client/framework/toolbox-options.js
devtools/client/framework/toolbox-options.xul
devtools/client/framework/toolbox-process-window.xul
devtools/client/framework/toolbox-window.xul
devtools/client/framework/toolbox.js
devtools/client/framework/toolbox.xul
devtools/client/inspector/inspector-panel.js
devtools/client/inspector/inspector.xul
devtools/client/jsonview/converter-child.js
devtools/client/layoutview/view.js
devtools/client/layoutview/view.xhtml
devtools/client/locales/en-US/VariablesView.dtd
devtools/client/locales/en-US/aboutdebugging.dtd
devtools/client/locales/en-US/aboutdebugging.properties
devtools/client/locales/en-US/animationinspector.dtd
devtools/client/locales/en-US/animationinspector.properties
devtools/client/locales/en-US/app-manager.properties
devtools/client/locales/en-US/appcacheutils.properties
devtools/client/locales/en-US/canvasdebugger.dtd
devtools/client/locales/en-US/canvasdebugger.properties
devtools/client/locales/en-US/connection-screen.dtd
devtools/client/locales/en-US/connection-screen.properties
devtools/client/locales/en-US/debugger.dtd
devtools/client/locales/en-US/debugger.properties
devtools/client/locales/en-US/device.properties
devtools/client/locales/en-US/eyedropper.properties
devtools/client/locales/en-US/filterwidget.dtd
devtools/client/locales/en-US/filterwidget.properties
devtools/client/locales/en-US/font-inspector.dtd
devtools/client/locales/en-US/graphs.properties
devtools/client/locales/en-US/har.properties
devtools/client/locales/en-US/inspector.dtd
devtools/client/locales/en-US/inspector.properties
devtools/client/locales/en-US/jsonview.properties
devtools/client/locales/en-US/layoutview.dtd
devtools/client/locales/en-US/markers.properties
devtools/client/locales/en-US/memory.properties
devtools/client/locales/en-US/netmonitor.dtd
devtools/client/locales/en-US/netmonitor.properties
devtools/client/locales/en-US/performance.dtd
devtools/client/locales/en-US/performance.properties
devtools/client/locales/en-US/projecteditor.properties
devtools/client/locales/en-US/promisedebugger.dtd
devtools/client/locales/en-US/promisedebugger.properties
devtools/client/locales/en-US/responsiveUI.properties
devtools/client/locales/en-US/scratchpad.dtd
devtools/client/locales/en-US/scratchpad.properties
devtools/client/locales/en-US/shadereditor.dtd
devtools/client/locales/en-US/shadereditor.properties
devtools/client/locales/en-US/shared.properties
devtools/client/locales/en-US/sourceeditor.dtd
devtools/client/locales/en-US/sourceeditor.properties
devtools/client/locales/en-US/storage.properties
devtools/client/locales/en-US/styleeditor.dtd
devtools/client/locales/en-US/styleeditor.properties
devtools/client/locales/en-US/styleinspector.dtd
devtools/client/locales/en-US/tilt.properties
devtools/client/locales/en-US/toolbox.dtd
devtools/client/locales/en-US/toolbox.properties
devtools/client/locales/en-US/webConsole.dtd
devtools/client/locales/en-US/webaudioeditor.dtd
devtools/client/locales/en-US/webaudioeditor.properties
devtools/client/locales/en-US/webconsole.properties
devtools/client/locales/en-US/webide.dtd
devtools/client/locales/en-US/webide.properties
devtools/client/locales/jar.mn
devtools/client/locales/moz.build
devtools/client/markupview/markup-view.js
devtools/client/markupview/test/browser_markupview_links_04.js
devtools/client/memory/utils.js
devtools/client/moz.build
devtools/client/netmonitor/har/har-builder.js
devtools/client/netmonitor/netmonitor-controller.js
devtools/client/netmonitor/netmonitor.xul
devtools/client/netmonitor/test/browser_net_prefs-and-l10n.js
devtools/client/performance/modules/global.js
devtools/client/performance/performance.xul
devtools/client/projecteditor/chrome/content/projecteditor-loader.xul
devtools/client/projecteditor/chrome/content/projecteditor.xul
devtools/client/projecteditor/lib/helpers/l10n.js
devtools/client/projecteditor/lib/plugins/app-manager/plugin.js
devtools/client/promisedebugger/promise-debugger.xhtml
devtools/client/responsivedesign/responsivedesign.jsm
devtools/client/scratchpad/scratchpad.js
devtools/client/scratchpad/scratchpad.xul
devtools/client/shadereditor/shadereditor.js
devtools/client/shadereditor/shadereditor.xul
devtools/client/shared/AppCacheUtils.jsm
devtools/client/shared/DeveloperToolbar.jsm
devtools/client/shared/devices.js
devtools/client/shared/test/browser_filter-editor-02.js
devtools/client/shared/test/browser_filter-editor-06.js
devtools/client/shared/test/browser_filter-editor-07.js
devtools/client/shared/widgets/Chart.jsm
devtools/client/shared/widgets/FilterWidget.js
devtools/client/shared/widgets/LineGraphWidget.js
devtools/client/shared/widgets/MdnDocsWidget.js
devtools/client/shared/widgets/Tooltip.js
devtools/client/shared/widgets/VariablesView.jsm
devtools/client/shared/widgets/VariablesView.xul
devtools/client/shared/widgets/VariablesViewController.jsm
devtools/client/shared/widgets/filter-frame.xhtml
devtools/client/sourceeditor/editor.js
devtools/client/sourceeditor/test/browser_editor_find_again.js
devtools/client/storage/ui.js
devtools/client/styleeditor/StyleEditorUtil.jsm
devtools/client/styleeditor/styleeditor-panel.js
devtools/client/styleeditor/styleeditor.xul
devtools/client/styleinspector/computed-view.js
devtools/client/styleinspector/computedview.xhtml
devtools/client/styleinspector/cssruleview.xhtml
devtools/client/styleinspector/rule-view.js
devtools/client/styleinspector/style-inspector-menu.js
devtools/client/styleinspector/style-inspector.js
devtools/client/styleinspector/test/browser_ruleview_content_02.js
devtools/client/styleinspector/test/browser_ruleview_media-queries.js
devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-urls.js
devtools/client/tilt/tilt-utils.js
devtools/client/webaudioeditor/includes.js
devtools/client/webaudioeditor/webaudioeditor.xul
devtools/client/webconsole/console-output.js
devtools/client/webconsole/hudservice.js
devtools/client/webconsole/test/head.js
devtools/client/webconsole/webconsole.js
devtools/client/webconsole/webconsole.xul
devtools/client/webide/content/addons.js
devtools/client/webide/content/addons.xhtml
devtools/client/webide/content/details.xhtml
devtools/client/webide/content/devicepreferences.xhtml
devtools/client/webide/content/devicesettings.xhtml
devtools/client/webide/content/logs.xhtml
devtools/client/webide/content/monitor.xhtml
devtools/client/webide/content/newapp.xul
devtools/client/webide/content/permissionstable.xhtml
devtools/client/webide/content/prefs.xhtml
devtools/client/webide/content/project-listing.xhtml
devtools/client/webide/content/runtime-listing.xhtml
devtools/client/webide/content/runtimedetails.js
devtools/client/webide/content/runtimedetails.xhtml
devtools/client/webide/content/simulator.js
devtools/client/webide/content/simulator.xhtml
devtools/client/webide/content/webide.js
devtools/client/webide/content/webide.xul
devtools/client/webide/content/wifi-auth.xhtml
devtools/client/webide/modules/app-manager.js
devtools/client/webide/modules/app-validator.js
devtools/client/webide/modules/config-view.js
devtools/client/webide/modules/project-list.js
devtools/client/webide/modules/runtime-list.js
devtools/client/webide/modules/runtimes.js
devtools/client/webide/modules/utils.js
devtools/client/webide/test/test_app_validator.html
devtools/server/actors/csscoverage.js
devtools/server/tests/mochitest/test_css-logic-media-queries.html
devtools/shared/gcli/commands/highlight.js
devtools/shared/gcli/source/lib/gcli/l10n.js
devtools/shared/gcli/source/lib/gcli/util/l10n.js
devtools/shared/locales/en-US/csscoverage.dtd
devtools/shared/locales/en-US/csscoverage.properties
devtools/shared/locales/en-US/debugger.properties
devtools/shared/locales/en-US/gcli.properties
devtools/shared/locales/en-US/gclicommands.properties
devtools/shared/locales/en-US/styleinspector.properties
devtools/shared/locales/jar.mn
devtools/shared/locales/moz.build
devtools/shared/moz.build
devtools/shared/security/prompt.js
devtools/shared/styleinspector/css-logic.js
devtools/shared/tests/unit/test_fetch-chrome.js
mobile/android/locales/filter.py
mobile/locales/filter.py
toolkit/locales/Makefile.in
toolkit/locales/en-US/chrome/global/devtools/csscoverage.dtd
toolkit/locales/en-US/chrome/global/devtools/csscoverage.properties
toolkit/locales/en-US/chrome/global/devtools/debugger.properties
toolkit/locales/en-US/chrome/global/devtools/gcli.properties
toolkit/locales/en-US/chrome/global/devtools/gclicommands.properties
toolkit/locales/en-US/chrome/global/devtools/styleinspector.properties
toolkit/locales/jar.mn
toolkit/locales/l10n.ini
--- a/b2g/locales/filter.py
+++ b/b2g/locales/filter.py
@@ -2,13 +2,14 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 
 def test(mod, path, entity = None):
   import re
   # ignore anything but b2g and specific overloads from dom and toolkit
   if mod not in ("netwerk", "dom", "toolkit", "security/manager",
+                 "devtools/shared",
                  "mobile",
                  "b2g"):
     return "ignore"
 
   return "error"
--- a/browser/locales/Makefile.in
+++ b/browser/locales/Makefile.in
@@ -122,23 +122,24 @@ libs:: $(FINAL_TARGET)/defaults/profile/
 libs:: $(addprefix generic/profile/,$(PROFILE_FILES))
 	$(SYSINSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)/defaults/profile
 
 libs:: $(call MERGE_FILES,$(addprefix profile/chrome/,$(PROFILE_CHROME)))
 	$(SYSINSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)/defaults/profile/chrome
 
 libs-%:
 	$(NSINSTALL) -D $(DIST)/install
-	@$(MAKE) -C ../../toolkit/locales libs-$*
+	@$(MAKE) -C ../../toolkit/locales libs-$* XPI_ROOT_APPID=$(XPI_ROOT_APPID)
 	@$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$*
 ifdef MOZ_WEBAPP_RUNTIME
 	@$(MAKE) -C ../../webapprt/locales AB_CD=$* XPI_NAME=locale-$*
 endif
 	@$(MAKE) -C ../../extensions/spellcheck/locales AB_CD=$* XPI_NAME=locale-$*
 	@$(MAKE) -C ../../intl/locales AB_CD=$* XPI_NAME=locale-$*
+	@$(MAKE) -C ../../devtools/client/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID=$(XPI_ROOT_APPID)
 	@$(MAKE) -B searchplugins AB_CD=$* XPI_NAME=locale-$*
 	@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR)
 	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$*
 
 repackage-win32-installer: WIN32_INSTALLER_OUT=$(_ABS_DIST)/$(PKG_INST_PATH)$(PKG_INST_BASENAME).exe
 repackage-win32-installer: $(call ESCAPE_WILDCARD,$(WIN32_INSTALLER_IN)) $(SUBMAKEFILES) libs-$(AB_CD)
 	@echo 'Repackaging $(WIN32_INSTALLER_IN) into $(WIN32_INSTALLER_OUT).'
 	$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY) export
--- a/browser/locales/filter.py
+++ b/browser/locales/filter.py
@@ -1,16 +1,17 @@
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 def test(mod, path, entity = None):
   import re
   # ignore anything but Firefox
   if mod not in ("netwerk", "dom", "toolkit", "security/manager",
+                 "devtools/client", "devtools/shared",
                  "browser", "webapprt",
                  "extensions/reporter", "extensions/spellcheck",
                  "other-licenses/branding/firefox",
                  "browser/branding/official",
                  "services/sync"):
     return "ignore"
   if mod not in ("browser", "extensions/spellcheck"):
     # we only have exceptions for browser and extensions/spellcheck
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -23,70 +23,16 @@
     locale/browser/syncCustomize.dtd               (%chrome/browser/syncCustomize.dtd)
     locale/browser/aboutSyncTabs.dtd               (%chrome/browser/aboutSyncTabs.dtd)
 #endif
     locale/browser/browser.dtd                     (%chrome/browser/browser.dtd)
     locale/browser/baseMenuOverlay.dtd             (%chrome/browser/baseMenuOverlay.dtd)
     locale/browser/browser.properties              (%chrome/browser/browser.properties)
     locale/browser/browser-pocket.properties       (%chrome/browser/browser-pocket.properties)
     locale/browser/customizableui/customizableWidgets.properties (%chrome/browser/customizableui/customizableWidgets.properties)
-    locale/browser/devtools/aboutdebugging.dtd        (%chrome/browser/devtools/aboutdebugging.dtd)
-    locale/browser/devtools/aboutdebugging.properties (%chrome/browser/devtools/aboutdebugging.properties)
-    locale/browser/devtools/animationinspector.dtd    (%chrome/browser/devtools/animationinspector.dtd)
-    locale/browser/devtools/animationinspector.properties (%chrome/browser/devtools/animationinspector.properties)
-    locale/browser/devtools/appcacheutils.properties  (%chrome/browser/devtools/appcacheutils.properties)
-    locale/browser/devtools/debugger.dtd              (%chrome/browser/devtools/debugger.dtd)
-    locale/browser/devtools/debugger.properties       (%chrome/browser/devtools/debugger.properties)
-    locale/browser/devtools/device.properties         (%chrome/browser/devtools/device.properties)
-    locale/browser/devtools/filterwidget.properties   (%chrome/browser/devtools/filterwidget.properties)
-    locale/browser/devtools/filterwidget.dtd          (%chrome/browser/devtools/filterwidget.dtd)
-    locale/browser/devtools/netmonitor.dtd            (%chrome/browser/devtools/netmonitor.dtd)
-    locale/browser/devtools/netmonitor.properties     (%chrome/browser/devtools/netmonitor.properties)
-    locale/browser/devtools/shadereditor.dtd          (%chrome/browser/devtools/shadereditor.dtd)
-    locale/browser/devtools/shadereditor.properties   (%chrome/browser/devtools/shadereditor.properties)
-    locale/browser/devtools/canvasdebugger.dtd        (%chrome/browser/devtools/canvasdebugger.dtd)
-    locale/browser/devtools/canvasdebugger.properties (%chrome/browser/devtools/canvasdebugger.properties)
-    locale/browser/devtools/webaudioeditor.dtd          (%chrome/browser/devtools/webaudioeditor.dtd)
-    locale/browser/devtools/webaudioeditor.properties   (%chrome/browser/devtools/webaudioeditor.properties)
-    locale/browser/devtools/webconsole.properties     (%chrome/browser/devtools/webconsole.properties)
-    locale/browser/devtools/inspector.properties      (%chrome/browser/devtools/inspector.properties)
-    locale/browser/devtools/jsonview.properties       (%chrome/browser/devtools/jsonview.properties)
-    locale/browser/devtools/tilt.properties           (%chrome/browser/devtools/tilt.properties)
-    locale/browser/devtools/shared.properties         (%chrome/browser/devtools/shared.properties)
-    locale/browser/devtools/scratchpad.properties     (%chrome/browser/devtools/scratchpad.properties)
-    locale/browser/devtools/scratchpad.dtd            (%chrome/browser/devtools/scratchpad.dtd)
-    locale/browser/devtools/storage.properties        (%chrome/browser/devtools/storage.properties)
-    locale/browser/devtools/styleeditor.properties    (%chrome/browser/devtools/styleeditor.properties)
-    locale/browser/devtools/styleeditor.dtd           (%chrome/browser/devtools/styleeditor.dtd)
-    locale/browser/devtools/styleinspector.dtd        (%chrome/browser/devtools/styleinspector.dtd)
-    locale/browser/devtools/webConsole.dtd            (%chrome/browser/devtools/webConsole.dtd)
-    locale/browser/devtools/VariablesView.dtd         (%chrome/browser/devtools/VariablesView.dtd)
-    locale/browser/devtools/sourceeditor.properties   (%chrome/browser/devtools/sourceeditor.properties)
-    locale/browser/devtools/sourceeditor.dtd          (%chrome/browser/devtools/sourceeditor.dtd)
-    locale/browser/devtools/promisedebugger.dtd       (%chrome/browser/devtools/promisedebugger.dtd)
-    locale/browser/devtools/promisedebugger.properties  (%chrome/browser/devtools/promisedebugger.properties)
-    locale/browser/devtools/performance.dtd           (%chrome/browser/devtools/performance.dtd)
-    locale/browser/devtools/performance.properties    (%chrome/browser/devtools/performance.properties)
-    locale/browser/devtools/memory.properties         (%chrome/browser/devtools/memory.properties)
-    locale/browser/devtools/graphs.properties         (%chrome/browser/devtools/graphs.properties)
-    locale/browser/devtools/layoutview.dtd            (%chrome/browser/devtools/layoutview.dtd)
-    locale/browser/devtools/responsiveUI.properties   (%chrome/browser/devtools/responsiveUI.properties)
-    locale/browser/devtools/toolbox.dtd            (%chrome/browser/devtools/toolbox.dtd)
-    locale/browser/devtools/toolbox.properties     (%chrome/browser/devtools/toolbox.properties)
-    locale/browser/devtools/inspector.dtd          (%chrome/browser/devtools/inspector.dtd)
-    locale/browser/devtools/markers.properties     (%chrome/browser/devtools/markers.properties)
-    locale/browser/devtools/projecteditor.properties     (%chrome/browser/devtools/projecteditor.properties)
-    locale/browser/devtools/eyedropper.properties     (%chrome/browser/devtools/eyedropper.properties)
-    locale/browser/devtools/connection-screen.dtd  (%chrome/browser/devtools/connection-screen.dtd)
-    locale/browser/devtools/connection-screen.properties (%chrome/browser/devtools/connection-screen.properties)
-    locale/browser/devtools/font-inspector.dtd     (%chrome/browser/devtools/font-inspector.dtd)
-    locale/browser/devtools/har.properties         (%chrome/browser/devtools/har.properties)
-    locale/browser/devtools/app-manager.properties (%chrome/browser/devtools/app-manager.properties)
-    locale/browser/devtools/webide.dtd             (%chrome/browser/devtools/webide.dtd)
-    locale/browser/devtools/webide.properties      (%chrome/browser/devtools/webide.properties)
     locale/browser/lightweightThemes.properties    (%chrome/browser/lightweightThemes.properties)
     locale/browser/loop/loop.properties            (%chrome/browser/loop/loop.properties)
     locale/browser/newTab.dtd                      (%chrome/browser/newTab.dtd)
     locale/browser/newTab.properties               (%chrome/browser/newTab.properties)
     locale/browser/pageInfo.dtd                    (%chrome/browser/pageInfo.dtd)
     locale/browser/pageInfo.properties             (%chrome/browser/pageInfo.properties)
     locale/browser/quitDialog.properties           (%chrome/browser/quitDialog.properties)
     locale/browser/safeMode.dtd                    (%chrome/browser/safeMode.dtd)
--- a/browser/locales/l10n.ini
+++ b/browser/locales/l10n.ini
@@ -6,16 +6,17 @@
 depth = ../..
 all = browser/locales/all-locales
 
 [compare]
 dirs = browser
      extensions/reporter
      other-licenses/branding/firefox
      browser/branding/official
+     devtools/client
 
 [includes]
 # non-central apps might want to use %(topsrcdir)s here, or other vars
 # RFE: that needs to be supported by compare-locales, too, though
 toolkit = toolkit/locales/l10n.ini
 services_sync = services/sync/locales/l10n.ini
 webapprt = webapprt/locales/l10n.ini
 
--- a/devtools/client/aboutdebugging/aboutdebugging.xhtml
+++ b/devtools/client/aboutdebugging/aboutdebugging.xhtml
@@ -1,17 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
 <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> %htmlDTD;
-<!ENTITY % toolboxDTD SYSTEM "chrome://browser/locale/devtools/toolbox.dtd"> %toolboxDTD;
-<!ENTITY % aboutdebuggingDTD SYSTEM "chrome://browser/locale/devtools/aboutdebugging.dtd"> %aboutdebuggingDTD;
+<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd"> %toolboxDTD;
+<!ENTITY % aboutdebuggingDTD SYSTEM "chrome://devtools/locale/aboutdebugging.dtd"> %aboutdebuggingDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <title>&aboutDebugging.title;</title>
     <link rel="stylesheet" href="chrome://global/skin/global.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://global/skin/in-content/common.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://devtools/content/aboutdebugging/aboutdebugging.css"  type="text/css"/>
--- a/devtools/client/aboutdebugging/components/addons.js
+++ b/devtools/client/aboutdebugging/components/addons.js
@@ -12,17 +12,17 @@ loader.lazyRequireGetter(this, "TargetLi
   "devtools/client/aboutdebugging/components/target-list", true);
 loader.lazyRequireGetter(this, "Services");
 
 loader.lazyImporter(this, "AddonManager",
   "resource://gre/modules/AddonManager.jsm");
 
 const ExtensionIcon = "chrome://mozapps/skin/extensions/extensionGeneric.svg";
 const Strings = Services.strings.createBundle(
-  "chrome://browser/locale/devtools/aboutdebugging.properties");
+  "chrome://devtools/locale/aboutdebugging.properties");
 
 exports.AddonsComponent = React.createClass({
   displayName: "AddonsComponent",
 
   getInitialState() {
     return {
       extensions: []
     };
--- a/devtools/client/aboutdebugging/components/target-list.js
+++ b/devtools/client/aboutdebugging/components/target-list.js
@@ -8,17 +8,17 @@
 
 loader.lazyRequireGetter(this, "React",
   "devtools/client/shared/vendor/react");
 loader.lazyRequireGetter(this, "TargetComponent",
   "devtools/client/aboutdebugging/components/target", true);
 loader.lazyRequireGetter(this, "Services");
 
 const Strings = Services.strings.createBundle(
-  "chrome://browser/locale/devtools/aboutdebugging.properties");
+  "chrome://devtools/locale/aboutdebugging.properties");
 const LocaleCompare = (a, b) => {
   return a.name.toLowerCase().localeCompare(b.name.toLowerCase());
 };
 
 exports.TargetListComponent = React.createClass({
   displayName: "TargetListComponent",
 
   render() {
--- a/devtools/client/aboutdebugging/components/target.js
+++ b/devtools/client/aboutdebugging/components/target.js
@@ -16,17 +16,17 @@ loader.lazyRequireGetter(this, "Toolbox"
 loader.lazyRequireGetter(this, "Services");
 
 loader.lazyImporter(this, "BrowserToolboxProcess",
   "resource://devtools/client/framework/ToolboxProcess.jsm");
 loader.lazyImporter(this, "gDevTools",
   "resource://devtools/client/framework/gDevTools.jsm");
 
 const Strings = Services.strings.createBundle(
-  "chrome://browser/locale/devtools/aboutdebugging.properties");
+  "chrome://devtools/locale/aboutdebugging.properties");
 
 exports.TargetComponent = React.createClass({
   displayName: "TargetComponent",
 
   debug() {
     let client = this.props.client;
     let target = this.props.target;
     switch (target.type) {
--- a/devtools/client/aboutdebugging/components/workers.js
+++ b/devtools/client/aboutdebugging/components/workers.js
@@ -10,17 +10,17 @@ loader.lazyRequireGetter(this, "Ci",
   "chrome", true);
 loader.lazyRequireGetter(this, "React",
   "devtools/client/shared/vendor/react");
 loader.lazyRequireGetter(this, "TargetListComponent",
   "devtools/client/aboutdebugging/components/target-list", true);
 loader.lazyRequireGetter(this, "Services");
 
 const Strings = Services.strings.createBundle(
-  "chrome://browser/locale/devtools/aboutdebugging.properties");
+  "chrome://devtools/locale/aboutdebugging.properties");
 
 exports.WorkersComponent = React.createClass({
   displayName: "WorkersComponent",
 
   getInitialState() {
     return {
       workers: {
         service: [],
--- a/devtools/client/animationinspector/animation-controller.js
+++ b/devtools/client/animationinspector/animation-controller.js
@@ -15,17 +15,17 @@ Cu.import("resource://gre/modules/Consol
 Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm");
 
 loader.lazyRequireGetter(this, "promise");
 loader.lazyRequireGetter(this, "EventEmitter",
                                "devtools/shared/event-emitter");
 loader.lazyRequireGetter(this, "AnimationsFront",
                                "devtools/server/actors/animation", true);
 
-const STRINGS_URI = "chrome://browser/locale/devtools/animationinspector.properties";
+const STRINGS_URI = "chrome://devtools/locale/animationinspector.properties";
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 
 // Global toolbox/inspector, set when startup is called.
 var gToolbox, gInspector;
 
 /**
  * Startup the animationinspector controller and view, called by the sidebar
  * widget when loading/unloading the iframe into the tab.
--- a/devtools/client/animationinspector/animation-inspector.xhtml
+++ b/devtools/client/animationinspector/animation-inspector.xhtml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE html [
-<!ENTITY % animationinspectorDTD SYSTEM "chrome://browser/locale/devtools/animationinspector.dtd" >
+<!ENTITY % animationinspectorDTD SYSTEM "chrome://devtools/locale/animationinspector.dtd" >
  %animationinspectorDTD;
 ]>
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <title>&title;</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <link rel="stylesheet" href="chrome://devtools/skin/common.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://devtools/skin/animationinspector.css" type="text/css"/>
--- a/devtools/client/animationinspector/components.js
+++ b/devtools/client/animationinspector/components.js
@@ -24,17 +24,17 @@ Cu.import("resource://devtools/client/sh
 const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
 const {
   createNode,
   drawGraphElementBackground,
   findOptimalTimeInterval,
   TargetNodeHighlighter
 } = require("devtools/client/animationinspector/utils");
 
-const STRINGS_URI = "chrome://browser/locale/devtools/animationinspector.properties";
+const STRINGS_URI = "chrome://devtools/locale/animationinspector.properties";
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 const MILLIS_TIME_FORMAT_MAX_DURATION = 4000;
 // The minimum spacing between 2 time graduation headers in the timeline (px).
 const TIME_GRADUATION_MIN_SPACING = 40;
 // List of playback rate presets displayed in the timeline toolbar.
 const PLAYBACK_RATES = [.1, .25, .5, 1, 2, 5, 10];
 // The size of the fast-track icon (for compositor-running animations), this is
 // used to position the icon correctly.
--- a/devtools/client/animationinspector/test/browser_animation_running_on_compositor.js
+++ b/devtools/client/animationinspector/test/browser_animation_running_on_compositor.js
@@ -2,17 +2,17 @@
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Test that when animations displayed in the timeline are running on the
 // compositor, they get a special icon and information in the tooltip.
 
-const STRINGS_URI = "chrome://browser/locale/devtools/animationinspector.properties";
+const STRINGS_URI = "chrome://devtools/locale/animationinspector.properties";
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 
 add_task(function*() {
   yield addTab(TEST_URL_ROOT + "doc_simple_animation.html");
   let {inspector, panel} = yield openAnimationInspector();
   let timeline = panel.animationsTimelineComponent;
 
   info("Select a test node we know has an animation running on the compositor");
--- a/devtools/client/canvasdebugger/canvasdebugger.js
+++ b/devtools/client/canvasdebugger/canvasdebugger.js
@@ -75,18 +75,18 @@ const EVENTS = {
 
   // When a source is shown in the JavaScript Debugger at a specific location.
   SOURCE_SHOWN_IN_JS_DEBUGGER: "CanvasDebugger:SourceShownInJsDebugger",
   SOURCE_NOT_FOUND_IN_JS_DEBUGGER: "CanvasDebugger:SourceNotFoundInJsDebugger"
 };
 XPCOMUtils.defineConstant(this, "EVENTS", EVENTS);
 
 const HTML_NS = "http://www.w3.org/1999/xhtml";
-const STRINGS_URI = "chrome://browser/locale/devtools/canvasdebugger.properties";
-const SHARED_STRINGS_URI = "chrome://browser/locale/devtools/shared.properties";
+const STRINGS_URI = "chrome://devtools/locale/canvasdebugger.properties";
+const SHARED_STRINGS_URI = "chrome://devtools/locale/shared.properties";
 
 const SNAPSHOT_START_RECORDING_DELAY = 10; // ms
 const SNAPSHOT_DATA_EXPORT_MAX_BLOCK = 1000; // ms
 const SNAPSHOT_DATA_DISPLAY_DELAY = 10; // ms
 const SCREENSHOT_DISPLAY_DELAY = 100; // ms
 const STACK_FUNC_INDENTATION = 14; // px
 
 // This identifier string is simply used to tentatively ascertain whether or not
--- a/devtools/client/canvasdebugger/canvasdebugger.xul
+++ b/devtools/client/canvasdebugger/canvasdebugger.xul
@@ -3,17 +3,17 @@
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/canvasdebugger.css" type="text/css"?>
 <!DOCTYPE window [
-  <!ENTITY % canvasDebuggerDTD SYSTEM "chrome://browser/locale/devtools/canvasdebugger.dtd">
+  <!ENTITY % canvasDebuggerDTD SYSTEM "chrome://devtools/locale/canvasdebugger.dtd">
   %canvasDebuggerDTD;
 ]>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
   <script src="chrome://devtools/content/shared/theme-switching.js"/>
   <script type="application/javascript" src="canvasdebugger.js"/>
   <script type="application/javascript" src="callslist.js"/>
   <script type="application/javascript" src="snapshotslist.js"/>
--- a/devtools/client/debugger/debugger-controller.js
+++ b/devtools/client/debugger/debugger-controller.js
@@ -2,17 +2,17 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 var { classes: Cc, interfaces: Ci, utils: Cu } = Components;
 
-const DBG_STRINGS_URI = "chrome://browser/locale/devtools/debugger.properties";
+const DBG_STRINGS_URI = "chrome://devtools/locale/debugger.properties";
 const NEW_SOURCE_IGNORED_URLS = ["debugger eval code", "XStringBundle"];
 const NEW_SOURCE_DISPLAY_DELAY = 200; // ms
 const FETCH_SOURCE_RESPONSE_DELAY = 200; // ms
 const FRAME_STEP_CLEAR_DELAY = 100; // ms
 const CALL_STACK_PAGE_SIZE = 25; // frames
 
 // The panel's window global is an EventEmitter firing the following events:
 const EVENTS = {
--- a/devtools/client/debugger/debugger.xul
+++ b/devtools/client/debugger/debugger.xul
@@ -4,17 +4,17 @@
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
 <?xml-stylesheet href="debugger.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/debugger.css" type="text/css"?>
 <!DOCTYPE window [
-  <!ENTITY % debuggerDTD SYSTEM "chrome://browser/locale/devtools/debugger.dtd">
+  <!ENTITY % debuggerDTD SYSTEM "chrome://devtools/locale/debugger.dtd">
   %debuggerDTD;
 ]>
 <?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         xmlns:html="http://www.w3.org/1999/xhtml"
         macanimationtype="document"
         fullscreenbutton="true"
--- a/devtools/client/definitions.js
+++ b/devtools/client/definitions.js
@@ -21,29 +21,29 @@ loader.lazyGetter(this, "CanvasDebuggerP
 loader.lazyGetter(this, "WebAudioEditorPanel", () => require("devtools/client/webaudioeditor/panel").WebAudioEditorPanel);
 loader.lazyGetter(this, "MemoryPanel", () => require("devtools/client/memory/panel").MemoryPanel);
 loader.lazyGetter(this, "PerformancePanel", () => require("devtools/client/performance/panel").PerformancePanel);
 loader.lazyGetter(this, "NetMonitorPanel", () => require("devtools/client/netmonitor/panel").NetMonitorPanel);
 loader.lazyGetter(this, "StoragePanel", () => require("devtools/client/storage/panel").StoragePanel);
 loader.lazyGetter(this, "ScratchpadPanel", () => require("devtools/client/scratchpad/scratchpad-panel").ScratchpadPanel);
 
 // Strings
-const toolboxProps = "chrome://browser/locale/devtools/toolbox.properties";
-const inspectorProps = "chrome://browser/locale/devtools/inspector.properties";
-const webConsoleProps = "chrome://browser/locale/devtools/webconsole.properties";
-const debuggerProps = "chrome://browser/locale/devtools/debugger.properties";
-const styleEditorProps = "chrome://browser/locale/devtools/styleeditor.properties";
-const shaderEditorProps = "chrome://browser/locale/devtools/shadereditor.properties";
-const canvasDebuggerProps = "chrome://browser/locale/devtools/canvasdebugger.properties";
-const webAudioEditorProps = "chrome://browser/locale/devtools/webaudioeditor.properties";
-const performanceProps = "chrome://browser/locale/devtools/performance.properties";
-const netMonitorProps = "chrome://browser/locale/devtools/netmonitor.properties";
-const storageProps = "chrome://browser/locale/devtools/storage.properties";
-const scratchpadProps = "chrome://browser/locale/devtools/scratchpad.properties";
-const memoryProps = "chrome://browser/locale/devtools/memory.properties";
+const toolboxProps = "chrome://devtools/locale/toolbox.properties";
+const inspectorProps = "chrome://devtools/locale/inspector.properties";
+const webConsoleProps = "chrome://devtools/locale/webconsole.properties";
+const debuggerProps = "chrome://devtools/locale/debugger.properties";
+const styleEditorProps = "chrome://devtools/locale/styleeditor.properties";
+const shaderEditorProps = "chrome://devtools/locale/shadereditor.properties";
+const canvasDebuggerProps = "chrome://devtools/locale/canvasdebugger.properties";
+const webAudioEditorProps = "chrome://devtools/locale/webaudioeditor.properties";
+const performanceProps = "chrome://devtools/locale/performance.properties";
+const netMonitorProps = "chrome://devtools/locale/netmonitor.properties";
+const storageProps = "chrome://devtools/locale/storage.properties";
+const scratchpadProps = "chrome://devtools/locale/scratchpad.properties";
+const memoryProps = "chrome://devtools/locale/memory.properties";
 
 loader.lazyGetter(this, "toolboxStrings", () => Services.strings.createBundle(toolboxProps));
 loader.lazyGetter(this, "performanceStrings",() => Services.strings.createBundle(performanceProps));
 loader.lazyGetter(this, "webConsoleStrings", () => Services.strings.createBundle(webConsoleProps));
 loader.lazyGetter(this, "debuggerStrings", () => Services.strings.createBundle(debuggerProps));
 loader.lazyGetter(this, "styleEditorStrings", () => Services.strings.createBundle(styleEditorProps));
 loader.lazyGetter(this, "shaderEditorStrings", () => Services.strings.createBundle(shaderEditorProps));
 loader.lazyGetter(this, "canvasDebuggerStrings", () => Services.strings.createBundle(canvasDebuggerProps));
--- a/devtools/client/eyedropper/eyedropper.js
+++ b/devtools/client/eyedropper/eyedropper.js
@@ -30,17 +30,17 @@ loader.lazyGetter(this, "DOMUtils", func
   return Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
 });
 
 loader.lazyGetter(this, "XULRuntime", function() {
   return Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime);
 });
 
 loader.lazyGetter(this, "l10n", () => Services.strings
-  .createBundle("chrome://browser/locale/devtools/eyedropper.properties"));
+  .createBundle("chrome://devtools/locale/eyedropper.properties"));
 
 const EYEDROPPER_URL = "chrome://devtools/content/eyedropper/eyedropper.xul";
 const CROSSHAIRS_URL = "chrome://devtools/content/eyedropper/crosshairs.css";
 const NOCURSOR_URL = "chrome://devtools/content/eyedropper/nocursor.css";
 
 const ZOOM_PREF = "devtools.eyedropper.zoom";
 const FORMAT_PREF = "devtools.defaultColorUnit";
 
--- a/devtools/client/fontinspector/font-inspector.xhtml
+++ b/devtools/client/fontinspector/font-inspector.xhtml
@@ -1,14 +1,14 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-<!ENTITY % fontinspectorDTD SYSTEM "chrome://browser/locale/devtools/font-inspector.dtd" >
+<!ENTITY % fontinspectorDTD SYSTEM "chrome://devtools/locale/font-inspector.dtd" >
  %fontinspectorDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <title>&title;</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <link rel="stylesheet" href="font-inspector.css" type="text/css"/>
--- a/devtools/client/framework/connect/connect.js
+++ b/devtools/client/framework/connect/connect.js
@@ -16,17 +16,17 @@ var {TargetFactory} = require("devtools/
 var {Toolbox} = require("devtools/client/framework/toolbox")
 var promise = require("promise");
 var {DebuggerClient} = require("devtools/shared/client/main");
 
 var gClient;
 var gConnectionTimeout;
 
 XPCOMUtils.defineLazyGetter(window, 'l10n', function () {
-  return Services.strings.createBundle('chrome://browser/locale/devtools/connection-screen.properties');
+  return Services.strings.createBundle('chrome://devtools/locale/connection-screen.properties');
 });
 
 /**
  * Once DOM is ready, we prefil the host/port inputs with
  * pref-stored values.
  */
 window.addEventListener("DOMContentLoaded", function onDOMReady() {
   window.removeEventListener("DOMContentLoaded", onDOMReady, true);
--- a/devtools/client/framework/connect/connect.xhtml
+++ b/devtools/client/framework/connect/connect.xhtml
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-<!ENTITY % connectionDTD SYSTEM "chrome://browser/locale/devtools/connection-screen.dtd" >
+<!ENTITY % connectionDTD SYSTEM "chrome://devtools/locale/connection-screen.dtd" >
  %connectionDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
   <head>
     <title>&title;</title>
     <link rel="stylesheet" href="chrome://devtools/skin/dark-theme.css" type="text/css"/>
--- a/devtools/client/framework/dev-edition-promo/dev-edition-promo.xul
+++ b/devtools/client/framework/dev-edition-promo/dev-edition-promo.xul
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE window [
-<!ENTITY % toolboxDTD SYSTEM "chrome://browser/locale/devtools/toolbox.dtd" >
+<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
  %toolboxDTD;
 ]>
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet rel="stylesheet" href="chrome://devtools/content/framework/dev-edition-promo/dev-edition-promo.css" type="text/css"?>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="dev-edition-promo">
   <vbox id="doorhanger-container">
     <hbox flex="1" id="top-panel">
--- a/devtools/client/framework/gDevTools.jsm
+++ b/devtools/client/framework/gDevTools.jsm
@@ -32,17 +32,17 @@ const {JsonView} = require("devtools/cli
 const TABS_OPEN_PEAK_HISTOGRAM = "DEVTOOLS_TABS_OPEN_PEAK_LINEAR";
 const TABS_OPEN_AVG_HISTOGRAM = "DEVTOOLS_TABS_OPEN_AVERAGE_LINEAR";
 const TABS_PINNED_PEAK_HISTOGRAM = "DEVTOOLS_TABS_PINNED_PEAK_LINEAR";
 const TABS_PINNED_AVG_HISTOGRAM = "DEVTOOLS_TABS_PINNED_AVERAGE_LINEAR";
 
 const FORBIDDEN_IDS = new Set(["toolbox", ""]);
 const MAX_ORDINAL = 99;
 
-const bundle = Services.strings.createBundle("chrome://browser/locale/devtools/toolbox.properties");
+const bundle = Services.strings.createBundle("chrome://devtools/locale/toolbox.properties");
 
 /**
  * DevTools is a class that represents a set of developer tools, it holds a
  * set of tools and keeps track of open toolboxes in the browser.
  */
 this.DevTools = function DevTools() {
   this._tools = new Map();     // Map<toolId, tool>
   this._themes = new Map();    // Map<themeId, theme>
--- a/devtools/client/framework/sidebar.js
+++ b/devtools/client/framework/sidebar.js
@@ -528,17 +528,17 @@ ToolSidebar.prototype = {
     this._tabs = null;
     this._tabbox = null;
     this._panelDoc = null;
     this._toolPanel = null;
   })
 }
 
 XPCOMUtils.defineLazyGetter(this, "l10n", function() {
-  let bundle = Services.strings.createBundle("chrome://browser/locale/devtools/toolbox.properties");
+  let bundle = Services.strings.createBundle("chrome://devtools/locale/toolbox.properties");
   let l10n = function(aName, ...aArgs) {
     try {
       if (aArgs.length == 0) {
         return bundle.GetStringFromName(aName);
       } else {
         return bundle.formatStringFromName(aName, aArgs, aArgs.length);
       }
     } catch (ex) {
--- a/devtools/client/framework/toolbox-options.js
+++ b/devtools/client/framework/toolbox-options.js
@@ -8,17 +8,17 @@ const {Cu, Cc, Ci} = require("chrome");
 const Services = require("Services");
 const promise = require("promise");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 XPCOMUtils.defineLazyModuleGetter(this, "gDevTools", "resource://devtools/client/framework/gDevTools.jsm");
 
 exports.OptionsPanel = OptionsPanel;
 
 XPCOMUtils.defineLazyGetter(this, "l10n", function() {
-  let bundle = Services.strings.createBundle("chrome://browser/locale/devtools/toolbox.properties");
+  let bundle = Services.strings.createBundle("chrome://devtools/locale/toolbox.properties");
   let l10n = function(aName, ...aArgs) {
     try {
       if (aArgs.length == 0) {
         return bundle.GetStringFromName(aName);
       } else {
         return bundle.formatStringFromName(aName, aArgs, aArgs.length);
       }
     } catch (ex) {
--- a/devtools/client/framework/toolbox-options.xul
+++ b/devtools/client/framework/toolbox-options.xul
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE window [
-<!ENTITY % toolboxDTD SYSTEM "chrome://browser/locale/devtools/toolbox.dtd" >
+<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
  %toolboxDTD;
 ]>
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet rel="stylesheet" href="chrome://devtools/content/framework/options-panel.css" type="text/css"?>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
   <script type="application/javascript;version=1.8"
--- a/devtools/client/framework/toolbox-process-window.xul
+++ b/devtools/client/framework/toolbox-process-window.xul
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE window [
-<!ENTITY % toolboxDTD SYSTEM "chrome://browser/locale/devtools/toolbox.dtd" >
+<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
  %toolboxDTD;
 ]>
 
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         id="devtools-toolbox-window"
         macanimationtype="document"
--- a/devtools/client/framework/toolbox-window.xul
+++ b/devtools/client/framework/toolbox-window.xul
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE window [
-<!ENTITY % toolboxDTD SYSTEM "chrome://browser/locale/devtools/toolbox.dtd" >
+<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
  %toolboxDTD;
 ]>
 
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         id="devtools-toolbox-window"
         macanimationtype="document"
--- a/devtools/client/framework/toolbox.js
+++ b/devtools/client/framework/toolbox.js
@@ -25,17 +25,17 @@ Cu.import("resource://gre/modules/Servic
 Cu.import("resource://devtools/client/framework/gDevTools.jsm");
 Cu.import("resource://devtools/client/scratchpad/scratchpad-manager.jsm");
 Cu.import("resource://devtools/client/shared/DOMHelpers.jsm");
 Cu.import("resource://gre/modules/Task.jsm");
 
 loader.lazyImporter(this, "CommandUtils",
   "resource://devtools/client/shared/DeveloperToolbar.jsm");
 loader.lazyGetter(this, "toolboxStrings", () => {
-  const properties = "chrome://browser/locale/devtools/toolbox.properties";
+  const properties = "chrome://devtools/locale/toolbox.properties";
   const bundle = Services.strings.createBundle(properties);
   return (name, ...args) => {
     try {
       if (!args.length) {
         return bundle.GetStringFromName(name);
       }
       return bundle.formatStringFromName(name, args, args.length);
     } catch (ex) {
--- a/devtools/client/framework/toolbox.xul
+++ b/devtools/client/framework/toolbox.xul
@@ -3,17 +3,17 @@
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 
 <?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
 
 <!DOCTYPE window [
-<!ENTITY % toolboxDTD SYSTEM "chrome://browser/locale/devtools/toolbox.dtd" >
+<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
 %toolboxDTD;
 <!ENTITY % editMenuStrings SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
 %editMenuStrings;
 <!ENTITY % globalKeysDTD SYSTEM "chrome://global/locale/globalKeys.dtd">
 %globalKeysDTD;
 ]>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
--- a/devtools/client/inspector/inspector-panel.js
+++ b/devtools/client/inspector/inspector-panel.js
@@ -14,20 +14,20 @@ var clipboard = require("sdk/clipboard")
 var {HostType} = require("devtools/client/framework/toolbox").Toolbox;
 
 loader.lazyGetter(this, "MarkupView", () => require("devtools/client/markupview/markup-view").MarkupView);
 loader.lazyGetter(this, "HTMLBreadcrumbs", () => require("devtools/client/inspector/breadcrumbs").HTMLBreadcrumbs);
 loader.lazyGetter(this, "ToolSidebar", () => require("devtools/client/framework/sidebar").ToolSidebar);
 loader.lazyGetter(this, "SelectorSearch", () => require("devtools/client/inspector/selector-search").SelectorSearch);
 
 loader.lazyGetter(this, "strings", () => {
-  return Services.strings.createBundle("chrome://browser/locale/devtools/inspector.properties");
+  return Services.strings.createBundle("chrome://devtools/locale/inspector.properties");
 });
 loader.lazyGetter(this, "toolboxStrings", () => {
-  return Services.strings.createBundle("chrome://browser/locale/devtools/toolbox.properties");
+  return Services.strings.createBundle("chrome://devtools/locale/toolbox.properties");
 });
 loader.lazyGetter(this, "clipboardHelper", () => {
   return Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
 });
 
 loader.lazyImporter(this, "CommandUtils", "resource://devtools/client/shared/DeveloperToolbar.jsm");
 
 const LAYOUT_CHANGE_TIMER = 250;
--- a/devtools/client/inspector/inspector.xul
+++ b/devtools/client/inspector/inspector.xul
@@ -4,17 +4,17 @@
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/inspector/inspector.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/inspector.css" type="text/css"?>
 <!DOCTYPE window [
-  <!ENTITY % inspectorDTD SYSTEM "chrome://browser/locale/devtools/inspector.dtd" >
+  <!ENTITY % inspectorDTD SYSTEM "chrome://devtools/locale/inspector.dtd" >
    %inspectorDTD;
 ]>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
   <script type="application/javascript;version=1.8"
           src="chrome://devtools/content/shared/theme-switching.js"/>
 
--- a/devtools/client/jsonview/converter-child.js
+++ b/devtools/client/jsonview/converter-child.js
@@ -29,17 +29,17 @@ const childProcessMessageManager =
 const SEGMENT_SIZE = Math.pow(2, 17);
 
 const JSON_VIEW_MIME_TYPE = "application/vnd.mozilla.json.view";
 const CONTRACT_ID = "@mozilla.org/streamconv;1?from=" + JSON_VIEW_MIME_TYPE + "&to=*/*";
 const CLASS_ID = "{d8c9acee-dec5-11e4-8c75-1681e6b88ec1}";
 
 // Localization
 var jsonViewStrings = Services.strings.createBundle(
-  "chrome://browser/locale/devtools/jsonview.properties");
+  "chrome://devtools/locale/jsonview.properties");
 
 /**
  * This object detects 'application/vnd.mozilla.json.view' content type
  * and converts it into a JSON Viewer application that allows simple
  * JSON inspection.
  *
  * Inspired by JSON View: https://github.com/bhollis/jsonview/
  */
--- a/devtools/client/layoutview/view.js
+++ b/devtools/client/layoutview/view.js
@@ -11,17 +11,17 @@ var {utils: Cu, interfaces: Ci, classes:
 Cu.import("resource://gre/modules/Task.jsm");
 const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
 Cu.import("resource://gre/modules/Console.jsm");
 Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm");
 
 const {InplaceEditor, editableItem} = require("devtools/client/shared/inplace-editor");
 const {ReflowFront} = require("devtools/server/actors/layout");
 
-const STRINGS_URI = "chrome://browser/locale/devtools/shared.properties";
+const STRINGS_URI = "chrome://devtools/locale/shared.properties";
 const SHARED_L10N = new ViewHelpers.L10N(STRINGS_URI);
 const NUMERIC = /^-?[\d\.]+$/;
 const LONG_TEXT_ROTATE_LIMIT = 3;
 
 /**
  * An instance of EditingSession tracks changes that have been made during the
  * modification of box model values. All of these changes can be reverted by
  * calling revert.
--- a/devtools/client/layoutview/view.xhtml
+++ b/devtools/client/layoutview/view.xhtml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE html [
-<!ENTITY % layoutviewDTD SYSTEM "chrome://browser/locale/devtools/layoutview.dtd" >
+<!ENTITY % layoutviewDTD SYSTEM "chrome://devtools/locale/layoutview.dtd" >
  %layoutviewDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
   <head>
     <title>&title;</title>
 
rename from browser/locales/en-US/chrome/browser/devtools/VariablesView.dtd
rename to devtools/client/locales/en-US/VariablesView.dtd
rename from browser/locales/en-US/chrome/browser/devtools/aboutdebugging.dtd
rename to devtools/client/locales/en-US/aboutdebugging.dtd
rename from browser/locales/en-US/chrome/browser/devtools/aboutdebugging.properties
rename to devtools/client/locales/en-US/aboutdebugging.properties
rename from browser/locales/en-US/chrome/browser/devtools/animationinspector.dtd
rename to devtools/client/locales/en-US/animationinspector.dtd
rename from browser/locales/en-US/chrome/browser/devtools/animationinspector.properties
rename to devtools/client/locales/en-US/animationinspector.properties
rename from browser/locales/en-US/chrome/browser/devtools/app-manager.properties
rename to devtools/client/locales/en-US/app-manager.properties
rename from browser/locales/en-US/chrome/browser/devtools/appcacheutils.properties
rename to devtools/client/locales/en-US/appcacheutils.properties
rename from browser/locales/en-US/chrome/browser/devtools/canvasdebugger.dtd
rename to devtools/client/locales/en-US/canvasdebugger.dtd
rename from browser/locales/en-US/chrome/browser/devtools/canvasdebugger.properties
rename to devtools/client/locales/en-US/canvasdebugger.properties
rename from browser/locales/en-US/chrome/browser/devtools/connection-screen.dtd
rename to devtools/client/locales/en-US/connection-screen.dtd
rename from browser/locales/en-US/chrome/browser/devtools/connection-screen.properties
rename to devtools/client/locales/en-US/connection-screen.properties
rename from browser/locales/en-US/chrome/browser/devtools/debugger.dtd
rename to devtools/client/locales/en-US/debugger.dtd
rename from browser/locales/en-US/chrome/browser/devtools/debugger.properties
rename to devtools/client/locales/en-US/debugger.properties
rename from browser/locales/en-US/chrome/browser/devtools/device.properties
rename to devtools/client/locales/en-US/device.properties
rename from browser/locales/en-US/chrome/browser/devtools/eyedropper.properties
rename to devtools/client/locales/en-US/eyedropper.properties
rename from browser/locales/en-US/chrome/browser/devtools/filterwidget.dtd
rename to devtools/client/locales/en-US/filterwidget.dtd
rename from browser/locales/en-US/chrome/browser/devtools/filterwidget.properties
rename to devtools/client/locales/en-US/filterwidget.properties
rename from browser/locales/en-US/chrome/browser/devtools/font-inspector.dtd
rename to devtools/client/locales/en-US/font-inspector.dtd
rename from browser/locales/en-US/chrome/browser/devtools/graphs.properties
rename to devtools/client/locales/en-US/graphs.properties
rename from browser/locales/en-US/chrome/browser/devtools/har.properties
rename to devtools/client/locales/en-US/har.properties
rename from browser/locales/en-US/chrome/browser/devtools/inspector.dtd
rename to devtools/client/locales/en-US/inspector.dtd
rename from browser/locales/en-US/chrome/browser/devtools/inspector.properties
rename to devtools/client/locales/en-US/inspector.properties
rename from browser/locales/en-US/chrome/browser/devtools/jsonview.properties
rename to devtools/client/locales/en-US/jsonview.properties
rename from browser/locales/en-US/chrome/browser/devtools/layoutview.dtd
rename to devtools/client/locales/en-US/layoutview.dtd
rename from browser/locales/en-US/chrome/browser/devtools/markers.properties
rename to devtools/client/locales/en-US/markers.properties
rename from browser/locales/en-US/chrome/browser/devtools/memory.properties
rename to devtools/client/locales/en-US/memory.properties
rename from browser/locales/en-US/chrome/browser/devtools/netmonitor.dtd
rename to devtools/client/locales/en-US/netmonitor.dtd
rename from browser/locales/en-US/chrome/browser/devtools/netmonitor.properties
rename to devtools/client/locales/en-US/netmonitor.properties
rename from browser/locales/en-US/chrome/browser/devtools/performance.dtd
rename to devtools/client/locales/en-US/performance.dtd
rename from browser/locales/en-US/chrome/browser/devtools/performance.properties
rename to devtools/client/locales/en-US/performance.properties
rename from browser/locales/en-US/chrome/browser/devtools/projecteditor.properties
rename to devtools/client/locales/en-US/projecteditor.properties
rename from browser/locales/en-US/chrome/browser/devtools/promisedebugger.dtd
rename to devtools/client/locales/en-US/promisedebugger.dtd
rename from browser/locales/en-US/chrome/browser/devtools/promisedebugger.properties
rename to devtools/client/locales/en-US/promisedebugger.properties
rename from browser/locales/en-US/chrome/browser/devtools/responsiveUI.properties
rename to devtools/client/locales/en-US/responsiveUI.properties
rename from browser/locales/en-US/chrome/browser/devtools/scratchpad.dtd
rename to devtools/client/locales/en-US/scratchpad.dtd
rename from browser/locales/en-US/chrome/browser/devtools/scratchpad.properties
rename to devtools/client/locales/en-US/scratchpad.properties
rename from browser/locales/en-US/chrome/browser/devtools/shadereditor.dtd
rename to devtools/client/locales/en-US/shadereditor.dtd
rename from browser/locales/en-US/chrome/browser/devtools/shadereditor.properties
rename to devtools/client/locales/en-US/shadereditor.properties
rename from browser/locales/en-US/chrome/browser/devtools/shared.properties
rename to devtools/client/locales/en-US/shared.properties
rename from browser/locales/en-US/chrome/browser/devtools/sourceeditor.dtd
rename to devtools/client/locales/en-US/sourceeditor.dtd
rename from browser/locales/en-US/chrome/browser/devtools/sourceeditor.properties
rename to devtools/client/locales/en-US/sourceeditor.properties
rename from browser/locales/en-US/chrome/browser/devtools/storage.properties
rename to devtools/client/locales/en-US/storage.properties
rename from browser/locales/en-US/chrome/browser/devtools/styleeditor.dtd
rename to devtools/client/locales/en-US/styleeditor.dtd
rename from browser/locales/en-US/chrome/browser/devtools/styleeditor.properties
rename to devtools/client/locales/en-US/styleeditor.properties
rename from browser/locales/en-US/chrome/browser/devtools/styleinspector.dtd
rename to devtools/client/locales/en-US/styleinspector.dtd
rename from browser/locales/en-US/chrome/browser/devtools/tilt.properties
rename to devtools/client/locales/en-US/tilt.properties
rename from browser/locales/en-US/chrome/browser/devtools/toolbox.dtd
rename to devtools/client/locales/en-US/toolbox.dtd
rename from browser/locales/en-US/chrome/browser/devtools/toolbox.properties
rename to devtools/client/locales/en-US/toolbox.properties
rename from browser/locales/en-US/chrome/browser/devtools/webConsole.dtd
rename to devtools/client/locales/en-US/webConsole.dtd
rename from browser/locales/en-US/chrome/browser/devtools/webaudioeditor.dtd
rename to devtools/client/locales/en-US/webaudioeditor.dtd
rename from browser/locales/en-US/chrome/browser/devtools/webaudioeditor.properties
rename to devtools/client/locales/en-US/webaudioeditor.properties
rename from browser/locales/en-US/chrome/browser/devtools/webconsole.properties
rename to devtools/client/locales/en-US/webconsole.properties
rename from browser/locales/en-US/chrome/browser/devtools/webide.dtd
rename to devtools/client/locales/en-US/webide.dtd
rename from browser/locales/en-US/chrome/browser/devtools/webide.properties
rename to devtools/client/locales/en-US/webide.properties
new file mode 100644
--- /dev/null
+++ b/devtools/client/locales/jar.mn
@@ -0,0 +1,8 @@
+#filter substitution
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+@AB_CD@.jar:
+%   locale devtools @AB_CD@ %locale/@AB_CD@/devtools/client/
+    locale/@AB_CD@/devtools/client/ (%*)
new file mode 100644
--- /dev/null
+++ b/devtools/client/locales/moz.build
@@ -0,0 +1,7 @@
+# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
--- a/devtools/client/markupview/markup-view.js
+++ b/devtools/client/markupview/markup-view.js
@@ -3088,15 +3088,15 @@ function map(value, oldMin, oldMax, newM
   let ratio = oldMax - oldMin;
   if (ratio == 0) {
     return value;
   }
   return newMin + (newMax - newMin) * ((value - oldMin) / ratio);
 }
 
 loader.lazyGetter(MarkupView.prototype, "strings", () => Services.strings.createBundle(
-  "chrome://browser/locale/devtools/inspector.properties"
+  "chrome://devtools/locale/inspector.properties"
 ));
 
 XPCOMUtils.defineLazyGetter(this, "clipboardHelper", function() {
   return Cc["@mozilla.org/widget/clipboardhelper;1"].
     getService(Ci.nsIClipboardHelper);
 });
--- a/devtools/client/markupview/test/browser_markupview_links_04.js
+++ b/devtools/client/markupview/test/browser_markupview_links_04.js
@@ -4,19 +4,19 @@
 
 "use strict";
 
 // Tests that the contextual menu shows the right items when clicking on a link
 // in an attribute.
 
 const TEST_URL = TEST_URL_ROOT + "doc_markup_links.html";
 const STRINGS = Services.strings
-  .createBundle("chrome://browser/locale/devtools/inspector.properties");
+  .createBundle("chrome://devtools/locale/inspector.properties");
 const TOOLBOX_STRINGS = Services.strings
-  .createBundle("chrome://browser/locale/devtools/toolbox.properties");
+  .createBundle("chrome://devtools/locale/toolbox.properties");
 
 // The test case array contains objects with the following properties:
 // - selector: css selector for the node to select in the inspector
 // - attributeName: name of the attribute to test
 // - popupNodeSelector: css selector for the element inside the attribute
 //   element to use as the contextual menu anchor
 // - isLinkFollowItemVisible: is the follow-link item expected to be displayed
 // - isLinkCopyItemVisible: is the copy-link item expected to be displayed
--- a/devtools/client/memory/utils.js
+++ b/devtools/client/memory/utils.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const { Cu } = require("chrome");
 
 Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm");
-const STRINGS_URI = "chrome://browser/locale/devtools/memory.properties"
+const STRINGS_URI = "chrome://devtools/locale/memory.properties"
 const L10N = exports.L10N = new ViewHelpers.L10N(STRINGS_URI);
 
 const { URL } = require("sdk/url");
 const { assert } = require("devtools/shared/DevToolsUtils");
 const { Preferences } = require("resource://gre/modules/Preferences.jsm");
 const CUSTOM_BREAKDOWN_PREF = "devtools.memory.custom-breakdowns";
 const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 const { snapshotState: states, breakdowns } = require("./constants");
--- a/devtools/client/moz.build
+++ b/devtools/client/moz.build
@@ -13,16 +13,17 @@ DIRS += [
     'commandline',
     'debugger',
     'eyedropper',
     'fontinspector',
     'framework',
     'inspector',
     'jsonview',
     'layoutview',
+    'locales',
     'markupview',
     'memory',
     'netmonitor',
     'performance',
     'preferences',
     'projecteditor',
     'promisedebugger',
     'responsivedesign',
--- a/devtools/client/netmonitor/har/har-builder.js
+++ b/devtools/client/netmonitor/har/har-builder.js
@@ -10,17 +10,17 @@ const { Services } = Cu.import("resource
 loader.lazyImporter(this, "ViewHelpers", "resource://devtools/client/shared/widgets/ViewHelpers.jsm");
 loader.lazyRequireGetter(this, "NetworkHelper", "devtools/shared/webconsole/network-helper");
 
 loader.lazyGetter(this, "appInfo", () => {
   return Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULAppInfo);
 });
 
 loader.lazyGetter(this, "L10N", () => {
-  return new ViewHelpers.L10N("chrome://browser/locale/devtools/har.properties");
+  return new ViewHelpers.L10N("chrome://devtools/locale/har.properties");
 });
 
 const HAR_VERSION = "1.1";
 
 /**
  * This object is responsible for building HAR file. See HAR spec:
  * https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/HAR/Overview.html
  * http://www.softwareishard.com/blog/har-12-spec/
--- a/devtools/client/netmonitor/netmonitor-controller.js
+++ b/devtools/client/netmonitor/netmonitor-controller.js
@@ -2,17 +2,17 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 var { classes: Cc, interfaces: Ci, utils: Cu } = Components;
 
-const NET_STRINGS_URI = "chrome://browser/locale/devtools/netmonitor.properties";
+const NET_STRINGS_URI = "chrome://devtools/locale/netmonitor.properties";
 const PKI_STRINGS_URI = "chrome://pippki/locale/pippki.properties";
 const LISTENERS = [ "NetworkActivity" ];
 const NET_PREFS = { "NetworkMonitor.saveRequestAndResponseBodies": true };
 
 // The panel's window global is an EventEmitter firing the following events:
 const EVENTS = {
   // When the monitored target begins and finishes navigating.
   TARGET_WILL_NAVIGATE: "NetMonitor:TargetWillNavigate",
--- a/devtools/client/netmonitor/netmonitor.xul
+++ b/devtools/client/netmonitor/netmonitor.xul
@@ -4,17 +4,17 @@
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/netmonitor/netmonitor.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/netmonitor.css" type="text/css"?>
 <!DOCTYPE window [
-  <!ENTITY % netmonitorDTD SYSTEM "chrome://browser/locale/devtools/netmonitor.dtd">
+  <!ENTITY % netmonitorDTD SYSTEM "chrome://devtools/locale/netmonitor.dtd">
   %netmonitorDTD;
   <!ENTITY % certManagerDTD SYSTEM "chrome://pippki/locale/certManager.dtd">
   %certManagerDTD;
 ]>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         xmlns:html="http://www.w3.org/1999/xhtml">
 
--- a/devtools/client/netmonitor/test/browser_net_prefs-and-l10n.js
+++ b/devtools/client/netmonitor/test/browser_net_prefs-and-l10n.js
@@ -15,17 +15,17 @@ function test() {
       "Should have a preferences object available on the panel window.");
 
     function testL10N() {
       let { L10N } = aMonitor.panelWin;
 
       ok(L10N.stringBundle,
         "The localization object should have a string bundle available.");
 
-      let bundleName = "chrome://browser/locale/devtools/netmonitor.properties";
+      let bundleName = "chrome://devtools/locale/netmonitor.properties";
       let stringBundle = Services.strings.createBundle(bundleName);
 
       is(L10N.getStr("netmonitor.label"),
         stringBundle.GetStringFromName("netmonitor.label"),
         "The getStr() method didn't return the expected string.");
 
       is(L10N.getFormatStr("networkMenu.totalMS", "foo"),
         stringBundle.formatStringFromName("networkMenu.totalMS", ["foo"], 1),
--- a/devtools/client/performance/modules/global.js
+++ b/devtools/client/performance/modules/global.js
@@ -4,18 +4,18 @@
 "use strict";
 
 const { ViewHelpers } = require("resource://devtools/client/shared/widgets/ViewHelpers.jsm");
 
 /**
  * Localization convenience methods.
  */
 const L10N = new ViewHelpers.MultiL10N([
-  "chrome://browser/locale/devtools/markers.properties",
-  "chrome://browser/locale/devtools/performance.properties"
+  "chrome://devtools/locale/markers.properties",
+  "chrome://devtools/locale/performance.properties"
 ]);
 
 /**
  * A list of preferences for this tool. The values automatically update
  * if somebody edits edits about:config or the prefs change somewhere else.
  */
 const PREFS = new ViewHelpers.Prefs("devtools.performance", {
   "show-triggers-for-gc-types": ["Char", "ui.show-triggers-for-gc-types"],
--- a/devtools/client/performance/performance.xul
+++ b/devtools/client/performance/performance.xul
@@ -3,17 +3,17 @@
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/performance.css" type="text/css"?>
 <!DOCTYPE window [
-  <!ENTITY % performanceDTD SYSTEM "chrome://browser/locale/devtools/performance.dtd">
+  <!ENTITY % performanceDTD SYSTEM "chrome://devtools/locale/performance.dtd">
   %performanceDTD;
 ]>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
   <script src="chrome://devtools/content/shared/theme-switching.js"/>
   <script type="application/javascript" src="performance-controller.js"/>
   <script type="application/javascript" src="performance-view.js"/>
   <script type="application/javascript" src="views/overview.js"/>
--- a/devtools/client/projecteditor/chrome/content/projecteditor-loader.xul
+++ b/devtools/client/projecteditor/chrome/content/projecteditor-loader.xul
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE window [
-<!ENTITY % toolboxDTD SYSTEM "chrome://browser/locale/devtools/toolbox.dtd" >
+<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
  %toolboxDTD;
 ]>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
 <script type="application/javascript;version=1.8" src="projecteditor-loader.js"></script>
 
   <commandset id="toolbox-commandset">
--- a/devtools/client/projecteditor/chrome/content/projecteditor.xul
+++ b/devtools/client/projecteditor/chrome/content/projecteditor.xul
@@ -7,21 +7,21 @@
 <?xml-stylesheet href="chrome://devtools/content/debugger/debugger.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/markupview/markup-view.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/markup-view.css" type="text/css"?>
 
 <?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
 
 <!DOCTYPE window [
-<!ENTITY % scratchpadDTD SYSTEM "chrome://browser/locale/devtools/scratchpad.dtd" >
+<!ENTITY % scratchpadDTD SYSTEM "chrome://devtools/locale/scratchpad.dtd" >
  %scratchpadDTD;
 <!ENTITY % editMenuStrings SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
 %editMenuStrings;
-<!ENTITY % sourceEditorStrings SYSTEM "chrome://browser/locale/devtools/sourceeditor.dtd">
+<!ENTITY % sourceEditorStrings SYSTEM "chrome://devtools/locale/sourceeditor.dtd">
 %sourceEditorStrings;
 ]>
 
 <page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" class="theme-body">
 
   <script type="application/javascript" src="chrome://global/content/globalOverlay.js"/>
 
   <commandset id="projecteditor-commandset" />
--- a/devtools/client/projecteditor/lib/helpers/l10n.js
+++ b/devtools/client/projecteditor/lib/helpers/l10n.js
@@ -5,17 +5,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
  * This file contains helper functions for internationalizing projecteditor strings
  */
 
 const { Cu, Cc, Ci } = require("chrome");
 const { ViewHelpers } = Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm", {});
-const ITCHPAD_STRINGS_URI = "chrome://browser/locale/devtools/projecteditor.properties";
+const ITCHPAD_STRINGS_URI = "chrome://devtools/locale/projecteditor.properties";
 const L10N = new ViewHelpers.L10N(ITCHPAD_STRINGS_URI).stringBundle;
 
 function getLocalizedString (name) {
   try {
     return L10N.GetStringFromName(name);
   } catch (ex) {
     console.log("Error reading '" + name + "'");
     throw new Error("l10n error with " + name);
--- a/devtools/client/projecteditor/lib/plugins/app-manager/plugin.js
+++ b/devtools/client/projecteditor/lib/plugins/app-manager/plugin.js
@@ -2,17 +2,17 @@ const { Cu } = require("chrome");
 const { Class } = require("sdk/core/heritage");
 const { EventTarget } = require("sdk/event/target");
 const { emit } = require("sdk/event/core");
 const promise = require("promise");
 var { registerPlugin, Plugin } = require("devtools/client/projecteditor/lib/plugins/core");
 const { AppProjectEditor } = require("./app-project-editor");
 const OPTION_URL = "chrome://devtools/skin/images/tool-options.svg";
 const {Services} = Cu.import("resource://gre/modules/Services.jsm");
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 var AppManagerRenderer = Class({
   extends: Plugin,
 
   isAppManagerProject: function() {
     return !!this.host.project.appManagerOpts;
   },
   editorForResource: function(resource) {
--- a/devtools/client/promisedebugger/promise-debugger.xhtml
+++ b/devtools/client/promisedebugger/promise-debugger.xhtml
@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- This Source Code Form is subject to the terms of the Mkozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % promisedebuggerDTD SYSTEM "chrome://browser/locale/devtools/promisedebugger.dtd">
+  <!ENTITY % promisedebuggerDTD SYSTEM "chrome://devtools/locale/promisedebugger.dtd">
   %promisedebuggerDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <title>&title;</title>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <link rel="stylesheet" href="chrome://devtools/skin/common.css" type="text/css"/>
--- a/devtools/client/responsivedesign/responsivedesign.jsm
+++ b/devtools/client/responsivedesign/responsivedesign.jsm
@@ -30,17 +30,17 @@ const MIN_HEIGHT = 50;
 const MAX_WIDTH = 10000;
 const MAX_HEIGHT = 10000;
 
 const SLOW_RATIO = 6;
 const ROUND_RATIO = 10;
 
 const INPUT_PARSER = /(\d+)[^\d]+(\d+)/;
 
-const SHARED_L10N = new ViewHelpers.L10N("chrome://browser/locale/devtools/shared.properties");
+const SHARED_L10N = new ViewHelpers.L10N("chrome://devtools/locale/shared.properties");
 
 var ActiveTabs = new Map();
 
 this.ResponsiveUIManager = {
   /**
    * Check if the a tab is in a responsive mode.
    * Leave the responsive mode if active,
    * active the responsive mode if not active.
@@ -1013,10 +1013,10 @@ ResponsiveUI.prototype = {
       return !aPreset.custom;
     });
 
     Services.prefs.setCharPref("devtools.responsiveUI.presets", JSON.stringify(registeredPresets));
   },
 }
 
 XPCOMUtils.defineLazyGetter(ResponsiveUI.prototype, "strings", function () {
-  return Services.strings.createBundle("chrome://browser/locale/devtools/responsiveUI.properties");
+  return Services.strings.createBundle("chrome://devtools/locale/responsiveUI.properties");
 });
--- a/devtools/client/scratchpad/scratchpad.js
+++ b/devtools/client/scratchpad/scratchpad.js
@@ -25,17 +25,17 @@ const BUTTON_POSITION_CANCEL     = 1;
 const BUTTON_POSITION_DONT_SAVE  = 2;
 const BUTTON_POSITION_REVERT     = 0;
 const EVAL_FUNCTION_TIMEOUT      = 1000; // milliseconds
 
 const MAXIMUM_FONT_SIZE = 96;
 const MINIMUM_FONT_SIZE = 6;
 const NORMAL_FONT_SIZE = 12;
 
-const SCRATCHPAD_L10N = "chrome://browser/locale/devtools/scratchpad.properties";
+const SCRATCHPAD_L10N = "chrome://devtools/locale/scratchpad.properties";
 const DEVTOOLS_CHROME_ENABLED = "devtools.chrome.enabled";
 const PREF_RECENT_FILES_MAX = "devtools.scratchpad.recentFilesMax";
 const SHOW_LINE_NUMBERS = "devtools.scratchpad.lineNumbers";
 const WRAP_TEXT = "devtools.scratchpad.wrapText";
 const SHOW_TRAILING_SPACE = "devtools.scratchpad.showTrailingSpace";
 const EDITOR_FONT_SIZE = "devtools.scratchpad.editorFontSize";
 const ENABLE_AUTOCOMPLETION = "devtools.scratchpad.enableAutocompletion";
 const TAB_SIZE = "devtools.editor.tabsize";
--- a/devtools/client/scratchpad/scratchpad.xul
+++ b/devtools/client/scratchpad/scratchpad.xul
@@ -1,20 +1,20 @@
 <?xml version="1.0"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE window [
-<!ENTITY % scratchpadDTD SYSTEM "chrome://browser/locale/devtools/scratchpad.dtd" >
+<!ENTITY % scratchpadDTD SYSTEM "chrome://devtools/locale/scratchpad.dtd" >
  %scratchpadDTD;
 <!ENTITY % editMenuStrings SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
 %editMenuStrings;
-<!ENTITY % sourceEditorStrings SYSTEM "chrome://browser/locale/devtools/sourceeditor.dtd">
+<!ENTITY % sourceEditorStrings SYSTEM "chrome://devtools/locale/sourceeditor.dtd">
 %sourceEditorStrings;
 ]>
 
 <?xml-stylesheet href="chrome://global/skin/global.css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css"?>
 <?xml-stylesheet href="chrome://devtools/skin/scratchpad.css"?>
 <?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
 
--- a/devtools/client/shadereditor/shadereditor.js
+++ b/devtools/client/shadereditor/shadereditor.js
@@ -35,17 +35,17 @@ const EVENTS = {
   // When the UI is reset from tab navigation
   UI_RESET: "ShaderEditor:UIReset",
 
   // When the editor's error markers are all removed
   EDITOR_ERROR_MARKERS_REMOVED: "ShaderEditor:EditorCleaned"
 };
 XPCOMUtils.defineConstant(this, "EVENTS", EVENTS);
 
-const STRINGS_URI = "chrome://browser/locale/devtools/shadereditor.properties"
+const STRINGS_URI = "chrome://devtools/locale/shadereditor.properties"
 const HIGHLIGHT_TINT = [1, 0, 0.25, 1]; // rgba
 const TYPING_MAX_DELAY = 500; // ms
 const SHADERS_AUTOGROW_ITEMS = 4;
 const GUTTER_ERROR_PANEL_OFFSET_X = 7; // px
 const GUTTER_ERROR_PANEL_DELAY = 100; // ms
 const DEFAULT_EDITOR_CONFIG = {
   gutters: ["errors"],
   lineNumbers: true,
--- a/devtools/client/shadereditor/shadereditor.xul
+++ b/devtools/client/shadereditor/shadereditor.xul
@@ -3,17 +3,17 @@
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/shadereditor.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
 <!DOCTYPE window [
-  <!ENTITY % debuggerDTD SYSTEM "chrome://browser/locale/devtools/shadereditor.dtd">
+  <!ENTITY % debuggerDTD SYSTEM "chrome://devtools/locale/shadereditor.dtd">
   %debuggerDTD;
 ]>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
   <script type="application/javascript;version=1.8"
           src="chrome://devtools/content/shared/theme-switching.js"/>
 
--- a/devtools/client/shared/AppCacheUtils.jsm
+++ b/devtools/client/shared/AppCacheUtils.jsm
@@ -612,17 +612,17 @@ ManifestParser.prototype = {
                          "invalidSectionName", text, this.currentLine);
           return false;
       }
     }
   },
 };
 
 XPCOMUtils.defineLazyGetter(this, "l10n", () => Services.strings
-  .createBundle("chrome://browser/locale/devtools/appcacheutils.properties"));
+  .createBundle("chrome://devtools/locale/appcacheutils.properties"));
 
 XPCOMUtils.defineLazyGetter(this, "appcacheservice", function() {
   return Cc["@mozilla.org/network/application-cache-service;1"]
            .getService(Ci.nsIApplicationCacheService);
 
 });
 
 XPCOMUtils.defineLazyGetter(this, "_DOMParser", function() {
--- a/devtools/client/shared/DeveloperToolbar.jsm
+++ b/devtools/client/shared/DeveloperToolbar.jsm
@@ -31,17 +31,17 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 XPCOMUtils.defineLazyGetter(this, "prefBranch", function() {
   let prefService = Cc["@mozilla.org/preferences-service;1"]
                     .getService(Ci.nsIPrefService);
   return prefService.getBranch(null)
                     .QueryInterface(Ci.nsIPrefBranch2);
 });
 
 XPCOMUtils.defineLazyGetter(this, "toolboxStrings", function () {
-  return Services.strings.createBundle("chrome://browser/locale/devtools/toolbox.properties");
+  return Services.strings.createBundle("chrome://devtools/locale/toolbox.properties");
 });
 
 const Telemetry = require("devtools/client/shared/telemetry");
 
 XPCOMUtils.defineLazyGetter(this, "gcliInit", function() {
   try {
     return require("devtools/shared/gcli/commands/index");
   }
--- a/devtools/client/shared/devices.js
+++ b/devtools/client/shared/devices.js
@@ -5,17 +5,17 @@
 "use strict";
 
 const { Ci, Cc } = require("chrome");
 const { getJSON } = require("devtools/client/shared/getjson");
 const { Services } = require("resource://gre/modules/Services.jsm");
 const promise = require("promise");
 
 const DEVICES_URL = "devtools.devices.url";
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/device.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/device.properties");
 
 /* This is a catalog of common web-enabled devices and their properties,
  * intended for (mobile) device emulation.
  *
  * The properties of a device are:
  * - name: brand and model(s).
  * - width: viewport width.
  * - height: viewport height.
--- a/devtools/client/shared/test/browser_filter-editor-02.js
+++ b/devtools/client/shared/test/browser_filter-editor-02.js
@@ -4,17 +4,17 @@
 "use strict";
 
 // Tests that the Filter Editor Widget renders filters correctly
 
 const TEST_URI = "chrome://devtools/content/shared/widgets/filter-frame.xhtml";
 const {CSSFilterEditorWidget} = require("devtools/client/shared/widgets/FilterWidget");
 
 const { ViewHelpers } = Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm", {});
-const STRINGS_URI = "chrome://browser/locale/devtools/filterwidget.properties";
+const STRINGS_URI = "chrome://devtools/locale/filterwidget.properties";
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 
 add_task(function*() {
   yield promiseTab("about:blank");
   let [host, win, doc] = yield createHost("bottom", TEST_URI);
 
   const TEST_DATA = [
     {
--- a/devtools/client/shared/test/browser_filter-editor-06.js
+++ b/devtools/client/shared/test/browser_filter-editor-06.js
@@ -6,17 +6,17 @@
 // Tests the Filter Editor Widget's add button
 
 const TEST_URI = "chrome://devtools/content/shared/widgets/filter-frame.xhtml";
 
 const { Cu } = require("chrome");
 const {CSSFilterEditorWidget} = require("devtools/client/shared/widgets/FilterWidget");
 
 const { ViewHelpers } = Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm", {});
-const STRINGS_URI = "chrome://browser/locale/devtools/filterwidget.properties";
+const STRINGS_URI = "chrome://devtools/locale/filterwidget.properties";
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 
 add_task(function*() {
   yield promiseTab("about:blank");
   let [host, win, doc] = yield createHost("bottom", TEST_URI);
 
   const container = doc.querySelector("#container");
   let widget = new CSSFilterEditorWidget(container, "none");
--- a/devtools/client/shared/test/browser_filter-editor-07.js
+++ b/devtools/client/shared/test/browser_filter-editor-07.js
@@ -6,17 +6,17 @@
 // Tests the Filter Editor Widget's remove button
 
 const TEST_URI = "chrome://devtools/content/shared/widgets/filter-frame.xhtml";
 
 const { Cu } = require("chrome");
 const {CSSFilterEditorWidget} = require("devtools/client/shared/widgets/FilterWidget");
 
 const { ViewHelpers } = Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm", {});
-const STRINGS_URI = "chrome://browser/locale/devtools/filterwidget.properties";
+const STRINGS_URI = "chrome://devtools/locale/filterwidget.properties";
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 
 add_task(function*() {
   yield promiseTab("about:blank");
   let [host, win, doc] = yield createHost("bottom", TEST_URI);
 
   const container = doc.querySelector("#container");
   let widget = new CSSFilterEditorWidget(container, "blur(2px) contrast(200%)");
--- a/devtools/client/shared/widgets/Chart.jsm
+++ b/devtools/client/shared/widgets/Chart.jsm
@@ -3,17 +3,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const Ci = Components.interfaces;
 const Cu = Components.utils;
 
-const NET_STRINGS_URI = "chrome://browser/locale/devtools/netmonitor.properties";
+const NET_STRINGS_URI = "chrome://devtools/locale/netmonitor.properties";
 const SVG_NS = "http://www.w3.org/2000/svg";
 const PI = Math.PI;
 const TAU = PI * 2;
 const EPSILON = 0.0000001;
 const NAMED_SLICE_MIN_ANGLE = TAU / 8;
 const NAMED_SLICE_TEXT_DISTANCE_RATIO = 1.9;
 const HOVERED_SLICE_TRANSLATE_DISTANCE_RATIO = 20;
 
--- a/devtools/client/shared/widgets/FilterWidget.js
+++ b/devtools/client/shared/widgets/FilterWidget.js
@@ -9,17 +9,17 @@
   * for Rule View's filter swatches
   */
 
 const EventEmitter = require("devtools/shared/event-emitter");
 const { Cu, Cc, Ci } = require("chrome");
 const { ViewHelpers } =
       Cu.import("resource://devtools/client/shared/widgets/ViewHelpers.jsm",
                 {});
-const STRINGS_URI = "chrome://browser/locale/devtools/filterwidget.properties";
+const STRINGS_URI = "chrome://devtools/locale/filterwidget.properties";
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 const {cssTokenizer} = require("devtools/client/shared/css-parsing-utils");
 
 loader.lazyGetter(this, "asyncStorage",
                   () => require("devtools/shared/async-storage"));
 
 loader.lazyGetter(this, "DOMUtils", () => {
   return Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
--- a/devtools/client/shared/widgets/LineGraphWidget.js
+++ b/devtools/client/shared/widgets/LineGraphWidget.js
@@ -2,17 +2,17 @@
 
 const { Cc, Ci, Cu, Cr } = require("chrome");
 
 const { Task } = Cu.import("resource://gre/modules/Task.jsm", {});
 const { ViewHelpers, Heritage } = require("resource://devtools/client/shared/widgets/ViewHelpers.jsm");
 const { AbstractCanvasGraph, CanvasGraphUtils } = require("devtools/client/shared/widgets/Graphs");
 
 const HTML_NS = "http://www.w3.org/1999/xhtml";
-const L10N = new ViewHelpers.L10N("chrome://browser/locale/devtools/graphs.properties");
+const L10N = new ViewHelpers.L10N("chrome://devtools/locale/graphs.properties");
 
 // Line graph constants.
 
 const GRAPH_DAMPEN_VALUES_FACTOR = 0.85;
 const GRAPH_TOOLTIP_SAFE_BOUNDS = 8; // px
 const GRAPH_MIN_MAX_TOOLTIP_DISTANCE = 14; // px
 
 const GRAPH_BACKGROUND_COLOR = "#0088cc";
--- a/devtools/client/shared/widgets/MdnDocsWidget.js
+++ b/devtools/client/shared/widgets/MdnDocsWidget.js
@@ -377,17 +377,17 @@ MdnDocsWidget.prototype = {
  */
 function L10N() {}
 L10N.prototype = {};
 
 var l10n = new L10N();
 
 loader.lazyGetter(L10N.prototype, "strings", () => {
   return Services.strings.createBundle(
-    "chrome://browser/locale/devtools/inspector.properties");
+    "chrome://devtools/locale/inspector.properties");
 });
 
 /**
  * Test whether a node is all whitespace.
  *
  * @return {boolean}
  * True if the node all whitespace, otherwise false.
  */
--- a/devtools/client/shared/widgets/Tooltip.js
+++ b/devtools/client/shared/widgets/Tooltip.js
@@ -1714,10 +1714,10 @@ SwatchFilterTooltip.prototype = Heritage
  */
 function L10N() {}
 L10N.prototype = {};
 
 var l10n = new L10N();
 
 loader.lazyGetter(L10N.prototype, "strings", () => {
   return Services.strings.createBundle(
-    "chrome://browser/locale/devtools/inspector.properties");
+    "chrome://devtools/locale/inspector.properties");
 });
--- a/devtools/client/shared/widgets/VariablesView.jsm
+++ b/devtools/client/shared/widgets/VariablesView.jsm
@@ -3,17 +3,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 "use strict";
 
 const Ci = Components.interfaces;
 const Cu = Components.utils;
 
-const DBG_STRINGS_URI = "chrome://browser/locale/devtools/debugger.properties";
+const DBG_STRINGS_URI = "chrome://devtools/locale/debugger.properties";
 const LAZY_EMPTY_DELAY = 150; // ms
 const LAZY_EXPAND_DELAY = 50; // ms
 const SCROLL_PAGE_SIZE_DEFAULT = 0;
 const PAGE_SIZE_SCROLL_HEIGHT_RATIO = 100;
 const PAGE_SIZE_MAX_JUMPS = 30;
 const SEARCH_ACTION_MAX_DELAY = 300; // ms
 const ITEM_FLASH_DURATION = 300 // ms
 
--- a/devtools/client/shared/widgets/VariablesView.xul
+++ b/devtools/client/shared/widgets/VariablesView.xul
@@ -2,17 +2,17 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://global/skin/global.css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
 <!DOCTYPE window [
-  <!ENTITY % viewDTD SYSTEM "chrome://browser/locale/devtools/VariablesView.dtd">
+  <!ENTITY % viewDTD SYSTEM "chrome://devtools/locale/VariablesView.dtd">
   %viewDTD;
 ]>
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
         title="&PropertiesViewWindowTitle;">
 
   <script type="application/javascript;version=1.8"
           src="chrome://devtools/content/shared/theme-switching.js"/>
   <vbox id="variables" flex="1"/>
--- a/devtools/client/shared/widgets/VariablesViewController.jsm
+++ b/devtools/client/shared/widgets/VariablesViewController.jsm
@@ -26,17 +26,17 @@ XPCOMUtils.defineLazyGetter(this, "VARIA
   Services.prefs.getBoolPref("devtools.debugger.ui.variables-sorting-enabled")
 );
 
 XPCOMUtils.defineLazyModuleGetter(this, "console",
   "resource://gre/modules/Console.jsm");
 
 const MAX_LONG_STRING_LENGTH = 200000;
 const MAX_PROPERTY_ITEMS = 2000;
-const DBG_STRINGS_URI = "chrome://browser/locale/devtools/debugger.properties";
+const DBG_STRINGS_URI = "chrome://devtools/locale/debugger.properties";
 
 const ELLIPSIS = Services.prefs.getComplexValue("intl.ellipsis", Ci.nsIPrefLocalizedString).data
 
 this.EXPORTED_SYMBOLS = ["VariablesViewController", "StackFrameUtils"];
 
 
 /**
  * Controller for a VariablesView that handles interfacing with the debugger
--- a/devtools/client/shared/widgets/filter-frame.xhtml
+++ b/devtools/client/shared/widgets/filter-frame.xhtml
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE html [
-  <!ENTITY % filterwidgetDTD SYSTEM "chrome://browser/locale/devtools/filterwidget.dtd" >
+  <!ENTITY % filterwidgetDTD SYSTEM "chrome://devtools/locale/filterwidget.dtd" >
   %filterwidgetDTD;
 ]>
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
     <link rel="stylesheet" href="chrome://devtools/content/shared/widgets/filter-widget.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://devtools/skin/common.css" type="text/css"/>
     <script type="application/javascript;version=1.8" src="chrome://devtools/content/shared/theme-switching.js"></script>
--- a/devtools/client/sourceeditor/editor.js
+++ b/devtools/client/sourceeditor/editor.js
@@ -14,17 +14,17 @@ const {
   DETECT_INDENT,
   getIndentationFromIteration
 } = require("devtools/shared/indentation");
 
 const ENABLE_CODE_FOLDING = "devtools.editor.enableCodeFolding";
 const KEYMAP      = "devtools.editor.keymap";
 const AUTO_CLOSE  = "devtools.editor.autoclosebrackets";
 const AUTOCOMPLETE  = "devtools.editor.autocomplete";
-const L10N_BUNDLE = "chrome://browser/locale/devtools/sourceeditor.properties";
+const L10N_BUNDLE = "chrome://devtools/locale/sourceeditor.properties";
 const XUL_NS      = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
 const VALID_KEYMAPS = new Set(["emacs", "vim", "sublime"]);
 
 // Maximum allowed margin (in number of lines) from top or bottom of the editor
 // while shifting to a line which was initially out of view.
 const MAX_VERTICAL_OFFSET = 3;
 
 // Match @Scratchpad/N:LINE[:COLUMN] or (LINE[:COLUMN]) anywhere at an end of
--- a/devtools/client/sourceeditor/test/browser_editor_find_again.js
+++ b/devtools/client/sourceeditor/test/browser_editor_find_again.js
@@ -1,16 +1,16 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 2; fill-column: 80 -*- */
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
-const L10N_BUNDLE = "chrome://browser/locale/devtools/sourceeditor.properties";
+const L10N_BUNDLE = "chrome://devtools/locale/sourceeditor.properties";
 const L10N = Services.strings.createBundle(L10N_BUNDLE);
 
 const FIND_KEY = L10N.GetStringFromName("find.commandkey");
 const FINDAGAIN_KEY = L10N.GetStringFromName("findAgain.commandkey");
 
 const { OS } = Services.appinfo;
 
 // On linux, getting immediately the selection's range here fails, returning
--- a/devtools/client/storage/ui.js
+++ b/devtools/client/storage/ui.js
@@ -17,17 +17,17 @@ loader.lazyImporter(this, "ViewHelpers",
 loader.lazyImporter(this, "VariablesView",
   "resource://devtools/client/shared/widgets/VariablesView.jsm");
 
 const Telemetry = require("devtools/client/shared/telemetry");
 
 /**
  * Localization convenience methods.
  */
-const STORAGE_STRINGS = "chrome://browser/locale/devtools/storage.properties";
+const STORAGE_STRINGS = "chrome://devtools/locale/storage.properties";
 const L10N = new ViewHelpers.L10N(STORAGE_STRINGS);
 
 const GENERIC_VARIABLES_VIEW_SETTINGS = {
   lazyEmpty: true,
    // ms
   lazyEmptyDelay: 10,
   searchEnabled: true,
   searchPlaceholder: L10N.getStr("storage.search.placeholder"),
--- a/devtools/client/styleeditor/StyleEditorUtil.jsm
+++ b/devtools/client/styleeditor/StyleEditorUtil.jsm
@@ -15,17 +15,17 @@ this.EXPORTED_SYMBOLS = [
 ];
 
 const Cc = Components.classes;
 const Ci = Components.interfaces;
 const Cu = Components.utils;
 
 Cu.import("resource://gre/modules/Services.jsm");
 
-const PROPERTIES_URL = "chrome://browser/locale/devtools/styleeditor.properties";
+const PROPERTIES_URL = "chrome://devtools/locale/styleeditor.properties";
 
 const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
 const console = require("resource://gre/modules/Console.jsm").console;
 const gStringBundle = Services.strings.createBundle(PROPERTIES_URL);
 
 
 /**
  * Returns a localized string with the given key name from the string bundle.
--- a/devtools/client/styleeditor/styleeditor-panel.js
+++ b/devtools/client/styleeditor/styleeditor-panel.js
@@ -146,10 +146,10 @@ StyleEditorPanel.prototype = {
 
     return promise.resolve(null);
   },
 }
 
 XPCOMUtils.defineLazyGetter(StyleEditorPanel.prototype, "strings",
   function () {
     return Services.strings.createBundle(
-            "chrome://browser/locale/devtools/styleeditor.properties");
+            "chrome://devtools/locale/styleeditor.properties");
   });
--- a/devtools/client/styleeditor/styleeditor.xul
+++ b/devtools/client/styleeditor/styleeditor.xul
@@ -1,20 +1,20 @@
 <?xml version="1.0"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE window [
-<!ENTITY % styleEditorDTD SYSTEM "chrome://browser/locale/devtools/styleeditor.dtd" >
+<!ENTITY % styleEditorDTD SYSTEM "chrome://devtools/locale/styleeditor.dtd" >
  %styleEditorDTD;
 <!ENTITY % editMenuStrings SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
  %editMenuStrings;
-<!ENTITY % sourceEditorStrings SYSTEM "chrome://browser/locale/devtools/sourceeditor.dtd">
+<!ENTITY % sourceEditorStrings SYSTEM "chrome://devtools/locale/sourceeditor.dtd">
  %sourceEditorStrings;
-<!ENTITY % csscoverageDTD SYSTEM "chrome://global/locale/devtools/csscoverage.dtd">
+<!ENTITY % csscoverageDTD SYSTEM "chrome://devtools-shared/locale/csscoverage.dtd">
  %csscoverageDTD;
 ]>
 
 <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/splitview.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
--- a/devtools/client/styleinspector/computed-view.js
+++ b/devtools/client/styleinspector/computed-view.js
@@ -220,17 +220,17 @@ CssComputedView.l10n = function(name) {
   } catch (ex) {
     Services.console.logStringMessage("Error reading '" + name + "'");
     throw new Error("l10n error with " + name);
   }
 };
 
 XPCOMUtils.defineLazyGetter(CssComputedView, "_strings", function() {
   return Services.strings.createBundle(
-    "chrome://global/locale/devtools/styleinspector.properties");
+    "chrome://devtools-shared/locale/styleinspector.properties");
 });
 
 XPCOMUtils.defineLazyGetter(this, "clipboardHelper", function() {
   return Cc["@mozilla.org/widget/clipboardhelper;1"]
          .getService(Ci.nsIClipboardHelper);
 });
 
 CssComputedView.prototype = {
--- a/devtools/client/styleinspector/computedview.xhtml
+++ b/devtools/client/styleinspector/computedview.xhtml
@@ -1,15 +1,15 @@
 <?xml version="1.0"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE window [
-  <!ENTITY % inspectorDTD SYSTEM "chrome://browser/locale/devtools/styleinspector.dtd">
+  <!ENTITY % inspectorDTD SYSTEM "chrome://devtools/locale/styleinspector.dtd">
   %inspectorDTD;
   <!ELEMENT loop ANY>
   <!ATTLIST li foreach CDATA #IMPLIED>
   <!ATTLIST div foreach CDATA #IMPLIED>
   <!ATTLIST loop foreach CDATA #IMPLIED>
   <!ATTLIST a target CDATA #IMPLIED>
   <!ATTLIST a __pathElement CDATA #IMPLIED>
   <!ATTLIST div _id CDATA #IMPLIED>
--- a/devtools/client/styleinspector/cssruleview.xhtml
+++ b/devtools/client/styleinspector/cssruleview.xhtml
@@ -1,15 +1,15 @@
 <?xml version="1.0"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE window [
-  <!ENTITY % inspectorDTD SYSTEM "chrome://browser/locale/devtools/styleinspector.dtd">
+  <!ENTITY % inspectorDTD SYSTEM "chrome://devtools/locale/styleinspector.dtd">
   %inspectorDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
       class="theme-sidebar">
   <head>
     <title>&ruleViewTitle;</title>
--- a/devtools/client/styleinspector/rule-view.js
+++ b/devtools/client/styleinspector/rule-view.js
@@ -4044,17 +4044,17 @@ XPCOMUtils.defineLazyGetter(this, "clipb
 });
 
 XPCOMUtils.defineLazyGetter(this, "osString", function() {
   return Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime).OS;
 });
 
 XPCOMUtils.defineLazyGetter(this, "_strings", function() {
   return Services.strings.createBundle(
-    "chrome://global/locale/devtools/styleinspector.properties");
+    "chrome://devtools-shared/locale/styleinspector.properties");
 });
 
 XPCOMUtils.defineLazyGetter(this, "domUtils", function() {
   return Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
 });
 
 loader.lazyGetter(this, "AutocompletePopup", function() {
   return require("devtools/client/shared/autocomplete-popup").AutocompletePopup;
--- a/devtools/client/styleinspector/style-inspector-menu.js
+++ b/devtools/client/styleinspector/style-inspector-menu.js
@@ -11,17 +11,17 @@ const {PREF_ORIG_SOURCES} = require("dev
 
 loader.lazyRequireGetter(this, "overlays",
   "devtools/client/styleinspector/style-inspector-overlays");
 loader.lazyImporter(this, "Services", "resource://gre/modules/Services.jsm");
 loader.lazyServiceGetter(this, "clipboardHelper",
   "@mozilla.org/widget/clipboardhelper;1", "nsIClipboardHelper");
 loader.lazyGetter(this, "_strings", () => {
   return Services.strings
-  .createBundle("chrome://global/locale/devtools/styleinspector.properties");
+  .createBundle("chrome://devtools-shared/locale/styleinspector.properties");
 });
 
 const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
 const PREF_ENABLE_MDN_DOCS_TOOLTIP =
   "devtools.inspector.mdnDocsTooltip.enabled";
 
 /**
  * Style inspector context menu
--- a/devtools/client/styleinspector/style-inspector.js
+++ b/devtools/client/styleinspector/style-inspector.js
@@ -14,17 +14,17 @@ const {PREF_ORIG_SOURCES} = require("dev
 
 loader.lazyGetter(this, "gDevTools", () =>
   Cu.import("resource://devtools/client/framework/gDevTools.jsm", {}).gDevTools);
 loader.lazyGetter(this, "RuleView",
   () => require("devtools/client/styleinspector/rule-view"));
 loader.lazyGetter(this, "ComputedView",
   () => require("devtools/client/styleinspector/computed-view"));
 loader.lazyGetter(this, "_strings", () => Services.strings
-  .createBundle("chrome://global/locale/devtools/styleinspector.properties"));
+  .createBundle("chrome://devtools-shared/locale/styleinspector.properties"));
 
 // This module doesn't currently export any symbols directly, it only
 // registers inspector tools.
 
 function RuleViewTool(inspector, window) {
   this.inspector = inspector;
   this.document = window.document;
 
--- a/devtools/client/styleinspector/test/browser_ruleview_content_02.js
+++ b/devtools/client/styleinspector/test/browser_ruleview_content_02.js
@@ -11,17 +11,17 @@ const CONTENT = '<body style="color:red;
                    <div style="color:blue;">\
                      <p style="color:green;">\
                        <span style="color:yellow;">test element</span>\
                      </p>\
                    </div>\
                  </body>';
 
 const STRINGS = Services.strings
-  .createBundle("chrome://global/locale/devtools/styleinspector.properties");
+  .createBundle("chrome://devtools-shared/locale/styleinspector.properties");
 
 add_task(function*() {
   yield addTab("data:text/html;charset=utf-8," + CONTENT);
 
   info("Getting the test element");
   let element = getNode("span");
 
   info("Opening the inspector using the content context-menu");
--- a/devtools/client/styleinspector/test/browser_ruleview_media-queries.js
+++ b/devtools/client/styleinspector/test/browser_ruleview_media-queries.js
@@ -12,17 +12,17 @@ const TEST_URI = TEST_URL_ROOT + "doc_me
 add_task(function*() {
   yield addTab(TEST_URI);
   let {inspector, view} = yield openRuleView();
   yield selectNode("div", inspector);
 
   let elementStyle = view._elementStyle;
 
   let _strings = Services.strings
-    .createBundle("chrome://global/locale/devtools/styleinspector.properties");
+    .createBundle("chrome://devtools-shared/locale/styleinspector.properties");
 
   let inline = _strings.GetStringFromName("rule.sourceInline");
 
   is(elementStyle.rules.length, 3, "Should have 3 rules.");
   is(elementStyle.rules[0].title, inline, "check rule 0 title");
   is(elementStyle.rules[1].title, inline +
     ":9 @media screen and (min-width: 1px)", "check rule 1 title");
   is(elementStyle.rules[2].title, inline + ":2", "check rule 2 title");
--- a/devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-urls.js
+++ b/devtools/client/styleinspector/test/browser_styleinspector_context-menu-copy-urls.js
@@ -1,21 +1,23 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 /* Tests both Copy URL and Copy Data URL context menu items */
 
-const PROPERTIES_URL = "chrome://global/locale/devtools/styleinspector.properties";
+const PROPERTIES_URL = "chrome://devtools-shared/locale/styleinspector.properties";
 const TEST_DATA_URI = "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=";
 
-// invalid URL still needs to be reachable otherwise getImageDataUrl will timeout.
-// Reusing the properties bundle URL as a workaround
-const INVALID_IMAGE_URI = PROPERTIES_URL;
+// Invalid URL still needs to be reachable otherwise getImageDataUrl will
+// timeout.  DevTools chrome:// URLs aren't content accessible, so use some
+// random resource:// URL here.
+const INVALID_IMAGE_URI =
+  "resource://devtools/client/definitions.js";
 
 const ERROR_MESSAGE = Services.strings
   .createBundle(PROPERTIES_URL)
   .GetStringFromName("styleinspector.copyImageDataUrlError");
 
 add_task(function*() {
   const PAGE_CONTENT = [
     "<style type=\"text/css\">",
@@ -39,27 +41,27 @@ function* startTest() {
   info("Opening rule view");
   let ruleViewData = yield openRuleView();
 
   info("Test valid background image URL in rule view");
   yield testCopyUrlToClipboard(ruleViewData, "data-uri", ".valid-background", TEST_DATA_URI);
   yield testCopyUrlToClipboard(ruleViewData, "url", ".valid-background", TEST_DATA_URI);
   info("Test invalid background image URL in rue view");
   yield testCopyUrlToClipboard(ruleViewData, "data-uri", ".invalid-background", ERROR_MESSAGE);
-  yield testCopyUrlToClipboard(ruleViewData, "url", ".invalid-background", PROPERTIES_URL);
+  yield testCopyUrlToClipboard(ruleViewData, "url", ".invalid-background", INVALID_IMAGE_URI);
 
   info("Opening computed view");
   let computedViewData = yield openComputedView();
 
   info("Test valid background image URL in computed view");
   yield testCopyUrlToClipboard(computedViewData, "data-uri", ".valid-background", TEST_DATA_URI);
   yield testCopyUrlToClipboard(computedViewData, "url", ".valid-background", TEST_DATA_URI);
   info("Test invalid background image URL in computed view");
   yield testCopyUrlToClipboard(computedViewData, "data-uri", ".invalid-background", ERROR_MESSAGE);
-  yield testCopyUrlToClipboard(computedViewData, "url", ".invalid-background", PROPERTIES_URL);
+  yield testCopyUrlToClipboard(computedViewData, "url", ".invalid-background", INVALID_IMAGE_URI);
 }
 
 function* testCopyUrlToClipboard({view, inspector}, type, selector, expected) {
   info("Select node in inspector panel");
   yield selectNode(selector, inspector);
 
   info("Retrieve background-image link for selected node in current styleinspector view");
   let property = getBackgroundImageProperty(view, selector);
--- a/devtools/client/tilt/tilt-utils.js
+++ b/devtools/client/tilt/tilt-utils.js
@@ -605,10 +605,10 @@ TiltUtils.clearCache = function TU_clear
 TiltUtils.bindObjectFunc(TiltUtils.Output);
 TiltUtils.bindObjectFunc(TiltUtils.Preferences);
 TiltUtils.bindObjectFunc(TiltUtils.L10n);
 TiltUtils.bindObjectFunc(TiltUtils.DOM);
 
 // set the necessary string bundle
 XPCOMUtils.defineLazyGetter(TiltUtils.L10n, "stringBundle", function() {
   return Services.strings.createBundle(
-    "chrome://browser/locale/devtools/tilt.properties");
+    "chrome://devtools/locale/tilt.properties");
 });
--- a/devtools/client/webaudioeditor/includes.js
+++ b/devtools/client/webaudioeditor/includes.js
@@ -13,17 +13,17 @@ Cu.import("resource://devtools/client/fr
 const { loader, require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
 
 var { console } = Cu.import("resource://gre/modules/Console.jsm", {});
 var { EventTarget } = require("sdk/event/target");
 
 const { Task } = Cu.import("resource://gre/modules/Task.jsm", {});
 const { Class } = require("sdk/core/heritage");
 const EventEmitter = require("devtools/shared/event-emitter");
-const STRINGS_URI = "chrome://browser/locale/devtools/webaudioeditor.properties"
+const STRINGS_URI = "chrome://devtools/locale/webaudioeditor.properties"
 const L10N = new ViewHelpers.L10N(STRINGS_URI);
 const Telemetry = require("devtools/client/shared/telemetry");
 const telemetry = new Telemetry();
 const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 loader.lazyRequireGetter(this, "LineGraphWidget",
   "devtools/client/shared/widgets/LineGraphWidget");
 
--- a/devtools/client/webaudioeditor/webaudioeditor.xul
+++ b/devtools/client/webaudioeditor/webaudioeditor.xul
@@ -3,17 +3,17 @@
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/webaudioeditor.css" type="text/css"?>
 <!DOCTYPE window [
-  <!ENTITY % debuggerDTD SYSTEM "chrome://browser/locale/devtools/webaudioeditor.dtd">
+  <!ENTITY % debuggerDTD SYSTEM "chrome://devtools/locale/webaudioeditor.dtd">
   %debuggerDTD;
 ]>
 
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 
   <script type="application/javascript;version=1.8"
           src="chrome://devtools/content/shared/theme-switching.js"/>
 
--- a/devtools/client/webconsole/console-output.js
+++ b/devtools/client/webconsole/console-output.js
@@ -18,17 +18,17 @@ loader.lazyImporter(this, "PluralForm", 
 loader.lazyRequireGetter(this, "promise");
 loader.lazyRequireGetter(this, "TableWidget", "devtools/client/shared/widgets/TableWidget", true);
 loader.lazyRequireGetter(this, "ObjectClient", "devtools/shared/client/main", true);
 
 const Heritage = require("sdk/core/heritage");
 const URI = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
 const XHTML_NS = "http://www.w3.org/1999/xhtml";
 const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
-const STRINGS_URI = "chrome://browser/locale/devtools/webconsole.properties";
+const STRINGS_URI = "chrome://devtools/locale/webconsole.properties";
 
 const WebConsoleUtils = require("devtools/shared/webconsole/utils").Utils;
 const l10n = new WebConsoleUtils.l10n(STRINGS_URI);
 
 const MAX_STRING_GRIP_LENGTH = 36;
 const ELLIPSIS = Services.prefs.getComplexValue("intl.ellipsis", Ci.nsIPrefLocalizedString).data;
 
 // Constants for compatibility with the Web Console output implementation before
--- a/devtools/client/webconsole/hudservice.js
+++ b/devtools/client/webconsole/hudservice.js
@@ -18,17 +18,17 @@ loader.lazyGetter(this, "Telemetry", () 
 loader.lazyGetter(this, "WebConsoleFrame", () => require("devtools/client/webconsole/webconsole").WebConsoleFrame);
 loader.lazyImporter(this, "gDevTools", "resource://devtools/client/framework/gDevTools.jsm");
 loader.lazyImporter(this, "Services", "resource://gre/modules/Services.jsm");
 loader.lazyRequireGetter(this, "DebuggerServer", "devtools/server/main", true);
 loader.lazyRequireGetter(this, "DebuggerClient", "devtools/shared/client/main", true);
 loader.lazyGetter(this, "showDoorhanger", () => require("devtools/client/shared/doorhanger").showDoorhanger);
 loader.lazyRequireGetter(this, "sourceUtils", "devtools/client/shared/source-utils");
 
-const STRINGS_URI = "chrome://browser/locale/devtools/webconsole.properties";
+const STRINGS_URI = "chrome://devtools/locale/webconsole.properties";
 var l10n = new WebConsoleUtils.l10n(STRINGS_URI);
 
 const BROWSER_CONSOLE_WINDOW_FEATURES = "chrome,titlebar,toolbar,centerscreen,resizable,dialog=no";
 
 // The preference prefix for all of the Browser Console filters.
 const BROWSER_CONSOLE_FILTER_PREFS_PREFIX = "devtools.browserconsole.filter.";
 
 var gHudId = 0;
--- a/devtools/client/webconsole/test/head.js
+++ b/devtools/client/webconsole/test/head.js
@@ -31,17 +31,17 @@ const CATEGORY_SERVER = 7;
 const SEVERITY_ERROR = 0;
 const SEVERITY_WARNING = 1;
 const SEVERITY_INFO = 2;
 const SEVERITY_LOG = 3;
 
 // The indent of a console group in pixels.
 const GROUP_INDENT = 12;
 
-const WEBCONSOLE_STRINGS_URI = "chrome://browser/locale/devtools/" +
+const WEBCONSOLE_STRINGS_URI = "chrome://devtools/locale/" +
                                "webconsole.properties";
 var WCUL10n = new WebConsoleUtils.l10n(WEBCONSOLE_STRINGS_URI);
 
 DevToolsUtils.testing = true;
 
 function asyncTest(generator) {
   return () => {
     Task.spawn(generator).then(finishTest);
--- a/devtools/client/webconsole/webconsole.js
+++ b/devtools/client/webconsole/webconsole.js
@@ -25,17 +25,17 @@ loader.lazyRequireGetter(this, "Environm
 loader.lazyRequireGetter(this, "ObjectClient", "devtools/shared/client/main", true);
 loader.lazyRequireGetter(this, "system", "devtools/shared/system");
 loader.lazyRequireGetter(this, "Timers", "sdk/timers");
 loader.lazyImporter(this, "VariablesView", "resource://devtools/client/shared/widgets/VariablesView.jsm");
 loader.lazyImporter(this, "VariablesViewController", "resource://devtools/client/shared/widgets/VariablesViewController.jsm");
 loader.lazyImporter(this, "PluralForm", "resource://gre/modules/PluralForm.jsm");
 loader.lazyImporter(this, "gDevTools", "resource://devtools/client/framework/gDevTools.jsm");
 
-const STRINGS_URI = "chrome://browser/locale/devtools/webconsole.properties";
+const STRINGS_URI = "chrome://devtools/locale/webconsole.properties";
 var l10n = new WebConsoleUtils.l10n(STRINGS_URI);
 
 const XHTML_NS = "http://www.w3.org/1999/xhtml";
 
 const MIXED_CONTENT_LEARN_MORE = "https://developer.mozilla.org/docs/Security/MixedContent";
 
 const TRACKING_PROTECTION_LEARN_MORE = "https://developer.mozilla.org/Firefox/Privacy/Tracking_Protection";
 
--- a/devtools/client/webconsole/webconsole.xul
+++ b/devtools/client/webconsole/webconsole.xul
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!DOCTYPE window [
-<!ENTITY % webConsoleDTD SYSTEM "chrome://browser/locale/devtools/webConsole.dtd">
+<!ENTITY % webConsoleDTD SYSTEM "chrome://devtools/locale/webConsole.dtd">
 %webConsoleDTD;
 ]>
 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css"
                  type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/widgets.css"
                  type="text/css"?>
 <?xml-stylesheet href="chrome://devtools/skin/webconsole.css"
--- a/devtools/client/webide/content/addons.js
+++ b/devtools/client/webide/content/addons.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 var Cu = Components.utils;
 const {Services} = Cu.import("resource://gre/modules/Services.jsm");
 const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
 const {GetAvailableAddons, ForgetAddonsList} = require("devtools/client/webide/modules/addons");
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 window.addEventListener("load", function onLoad() {
   window.removeEventListener("load", onLoad);
   document.querySelector("#aboutaddons").onclick = function() {
     let browserWin = Services.wm.getMostRecentWindow("navigator:browser");
     browserWin.BrowserOpenAddonsMgr("addons://list/extension");
   }
   document.querySelector("#close").onclick = CloseUI;
--- a/devtools/client/webide/content/addons.xhtml
+++ b/devtools/client/webide/content/addons.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://webide/skin/addons.css" type="text/css"/>
--- a/devtools/client/webide/content/details.xhtml
+++ b/devtools/client/webide/content/details.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/details.css" type="text/css"/>
     <script type="application/javascript;version=1.8" src="chrome://webide/content/details.js"></script>
--- a/devtools/client/webide/content/devicepreferences.xhtml
+++ b/devtools/client/webide/content/devicepreferences.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://webide/skin/config-view.css" type="text/css"/>
--- a/devtools/client/webide/content/devicesettings.xhtml
+++ b/devtools/client/webide/content/devicesettings.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://webide/skin/config-view.css" type="text/css"/>
--- a/devtools/client/webide/content/logs.xhtml
+++ b/devtools/client/webide/content/logs.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://devtools/skin/common.css" type="text/css"/>
--- a/devtools/client/webide/content/monitor.xhtml
+++ b/devtools/client/webide/content/monitor.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
--- a/devtools/client/webide/content/newapp.xul
+++ b/devtools/client/webide/content/newapp.xul
@@ -1,16 +1,16 @@
 <?xml version="1.0"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE window [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <?xml-stylesheet href="chrome://global/skin/global.css"?>
 <?xml-stylesheet href="chrome://webide/skin/newapp.css"?>
 
 <dialog id="webide:newapp" title="&newAppWindowTitle;"
   width="600" height="400"
--- a/devtools/client/webide/content/permissionstable.xhtml
+++ b/devtools/client/webide/content/permissionstable.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://webide/skin/permissionstable.css" type="text/css"/>
--- a/devtools/client/webide/content/prefs.xhtml
+++ b/devtools/client/webide/content/prefs.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
     <script type="application/javascript;version=1.8" src="chrome://webide/content/prefs.js"></script>
--- a/devtools/client/webide/content/project-listing.xhtml
+++ b/devtools/client/webide/content/project-listing.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/panel-listing.css" type="text/css"/>
     <script type="application/javascript;version=1.8" src="chrome://webide/content/project-listing.js"></script>
--- a/devtools/client/webide/content/runtime-listing.xhtml
+++ b/devtools/client/webide/content/runtime-listing.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/panel-listing.css" type="text/css"/>
     <script type="application/javascript;version=1.8" src="chrome://webide/content/runtime-listing.js"></script>
--- a/devtools/client/webide/content/runtimedetails.js
+++ b/devtools/client/webide/content/runtimedetails.js
@@ -3,17 +3,17 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 var Cu = Components.utils;
 const {Services} = Cu.import("resource://gre/modules/Services.jsm");
 const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
 const {AppManager} = require("devtools/client/webide/modules/app-manager");
 const {Connection} = require("devtools/shared/client/connection-manager");
 const {RuntimeTypes} = require("devtools/client/webide/modules/runtimes");
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 const UNRESTRICTED_HELP_URL = "https://developer.mozilla.org/docs/Tools/WebIDE/Running_and_debugging_apps#Unrestricted_app_debugging_%28including_certified_apps_main_process_etc.%29";
 
 window.addEventListener("load", function onLoad() {
   window.removeEventListener("load", onLoad);
   document.querySelector("#close").onclick = CloseUI;
   document.querySelector("#devtools-check button").onclick = EnableCertApps;
   document.querySelector("#adb-check button").onclick = RootADB;
--- a/devtools/client/webide/content/runtimedetails.xhtml
+++ b/devtools/client/webide/content/runtimedetails.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://webide/skin/runtimedetails.css" type="text/css"/>
--- a/devtools/client/webide/content/simulator.js
+++ b/devtools/client/webide/content/simulator.js
@@ -7,17 +7,17 @@ var Cu = Components.utils;
 const { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
 const { GetDevices, GetDeviceString } = require("devtools/client/shared/devices");
 const { Services } = Cu.import("resource://gre/modules/Services.jsm");
 const { Simulators, Simulator } = require("devtools/client/webide/modules/simulators");
 const EventEmitter = require('devtools/shared/event-emitter');
 const promise = require("promise");
 const utils = require("devtools/client/webide/modules/utils");
 
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 var SimulatorEditor = {
 
   // Available Firefox OS Simulator addons (key: `addon.id`).
   _addons: {},
 
   // Available device simulation profiles (key: `device.name`).
   _devices: {},
--- a/devtools/client/webide/content/simulator.xhtml
+++ b/devtools/client/webide/content/simulator.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://webide/skin/simulator.css" type="text/css"/>
--- a/devtools/client/webide/content/webide.js
+++ b/devtools/client/webide/content/webide.js
@@ -21,17 +21,17 @@ const ProjectEditor = require("devtools/
 const {GetAvailableAddons} = require("devtools/client/webide/modules/addons");
 const {getJSON} = require("devtools/client/shared/getjson");
 const utils = require("devtools/client/webide/modules/utils");
 const Telemetry = require("devtools/client/shared/telemetry");
 const {RuntimeScanners} = require("devtools/client/webide/modules/runtimes");
 const {showDoorhanger} = require("devtools/client/shared/doorhanger");
 const {Simulators} = require("devtools/client/webide/modules/simulators");
 
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 const HTML = "http://www.w3.org/1999/xhtml";
 const HELP_URL = "https://developer.mozilla.org/docs/Tools/WebIDE/Troubleshooting";
 
 const MAX_ZOOM = 1.4;
 const MIN_ZOOM = 0.6;
 
 const MS_PER_DAY = 86400000;
--- a/devtools/client/webide/content/webide.xul
+++ b/devtools/client/webide/content/webide.xul
@@ -1,16 +1,16 @@
 <?xml version="1.0"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE window [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
 
 <?xml-stylesheet href="chrome://global/skin/global.css"?>
 <?xml-stylesheet href="chrome://devtools/skin/common.css"?>
 <?xml-stylesheet href="chrome://webide/skin/webide.css"?>
--- a/devtools/client/webide/content/wifi-auth.xhtml
+++ b/devtools/client/webide/content/wifi-auth.xhtml
@@ -1,16 +1,16 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!DOCTYPE html [
-  <!ENTITY % webideDTD SYSTEM "chrome://browser/locale/devtools/webide.dtd" >
+  <!ENTITY % webideDTD SYSTEM "chrome://devtools/locale/webide.dtd" >
   %webideDTD;
 ]>
 
 <html id="devtools:wifi-auth" xmlns="http://www.w3.org/1999/xhtml">
   <head>
     <meta charset="utf8"/>
     <link rel="stylesheet" href="chrome://webide/skin/deck.css" type="text/css"/>
     <link rel="stylesheet" href="chrome://webide/skin/wifi-auth.css" type="text/css"/>
--- a/devtools/client/webide/modules/app-manager.js
+++ b/devtools/client/webide/modules/app-manager.js
@@ -20,17 +20,17 @@ const {getPreferenceFront} = require("de
 const {getSettingsFront} = require("devtools/server/actors/settings");
 const {setTimeout} = require("sdk/timers");
 const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
 const {RuntimeScanners, RuntimeTypes} = require("devtools/client/webide/modules/runtimes");
 const {NetUtil} = Cu.import("resource://gre/modules/NetUtil.jsm", {});
 const Telemetry = require("devtools/client/shared/telemetry");
 const {ProjectBuilding} = require("./build");
 
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 var AppManager = exports.AppManager = {
 
   DEFAULT_PROJECT_ICON: "chrome://webide/skin/default-app-icon.png",
   DEFAULT_PROJECT_NAME: "--",
 
   _initialized: false,
 
--- a/devtools/client/webide/modules/app-validator.js
+++ b/devtools/client/webide/modules/app-validator.js
@@ -5,17 +5,17 @@
 
 var {Ci,Cu,CC} = require("chrome");
 const promise = require("devtools/shared/deprecated-sync-thenables");
 
 const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm", {});
 const Services = require("Services");
 const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
 var XMLHttpRequest = CC("@mozilla.org/xmlextras/xmlhttprequest;1");
-var strings = Services.strings.createBundle("chrome://browser/locale/devtools/app-manager.properties");
+var strings = Services.strings.createBundle("chrome://devtools/locale/app-manager.properties");
 
 function AppValidator({ type, location }) {
   this.type = type;
   this.location = location;
   this.errors = [];
   this.warnings = [];
 }
 
--- a/devtools/client/webide/modules/config-view.js
+++ b/devtools/client/webide/modules/config-view.js
@@ -1,17 +1,17 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {Cu} = require("chrome");
 
 const EventEmitter = require("devtools/shared/event-emitter");
 const {Services} = Cu.import("resource://gre/modules/Services.jsm");
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 var ConfigView;
 
 module.exports = ConfigView = function(window) {
   EventEmitter.decorate(this);
   this._doc = window.document;
   this._keys = [];
   return this;
--- a/devtools/client/webide/modules/project-list.js
+++ b/devtools/client/webide/modules/project-list.js
@@ -8,17 +8,17 @@ const Services = require("Services");
 const {AppProjects} = require("devtools/client/webide/modules/app-projects");
 const {AppManager} = require("devtools/client/webide/modules/app-manager");
 const promise = require("promise");
 const EventEmitter = require("devtools/shared/event-emitter");
 const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
 const utils = require("devtools/client/webide/modules/utils");
 const Telemetry = require("devtools/client/shared/telemetry");
 
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 var ProjectList;
 
 module.exports = ProjectList = function(win, parentWindow) {
   EventEmitter.decorate(this);
   this._doc = win.document;
   this._UI = parentWindow.UI;
   this._parentWindow = parentWindow;
--- a/devtools/client/webide/modules/runtime-list.js
+++ b/devtools/client/webide/modules/runtime-list.js
@@ -7,17 +7,17 @@ const {Cu} = require("chrome");
 const {Services} = Cu.import("resource://gre/modules/Services.jsm");
 const {AppManager} = require("devtools/client/webide/modules/app-manager");
 const EventEmitter = require("devtools/shared/event-emitter");
 const {RuntimeScanners, WiFiScanner} = require("devtools/client/webide/modules/runtimes");
 const {Devices} = Cu.import("resource://devtools/shared/apps/Devices.jsm");
 const {Task} = Cu.import("resource://gre/modules/Task.jsm", {});
 const utils = require("devtools/client/webide/modules/utils");
 
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 var RuntimeList;
 
 module.exports = RuntimeList = function(window, parentWindow) {
   EventEmitter.decorate(this);
   this._doc = window.document;
   this._UI = parentWindow.UI;
   this._Cmds = parentWindow.Cmds;
--- a/devtools/client/webide/modules/runtimes.js
+++ b/devtools/client/webide/modules/runtimes.js
@@ -11,17 +11,17 @@ const {Simulators} = require("devtools/c
 const discovery = require("devtools/shared/discovery/discovery");
 const EventEmitter = require("devtools/shared/event-emitter");
 const promise = require("promise");
 loader.lazyRequireGetter(this, "AuthenticationResult",
   "devtools/shared/security/auth", true);
 loader.lazyRequireGetter(this, "DevToolsUtils",
   "devtools/shared/DevToolsUtils");
 
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 /**
  * Runtime and Scanner API
  *
  * |RuntimeScanners| maintains a set of |Scanner| objects that produce one or
  * more |Runtime|s to connect to.  Add-ons can extend the set of known runtimes
  * by registering additional |Scanner|s that emit them.
  *
--- a/devtools/client/webide/modules/utils.js
+++ b/devtools/client/webide/modules/utils.js
@@ -1,16 +1,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const { Cc, Cu, Ci } = require("chrome");
 const { FileUtils } = Cu.import("resource://gre/modules/FileUtils.jsm", {});
 const { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
-const Strings = Services.strings.createBundle("chrome://browser/locale/devtools/webide.properties");
+const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 function doesFileExist (location) {
   let file = new FileUtils.File(location);
   return file.exists();
 }
 exports.doesFileExist = doesFileExist;
 
 function _getFile (location, ...pickerParams) {
--- a/devtools/client/webide/test/test_app_validator.html
+++ b/devtools/client/webide/test/test_app_validator.html
@@ -21,17 +21,17 @@
     const {require} = Cu.import("resource://devtools/shared/Loader.jsm", {});
 
     const {AppValidator} = require("devtools/client/webide/modules/app-validator");
     const {Services} = Cu.import("resource://gre/modules/Services.jsm");
     const nsFile = Components.Constructor("@mozilla.org/file/local;1",
                                            "nsILocalFile", "initWithPath");
     const cr = Cc["@mozilla.org/chrome/chrome-registry;1"]
                  .getService(Ci.nsIChromeRegistry);
-    const strings = Services.strings.createBundle("chrome://browser/locale/devtools/app-manager.properties");
+    const strings = Services.strings.createBundle("chrome://devtools/locale/app-manager.properties");
     let httpserver, origin;
 
     window.onload = function() {
       SimpleTest.waitForExplicitFinish();
 
       httpserver = new HttpServer();
       httpserver.start(-1);
       origin = "http://localhost:" + httpserver.identity.primaryPort + "/";
--- a/devtools/server/actors/csscoverage.js
+++ b/devtools/server/actors/csscoverage.js
@@ -29,17 +29,17 @@ loader.lazyGetter(this, "CssLogic", () =
 const CSSRule = Ci.nsIDOMCSSRule;
 
 const MAX_UNUSED_RULES = 10000;
 
 /**
  * Allow: let foo = l10n.lookup("csscoverageFoo");
  */
 const l10n = exports.l10n = {
-  _URI: "chrome://global/locale/devtools/csscoverage.properties",
+  _URI: "chrome://devtools-shared/locale/csscoverage.properties",
   lookup: function(msg) {
     if (this._stringBundle == null) {
       this._stringBundle = Services.strings.createBundle(this._URI);
     }
     return this._stringBundle.GetStringFromName(msg);
   }
 };
 
--- a/devtools/server/tests/mochitest/test_css-logic-media-queries.html
+++ b/devtools/server/tests/mochitest/test_css-logic-media-queries.html
@@ -36,17 +36,17 @@ Test that css-logic handles media-querie
     SimpleTest.waitForExplicitFinish();
 
     let div = document.querySelector("div");
     let cssLogic = new CssLogic();
     cssLogic.highlight(div);
     cssLogic.processMatchedSelectors();
 
     let _strings = Services.strings
-      .createBundle("chrome://global/locale/devtools/styleinspector.properties");
+      .createBundle("chrome://devtools-shared/locale/styleinspector.properties");
 
     let inline = _strings.GetStringFromName("rule.sourceInline");
 
     let source1 = inline + ":12";
     let source2 = inline + ":19 @media screen and (min-width: 1px)";
     is(cssLogic._matchedRules[0][0].source, source1,
       "rule.source gives correct output for rule 1");
     is(cssLogic._matchedRules[1][0].source, source2,
--- a/devtools/shared/gcli/commands/highlight.js
+++ b/devtools/shared/gcli/commands/highlight.js
@@ -7,17 +7,17 @@
 const l10n = require("gcli/l10n");
 require("devtools/server/actors/inspector");
 const {
   BoxModelHighlighter,
   HighlighterEnvironment
 } = require("devtools/server/actors/highlighters");
 
 XPCOMUtils.defineLazyGetter(this, "nodesSelected", function() {
-  return Services.strings.createBundle("chrome://global/locale/devtools/gclicommands.properties");
+  return Services.strings.createBundle("chrome://devtools-shared/locale/gclicommands.properties");
 });
 XPCOMUtils.defineLazyModuleGetter(this, "PluralForm", "resource://gre/modules/PluralForm.jsm");
 
 // How many maximum nodes can be highlighted in parallel
 const MAX_HIGHLIGHTED_ELEMENTS = 100;
 
 // Store the environment object used to create highlighters so it can be
 // destroyed later.
--- a/devtools/shared/gcli/source/lib/gcli/l10n.js
+++ b/devtools/shared/gcli/source/lib/gcli/l10n.js
@@ -21,17 +21,17 @@ var Ci = require('chrome').Ci;
 var Cu = require('chrome').Cu;
 
 var prefSvc = Cc['@mozilla.org/preferences-service;1']
                         .getService(Ci.nsIPrefService);
 var prefBranch = prefSvc.getBranch(null).QueryInterface(Ci.nsIPrefBranch);
 
 var Services = Cu.import('resource://gre/modules/Services.jsm', {}).Services;
 var stringBundle = Services.strings.createBundle(
-        'chrome://global/locale/devtools/gclicommands.properties');
+        'chrome://devtools-shared/locale/gclicommands.properties');
 
 /**
  * Lookup a string in the GCLI string bundle
  */
 exports.lookup = function(name) {
   try {
     return stringBundle.GetStringFromName(name);
   }
--- a/devtools/shared/gcli/source/lib/gcli/util/l10n.js
+++ b/devtools/shared/gcli/source/lib/gcli/util/l10n.js
@@ -18,17 +18,17 @@
 
 var Cu = require('chrome').Cu;
 
 var XPCOMUtils = Cu.import('resource://gre/modules/XPCOMUtils.jsm', {}).XPCOMUtils;
 var Services = Cu.import('resource://gre/modules/Services.jsm', {}).Services;
 
 var imports = {};
 XPCOMUtils.defineLazyGetter(imports, 'stringBundle', function () {
-  return Services.strings.createBundle('chrome://global/locale/devtools/gcli.properties');
+  return Services.strings.createBundle('chrome://devtools-shared/locale/gcli.properties');
 });
 
 /*
  * Not supported when embedded - we're doing things the Mozilla way not the
  * require.js way.
  */
 exports.registerStringsSource = function(modulePath) {
   throw new Error('registerStringsSource is not available in mozilla');
rename from toolkit/locales/en-US/chrome/global/devtools/csscoverage.dtd
rename to devtools/shared/locales/en-US/csscoverage.dtd
rename from toolkit/locales/en-US/chrome/global/devtools/csscoverage.properties
rename to devtools/shared/locales/en-US/csscoverage.properties
rename from toolkit/locales/en-US/chrome/global/devtools/debugger.properties
rename to devtools/shared/locales/en-US/debugger.properties
rename from toolkit/locales/en-US/chrome/global/devtools/gcli.properties
rename to devtools/shared/locales/en-US/gcli.properties
rename from toolkit/locales/en-US/chrome/global/devtools/gclicommands.properties
rename to devtools/shared/locales/en-US/gclicommands.properties
rename from toolkit/locales/en-US/chrome/global/devtools/styleinspector.properties
rename to devtools/shared/locales/en-US/styleinspector.properties
new file mode 100644
--- /dev/null
+++ b/devtools/shared/locales/jar.mn
@@ -0,0 +1,8 @@
+#filter substitution
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+@AB_CD@.jar:
+%   locale devtools-shared @AB_CD@ %locale/@AB_CD@/devtools/shared/
+    locale/@AB_CD@/devtools/shared/ (%*)
new file mode 100644
--- /dev/null
+++ b/devtools/shared/locales/moz.build
@@ -0,0 +1,7 @@
+# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=python:
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+JAR_MANIFESTS += ['jar.mn']
--- a/devtools/shared/moz.build
+++ b/devtools/shared/moz.build
@@ -10,16 +10,17 @@ DIRS += [
     'acorn',
     'apps',
     'client',
     'discovery',
     'gcli',
     'heapsnapshot',
     'jsbeautify',
     'layout',
+    'locales',
     'performance',
     'pretty-fast',
     'qrcode',
     'security',
     'sourcemap',
     'shims',
     'styleinspector',
     'touch',
--- a/devtools/shared/security/prompt.js
+++ b/devtools/shared/security/prompt.js
@@ -10,17 +10,17 @@ var { Ci } = require("chrome");
 var Services = require("Services");
 var DevToolsUtils = require("devtools/shared/DevToolsUtils");
 loader.lazyRequireGetter(this, "DebuggerSocket",
   "devtools/shared/security/socket", true);
 loader.lazyRequireGetter(this, "AuthenticationResult",
   "devtools/shared/security/auth", true);
 
 DevToolsUtils.defineLazyGetter(this, "bundle", () => {
-  const DBG_STRINGS_URI = "chrome://global/locale/devtools/debugger.properties";
+  const DBG_STRINGS_URI = "chrome://devtools-shared/locale/debugger.properties";
   return Services.strings.createBundle(DBG_STRINGS_URI);
 });
 
 var Client = exports.Client = {};
 var Server = exports.Server = {};
 
 /**
  * During OOB_CERT authentication, a notification dialog like this is used to
--- a/devtools/shared/styleinspector/css-logic.js
+++ b/devtools/shared/styleinspector/css-logic.js
@@ -842,17 +842,17 @@ CssLogic.getComputedStyle = function(nod
  * @returns A localized version of the given key.
  */
 CssLogic.l10n = function(aName)
 {
   return CssLogic._strings.GetStringFromName(aName);
 };
 
 DevToolsUtils.defineLazyGetter(CssLogic, "_strings", function() { return Services.strings
-             .createBundle("chrome://global/locale/devtools/styleinspector.properties")});
+             .createBundle("chrome://devtools-shared/locale/styleinspector.properties")});
 
 /**
  * Is the given property sheet a content stylesheet?
  *
  * @param {CSSStyleSheet} aSheet a stylesheet
  * @return {boolean} true if the given stylesheet is a content stylesheet,
  * false otherwise.
  */
--- a/devtools/shared/tests/unit/test_fetch-chrome.js
+++ b/devtools/shared/tests/unit/test_fetch-chrome.js
@@ -1,16 +1,16 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 // Tests for DevToolsUtils.fetch on chrome:// URI's.
 
-const URL_FOUND = "chrome://global/locale/devtools/debugger.properties";
+const URL_FOUND = "chrome://devtools-shared/locale/debugger.properties";
 const URL_NOT_FOUND = "chrome://this/is/not/here.js";
 
 /**
  * Test that non-existent files are handled correctly.
  */
 add_task(function* test_missing() {
   yield DevToolsUtils.fetch(URL_NOT_FOUND).then(result => {
     do_print(result);
--- a/mobile/android/locales/filter.py
+++ b/mobile/android/locales/filter.py
@@ -6,16 +6,17 @@
 reported and l10n-merged.
 This needs to stay in sync with the copy in mobile/locales.
 """
 
 def test(mod, path, entity = None):
   import re
   # ignore anything but mobile, which is our local repo checkout name
   if mod not in ("netwerk", "dom", "toolkit", "security/manager",
+                 "devtools/shared",
                  "services/sync", "mobile",
                  "mobile/android/base",  "mobile/android"):
     return "ignore"
 
   if mod not in ("mobile", "mobile/android"):
     # we only have exceptions for mobile*
     return "error"
   if mod == "mobile/android":
--- a/mobile/locales/filter.py
+++ b/mobile/locales/filter.py
@@ -6,16 +6,17 @@
 reported and l10n-merged.
 This needs to stay in sync with the copy in mobile/android/locales.
 """
 
 def test(mod, path, entity = None):
   import re
   # ignore anything but mobile, which is our local repo checkout name
   if mod not in ("netwerk", "dom", "toolkit", "security/manager",
+                 "devtools/shared",
                  "services/sync", "mobile",
                  "mobile/android/base",  "mobile/android"):
     return "ignore"
 
   if mod not in ("mobile", "mobile/android"):
     # we only have exceptions for mobile*
     return "error"
   if mod == "mobile/android":
--- a/toolkit/locales/Makefile.in
+++ b/toolkit/locales/Makefile.in
@@ -11,19 +11,20 @@ vpath crashreporter.% $(LOCALE_SRCDIR)/c
 ifdef LOCALE_MERGEDIR
 vpath crashreporter.% @srcdir@/en-US/crashreporter
 endif
 
 libs-%:
 	@$(MAKE) -C ../../netwerk/locales/ libs AB_CD=$* XPI_NAME=locale-$*
 	@$(MAKE) -C ../../dom/locales/ libs AB_CD=$* XPI_NAME=locale-$*
 	@$(MAKE) -C ../../security/manager/locales/ libs AB_CD=$* XPI_NAME=locale-$*
+	@$(MAKE) -C ../../devtools/shared/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID=$(XPI_ROOT_APPID)
 	@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$*
 
-# target to be used by multi-locale l10n builds, just add this locale 
+# target to be used by multi-locale l10n builds, just add this locale
 # like regular chrome code
 chrome-%:
 	@$(MAKE) -C $(DEPTH)/netwerk/locales/ chrome AB_CD=$*
 	@$(MAKE) -C $(DEPTH)/dom/locales/ chrome AB_CD=$*
 	@$(MAKE) -C $(DEPTH)/security/manager/locales/ chrome AB_CD=$*
 	@$(MAKE) chrome AB_CD=$*
 
 ifdef MOZ_UPDATER
--- a/toolkit/locales/jar.mn
+++ b/toolkit/locales/jar.mn
@@ -30,22 +30,16 @@
   locale/@AB_CD@/global/config.properties               (%chrome/global/config.properties)
   locale/@AB_CD@/global/console.dtd                     (%chrome/global/console.dtd)
   locale/@AB_CD@/global/console.properties              (%chrome/global/console.properties)
   locale/@AB_CD@/global/contentAreaCommands.properties  (%chrome/global/contentAreaCommands.properties)
   locale/@AB_CD@/global/customizeToolbar.dtd            (%chrome/global/customizeToolbar.dtd)
   locale/@AB_CD@/global/customizeToolbar.properties     (%chrome/global/customizeToolbar.properties)
   locale/@AB_CD@/global/datetimepicker.dtd              (%chrome/global/datetimepicker.dtd)
   locale/@AB_CD@/global/dateFormat.properties           (%chrome/global/dateFormat.properties)
-  locale/@AB_CD@/global/devtools/csscoverage.properties (%chrome/global/devtools/csscoverage.properties)
-  locale/@AB_CD@/global/devtools/csscoverage.dtd        (%chrome/global/devtools/csscoverage.dtd)
-  locale/@AB_CD@/global/devtools/debugger.properties    (%chrome/global/devtools/debugger.properties)
-  locale/@AB_CD@/global/devtools/gcli.properties        (%chrome/global/devtools/gcli.properties)
-  locale/@AB_CD@/global/devtools/gclicommands.properties (%chrome/global/devtools/gclicommands.properties)
-  locale/@AB_CD@/global/devtools/styleinspector.properties (%chrome/global/devtools/styleinspector.properties)
   locale/@AB_CD@/global/dialogOverlay.dtd               (%chrome/global/dialogOverlay.dtd)
   locale/@AB_CD@/global/editMenuOverlay.dtd             (%chrome/global/editMenuOverlay.dtd)
   locale/@AB_CD@/global/fallbackMenubar.properties      (%chrome/global/fallbackMenubar.properties)
   locale/@AB_CD@/global/filefield.properties            (%chrome/global/filefield.properties)
   locale/@AB_CD@/global/filepicker.dtd                  (%chrome/global/filepicker.dtd)
   locale/@AB_CD@/global/filepicker.properties           (%chrome/global/filepicker.properties)
   locale/@AB_CD@/global/findbar.dtd                     (%chrome/global/findbar.dtd)
   locale/@AB_CD@/global/findbar.properties              (%chrome/global/findbar.properties)
--- a/toolkit/locales/l10n.ini
+++ b/toolkit/locales/l10n.ini
@@ -5,8 +5,9 @@
 [general]
 depth = ../..
 
 [compare]
 dirs = netwerk
      dom
      toolkit
      security/manager
+     devtools/shared