bug 708015, support both native and xul l10n, r=stas, dougt
authorAxel Hecht <l10n@mozilla.com>
Thu, 22 Dec 2011 00:10:06 +0100
changeset 83256 b230ea62de175bbb19573bafdcd5cca8fc61d3e0
parent 83251 d9e4c34ca1c603d61fe986249324090c84d0b146
child 83257 a63f8ea052b6fb5f95ec621fbe4e21c219ed6e41
push id406
push usertim.taubert@gmx.de
push dateTue, 27 Dec 2011 16:06:23 +0000
treeherderfx-team@b7a134126395 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersstas, dougt
bugs708015
milestone12.0a1
bug 708015, support both native and xul l10n, r=stas, dougt
embedding/android/Makefile.in
embedding/android/locales/Makefile.in
embedding/android/locales/jar.mn
mobile/android/Makefile.in
mobile/android/base/Makefile.in
mobile/android/base/locales/l10n.ini
mobile/android/locales/Makefile.in
mobile/android/locales/en-US/chrome/overrides/appstrings.properties
mobile/android/locales/en-US/chrome/overrides/netError.dtd
mobile/android/locales/en-US/chrome/overrides/passwordmgr.properties
mobile/android/locales/en-US/chrome/region.properties
mobile/android/locales/en-US/crashreporter/crashreporter-override.ini
mobile/android/locales/en-US/installer/setup.ini
mobile/android/locales/en-US/profile/bookmarks.inc
mobile/android/locales/en-US/searchplugins/amazondotcom.xml
mobile/android/locales/en-US/searchplugins/google.xml
mobile/android/locales/en-US/searchplugins/list.txt
mobile/android/locales/en-US/searchplugins/twitter.xml
mobile/android/locales/en-US/searchplugins/wikipedia.xml
mobile/android/locales/en-US/searchplugins/yahoo.xml
mobile/android/locales/en-US/updater/updater.ini
mobile/android/locales/filter.py
mobile/android/locales/generic/profile/bookmarks.json.in
mobile/android/locales/jar.mn
mobile/android/locales/l10n.ini
mobile/locales/Makefile.in
mobile/locales/en-US/chrome/region.properties
mobile/locales/en-US/overrides/appstrings.properties
mobile/locales/en-US/overrides/netError.dtd
mobile/locales/en-US/overrides/passwordmgr.properties
mobile/locales/en-US/profile/bookmarks.inc
mobile/locales/en-US/searchplugins/amazondotcom.xml
mobile/locales/en-US/searchplugins/google.xml
mobile/locales/en-US/searchplugins/list.txt
mobile/locales/en-US/searchplugins/twitter.xml
mobile/locales/en-US/searchplugins/wikipedia.xml
mobile/locales/en-US/searchplugins/yahoo.xml
mobile/locales/filter.py
mobile/locales/generic/profile/bookmarks.json.in
mobile/locales/jar.mn
mobile/locales/l10n.ini
mobile/xul/Makefile.in
mobile/xul/locales/Makefile.in
mobile/xul/locales/en-US/chrome/overrides/appstrings.properties
mobile/xul/locales/en-US/chrome/overrides/netError.dtd
mobile/xul/locales/en-US/chrome/overrides/passwordmgr.properties
mobile/xul/locales/en-US/chrome/region.properties
mobile/xul/locales/en-US/installer/setup.ini
mobile/xul/locales/en-US/profile/bookmarks.inc
mobile/xul/locales/en-US/searchplugins/amazondotcom.xml
mobile/xul/locales/en-US/searchplugins/google.xml
mobile/xul/locales/en-US/searchplugins/list.txt
mobile/xul/locales/en-US/searchplugins/twitter.xml
mobile/xul/locales/en-US/searchplugins/wikipedia.xml
mobile/xul/locales/en-US/searchplugins/yahoo.xml
mobile/xul/locales/filter.py
mobile/xul/locales/jar.mn
mobile/xul/locales/l10n.ini
--- a/embedding/android/Makefile.in
+++ b/embedding/android/Makefile.in
@@ -128,41 +128,30 @@ RES_LAYOUT = \
   res/layout/notification_icon_text.xml \
   res/layout/launch_app_list.xml \
   res/layout/launch_app_listitem.xml \
   res/layout/videoplayer.xml \
   $(NULL)
 
 RES_VALUES = res/values/colors.xml res/values/themes.xml
 
-AB_rCD = $(shell echo $(AB_CD) | sed -e s/-/-r/)
-
 JAVA_CLASSPATH = $(ANDROID_SDK)/android.jar
 
-DEFAULT_BRANDPATH = $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales/en-US/brand.dtd
-DEFAULT_STRINGSPATH = locales/en-US/android_strings.dtd
-LOCALIZED_BRANDPATH = $(DEPTH)/dist/bin/chrome/$(AB_CD)/locale/branding/brand.dtd
-LOCALIZED_STRINGSPATH = $(DEPTH)/dist/bin/chrome/android-res/res/values-$(AB_CD)/android_strings.dtd
-
 ifdef MOZ_CRASHREPORTER
 PROCESSEDJAVAFILES += CrashReporter.java
 MOZ_ANDROID_DRAWABLES += embedding/android/resources/drawable/crash_reporter.png
 RES_LAYOUT += res/layout/crash_reporter.xml
 endif
 
 MOZ_ANDROID_DRAWABLES += embedding/android/resources/drawable/desktop_notification.png
 
 MOZ_ANDROID_DRAWABLES += $(shell if test -e $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/android-resources.mn; then cat $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/android-resources.mn | tr '\n' ' ';  fi)
 
 include $(topsrcdir)/config/rules.mk
 
-ifneq ($(AB_CD),en-US)
-LOCALIZED_STRINGS_XML = res/values-$(AB_rCD)/strings.xml
-endif
-
 # Override the Java settings with some specific android settings
 include $(topsrcdir)/config/android-common.mk
 
 # Note that we're going to set up a dependency directly between embed_android.dex and the java files
 # Instead of on the .class files, since more than one .class file might be produced per .java file
 classes.dex: $(JAVAFILES) $(PROCESSEDJAVAFILES) R.java
 	$(NSINSTALL) -D classes
 	$(JAVAC) $(JAVAC_FLAGS) -d classes  $(addprefix $(srcdir)/,$(JAVAFILES)) $(PROCESSEDJAVAFILES) R.java
