summaryrefslogtreecommitdiffstats
path: root/mobile/android/locales
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /mobile/android/locales
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'mobile/android/locales')
-rw-r--r--mobile/android/locales/Makefile.in87
-rw-r--r--mobile/android/locales/all-locales89
-rw-r--r--mobile/android/locales/en-US/chrome/about.dtd24
-rw-r--r--mobile/android/locales/en-US/chrome/aboutAccounts.dtd13
-rw-r--r--mobile/android/locales/en-US/chrome/aboutAccounts.properties16
-rw-r--r--mobile/android/locales/en-US/chrome/aboutAddons.dtd15
-rw-r--r--mobile/android/locales/en-US/chrome/aboutAddons.properties11
-rw-r--r--mobile/android/locales/en-US/chrome/aboutCertError.dtd38
-rw-r--r--mobile/android/locales/en-US/chrome/aboutDevices.dtd14
-rw-r--r--mobile/android/locales/en-US/chrome/aboutDownloads.dtd15
-rw-r--r--mobile/android/locales/en-US/chrome/aboutDownloads.properties17
-rw-r--r--mobile/android/locales/en-US/chrome/aboutHealthReport.dtd6
-rw-r--r--mobile/android/locales/en-US/chrome/aboutHome.dtd7
-rw-r--r--mobile/android/locales/en-US/chrome/aboutHome.properties5
-rw-r--r--mobile/android/locales/en-US/chrome/aboutLogins.dtd10
-rw-r--r--mobile/android/locales/en-US/chrome/aboutLogins.properties27
-rw-r--r--mobile/android/locales/en-US/chrome/aboutPrivateBrowsing.dtd25
-rw-r--r--mobile/android/locales/en-US/chrome/browser.properties462
-rw-r--r--mobile/android/locales/en-US/chrome/checkbox.dtd6
-rw-r--r--mobile/android/locales/en-US/chrome/config.dtd21
-rw-r--r--mobile/android/locales/en-US/chrome/config.properties9
-rw-r--r--mobile/android/locales/en-US/chrome/devicePrompt.properties5
-rw-r--r--mobile/android/locales/en-US/chrome/handling.properties5
-rw-r--r--mobile/android/locales/en-US/chrome/phishing.dtd23
-rw-r--r--mobile/android/locales/en-US/chrome/pippki.properties85
-rw-r--r--mobile/android/locales/en-US/chrome/sync.properties40
-rw-r--r--mobile/android/locales/en-US/chrome/webcompatReporter.properties12
-rw-r--r--mobile/android/locales/en-US/defines.inc12
-rw-r--r--mobile/android/locales/en-US/mobile-l10n.js7
-rw-r--r--mobile/android/locales/filter.py45
-rw-r--r--mobile/android/locales/jar.mn99
-rw-r--r--mobile/android/locales/l10n.ini18
-rw-r--r--mobile/android/locales/maemo-locales77
-rw-r--r--mobile/android/locales/moz.build7
34 files changed, 1352 insertions, 0 deletions
diff --git a/mobile/android/locales/Makefile.in b/mobile/android/locales/Makefile.in
new file mode 100644
index 000000000..b8e541ba8
--- /dev/null
+++ b/mobile/android/locales/Makefile.in
@@ -0,0 +1,87 @@
+# 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/.
+
+include $(topsrcdir)/config/config.mk
+
+SUBMAKEFILES += \
+ $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/Makefile \
+ $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales/Makefile \
+ $(DEPTH)/mobile/locales/Makefile \
+ $(NULL)
+
+L10N_PREF_JS_EXPORTS = $(firstword $(wildcard $(LOCALE_SRCDIR)/mobile-l10n.js) \
+ $(srcdir)/en-US/mobile-l10n.js )
+L10N_PREF_JS_EXPORTS_PATH = $(FINAL_TARGET)/$(PREF_DIR)
+L10N_PREF_JS_EXPORTS_FLAGS = $(PREF_PPFLAGS) --silence-missing-directive-warnings
+PP_TARGETS += L10N_PREF_JS_EXPORTS
+
+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 and raw-*/suggestedsites.json.
+# 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
+ $(RM) $(DEPTH)/mobile/android/base/res/raw-*/suggestedsites.json
+
+libs-%:
+ @$(MAKE) -C $(DEPTH)/mobile/locales libs-$*
+ @$(MAKE) libs AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/pref
+ifeq ($(OS_TARGET),Android)
+ @$(MAKE) -C $(DEPTH)/mobile/android/base/locales AB_CD=$* XPI_NAME=locale-$*
+endif
+
+# Tailored target to just add the chrome processing for multi-locale builds
+chrome-%:
+ @$(MAKE) -C $(DEPTH)/mobile/locales chrome-$*
+ @$(MAKE) 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'
+
+# 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))
+GECKO_PLATFORM_INI_PATH='$(STAGEDIST)/platform.ini'
+FENNEC_APPLICATION_INI_PATH='$(STAGEDIST)/application.ini'
+else
+GECKO_PLATFORM_INI_PATH='$(STAGEDIST)/platform.ini'
+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)
+ $(topsrcdir)/mach compare-locales --merge-dir $(LOCALE_MERGEDIR) $*
+endif
+ @echo
diff --git a/mobile/android/locales/all-locales b/mobile/android/locales/all-locales
new file mode 100644
index 000000000..5f8dbbe2a
--- /dev/null
+++ b/mobile/android/locales/all-locales
@@ -0,0 +1,89 @@
+an
+ar
+as
+ast
+az
+bg
+bn-BD
+bn-IN
+br
+ca
+cak
+cs
+cy
+da
+de
+dsb
+el
+en-GB
+en-ZA
+eo
+es-AR
+es-CL
+es-ES
+es-MX
+et
+eu
+fa
+ff
+fi
+fr
+fy-NL
+ga-IE
+gd
+gl
+gn
+gu-IN
+he
+hi-IN
+hr
+hsb
+hu
+hy-AM
+id
+is
+it
+ja
+ka
+kab
+kk
+kn
+ko
+lo
+lt
+lv
+mai
+ml
+mr
+ms
+my
+nb-NO
+ne-NP
+nl
+nn-NO
+or
+pa-IN
+pl
+pt-BR
+pt-PT
+rm
+ro
+ru
+sk
+sl
+son
+sq
+sr
+sv-SE
+ta
+te
+th
+tr
+tsz
+uk
+ur
+uz
+wo
+xh
+zh-CN
+zh-TW
diff --git a/mobile/android/locales/en-US/chrome/about.dtd b/mobile/android/locales/en-US/chrome/about.dtd
new file mode 100644
index 000000000..6c493e4b4
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/about.dtd
@@ -0,0 +1,24 @@
+<!-- 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/. -->
+<!ENTITY aboutPage.title "About &brandShortName;">
+<!ENTITY aboutPage.warningVersion "&brandShortName; is experimental and may be unstable.">
+<!ENTITY aboutPage.telemetryStart " It automatically sends information about performance, hardware, usage and customizations back to ">
+<!ENTITY aboutPage.telemetryMozillaLink "&vendorShortName;">
+<!ENTITY aboutPage.telemetryEnd " to help make &brandShortName; better.">
+<!ENTITY aboutPage.checkForUpdates.link "Check for Updates »">
+<!ENTITY aboutPage.checkForUpdates.checking "Looking for updates…">
+<!ENTITY aboutPage.checkForUpdates.none "No updates available">
+<!ENTITY aboutPage.checkForUpdates.available2 "Download update">
+<!ENTITY aboutPage.checkForUpdates.downloading "Downloading update…">
+<!ENTITY aboutPage.checkForUpdates.downloaded2 "Install update">
+<!ENTITY aboutPage.faq.label "FAQ">
+<!ENTITY aboutPage.support.label "Support">
+<!ENTITY aboutPage.privacyPolicy.label "Privacy Policy">
+<!ENTITY aboutPage.rights.label "Know Your Rights">
+<!ENTITY aboutPage.relNotes.label "Release Notes">
+<!ENTITY aboutPage.credits.label "Credits">
+<!ENTITY aboutPage.license.label "Licensing Information">
+
+<!-- LOCALIZATION NOTE (aboutPage.logoTrademark): The message is explicitly about the word "Firefox" being trademarked, that's why we use it, instead of brandShortName. -->
+<!ENTITY aboutPage.logoTrademark "Firefox and the Firefox logos are trademarks of the Mozilla Foundation.">
diff --git a/mobile/android/locales/en-US/chrome/aboutAccounts.dtd b/mobile/android/locales/en-US/chrome/aboutAccounts.dtd
new file mode 100644
index 000000000..0053759d2
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutAccounts.dtd
@@ -0,0 +1,13 @@
+<!-- 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/. -->
+
+<!ENTITY aboutAccounts.connected.title "Firefox Accounts">
+<!ENTITY aboutAccounts.connected.description "You are connected as">
+<!ENTITY aboutAccounts.syncPreferences.label "Tap here to check Sync settings">
+
+<!ENTITY aboutAccounts.noConnection.title "No Internet connection">
+<!ENTITY aboutAccounts.retry.label "Try again">
+
+<!ENTITY aboutAccounts.restrictedError.title "Restricted">
+<!ENTITY aboutAccounts.restrictedError.description "You cannot manage Firefox Accounts from this profile.">
diff --git a/mobile/android/locales/en-US/chrome/aboutAccounts.properties b/mobile/android/locales/en-US/chrome/aboutAccounts.properties
new file mode 100644
index 000000000..67f20eb61
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutAccounts.properties
@@ -0,0 +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/.
+
+# LOCALIZATION NOTE (relinkDenied.message): Ideally, this string is short (it's
+# a toast message).
+relinkDenied.message = Already signed in to Sync!
+# LOCALIZATION NOTE (relinkDenied.openPrefs): Ideally, this string is short (it's a
+# button label) and upper-case, to match Google and Android's convention.
+relinkDenied.openPrefs = PREFS
+
+relinkVerify.title = Are you sure you want to sign in to Sync?
+# LOCALIZATION NOTE (relinkVerify.message): Email address of a user previously signed in to Sync.
+relinkVerify.message = You were previously signed in to Sync with a different email address. Signing in will merge this browser’s bookmarks, passwords and other settings with %S
+relinkVerify.continue = Continue
+relinkVerify.cancel = Cancel
diff --git a/mobile/android/locales/en-US/chrome/aboutAddons.dtd b/mobile/android/locales/en-US/chrome/aboutAddons.dtd
new file mode 100644
index 000000000..d4c89146b
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutAddons.dtd
@@ -0,0 +1,15 @@
+<!-- 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/. -->
+
+<!ENTITY aboutAddons.title2 "Add-ons">
+<!ENTITY aboutAddons.header2 "Your Add-ons">
+<!ENTITY aboutAddons.options "Options">
+
+<!ENTITY addonAction.enable "Enable">
+<!ENTITY addonAction.disable "Disable">
+<!ENTITY addonAction.uninstall "Uninstall">
+<!ENTITY addonAction.undo "Undo">
+
+<!ENTITY addonUnsigned.message "This add-on could not be verified by &brandShortName;.">
+<!ENTITY addonUnsigned.learnMore "Learn more">
diff --git a/mobile/android/locales/en-US/chrome/aboutAddons.properties b/mobile/android/locales/en-US/chrome/aboutAddons.properties
new file mode 100644
index 000000000..41ea1a80e
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutAddons.properties
@@ -0,0 +1,11 @@
+# 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/.
+
+addonType.extension=Extension
+addonType.theme=Theme
+addonType.locale=Locale
+
+addonStatus.uninstalled=%S will be uninstalled after restart.
+
+addons.browseAll=Browse all Firefox Add-ons
diff --git a/mobile/android/locales/en-US/chrome/aboutCertError.dtd b/mobile/android/locales/en-US/chrome/aboutCertError.dtd
new file mode 100644
index 000000000..cd6c6ba63
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutCertError.dtd
@@ -0,0 +1,38 @@
+<!-- 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/. -->
+
+<!ENTITY % brandDTD
+ SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+
+<!-- These strings are used by Firefox's custom about:certerror page,
+a replacement for the standard security certificate errors produced
+by NSS/PSM via netError.xhtml. -->
+
+<!ENTITY certerror.pagetitle "Untrusted Connection">
+<!ENTITY certerror.longpagetitle "This Connection is Untrusted">
+
+<!-- Localization note (certerror.introPara1) - The string "#1" will
+be replaced at runtime with the name of the server to which the user
+was trying to connect. -->
+<!ENTITY certerror.introPara1 "You have asked &brandShortName; to connect
+securely to <b>#1</b>, but we can't confirm that your connection is secure.">
+
+<!ENTITY certerror.whatShouldIDo.heading "What Should I Do?">
+<!ENTITY certerror.whatShouldIDo.content "If you usually connect to
+this site without problems, this error could mean that someone is
+trying to impersonate the site, and you shouldn't continue.">
+<!ENTITY certerror.getMeOutOfHere.label "Get me out of here!">
+
+<!ENTITY certerror.expert.heading "I Understand the Risks">
+<!ENTITY certerror.expert.content "If you understand what's going on, you
+can tell &brandShortName; to start trusting this site's identification.
+<b>Even if you trust the site, this error could mean that someone is
+tampering with your connection.</b>">
+<!ENTITY certerror.expert.contentPara2 "Don't add an exception unless
+you know there's a good reason why this site doesn't use trusted identification.">
+<!ENTITY certerror.addTemporaryException.label "Visit site">
+<!ENTITY certerror.addPermanentException.label "Add permanent exception">
+
+<!ENTITY certerror.technical.heading "Technical Details">
diff --git a/mobile/android/locales/en-US/chrome/aboutDevices.dtd b/mobile/android/locales/en-US/chrome/aboutDevices.dtd
new file mode 100644
index 000000000..45d00393e
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutDevices.dtd
@@ -0,0 +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/. -->
+
+<!ENTITY aboutDevices.title "Devices">
+<!ENTITY aboutDevices.header "Your devices">
+<!ENTITY aboutDevices.refresh "Refresh">
+<!ENTITY aboutDevices.addDeviceHeader "Add a device">
+<!ENTITY aboutDevices.roku "Roku">
+<!ENTITY aboutDevices.chromecast "Chromecast">
+<!-- Localization note (aboutDevices.placeholder): this is the hint shown to the
+ user prompting them to input the IP address of a casting device. -->
+<!ENTITY aboutDevices.placeholder "IP address">
+<!ENTITY aboutDevices.connectManually "Connect manually">
diff --git a/mobile/android/locales/en-US/chrome/aboutDownloads.dtd b/mobile/android/locales/en-US/chrome/aboutDownloads.dtd
new file mode 100644
index 000000000..fae992d4f
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutDownloads.dtd
@@ -0,0 +1,15 @@
+<!-- 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/. -->
+
+<!ENTITY aboutDownloads.title "Downloads">
+<!ENTITY aboutDownloads.header "Your Downloads">
+<!ENTITY aboutDownloads.empty "No Downloads">
+
+<!ENTITY aboutDownloads.open "Open">
+<!ENTITY aboutDownloads.remove "Delete">
+<!ENTITY aboutDownloads.removeAll "Delete All">
+<!ENTITY aboutDownloads.pause "Pause">
+<!ENTITY aboutDownloads.resume "Resume">
+<!ENTITY aboutDownloads.cancel "Cancel">
+<!ENTITY aboutDownloads.retry "Retry">
diff --git a/mobile/android/locales/en-US/chrome/aboutDownloads.properties b/mobile/android/locales/en-US/chrome/aboutDownloads.properties
new file mode 100644
index 000000000..59ca71f5c
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutDownloads.properties
@@ -0,0 +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/.
+
+# LOCALIZATION NOTE (downloadMessage.deleteAll):
+# Semicolon-separated list of plural forms. See:
+# http://developer.mozilla.org/en/docs/Localization_and_Plurals
+downloadMessage.deleteAll=Delete this download?;Delete #1 downloads?
+
+downloadAction.deleteAll=Delete All
+
+downloadState.downloading=Downloading…
+downloadState.canceled=Canceled
+downloadState.failed=Failed
+downloadState.paused=Paused
+downloadState.starting=Starting…
+downloadState.unknownSize=Unknown size
diff --git a/mobile/android/locales/en-US/chrome/aboutHealthReport.dtd b/mobile/android/locales/en-US/chrome/aboutHealthReport.dtd
new file mode 100644
index 000000000..0cc20e38e
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutHealthReport.dtd
@@ -0,0 +1,6 @@
+<!-- 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/. -->
+
+<!-- LOCALIZATION NOTE (abouthealth.pagetitle): Firefox Health Report is a proper noun in en-US, please keep this in mind. -->
+<!ENTITY abouthealth.pagetitle "&brandShortName; Health Report">
diff --git a/mobile/android/locales/en-US/chrome/aboutHome.dtd b/mobile/android/locales/en-US/chrome/aboutHome.dtd
new file mode 100644
index 000000000..cd79cfcb5
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutHome.dtd
@@ -0,0 +1,7 @@
+<!-- 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/. -->
+
+<!-- This string should be kept in sync with the home_title string
+ in android_strings.dtd -->
+<!ENTITY abouthome.title "&brandShortName; Home">
diff --git a/mobile/android/locales/en-US/chrome/aboutHome.properties b/mobile/android/locales/en-US/chrome/aboutHome.properties
new file mode 100644
index 000000000..f2c379590
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutHome.properties
@@ -0,0 +1,5 @@
+# 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/.
+
+banner.firstrunHomepage.text=Welcome to your Homepage! Get back here every time you open a new tab.
diff --git a/mobile/android/locales/en-US/chrome/aboutLogins.dtd b/mobile/android/locales/en-US/chrome/aboutLogins.dtd
new file mode 100644
index 000000000..2ae2cadcb
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutLogins.dtd
@@ -0,0 +1,10 @@
+<!-- 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/. -->
+<!ENTITY % brandDTD
+ SYSTEM "chrome://branding/locale/brand.dtd">
+ %brandDTD;
+<!ENTITY aboutLogins.title "Logins">
+<!ENTITY aboutLogins.update "Update">
+<!ENTITY aboutLogins.emptyLoginText "Keep your logins safe">
+<!ENTITY aboutLogins.emptyLoginHint "Logins and credentials you save using &brandShortName; will show up here.">
diff --git a/mobile/android/locales/en-US/chrome/aboutLogins.properties b/mobile/android/locales/en-US/chrome/aboutLogins.properties
new file mode 100644
index 000000000..ba04b986d
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutLogins.properties
@@ -0,0 +1,27 @@
+# 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/.
+
+loginsMenu.showPassword=Show password
+loginsMenu.copyPassword=Copy password
+loginsMenu.copyUsername=Copy username
+loginsMenu.editLogin=Edit login
+loginsMenu.delete=Delete
+
+loginsDialog.confirmDelete=Delete this login?
+loginsDialog.copy=Copy
+loginsDialog.confirm=OK
+loginsDialog.cancel=Cancel
+
+editLogin.fallbackTitle=Edit Login
+editLogin.saved1=Saved login
+editLogin.couldNotSave=Changes could not be saved
+
+loginsDetails.age=Age: %S days
+
+loginsDetails.copyFailed=Copy failed
+loginsDetails.passwordCopied=Password copied
+loginsDetails.usernameCopied=Username copied
+
+password-btn.show=Show
+password-btn.hide=Hide
diff --git a/mobile/android/locales/en-US/chrome/aboutPrivateBrowsing.dtd b/mobile/android/locales/en-US/chrome/aboutPrivateBrowsing.dtd
new file mode 100644
index 000000000..8176940bb
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/aboutPrivateBrowsing.dtd
@@ -0,0 +1,25 @@
+<!-- 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/. -->
+
+<!ENTITY privatebrowsingpage.title "Private Browsing">
+
+<!-- Localisation note: the plus sign here is a shorthand way of expressing the word "and". Contextually the privatebrowsingpage.title.private string
+ is used as a title, with the privatebrowsingpage.title string preceding it but on a separate line.
+ So the final line will say "Private Browsing + Tracking Protection". -->
+<!ENTITY privatebrowsingpage.title.private "+ Tracking Protection">
+<!-- Localization note (privatebrowsingpage.title.normal1): "Private Browsing"
+ is capitalized in English to be consistent with our existing uses of the
+ term. -->
+<!ENTITY privatebrowsingpage.title.normal1 "You are not in Private Browsing">
+
+<!ENTITY privatebrowsingpage.description.trackingProtection "&brandShortName; blocks parts of the pages that may track your browsing activity.">
+<!ENTITY privatebrowsingpage.description.privateDetails "We won't remember any history, but downloaded files and new bookmarks will still be saved to your device.">
+
+<!-- Localization note (privatebrowsingpage.description.normal2): "Private
+ Browsing is capitalized in English to be consistent with our existing uses
+ of the term. -->
+<!ENTITY privatebrowsingpage.description.normal2 "In Private Browsing, we won't keep any of your browsing history or cookies. Bookmarks you add and files you download will still be saved on your device.">
+
+<!ENTITY privatebrowsingpage.link.private "Want to learn more?">
+<!ENTITY privatebrowsingpage.link.normal "Open a new private tab">
diff --git a/mobile/android/locales/en-US/chrome/browser.properties b/mobile/android/locales/en-US/chrome/browser.properties
new file mode 100644
index 000000000..ae2fc3a8c
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/browser.properties
@@ -0,0 +1,462 @@
+# 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/.
+
+addonsConfirmInstall.title=Installing Add-on
+addonsConfirmInstall.install=Install
+
+addonsConfirmInstallUnsigned.title=Unverified add-on
+addonsConfirmInstallUnsigned.message=This site would like to install an unverified add-on. Proceed at your own risk.
+
+# Alerts
+alertAddonsDownloading=Downloading add-on
+alertAddonsInstalledNoRestart.message=Installation complete
+
+# LOCALIZATION NOTE (alertAddonsInstalledNoRestart.action2): Ideally, this string is short (it's a
+# button label) and upper-case, to match Google and Android's convention.
+alertAddonsInstalledNoRestart.action2=ADD-ONS
+
+alertDownloadsStart2=Download starting
+alertDownloadsDone2=Download complete
+alertCantOpenDownload=Can't open file. Tap to save it.
+alertDownloadsSize=Download too big
+alertDownloadsNoSpace=Not enough storage space
+alertDownloadsToast=Download started…
+alertDownloadsPause=Pause
+alertDownloadsResume=Resume
+alertDownloadsCancel=Cancel
+# LOCALIZATION NOTE (alertDownloadSucceeded): This text is shown as a snackbar inside the app after a
+# successful download. %S will be replaced by the file name of the download.
+alertDownloadSucceeded=%S downloaded
+# LOCALIZATION NOTE (downloads.disabledInGuest): This message appears in a toast
+# when the user tries to download something in Guest mode.
+downloads.disabledInGuest=Downloads are disabled in guest sessions
+
+# LOCALIZATION NOTE (alertSearchEngineAddedToast, alertSearchEngineErrorToast, alertSearchEngineDuplicateToast)
+# %S will be replaced by the name of the search engine (exposed by the current page)
+# that has been added; for example, 'Google'.
+alertSearchEngineAddedToast='%S' has been added as a search engine
+alertSearchEngineErrorToast=Couldn't add '%S' as a search engine
+alertSearchEngineDuplicateToast='%S' is already one of your search engines
+
+alertPrintjobToast=Printing…
+
+downloadCancelPromptTitle1=Abort Download
+downloadCancelPromptMessage1=Do you want to abort this download?
+
+addonError.titleError=Error
+addonError.titleBlocked=Blocked add-on
+addonError.learnMore=Learn more
+
+# LOCALIZATION NOTE (unsignedAddonsDisabled.title, unsignedAddonsDisabled.message):
+# These strings will appear in a dialog when Firefox detects that installed add-ons cannot be verified.
+unsignedAddonsDisabled.title=Unverified add-ons
+unsignedAddonsDisabled.message=One or more installed add-ons cannot be verified and have been disabled.
+unsignedAddonsDisabled.dismiss=Dismiss
+unsignedAddonsDisabled.viewAddons=View add-ons
+
+# LOCALIZATION NOTE (addonError-1, addonError-2, addonError-3, addonError-4, addonError-5):
+# #1 is the add-on name, #2 is the add-on host, #3 is the application name
+addonError-1=The add-on could not be downloaded because of a connection failure on #2.
+addonError-2=The add-on from #2 could not be installed because it does not match the add-on #3 expected.
+addonError-3=The add-on downloaded from #2 could not be installed because it appears to be corrupt.
+addonError-4=#1 could not be installed because #3 cannot modify the needed file.
+addonError-5=#3 has prevented #2 from installing an unverified add-on.
+
+# LOCALIZATION NOTE (addonLocalError-1, addonLocalError-2, addonLocalError-3, addonLocalError-4, addonLocalError-5, addonErrorIncompatible, addonErrorBlocklisted):
+# #1 is the add-on name, #3 is the application name, #4 is the application version
+addonLocalError-1=This add-on could not be installed because of a filesystem error.
+addonLocalError-2=This add-on could not be installed because it does not match the add-on #3 expected.
+addonLocalError-3=This add-on could not be installed because it appears to be corrupt.
+addonLocalError-4=#1 could not be installed because #3 cannot modify the needed file.
+addonLocalError-5=This add-on could not be installed because it has not been verified.
+addonErrorIncompatible=#1 could not be installed because it is not compatible with #3 #4.
+addonErrorBlocklisted=#1 could not be installed because it has a high risk of causing stability or security problems.
+
+# Notifications
+notificationRestart.normal=Restart to complete changes.
+notificationRestart.blocked=Unsafe add-ons installed. Restart to disable.
+notificationRestart.button=Restart
+doorhanger.learnMore=Learn more
+
+# Popup Blocker
+
+# LOCALIZATION NOTE (popup.message): Semicolon-separated list of plural forms.
+# #1 is brandShortName and #2 is the number of pop-ups blocked.
+popup.message=#1 prevented this site from opening a pop-up window. Would you like to show it?;#1 prevented this site from opening #2 pop-up windows. Would you like to show them?
+popup.dontAskAgain=Don't ask again for this site
+popup.show=Show
+popup.dontShow=Don't show
+
+# SafeBrowsing
+safeBrowsingDoorhanger=This site has been identified as containing malware or a phishing attempt. Be careful.
+
+# LOCALIZATION NOTE (blockPopups.label2): Label that will be used in
+# site settings dialog.
+blockPopups.label2=Popups
+
+# XPInstall
+xpinstallPromptWarning2=%S prevented this site (%S) from asking you to install software on your device.
+xpinstallPromptWarningLocal=%S prevented this add-on (%S) from installing on your device.
+xpinstallPromptWarningDirect=%S prevented an add-on from installing on your device.
+xpinstallPromptAllowButton=Allow
+xpinstallDisabledMessageLocked=Software installation has been disabled by your system administrator.
+xpinstallDisabledMessage2=Software installation is currently disabled. Press Enable and try again.
+xpinstallDisabledButton=Enable
+
+# Site Identity
+identity.identified.verifier=Verified by: %S
+identity.identified.verified_by_you=You have added a security exception for this site
+identity.identified.state_and_country=%S, %S
+identity.identified.title_with_country=%S (%S)
+
+# Geolocation UI
+geolocation.allow=Share
+geolocation.dontAllow=Don't share
+geolocation.ask=Share your location with %S?
+# LOCALIZATION NOTE (geolocation.location): Label that will be used in
+# site settings dialog.
+geolocation.location=Location
+# LOCALIZATION NOTE (geolocation.dontAskAgain): This label appears next to a
+# checkbox to indicate whether or not the user wants to make a permanent decision.
+geolocation.dontAskAgain=Don't ask again for this site
+
+# Desktop notification UI
+desktopNotification2.allow=Always
+desktopNotification2.dontAllow=Never
+desktopNotification2.ask=Would you like to receive notifications from this site?
+# LOCALIZATION NOTE (desktopNotification.notifications): Label that will be
+# used in site settings dialog.
+desktopNotification.notifications=Notifications
+
+# FlyWeb UI
+# LOCALIZATION NOTE (flyWebPublishServer.allow): This is an experimental feature only shipping in Nightly, and doesn't need translation.
+flyWebPublishServer.allow=Allow
+# LOCALIZATION NOTE (flyWebPublishServer.dontAllow): This is an experimental feature only shipping in Nightly, and doesn't need translation.
+flyWebPublishServer.dontAllow=Deny
+# LOCALIZATION NOTE (flyWebPublishServer.ask): This is an experimental feature only shipping in Nightly, and doesn't need translation.
+flyWebPublishServer.ask=Would you like to let this site start a server accessible to nearby devices and people?
+# LOCALIZATION NOTE (flyWebPublishServer.dontAskAgain): This is an experimental feature only shipping in Nightly, and doesn't need translation.
+flyWebPublishServer.dontAskAgain=Don't ask again for this site
+# LOCALIZATION NOTE (flyWebPublishServer.publishServer): This is an experimental feature only shipping in Nightly, and doesn't need translation.
+flyWebPublishServer.publishServer=Publish Server
+
+# Imageblocking
+imageblocking.downloadedImage=Image unblocked
+imageblocking.showAllImages=Show All
+
+# Device Storage API
+deviceStorageMusic.allow=Allow
+deviceStorageMusic.dontAllow=Don't allow
+deviceStorageMusic.ask=Allow %S access to your music?
+# LOCALIZATION NOTE (deviceStorageMusic.dontAskAgain): This label appears next to a
+# checkbox to indicate whether or not the user wants to make a permanent decision.
+deviceStorageMusic.dontAskAgain=Don't ask again for this site
+
+deviceStoragePictures.allow=Allow
+deviceStoragePictures.dontAllow=Don't allow
+deviceStoragePictures.ask=Allow %S access to your images?
+# LOCALIZATION NOTE (deviceStoragePictures.dontAskAgain): This label appears next to a
+# checkbox to indicate whether or not the user wants to make a permanent decision.
+deviceStoragePictures.dontAskAgain=Don't ask again for this site
+
+deviceStorageSdcard.allow=Allow
+deviceStorageSdcard.dontAllow=Don't allow
+deviceStorageSdcard.ask=Allow %S access to external storage?
+# LOCALIZATION NOTE (deviceStorageSdcard.dontAskAgain): This label appears next to a
+# checkbox to indicate whether or not the user wants to make a permanent decision.
+deviceStorageSdcard.dontAskAgain=Don't ask again for this site
+
+deviceStorageVideos.allow=Allow
+deviceStorageVideos.dontAllow=Don't allow
+deviceStorageVideos.ask=Allow %S access to your videos?
+# LOCALIZATION NOTE (deviceStorageVideos.dontAskAgain): This label appears next to a
+# checkbox to indicate whether or not the user wants to make a permanent decision.
+deviceStorageVideos.dontAskAgain=Don't ask again for this site
+
+# New Tab Popup
+# LOCALIZATION NOTE (newtabpopup, newprivatetabpopup): Semicolon-separated list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #1 number of tabs
+newtabpopup.opened=New tab opened;#1 new tabs opened
+newprivatetabpopup.opened=New private tab opened;#1 new private tabs opened
+
+# LOCALIZATION NOTE (newtabpopup.switch): Ideally, this string is short (it's a
+# button label) and upper-case, to match Google and Android's convention.
+newtabpopup.switch=SWITCH
+
+# Undo close tab toast
+# LOCALIZATION NOTE (undoCloseToast.message): This message appears in a toast
+# when the user closes a tab. %S is the title of the tab that was closed.
+undoCloseToast.message=Closed %S
+
+# Private Tab closed message
+# LOCALIZATION NOTE (privateClosedMessage.message): This message appears
+# when the user closes a private tab.
+privateClosedMessage.message=Closed Private Browsing
+
+# LOCALIZATION NOTE (undoCloseToast.messageDefault): This message appears in a
+# toast when the user closes a tab if there is no title to display.
+undoCloseToast.messageDefault=Closed tab
+
+# LOCALIZATION NOTE (undoCloseToast.action2): Ideally, this string is short (it's a
+# button label) and upper-case, to match Google and Android's convention.
+undoCloseToast.action2=UNDO
+
+# Offline web applications
+offlineApps.ask=Allow %S to store data on your device for offline use?
+offlineApps.dontAskAgain=Don't ask again for this site
+offlineApps.allow=Allow
+offlineApps.dontAllow2=Don't allow
+
+# LOCALIZATION NOTE (offlineApps.offlineData): Label that will be used in
+# site settings dialog.
+offlineApps.offlineData=Offline Data
+
+# LOCALIZATION NOTE (password.logins): Label that will be used in
+ # site settings dialog.
+password.logins=Logins
+# LOCALIZATION NOTE (password.save): This should match
+# saveButton in passwordmgr.properties
+password.save=Save
+# LOCALIZATION NOTE (password.dontSave): This should match
+# dontSaveButton in passwordmgr.properties
+password.dontSave=Don't save
+
+# LOCALIZATION NOTE (browser.menu.showCharacterEncoding): Set to the string
+# "true" (spelled and capitalized exactly that way) to show the "Character
+# Encoding" menu in the site menu. Any other value will hide it. Without this
+# setting, the "Character Encoding" menu must be enabled via Preferences.
+# This is not a string to translate. If users frequently use the "Character Encoding"
+# menu, set this to "true". Otherwise, you can leave it as "false".
+browser.menu.showCharacterEncoding=false
+
+# Text Selection
+selectionHelper.textCopied=Text copied to clipboard
+
+# Casting
+# LOCALIZATION NOTE (casting.sendToDevice): Label that will be used in the
+# dialog/prompt.
+casting.sendToDevice=Send to Device
+casting.mirrorTab=Mirror Tab
+casting.mirrorTabStop=Stop Mirror
+
+# Context menu
+contextmenu.openInNewTab=Open Link in New Tab
+contextmenu.openInPrivateTab=Open Link in Private Tab
+contextmenu.share=Share
+contextmenu.copyLink=Copy Link
+contextmenu.shareLink=Share Link
+contextmenu.bookmarkLink=Bookmark Link
+contextmenu.copyEmailAddress=Copy Email Address
+contextmenu.shareEmailAddress=Share Email Address
+contextmenu.copyPhoneNumber=Copy Phone Number
+contextmenu.sharePhoneNumber=Share Phone Number
+contextmenu.changeInputMethod=Select Input Method
+contextmenu.fullScreen=Full Screen
+contextmenu.viewImage=View Image
+contextmenu.copyImageLocation=Copy Image Location
+contextmenu.shareImage=Share Image
+# LOCALIZATION NOTE (contextmenu.search):
+# The label of the contextmenu item which allows you to search with your default search engine for
+# the text you have selected. %S is the name of the search engine. For example, "Google".
+contextmenu.search=%S Search
+contextmenu.saveImage=Save Image
+contextmenu.showImage=Show Image
+contextmenu.setImageAs=Set Image As
+# LOCALIZATION NOTE (contextmenu.addSearchEngine3): This string should be rather short. If it is
+# significantly longer than the translation for the "Paste" action then this might trigger an
+# Android bug positioning the floating text selection partially off the screen. This issue heavily
+# depends on the screen size and the specific translations. For English "Paste" / "Add search engine"
+# is working while "Paste" / "Add as search engine" triggers the bug. See bug 1262098 for more details.
+# Manual testing the scenario described in bug 1262098 is highly recommended.
+contextmenu.addSearchEngine3=Add Search Engine
+contextmenu.playMedia=Play
+contextmenu.pauseMedia=Pause
+contextmenu.shareMedia=Share Video
+contextmenu.showControls2=Show Controls
+contextmenu.mute=Mute
+contextmenu.unmute=Unmute
+contextmenu.saveVideo=Save Video
+contextmenu.saveAudio=Save Audio
+contextmenu.addToContacts=Add to Contacts
+# LOCALIZATION NOTE (contextmenu.sendToDevice):
+# The label that will be used in the contextmenu and the pageaction
+contextmenu.sendToDevice=Send to Device
+
+contextmenu.copy=Copy
+contextmenu.cut=Cut
+contextmenu.selectAll=Select All
+contextmenu.paste=Paste
+
+contextmenu.call=Call
+
+# Select UI
+selectHelper.closeMultipleSelectDialog=Done
+
+#Input widgets UI
+inputWidgetHelper.date=Pick a date
+inputWidgetHelper.datetime=Pick a date and a time
+inputWidgetHelper.datetime-local=Pick a date and a time
+inputWidgetHelper.time=Pick a time
+inputWidgetHelper.week=Pick a week
+inputWidgetHelper.month=Pick a month
+inputWidgetHelper.cancel=Cancel
+inputWidgetHelper.set=Set
+inputWidgetHelper.clear=Clear
+
+# Web Console API
+stacktrace.anonymousFunction=<anonymous>
+stacktrace.outputMessage=Stack trace from %S, function %S, line %S.
+timer.start=%S: timer started
+
+# LOCALIZATION NOTE (timer.end):
+# This string is used to display the result of the console.timeEnd() call.
+# %1$S=name of timer, %2$S=number of milliseconds
+timer.end=%1$S: %2$Sms
+
+# Click to play plugins
+clickToPlayPlugins.message2=%S contains plugin content. Would you like to activate it?
+clickToPlayPlugins.activate=Activate
+clickToPlayPlugins.dontActivate=Don't activate
+# LOCALIZATION NOTE (clickToPlayPlugins.dontAskAgain): This label appears next to a
+# checkbox to indicate whether or not the user wants to make a permanent decision.
+clickToPlayPlugins.dontAskAgain=Don't ask again for this site
+# LOCALIZATION NOTE (clickToPlayPlugins.plugins): Label that
+# will be used in site settings dialog.
+clickToPlayPlugins.plugins=Plugins
+
+# Site settings dialog
+# LOCALIZATION NOTE (siteSettings.labelToValue): This string will be used to
+# dislay a list of current permissions settings for a site.
+# Example: "Store Offline Data: Allow"
+siteSettings.labelToValue=%S: %S
+
+masterPassword.incorrect=Incorrect password
+
+# Debugger
+# LOCALIZATION NOTE (remoteIncomingPromptTitle): The title displayed on the
+# dialog that prompts the user to allow the incoming connection.
+remoteIncomingPromptTitle=Incoming Connection
+# LOCALIZATION NOTE (remoteIncomingPromptUSB): The message displayed on the
+# dialog that prompts the user to allow an incoming USB connection.
+remoteIncomingPromptUSB=Allow USB debugging connection?
+# LOCALIZATION NOTE (remoteIncomingPromptUSB): The message displayed on the
+# dialog that prompts the user to allow an incoming TCP connection.
+remoteIncomingPromptTCP=Allow remote debugging connection from %1$S:%2$S? This connection requires a QR code to be scanned in order to authenticate the remote device's certificate. You can avoid future scans by remembering the device.
+# LOCALIZATION NOTE (remoteIncomingPromptDeny): This button will deny an
+# an incoming remote debugger connection.
+remoteIncomingPromptDeny=Deny
+# LOCALIZATION NOTE (remoteIncomingPromptAllow): This button will allow an
+# an incoming remote debugger connection.
+remoteIncomingPromptAllow=Allow
+# LOCALIZATION NOTE (remoteIncomingPromptScan): This button will start a QR
+# code scanner to authenticate an incoming remote debugger connection. The
+# connection will be allowed assuming the scan succeeds.
+remoteIncomingPromptScan=Scan
+# LOCALIZATION NOTE (remoteIncomingPromptScanAndRemember): This button will
+# start a QR code scanner to authenticate an incoming remote debugger
+# connection. The connection will be allowed assuming the scan succeeds, and
+# the other endpoint's certificate will be saved to skip future scans for this
+# client.
+remoteIncomingPromptScanAndRemember=Scan and Remember
+# LOCALIZATION NOTE (remoteQRScanFailedPromptTitle): The title displayed in a
+# dialog when we are unable to complete the QR code scan for an incoming remote
+# debugging connection.
+remoteQRScanFailedPromptTitle=QR Scan Failed
+# LOCALIZATION NOTE (remoteQRScanFailedPromptMessage): The message displayed in
+# a dialog when we are unable to complete the QR code scan for an incoming
+# remote debugging connection.
+remoteQRScanFailedPromptMessage=Unable to scan QR code for remote debugging. Verify that the Barcode Scanner app is installed and retry connecting.
+# LOCALIZATION NOTE (remoteQRScanFailedPromptOK): This button dismisses the
+# dialog that appears when we are unable to complete the QR code scan for an
+# incoming remote debugging connection.
+remoteQRScanFailedPromptOK=OK
+
+# LOCALIZATION NOTE (remoteNotificationTitle): %S is the name of the app.
+remoteNotificationTitle=%S debugging enabled
+# LOCALIZATION NOTE (remoteNotificationGenericName): a generic name to use
+# if the name of the app is not available.
+remoteNotificationGenericName=App
+# LOCALIZATION NOTE (remoteNotificationMessage): %S is the port on which
+# the remote debugger server is listening.
+remoteNotificationMessage=Listening on port %S
+# LOCALIZATION NOTE (remoteStartNotificationTitle): %S is the name of the app.
+remoteStartNotificationTitle=Activate debugging for %S
+# LOCALIZATION NOTE (remoteStartNotificationMessage):
+remoteStartNotificationMessage=Touch to activate remote debugger
+
+# Helper apps
+helperapps.open=Open
+helperapps.ignore=Ignore
+helperapps.dontAskAgain=Don't ask again for this site
+helperapps.openWithApp2=Open With %S App
+helperapps.openWithList2=Open With an App
+helperapps.always=Always
+helperapps.never=Never
+helperapps.pick=Complete action using
+helperapps.saveToDisk=Download
+helperapps.alwaysUse=Always
+helperapps.useJustOnce=Just once
+
+#Lightweight themes
+# LOCALIZATION NOTE (lwthemeInstallRequest.message): %S will be replaced with
+# the host name of the site.
+lwthemeInstallRequest.message=This site (%S) attempted to install a theme.
+lwthemeInstallRequest.allowButton=Allow
+
+# LOCALIZATION NOTE (getUserMedia.shareCamera.message, getUserMedia.shareMicrophone.message, getUserMedia.shareCameraAndMicrophone.message, getUserMedia.sharingCamera.message, getUserMedia.sharingMicrophone.message, getUserMedia.sharingCameraAndMicrophone.message): %S is the website origin (e.g. www.mozilla.org)
+getUserMedia.shareCamera.message = Would you like to share your camera with %S?
+getUserMedia.shareMicrophone.message = Would you like to share your microphone with %S?
+getUserMedia.shareCameraAndMicrophone.message = Would you like to share your camera and microphone with %S?
+getUserMedia.denyRequest.label = Don't Share
+getUserMedia.shareRequest.label = Share
+getUserMedia.videoSource.default = Camera %S
+getUserMedia.videoSource.frontCamera = Front facing camera
+getUserMedia.videoSource.backCamera = Back facing camera
+getUserMedia.videoSource.none = No Video
+getUserMedia.videoSource.tabShare = Choose a tab to stream
+getUserMedia.videoSource.prompt = Video source
+getUserMedia.audioDevice.default = Microphone %S
+getUserMedia.audioDevice.none = No Audio
+getUserMedia.audioDevice.prompt = Microphone to use
+getUserMedia.sharingCamera.message2 = Camera is on
+getUserMedia.sharingMicrophone.message2 = Microphone is on
+getUserMedia.sharingCameraAndMicrophone.message2 = Camera and microphone are on
+getUserMedia.blockedCameraAccess = Camera has been blocked.
+getUserMedia.blockedMicrophoneAccess = Microphone has been blocked.
+getUserMedia.blockedCameraAndMicrophoneAccess = Camera and microphone have been blocked.
+
+# LOCALIZATION NOTE (readerMode.toolbarTip):
+# Tip shown to users the first time we hide the reader mode toolbar.
+readerMode.toolbarTip=Tap the screen to show reader options
+
+#Open in App
+openInApp.pageAction = Open in App
+openInApp.ok = OK
+openInApp.cancel = Cancel
+
+#Tab sharing
+tabshare.title = "Choose a tab to stream"
+#Tabs in context menus
+browser.menu.context.default = Link
+browser.menu.context.img = Image
+browser.menu.context.video = Video
+browser.menu.context.audio = Audio
+browser.menu.context.tel = Phone
+browser.menu.context.mailto = Mail
+
+# "Subscribe to page" prompts created in FeedHandler.js
+feedHandler.chooseFeed=Choose feed
+feedHandler.subscribeWith=Subscribe with
+
+# LOCALIZATION NOTE (nativeWindow.deprecated):
+# This string is shown in the console when someone uses deprecated NativeWindow apis.
+# %1$S=name of the api that's deprecated, %2$S=New API to use. This may be a url to
+# a file they should import or the name of an api.
+nativeWindow.deprecated=%1$S is deprecated. Please use %2$S instead
+
+# Vibration API permission prompt
+vibrationRequest.message = Allow this site to vibrate your device?
+vibrationRequest.denyButton = Don't allow
+vibrationRequest.allowButton = Allow
diff --git a/mobile/android/locales/en-US/chrome/checkbox.dtd b/mobile/android/locales/en-US/chrome/checkbox.dtd
new file mode 100644
index 000000000..523375f7c
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/checkbox.dtd
@@ -0,0 +1,6 @@
+<!-- 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/. -->
+
+<!ENTITY checkbox.yes.label "Yes">
+<!ENTITY checkbox.no.label "No">
diff --git a/mobile/android/locales/en-US/chrome/config.dtd b/mobile/android/locales/en-US/chrome/config.dtd
new file mode 100644
index 000000000..95502af40
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/config.dtd
@@ -0,0 +1,21 @@
+<!-- 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/. -->
+
+
+<!ENTITY toolbar.searchPlaceholder "Search">
+
+<!ENTITY newPref.namePlaceholder "Name">
+
+<!ENTITY newPref.valueBoolean "Boolean">
+<!ENTITY newPref.valueString "String">
+<!ENTITY newPref.valueInteger "Integer">
+
+<!ENTITY newPref.stringPlaceholder "Enter a string">
+<!ENTITY newPref.numberPlaceholder "Enter a number">
+
+<!ENTITY newPref.toggleButton "Toggle">
+<!ENTITY newPref.cancelButton "Cancel">
+
+<!ENTITY contextMenu.copyPrefName "Copy Name">
+<!ENTITY contextMenu.copyPrefValue "Copy Value">
diff --git a/mobile/android/locales/en-US/chrome/config.properties b/mobile/android/locales/en-US/chrome/config.properties
new file mode 100644
index 000000000..61fdf73b3
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/config.properties
@@ -0,0 +1,9 @@
+# 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/.
+
+newPref.createButton=Create
+newPref.changeButton=Change
+
+pref.toggleButton=Toggle
+pref.resetButton=Reset
diff --git a/mobile/android/locales/en-US/chrome/devicePrompt.properties b/mobile/android/locales/en-US/chrome/devicePrompt.properties
new file mode 100644
index 000000000..493abd6c1
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/devicePrompt.properties
@@ -0,0 +1,5 @@
+# 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/.
+
+deviceMenu.title=Nearby Devices
diff --git a/mobile/android/locales/en-US/chrome/handling.properties b/mobile/android/locales/en-US/chrome/handling.properties
new file mode 100644
index 000000000..d0aa08bb1
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/handling.properties
@@ -0,0 +1,5 @@
+# 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/.
+
+download.blocked=Unable to download file
diff --git a/mobile/android/locales/en-US/chrome/phishing.dtd b/mobile/android/locales/en-US/chrome/phishing.dtd
new file mode 100644
index 000000000..3123556da
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/phishing.dtd
@@ -0,0 +1,23 @@
+<!-- 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/. -->
+
+<!ENTITY safeb.palm.accept.label "Get me out of here!">
+<!ENTITY safeb.palm.decline.label "Ignore this warning">
+<!ENTITY safeb.palm.reportPage.label "Why was this page blocked?">
+
+<!ENTITY safeb.blocked.malwarePage.title "Reported Attack Page!">
+<!-- Localization note (safeb.blocked.malware.shortDesc) - Please don't translate the contents of the <span id="malware_sitename"/> tag. It will be replaced at runtime with a domain name (e.g. www.badsite.com) -->
+<!ENTITY safeb.blocked.malwarePage.shortDesc "This web page at <span id='malware_sitename'/> has been reported as an attack page and has been blocked based on your security preferences.">
+<!ENTITY safeb.blocked.malwarePage.longDesc "<p>Attack pages try to install programs that steal private information, use your computer to attack others, or damage your system.</p><p>Some attack pages intentionally distribute harmful software, but many are compromised without the knowledge or permission of their owners.</p>">
+
+<!ENTITY safeb.blocked.phishingPage.title3 "Deceptive Site!">
+<!-- Localization note (safeb.blocked.phishingPage.shortDesc3) - Please don't translate the contents of the <span id="phishing_sitename"/> tag. It will be replaced at runtime with a domain name (e.g. www.badsite.com) -->
+<!ENTITY safeb.blocked.phishingPage.shortDesc3 "This web page at <span id='phishing_sitename'/> has been reported as a deceptive site and has been blocked based on your security preferences.">
+<!ENTITY safeb.blocked.phishingPage.longDesc3 "<p>Deceptive sites are designed to trick you into doing something dangerous, like installing software, or revealing your personal information, like passwords, phone numbers or credit cards.</p><p>Entering any information on this web page may result in identity theft or other fraud.</p>">
+
+<!ENTITY safeb.blocked.unwantedPage.title "Reported Unwanted Software Site!">
+<!-- Localization note (safeb.blocked.unwanted.shortDesc) - Please don't translate the contents of the <span id="unwanted_sitename"/> tag. It will be replaced at runtime with a domain name (e.g. www.badsite.com) -->
+<!ENTITY safeb.blocked.unwantedPage.shortDesc "This web page at <span id='unwanted_sitename'/> has been reported to contain unwanted software and has been blocked based on your security preferences.">
+<!ENTITY safeb.blocked.unwantedPage.longDesc "Unwanted software pages try to install software that can be deceptive and affect your system in unexpected ways.">
+
diff --git a/mobile/android/locales/en-US/chrome/pippki.properties b/mobile/android/locales/en-US/chrome/pippki.properties
new file mode 100644
index 000000000..1102f0b00
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/pippki.properties
@@ -0,0 +1,85 @@
+# 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/.
+
+nssdialogs.ok.label=OK
+nssdialogs.cancel.label=Cancel
+
+# These strings are stolen from security/manager/locales/en-US/chrome/pippki/pippki.dtd
+downloadCert.title=Downloading Certificate
+downloadCert.message1=You have been asked to trust a new Certificate Authority (CA).
+downloadCert.viewCert.label=View
+downloadCert.trustSSL=Trust to identify websites.
+downloadCert.trustEmail=Trust to identify email users.
+downloadCert.trustObjSign=Trust to identify software developers.
+pkcs12.getpassword.title=Password Entry Dialog
+pkcs12.getpassword.message=Please enter the password that was used to encrypt this certificate backup.
+clientAuthAsk.title=User Identification Request
+clientAuthAsk.message1=This site has requested that you identify yourself with a certificate:
+clientAuthAsk.message2=Choose a certificate to present as identification:
+clientAuthAsk.message3=Details of selected certificate:
+clientAuthAsk.remember.label=Remember this decision
+# LOCALIZATION NOTE(clientAuthAsk.nickAndSerial): Represents a single cert when
+# the user is choosing from a list of certificates.
+# %1$S is the nickname of the cert.
+# %2$S is the serial number of the cert in AA:BB:CC hex format.
+clientAuthAsk.nickAndSerial=%1$S [%2$S]
+# LOCALIZATION NOTE(clientAuthAsk.hostnameAndPort):
+# %1$S is the hostname of the server.
+# %2$S is the port of the server.
+clientAuthAsk.hostnameAndPort=%1$S:%2$S
+# LOCALIZATION NOTE(clientAuthAsk.organization): %S is the Organization of the
+# server cert.
+clientAuthAsk.organization=Organization: "%S"
+# LOCALIZATION NOTE(clientAuthAsk.issuer): %S is the Organization of the
+# issuer cert of the server cert.
+clientAuthAsk.issuer=Issued Under: "%S"
+# LOCALIZATION NOTE(clientAuthAsk.issuedTo): %1$S is the Distinguished Name of
+# the currently selected client cert, such as "CN=John Doe,OU=Example" (without
+# quotes).
+clientAuthAsk.issuedTo=Issued to: %1$S
+# LOCALIZATION NOTE(clientAuthAsk.serial): %1$S is the serial number of the
+# selected cert in AA:BB:CC hex format.
+clientAuthAsk.serial=Serial number: %1$S
+# LOCALIZATION NOTE(clientAuthAsk.validityPeriod):
+# %1$S is the already localized notBefore date of the selected cert.
+# %2$S is the already localized notAfter date of the selected cert.
+clientAuthAsk.validityPeriod=Valid from %1$S to %2$S
+# LOCALIZATION NOTE(clientAuthAsk.keyUsages): %1$S is a comma separated list of
+# already localized key usages the selected cert is valid for.
+clientAuthAsk.keyUsages=Key Usages: %1$S
+# LOCALIZATION NOTE(clientAuthAsk.emailAddresses): %1$S is a comma separated
+# list of e-mail addresses the selected cert is valid for.
+clientAuthAsk.emailAddresses=Email addresses: %1$S
+# LOCALIZATION NOTE(clientAuthAsk.issuedBy): %1$S is the Distinguished Name of
+# the cert which issued the selected cert.
+clientAuthAsk.issuedBy=Issued by: %1$S
+# LOCALIZATION NOTE(clientAuthAsk.storedOn): %1$S is the name of the PKCS #11
+# token the selected cert is stored on.
+clientAuthAsk.storedOn=Stored on: %1$S
+clientAuthAsk.viewCert.label=View
+
+certmgr.title=Certificate Details
+# These strings are stolen from security/manager/locales/en-US/chrome/pippki/certManager.dtd
+certmgr.subjectinfo.label=Issued To
+certmgr.issuerinfo.label=Issued By
+certmgr.periodofvalidity.label=Period of Validity
+certmgr.fingerprints.label=Fingerprints
+certdetail.cn=Common Name (CN): %1$S
+certdetail.o=Organization (O): %1$S
+certdetail.ou=Organizational Unit (OU): %1$S
+# LOCALIZATION NOTE(certdetail.serialnumber): %1$S is the serial number of the
+# cert being viewed in AA:BB:CC hex format.
+certdetail.serialnumber=Serial Number: %1$S
+# LOCALIZATION NOTE(certdetail.sha256fingerprint): %1$S is the SHA-256
+# Fingerprint of the cert being viewed in AA:BB:CC hex format.
+certdetail.sha256fingerprint=SHA-256 Fingerprint: %1$S
+# LOCALIZATION NOTE(certdetail.sha1fingerprint): %1$S is the SHA-1 Fingerprint
+# of the cert being viewed in AA:BB:CC hex format.
+certdetail.sha1fingerprint=SHA1 Fingerprint: %1$S
+# LOCALIZATION NOTE(certdetail.notBefore): %1$S is the already localized
+# notBefore date of the cert being viewed.
+certdetail.notBefore=Begins On: %1$S
+# LOCALIZATION NOTE(certdetail.notAfter): %1$S is the already localized notAfter
+# date of the cert being viewed.
+certdetail.notAfter=Expires On: %1$S
diff --git a/mobile/android/locales/en-US/chrome/sync.properties b/mobile/android/locales/en-US/chrome/sync.properties
new file mode 100644
index 000000000..fa853efa7
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/sync.properties
@@ -0,0 +1,40 @@
+# 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/.
+
+# Mobile Sync
+
+# %S is the date and time at which the last sync successfully completed
+lastSync2.label=Last sync: %S
+lastSyncInProgress2.label=Last sync: in progress…
+
+# %S is the username logged in
+account.label=Account: %S
+notconnected.label=Not connected
+connecting.label=Connecting…
+
+notificationDisconnect.label=Your Firefox Sync account has been removed
+notificationDisconnect.button=Undo
+
+# LOCALIZATION NOTE (sync.clientUpdate, sync.remoteUpdate):
+# #1 is the "application name"
+# #2 is the "version"
+sync.update.client=#1 #2 is not compatible with the latest version of Firefox Sync. Please update to the latest version.
+sync.update.remote=#1 #2 is not compatible with older versions of Firefox Sync. Please update Firefox on your other computer(s).
+sync.update.title=Firefox Sync
+sync.update.button=Learn More
+sync.update.close=Close
+sync.setup.error.title=Cannot Setup Sync
+sync.setup.error.network=No internet connection available
+sync.setup.error.nodata=%S could not connect to Sync. Would you like to try again?
+sync.setup.tryagain=Try again
+sync.setup.manual=Manual setup
+
+sync.message.notabs=No tabs from your other computers.
+
+# LOCALIZATION NOTE (promoBanner.message.text): First part of the message displayed in a
+# banner on about:home. The final space separates this text from the link.
+promoBanner.message.text=Sync is brand new and easier than ever.\u0020
+
+# LOCALIZATION NOTE (promoBanner.message.link): Second part of the message, styled as a link.
+promoBanner.message.link=Tap here to learn more
diff --git a/mobile/android/locales/en-US/chrome/webcompatReporter.properties b/mobile/android/locales/en-US/chrome/webcompatReporter.properties
new file mode 100644
index 000000000..de20d762a
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/webcompatReporter.properties
@@ -0,0 +1,12 @@
+# 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/.
+
+# LOCALIZATION NOTE (webcompat.menu.name): A "site issue" is a bug, display,
+# or functionality problem with a webpage in the browser.
+webcompat.menu.name=Report site issue
+
+# LOCALIZATION NOTE (webcompat.reportDesktopMode.message): A " site issue" is a
+# bug, display, or functionality problem with a webpage in the browser.
+webcompat.reportDesktopMode.message=Report site issue?
+webcompat.reportDesktopModeYes.label=Report
diff --git a/mobile/android/locales/en-US/defines.inc b/mobile/android/locales/en-US/defines.inc
new file mode 100644
index 000000000..fb7fe4c93
--- /dev/null
+++ b/mobile/android/locales/en-US/defines.inc
@@ -0,0 +1,12 @@
+# 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/.
+#filter emptyLines
+
+#define MOZ_LANGPACK_CREATOR mozilla.org
+
+# If non-English locales wish to credit multiple contributors, uncomment this
+# variable definition and use the format specified.
+# #define MOZ_LANGPACK_CONTRIBUTORS <em:contributor>Joe Solon</em:contributor> <em:contributor>Suzy Solon</em:contributor>
+
+#unfilter emptyLines
diff --git a/mobile/android/locales/en-US/mobile-l10n.js b/mobile/android/locales/en-US/mobile-l10n.js
new file mode 100644
index 000000000..642ad6534
--- /dev/null
+++ b/mobile/android/locales/en-US/mobile-l10n.js
@@ -0,0 +1,7 @@
+# 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/.
+
+#filter substitution
+
+pref("general.useragent.locale", "@AB_CD@");
diff --git a/mobile/android/locales/filter.py b/mobile/android/locales/filter.py
new file mode 100644
index 000000000..26f68d8f0
--- /dev/null
+++ b/mobile/android/locales/filter.py
@@ -0,0 +1,45 @@
+# 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/.
+
+"""This routine controls which localizable files and entries are
+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":
+ 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"
+
+ # 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\.search\.[a-zA-Z]+\.US", 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) or
+ re.match(r"browser\.suggestedsites\.", entity)):
+ return "ignore"
+
+ return "error"
diff --git a/mobile/android/locales/jar.mn b/mobile/android/locales/jar.mn
new file mode 100644
index 000000000..011e409c2
--- /dev/null
+++ b/mobile/android/locales/jar.mn
@@ -0,0 +1,99 @@
+#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 browser @AB_CD@ %locale/@AB_CD@/browser/
+ locale/@AB_CD@/browser/about.dtd (%chrome/about.dtd)
+ locale/@AB_CD@/browser/aboutAccounts.dtd (%chrome/aboutAccounts.dtd)
+ locale/@AB_CD@/browser/aboutAccounts.properties (%chrome/aboutAccounts.properties)
+ 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/aboutDownloads.dtd (%chrome/aboutDownloads.dtd)
+ locale/@AB_CD@/browser/aboutDownloads.properties (%chrome/aboutDownloads.properties)
+ locale/@AB_CD@/browser/aboutHome.dtd (%chrome/aboutHome.dtd)
+ locale/@AB_CD@/browser/aboutHome.properties (%chrome/aboutHome.properties)
+ locale/@AB_CD@/browser/aboutPrivateBrowsing.dtd (%chrome/aboutPrivateBrowsing.dtd)
+#ifdef MOZ_SERVICES_HEALTHREPORT
+ locale/@AB_CD@/browser/aboutHealthReport.dtd (%chrome/aboutHealthReport.dtd)
+#endif
+ 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/checkbox.dtd (%chrome/checkbox.dtd)
+ locale/@AB_CD@/browser/devicePrompt.properties (%chrome/devicePrompt.properties)
+ locale/@AB_CD@/browser/pippki.properties (%chrome/pippki.properties)
+ locale/@AB_CD@/browser/sync.properties (%chrome/sync.properties)
+ locale/@AB_CD@/browser/phishing.dtd (%chrome/phishing.dtd)
+ locale/@AB_CD@/browser/handling.properties (%chrome/handling.properties)
+ locale/@AB_CD@/browser/aboutLogins.dtd (%chrome/aboutLogins.dtd)
+ locale/@AB_CD@/browser/aboutLogins.properties (%chrome/aboutLogins.properties)
+#ifndef RELEASE_OR_BETA
+ locale/@AB_CD@/browser/webcompatReporter.properties (%chrome/webcompatReporter.properties)
+#endif
+% resource search-plugins chrome://browser/locale/searchplugins/
+
+# overrides for toolkit l10n, also for en-US
+relativesrcdir toolkit/locales:
+ locale/@AB_CD@/browser/overrides/about.dtd (%chrome/global/about.dtd)
+ locale/@AB_CD@/browser/overrides/aboutAbout.dtd (%chrome/global/aboutAbout.dtd)
+ locale/@AB_CD@/browser/overrides/aboutReader.properties (%chrome/global/aboutReader.properties)
+ locale/@AB_CD@/browser/overrides/aboutRights.dtd (%chrome/global/aboutRights.dtd)
+ locale/@AB_CD@/browser/overrides/charsetMenu.properties (%chrome/global/charsetMenu.properties)
+ locale/@AB_CD@/browser/overrides/commonDialogs.properties (%chrome/global/commonDialogs.properties)
+ locale/@AB_CD@/browser/overrides/intl.properties (%chrome/global/intl.properties)
+ locale/@AB_CD@/browser/overrides/intl.css (%chrome/global/intl.css)
+ locale/@AB_CD@/browser/overrides/passwordmgr.properties (%chrome/passwordmgr/passwordmgr.properties)
+ locale/@AB_CD@/browser/overrides/search/search.properties (%chrome/search/search.properties)
+# plugins
+ locale/@AB_CD@/browser/overrides/plugins/pluginproblem.dtd (%chrome/pluginproblem/pluginproblem.dtd)
+# about:support
+ locale/@AB_CD@/browser/overrides/global/aboutSupport.dtd (%chrome/global/aboutSupport.dtd)
+ locale/@AB_CD@/browser/overrides/global/aboutSupport.properties (%chrome/global/aboutSupport.properties)
+#about:crashes
+ locale/@AB_CD@/browser/overrides/crashreporter/crashes.dtd (%crashreporter/crashes.dtd)
+ locale/@AB_CD@/browser/overrides/crashreporter/crashes.properties (%crashreporter/crashes.properties)
+#about:mozilla
+ locale/@AB_CD@/browser/overrides/global/mozilla.dtd (%chrome/global/mozilla.dtd)
+#about:telemetry
+ locale/@AB_CD@/browser/overrides/global/aboutTelemetry.dtd (%chrome/global/aboutTelemetry.dtd)
+ locale/@AB_CD@/browser/overrides/global/aboutTelemetry.properties (%chrome/global/aboutTelemetry.properties)
+#about:webrtc
+ locale/@AB_CD@/browser/overrides/global/aboutWebrtc.properties (%chrome/global/aboutWebrtc.properties)
+
+% override chrome://global/locale/about.dtd chrome://browser/locale/overrides/about.dtd
+% override chrome://global/locale/aboutAbout.dtd chrome://browser/locale/overrides/aboutAbout.dtd
+% override chrome://global/locale/aboutReader.properties chrome://browser/locale/overrides/aboutReader.properties
+% override chrome://global/locale/aboutRights.dtd chrome://browser/locale/overrides/aboutRights.dtd
+% override chrome://global/locale/charsetMenu.properties chrome://browser/locale/overrides/charsetMenu.properties
+% override chrome://global/locale/commonDialogs.properties chrome://browser/locale/overrides/commonDialogs.properties
+% override chrome://mozapps/locale/handling/handling.properties chrome://browser/locale/handling.properties
+% override chrome://global/locale/intl.properties chrome://browser/locale/overrides/intl.properties
+% override chrome://global/locale/intl.css chrome://browser/locale/overrides/intl.css
+% override chrome://passwordmgr/locale/passwordmgr.properties chrome://browser/locale/overrides/passwordmgr/passwordmgr.properties
+% override chrome://global/locale/search/search.properties chrome://browser/locale/overrides/search/search.properties
+% override chrome://pluginproblem/locale/pluginproblem.dtd chrome://browser/locale/overrides/plugins/pluginproblem.dtd
+% override chrome://global/locale/aboutSupport.dtd chrome://browser/locale/overrides/global/aboutSupport.dtd
+% override chrome://global/locale/aboutSupport.properties chrome://browser/locale/overrides/global/aboutSupport.properties
+% override chrome://global/locale/crashes.dtd chrome://browser/locale/overrides/crashreporter/crashes.dtd
+% override chrome://global/locale/crashes.properties chrome://browser/locale/overrides/crashreporter/crashes.properties
+% override chrome://global/locale/mozilla.dtd chrome://browser/locale/overrides/global/mozilla.dtd
+% override chrome://global/locale/aboutTelemetry.dtd chrome://browser/locale/overrides/global/aboutTelemetry.dtd
+% override chrome://global/locale/aboutTelemetry.properties chrome://browser/locale/overrides/global/aboutTelemetry.properties
+% override chrome://global/locale/aboutWebrtc.properties chrome://browser/locale/overrides/global/aboutWebrtc.properties
+
+# overrides for dom l10n, also for en-US
+relativesrcdir dom/locales:
+ locale/@AB_CD@/browser/overrides/global.dtd (%chrome/global.dtd)
+ locale/@AB_CD@/browser/overrides/AccessFu.properties (%chrome/accessibility/AccessFu.properties)
+ locale/@AB_CD@/browser/overrides/dom/dom.properties (%chrome/dom/dom.properties)
+#about:plugins
+ locale/@AB_CD@/browser/overrides/plugins.properties (%chrome/plugins.properties)
+
+% override chrome://global/locale/global.dtd chrome://browser/locale/overrides/global.dtd
+% override chrome://global/locale/AccessFu.properties chrome://browser/locale/overrides/AccessFu.properties
+% override chrome://global/locale/dom/dom.properties chrome://browser/locale/overrides/dom/dom.properties
+% override chrome://global/locale/plugins.properties chrome://browser/locale/overrides/plugins.properties
diff --git a/mobile/android/locales/l10n.ini b/mobile/android/locales/l10n.ini
new file mode 100644
index 000000000..1d6afa4a1
--- /dev/null
+++ b/mobile/android/locales/l10n.ini
@@ -0,0 +1,18 @@
+; 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/.
+
+# 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 mobile/android mobile/android/base
+
+[includes]
+toolkit = toolkit/locales/l10n.ini
+services_sync = services/sync/locales/l10n.ini
diff --git a/mobile/android/locales/maemo-locales b/mobile/android/locales/maemo-locales
new file mode 100644
index 000000000..111c2aa70
--- /dev/null
+++ b/mobile/android/locales/maemo-locales
@@ -0,0 +1,77 @@
+an
+as
+ast
+az
+bn-IN
+br
+ca
+cak
+cs
+cy
+da
+de
+dsb
+en-GB
+en-ZA
+eo
+es-AR
+es-CL
+es-ES
+es-MX
+et
+eu
+ff
+fi
+fr
+fy-NL
+ga-IE
+gd
+gl
+gn
+gu-IN
+hi-IN
+hr
+hsb
+hu
+hy-AM
+id
+is
+it
+ja
+ka
+kk
+kn
+ko
+lt
+lv
+mai
+ml
+mr
+ms
+my
+nb-NO
+nl
+nn-NO
+or
+pa-IN
+pl
+pt-BR
+pt-PT
+rm
+ro
+ru
+sk
+sl
+son
+sq
+sr
+sv-SE
+ta
+te
+th
+tr
+uk
+uz
+xh
+zh-CN
+zh-TW
diff --git a/mobile/android/locales/moz.build b/mobile/android/locales/moz.build
new file mode 100644
index 000000000..eb4454d28
--- /dev/null
+++ b/mobile/android/locales/moz.build
@@ -0,0 +1,7 @@
+# -*- Mode: python; 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'] \ No newline at end of file