summaryrefslogtreecommitdiffstats
path: root/toolkit/components/extensions/parent/ext-i18n.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--toolkit/components/extensions/parent/ext-i18n.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/toolkit/components/extensions/parent/ext-i18n.js b/toolkit/components/extensions/parent/ext-i18n.js
new file mode 100644
index 0000000000..167a1d16c2
--- /dev/null
+++ b/toolkit/components/extensions/parent/ext-i18n.js
@@ -0,0 +1,46 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+ChromeUtils.defineESModuleGetters(this, {
+ LanguageDetector:
+ "resource://gre/modules/translation/LanguageDetector.sys.mjs",
+});
+
+this.i18n = class extends ExtensionAPI {
+ getAPI(context) {
+ let { extension } = context;
+ return {
+ i18n: {
+ getMessage: function (messageName, substitutions) {
+ return extension.localizeMessage(messageName, substitutions, {
+ cloneScope: context.cloneScope,
+ });
+ },
+
+ getAcceptLanguages: function () {
+ let result = extension.localeData.acceptLanguages;
+ return Promise.resolve(result);
+ },
+
+ getUILanguage: function () {
+ return extension.localeData.uiLocale;
+ },
+
+ detectLanguage: function (text) {
+ return LanguageDetector.detectLanguage(text).then(result => ({
+ isReliable: result.confident,
+ languages: result.languages.map(lang => {
+ return {
+ language: lang.languageCode,
+ percentage: lang.percent,
+ };
+ }),
+ }));
+ },
+ },
+ };
+ }
+};