@@ -195,28 +184,10 @@ RES_DRAWABLE = $(addprefix res/drawable/
 	$(NSINSTALL) $(srcdir)/resources/values/* res/values/
 
 R.java: $(MOZ_APP_ICON) $(RES_LAYOUT) $(RES_DRAWABLE) $(RES_VALUES) res/drawable/icon.png res/drawable-hdpi/icon.png res/values/strings.xml AndroidManifest.xml
 	$(AAPT) package -f -M AndroidManifest.xml -I $(ANDROID_SDK)/android.jar -S res -J . --custom-package org.mozilla.gecko
 
 gecko.ap_: AndroidManifest.xml res/drawable/icon.png res/drawable-hdpi/icon.png $(RES_LAYOUT) $(RES_DRAWABLE) $(RES_VALUES) res/values/strings.xml FORCE
 	$(AAPT) package -f -M AndroidManifest.xml -I $(ANDROID_SDK)/android.jar  -S res -F $@
 
-res/values/strings.xml: $(DEFAULT_BRANDPATH) $(DEFAULT_STRINGSPATH)
-	mkdir -p res/values
-	$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) \
-	  -DBRANDPATH="$(DEFAULT_BRANDPATH)" \
-	  -DSTRINGSPATH="$(DEFAULT_STRINGSPATH)" \
-	  $(srcdir)/strings.xml.in \
-	  > $@
-
-res/values-$(AB_rCD)/strings.xml: $(LOCALIZED_BRANDPATH) $(LOCALIZED_STRINGSPATH)
-	mkdir -p res/values-$(AB_rCD)
-	$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) \
-	  -DBRANDPATH="$(call core_abspath,$(LOCALIZED_BRANDPATH))" \
-	  -DSTRINGSPATH="$(call core_abspath,$(LOCALIZED_STRINGSPATH))" \
-	  $(srcdir)/strings.xml.in \
-	  > $@
-
-chrome:: $(LOCALIZED_STRINGS_XML)
-
 libs:: classes.dex
 	$(INSTALL) classes.dex $(FINAL_TARGET)
--- a/embedding/android/locales/Makefile.in
+++ b/embedding/android/locales/Makefile.in
@@ -38,11 +38,38 @@
 DEPTH     = ../../..
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 relativesrcdir = embedding/android/locales
 
 include $(DEPTH)/config/autoconf.mk
 
+# special case some locale codes, he and id
+# http://code.google.com/p/android/issues/detail?id=3639
+AB_rCD = $(if $(filter he, $(AB_CD)),iw,$(if $(filter id, $(AB_CD)),in,$(subst -,-r,$(AB_CD))))
+
+STRINGSPATH = $(call core_abspath,$(call MERGE_FILE,android_strings.dtd))
+ifeq (,$(XPI_NAME))
+BRANDPATH = $(call core_abspath,$(DEPTH)/dist/bin/chrome/$(AB_CD)/locale/branding/brand.dtd)
+else
+BRANDPATH = $(call core_abspath,$(DIST)/xpi-stage/$(XPI_NAME)/chrome/$(AB_CD)/locale/branding/brand.dtd)
+endif
+
 DEFINES += -DAB_CD=$(AB_CD)
 
+libs realchrome:: ../res/values/strings.xml ;
+
+chrome-%:: AB_CD=$*
+chrome-%:: 
+	@$(MAKE) ../res/values-$(AB_rCD)/strings.xml AB_CD=$*
+
+%/strings.xml: FORCE
+	$(NSINSTALL) -D $*
+	# we don't have branding yet, but we need it. Call it explicitly
+	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales realchrome
+	$(PYTHON) $(topsrcdir)/config/Preprocessor.py $(DEFINES) \
+	  -DBRANDPATH="$(BRANDPATH)" \
+	  -DSTRINGSPATH="$(STRINGSPATH)" \
+	  $(srcdir)/../strings.xml.in \
+	  > $@
+
 include $(topsrcdir)/config/rules.mk
deleted file mode 100644
--- a/embedding/android/locales/jar.mn
+++ /dev/null
@@ -1,4 +0,0 @@
-#filter substitution
-
-android-res.jar:
-  res/values-@AB_CD@/android_strings.dtd    (%android_strings.dtd)
--- a/mobile/android/Makefile.in
+++ b/mobile/android/Makefile.in
@@ -38,17 +38,17 @@
 
 DEPTH      = ../..
 topsrcdir  = @top_srcdir@
 srcdir     = @srcdir@
 VPATH      = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS = locales base chrome components modules themes/core app
+DIRS = ../locales locales base chrome components modules themes/core app
 
 ifndef LIBXUL_SDK
 PARALLEL_DIRS += $(DEPTH)/xulrunner/tools/redit
 endif
 
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/testing/testsuite-targets.mk
 
--- a/mobile/android/base/Makefile.in
+++ b/mobile/android/base/Makefile.in
@@ -450,18 +450,16 @@ RES_DRAWABLE_LAND_XHDPI_V14 = \
 
 RES_COLOR = \
   res/color/awesomebar_tab_text.xml
 
 RES_MENU = \
   res/menu/awesomebar_contextmenu.xml \
   $(NULL)
 
-AB_rCD = $(shell echo $(AB_CD) | sed -e s/-/-r/)
-
 JAVA_CLASSPATH = $(ANDROID_SDK)/android.jar
 
 ifdef MOZ_CRASHREPORTER
 PROCESSEDJAVAFILES += CrashReporter.java
 MOZ_ANDROID_DRAWABLES += mobile/android/base/resources/drawable/crash_reporter.png
 RES_LAYOUT += res/layout/crash_reporter.xml
 endif
 
deleted file mode 100644
--- a/mobile/android/base/locales/l10n.ini
+++ /dev/null
@@ -1,5 +0,0 @@
-[general]
-depth = ../../../..
-
-[compare]
-dirs = mobile/android/base
--- a/mobile/android/locales/Makefile.in
+++ b/mobile/android/locales/Makefile.in
@@ -40,65 +40,24 @@ DEPTH     = ../../..
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 relativesrcdir = mobile/android/locales
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/config.mk
 
-ifdef LOCALE_MERGEDIR
-vpath book%.inc $(LOCALE_MERGEDIR)/mobile/android/profile
-endif
-vpath book%.inc $(LOCALE_SRCDIR)/profile
-ifdef LOCALE_MERGEDIR
-vpath book%.inc @srcdir@/en-US/profile
-endif
-
-ifdef LOCALE_MERGEDIR
-vpath crashreporter%.ini $(LOCALE_MERGEDIR)/mobile/android/crashreporter
-endif
-vpath crashreporter%.ini $(LOCALE_SRCDIR)/crashreporter
-ifdef LOCALE_MERGEDIR
-vpath crashreporter%.ini @srcdir@/en-US/crashreporter
-endif
-
 SUBMAKEFILES += \
         $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/Makefile \
         $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales/Makefile \
         $(NULL)
 
-MOZ_LANGPACK_EID=langpack-$(AB_CD)@firefox-mobile.mozilla.org
 PREF_JS_EXPORTS = $(firstword $(wildcard $(LOCALE_SRCDIR)/mobile-l10n.js) \
                        @srcdir@/en-US/mobile-l10n.js )
 
-# Shouldn't := DEB_BUILD_ARCH despite the $(shell ) as deb isn't everywhere
-DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
-DATASTAGE = $(CURDIR)/data-stage
-
-SEARCH_PLUGINS = $(shell cat \
-  $(firstword $(wildcard $(LOCALE_SRCDIR)/searchplugins/list.txt) \
-       @srcdir@/en-US/searchplugins/list.txt ) )
-
-tmp-search.jar.mn::
-	printf "$(AB_CD).jar:" > $@
-	printf "$(foreach plugin,$(SEARCH_PLUGINS),$(subst __PLUGIN_SUBST__,$(plugin), \n locale/$(AB_CD)/browser/searchplugins/__PLUGIN_SUBST__.xml (__PLUGIN_SUBST__.xml)))" >>  $@
-	@echo   >> $@
-
-searchplugins: tmp-search.jar.mn
-	$(PYTHON) $(MOZILLA_DIR)/config/JarMaker.py \
-          $(QUIET) -j $(FINAL_TARGET)/chrome \
-          -s $(topsrcdir)/$(relativesrcdir)/en-US/searchplugins \
-          -s $(LOCALE_SRCDIR)/searchplugins \
-          $(MAKE_JARS_FLAGS) tmp-search.jar.mn
-
-export:: searchplugins
-
-GARBAGE += tmp-search.jar.mn
-
 include $(topsrcdir)/config/rules.mk
 
 include $(topsrcdir)/toolkit/locales/l10n.mk
 
 clobber-zip:
 	$(RM) $(STAGEDIST)/chrome/$(AB_CD).jar \
 	  $(STAGEDIST)/chrome/$(AB_CD).manifest \
 	  $(STAGEDIST)/defaults/pref/mobile-l10n.js
@@ -112,75 +71,36 @@ clobber-zip:
 # also clean up potential left-overs of multi-locale builds, notably
 # values-*/strings.xml. Those would be in the way of a single locale build,
 # which this target is for
 clobber-stage:
 	$(RM) -rf $(STAGEDIST)
 	$(RM) $(DEPTH)/mobile/android/base/res/values-*/strings.xml
 
 libs-%:
-	$(NSINSTALL) -D $(DIST)/install
-	@$(MAKE) -C $(DEPTH)/toolkit/locales libs-$* BOTH_MANIFESTS=1
-	@$(MAKE) -C $(DEPTH)/services/sync/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
-	@$(MAKE) -C $(DEPTH)/intl/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
-	@$(MAKE) -B bookmarks.json AB_CD=$*
-	@$(MAKE) -B searchplugins AB_CD=$* XPI_NAME=locale-$*
+	@$(MAKE) -C $(DEPTH)/mobile/locales libs-$* BOTH_MANIFESTS=1
 	@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/pref BOTH_MANIFESTS=1
-	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
+ifeq ($(OS_TARGET),Android)
 	@$(MAKE) -C $(DEPTH)/mobile/android/base/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
+endif
 
 # Tailored target to just add the chrome processing for multi-locale builds
 chrome-%:
-	@$(MAKE) -C $(DEPTH)/toolkit/locales chrome-$*
-	@$(MAKE) -C $(DEPTH)/services/sync/locales chrome AB_CD=$*
-	@$(MAKE) -B bookmarks.json AB_CD=$*
-	@$(MAKE) -B searchplugins AB_CD=$*
+	@$(MAKE) -C $(DEPTH)/mobile/locales chrome-$*
 	@$(MAKE) chrome AB_CD=$*
-	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$*
 ifeq ($(OS_TARGET),Android)
 	@$(MAKE) -C $(DEPTH)/mobile/android/base/locales chrome-$*
 endif
 
 # This is a generic target that will make a langpack and repack tarball
 # builds. It is called from the tinderbox scripts. Alter it with caution.
 
 installers-%: clobber-stage repackage-zip-%
 	@echo "repackaging done"
 
-NO_JA_JP_MAC_AB_CD := $(if $(filter ja-JP-mac, $(AB_CD)),ja,$(AB_CD))
-
-bookmarks.json: bookmarks.inc generic/profile/bookmarks.json.in
-	$(PYTHON) $(topsrcdir)/config/Preprocessor.py \
-	  -I $< \
-	  -DAB_CD=$(NO_JA_JP_MAC_AB_CD) \
-	  $(srcdir)/generic/profile/bookmarks.json.in \
-	  > $@
-
-export:: bookmarks.json
-
-ifdef MOZ_UPDATER
-ifdef LOCALE_MERGEDIR
-UPDATER_INI := $(firstword $(wildcard $(LOCALE_MERGEDIR)/updater/updater.ini) \
-       $(wildcard $(LOCALE_SRCDIR)/updater/updater.ini) \
-       $(srcdir)/en-US/updater/updater.ini )
-else
-UPDATER_INI := $(addprefix $(LOCALE_SRCDIR)/,updater/updater.ini)
-endif
-libs:: $(UPDATER_INI)
-	cat $< | \
-	  sed -e "s/^InfoText=/Info=/" -e "s/^TitleText=/Title=/" | \
-	  sed -e "s/%MOZ_APP_DISPLAYNAME%/$(MOZ_APP_DISPLAYNAME)/" > \
-	  $(FINAL_TARGET)/updater.ini
-endif
-
-ifdef MOZ_CRASHREPORTER
-libs:: crashreporter-override.ini
-	$(SYSINSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)
-endif
-
 # When we unpack fennec on MacOS X the platform.ini and application.ini are in slightly
 # different locations that on all other platforms
 ifeq (Darwin, $(OS_ARCH))
 ifdef LIBXUL_SDK
 GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/../Frameworks/XUL.framework/Versions/$(MOZILLA_VERSION)/platform.ini"
 else
 GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/platform.ini"
 endif
deleted file mode 100644
--- a/mobile/android/locales/en-US/crashreporter/crashreporter-override.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-# This file is in the UTF-8 encoding
-[Strings]
-# LOCALIZATION NOTE (CrashReporterProductErrorText2): %s is replaced with another string containing detailed information.
-CrashReporterProductErrorText2=Firefox has crashed. Unfortunately the crash reporter is unable to submit a crash report.\n\nDetails: %s
-CrashReporterDescriptionText2=Firefox has crashed. Your tabs will be listed on the Firefox Start page when you restart.\n\nPlease help us fix the problem!
-# LOCALIZATION NOTE (CheckSendReport): The %s is replaced with the vendor name.
-CheckSendReport=Send %s a crash report
-CheckIncludeURL=Include the page address
-Quit2=Quit Firefox
-Restart=Restart Firefox
deleted file mode 100644
--- a/mobile/android/locales/en-US/installer/setup.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-; This file is in the UTF-8 encoding
-[Strings]
-AppShortName=%MOZ_APP_DISPLAYNAME%
-AppLongName=Mozilla %MOZ_APP_DISPLAYNAME%
-WindowCaption=Mozilla %MOZ_APP_DISPLAYNAME% Setup
-InstallTo=Install %MOZ_APP_DISPLAYNAME% to
-Install=Install
-Cancel=Cancel
-InstalledSuccessfully=Mozilla %MOZ_APP_DISPLAYNAME% has been installed successfully.
-ExtractionError=Archive extraction error:
-ThereWereErrors=There were errors during installation:
-CreatingUserProfile=Creating user profile. Please wait...
-UninstallCaption=Mozilla %MOZ_APP_DISPLAYNAME% Uninstall
-FilesWillBeRemoved=All files will be removed from
-AreYouSure=Are you sure?
-InstallationNotFound=Mozilla %MOZ_APP_DISPLAYNAME% installation not found.
-UninstalledSuccessfully=Mozilla %MOZ_APP_DISPLAYNAME% has been uninstalled successfully.
deleted file mode 100644
--- a/mobile/android/locales/en-US/updater/updater.ini
+++ /dev/null
@@ -1,4 +0,0 @@
-; This file is in the UTF-8 encoding
-[Strings]
-TitleText=%MOZ_APP_DISPLAYNAME% Update
-InfoText=%MOZ_APP_DISPLAYNAME% is installing your updates and will start in a few moments…
--- a/mobile/android/locales/filter.py
+++ b/mobile/android/locales/filter.py
@@ -30,35 +30,48 @@
 # use your version of this file under the terms of the MPL, indicate your
 # decision by deleting the provisions above and replace them with the notice
 # and other provisions required by the GPL or the LGPL. If you do not delete
 # the provisions above, a recipient may use your version of this file under
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK *****
 
+"""This routine controls which localizable files and entries are
+reported and l10n-merged.
+It's common to all of mobile, mobile/android and mobile/xul, so
+those three versions need to stay in sync.
+"""
 
 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",
-                 "services/sync", "mobile/android/base",
-                 "mobile/android"):
-    return False
+                 "services/sync", "mobile",
+                 "mobile/android/base",  "mobile/android",
+                 "mobile/xul"):
+    return "ignore"
 
