summaryrefslogtreecommitdiffstats
path: root/mobile/android/locales
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/locales')
-rw-r--r--mobile/android/locales/Makefile.in82
-rw-r--r--mobile/android/locales/all-locales98
-rw-r--r--mobile/android/locales/en-US/chrome/browser.properties477
-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/passwordmgr.properties22
-rw-r--r--mobile/android/locales/en-US/defines.inc12
-rw-r--r--mobile/android/locales/en-US/mobile-l10n.js9
-rw-r--r--mobile/android/locales/filter.py87
-rw-r--r--mobile/android/locales/jar.mn62
-rw-r--r--mobile/android/locales/l10n.ini18
-rw-r--r--mobile/android/locales/l10n.toml256
-rw-r--r--mobile/android/locales/maemo-locales91
-rw-r--r--mobile/android/locales/moz.build10
14 files changed, 1254 insertions, 0 deletions
diff --git a/mobile/android/locales/Makefile.in b/mobile/android/locales/Makefile.in
new file mode 100644
index 0000000000..e205bc8d31
--- /dev/null
+++ b/mobile/android/locales/Makefile.in
@@ -0,0 +1,82 @@
+# 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
+
+# Required for l10n.mk - defines a list of app sub dirs that should
+# be included in langpack xpis.
+DIST_SUBDIRS = $(DIST_SUBDIR)
+
+MOZ_LANGPACK_EID=langpack-$(AB_CD)@firefox.mozilla.org
+
+include $(topsrcdir)/toolkit/locales/l10n.mk
+
+# For historical reasons, kill stage for repacks due to library moves
+# in PACKAGE and UNPACKAGE.
+clobber-stage:
+ $(RM) -rf $(STAGEDIST)
+
+# merge if we're not en-US, using conditional function as we need
+# the current value of AB_CD
+l10n-%: AB_CD=$*
+l10n-%:
+ $(if $(filter en-US,$(AB_CD)),, $(MAKE) merge-$*)
+ $(MAKE) -C $(DEPTH)/mobile/locales l10n-$*
+ $(MAKE) l10n AB_CD=$* XPI_NAME=locale-$* PREF_DIR=defaults/pref
+ $(MAKE) multilocale.txt-$* AB_CD=$* XPI_NAME=locale-$*
+
+# Tailored target to just add the chrome processing for multi-locale builds
+# merge if we're not en-US, using conditional function as we need
+# the current value of AB_CD
+chrome-%: AB_CD=$*
+chrome-%: IS_LANGUAGE_REPACK=1
+chrome-%:
+ $(if $(filter en-US,$(AB_CD)),, $(MAKE) merge-$*)
+ $(MAKE) -C $(DEPTH)/mobile/locales chrome-$*
+ $(MAKE) chrome AB_CD=$*
+
+langpack: langpack-$(AB_CD)
+
+# 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-%: IS_LANGUAGE_REPACK=1
+installers-%:
+ $(MAKE) clobber-stage
+ $(MAKE) l10n-$*
+ $(MAKE) package-langpack-$*
+ $(MAKE) 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 '
+ @$(PYTHON3) $(topsrcdir)/config/printconfigsetting.py $(GECKO_PLATFORM_INI_PATH) Build SourceStamp
+ @printf 'fennec_revision '
+ @$(PYTHON3) $(topsrcdir)/config/printconfigsetting.py $(FENNEC_APPLICATION_INI_PATH) App SourceStamp
+ @printf 'buildid '
+ @$(PYTHON3) $(topsrcdir)/config/printconfigsetting.py $(FENNEC_APPLICATION_INI_PATH) App BuildID
diff --git a/mobile/android/locales/all-locales b/mobile/android/locales/all-locales
new file mode 100644
index 0000000000..297d183dca
--- /dev/null
+++ b/mobile/android/locales/all-locales
@@ -0,0 +1,98 @@
+ach
+an
+ar
+ast
+az
+be
+bg
+bn
+br
+bs
+ca
+cak
+cs
+cy
+da
+de
+dsb
+el
+en-CA
+en-GB
+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
+ia
+id
+is
+it
+ja
+ka
+kab
+kk
+km
+kn
+ko
+lij
+lo
+lt
+ltg
+lv
+meh
+mix
+ml
+mr
+ms
+my
+nb-NO
+ne-NP
+nl
+nn-NO
+oc
+pa-IN
+pl
+pt-BR
+pt-PT
+rm
+ro
+ru
+sk
+sl
+son
+sq
+sr
+sv-SE
+ta
+te
+th
+tl
+tr
+trs
+uk
+ur
+uz
+vi
+wo
+xh
+zam
+zh-CN
+zh-TW
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 0000000000..3c91d32b5f
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/browser.properties
@@ -0,0 +1,477 @@
+# 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
+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
+
+# LOCALIZATION NOTE (alertShutdownSanitize): This text is shown as a snackbar during shutdown if the
+# user has enabled "Clear private data on exit".
+alertShutdownSanitize=Clearing private data…
+
+alertPrintjobToast=Printing…
+
+download.blocked=Unable to download file
+
+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
+
+# LOCALIZATION NOTE (webextPerms.header)
+# This string is used as a header in the webextension permissions dialog,
+# %S is replaced with the localized name of the extension being installed.
+# See https://bug1308309.bmoattachments.org/attachment.cgi?id=8814612
+# for an example of the full dialog.
+# Note, this string will be used as raw markup. Avoid characters like <, >, &
+webextPerms.header=Add %S?
+
+# LOCALIZATION NOTE (webextPerms.listIntro)
+# This string will be followed by a list of permissions requested
+# by the webextension.
+webextPerms.listIntro=It requires your permission to:
+webextPerms.add.label=Add
+webextPerms.cancel.label=Cancel
+
+# LOCALIZATION NOTE (webextPerms.updateText)
+# %S is replaced with the localized name of the updated extension.
+webextPerms.updateText=%S has been updated. You must approve new permissions before the updated version will install. Choosing “Cancel” will maintain your current add-on version.
+
+webextPerms.updateAccept.label=Update
+
+# LOCALIZATION NOTE (webextPerms.optionalPermsHeader)
+# %S is replaced with the localized name of the extension requesting new
+# permissions.
+webextPerms.optionalPermsHeader=%S requests additional permissions.
+webextPerms.optionalPermsListIntro=It wants to:
+webextPerms.optionalPermsAllow.label=Allow
+webextPerms.optionalPermsDeny.label=Deny
+
+webextPerms.description.bookmarks=Read and modify bookmarks
+webextPerms.description.browserSettings=Read and modify browser settings
+webextPerms.description.browsingData=Clear recent browsing history, cookies, and related data
+webextPerms.description.clipboardRead=Get data from the clipboard
+webextPerms.description.clipboardWrite=Input data to the clipboard
+webextPerms.description.devtools=Extend developer tools to access your data in open tabs
+webextPerms.description.downloads=Download files and read and modify the browser’s download history
+webextPerms.description.downloads.open=Open files downloaded to your computer
+webextPerms.description.find=Read the text of all open tabs
+webextPerms.description.geolocation=Access your location
+webextPerms.description.history=Access browsing history
+webextPerms.description.management=Monitor extension usage and manage themes
+# LOCALIZATION NOTE (webextPerms.description.nativeMessaging)
+# %S will be replaced with the name of the application
+webextPerms.description.nativeMessaging=Exchange messages with programs other than %S
+webextPerms.description.notifications=Display notifications to you
+webextPerms.description.privacy=Read and modify privacy settings
+webextPerms.description.proxy=Control browser proxy settings
+webextPerms.description.sessions=Access recently closed tabs
+webextPerms.description.tabs=Access browser tabs
+webextPerms.description.topSites=Access browsing history
+webextPerms.description.webNavigation=Access browser activity during navigation
+
+webextPerms.hostDescription.allUrls=Access your data for all websites
+
+# LOCALIZATION NOTE (webextPerms.hostDescription.wildcard)
+# %S will be replaced by the DNS domain for which a webextension
+# is requesting access (e.g., mozilla.org)
+webextPerms.hostDescription.wildcard=Access your data for sites in the %S domain
+
+# LOCALIZATION NOTE (webextPerms.hostDescription.tooManyWildcards):
+# Semi-colon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #1 will be replaced by an integer indicating the number of additional
+# domains for which this webextension is requesting permission.
+webextPerms.hostDescription.tooManyWildcards=Access your data in #1 other domain;Access your data in #1 other domains
+
+# LOCALIZATION NOTE (webextPerms.hostDescription.oneSite)
+# %S will be replaced by the DNS host name for which a webextension
+# is requesting access (e.g., www.mozilla.org)
+webextPerms.hostDescription.oneSite=Access your data for %S
+
+# LOCALIZATION NOTE (webextPerms.hostDescription.tooManySites)
+# Semi-colon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #1 will be replaced by an integer indicating the number of additional
+# hosts for which this webextension is requesting permission.
+webextPerms.hostDescription.tooManySites=Access your data on #1 other site;Access your data on #1 other sites
+
+
+# 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
+
+# Geolocation UI
+geolocation.allow=Share
+geolocation.dontAllow=Don't share
+# LOCALIZATION NOTE (geolocation.location): Label that will be used in
+# site settings dialog.
+geolocation.location=Location
+
+# Desktop notification UI
+desktopNotification2.allow=Always
+desktopNotification2.dontAllow=Never
+# LOCALIZATION NOTE (desktopNotification.notifications): Label that will be
+# used in site settings dialog.
+desktopNotification.notifications=Notifications
+
+# Imageblocking
+imageblocking.downloadedImage=Image unblocked
+imageblocking.showAllImages=Show All
+
+# 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
+
+# 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.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.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
+
+#Input widgets UI
+inputWidgetHelper.date=Pick a date
+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.activate=Activate
+clickToPlayPlugins.dontActivate=Don't activate
+# LOCALIZATION NOTE (clickToPlayPlugins.plugins): Label that
+# will be used in site settings dialog.
+clickToPlayPlugins.plugins=Plugins
+
+# Site settings dialog
+
+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
+
+# Helper apps
+helperapps.open=Open
+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
+
+# 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 (userContextPersonal.label,
+# userContextWork.label,
+# userContextShopping.label,
+# userContextBanking.label,
+# userContextNone.label):
+# These strings specify the four predefined contexts included in support of the
+# Contextual Identity / Containers project. Each context is meant to represent
+# the context that the user is in when interacting with the site. Different
+# contexts will store cookies and other information from those sites in
+# different, isolated locations. You can enable the feature by typing
+# about:config in the URL bar and changing privacy.userContext.enabled to true.
+# Once enabled, you can open a new tab in a specific context by clicking
+# File > New Container Tab > (1 of 4 contexts). Once opened, you will see these
+# strings on the right-hand side of the URL bar.
+# In android this will be only exposed by web extensions
+userContextPersonal.label = Personal
+userContextWork.label = Work
+userContextBanking.label = Banking
+userContextShopping.label = Shopping
+
+# 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/config.dtd b/mobile/android/locales/en-US/chrome/config.dtd
new file mode 100644
index 0000000000..95502af40e
--- /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 0000000000..61fdf73b32
--- /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/passwordmgr.properties b/mobile/android/locales/en-US/chrome/passwordmgr.properties
new file mode 100644
index 0000000000..30225c7e14
--- /dev/null
+++ b/mobile/android/locales/en-US/chrome/passwordmgr.properties
@@ -0,0 +1,22 @@
+# 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/.
+
+# String will be replaced by brandShortName.
+saveLogin=Would you like %S to remember this login?
+rememberButton=Remember
+neverButton=Never
+
+# String is the login's hostname
+updatePassword=Update saved password for %S?
+updatePasswordNoUser=Update saved password for this login?
+updateButton=Update
+dontUpdateButton=Don't update
+
+# Copy of the toolkit's passwordmgr.properties
+userSelectText2=Select which login to update:
+passwordChangeTitle=Confirm Password Change
+
+# Strings used by PromptService.js
+username=Username
+password=Password
diff --git a/mobile/android/locales/en-US/defines.inc b/mobile/android/locales/en-US/defines.inc
new file mode 100644
index 0000000000..fb7fe4c937
--- /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 0000000000..95a4db06b4
--- /dev/null
+++ b/mobile/android/locales/en-US/mobile-l10n.js
@@ -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/.
+
+#filter substitution
+
+// This comment is to avoid errors during packaging due to the file
+// being empty and therefore causing MD5 hash collisions with other
+// empty files. See bug 1426943 for details.
diff --git a/mobile/android/locales/filter.py b/mobile/android/locales/filter.py
new file mode 100644
index 0000000000..1e815893a0
--- /dev/null
+++ b/mobile/android/locales/filter.py
@@ -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/.
+
+"""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.
+"""
+
+from __future__ import absolute_import
+
+
+def test(mod, path, entity=None):
+ import re
+
+ # ignore anything but mobile, which is our local repo checkout name
+ if mod not in ("dom", "toolkit", "mobile", "mobile/android/base", "mobile/android"):
+ return "ignore"
+
+ if mod == "toolkit":
+ # keep this file list in sync with jar.mn
+ if path in (
+ "chrome/global/aboutReader.properties",
+ "chrome/global/commonDialogs.properties",
+ "chrome/global/intl.properties",
+ "chrome/global/intl.css",
+ "chrome/global/aboutWebrtc.properties",
+ ):
+ return "error"
+ if re.match(r"crashreporter/[^/]*.ftl", path):
+ # error on crashreporter/*.ftl
+ return "error"
+ if re.match(r"toolkit/about/[^/]*About.ftl", path):
+ # error on toolkit/about/*About.ftl
+ return "error"
+ if re.match(r"toolkit/about/[^/]*Mozilla.ftl", path):
+ # error on toolkit/about/*Mozilla.ftl
+ return "error"
+ if re.match(r"toolkit/about/[^/]*Plugins.ftl", path):
+ # error on toolkit/about/*Plugins.ftl
+ return "error"
+ if re.match(r"toolkit/about/[^/]*Rights.ftl", path):
+ # error on toolkit/about/*Rights.ftl
+ return "error"
+ if re.match(r"toolkit/about/[^/]*Compat.ftl", path):
+ # error on toolkit/about/*Compat.ftl
+ return "error"
+ if re.match(r"toolkit/about/[^/]*Support.ftl", path):
+ # error on toolkit/about/*Support.ftl
+ return "error"
+ return "ignore"
+
+ if mod == "dom":
+ # keep this file list in sync with jar.mn
+ if path in (
+ "chrome/global.dtd",
+ "chrome/accessibility/AccessFu.properties",
+ "chrome/dom/dom.properties",
+ "chrome/plugins.properties",
+ ):
+ return "error"
+ return "ignore"
+
+ if mod not in ("mobile", "mobile/android"):
+ # we only have exceptions for mobile*
+ return "error"
+ if mod == "mobile/android":
+ if entity is None:
+ 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 path == "chrome/region.properties":
+ # only region.properties exceptions remain
+ if (
+ 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 0000000000..04f123501b
--- /dev/null
+++ b/mobile/android/locales/jar.mn
@@ -0,0 +1,62 @@
+#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/.
+
+# Note: This file should only contain locale entries. All
+# override and resource entries should go to mobile/android/chrome/jar.mn to avoid
+# having to create the same entry for each locale.
+
+@AB_CD@.jar:
+% locale browser @AB_CD@ %locale/@AB_CD@/browser/
+ 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/passwordmgr.properties (%chrome/passwordmgr.properties)
+
+# overrides for toolkit l10n, also for en-US
+# keep this file list in sync with l10n.toml and filter.py
+relativesrcdir toolkit/locales:
+ locale/@AB_CD@/browser/overrides/aboutReader.properties (%chrome/global/aboutReader.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)
+#about:webrtc
+ locale/@AB_CD@/browser/overrides/global/aboutWebrtc.properties (%chrome/global/aboutWebrtc.properties)
+
+# overrides for dom l10n, also for en-US
+# keep this file list in sync with filter.py
+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)
+
+# Fluent files
+# Note: All rules must be wildcards, as localized files are optional
+# Only run this if we're not en-US, as en-US is already built
+# by toolkit/locales/jar.mn.
+# If you're including files from a subdirectory, ensure that you're
+# putting them into the corresponding subdirectory in the target.
+# The wildcard ** does that for us in toolkit.
+
+#define EN_US en-US
+#if AB_CD != EN_US
+[localization] @AB_CD@.jar:
+relativesrcdir toolkit/locales:
+#about:crashes
+ crashreporter (%crashreporter/**/*.ftl)
+#about:about
+ toolkit/about (%toolkit/about/*About.ftl)
+#about:mozilla
+ toolkit/about (%toolkit/about/*Mozilla.ftl)
+#about:support
+ toolkit/about (%toolkit/about/*Support.ftl)
+#about:rights
+ toolkit/about (%toolkit/about/*Rights.ftl)
+#about:compat
+ toolkit/about (%toolkit/about/*Compat.ftl)
+#endif
+# Do not add files below the endif. Reviewers, expand more context above
+# for comments.
diff --git a/mobile/android/locales/l10n.ini b/mobile/android/locales/l10n.ini
new file mode 100644
index 0000000000..1d6afa4a15
--- /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/l10n.toml b/mobile/android/locales/l10n.toml
new file mode 100644
index 0000000000..013fd9c230
--- /dev/null
+++ b/mobile/android/locales/l10n.toml
@@ -0,0 +1,256 @@
+# 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/.
+
+basepath = "../../.."
+
+locales = [
+ "ach",
+ "an",
+ "ar",
+ "ast",
+ "az",
+ "be",
+ "bg",
+ "bn",
+ "br",
+ "bs",
+ "ca",
+ "cak",
+ "cs",
+ "cy",
+ "da",
+ "de",
+ "dsb",
+ "el",
+ "en-CA",
+ "en-GB",
+ "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",
+ "ia",
+ "id",
+ "is",
+ "it",
+ "ja",
+ "ka",
+ "kab",
+ "kk",
+ "km",
+ "kn",
+ "ko",
+ "lij",
+ "lo",
+ "lt",
+ "ltg",
+ "lv",
+ "meh",
+ "mix",
+ "ml",
+ "mr",
+ "ms",
+ "my",
+ "nb-NO",
+ "ne-NP",
+ "nl",
+ "nn-NO",
+ "oc",
+ "pa-IN",
+ "pl",
+ "pt-BR",
+ "pt-PT",
+ "rm",
+ "ro",
+ "ru",
+ "sk",
+ "sl",
+ "son",
+ "sq",
+ "sr",
+ "sv-SE",
+ "ta",
+ "te",
+ "th",
+ "tl",
+ "tr",
+ "trs",
+ "uk",
+ "ur",
+ "uz",
+ "vi",
+ "wo",
+ "xh",
+ "zam",
+ "zh-CN",
+ "zh-TW",
+]
+
+[build]
+exclude-multi-locale = [
+ "ach",
+ "ia",
+ "km",
+ "ltg",
+ "meh",
+ "mix",
+ "tl",
+]
+
+[env]
+ l = "{l10n_base}/{locale}/"
+
+
+[[paths]]
+ reference = "mobile/locales/en-US/**"
+ l10n = "{l}mobile/**"
+
+[[paths]]
+ reference = "mobile/android/locales/en-US/**"
+ l10n = "{l}mobile/android/**"
+
+[[paths]]
+ reference = "mobile/android/base/locales/en-US/**"
+ l10n = "{l}mobile/android/base/**"
+ test = [
+ "android-dtd",
+ ]
+
+# hand-picked paths from toolkit, keep in sync with jar.mn
+[[paths]]
+ reference = "dom/locales/en-US/chrome/global.dtd"
+ l10n = "{l}dom/chrome/global.dtd"
+
+[[paths]]
+ reference = "dom/locales/en-US/chrome/accessibility/AccessFu.properties"
+ l10n = "{l}dom/chrome/accessibility/AccessFu.properties"
+
+[[paths]]
+ reference = "dom/locales/en-US/chrome/dom/dom.properties"
+ l10n = "{l}dom/chrome/dom/dom.properties"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/toolkit/about/*Plugins.ftl"
+ l10n = "{l}toolkit/toolkit/about/*Plugins.ftl"
+
+[[paths]]
+ reference = "dom/locales/en-US/chrome/plugins.properties"
+ l10n = "{l}dom/chrome/plugins.properties"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/toolkit/about/*About.ftl"
+ l10n = "{l}toolkit/toolkit/about/*About.ftl"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/toolkit/about/*Mozilla.ftl"
+ l10n = "{l}toolkit/toolkit/about/*Mozilla.ftl"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/aboutAbout.dtd"
+ l10n = "{l}toolkit/chrome/global/aboutAbout.dtd"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/aboutReader.properties"
+ l10n = "{l}toolkit/chrome/global/aboutReader.properties"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/aboutRights.dtd"
+ l10n = "{l}toolkit/chrome/global/aboutRights.dtd"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/toolkit/about/*Rights.ftl"
+ l10n = "{l}toolkit/toolkit/about/*Rights.ftl"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/toolkit/about/*Compat.ftl"
+ l10n = "{l}toolkit/toolkit/about/*Compat.ftl"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/charsetMenu.properties"
+ l10n = "{l}toolkit/chrome/global/charsetMenu.properties"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/commonDialogs.properties"
+ l10n = "{l}toolkit/chrome/global/commonDialogs.properties"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/intl.properties"
+ l10n = "{l}toolkit/chrome/global/intl.properties"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/intl.css"
+ l10n = "{l}toolkit/chrome/global/intl.css"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/aboutSupport.dtd"
+ l10n = "{l}toolkit/chrome/global/aboutSupport.dtd"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/aboutSupport.properties"
+ l10n = "{l}toolkit/chrome/global/aboutSupport.properties"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/toolkit/about/*Support.ftl"
+ l10n = "{l}toolkit/toolkit/about/*Support.ftl"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/crashreporter/*.ftl"
+ l10n = "{l}toolkit/crashreporter/*.ftl"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/crashreporter/crashes.dtd"
+ l10n = "{l}toolkit/crashreporter/crashes.dtd"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/crashreporter/crashes.properties"
+ l10n = "{l}toolkit/crashreporter/crashes.properties"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/mozilla.dtd"
+ l10n = "{l}toolkit/chrome/global/mozilla.dtd"
+
+[[paths]]
+ reference = "toolkit/locales/en-US/chrome/global/aboutWebrtc.properties"
+ l10n = "{l}toolkit/chrome/global/aboutWebrtc.properties"
+
+
+[[filters]]
+ path = [
+ "{l}mobile/android/mobile-l10n.js",
+ "{l}mobile/android/defines.inc",
+ ]
+ action = "ignore"
+
+[[filters]]
+ path = "{l}mobile/android/defines.inc"
+ key = "MOZ_LANGPACK_CONTRIBUTORS"
+ action = "ignore"
+
+[[filters]]
+ path = "{l}mobile/chrome/region.properties"
+ key = [
+ "re:^browser\\.contentHandlers\\.types\\.[0-5]\\..*$",
+ "re:^gecko\\.handlerService\\.schemes\\..+$",
+ "re:^gecko\\.handlerService\\.defaultHandlersVersion$",
+ "re:^browser\\.suggestedsites\\..+$",
+ ]
+ action = "ignore"
diff --git a/mobile/android/locales/maemo-locales b/mobile/android/locales/maemo-locales
new file mode 100644
index 0000000000..83b1ad3195
--- /dev/null
+++ b/mobile/android/locales/maemo-locales
@@ -0,0 +1,91 @@
+an
+ar
+ast
+az
+be
+bg
+bn
+br
+bs
+ca
+cak
+cs
+cy
+da
+de
+dsb
+el
+en-CA
+en-GB
+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
+lij
+lo
+lt
+lv
+ml
+mr
+ms
+my
+nb-NO
+ne-NP
+nl
+nn-NO
+oc
+pa-IN
+pl
+pt-BR
+pt-PT
+rm
+ro
+ru
+sk
+sl
+son
+sq
+sr
+sv-SE
+ta
+te
+th
+tr
+trs
+uk
+ur
+uz
+vi
+wo
+xh
+zam
+zh-CN
+zh-TW
diff --git a/mobile/android/locales/moz.build b/mobile/android/locales/moz.build
new file mode 100644
index 0000000000..8a8407ca4c
--- /dev/null
+++ b/mobile/android/locales/moz.build
@@ -0,0 +1,10 @@
+# -*- 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/.
+
+with Files("**"):
+ BUG_COMPONENT = ("GeckoView", "General")
+
+JAR_MANIFESTS += ["jar.mn"]