-  if mod != "mobile/android":
-    # we only have exceptions for mobile
-    return True
-  if not entity:
-    return not (re.match(r"searchplugins\/.+\.xml", path) or
-                re.match(r"mobile-l10n.js", path) or
-                re.match(r"defines.inc", path))
-  if path == "defines.inc":
-    return entity != "MOZ_LANGPACK_CONTRIBUTORS"
+  if mod not in ("mobile", "mobile/android", "mobile/xul"):
+    # we only have exceptions for mobile*
+    return "error"
+  if mod in ("mobile/android", "mobile/xul"):
+    if not entity:
+      if (re.match(r"mobile-l10n.js", path) or
+          re.match(r"defines.inc", path)):
+        return "ignore"
+    if path == "defines.inc":
+      if entity == "MOZ_LANGPACK_CONTRIBUTORS":
+        return "ignore"
+    return "error"
 
-  if path != "chrome/region.properties":
-    # only region.properties exceptions remain, compare all others
-    return True
-  
-  return not (re.match(r"browser\.search\.order\.[1-9]", entity) or
-              re.match(r"browser\.contentHandlers\.types\.[0-5]", entity) or
-              re.match(r"gecko\.handlerService\.schemes\.", entity) or
-              re.match(r"gecko\.handlerService\.defaultHandlersVersion", entity))
+  # we're in mod == "mobile"
+  if re.match(r"searchplugins\/.+\.xml", path):
+    return "ignore"
+  if path == "chrome/region.properties":
+    # only region.properties exceptions remain
+    if (re.match(r"browser\.search\.order\.[1-9]", entity) or
+        re.match(r"browser\.contentHandlers\.types\.[0-5]", entity) or
+        re.match(r"gecko\.handlerService\.schemes\.", entity) or
+      re.match(r"gecko\.handlerService\.defaultHandlersVersion", entity)):
+      return "ignore"
+
+  return "error"
--- a/mobile/android/locales/jar.mn
+++ b/mobile/android/locales/jar.mn
@@ -5,28 +5,17 @@
   locale/@AB_CD@/browser/about.dtd                (%chrome/about.dtd)
   locale/@AB_CD@/browser/aboutAddons.dtd          (%chrome/aboutAddons.dtd)
   locale/@AB_CD@/browser/aboutAddons.properties   (%chrome/aboutAddons.properties)
   locale/@AB_CD@/browser/aboutCertError.dtd       (%chrome/aboutCertError.dtd)
   locale/@AB_CD@/browser/browser.properties       (%chrome/browser.properties)
   locale/@AB_CD@/browser/config.dtd               (%chrome/config.dtd)
   locale/@AB_CD@/browser/config.properties        (%chrome/config.properties)
   locale/@AB_CD@/browser/localepicker.properties  (%chrome/localepicker.properties)
-  locale/@AB_CD@/browser/region.properties        (%chrome/region.properties)
   locale/@AB_CD@/browser/aboutHome.dtd            (%chrome/aboutHome.dtd)
   locale/@AB_CD@/browser/checkbox.dtd             (%chrome/checkbox.dtd)
   locale/@AB_CD@/browser/notification.dtd         (%chrome/notification.dtd)
   locale/@AB_CD@/browser/sync.dtd                 (%chrome/sync.dtd)
   locale/@AB_CD@/browser/sync.properties          (%chrome/sync.properties)
   locale/@AB_CD@/browser/prompt.dtd               (%chrome/prompt.dtd)
   locale/@AB_CD@/browser/webapps.dtd              (%chrome/webapps.dtd)
   locale/@AB_CD@/browser/feedback.dtd             (%chrome/feedback.dtd)
   locale/@AB_CD@/browser/phishing.dtd             (%chrome/phishing.dtd)
-  locale/@AB_CD@/browser/bookmarks.json           (bookmarks.json)
-  locale/@AB_CD@/browser/searchplugins/list.txt   (%searchplugins/list.txt)
-
-# Fennec-specific overrides of generic strings
-* locale/@AB_CD@/browser/netError.dtd             (%chrome/overrides/netError.dtd)
-% override chrome://global/locale/netError.dtd    chrome://browser/locale/netError.dtd
-* locale/@AB_CD@/browser/appstrings.properties    (%chrome/overrides/appstrings.properties)
-% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
-* locale/@AB_CD@/browser/passwordmgr.properties    (%chrome/overrides/passwordmgr.properties)
-% override chrome://passwordmgr/locale/passwordmgr.properties chrome://browser/locale/passwordmgr.properties
--- a/mobile/android/locales/l10n.ini
+++ b/mobile/android/locales/l10n.ini
@@ -1,11 +1,14 @@
+# Control which directories and modules are part of mobile/android.
+# Changes here should be reflected in mobile/locales/l10n.ini so
+# that the dashboard picks them up.
+
 [general]
 depth = ../../..
 all = mobile/android/locales/all-locales
 
 [compare]
-dirs = mobile/android
+dirs = mobile mobile/android mobile/android/base
 
 [includes]
 toolkit = toolkit/locales/l10n.ini
 services_sync = services/sync/locales/l10n.ini
-android_base = mobile/android/base/locales/l10n.ini
copy from mobile/android/locales/Makefile.in
copy to mobile/locales/Makefile.in
--- a/mobile/android/locales/Makefile.in
+++ b/mobile/locales/Makefile.in
@@ -31,53 +31,41 @@
 # use your version of this file under the terms of the MPL, indicate your
 # decision by deleting the provisions above and replace them with the notice
 # and other provisions required by the GPL or the LGPL. If you do not delete
 # the provisions above, a recipient may use your version of this file under
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK *****
 
-DEPTH     = ../../..
+DEPTH     = ../..
 topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
-relativesrcdir = mobile/android/locales
+relativesrcdir = mobile/locales
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/config.mk
 
 ifdef LOCALE_MERGEDIR
-vpath book%.inc $(LOCALE_MERGEDIR)/mobile/android/profile
+vpath book%.inc $(LOCALE_MERGEDIR)/mobile/profile
 endif
 vpath book%.inc $(LOCALE_SRCDIR)/profile
 ifdef LOCALE_MERGEDIR
 vpath book%.inc @srcdir@/en-US/profile
 endif
 
-ifdef LOCALE_MERGEDIR
-vpath crashreporter%.ini $(LOCALE_MERGEDIR)/mobile/android/crashreporter
-endif
-vpath crashreporter%.ini $(LOCALE_SRCDIR)/crashreporter
-ifdef LOCALE_MERGEDIR
-vpath crashreporter%.ini @srcdir@/en-US/crashreporter
-endif
-
 SUBMAKEFILES += \
         $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/Makefile \
         $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales/Makefile \
         $(NULL)
 
-MOZ_LANGPACK_EID=langpack-$(AB_CD)@firefox-mobile.mozilla.org
-PREF_JS_EXPORTS = $(firstword $(wildcard $(LOCALE_SRCDIR)/mobile-l10n.js) \
-                       @srcdir@/en-US/mobile-l10n.js )
-
-# Shouldn't := DEB_BUILD_ARCH despite the $(shell ) as deb isn't everywhere
-DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
-DATASTAGE = $(CURDIR)/data-stage
+DEFINES += \
+	-DAB_CD=$(AB_CD) \
+	$(NULL)
 
 SEARCH_PLUGINS = $(shell cat \
   $(firstword $(wildcard $(LOCALE_SRCDIR)/searchplugins/list.txt) \
        @srcdir@/en-US/searchplugins/list.txt ) )
 
 tmp-search.jar.mn::
 	printf "$(AB_CD).jar:" > $@
 	printf "$(foreach plugin,$(SEARCH_PLUGINS),$(subst __PLUGIN_SUBST__,$(plugin), \n locale/$(AB_CD)/browser/searchplugins/__PLUGIN_SUBST__.xml (__PLUGIN_SUBST__.xml)))" >>  $@
@@ -91,120 +79,39 @@ searchplugins: tmp-search.jar.mn
           $(MAKE_JARS_FLAGS) tmp-search.jar.mn
 
 export:: searchplugins
 
 GARBAGE += tmp-search.jar.mn
 
 include $(topsrcdir)/config/rules.mk
 
-include $(topsrcdir)/toolkit/locales/l10n.mk
-
-clobber-zip:
-	$(RM) $(STAGEDIST)/chrome/$(AB_CD).jar \
-	  $(STAGEDIST)/chrome/$(AB_CD).manifest \
-	  $(STAGEDIST)/defaults/pref/mobile-l10n.js
-	$(RM) -r $(STAGEDIST)/dictionaries \
-	  $(STAGEDIST)/hyphenation \
-	  $(STAGEDIST)/defaults/profile \
-	  $(STAGEDIST)/chrome/$(AB_CD)
-
-# need to kill stage for repacks for now due to the library moves
-# in PACKAGE and UNPACKAGE
-# also clean up potential left-overs of multi-locale builds, notably
-# values-*/strings.xml. Those would be in the way of a single locale build,
-# which this target is for
-clobber-stage:
-	$(RM) -rf $(STAGEDIST)
-	$(RM) $(DEPTH)/mobile/android/base/res/values-*/strings.xml
-
 libs-%:
 	$(NSINSTALL) -D $(DIST)/install
 	@$(MAKE) -C $(DEPTH)/toolkit/locales libs-$* BOTH_MANIFESTS=1
 	@$(MAKE) -C $(DEPTH)/services/sync/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
 	@$(MAKE) -C $(DEPTH)/intl/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
 	@$(MAKE) -B bookmarks.json AB_CD=$*
 	@$(MAKE) -B searchplugins AB_CD=$* XPI_NAME=locale-$*
 	@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/pref BOTH_MANIFESTS=1
 	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
-	@$(MAKE) -C $(DEPTH)/mobile/android/base/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
 
 # Tailored target to just add the chrome processing for multi-locale builds
 chrome-%:
 	@$(MAKE) -C $(DEPTH)/toolkit/locales chrome-$*
 	@$(MAKE) -C $(DEPTH)/services/sync/locales chrome AB_CD=$*
 	@$(MAKE) -B bookmarks.json AB_CD=$*
 	@$(MAKE) -B searchplugins AB_CD=$*
 	@$(MAKE) chrome AB_CD=$*
 	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$*
-ifeq ($(OS_TARGET),Android)
-	@$(MAKE) -C $(DEPTH)/mobile/android/base/locales chrome-$*
-endif
-
-# This is a generic target that will make a langpack and repack tarball
-# builds. It is called from the tinderbox scripts. Alter it with caution.
-
-installers-%: clobber-stage repackage-zip-%
-	@echo "repackaging done"
 
 NO_JA_JP_MAC_AB_CD := $(if $(filter ja-JP-mac, $(AB_CD)),ja,$(AB_CD))
 
 bookmarks.json: bookmarks.inc generic/profile/bookmarks.json.in
 	$(PYTHON) $(topsrcdir)/config/Preprocessor.py \
 	  -I $< \
 	  -DAB_CD=$(NO_JA_JP_MAC_AB_CD) \
 	  $(srcdir)/generic/profile/bookmarks.json.in \
 	  > $@
 
 export:: bookmarks.json
 
-ifdef MOZ_UPDATER
-ifdef LOCALE_MERGEDIR
-UPDATER_INI := $(firstword $(wildcard $(LOCALE_MERGEDIR)/updater/updater.ini) \
-       $(wildcard $(LOCALE_SRCDIR)/updater/updater.ini) \
-       $(srcdir)/en-US/updater/updater.ini )
-else
-UPDATER_INI := $(addprefix $(LOCALE_SRCDIR)/,updater/updater.ini)
-endif
-libs:: $(UPDATER_INI)
-	cat $< | \
-	  sed -e "s/^InfoText=/Info=/" -e "s/^TitleText=/Title=/" | \
-	  sed -e "s/%MOZ_APP_DISPLAYNAME%/$(MOZ_APP_DISPLAYNAME)/" > \
-	  $(FINAL_TARGET)/updater.ini
-endif
-
-ifdef MOZ_CRASHREPORTER
-libs:: crashreporter-override.ini
-	$(SYSINSTALL) $(IFLAGS1) $^ $(FINAL_TARGET)
-endif
-
-# When we unpack fennec on MacOS X the platform.ini and application.ini are in slightly
-# different locations that on all other platforms
-ifeq (Darwin, $(OS_ARCH))
-ifdef LIBXUL_SDK
-GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/../Frameworks/XUL.framework/Versions/$(MOZILLA_VERSION)/platform.ini"
-else
-GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/platform.ini"
-endif
-FENNEC_APPLICATION_INI_PATH="$(STAGEDIST)/application.ini"
-else
-ifdef LIBXUL_SDK
-GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/xulrunner/platform.ini"
-else
-GECKO_PLATFORM_INI_PATH="$(STAGEDIST)/platform.ini"
-endif
-FENNEC_APPLICATION_INI_PATH="$(STAGEDIST)/application.ini"
-endif
-
-ident:
-	@printf "gecko_revision "
-	@$(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(GECKO_PLATFORM_INI_PATH) Build SourceStamp
-	@printf "fennec_revision "
-	@$(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(FENNEC_APPLICATION_INI_PATH) App SourceStamp
-	@printf "buildid "
-	@$(PYTHON) $(topsrcdir)/config/printconfigsetting.py $(FENNEC_APPLICATION_INI_PATH) App BuildID
-
-merge-%:
-ifdef LOCALE_MERGEDIR
-	$(RM) -rf $(LOCALE_MERGEDIR)
-	MACOSX_DEPLOYMENT_TARGET= compare-locales -m $(LOCALE_MERGEDIR) $(srcdir)/l10n.ini $(L10NBASEDIR) $*
-endif
-	@echo
+GARBAGE += bookmarks.json
rename from mobile/android/locales/en-US/chrome/region.properties
rename to mobile/locales/en-US/chrome/region.properties
rename from mobile/android/locales/en-US/chrome/overrides/appstrings.properties
rename to mobile/locales/en-US/overrides/appstrings.properties
rename from mobile/android/locales/en-US/chrome/overrides/netError.dtd
rename to mobile/locales/en-US/overrides/netError.dtd
rename from mobile/android/locales/en-US/chrome/overrides/passwordmgr.properties
rename to mobile/locales/en-US/overrides/passwordmgr.properties
rename from mobile/android/locales/en-US/profile/bookmarks.inc
rename to mobile/locales/en-US/profile/bookmarks.inc
rename from mobile/android/locales/en-US/searchplugins/amazondotcom.xml
rename to mobile/locales/en-US/searchplugins/amazondotcom.xml
rename from mobile/android/locales/en-US/searchplugins/google.xml
rename to mobile/locales/en-US/searchplugins/google.xml
rename from mobile/android/locales/en-US/searchplugins/list.txt
rename to mobile/locales/en-US/searchplugins/list.txt
rename from mobile/android/locales/en-US/searchplugins/twitter.xml
rename to mobile/locales/en-US/searchplugins/twitter.xml
rename from mobile/android/locales/en-US/searchplugins/wikipedia.xml
rename to mobile/locales/en-US/searchplugins/wikipedia.xml
rename from mobile/android/locales/en-US/searchplugins/yahoo.xml
rename to mobile/locales/en-US/searchplugins/yahoo.xml
copy from mobile/android/locales/filter.py
copy to mobile/locales/filter.py
--- a/mobile/android/locales/filter.py
+++ b/mobile/locales/filter.py
@@ -30,35 +30,48 @@
 # use your version of this file under the terms of the MPL, indicate your
 # decision by deleting the provisions above and replace them with the notice
 # and other provisions required by the GPL or the LGPL. If you do not delete
 # the provisions above, a recipient may use your version of this file under
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK *****
 
+"""This routine controls which localizable files and entries are
+reported and l10n-merged.
+It's common to all of mobile, mobile/android and mobile/xul, so
+those three versions need to stay in sync.
+"""
 
 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",
-                 "services/sync", "mobile/android/base",
-                 "mobile/android"):
-    return False
+                 "services/sync", "mobile",
+                 "mobile/android/base",  "mobile/android",
+                 "mobile/xul"):
+    return "ignore"
 
-  if mod != "mobile/android":
-    # we only have exceptions for mobile
-    return True
-  if not entity:
-    return not (re.match(r"searchplugins\/.+\.xml", path) or
-                re.match(r"mobile-l10n.js", path) or
-                re.match(r"defines.inc", path))
-  if path == "defines.inc":
-    return entity != "MOZ_LANGPACK_CONTRIBUTORS"
+  if mod not in ("mobile", "mobile/android", "mobile/xul"):
+    # we only have exceptions for mobile*
+    return "error"
+  if mod in ("mobile/android", "mobile/xul"):
+    if not entity:
+      if (re.match(r"mobile-l10n.js", path) or
+          re.match(r"defines.inc", path)):
+        return "ignore"
+    if path == "defines.inc":
+      if entity == "MOZ_LANGPACK_CONTRIBUTORS":
+        return "ignore"
+    return "error"
 
-  if path != "chrome/region.properties":
-    # only region.properties exceptions remain, compare all others
-    return True
-  
-  return not (re.match(r"browser\.search\.order\.[1-9]", entity) or
-              re.match(r"browser\.contentHandlers\.types\.[0-5]", entity) or
-              re.match(r"gecko\.handlerService\.schemes\.", entity) or
-              re.match(r"gecko\.handlerService\.defaultHandlersVersion", entity))
+  # we're in mod == "mobile"
+  if re.match(r"searchplugins\/.+\.xml", path):
+    return "ignore"
+  if path == "chrome/region.properties":
+    # only region.properties exceptions remain
+    if (re.match(r"browser\.search\.order\.[1-9]", entity) or
+        re.match(r"browser\.contentHandlers\.types\.[0-5]", entity) or
+        re.match(r"gecko\.handlerService\.schemes\.", entity) or
+      re.match(r"gecko\.handlerService\.defaultHandlersVersion", entity)):
+      return "ignore"
+
+  return "error"
rename from mobile/android/locales/generic/profile/bookmarks.json.in
rename to mobile/locales/generic/profile/bookmarks.json.in
copy from mobile/android/locales/jar.mn
copy to mobile/locales/jar.mn
--- a/mobile/android/locales/jar.mn
+++ b/mobile/locales/jar.mn
@@ -1,32 +1,15 @@
 #filter substitution
 
 @AB_CD@.jar:
 % locale browser @AB_CD@ %locale/@AB_CD@/browser/
-  locale/@AB_CD@/browser/about.dtd                (%chrome/about.dtd)
-  locale/@AB_CD@/browser/aboutAddons.dtd          (%chrome/aboutAddons.dtd)
-  locale/@AB_CD@/browser/aboutAddons.properties   (%chrome/aboutAddons.properties)
-  locale/@AB_CD@/browser/aboutCertError.dtd       (%chrome/aboutCertError.dtd)
-  locale/@AB_CD@/browser/browser.properties       (%chrome/browser.properties)
-  locale/@AB_CD@/browser/config.dtd               (%chrome/config.dtd)
-  locale/@AB_CD@/browser/config.properties        (%chrome/config.properties)
-  locale/@AB_CD@/browser/localepicker.properties  (%chrome/localepicker.properties)
   locale/@AB_CD@/browser/region.properties        (%chrome/region.properties)
-  locale/@AB_CD@/browser/aboutHome.dtd            (%chrome/aboutHome.dtd)
-  locale/@AB_CD@/browser/checkbox.dtd             (%chrome/checkbox.dtd)
-  locale/@AB_CD@/browser/notification.dtd         (%chrome/notification.dtd)
-  locale/@AB_CD@/browser/sync.dtd                 (%chrome/sync.dtd)
-  locale/@AB_CD@/browser/sync.properties          (%chrome/sync.properties)
-  locale/@AB_CD@/browser/prompt.dtd               (%chrome/prompt.dtd)
-  locale/@AB_CD@/browser/webapps.dtd              (%chrome/webapps.dtd)
-  locale/@AB_CD@/browser/feedback.dtd             (%chrome/feedback.dtd)
-  locale/@AB_CD@/browser/phishing.dtd             (%chrome/phishing.dtd)
   locale/@AB_CD@/browser/bookmarks.json           (bookmarks.json)
   locale/@AB_CD@/browser/searchplugins/list.txt   (%searchplugins/list.txt)
 
 # Fennec-specific overrides of generic strings
-* locale/@AB_CD@/browser/netError.dtd             (%chrome/overrides/netError.dtd)
+* locale/@AB_CD@/browser/netError.dtd             (%overrides/netError.dtd)
 % override chrome://global/locale/netError.dtd    chrome://browser/locale/netError.dtd
-* locale/@AB_CD@/browser/appstrings.properties    (%chrome/overrides/appstrings.properties)
+* locale/@AB_CD@/browser/appstrings.properties    (%overrides/appstrings.properties)
 % override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
-* locale/@AB_CD@/browser/passwordmgr.properties    (%chrome/overrides/passwordmgr.properties)
+* locale/@AB_CD@/browser/passwordmgr.properties    (%overrides/passwordmgr.properties)
 % override chrome://passwordmgr/locale/passwordmgr.properties chrome://browser/locale/passwordmgr.properties
copy from mobile/android/locales/l10n.ini
copy to mobile/locales/l10n.ini
--- a/mobile/android/locales/l10n.ini
+++ b/mobile/locales/l10n.ini
@@ -1,11 +1,16 @@
+# Control which directories and modules are part of mobile
+# on the l10n dashboard.
+# Changes here should be triggered by changes in either
+# mobile/android/locales/l10n.ini or mobile/xul/locales/l10n.ini.
+
 [general]
-depth = ../../..
+depth = ../..
 all = mobile/android/locales/all-locales
 
 [compare]
-dirs = mobile/android
+dirs = mobile mobile/android mobile/android/base mobile/xul
 
 [includes]
 toolkit = toolkit/locales/l10n.ini
 services_sync = services/sync/locales/l10n.ini
-android_base = mobile/android/base/locales/l10n.ini
+embedding_android = embedding/android/locales/l10n.ini
--- a/mobile/xul/Makefile.in
+++ b/mobile/xul/Makefile.in
@@ -38,17 +38,17 @@
 
 DEPTH      = ../..
 topsrcdir  = @top_srcdir@
 srcdir     = @srcdir@
 VPATH      = @srcdir@
 
 include $(DEPTH)/config/autoconf.mk
 
-DIRS = chrome locales components modules themes/core app
+DIRS = ../locales chrome locales components modules themes/core app
 
 ifndef LIBXUL_SDK
 PARALLEL_DIRS += $(DEPTH)/xulrunner/tools/redit
 endif
 
 include $(topsrcdir)/config/rules.mk
 include $(topsrcdir)/testing/testsuite-targets.mk
 
--- a/mobile/xul/locales/Makefile.in
+++ b/mobile/xul/locales/Makefile.in
@@ -41,24 +41,16 @@ topsrcdir = @top_srcdir@
 srcdir    = @srcdir@
 VPATH     = @srcdir@
 relativesrcdir = mobile/xul/locales
 
 include $(DEPTH)/config/autoconf.mk
 include $(topsrcdir)/config/config.mk
 
 ifdef LOCALE_MERGEDIR
-vpath book%.inc $(LOCALE_MERGEDIR)/mobile/profile
-endif
-vpath book%.inc $(LOCALE_SRCDIR)/profile
-ifdef LOCALE_MERGEDIR
-vpath book%.inc @srcdir@/en-US/profile
-endif
-
-ifdef LOCALE_MERGEDIR
 vpath crashreporter%.ini $(LOCALE_MERGEDIR)/mobile/crashreporter
 endif
 vpath crashreporter%.ini $(LOCALE_SRCDIR)/crashreporter
 ifdef LOCALE_MERGEDIR
 vpath crashreporter%.ini @srcdir@/en-US/crashreporter
 endif
 
 SUBMAKEFILES += \
@@ -69,88 +61,47 @@ SUBMAKEFILES += \
 MOZ_LANGPACK_EID=langpack-$(AB_CD)@firefox-mobile.mozilla.org
 PREF_JS_EXPORTS = $(firstword $(wildcard $(LOCALE_SRCDIR)/mobile-l10n.js) \
                        @srcdir@/en-US/mobile-l10n.js )
 
 # Shouldn't := DEB_BUILD_ARCH despite the $(shell ) as deb isn't everywhere
 DEB_BUILD_ARCH = $(shell dpkg-architecture -qDEB_BUILD_ARCH)
 DATASTAGE = $(CURDIR)/data-stage
 
-SEARCH_PLUGINS = $(shell cat \
-  $(firstword $(wildcard $(LOCALE_SRCDIR)/searchplugins/list.txt) \
-       @srcdir@/en-US/searchplugins/list.txt ) )
-
-tmp-search.jar.mn::
-	printf "$(AB_CD).jar:" > $@
-	printf "$(foreach plugin,$(SEARCH_PLUGINS),$(subst __PLUGIN_SUBST__,$(plugin), \n locale/$(AB_CD)/browser/searchplugins/__PLUGIN_SUBST__.xml (__PLUGIN_SUBST__.xml)))" >>  $@
-	@echo   >> $@
-
-searchplugins: tmp-search.jar.mn
-	$(PYTHON) $(MOZILLA_DIR)/config/JarMaker.py \
-          $(QUIET) -j $(FINAL_TARGET)/chrome \
-          -s $(topsrcdir)/$(relativesrcdir)/en-US/searchplugins \
-          -s $(LOCALE_SRCDIR)/searchplugins \
-          $(MAKE_JARS_FLAGS) tmp-search.jar.mn
-
-export:: searchplugins
-
-GARBAGE += tmp-search.jar.mn
-
 include $(topsrcdir)/config/rules.mk
 
 include $(topsrcdir)/toolkit/locales/l10n.mk
 
 clobber-zip:
 	$(RM) $(STAGEDIST)/chrome/$(AB_CD).jar \
 	  $(STAGEDIST)/chrome/$(AB_CD).manifest \
 	  $(STAGEDIST)/defaults/preferences/mobile-l10n.js
 	$(RM) -r $(STAGEDIST)/dictionaries \
 	  $(STAGEDIST)/hyphenation \
 	  $(STAGEDIST)/defaults/profile \
 	  $(STAGEDIST)/chrome/$(AB_CD)
 
 libs-%:
-	$(NSINSTALL) -D $(DIST)/install
-	@$(MAKE) -C ../../toolkit/locales libs-$* BOTH_MANIFESTS=1
-	@$(MAKE) -C ../../services/sync/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
-	@$(MAKE) -C ../../intl/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
-	@$(MAKE) -B bookmarks.json AB_CD=$*
-	@$(MAKE) -B searchplugins AB_CD=$* XPI_NAME=locale-$*
+	@$(MAKE) -C $(DEPTH)/mobile/locales libs-$* BOTH_MANIFESTS=1
 	@$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/preferences BOTH_MANIFESTS=1
-	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales AB_CD=$* XPI_NAME=locale-$* BOTH_MANIFESTS=1
 
 # Tailored target to just add the chrome processing for multi-locale builds
 chrome-%:
-	@$(MAKE) -C $(DEPTH)/toolkit/locales chrome-$*
-	@$(MAKE) -C $(DEPTH)/services/sync/locales chrome AB_CD=$*
-	@$(MAKE) -B bookmarks.json AB_CD=$*
-	@$(MAKE) -B searchplugins AB_CD=$*
+	@$(MAKE) -C $(DEPTH)/mobile/locales chrome-$*
 	@$(MAKE) chrome AB_CD=$*
-	@$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$*
 ifeq ($(OS_TARGET),Android)
 	@$(MAKE) -C $(DEPTH)/embedding/android chrome AB_CD=$*
 endif
 
 # This is a generic target that will make a langpack and repack tarball
 # builds. It is called from the tinderbox scripts. Alter it with caution.
 
 installers-%: clobber-% langpack-% repackage-zip-%
 	@echo "repackaging done"
 
-NO_JA_JP_MAC_AB_CD := $(if $(filter ja-JP-mac, $(AB_CD)),ja,$(AB_CD))
-
-bookmarks.json: bookmarks.inc generic/profile/bookmarks.json.in
-	$(PYTHON) $(topsrcdir)/config/Preprocessor.py \
-	  -I $< \
-	  -DAB_CD=$(NO_JA_JP_MAC_AB_CD) \
-	  $(srcdir)/generic/profile/bookmarks.json.in \
-	  > $@
-
-export:: bookmarks.json
-
 ifdef MOZ_UPDATER
 ifdef LOCALE_MERGEDIR
 UPDATER_INI := $(firstword $(wildcard $(LOCALE_MERGEDIR)/updater/updater.ini) \
        $(wildcard $(LOCALE_SRCDIR)/updater/updater.ini) \
        $(srcdir)/en-US/updater/updater.ini )
 else
 UPDATER_INI := $(addprefix $(LOCALE_SRCDIR)/,updater/updater.ini)
 endif
deleted file mode 100644
--- a/mobile/xul/locales/en-US/chrome/overrides/appstrings.properties
+++ /dev/null
@@ -1,68 +0,0 @@
-# ***** BEGIN LICENSE BLOCK *****
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Original Code is mozilla.org code.
-#
-# The Initial Developer of the Original Code is
-# Netscape Communications Corporation.
-# Portions created by the Initial Developer are Copyright (C) 1998
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either of the GNU General Public License Version 2 or later (the "GPL"),
-# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-# in which case the provisions of the GPL or the LGPL are applicable instead
-# of those above. If you wish to allow use of your version of this file only
-# under the terms of either the GPL or the LGPL, and not to allow others to
-# use your version of this file under the terms of the MPL, indicate your
-# decision by deleting the provisions above and replace them with the notice
-# and other provisions required by the GPL or the LGPL. If you do not delete
-# the provisions above, a recipient may use your version of this file under
-# the terms of any one of the MPL, the GPL or the LGPL.
-#
-# ***** END LICENSE BLOCK *****
-
-malformedURI=The URL is not valid and cannot be loaded.
-fileNotFound=Firefox can't find the file at %S.
-dnsNotFound=Firefox can't find the server at %S.
-protocolNotFound=Firefox doesn't know how to open this address, because the protocol (%S) isn't associated with any program.
-connectionFailure=Firefox can't establish a connection to the server at %S.
-netInterrupt=The connection to %S was interrupted while the page was loading.
-netTimeout=The server at %S is taking too long to respond.
-redirectLoop=Firefox has detected that the server is redirecting the request for this address in a way that will never complete.
-## LOCALIZATION NOTE (confirmRepostPrompt): In this item, don't translate "%S"
-confirmRepostPrompt=To display this page, %S must send information that will repeat any action (such as a search or order confirmation) that was performed earlier.
-resendButton.label=Resend
-unknownSocketType=Firefox doesn't know how to communicate with the server.
-netReset=The connection to the server was reset while the page was loading.
-notCached=This document is no longer available.
-netOffline=Firefox is currently in offline mode and can't browse the Web.
-isprinting=The document cannot change while Printing or in Print Preview.
-deniedPortAccess=This address uses a network port which is normally used for purposes other than Web browsing. Firefox has canceled the request for your protection.
-proxyResolveFailure=Firefox is configured to use a proxy server that can't be found.
-proxyConnectFailure=Firefox is configured to use a proxy server that is refusing connections.
-contentEncodingError=The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.
-unsafeContentType=The page you are trying to view cannot be shown because it is contained in a file type that may not be safe to open. Please contact the website owners to inform them of this problem.
-externalProtocolTitle=External Protocol Request
-externalProtocolPrompt=An external application must be launched to handle %1$S: links.\n\n\nRequested link:\n\n%2$S\n\nApplication: %3$S\n\n\nIf you were not expecting this request it may be an attempt to exploit a weakness in that other program. Cancel this request unless you are sure it is not malicious.\n
-#LOCALIZATION NOTE (externalProtocolUnknown): The following string is shown if the application name can't be determined
-externalProtocolUnknown=<Unknown>
-externalProtocolChkMsg=Remember my choice for all links of this type.
-externalProtocolLaunchBtn=Launch application
-malwareBlocked=The site at %S has been reported as an attack site and has been blocked based on your security preferences.
-phishingBlocked=The website at %S has been reported as a web forgery designed to trick users into sharing personal or financial information.
-cspFrameAncestorBlocked=This page has a content security policy that prevents it from being embedded in this way.
-corruptedContentError=The page you are trying to view cannot be shown because an error in the data transmission was detected.
-remoteXUL=This page uses an unsupported technology that is no longer available by default in Firefox.
deleted file mode 100644
--- a/mobile/xul/locales/en-US/chrome/overrides/netError.dtd
+++ /dev/null
@@ -1,172 +0,0 @@
-<!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
-%brandDTD;
-
-<!ENTITY loadError.label "Problem loading page">
-<!ENTITY retry.label "Try Again">
-
-<!-- Specific error messages -->
-
-<!ENTITY connectionFailure.title "Unable to connect">
-<!ENTITY connectionFailure.longDesc "&sharedLongDesc2;">
-
-<!ENTITY deniedPortAccess.title "This address is restricted">
-<!ENTITY deniedPortAccess.longDesc "">
-
-<!ENTITY dnsNotFound.title "Server not found">
-<!ENTITY dnsNotFound.longDesc2 "
-<ul>
-  <li>Check the address for typing errors such as
-    <strong>ww</strong>.example.com instead of
-    <strong>www</strong>.example.com</li>
-  <li>If you are unable to load any pages, check your device's data or Wi-Fi connection.</li>
-</ul>
-">
-
-<!ENTITY fileNotFound.title "File not found">
-<!ENTITY fileNotFound.longDesc "
-<ul>
-  <li>Check the file name for capitalization or other typing errors.</li>
-  <li>Check to see if the file was moved, renamed or deleted.</li>
-</ul>
-">
-
-
-<!ENTITY generic.title "Oops.">
-<!ENTITY generic.longDesc "
-<p>&brandShortName; can't load this page for some reason.</p>
-">
-
-<!ENTITY malformedURI.title "The address isn't valid">
-<!ENTITY malformedURI.longDesc "
-<ul>
-  <li>Web addresses are usually written like
-    <strong>http://www.example.com/</strong></li>
-  <li>Make sure that you're using forward slashes (i.e.
-    <strong>/</strong>).</li>
-</ul>
-">
-
-<!ENTITY netInterrupt.title "The connection was interrupted">
-<!ENTITY netInterrupt.longDesc "&sharedLongDesc2;">
-
-<!ENTITY notCached.title "Document Expired">
-<!ENTITY notCached.longDesc "<p>The requested document is not available in &brandShortName;'s cache.</p><ul><li>As a security precaution, &brandShortName; does not automatically re-request sensitive documents.</li><li>Click Try Again to re-request the document from the website.</li></ul>">
-
-<!ENTITY netOffline.title "Offline mode">
-<!ENTITY netOffline.longDesc2 "
-<ul>
-  <li>Try again. &brandShortName; will attempt to open a connection and reload the page.</li>
-</ul>
-">
-
-<!ENTITY contentEncodingError.title "Content Encoding Error">
-<!ENTITY contentEncodingError.longDesc "
-<ul>
-  <li>Please contact the website owners to inform them of this problem.</li>
-</ul>
-">
-
-<!ENTITY unsafeContentType.title "Unsafe File Type">
-<!ENTITY unsafeContentType.longDesc "
-<ul>
-  <li>Please contact the website owners to inform them of this problem.</li>
-</ul>
-">
-
-<!ENTITY netReset.title "The connection was reset">
-<!ENTITY netReset.longDesc "&sharedLongDesc2;">
-
-<!ENTITY netTimeout.title "The connection has timed out">
-<!ENTITY netTimeout.longDesc "&sharedLongDesc2;">
-
-<!ENTITY protocolNotFound.title "The address wasn't understood">
-<!ENTITY protocolNotFound.longDesc "
-<ul>
-  <li>You might need to install other software to open this address.</li>
-</ul>
-">
-
-<!ENTITY proxyConnectFailure.title "The proxy server is refusing connections">
-<!ENTITY proxyConnectFailure.longDesc "
-<ul>
-  <li>Check the proxy settings to make sure that they are correct.</li>
-  <li>Contact your network administrator to make sure the proxy server is
-    working.</li>
-</ul>
-">
-
-<!ENTITY proxyResolveFailure.title "Unable to find the proxy server">
-<!ENTITY proxyResolveFailure.longDesc2 "
-<ul>
-  <li>Check the proxy settings to make sure that they are correct.</li>
-  <li>Check to make sure your device has a working data or Wi-Fi connection.</li>
-</ul>
-">
-
-<!ENTITY redirectLoop.title "The page isn't redirecting properly">
-<!ENTITY redirectLoop.longDesc "
-<ul>
-  <li>This problem can sometimes be caused by disabling or refusing to accept
-    cookies.</li>
-</ul>
-">
-
-<!ENTITY unknownSocketType.title "Unexpected response from server">
-<!ENTITY unknownSocketType.longDesc "
-<ul>
-  <li>Check to make sure your system has the Personal Security Manager
-    installed.</li>
-  <li>This might be due to a non-standard configuration on the server.</li>
-</ul>
-">
-
-<!ENTITY nssFailure2.title "Secure Connection Failed">
-<!ENTITY nssFailure2.longDesc "
-<ul>
-  <li>The page you are trying to view can not be shown because the authenticity of the received data could not be verified.</li>
-  <li>Please contact the website owners to inform them of this problem. Alternatively, use the command found in the help menu to report this broken site.</li>
-</ul>
-">
-
-<!ENTITY nssBadCert.title "Secure Connection Failed">
-<!ENTITY nssBadCert.longDesc2 "
-<ul>
-  <li>This could be a problem with the server's configuration, or it could be
-someone trying to impersonate the server.</li>
-  <li>If you have connected to this server successfully in the past, the error may
-be temporary, and you can try again later.</li>
-</ul>
-">
-
-<!ENTITY sharedLongDesc2 "
-<ul>
-  <li>The site could be temporarily unavailable or too busy. Try again in a few moments.</li>
-  <li>If you are unable to load any pages, check your mobile device's data or Wi-Fi connection.</li>
-</ul>
-">
-
-<!ENTITY cspFrameAncestorBlocked.title "Blocked by Content Security Policy">
-<!ENTITY cspFrameAncestorBlocked.longDesc "<p>&brandShortName; prevented this page from loading in this way because the page has a content security policy that disallows it.</p>">
-
-<!ENTITY corruptedContentError.title "Corrupted Content Error">
-<!ENTITY corruptedContentError.longDesc "<p>The page you are trying to view cannot be shown because an error in the data transmission was detected.</p><ul><li>Please contact the website owners to inform them of this problem.</li></ul>">
-
-<!ENTITY securityOverride.linkText "Or you can add an exception…">
-<!ENTITY securityOverride.getMeOutOfHereButton "Get me out of here!">
-<!ENTITY securityOverride.exceptionButtonLabel "Add Exception…">
-
-<!-- LOCALIZATION NOTE (securityOverride.warningContent) - Do not translate the
-contents of the <xul:button> tags.  The only language content is the label= field,
-which uses strings already defined above. The button is included here (instead of
-netError.xhtml) because it exposes functionality specific to firefox. -->
-
-<!ENTITY securityOverride.warningContent "
-<p>You should not add an exception if you are using an internet connection that you do not trust completely or if you are not used to seeing a warning for this server.</p>
-
-<button id='getMeOutOfHereButton'>&securityOverride.getMeOutOfHereButton;</button>
-<button id='exceptionDialogButton'>&securityOverride.exceptionButtonLabel;</button>
-">
-
-<!ENTITY remoteXUL.title "Remote XUL">
-<!ENTITY remoteXUL.longDesc "<p><ul><li>Please contact the website owners to inform them of this problem.</li></ul></p>">
-
deleted file mode 100644
--- a/mobile/xul/locales/en-US/chrome/overrides/passwordmgr.properties
+++ /dev/null
@@ -1,72 +0,0 @@
-# ***** BEGIN LICENSE BLOCK *****
-# Version: MPL 1.1/GPL 2.0/LGPL 2.1
-#
-# The contents of this file are subject to the Mozilla Public License Version
-# 1.1 (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-# http://www.mozilla.org/MPL/
-#
-# Software distributed under the License is distributed on an "AS IS" basis,
-# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
-# for the specific language governing rights and limitations under the
-# License.
-#
-# The Original Code is Mozilla Password Manager.
-#
-# The Initial Developer of the Original Code is
-# Brian Ryner.
-# Portions created by the Initial Developer are Copyright (C) 2003
-# the Initial Developer. All Rights Reserved.
-#
-# Contributor(s):
-#  Brian Ryner <bryner@brianryner.com>
-#  Ehsan Akhgari <ehsan.akhgari@gmail.com>
-#
-# Alternatively, the contents of this file may be used under the terms of
-# either the GNU General Public License Version 2 or later (the "GPL"), or
-# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
-# in which case the provisions of the GPL or the LGPL are applicable instead
-# of those above. If you wish to allow use of your version of this file only
-# under the terms of either the GPL or the LGPL, and not to allow others to
-# use your version of this file under the terms of the MPL, indicate your
-# decision by deleting the provisions above and replace them with the notice
-# and other provisions required by the GPL or the LGPL. If you do not delete
-# the provisions above, a recipient may use your version of this file under
-# the terms of any one of the MPL, the GPL or the LGPL.
-#
-# ***** END LICENSE BLOCK *****
-
-rememberValue = Use Password Manager to remember this value.
-rememberPassword = Use Password Manager to remember this password.
-savePasswordTitle = Confirm
-# 1st string is product name, 2nd is the username for the login, 3rd is the
-#   login's hostname. Note that long usernames may be truncated.
-saveLoginText = Do you want %1$S to remember the password for "%2$S" on %3$S?
-# 1st string is product name, 2nd is the login's hostname
-saveLoginTextNoUsername = Do you want %1$S to remember this password on %2$S?
-notNowButtonText = &Not Now
-notifyBarNotNowButtonText = Not Now
-notifyBarNotNowButtonAccessKey =
-neverForSiteButtonText = Ne&ver for This Site
-notifyBarNeverForSiteButtonText = Never
-notifyBarNeverForSiteButtonAccessKey =
-rememberButtonText = &Remember
-notifyBarRememberButtonText = Remember
-notifyBarRememberButtonAccessKey =
-passwordChangeTitle = Confirm Password Change
-passwordChangeText = Would you like to change the stored password for %S?
-passwordChangeTextNoUser = Would you like to change the stored password for this login?
-notifyBarChangeButtonText = Change
-notifyBarChangeButtonAccessKey =
-notifyBarDontChangeButtonText = Don't Change
-notifyBarDontChangeButtonAccessKey =
-userSelectText = Please confirm which user you are changing the password for
-hidePasswords=Hide Passwords
-hidePasswordsAccessKey=P
-showPasswords=Show Passwords
-showPasswordsAccessKey=P
-noMasterPasswordPrompt=Are you sure you wish to show your passwords?
-removeAllPasswordsPrompt=Are you sure you wish to remove all passwords?
-removeAllPasswordsTitle=Remove all passwords
-loginsSpielAll=Passwords for the following sites are stored on your computer:
-loginsSpielFiltered=The following passwords match your search:
deleted file mode 100644
--- a/mobile/xul/locales/en-US/chrome/region.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-# Default search engine
-browser.search.defaultenginename=Google
-
-# Search engine order (order displayed in the search bar dropdown)s
-browser.search.order.1=Google
-
-# This is the default set of web based feed handlers shown in the reader
-# selection UI
-browser.contentHandlers.types.0.title=My Yahoo
-browser.contentHandlers.types.0.uri=http://add.my.yahoo.com/rss?url=%s
-browser.contentHandlers.types.1.title=Google
-browser.contentHandlers.types.1.uri=http://fusion.google.com/add?feedurl=%s
-
-# Keyword URL (for location bar searches)
-keyword.URL=http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=
-
-# increment this number when anything gets changed in the list below.  This will
-# cause Firefox to re-read these prefs and inject any new handlers into the
-# profile database.  Note that "new" is defined as "has a different URL"; this
-# means that it's not possible to update the name of existing handler, so
-# don't make any spelling errors here.
-gecko.handlerService.defaultHandlersVersion=2
-
-# The default set of protocol handlers for webcal:
-gecko.handlerService.schemes.webcal.0.name=30 Boxes
-gecko.handlerService.schemes.webcal.0.uriTemplate=http://30boxes.com/external/widget?refer=ff&url=%s
-
-# The default set of protocol handlers for mailto:
-gecko.handlerService.schemes.mailto.0.name=Yahoo! Mail
-gecko.handlerService.schemes.mailto.0.uriTemplate=http://compose.mail.yahoo.com/?To=%s
-gecko.handlerService.schemes.mailto.1.name=Gmail
-gecko.handlerService.schemes.mailto.1.uriTemplate=https://mail.google.com/mail/?extsrc=mailto&url=%s
deleted file mode 100644
--- a/mobile/xul/locales/en-US/installer/setup.ini
+++ /dev/null
@@ -1,17 +0,0 @@
-; This file is in the UTF-8 encoding
-[Strings]
-AppShortName=%MOZ_APP_DISPLAYNAME%
-AppLongName=Mozilla %MOZ_APP_DISPLAYNAME%
-WindowCaption=Mozilla %MOZ_APP_DISPLAYNAME% Setup
-InstallTo=Install %MOZ_APP_DISPLAYNAME% to
-Install=Install
-Cancel=Cancel
-InstalledSuccessfully=Mozilla %MOZ_APP_DISPLAYNAME% has been installed successfully.
-ExtractionError=Archive extraction error:
-ThereWereErrors=There were errors during installation:
-CreatingUserProfile=Creating user profile. Please wait...
-UninstallCaption=Mozilla %MOZ_APP_DISPLAYNAME% Uninstall
-FilesWillBeRemoved=All files will be removed from
-AreYouSure=Are you sure?
-InstallationNotFound=Mozilla %MOZ_APP_DISPLAYNAME% installation not found.
-UninstalledSuccessfully=Mozilla %MOZ_APP_DISPLAYNAME% has been uninstalled successfully.
deleted file mode 100644
--- a/mobile/xul/locales/en-US/profile/bookmarks.inc
+++ /dev/null
@@ -1,30 +0,0 @@
-#filter emptyLines
-
-# LOCALIZATION NOTE: The 'en-US' strings in the URLs will be replaced with
-# your locale code, and link to your translated pages as soon as they're 
-# live.
-
-# LOCALIZATION NOTE: Some of these URLs are currently 404s, but should be coming
-# online shortly.
-
-# LOCALIZATION NOTE (bookmarks_title):
-# title for the folder that will contains the default bookmarks
-#define bookmarks_title Mobile
-
-# LOCALIZATION NOTE (bookmarks_aboutBrowser):
-# link title for about:fennec
-#define bookmarks_aboutBrowser Firefox: About your browser
-
-# LOCALIZATION NOTE (bookmarks_addons):
-# link title for https://addons.mozilla.org/en-US/mobile
-#define bookmarks_addons Firefox: Customize with add-ons
-
-# LOCALIZATION NOTE (bookmarks_support):
-# link title for https://support.mozilla.com/mobile
-#define bookmarks_support Firefox: Support
-
-# LOCALIZATION NOTE (bookmarks_aboutHome):
-# link title for about:home
-#define bookmarks_aboutHome Firefox Start
-
-#unfilter emptyLines
deleted file mode 100644
--- a/mobile/xul/locales/en-US/searchplugins/amazondotcom.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
-<ShortName>Amazon.com</ShortName>
-<InputEncoding>ISO-8859-1</InputEncoding>
-<Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZJREFUeNrEV01IFGEYfndXNzq0QdalJOoUbQiBUuopD2k/GFSG/Vxyq0OHbCUjwn7AEooUzUNRkdkhS1o9JBVaUDctKqhoRQi0WjtlxG6XVtfpfb6Z2caZ2ZnZXZdeeJxvx+973+f9+775XJIkkUaWMcoYG5TxfMpvxlvGMGM8+RYEFOxn/JJyLzOMiwwv7LqUCNQwHjpxIxKJ0Gg4LABZUVhIfr+f1jLSlNuMwyCwEHoZS6xmvxoZoc6Oq+JpJoVMpOncWdpcWZkOiRIQ2MKDp1az+kIhOtV40pHG6zdvpEOixc1/VtqFvKX5gmOX0pkL2yDgsZpxt+sORaPROe8Q6ncf3tPAk8eG3Ks14lA8brsZYZ2yukBAwOfzCeMHA3WGNXrCVpLnJKeqRyhAfX5RfNmILQF4urG0VIzxBBkU5aQI9agIeU4JqNLZ0UH9ob6sDWZE4MDefSn7P1txO/FcbxypQG18nhinew/u5zYC3dyG+qLL1qjjCKDg9C21q2a3oe9zRsCsn2PR2JzfKEy9PB96Nj8E0IJm54IaGZwPZsWJOU4jY1kD2OlAQhsJjKu3bSe7yPUzifpgMPsuOBY8brtR1evmyFt0IL0IzH4fJtcCH7kK1hn2/hh71G1yKKEdz/DBBIOTkUkRemzVl1uvCGKzE4OMIaFbiv1LSX51L7mXl4kxvgeO8vMaJk0PHiHvjl4DCTWs2lMOX0L6cwD/Bxlp6hNNv2gUT9MjsLiB8koaMOxJRgCMgPijWsqvaCP3qqqUZ4JVzUASYyFyL/WTqyggPxWH4qGtBlJzagCGIYjEzJv2zHe38vOUt6mNPGv20OyPMMV7yuVwL5IjBlLmRej1UX7VLdmLt+2CMVKTiSDn0wO1NPPyBOtdLL+MyzWkTbGhC5AGsBdKkEtWAjglgjUwCq/FGjhV0ZosdOhXI5FyH0DoIIK9slB0CS8UCgr8AlpvpamwqHpttcO4WtSqA57ioKENE05IqIYSY46uD4Is0qmGG2s9RYeS7adI3Paz3K6lTMmzIdFmXp/d1Gb1YvLF7i4IzxMfu1ITYWOe1VWix7U5tlKpXkzwYycONqfVLcW+cU7lQ0jePf360DqRS4zT/+Ny+ofRxPBoL6fa6zmu5uvtbkwZyE/lev6a8VV9+VeAAQADg36zc4GRNAAAAABJRU5ErkJggg==</Image>
-<Url type="text/html" method="GET" template="http://www.amazon.com/exec/obidos/external-search/">
-  <Param name="field-keywords" value="{searchTerms}"/>
-  <Param name="mode" value="blended"/>
-  <Param name="tag" value="mozilla-20"/>
-  <Param name="sourceid" value="Mozilla-search"/>
-</Url>
-<SearchForm>http://www.amazon.com/</SearchForm>
-</SearchPlugin>
deleted file mode 100644
--- a/mobile/xul/locales/en-US/searchplugins/google.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
-<ShortName>Google</ShortName>
-<InputEncoding>UTF-8</InputEncoding>
-<Image width="16" height="16">data:image/png;base64,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</Image>
-<Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&amp;client=firefox&amp;hl={moz:locale}&amp;q={searchTerms}"/>
-<Url type="text/html" method="GET" template="http://www.google.com/m">
-  <Param name="q" value="{searchTerms}"/>
-  <Param name="ie" value="utf-8"/>
-  <Param name="oe" value="utf-8"/>
-  <Param name="aq" value="t"/>
-  <!-- Dynamic parameters -->
-  <Param name="rls" value="{moz:distributionID}:{moz:locale}:{moz:official}"/>
-</Url>
-<SearchForm>http://www.google.com/m</SearchForm>
-</SearchPlugin>
deleted file mode 100644
--- a/mobile/xul/locales/en-US/searchplugins/list.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-amazondotcom
-google
-twitter
-wikipedia
deleted file mode 100644
--- a/mobile/xul/locales/en-US/searchplugins/twitter.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
-  <ShortName>Twitter</ShortName>
-  <Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADTppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMuMzUyNjI0LCAyMDA4LzA3LzMwLTE4OjA1OjQxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOklwdGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcENvcmUvMS4wL3htbG5zLyIKICAgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iIgogICBwaG90b3Nob3A6QXV0aG9yc1Bvc2l0aW9uPSIiPgogICA8ZGM6cmlnaHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+CiAgIDwvZGM6cmlnaHRzPgogICA8ZGM6Y3JlYXRvcj4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkvPgogICAgPC9yZGY6U2VxPgogICA8L2RjOmNyZWF0b3I+CiAgIDxkYzp0aXRsZT4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+dHdpdHRlci10LXNvbG88L3JkZjpsaT4KICAgIDwvcmRmOkFsdD4KICAgPC9kYzp0aXRsZT4KICAgPHhtcFJpZ2h0czpVc2FnZVRlcm1zPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+CiAgIDwveG1wUmlnaHRzOlVzYWdlVGVybXM+CiAgIDxJcHRjNHhtcENvcmU6Q3JlYXRvckNvbnRhY3RJbmZvCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJFeHRhZHI9IiIKICAgIElwdGM0eG1wQ29yZTpDaUFkckNpdHk9IiIKICAgIElwdGM0eG1wQ29yZTpDaUFkclJlZ2lvbj0iIgogICAgSXB0YzR4bXBDb3JlOkNpQWRyUGNvZGU9IiIKICAgIElwdGM0eG1wQ29yZTpDaUFkckN0cnk9IiIKICAgIElwdGM0eG1wQ29yZTpDaVRlbFdvcms9IiIKICAgIElwdGM0eG1wQ29yZTpDaUVtYWlsV29yaz0iIgogICAgSXB0YzR4bXBDb3JlOkNpVXJsV29yaz0iIi8+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz6sMuh4AAADGElEQVR42tRXT2jTYBT/0tR0Sek2RIvr/NMq66RTOj3sMD1UKuxg9SQep8gugruoh6nbaRfBo6CgF93NHqUgooIgKpYhLWKZ3aTVTZG6dd26Nm3WNn6vS/QjJjVtuooPHs3H95L36/v/KFEUkRoFnmXs+MeD2YmZIa7imGOh450p1ASi1ABg5QPeDrN/uIcN7LGZ+ttoipPvPmbKr6dm+VB0pfQcgwgbRgAASD7xdHngZiQ3yZcqOVGD4C6ULNwHWeX79bJSuf1aOHu1lnISBADF7+w0AsCsMIgHzC6bfEUQ0Y1IDr1fLVUvD7ab0Vi/FXUwFAKZ03stgRc/hJf4aqFRDygBOMHn8oFUDgTP49Nr6NagbUPYRoOsE8eMQ+XbizhGhHoBMGTAkcplSuTL6Guugrqtpur5iofzz62U3Uq58NL6AgaWwY/JWlljbsRsKf43AJ+DOeNT+f8jiEWFspj/nK1EIGswGNWsMaFNJLBmbyc9OHHYOu7bzpyE9G4pABLIxQPsJagtUoEz5oKJyJouOWXWQIZdns6+AS+2xAIQxJBJMkkZ5mypC8hMkjKMaXkM1KJNBwBx8M8AyEFIdlKpnRvLgvP7WOSy0TVl7KzpV7ECgqIEBQmqomEAoPzQNv2vgvJHyeIDaYZIGQZQDyWz5ci9GT6oNcD8n1kQ+lLULQstG3rBsKvtnFovULpAAH/JLdnF0dX2q6S36XU0+S6HArstuoIQvnfKaTkbTZfmMYgkGQdKAN++5ytxadBAx7oYlPjEqyoAEMDN7gXJD+lSVD74uxlkpamm9QJozfjHrRkD2DTxO7P8k6wgLsEZkI/u55rWC/QGYezxfDEoH452bUGjvVzrsgBbITqVKASlslmloV0MGuuzNuQOshdAgEOg60nDGA6W6yQIsMTdI+0bZZijG+oFMB9KQ6r2ZkQuKZh9M8ulV2ITCBYZWHrgu5qbkRaIh3P87dViZdGIcmmL+mOVo7S2Y8Wy6oWt6UIPO9S31ezdwZnc5P5QqwnJY7lWL9AFgADilmY6h3K00iDhb4vJTwEGANC+26MCs7qQAAAAAElFTkSuQmCC</Image>
-  <Url type="text/html" method="GET" template="http://mobile.twitter.com/searches">
-    <Param name="q" value="{searchTerms}"/>
-  </Url>
-  <InputEncoding>UTF-8</InputEncoding>
-  <SearchForm>http://mobile.twitter.com/searches</SearchForm>
-</SearchPlugin>
deleted file mode 100644
--- a/mobile/xul/locales/en-US/searchplugins/wikipedia.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
-<ShortName>Wikipedia</ShortName>
-<InputEncoding>UTF-8</InputEncoding>
-<Image width="16" height="16">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAACXBIWXMAAAsTAAALEwEAmpwYAAADGGlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjaY2BgnuDo4uTKJMDAUFBUUuQe5BgZERmlwH6egY2BmYGBgYGBITG5uMAxIMCHgYGBIS8/L5UBFTAyMHy7xsDIwMDAcFnX0cXJlYE0wJpcUFTCwMBwgIGBwSgltTiZgYHhCwMDQ3p5SUEJAwNjDAMDg0hSdkEJAwNjAQMDg0h2SJAzAwNjCwMDE09JakUJAwMDg3N+QWVRZnpGiYKhpaWlgmNKflKqQnBlcUlqbrGCZ15yflFBflFiSWoKAwMD1A4GBgYGXpf8EgX3xMw8BSMDVQYqg4jIKAUICxE+CDEESC4tKoMHJQODAIMCgwGDA0MAQyJDPcMChqMMbxjFGV0YSxlXMN5jEmMKYprAdIFZmDmSeSHzGxZLlg6WW6x6rK2s99gs2aaxfWMPZ9/NocTRxfGFM5HzApcj1xZuTe4FPFI8U3mFeCfxCfNN45fhXyygI7BD0FXwilCq0A/hXhEVkb2i4aJfxCaJG4lfkaiQlJM8JpUvLS19QqZMVl32llyfvIv8H4WtioVKekpvldeqFKiaqP5UO6jepRGqqaT5QeuA9iSdVF0rPUG9V/pHDBYY1hrFGNuayJsym740u2C+02KJ5QSrOutcmzjbQDtXe2sHY0cdJzVnJRcFV3k3BXdlD3VPXS8Tbxsfd99gvwT//ID6wIlBS4N3hVwMfRnOFCEXaRUVEV0RMzN2T9yDBLZE3aSw5IaUNak30zkyLDIzs+ZmX8xlz7PPryjYVPiuWLskq3RV2ZsK/cqSql01jLVedVPrHzbqNdU0n22VaytsP9op3VXUfbpXta+x/+5Em0mzJ/+dGj/t8AyNmf2zvs9JmHt6vvmCpYtEFrcu+bYsc/m9lSGrTq9xWbtvveWGbZtMNm/ZarJt+w6rnft3u+45uy9s/4ODOYd+Hmk/Jn58xUnrU+fOJJ/9dX7SRe1LR68kXv13fc5Nm1t379TfU75/4mHeY7En+59lvhB5efB1/lv5dxc+NH0y/fzq64Lv4T8Ffp360/rP8f9/AA0ADzT6lvFdAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAHqSURBVHjapJUxb9NQFIW/JAip2xNS1/J+goeqUqeajdGVmFgwI1OcmYEgITFG7EgJQ+b2HzgbElJF+QU2iBl7YAFRnQ5+fnFcB0J8Jp/r53vPu+f6vYEA4JBTTjhkN/zkio9kAAihpyr1v/ijN7ovEHqiffFeDHTAdx6wL46HnPX4HM6HHNEHR0NGvRKMhvRE7wT3ACYssBggpyThIRMCAFaEzHhOiQWumfGFBQGQY0kB9EKSCsVCyKpQxUMhdOEMj4Vi91wIGX2uyNJtwTDHAgbjOUBJ/T50ETDAzCn0CiRpLkSd2VW1rqZR6uOpzHoWl40EkmkIlTIhNJc0bUSlSNNtCaZCKGtpyDZimXB92uhBhTEAHzx/BuQ8Isb62Dti16c7PahrNnbovFhXLGQaau4oqDSULDx/BcCl55cEDTUdCqqagWcXbjpqWD8ZWxRUGq5ZOTYhAXLHV0DU/qCtQLJCkZuM0PHQGThvL152JJh5M61SP2CpMpmmgdsTFDJCiaaubq0haQ7Q3xLUZq4NqzS0DNzWxNq8ksgbFmGgwf95oFgijJuB6v9L3Fx2HSg3XeExZxv1xuSEXQt/o8fqg9cDHfB15zuxjRuOETrfu/5b9bhcf+mlRmLgr/cTgp1vqR9c8YlvALcDAPr5jIx+4LKcAAAAAElFTkSuQmCC</Image>
-<Url type="application/x-suggestions+json" method="GET" template="http://en.wikipedia.org/w/api.php">
-  <Param name="action" value="opensearch"/>
-  <Param name="search" value="{searchTerms}"/>
-</Url>
-<Url type="text/html" method="GET" template="http://en.m.wikipedia.org/wiki">
-  <Param name="search" value="{searchTerms}"/>
-  <Param name="sourceid" value="Mozilla-search"/>
-</Url>
-<SearchForm>http://en.wikipedia.org/wiki/Special:Search</SearchForm>
-</SearchPlugin>
deleted file mode 100644
--- a/mobile/xul/locales/en-US/searchplugins/yahoo.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
-<ShortName>Yahoo</ShortName>
-<InputEncoding>UTF-8</InputEncoding>
-<Image width="16" height="16">data:image/png;base64,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</Image>
-<Url type="application/x-suggestions+json" method="GET"
-     template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command={searchTerms}" />
-<Url type="text/html" method="GET" template="http://search.yahoo.com/search">
-  <Param name="p" value="{searchTerms}"/>
-  <Param name="ei" value="UTF-8"/>
-  <MozParam name="fr" condition="pref" pref="yahoo-fr" />
-</Url>
-<SearchForm>http://search.yahoo.com/</SearchForm>
-</SearchPlugin>
--- a/mobile/xul/locales/filter.py
+++ b/mobile/xul/locales/filter.py
@@ -30,35 +30,48 @@
 # use your version of this file under the terms of the MPL, indicate your
 # decision by deleting the provisions above and replace them with the notice
 # and other provisions required by the GPL or the LGPL. If you do not delete
 # the provisions above, a recipient may use your version of this file under
 # the terms of any one of the MPL, the GPL or the LGPL.
 #
 # ***** END LICENSE BLOCK *****
 
+"""This routine controls which localizable files and entries are
+reported and l10n-merged.
+It's common to all of mobile, mobile/android and mobile/xul, so
+those three versions need to stay in sync.
+"""
 
 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",
-                 "services/sync", "embedding/android",
+                 "services/sync", "mobile",
+                 "mobile/android/base",  "mobile/android",
                  "mobile/xul"):
-    return False
+    return "ignore"
 
-  if mod != "mobile/xul":
-    # we only have exceptions for mobile
-    return True
-  if not entity:
-    return not (re.match(r"searchplugins\/.+\.xml", path) or
-                re.match(r"mobile-l10n.js", path) or
-                re.match(r"defines.inc", path))
-  if path == "defines.inc":
-    return entity != "MOZ_LANGPACK_CONTRIBUTORS"
+  if mod not in ("mobile", "mobile/android", "mobile/xul"):
+    # we only have exceptions for mobile*
+    return "error"
+  if mod in ("mobile/android", "mobile/xul"):
+    if not entity:
+      if (re.match(r"mobile-l10n.js", path) or
+          re.match(r"defines.inc", path)):
+        return "ignore"
+    if path == "defines.inc":
+      if entity == "MOZ_LANGPACK_CONTRIBUTORS":
+        return "ignore"
+    return "error"
 
-  if path != "chrome/region.properties":
-    # only region.properties exceptions remain, compare all others
-    return True
-  
-  return not (re.match(r"browser\.search\.order\.[1-9]", entity) or
-              re.match(r"browser\.contentHandlers\.types\.[0-5]", entity) or
-              re.match(r"gecko\.handlerService\.schemes\.", entity) or
-              re.match(r"gecko\.handlerService\.defaultHandlersVersion", entity))
+  # we're in mod == "mobile"
+  if re.match(r"searchplugins\/.+\.xml", path):
+    return "ignore"
+  if path == "chrome/region.properties":
+    # only region.properties exceptions remain
+    if (re.match(r"browser\.search\.order\.[1-9]", entity) or
+        re.match(r"browser\.contentHandlers\.types\.[0-5]", entity) or
+        re.match(r"gecko\.handlerService\.schemes\.", entity) or
+      re.match(r"gecko\.handlerService\.defaultHandlersVersion", entity)):
+      return "ignore"
+
+  return "error"
--- a/mobile/xul/locales/jar.mn
+++ b/mobile/xul/locales/jar.mn
@@ -4,28 +4,17 @@
 % locale browser @AB_CD@ %locale/@AB_CD@/browser/
   locale/@AB_CD@/browser/about.dtd                (%chrome/about.dtd)
   locale/@AB_CD@/browser/aboutCertError.dtd       (%chrome/aboutCertError.dtd)
   locale/@AB_CD@/browser/aboutHome.dtd            (%chrome/aboutHome.dtd)
   locale/@AB_CD@/browser/browser.dtd              (%chrome/browser.dtd)
   locale/@AB_CD@/browser/browser.properties       (%chrome/browser.properties)
   locale/@AB_CD@/browser/config.dtd               (%chrome/config.dtd)
   locale/@AB_CD@/browser/localepicker.properties  (%chrome/localepicker.properties)
-  locale/@AB_CD@/browser/region.properties        (%chrome/region.properties)
   locale/@AB_CD@/browser/preferences.dtd          (%chrome/preferences.dtd)
   locale/@AB_CD@/browser/checkbox.dtd             (%chrome/checkbox.dtd)
   locale/@AB_CD@/browser/notification.dtd         (%chrome/notification.dtd)
   locale/@AB_CD@/browser/sync.dtd                 (%chrome/sync.dtd)
   locale/@AB_CD@/browser/sync.properties          (%chrome/sync.properties)
   locale/@AB_CD@/browser/prompt.dtd               (%chrome/prompt.dtd)
   locale/@AB_CD@/browser/webapps.dtd              (%chrome/webapps.dtd)
   locale/@AB_CD@/browser/feedback.dtd             (%chrome/feedback.dtd)
   locale/@AB_CD@/browser/phishing.dtd             (%chrome/phishing.dtd)
-  locale/@AB_CD@/browser/bookmarks.json           (bookmarks.json)
-  locale/@AB_CD@/browser/searchplugins/list.txt   (%searchplugins/list.txt)
-
-# Fennec-specific overrides of generic strings
-* locale/@AB_CD@/browser/netError.dtd             (%chrome/overrides/netError.dtd)
-% override chrome://global/locale/netError.dtd    chrome://browser/locale/netError.dtd
-* locale/@AB_CD@/browser/appstrings.properties    (%chrome/overrides/appstrings.properties)
-% override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
-* locale/@AB_CD@/browser/passwordmgr.properties    (%chrome/overrides/passwordmgr.properties)
-% override chrome://passwordmgr/locale/passwordmgr.properties chrome://browser/locale/passwordmgr.properties
--- a/mobile/xul/locales/l10n.ini
+++ b/mobile/xul/locales/l10n.ini
@@ -1,8 +1,12 @@
+# Control which directories and modules are part of mobile/xul.
+# Changes here should be reflected in mobile/locales/l10n.ini so
+# that the dashboard picks them up.
+
 [general]
 depth = ../../..
 all = mobile/xul/locales/all-locales
 
 [compare]
 dirs = mobile/xul
 
 [includes]