diff --git a/addons/account/static/src/js/tours/account.js b/addons/account/static/src/js/tours/account.js
index dca54e9ae8d..38f4e05afc9 100644
--- a/addons/account/static/src/js/tours/account.js
+++ b/addons/account/static/src/js/tours/account.js
@@ -1,12 +1,9 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
-import "@web/legacy/translations_loaded";
-
-var _t = core._t;
registry.category("web_tour.tours").add('account_tour', {
url: "/web",
diff --git a/addons/account/static/tests/tours/account_dashboard_setup_bar_tests.js b/addons/account/static/tests/tours/account_dashboard_setup_bar_tests.js
index 0720b246492..07f81465d3b 100644
--- a/addons/account/static/tests/tours/account_dashboard_setup_bar_tests.js
+++ b/addons/account/static/tests/tours/account_dashboard_setup_bar_tests.js
@@ -1,11 +1,8 @@
/** @odoo-module **/
- import core from "@web/legacy/js/services/core";
+ import { _t } from "@web/core/l10n/translation";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
- import "@web/legacy/translations_loaded";
-
- var _t = core._t;
registry.category("web_tour.tours").add('account_render_report', {
test: true,
diff --git a/addons/auth_password_policy_signup/static/src/js/password_meter.js b/addons/auth_password_policy_signup/static/src/js/password_meter.js
index f5d249a8894..d47f94dfffa 100644
--- a/addons/auth_password_policy_signup/static/src/js/password_meter.js
+++ b/addons/auth_password_policy_signup/static/src/js/password_meter.js
@@ -1,10 +1,9 @@
/** @odoo-module */
-import { _t } from "@web/legacy/js/services/core";
import Widget from "@web/legacy/js/core/widget";
import { computeScore } from "@auth_password_policy/password_policy";
import { sprintf } from "@web/core/utils/strings";
-import { translationIsReady } from "@web/core/l10n/translation";
+import { translationIsReady, _t } from "@web/core/l10n/translation";
export default Widget.extend({
tagName: "meter",
diff --git a/addons/auth_totp_portal/static/src/js/totp_frontend.js b/addons/auth_totp_portal/static/src/js/totp_frontend.js
index e80d9e3bde3..0f1d1b6ee2d 100644
--- a/addons/auth_totp_portal/static/src/js/totp_frontend.js
+++ b/addons/auth_totp_portal/static/src/js/totp_frontend.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
import Dialog from "@web/legacy/js/core/dialog";
import {handleCheckIdentity} from "@portal/js/portal_security";
diff --git a/addons/crm/static/src/js/tours/crm.js b/addons/crm/static/src/js/tours/crm.js
index 3b106833206..afb0660dd5a 100644
--- a/addons/crm/static/src/js/tours/crm.js
+++ b/addons/crm/static/src/js/tours/crm.js
@@ -1,9 +1,7 @@
/** @odoo-module **/
-import { _t } from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
-
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
diff --git a/addons/crm_iap_mine/static/src/js/tours/crm_iap_lead.js b/addons/crm_iap_mine/static/src/js/tours/crm_iap_lead.js
index e1cd582c47a..4084d28fe7b 100644
--- a/addons/crm_iap_mine/static/src/js/tours/crm_iap_lead.js
+++ b/addons/crm_iap_mine/static/src/js/tours/crm_iap_lead.js
@@ -2,12 +2,9 @@
import { registry } from "@web/core/registry";
import { Markup } from "@web/legacy/js/core/utils";
-import core from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
-
+import { _t } from "@web/core/l10n/translation";
import "@crm/js/tours/crm";
import { patch } from "@web/core/utils/patch";
-var _t = core._t;
patch(registry.category("web_tour.tours").get("crm_tour"), {
steps() {
diff --git a/addons/event/static/src/js/tours/event_tour.js b/addons/event/static/src/js/tours/event_tour.js
index 38f901fe403..b8a46ce7af9 100644
--- a/addons/event/static/src/js/tours/event_tour.js
+++ b/addons/event/static/src/js/tours/event_tour.js
@@ -1,10 +1,9 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
-import "@web/legacy/translations_loaded";
import EventAdditionalTourSteps from "@event/js/tours/event_steps";
diff --git a/addons/google_recaptcha/static/src/js/recaptcha.js b/addons/google_recaptcha/static/src/js/recaptcha.js
index 87f7a58e059..61c8d7fe487 100644
--- a/addons/google_recaptcha/static/src/js/recaptcha.js
+++ b/addons/google_recaptcha/static/src/js/recaptcha.js
@@ -1,11 +1,9 @@
/** @odoo-module **/
import Class from "@web/legacy/js/core/class";
-import core from "@web/legacy/js/services/core";
import { session } from "@web/session";
import { loadJS } from "@web/core/assets";
-
-const _t = core._t;
+import { _t } from "@web/core/l10n/translation";
export const ReCaptcha = Class.extend({
/**
diff --git a/addons/hr_expense/static/src/js/tours/hr_expense.js b/addons/hr_expense/static/src/js/tours/hr_expense.js
index 73aaaaa26a7..ee374c6430d 100644
--- a/addons/hr_expense/static/src/js/tours/hr_expense.js
+++ b/addons/hr_expense/static/src/js/tours/hr_expense.js
@@ -1,9 +1,7 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
-
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
diff --git a/addons/hr_holidays/static/src/tours/hr_holidays_tour.js b/addons/hr_holidays/static/src/tours/hr_holidays_tour.js
index d70d15c436b..ff5d472a2a3 100644
--- a/addons/hr_holidays/static/src/tours/hr_holidays_tour.js
+++ b/addons/hr_holidays/static/src/tours/hr_holidays_tour.js
@@ -1,7 +1,6 @@
/** @odoo-module **/
-import { _t } from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
+import { _t } from "@web/core/l10n/translation";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
diff --git a/addons/hr_recruitment/static/src/js/tours/hr_recruitment.js b/addons/hr_recruitment/static/src/js/tours/hr_recruitment.js
index a3bddb854ec..667802cf587 100644
--- a/addons/hr_recruitment/static/src/js/tours/hr_recruitment.js
+++ b/addons/hr_recruitment/static/src/js/tours/hr_recruitment.js
@@ -1,16 +1,15 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
-import "@web/legacy/translations_loaded";
const { markup } = owl;
registry.category("web_tour.tours").add('hr_recruitment_tour',{
url: "/web",
- rainbowManMessage: markup(_t("
Great job! You hired a new colleague!
Try the Website app to publish job offers online.
")),
+ rainbowManMessage: () => markup(_t("Great job! You hired a new colleague!
Try the Website app to publish job offers online.
")),
fadeout: 'very_slow',
sequence: 230,
steps: () => [stepUtils.showAppsMenuItem(), {
diff --git a/addons/lunch/static/tests/tours/order_lunch.js b/addons/lunch/static/tests/tours/order_lunch.js
index 13ce509d715..b6c87bd0d02 100644
--- a/addons/lunch/static/tests/tours/order_lunch.js
+++ b/addons/lunch/static/tests/tours/order_lunch.js
@@ -1,7 +1,6 @@
/** @odoo-module **/
-import { _t } from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
+import { _t } from "@web/core/l10n/translation";
import { registry } from "@web/core/registry";
registry.category("web_tour.tours").add('order_lunch_tour', {
diff --git a/addons/mail/static/src/discuss/core/web/discuss_tour.js b/addons/mail/static/src/discuss/core/web/discuss_tour.js
index 12fe425e638..b1a1143b5d2 100644
--- a/addons/mail/static/src/discuss/core/web/discuss_tour.js
+++ b/addons/mail/static/src/discuss/core/web/discuss_tour.js
@@ -1,7 +1,6 @@
/* @odoo-module */
import { _t } from "@web/core/l10n/translation";
-import "@web/legacy/translations_loaded";
import { registry } from "@web/core/registry";
import { Markup } from "@web/legacy/js/core/utils";
diff --git a/addons/mail_group/static/src/js/mail_group.js b/addons/mail_group/static/src/js/mail_group.js
index 37a9a2c15e6..9119a70437a 100644
--- a/addons/mail_group/static/src/js/mail_group.js
+++ b/addons/mail_group/static/src/js/mail_group.js
@@ -1,8 +1,7 @@
/** @odoo-module **/
import publicWidget from "@web/legacy/js/public/public_widget";
-import core from "@web/legacy/js/services/core";
-const _t = core._t;
+import { _t } from "@web/core/l10n/translation";
publicWidget.registry.MailGroup = publicWidget.Widget.extend({
selector: '.o_mail_group',
diff --git a/addons/mass_mailing/static/src/js/mailing_portal.js b/addons/mass_mailing/static/src/js/mailing_portal.js
index 2b0d9b9cf65..f5d38a3b1c5 100644
--- a/addons/mass_mailing/static/src/js/mailing_portal.js
+++ b/addons/mass_mailing/static/src/js/mailing_portal.js
@@ -1,12 +1,10 @@
/** @odoo-module **/
-import session from "web.session";
import ajax from "@web/legacy/js/core/ajax";
-import core from "@web/legacy/js/services/core";
import { sprintf, escape } from "@web/core/utils/strings";
import { whenReady } from "@odoo/owl";
-
-var _t = core._t;
+import { _t } from "@web/core/l10n/translation";
+import session from "web.session";
whenReady(() => {
var email = $("input[name='email']").val();
diff --git a/addons/mass_mailing/static/src/js/tours/mass_mailing_tour.js b/addons/mass_mailing/static/src/js/tours/mass_mailing_tour.js
index f4265dceb0a..64d249e06a0 100644
--- a/addons/mass_mailing/static/src/js/tours/mass_mailing_tour.js
+++ b/addons/mass_mailing/static/src/js/tours/mass_mailing_tour.js
@@ -2,8 +2,7 @@
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
- import {_t} from "@web/legacy/js/services/core";
- import "@web/legacy/translations_loaded";
+ import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
const { DateTime } = luxon;
diff --git a/addons/payment/static/src/js/manage_form.js b/addons/payment/static/src/js/manage_form.js
index 3835b5dc244..3eef9348365 100644
--- a/addons/payment/static/src/js/manage_form.js
+++ b/addons/payment/static/src/js/manage_form.js
@@ -1,14 +1,12 @@
/** @odoo-module **/
- import core from "@web/legacy/js/services/core";
+ import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
import Dialog from "@web/legacy/js/core/dialog";
import paymentFormMixin from "@payment/js/payment_form_mixin";
import { debounce } from "@web/core/utils/timing";
- const _t = core._t;
-
publicWidget.registry.PaymentManageForm = publicWidget.Widget.extend(paymentFormMixin, {
selector: 'form[name="o_payment_manage"]',
events: Object.assign({}, publicWidget.Widget.prototype.events, {
diff --git a/addons/payment/static/src/js/payment_form_mixin.js b/addons/payment/static/src/js/payment_form_mixin.js
index 571754b2e40..22b1849dbfc 100644
--- a/addons/payment/static/src/js/payment_form_mixin.js
+++ b/addons/payment/static/src/js/payment_form_mixin.js
@@ -3,8 +3,7 @@
import { escape, sprintf } from "@web/core/utils/strings";
import core from "@web/legacy/js/services/core";
import Dialog from "@web/legacy/js/core/dialog";
-
- const _t = core._t;
+ import { _t } from "@web/core/l10n/translation";
export default {
diff --git a/addons/payment/static/src/js/post_processing.js b/addons/payment/static/src/js/post_processing.js
index 2a63e320a71..c215fd3c59e 100644
--- a/addons/payment/static/src/js/post_processing.js
+++ b/addons/payment/static/src/js/post_processing.js
@@ -3,8 +3,7 @@
import publicWidget from "@web/legacy/js/public/public_widget";
import core from "@web/legacy/js/services/core";
import { Markup } from "@web/legacy/js/core/utils";
-
- var _t = core._t;
+ import { _t } from "@web/core/l10n/translation";
$.blockUI.defaults.css.border = '0';
$.blockUI.defaults.css["background-color"] = '';
diff --git a/addons/payment_adyen/static/src/js/payment_form.js b/addons/payment_adyen/static/src/js/payment_form.js
index 6f11c46aaac..77b4b82a7ba 100644
--- a/addons/payment_adyen/static/src/js/payment_form.js
+++ b/addons/payment_adyen/static/src/js/payment_form.js
@@ -1,12 +1,10 @@
/** @odoo-module **/
/* global AdyenCheckout */
- import core from "@web/legacy/js/services/core";
+ import { _t } from "@web/core/l10n/translation";
import checkoutForm from "@payment/js/checkout_form";
import manageForm from "@payment/js/manage_form";
- const _t = core._t;
-
const adyenMixin = {
//--------------------------------------------------------------------------
diff --git a/addons/payment_authorize/static/src/js/payment_form.js b/addons/payment_authorize/static/src/js/payment_form.js
index 199340a8a8a..f42e9b890f4 100644
--- a/addons/payment_authorize/static/src/js/payment_form.js
+++ b/addons/payment_authorize/static/src/js/payment_form.js
@@ -1,14 +1,12 @@
/** @odoo-module **/
/* global Accept */
- import core from "@web/legacy/js/services/core";
+ import { _t } from "@web/core/l10n/translation";
import { loadJS } from "@web/core/assets";
import checkoutForm from "@payment/js/checkout_form";
import manageForm from "@payment/js/manage_form";
- const _t = core._t;
-
const authorizeMixin = {
/**
diff --git a/addons/payment_stripe/static/src/js/stripe_mixin.js b/addons/payment_stripe/static/src/js/stripe_mixin.js
index 2ca501368f8..404dabe7e12 100644
--- a/addons/payment_stripe/static/src/js/stripe_mixin.js
+++ b/addons/payment_stripe/static/src/js/stripe_mixin.js
@@ -1,11 +1,9 @@
/** @odoo-module */
/* global Stripe */
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { StripeOptions } from '@payment_stripe/js/stripe_options';
-const _t = core._t;
-
export default {
/**
diff --git a/addons/point_of_sale/static/src/backend/tours/point_of_sale.js b/addons/point_of_sale/static/src/backend/tours/point_of_sale.js
index bdf83b58c7c..edcc62d95f4 100644
--- a/addons/point_of_sale/static/src/backend/tours/point_of_sale.js
+++ b/addons/point_of_sale/static/src/backend/tours/point_of_sale.js
@@ -4,7 +4,6 @@ import { _t } from "@web/core/l10n/translation";
import { markup } from "@odoo/owl";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
-import "@web/legacy/translations_loaded";
registry.category("web_tour.tours").add("point_of_sale_tour", {
url: "/web",
diff --git a/addons/portal/static/src/js/portal_composer.js b/addons/portal/static/src/js/portal_composer.js
index 3c2d6d33c22..8381733a047 100644
--- a/addons/portal/static/src/js/portal_composer.js
+++ b/addons/portal/static/src/js/portal_composer.js
@@ -1,12 +1,12 @@
/** @odoo-module **/
import { escape, sprintf } from "@web/core/utils/strings";
+import { _t } from "@web/core/l10n/translation";
import ajax from "@web/legacy/js/core/ajax";
import core from "@web/legacy/js/services/core";
import publicWidget from "@web/legacy/js/public/public_widget";
var qweb = core.qweb;
-var _t = core._t;
/**
* Widget PortalComposer
diff --git a/addons/portal/static/src/js/portal_sidebar.js b/addons/portal/static/src/js/portal_sidebar.js
index fe42048a6f7..2668f9dd0b2 100644
--- a/addons/portal/static/src/js/portal_sidebar.js
+++ b/addons/portal/static/src/js/portal_sidebar.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
import session from "web.session";
import { sprintf } from "@web/core/utils/strings";
@@ -8,8 +8,6 @@ import { deserializeDateTime } from "@web/core/l10n/dates";
const { DateTime } = luxon;
-var _t = core._t;
-
var PortalSidebar = publicWidget.Widget.extend({
/**
* @override
diff --git a/addons/portal/static/src/js/portal_signature.js b/addons/portal/static/src/js/portal_signature.js
index 3bf591b48c3..168b4fe0b00 100644
--- a/addons/portal/static/src/js/portal_signature.js
+++ b/addons/portal/static/src/js/portal_signature.js
@@ -1,12 +1,11 @@
/** @odoo-module **/
import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
import { NameAndSignature } from "@web/legacy/js/widgets/name_and_signature";
var qweb = core.qweb;
-var _t = core._t;
-
/**
* This widget is a signature request form. It uses
* @see NameAndSignature for the input fields, adds a submit
diff --git a/addons/portal_rating/static/src/js/portal_chatter.js b/addons/portal_rating/static/src/js/portal_chatter.js
index 50b73b0cedf..f0ce14ac4fe 100644
--- a/addons/portal_rating/static/src/js/portal_chatter.js
+++ b/addons/portal_rating/static/src/js/portal_chatter.js
@@ -1,10 +1,10 @@
/** @odoo-module **/
import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import PortalChatter from "@portal/js/portal_chatter";
import { roundPrecision } from "@web/core/utils/numbers";
-var _t = core._t;
var qweb = core.qweb;
/**
diff --git a/addons/portal_rating/static/src/js/portal_composer.js b/addons/portal_rating/static/src/js/portal_composer.js
index 408eedec953..06c289110bc 100644
--- a/addons/portal_rating/static/src/js/portal_composer.js
+++ b/addons/portal_rating/static/src/js/portal_composer.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import portalComposer from "@portal/js/portal_composer";
-var _t = core._t;
-
var PortalComposer = portalComposer.PortalComposer;
/**
diff --git a/addons/project/static/src/js/tours/project.js b/addons/project/static/src/js/tours/project.js
index bac72ab3cee..ff3629ba7bc 100644
--- a/addons/project/static/src/js/tours/project.js
+++ b/addons/project/static/src/js/tours/project.js
@@ -1,10 +1,9 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
-import "@web/legacy/translations_loaded";
registry.category("web_tour.tours").add('project_tour', {
sequence: 110,
diff --git a/addons/purchase/static/src/js/tours/purchase.js b/addons/purchase/static/src/js/tours/purchase.js
index 3567f442bf6..f335827f7a7 100644
--- a/addons/purchase/static/src/js/tours/purchase.js
+++ b/addons/purchase/static/src/js/tours/purchase.js
@@ -1,11 +1,9 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
-import "@web/legacy/translations_loaded";
-var _t = core._t;
import PurchaseAdditionalTourSteps from "@purchase/js/tours/purchase_steps";
registry.category("web_tour.tours").add('purchase_tour' , {
diff --git a/addons/purchase_stock/static/src/js/tours/purchase_stock.js b/addons/purchase_stock/static/src/js/tours/purchase_stock.js
index c96504f9492..ccbe851fe7b 100644
--- a/addons/purchase_stock/static/src/js/tours/purchase_stock.js
+++ b/addons/purchase_stock/static/src/js/tours/purchase_stock.js
@@ -1,9 +1,7 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
+import { _t } from "@web/core/l10n/translation";
-var _t = core._t;
import PurchaseAdditionalTourSteps from "@purchase/js/tours/purchase_steps";
PurchaseAdditionalTourSteps.include({
diff --git a/addons/sale/static/src/js/tours/sale.js b/addons/sale/static/src/js/tours/sale.js
index f11faf747b5..30ad72414da 100644
--- a/addons/sale/static/src/js/tours/sale.js
+++ b/addons/sale/static/src/js/tours/sale.js
@@ -1,10 +1,9 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
-import "@web/legacy/translations_loaded";
const { markup } = owl;
@@ -83,7 +82,7 @@ registry.category("web_tour.tours").add("sale_tour", {
registry.category("web_tour.tours").add("sale_quote_tour", {
url: "/web#action=sale.action_quotations_with_onboarding&view_type=form",
rainbowMan: true,
- rainbowManMessage: markup(_t("Congratulations, your first quotation is sent!
Check your email to validate the quote.")),
+ rainbowManMessage: () => markup(_t("Congratulations, your first quotation is sent!
Check your email to validate the quote.")),
sequence: 30,
steps: () => [{
trigger: ".o_field_res_partner_many2one[name='partner_id']",
diff --git a/addons/survey/static/src/js/survey_form.js b/addons/survey/static/src/js/survey_form.js
index c3ba9420f26..05a70d6e6da 100644
--- a/addons/survey/static/src/js/survey_form.js
+++ b/addons/survey/static/src/js/survey_form.js
@@ -4,7 +4,7 @@ import publicWidget from "@web/legacy/js/public/public_widget";
import { formatDateTime, parseDate, parseDateTime} from "@web/legacy/js/core/dates";
import time from "@web/legacy/js/core/time";
import config from "@web/legacy/js/services/config";
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import Dialog from "@web/legacy/js/core/dialog";
import dom from "@web/legacy/js/core/dom";
import {getCookie, setCookie, deleteCookie} from "@web/legacy/js/core/cookie_utils";
@@ -12,7 +12,6 @@ import {getCookie, setCookie, deleteCookie} from "@web/legacy/js/core/cookie_uti
import SurveyPreloadImageMixin from "@survey/js/survey_preload_image_mixin";
import { SurveyImageZoomer } from "@survey/js/survey_image_zoomer";
-var _t = core._t;
var isMac = navigator.platform.toUpperCase().includes('MAC');
publicWidget.registry.SurveyFormWidget = publicWidget.Widget.extend(SurveyPreloadImageMixin, {
diff --git a/addons/survey/static/src/js/survey_result.js b/addons/survey/static/src/js/survey_result.js
index 2253622e8f3..5831a930194 100644
--- a/addons/survey/static/src/js/survey_result.js
+++ b/addons/survey/static/src/js/survey_result.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { loadJS } from "@web/core/assets";
import { SurveyImageZoomer } from "@survey/js/survey_image_zoomer";
import publicWidget from "@web/legacy/js/public/public_widget";
diff --git a/addons/survey/static/src/js/tours/survey_tour.js b/addons/survey/static/src/js/tours/survey_tour.js
index 437b94db3a6..0f9b795420d 100644
--- a/addons/survey/static/src/js/tours/survey_tour.js
+++ b/addons/survey/static/src/js/tours/survey_tour.js
@@ -1,7 +1,6 @@
/** @odoo-module */
-import { _t } from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
diff --git a/addons/web/__manifest__.py b/addons/web/__manifest__.py
index 7d5077cb21e..2c633f76f3d 100644
--- a/addons/web/__manifest__.py
+++ b/addons/web/__manifest__.py
@@ -152,7 +152,6 @@ This module provides the core of the Odoo Web Client.
'web/static/src/legacy/js/common_env.js',
'web/static/src/legacy/js/widgets/name_and_signature.js',
'web/static/src/legacy/xml/name_and_signature.xml',
- 'web/static/src/legacy/translations_loaded.js',
],
'web.assets_emoji': [
'web/static/src/core/emoji_picker/emoji_data.js'
@@ -374,7 +373,6 @@ This module provides the core of the Odoo Web Client.
'web/static/src/legacy/legacy_promise_error_handler.js',
'web/static/src/legacy/legacy_rpc_error_handler.js',
- 'web/static/src/legacy/translations_loaded.js',
],
'web.assets_frontend_lazy': [
('include', 'web.assets_frontend'),
diff --git a/addons/web/static/src/core/l10n/localization.js b/addons/web/static/src/core/l10n/localization.js
index d9e85f12248..aa093707b7a 100644
--- a/addons/web/static/src/core/l10n/localization.js
+++ b/addons/web/static/src/core/l10n/localization.js
@@ -11,6 +11,7 @@
* @property {boolean} multiLang
* @property {string} thousandsSep
* @property {number} weekStart
+ * @property {string} code
*/
/**
@@ -41,4 +42,5 @@ export const localization = {
multiLang: notReadyError,
thousandsSep: notReadyError,
weekStart: notReadyError,
+ code: notReadyError,
};
diff --git a/addons/web/static/src/core/l10n/localization_service.js b/addons/web/static/src/core/l10n/localization_service.js
index 27f5d0c25ad..07dc1d9b232 100644
--- a/addons/web/static/src/core/l10n/localization_service.js
+++ b/addons/web/static/src/core/l10n/localization_service.js
@@ -87,6 +87,7 @@ export const localizationService = {
multiLang,
thousandsSep: userLocalization.thousands_sep,
weekStart: userLocalization.week_start,
+ code:language,
});
return localization;
},
diff --git a/addons/web/static/src/legacy/js/core/ajax.js b/addons/web/static/src/legacy/js/core/ajax.js
index e78c8dbd119..494cf6d977f 100644
--- a/addons/web/static/src/legacy/js/core/ajax.js
+++ b/addons/web/static/src/legacy/js/core/ajax.js
@@ -7,8 +7,7 @@ import time from "@web/legacy/js/core/time";
import download from "@web/legacy/js/libs/download";
import contentdisposition from "@web/legacy/js/libs/content-disposition";
import { session } from "@web/session";
-
-var _t = core._t;
+import { _t } from "@web/core/l10n/translation";
// Create the final object containing all the functions first to allow monkey
// patching them correctly if ever needed.
diff --git a/addons/web/static/src/legacy/js/core/dialog.js b/addons/web/static/src/legacy/js/core/dialog.js
index 0ba24f751f9..2d22cbb7f5c 100644
--- a/addons/web/static/src/legacy/js/core/dialog.js
+++ b/addons/web/static/src/legacy/js/core/dialog.js
@@ -3,9 +3,9 @@
import core from "@web/legacy/js/services/core";
import dom from "@web/legacy/js/core/dom";
import Widget from "@web/legacy/js/core/widget";
+import { _t } from "@web/core/l10n/translation";
var QWeb = core.qweb;
-var _t = core._t;
/**
* A useful class to handle dialogs.
diff --git a/addons/web/static/src/legacy/js/core/dom.js b/addons/web/static/src/legacy/js/core/dom.js
index c72a7072613..6b5cbab8f1e 100644
--- a/addons/web/static/src/legacy/js/core/dom.js
+++ b/addons/web/static/src/legacy/js/core/dom.js
@@ -12,7 +12,7 @@
import { uniqueId } from "@web/core/utils/functions";
import concurrency from "@web/legacy/js/core/concurrency";
import core from "@web/legacy/js/services/core";
-var _t = core._t;
+import { localization } from "@web/core/l10n/localization";
/**
* Private function to notify that something has been attached in the DOM
@@ -113,7 +113,7 @@ var dom = {
class: $textarea[0].className,
});
- var direction = _t.database.parameters.direction === 'rtl' ? 'right' : 'left';
+ var direction = localization.direction === 'rtl' ? 'right' : 'left';
$fixedTextarea.css({
position: 'absolute',
opacity: 0,
diff --git a/addons/web/static/src/legacy/js/core/misc.js b/addons/web/static/src/legacy/js/core/misc.js
index 2d2f8f8bff4..c2cb6ae325d 100644
--- a/addons/web/static/src/legacy/js/core/misc.js
+++ b/addons/web/static/src/legacy/js/core/misc.js
@@ -1,11 +1,9 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import ajax from "@web/legacy/js/core/ajax";
import Widget from "@web/legacy/js/core/widget";
-var _t = core._t;
-
var messages_by_seconds = function() {
return [
[0, _t("Loading...")],
diff --git a/addons/web/static/src/legacy/js/core/qweb.js b/addons/web/static/src/legacy/js/core/qweb.js
index c45c9af52f7..a840c0cdf20 100644
--- a/addons/web/static/src/legacy/js/core/qweb.js
+++ b/addons/web/static/src/legacy/js/core/qweb.js
@@ -2,9 +2,7 @@
import { uniqueId } from "@web/core/utils/functions";
import { range } from "@web/core/utils/numbers";
-import translation from "@web/legacy/js/core/translation";
-
-var _t = translation._t;
+import { _t } from "@web/core/l10n/translation";
/**
* @param {boolean} debug
@@ -24,7 +22,7 @@ function QWeb(debug, default_dict, enableTranslation) {
'uniqueId': uniqueId,
'range' : range,
'JSON': JSON,
- '_t' : translation._t,
+ '_t' : _t,
'__debug__': debug,
'moment': function(date) { return new moment(date); },
'csrf_token': odoo.csrf_token,
diff --git a/addons/web/static/src/legacy/js/widgets/date_picker.js b/addons/web/static/src/legacy/js/widgets/date_picker.js
index ebbb26db1da..81dc748557e 100644
--- a/addons/web/static/src/legacy/js/widgets/date_picker.js
+++ b/addons/web/static/src/legacy/js/widgets/date_picker.js
@@ -1,12 +1,10 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { formatDate, formatDateTime, parseDate, parseDateTime } from "@web/legacy/js/core/dates";
import time from "@web/legacy/js/core/time";
import Widget from "@web/legacy/js/core/widget";
-var _t = core._t;
-
var DateWidget = Widget.extend({
template: "web.datepicker",
type_of_date: "date",
diff --git a/addons/web/static/src/legacy/translations_loaded.js b/addons/web/static/src/legacy/translations_loaded.js
deleted file mode 100644
index a86dcf97991..00000000000
--- a/addons/web/static/src/legacy/translations_loaded.js
+++ /dev/null
@@ -1,8 +0,0 @@
-/** @odoo-module */
-
-// this module is imported through its alias to ensure translations are loaded
-// before a module definition is executed, this will be insured by the odoo
-// module system and is required for defining tours with translated content.
-
-import { is_bound } from "web.session";
-export default is_bound;
diff --git a/addons/web/static/tests/legacy/core/time_tests.js b/addons/web/static/tests/legacy/core/time_tests.js
index 15998790e4b..be1b76afd37 100644
--- a/addons/web/static/tests/legacy/core/time_tests.js
+++ b/addons/web/static/tests/legacy/core/time_tests.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { localization } from "@web/core/l10n/localization";
import time from "@web/legacy/js/core/time";
QUnit.module('core', {}, function () {
@@ -147,16 +147,16 @@ QUnit.module('core', {}, function () {
QUnit.test("Get lang datetime format", (assert) => {
assert.expect(4);
- const originalParameters = Object.assign({}, core._t.database.parameters);
- Object.assign(core._t.database.parameters, {
- date_format: '%m/%d/%Y',
- time_format: '%H:%M:%S',
+ const originalParameters = Object.assign({}, localization);
+ Object.assign(localization, {
+ dateFormat: '%m/%d/%Y',
+ timeFormat: '%H:%M:%S',
});
assert.strictEqual(time.getLangDateFormat(), "MM/DD/YYYY");
assert.strictEqual(time.getLangDateFormatWoZero(), "M/D/YYYY");
assert.strictEqual(time.getLangTimeFormat(), "HH:mm:ss");
assert.strictEqual(time.getLangTimeFormatWoZero(), "H:m:s");
- Object.assign(core._t.database.parameters, originalParameters);
+ Object.assign(localization, originalParameters);
});
});
diff --git a/addons/web_editor/static/src/js/common/ace.js b/addons/web_editor/static/src/js/common/ace.js
index 8e52523c411..d1f29f39625 100644
--- a/addons/web_editor/static/src/js/common/ace.js
+++ b/addons/web_editor/static/src/js/common/ace.js
@@ -2,7 +2,7 @@
import config from "@web/legacy/js/services/config";
import concurrency from "@web/legacy/js/core/concurrency";
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import dom from "@web/legacy/js/core/dom";
import Dialog from "@web/legacy/js/core/dialog";
import Widget from "@web/legacy/js/core/widget";
@@ -12,8 +12,6 @@ import { debounce } from "@web/core/utils/timing";
import { sortBy } from "@web/core/utils/arrays";
import { pick } from "@web/core/utils/objects";
-var _t = core._t;
-
/**
* Formats a content-check result (@see checkXML, checkSCSS).
*
diff --git a/addons/web_editor/static/src/js/editor/snippets.editor.js b/addons/web_editor/static/src/js/editor/snippets.editor.js
index 08e52deb805..b56b16bb044 100644
--- a/addons/web_editor/static/src/js/editor/snippets.editor.js
+++ b/addons/web_editor/static/src/js/editor/snippets.editor.js
@@ -25,8 +25,7 @@ import {
xml,
} from "@odoo/owl";
import { LinkTools } from '@web_editor/js/wysiwyg/widgets/link_tools';
-
-var _t = core._t;
+import { _t } from "@web/core/l10n/translation";
let cacheSnippetTemplate = {};
diff --git a/addons/web_editor/static/src/js/editor/snippets.options.js b/addons/web_editor/static/src/js/editor/snippets.options.js
index 4571a189c44..3e43f6d81ec 100644
--- a/addons/web_editor/static/src/js/editor/snippets.options.js
+++ b/addons/web_editor/static/src/js/editor/snippets.options.js
@@ -38,6 +38,7 @@ import {SIZES, MEDIAS_BREAKPOINTS} from "@web/core/ui/ui_service";
import { sprintf } from "@web/core/utils/strings";
import { uniqueId } from "@web/core/utils/functions";
import { pick } from "@web/core/utils/objects";
+import { _t } from "@web/core/l10n/translation";
import {
isCSSColor,
convertCSSColorToRgba,
@@ -45,7 +46,6 @@ import {
} from '@web/core/utils/colors';
var qweb = core.qweb;
-var _t = core._t;
const preserveCursor = OdooEditorLib.preserveCursor;
const descendants = OdooEditorLib.descendants;
const { DateTime } = luxon;
diff --git a/addons/web_tour/static/src/tour_service/tour_service.js b/addons/web_tour/static/src/tour_service/tour_service.js
index 8a188684ee1..23d7a3e791a 100644
--- a/addons/web_tour/static/src/tour_service/tour_service.js
+++ b/addons/web_tour/static/src/tour_service/tour_service.js
@@ -59,7 +59,6 @@ export const tourService = {
dependencies: ["orm", "effect", "ui", "localization"],
start: async (_env, { orm, effect, ui }) => {
await whenReady();
- await odoo.ready("@web/legacy/translations_loaded");
/** @type {{ [k: string]: Tour }} */
const tours = {};
diff --git a/addons/website/static/src/js/content/website_root.js b/addons/website/static/src/js/content/website_root.js
index ac30f259d53..7ca1cb03573 100644
--- a/addons/website/static/src/js/content/website_root.js
+++ b/addons/website/static/src/js/content/website_root.js
@@ -1,7 +1,7 @@
/** @odoo-module */
import { loadJS } from "@web/core/assets";
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from '@web/legacy/js/core/utils';
import session from 'web.session';
import publicRootData from '@web/legacy/js/public/public_root';
diff --git a/addons/website/static/src/js/editor/snippets.editor.js b/addons/website/static/src/js/editor/snippets.editor.js
index 34ceb5d6d1b..e86705b5d07 100644
--- a/addons/website/static/src/js/editor/snippets.editor.js
+++ b/addons/website/static/src/js/editor/snippets.editor.js
@@ -1,6 +1,7 @@
/** @odoo-modules **/
-import {qweb, _t} from "@web/legacy/js/services/core";
+import { qweb } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import Dialog from "@web/legacy/js/core/dialog";
import weSnippetEditor from "@web_editor/js/editor/snippets.editor";
import wSnippetOptions from "@website/js/editor/snippets.options";
diff --git a/addons/website/static/src/js/editor/snippets.options.js b/addons/website/static/src/js/editor/snippets.options.js
index 36c292771b9..aa33d2731ed 100644
--- a/addons/website/static/src/js/editor/snippets.options.js
+++ b/addons/website/static/src/js/editor/snippets.options.js
@@ -11,6 +11,7 @@ import wUtils from "@website/js/utils";
import {isImageSupportedForStyle} from "@web_editor/js/editor/image_processing";
import "@website/snippets/s_popup/options";
import { range } from "@web/core/utils/numbers";
+import { _t } from "@web/core/l10n/translation";
import {Domain} from "@web/core/domain";
import {
isCSSColor,
@@ -20,7 +21,6 @@ import {
convertHslToRgb,
} from '@web/core/utils/colors';
-var _t = core._t;
var qweb = core.qweb;
const InputUserValueWidget = options.userValueWidgetsRegistry['we-input'];
diff --git a/addons/website/static/src/js/tours/configurator_tour.js b/addons/website/static/src/js/tours/configurator_tour.js
index 1e1d4d53462..29b8da1f7a7 100644
--- a/addons/website/static/src/js/tours/configurator_tour.js
+++ b/addons/website/static/src/js/tours/configurator_tour.js
@@ -1,9 +1,7 @@
/** @odoo-module **/
import wTourUtils from "@website/js/tours/tour_utils";
-import core from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
-const _t = core._t;
+import { _t } from "@web/core/l10n/translation";
wTourUtils.registerThemeHomepageTour('configurator_tour', () => {
diff --git a/addons/website/static/src/js/tours/tour_utils.js b/addons/website/static/src/js/tours/tour_utils.js
index 6be7b5806f7..8b6daa45156 100644
--- a/addons/website/static/src/js/tours/tour_utils.js
+++ b/addons/website/static/src/js/tours/tour_utils.js
@@ -1,7 +1,7 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
+import { _t } from "@web/core/l10n/translation";
+
import { Markup } from "@web/legacy/js/core/utils";
import { registry } from "@web/core/registry";
import { sprintf } from "@web/core/utils/strings";
diff --git a/addons/website/static/src/snippets/s_chart/options.js b/addons/website/static/src/snippets/s_chart/options.js
index ba79bb3eb69..923b32bbdee 100644
--- a/addons/website/static/src/snippets/s_chart/options.js
+++ b/addons/website/static/src/snippets/s_chart/options.js
@@ -1,12 +1,10 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import options from "@web_editor/js/editor/snippets.options";
import weUtils from "@web_editor/js/common/utils";
import { isCSSColor } from '@web/core/utils/colors';
-var _t = core._t;
-
options.registry.InnerChart = options.Class.extend({
custom_events: Object.assign({}, options.Class.prototype.custom_events, {
'get_custom_colors': '_onGetCustomColors',
diff --git a/addons/website/static/src/snippets/s_countdown/000.js b/addons/website/static/src/snippets/s_countdown/000.js
index cfd70b339be..4ff65d9089e 100644
--- a/addons/website/static/src/snippets/s_countdown/000.js
+++ b/addons/website/static/src/snippets/s_countdown/000.js
@@ -4,9 +4,9 @@ import core from "@web/legacy/js/services/core";
import publicWidget from "@web/legacy/js/public/public_widget";
import weUtils from "@web_editor/js/common/utils";
import { isCSSColor } from '@web/core/utils/colors';
+import { _t } from "@web/core/l10n/translation";
const qweb = core.qweb;
-const _t = core._t;
const CountdownWidget = publicWidget.Widget.extend({
selector: '.s_countdown',
diff --git a/addons/website/static/src/snippets/s_embed_code/options.js b/addons/website/static/src/snippets/s_embed_code/options.js
index 4e91f97d845..f21c9af3ff4 100644
--- a/addons/website/static/src/snippets/s_embed_code/options.js
+++ b/addons/website/static/src/snippets/s_embed_code/options.js
@@ -4,8 +4,7 @@ import Dialog from '@web/legacy/js/core/dialog';
import core from "@web/legacy/js/services/core";
import options from '@web_editor/js/editor/snippets.options';
import { loadBundle } from "@web/core/assets";
-
-const _t = core._t;
+import { _t } from "@web/core/l10n/translation";
options.registry.EmbedCode = options.Class.extend({
//--------------------------------------------------------------------------
diff --git a/addons/website/static/src/snippets/s_google_map/options.js b/addons/website/static/src/snippets/s_google_map/options.js
index a8cd7008d4c..17121e050f3 100644
--- a/addons/website/static/src/snippets/s_google_map/options.js
+++ b/addons/website/static/src/snippets/s_google_map/options.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import options from "@web_editor/js/editor/snippets.options";
options.registry.GoogleMap = options.Class.extend({
diff --git a/addons/website/static/src/snippets/s_image_gallery/options.js b/addons/website/static/src/snippets/s_image_gallery/options.js
index ff6f2f53256..2c0d6f91902 100644
--- a/addons/website/static/src/snippets/s_image_gallery/options.js
+++ b/addons/website/static/src/snippets/s_image_gallery/options.js
@@ -5,8 +5,8 @@ import { ComponentWrapper } from "@web/legacy/js/owl_compatibility";
import core from "@web/legacy/js/services/core";
import options from "@web_editor/js/editor/snippets.options";
import wUtils from '@website/js/utils';
+import { _t } from "@web/core/l10n/translation";
-var _t = core._t;
var qweb = core.qweb;
/**
diff --git a/addons/website/static/src/snippets/s_map/options.js b/addons/website/static/src/snippets/s_map/options.js
index bc85ef361b7..25611cfe329 100644
--- a/addons/website/static/src/snippets/s_map/options.js
+++ b/addons/website/static/src/snippets/s_map/options.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import options from '@web_editor/js/editor/snippets.options';
import {generateGMapIframe, generateGMapLink} from '@website/js/utils';
diff --git a/addons/website/static/src/snippets/s_product_catalog/options.js b/addons/website/static/src/snippets/s_product_catalog/options.js
index 6b33c919e88..a9faddc400f 100644
--- a/addons/website/static/src/snippets/s_product_catalog/options.js
+++ b/addons/website/static/src/snippets/s_product_catalog/options.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import options from "@web_editor/js/editor/snippets.options";
-const _t = core._t;
-
options.registry.ProductCatalog = options.Class.extend({
//--------------------------------------------------------------------------
diff --git a/addons/website/static/src/snippets/s_progress_bar/options.js b/addons/website/static/src/snippets/s_progress_bar/options.js
index 256893ffa14..8bbd2a7c526 100644
--- a/addons/website/static/src/snippets/s_progress_bar/options.js
+++ b/addons/website/static/src/snippets/s_progress_bar/options.js
@@ -1,11 +1,9 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import utils from "@web/legacy/js/core/utils";
import options from "@web_editor/js/editor/snippets.options";
-const _t = core._t;
-
options.registry.progress = options.Class.extend({
//--------------------------------------------------------------------------
diff --git a/addons/website/static/src/snippets/s_social_media/options.js b/addons/website/static/src/snippets/s_social_media/options.js
index 6c6f641fa76..0dcefe298ff 100644
--- a/addons/website/static/src/snippets/s_social_media/options.js
+++ b/addons/website/static/src/snippets/s_social_media/options.js
@@ -3,7 +3,7 @@
import fonts from '@web_editor/js/wysiwyg/fonts';
import weUtils from '@web_editor/js/common/utils';
import options from '@web_editor/js/editor/snippets.options';
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
let dbSocialValues;
let dbSocialValuesProm;
diff --git a/addons/website/static/src/snippets/s_website_form/000.js b/addons/website/static/src/snippets/s_website_form/000.js
index 5f73f8e0590..4d4ed3dd659 100644
--- a/addons/website/static/src/snippets/s_website_form/000.js
+++ b/addons/website/static/src/snippets/s_website_form/000.js
@@ -10,8 +10,8 @@
import concurrency from "@web/legacy/js/core/concurrency";
import { sprintf } from "@web/core/utils/strings";
import { debounce } from "@web/core/utils/timing";
+ import { _t } from "@web/core/l10n/translation";
- var _t = core._t;
var qweb = core.qweb;
publicWidget.registry.EditModeWebsiteForm = publicWidget.Widget.extend({
diff --git a/addons/website/static/src/snippets/s_website_form/options.js b/addons/website/static/src/snippets/s_website_form/options.js
index 86c3e688cb3..75d12c0a6c9 100644
--- a/addons/website/static/src/snippets/s_website_form/options.js
+++ b/addons/website/static/src/snippets/s_website_form/options.js
@@ -9,9 +9,9 @@ import weUtils from "@web_editor/js/common/utils";
import "@website/js/editor/snippets.options";
import { sprintf } from "@web/core/utils/strings";
import { unique } from "@web/core/utils/arrays";
+import { _t } from "@web/core/l10n/translation";
const qweb = core.qweb;
-const _t = core._t;
let currentActionName;
const allFormsInfo = new Map();
diff --git a/addons/website/static/tests/tours/start_cloned_snippet.js b/addons/website/static/tests/tours/start_cloned_snippet.js
index 1a73ae27e21..37d8e8698a1 100644
--- a/addons/website/static/tests/tours/start_cloned_snippet.js
+++ b/addons/website/static/tests/tours/start_cloned_snippet.js
@@ -2,32 +2,34 @@
import wTourUtils from '@website/js/tours/tour_utils';
-const countdownSnippet = {
- name: 'Countdown',
- id: 's_countdown',
-};
-const dragNDropOutOfFooter = wTourUtils.dragNDrop(countdownSnippet);
-dragNDropOutOfFooter.run = 'drag_and_drop iframe #wrapwrap #wrap';
-
wTourUtils.registerWebsitePreviewTour('website_start_cloned_snippet', {
edition: true,
test: true,
url: '/',
-}, () => [
- dragNDropOutOfFooter,
- wTourUtils.clickOnSnippet(countdownSnippet),
- {
- content: 'Click on clone snippet',
- trigger: '.oe_snippet_clone',
- },
- {
- content: 'Check that the cloned snippet has a canvas and that something has been drawn inside of it',
- trigger: 'iframe .s_countdown:eq(1) canvas',
- run: function () {
- // Check that at least one bit has been drawn in the canvas
- if (!this.$anchor[0].getContext('2d').getImageData(0, 0, 1000, 1000).data.includes(1)) {
- console.error('The cloned snippet should have been started');
- }
+}, () => {
+ const countdownSnippet = {
+ name: 'Countdown',
+ id: 's_countdown',
+ };
+ const dragNDropOutOfFooter = wTourUtils.dragNDrop(countdownSnippet);
+ dragNDropOutOfFooter.run = 'drag_and_drop iframe #wrapwrap #wrap';
+ return [
+ dragNDropOutOfFooter,
+ wTourUtils.clickOnSnippet(countdownSnippet),
+ {
+ content: 'Click on clone snippet',
+ trigger: '.oe_snippet_clone',
},
- },
-]);
+ {
+ content: 'Check that the cloned snippet has a canvas and that something has been drawn inside of it',
+ trigger: 'iframe .s_countdown:eq(1) canvas',
+ run: function () {
+ // Check that at least one bit has been drawn in the canvas
+ if (!this.$anchor[0].getContext('2d').getImageData(0, 0, 1000, 1000).data.includes(1)) {
+ console.error('The cloned snippet should have been started');
+ }
+ },
+ },
+
+ ]
+});
diff --git a/addons/website_blog/static/src/js/options.js b/addons/website_blog/static/src/js/options.js
index a246a39083e..0cb7c051900 100644
--- a/addons/website_blog/static/src/js/options.js
+++ b/addons/website_blog/static/src/js/options.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import options from "@web_editor/js/editor/snippets.options";
import "@website/js/editor/snippets.options";
import { uniqueId } from "@web/core/utils/functions";
diff --git a/addons/website_blog/static/src/js/tours/website_blog.js b/addons/website_blog/static/src/js/tours/website_blog.js
index b64a031a70b..0d93e952560 100644
--- a/addons/website_blog/static/src/js/tours/website_blog.js
+++ b/addons/website_blog/static/src/js/tours/website_blog.js
@@ -1,7 +1,6 @@
/** @odoo-module **/
- import {_t} from "@web/legacy/js/services/core";
- import "@web/legacy/translations_loaded";
+ import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import wTourUtils from "@website/js/tours/tour_utils";
diff --git a/addons/website_blog/static/src/js/website_blog.js b/addons/website_blog/static/src/js/website_blog.js
index b1d0e283c68..14664fa314e 100644
--- a/addons/website_blog/static/src/js/website_blog.js
+++ b/addons/website_blog/static/src/js/website_blog.js
@@ -1,7 +1,7 @@
/** @odoo-module **/
import { sprintf } from "@web/core/utils/strings";
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import dom from "@web/legacy/js/core/dom";
import publicWidget from "@web/legacy/js/public/public_widget";
@@ -74,7 +74,7 @@ publicWidget.registry.websiteBlog = publicWidget.Widget.extend({
var blogPostTitle = $('#o_wblog_post_name').html() || '';
var articleURL = window.location.href;
if ($element.hasClass('o_twitter')) {
- var twitterText = core._t("Amazing blog article: %s! Check it live: %s");
+ var twitterText = _t("Amazing blog article: %s! Check it live: %s");
var tweetText = sprintf(twitterText, blogPostTitle, articleURL);
url = 'https://twitter.com/intent/tweet?tw_p=tweetbutton&text=' + encodeURIComponent(tweetText);
} else if ($element.hasClass('o_facebook')) {
diff --git a/addons/website_crm/static/src/js/website_crm_editor.js b/addons/website_crm/static/src/js/website_crm_editor.js
index d507947cd7c..5af209c3731 100644
--- a/addons/website_crm/static/src/js/website_crm_editor.js
+++ b/addons/website_crm/static/src/js/website_crm_editor.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import FormEditorRegistry from "@website/js/form_editor_registry";
-var _t = core._t;
-
FormEditorRegistry.add('create_lead', {
formFields: [{
type: 'char',
diff --git a/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js b/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js
index 333c303bc56..d69cd8d1f00 100644
--- a/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js
+++ b/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js
@@ -1,7 +1,7 @@
/** @odoo-module **/
import { sprintf } from "@web/core/utils/strings";
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
import time from "@web/legacy/js/core/time";
import { parseDate, formatDate } from "@web/core/l10n/dates";
diff --git a/addons/website_event/static/src/js/register_toaster_widget.js b/addons/website_event/static/src/js/register_toaster_widget.js
index b9f77a7c48c..cc7b3cb62a5 100644
--- a/addons/website_event/static/src/js/register_toaster_widget.js
+++ b/addons/website_event/static/src/js/register_toaster_widget.js
@@ -1,8 +1,7 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
-let _t = core._t;
import publicWidget from "@web/legacy/js/public/public_widget";
publicWidget.registry.RegisterToasterWidget = publicWidget.Widget.extend({
diff --git a/addons/website_event/static/src/js/tours/event_tour.js b/addons/website_event/static/src/js/tours/event_tour.js
index 4e01d84db68..1f764466c7f 100644
--- a/addons/website_event/static/src/js/tours/event_tour.js
+++ b/addons/website_event/static/src/js/tours/event_tour.js
@@ -1,9 +1,7 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
-import "@web/legacy/translations_loaded";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
-
import EventAdditionalTourSteps from "@event/js/tours/event_steps";
EventAdditionalTourSteps.include({
diff --git a/addons/website_event/static/src/js/website_event.js b/addons/website_event/static/src/js/website_event.js
index 4e482eee3b5..6cfc6f7e87d 100644
--- a/addons/website_event/static/src/js/website_event.js
+++ b/addons/website_event/static/src/js/website_event.js
@@ -1,11 +1,9 @@
/** @odoo-module **/
import ajax from "@web/legacy/js/core/ajax";
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
-var _t = core._t;
-
// Catch registration form event, because of JS for attendee details
var EventRegistrationForm = publicWidget.Widget.extend({
diff --git a/addons/website_event/static/tests/tours/website_event.js b/addons/website_event/static/tests/tours/website_event.js
index 8c7d3749610..fbeef1fe2f4 100644
--- a/addons/website_event/static/tests/tours/website_event.js
+++ b/addons/website_event/static/tests/tours/website_event.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
- import {_t} from "@web/legacy/js/services/core";
+ import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import wTourUtils from "@website/js/tours/tour_utils";
- import "@web/legacy/translations_loaded";
-
wTourUtils.registerWebsitePreviewTour("website_event_tour", {
test: true,
diff --git a/addons/website_event_booth/static/src/js/booth_register.js b/addons/website_event_booth/static/src/js/booth_register.js
index 176a5be64e7..6fefdfddbfd 100644
--- a/addons/website_event_booth/static/src/js/booth_register.js
+++ b/addons/website_event_booth/static/src/js/booth_register.js
@@ -2,8 +2,8 @@
import core from "@web/legacy/js/services/core";
import publicWidget from "@web/legacy/js/public/public_widget";
+import { _t } from "@web/core/l10n/translation";
var QWeb = core.qweb;
-var _t = core._t;
publicWidget.registry.boothRegistration = publicWidget.Widget.extend({
selector: '.o_wbooth_registration',
diff --git a/addons/website_event_meet/static/src/js/website_event_meeting_room.js b/addons/website_event_meet/static/src/js/website_event_meeting_room.js
index 7df001c0352..3283d069292 100644
--- a/addons/website_event_meet/static/src/js/website_event_meeting_room.js
+++ b/addons/website_event_meet/static/src/js/website_event_meeting_room.js
@@ -1,9 +1,8 @@
/** @odoo-module **/
import publicWidget from "@web/legacy/js/public/public_widget";
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import Dialog from "@web/legacy/js/core/dialog";
-const _t = core._t;
publicWidget.registry.websiteEventMeetingRoom = publicWidget.Widget.extend({
selector: '.o_wevent_meeting_room_card',
diff --git a/addons/website_event_track/static/src/js/event_track_reminder.js b/addons/website_event_track/static/src/js/event_track_reminder.js
index 351a3bb37ec..fad4b0837fd 100644
--- a/addons/website_event_track/static/src/js/event_track_reminder.js
+++ b/addons/website_event_track/static/src/js/event_track_reminder.js
@@ -3,8 +3,8 @@
import { sprintf } from "@web/core/utils/strings";
import { debounce } from "@web/core/utils/timing";
import core from "@web/legacy/js/services/core";
-var _t = core._t;
import publicWidget from "@web/legacy/js/public/public_widget";
+import { _t } from "@web/core/l10n/translation";
publicWidget.registry.websiteEventTrackReminder = publicWidget.Widget.extend({
selector: '.o_wetrack_js_reminder',
diff --git a/addons/website_event_track/static/src/js/website_event_track_proposal_form.js b/addons/website_event_track/static/src/js/website_event_track_proposal_form.js
index 4b5e0cd00a3..e394858d10d 100644
--- a/addons/website_event_track/static/src/js/website_event_track_proposal_form.js
+++ b/addons/website_event_track/static/src/js/website_event_track_proposal_form.js
@@ -2,9 +2,8 @@
import core from "@web/legacy/js/services/core";
import publicWidget from "@web/legacy/js/public/public_widget";
-
+import { _t } from "@web/core/l10n/translation";
var QWeb = core.qweb;
-var _t = core._t;
publicWidget.registry.websiteEventTrackProposalForm = publicWidget.Widget.extend({
selector: '.o_website_event_track_proposal_form',
diff --git a/addons/website_event_track/static/src/js/website_event_track_proposal_form_tags.js b/addons/website_event_track/static/src/js/website_event_track_proposal_form_tags.js
index fb7c9dd9bd3..15270cd4221 100644
--- a/addons/website_event_track/static/src/js/website_event_track_proposal_form_tags.js
+++ b/addons/website_event_track/static/src/js/website_event_track_proposal_form_tags.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
-var _t = core._t;
-
publicWidget.registry.websiteEventTrackProposalFormTags = publicWidget.Widget.extend({
selector: '.o_website_event_track_proposal_form_tags',
diff --git a/addons/website_event_track_quiz/static/src/js/event_quiz.js b/addons/website_event_track_quiz/static/src/js/event_quiz.js
index e51db17fcf4..d12680498bb 100644
--- a/addons/website_event_track_quiz/static/src/js/event_quiz.js
+++ b/addons/website_event_track_quiz/static/src/js/event_quiz.js
@@ -4,9 +4,8 @@
import publicWidget from "@web/legacy/js/public/public_widget";
import core from "@web/legacy/js/services/core";
import session from "web.session";
-
+import { _t } from "@web/core/l10n/translation";
var QWeb = core.qweb;
-var _t = core._t;
/**
* This widget is responsible of displaying quiz questions and propositions. Submitting the quiz will fetch the
diff --git a/addons/website_form_project/static/src/js/website_form_project_editor.js b/addons/website_form_project/static/src/js/website_form_project_editor.js
index 758bc7c5d1f..503dda38c7c 100644
--- a/addons/website_form_project/static/src/js/website_form_project_editor.js
+++ b/addons/website_form_project/static/src/js/website_form_project_editor.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import FormEditorRegistry from "@website/js/form_editor_registry";
-var _t = core._t;
-
FormEditorRegistry.add('create_task', {
formFields: [{
type: 'char',
diff --git a/addons/website_forum/static/src/js/tours/website_forum.js b/addons/website_forum/static/src/js/tours/website_forum.js
index c2aeec5e333..a8abd5f28ac 100644
--- a/addons/website_forum/static/src/js/tours/website_forum.js
+++ b/addons/website_forum/static/src/js/tours/website_forum.js
@@ -1,10 +1,7 @@
/** @odoo-module **/
- import core from "@web/legacy/js/services/core";
+ import { _t } from "@web/core/l10n/translation";
import wTourUtils from "@website/js/tours/tour_utils";
- import "@web/legacy/translations_loaded";
-
- var _t = core._t;
wTourUtils.registerBackendAndFrontendTour("question", {
url: '/forum/1',
diff --git a/addons/website_forum/static/src/js/website_forum.js b/addons/website_forum/static/src/js/website_forum.js
index ed7213dcb02..61d16896747 100644
--- a/addons/website_forum/static/src/js/website_forum.js
+++ b/addons/website_forum/static/src/js/website_forum.js
@@ -9,10 +9,9 @@ import publicWidget from "@web/legacy/js/public/public_widget";
import { Markup } from '@web/legacy/js/core/utils';
import session from "web.session";
import { escape, sprintf } from "@web/core/utils/strings";
+import { _t } from "@web/core/l10n/translation";
var qweb = core.qweb;
-var _t = core._t;
-
publicWidget.registry.websiteForum = publicWidget.Widget.extend({
selector: '.website_forum',
events: {
diff --git a/addons/website_hr_recruitment/static/src/js/website_hr_recruitment_editor.js b/addons/website_hr_recruitment/static/src/js/website_hr_recruitment_editor.js
index dbcb1e467fb..a61a4ce36f6 100644
--- a/addons/website_hr_recruitment/static/src/js/website_hr_recruitment_editor.js
+++ b/addons/website_hr_recruitment/static/src/js/website_hr_recruitment_editor.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import FormEditorRegistry from "@website/js/form_editor_registry";
-var _t = core._t;
-
FormEditorRegistry.add('apply_job', {
formFields: [{
type: 'char',
diff --git a/addons/website_links/static/src/js/website_links.js b/addons/website_links/static/src/js/website_links.js
index 4a1b8799bf8..bb76cc14a36 100644
--- a/addons/website_links/static/src/js/website_links.js
+++ b/addons/website_links/static/src/js/website_links.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
-var _t = core._t;
-
var SelectBox = publicWidget.Widget.extend({
events: {
'change': '_onChange',
diff --git a/addons/website_links/static/src/js/website_links_charts.js b/addons/website_links/static/src/js/website_links_charts.js
index 376ed2fc2f3..590e385a2a3 100644
--- a/addons/website_links/static/src/js/website_links_charts.js
+++ b/addons/website_links/static/src/js/website_links_charts.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
-var _t = core._t;
-
var BarChart = publicWidget.Widget.extend({
jsLibs: [
'/web/static/lib/Chart/Chart.js',
diff --git a/addons/website_links/static/src/js/website_links_code_editor.js b/addons/website_links/static/src/js/website_links_code_editor.js
index 3de4645c68f..192651f93ce 100644
--- a/addons/website_links/static/src/js/website_links_code_editor.js
+++ b/addons/website_links/static/src/js/website_links_code_editor.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
-var _t = core._t;
-
publicWidget.registry.websiteLinksCodeEditor = publicWidget.Widget.extend({
selector: '#wrapwrap:has(.o_website_links_edit_code)',
events: {
diff --git a/addons/website_mail_group/static/src/snippets/s_group/000.js b/addons/website_mail_group/static/src/snippets/s_group/000.js
index 20c1c3de36c..bb2a31b4a15 100644
--- a/addons/website_mail_group/static/src/snippets/s_group/000.js
+++ b/addons/website_mail_group/static/src/snippets/s_group/000.js
@@ -1,7 +1,6 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
-const _t = core._t;
+import { _t } from "@web/core/l10n/translation";
import MailGroup from "@mail_group/js/mail_group";
MailGroup.include({
diff --git a/addons/website_mail_group/static/src/snippets/s_group/options.js b/addons/website_mail_group/static/src/snippets/s_group/options.js
index 9474388e7af..47d9c0f916e 100644
--- a/addons/website_mail_group/static/src/snippets/s_group/options.js
+++ b/addons/website_mail_group/static/src/snippets/s_group/options.js
@@ -1,9 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import options from "@web_editor/js/editor/snippets.options";
import wUtils from "@website/js/utils";
-const _t = core._t;
options.registry.Group = options.Class.extend({
/**
diff --git a/addons/website_mass_mailing/static/src/js/mass_mailing_form_editor.js b/addons/website_mass_mailing/static/src/js/mass_mailing_form_editor.js
index ca95d2b2796..07ab2fe4128 100644
--- a/addons/website_mass_mailing/static/src/js/mass_mailing_form_editor.js
+++ b/addons/website_mass_mailing/static/src/js/mass_mailing_form_editor.js
@@ -1,10 +1,8 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import FormEditorRegistry from "@website/js/form_editor_registry";
-const _t = core._t;
-
FormEditorRegistry.add('create_mailing_contact', {
formFields: [{
name: 'name',
diff --git a/addons/website_mass_mailing/static/src/js/website_mass_mailing.editor.js b/addons/website_mass_mailing/static/src/js/website_mass_mailing.editor.js
index a153c7aa66c..c80e56000ca 100644
--- a/addons/website_mass_mailing/static/src/js/website_mass_mailing.editor.js
+++ b/addons/website_mass_mailing/static/src/js/website_mass_mailing.editor.js
@@ -3,10 +3,9 @@
import core from "@web/legacy/js/services/core";
import Dialog from "@web/legacy/js/core/dialog";
import options from "@web_editor/js/editor/snippets.options";
+import { _t } from "@web/core/l10n/translation";
const qweb = core.qweb;
-var _t = core._t;
-
options.registry.mailing_list_subscribe = options.Class.extend({
/**
diff --git a/addons/website_mass_mailing/static/src/js/website_mass_mailing.js b/addons/website_mass_mailing/static/src/js/website_mass_mailing.js
index cc2c47f2a29..8765e524dd6 100644
--- a/addons/website_mass_mailing/static/src/js/website_mass_mailing.js
+++ b/addons/website_mass_mailing/static/src/js/website_mass_mailing.js
@@ -1,11 +1,9 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from "@web/legacy/js/public/public_widget";
import {ReCaptcha} from "@google_recaptcha/js/recaptcha";
-var _t = core._t;
-
publicWidget.registry.subscribe = publicWidget.Widget.extend({
selector: ".js_subscribe",
disabledInEditableMode: false,
diff --git a/addons/website_payment/static/src/snippets/s_donation/000.js b/addons/website_payment/static/src/snippets/s_donation/000.js
index 66c5300f249..79627500409 100644
--- a/addons/website_payment/static/src/snippets/s_donation/000.js
+++ b/addons/website_payment/static/src/snippets/s_donation/000.js
@@ -1,7 +1,7 @@
/** @odoo-module **/
import { sprintf } from '@web/core/utils/strings';
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from '@web/legacy/js/public/public_widget';
const CUSTOM_BUTTON_EXTRA_WIDTH = 10;
diff --git a/addons/website_sale/static/src/js/tours/tour_utils.js b/addons/website_sale/static/src/js/tours/tour_utils.js
index 67878f79cde..ee0c14a2cd8 100644
--- a/addons/website_sale/static/src/js/tours/tour_utils.js
+++ b/addons/website_sale/static/src/js/tours/tour_utils.js
@@ -1,9 +1,7 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
-const _t = core._t;
+import { _t } from "@web/core/l10n/translation";
import wTourUtils from "@website/js/tours/tour_utils";
-import "@web/legacy/translations_loaded";
function addToCart({productName, search = true, productHasVariants = false}) {
const steps = [];
diff --git a/addons/website_sale/static/src/js/tours/website_sale_shop.js b/addons/website_sale/static/src/js/tours/website_sale_shop.js
index 00025e63787..7092e75f9fe 100644
--- a/addons/website_sale/static/src/js/tours/website_sale_shop.js
+++ b/addons/website_sale/static/src/js/tours/website_sale_shop.js
@@ -1,9 +1,8 @@
/** @odoo-module **/
- import {_t} from "@web/legacy/js/services/core";
+ import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import wTourUtils from "@website/js/tours/tour_utils";
- import "@web/legacy/translations_loaded";
wTourUtils.registerWebsitePreviewTour("shop", {
url: '/shop',
diff --git a/addons/website_sale/static/src/js/website_sale.editor.js b/addons/website_sale/static/src/js/website_sale.editor.js
index da376040f1e..37329906dae 100644
--- a/addons/website_sale/static/src/js/website_sale.editor.js
+++ b/addons/website_sale/static/src/js/website_sale.editor.js
@@ -6,7 +6,8 @@ import { ComponentWrapper } from "@web/legacy/js/owl_compatibility";
import { MediaDialog } from "@web_editor/components/media_dialog/media_dialog";
import { MediaDialogWrapper } from "@web_editor/components/media_dialog/media_dialog_wrapper";
import { useWowlService } from "@web/legacy/utils";
-import {qweb, _t} from "@web/legacy/js/services/core";
+import { qweb } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import Dialog from "@web/legacy/js/core/dialog";
import "@website/js/editor/snippets.options";
diff --git a/addons/website_sale/static/src/js/website_sale_cart.js b/addons/website_sale/static/src/js/website_sale_cart.js
index d6f8f7ee237..eb5e99c8c7c 100644
--- a/addons/website_sale/static/src/js/website_sale_cart.js
+++ b/addons/website_sale/static/src/js/website_sale_cart.js
@@ -1,8 +1,7 @@
/** @odoo-module **/
import publicWidget from "@web/legacy/js/public/public_widget";
-import core from "@web/legacy/js/services/core";
-var _t = core._t;
+import { _t } from "@web/core/l10n/translation";
var timeout;
diff --git a/addons/website_sale/static/src/js/website_sale_delivery.js b/addons/website_sale/static/src/js/website_sale_delivery.js
index 4af2da3ed4f..b5efdda0aff 100644
--- a/addons/website_sale/static/src/js/website_sale_delivery.js
+++ b/addons/website_sale/static/src/js/website_sale_delivery.js
@@ -2,10 +2,9 @@
import core from "@web/legacy/js/services/core";
import publicWidget from "@web/legacy/js/public/public_widget";
-
-const _t = core._t;
-const qweb = core.qweb;
+import { _t } from "@web/core/l10n/translation";
import concurrency from "@web/legacy/js/core/concurrency";
+const qweb = core.qweb;
publicWidget.registry.websiteSaleDelivery = publicWidget.Widget.extend({
selector: '.oe_website_sale',
diff --git a/addons/website_sale/static/src/js/website_sale_validate.js b/addons/website_sale/static/src/js/website_sale_validate.js
index 57a2afa19c4..95974c78c98 100644
--- a/addons/website_sale/static/src/js/website_sale_validate.js
+++ b/addons/website_sale/static/src/js/website_sale_validate.js
@@ -1,8 +1,7 @@
/** @odoo-module **/
import publicWidget from "@web/legacy/js/public/public_widget";
-import core from "@web/legacy/js/services/core";
-var _t = core._t;
+import { _t } from "@web/core/l10n/translation";
publicWidget.registry.websiteSaleValidate = publicWidget.Widget.extend({
selector: 'div.oe_website_sale_tx_status[data-order-id]',
diff --git a/addons/website_sale/static/src/snippets/s_add_to_cart/000.js b/addons/website_sale/static/src/snippets/s_add_to_cart/000.js
index 14bb419fabf..726c5a8337d 100644
--- a/addons/website_sale/static/src/snippets/s_add_to_cart/000.js
+++ b/addons/website_sale/static/src/snippets/s_add_to_cart/000.js
@@ -3,7 +3,7 @@
import publicWidget from '@web/legacy/js/public/public_widget';
import { cartHandlerMixin } from '@website_sale/js/website_sale_utils';
import { WebsiteSale } from '@website_sale/js/website_sale';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
publicWidget.registry.AddToCartSnippet = WebsiteSale.extend(cartHandlerMixin, {
selector: '.s_add_to_cart_btn',
diff --git a/addons/website_sale/static/src/snippets/s_add_to_cart/options.js b/addons/website_sale/static/src/snippets/s_add_to_cart/options.js
index 37008dc0d0e..e2afac2c4ba 100644
--- a/addons/website_sale/static/src/snippets/s_add_to_cart/options.js
+++ b/addons/website_sale/static/src/snippets/s_add_to_cart/options.js
@@ -1,7 +1,7 @@
/** @odoo-module **/
import options from '@web_editor/js/editor/snippets.options';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
const Many2oneUserValueWidget = options.userValueWidgetsRegistry['we-many2one'];
diff --git a/addons/website_sale/static/tests/tours/website_sale_snippet_products.js b/addons/website_sale/static/tests/tours/website_sale_snippet_products.js
index d911e843aaa..54b754fc9ac 100644
--- a/addons/website_sale/static/tests/tours/website_sale_snippet_products.js
+++ b/addons/website_sale/static/tests/tours/website_sale_snippet_products.js
@@ -33,27 +33,29 @@ function changeTemplate(templateKey) {
];
}
-let templatesSteps = [];
-for (const templateKey of templates) {
- templatesSteps = templatesSteps.concat(changeTemplate(templateKey));
-}
wTourUtils.registerWebsitePreviewTour('website_sale.snippet_products', {
test: true,
url: '/',
edition: true,
},
-() => [
- wTourUtils.dragNDrop(productsSnippet),
- wTourUtils.clickOnSnippet(productsSnippet),
- ...templatesSteps,
- ...changeTemplate('dynamic_filter_template_product_product_add_to_cart'),
- ...wTourUtils.clickOnSave(),
- {
- trigger: "iframe .s_dynamic_snippet_products .o_carousel_product_card_body .js_add_cart",
- run: 'click',
- },
- wSaleTourUtils.goToCart({backend: true}),
-]);
+() => {
+ let templatesSteps = [];
+ for (const templateKey of templates) {
+ templatesSteps = templatesSteps.concat(changeTemplate(templateKey));
+ }
+ return [
+ wTourUtils.dragNDrop(productsSnippet),
+ wTourUtils.clickOnSnippet(productsSnippet),
+ ...templatesSteps,
+ ...changeTemplate('dynamic_filter_template_product_product_add_to_cart'),
+ ...wTourUtils.clickOnSave(),
+ {
+ trigger: "iframe .s_dynamic_snippet_products .o_carousel_product_card_body .js_add_cart",
+ run: 'click',
+ },
+ wSaleTourUtils.goToCart({backend: true}),
+ ]
+});
wTourUtils.registerWebsitePreviewTour('website_sale.products_snippet_recently_viewed', {
test: true,
diff --git a/addons/website_sale_comparison/static/src/js/website_sale_comparison.js b/addons/website_sale_comparison/static/src/js/website_sale_comparison.js
index 8fd22e2d9c4..4c79603a432 100644
--- a/addons/website_sale_comparison/static/src/js/website_sale_comparison.js
+++ b/addons/website_sale_comparison/static/src/js/website_sale_comparison.js
@@ -6,10 +6,10 @@ import publicWidget from "@web/legacy/js/public/public_widget";
import {getCookie, setCookie} from "@web/legacy/js/core/cookie_utils";
import VariantMixin from "@website_sale/js/sale_variant_mixin";
import website_sale_utils from "@website_sale/js/website_sale_utils";
+import { _t } from "@web/core/l10n/translation";
const cartHandlerMixin = website_sale_utils.cartHandlerMixin;
var qweb = core.qweb;
-var _t = core._t;
// VariantMixin events are overridden on purpose here
// to avoid registering them more than once since they are already registered
diff --git a/addons/website_sale_loyalty/static/src/js/website_sale_loyalty_delivery.js b/addons/website_sale_loyalty/static/src/js/website_sale_loyalty_delivery.js
index 5f3a771a1b5..c4ec94ea3a7 100644
--- a/addons/website_sale_loyalty/static/src/js/website_sale_loyalty_delivery.js
+++ b/addons/website_sale_loyalty/static/src/js/website_sale_loyalty_delivery.js
@@ -2,9 +2,7 @@
import PublicWidget from '@web/legacy/js/public/public_widget';
import { patch } from "@web/core/utils/patch";
-import core from "@web/legacy/js/services/core";
-
-const _t = core._t;
+import { _t } from "@web/core/l10n/translation";
patch(PublicWidget.registry.websiteSaleDelivery, {
//--------------------------------------------------------------------------
diff --git a/addons/website_sale_picking/static/src/js/checkout_form.js b/addons/website_sale_picking/static/src/js/checkout_form.js
index 5e18eba6611..4645f611352 100644
--- a/addons/website_sale_picking/static/src/js/checkout_form.js
+++ b/addons/website_sale_picking/static/src/js/checkout_form.js
@@ -1,7 +1,7 @@
/** @odoo-module */
import publicWidget from '@web/legacy/js/public/public_widget';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import '@website_sale/js/website_sale_delivery';
publicWidget.registry.websiteSaleDelivery.include({
diff --git a/addons/website_sale_product_configurator/static/src/js/website_sale_options.js b/addons/website_sale_product_configurator/static/src/js/website_sale_options.js
index 2a9476c19d6..b0b95096d94 100644
--- a/addons/website_sale_product_configurator/static/src/js/website_sale_options.js
+++ b/addons/website_sale_product_configurator/static/src/js/website_sale_options.js
@@ -1,13 +1,11 @@
/** @odoo-module **/
import ajax from "@web/legacy/js/core/ajax";
-import core from "@web/legacy/js/services/core";
import publicWidget from "@web/legacy/js/public/public_widget";
import { OptionalProductsModal } from "@website_sale_product_configurator/js/sale_product_configurator_modal";
import "@website_sale/js/website_sale";
import wsUtils from "@website_sale/js/website_sale_utils";
-
-var _t = core._t;
+import { _t } from "@web/core/l10n/translation";
publicWidget.registry.WebsiteSale.include({
diff --git a/addons/website_slides/static/src/js/portal_chatter.js b/addons/website_slides/static/src/js/portal_chatter.js
index bd6f7cac8a0..d3f7c42bbe4 100644
--- a/addons/website_slides/static/src/js/portal_chatter.js
+++ b/addons/website_slides/static/src/js/portal_chatter.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import PortalChatter from '@portal/js/portal_chatter';
import { sprintf } from '@web/core/utils/strings';
diff --git a/addons/website_slides/static/src/js/slides_category_add.js b/addons/website_slides/static/src/js/slides_category_add.js
index e7b7f59b1cc..5753ca62ae7 100644
--- a/addons/website_slides/static/src/js/slides_category_add.js
+++ b/addons/website_slides/static/src/js/slides_category_add.js
@@ -2,7 +2,7 @@
import publicWidget from '@web/legacy/js/public/public_widget';
import Dialog from '@web/legacy/js/core/dialog';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
var CategoryAddDialog = Dialog.extend({
template: 'slides.category.add',
diff --git a/addons/website_slides/static/src/js/slides_category_delete.js b/addons/website_slides/static/src/js/slides_category_delete.js
index ce741e85986..15913f8228b 100644
--- a/addons/website_slides/static/src/js/slides_category_delete.js
+++ b/addons/website_slides/static/src/js/slides_category_delete.js
@@ -2,7 +2,7 @@
import publicWidget from '@web/legacy/js/public/public_widget';
import Dialog from '@web/legacy/js/core/dialog';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
const categoryDeleteDialog = Dialog.extend({
template: 'slides.category.delete',
diff --git a/addons/website_slides/static/src/js/slides_course_enroll_email.js b/addons/website_slides/static/src/js/slides_course_enroll_email.js
index 76745cf326b..f2b31f1b110 100644
--- a/addons/website_slides/static/src/js/slides_course_enroll_email.js
+++ b/addons/website_slides/static/src/js/slides_course_enroll_email.js
@@ -1,6 +1,6 @@
/** @odoo-module **/
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import Dialog from '@web/legacy/js/core/dialog';
import publicWidget from '@web/legacy/js/public/public_widget';
diff --git a/addons/website_slides/static/src/js/slides_course_quiz_finish.js b/addons/website_slides/static/src/js/slides_course_quiz_finish.js
index df71d173a4e..40f807e5c84 100644
--- a/addons/website_slides/static/src/js/slides_course_quiz_finish.js
+++ b/addons/website_slides/static/src/js/slides_course_quiz_finish.js
@@ -1,7 +1,7 @@
/** @odoo-module **/
import Dialog from '@web/legacy/js/core/dialog';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
/**
* This modal is used when the user finishes the quiz.
diff --git a/addons/website_slides/static/src/js/slides_course_quiz_question_form.js b/addons/website_slides/static/src/js/slides_course_quiz_question_form.js
index fc4048573cb..086a3140bcc 100644
--- a/addons/website_slides/static/src/js/slides_course_quiz_question_form.js
+++ b/addons/website_slides/static/src/js/slides_course_quiz_question_form.js
@@ -2,9 +2,8 @@
import publicWidget from '@web/legacy/js/public/public_widget';
import core from "@web/legacy/js/services/core";
-
+import { _t } from "@web/core/l10n/translation";
var QWeb = core.qweb;
-var _t = core._t;
/**
* This Widget is responsible of displaying the question inputs when adding a new question or when updating an
diff --git a/addons/website_slides/static/src/js/slides_course_slides_list.js b/addons/website_slides/static/src/js/slides_course_slides_list.js
index e72ead0c0a1..866e6d24722 100644
--- a/addons/website_slides/static/src/js/slides_course_slides_list.js
+++ b/addons/website_slides/static/src/js/slides_course_slides_list.js
@@ -1,7 +1,7 @@
/** @odoo-module **/
import publicWidget from '@web/legacy/js/public/public_widget';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { SlideCoursePage } from '@website_slides/js/slides_course_page';
publicWidget.registry.websiteSlidesCourseSlidesList = SlideCoursePage.extend({
diff --git a/addons/website_slides/static/src/js/slides_course_tag_add.js b/addons/website_slides/static/src/js/slides_course_tag_add.js
index 97d4669b6c6..9f287689de4 100644
--- a/addons/website_slides/static/src/js/slides_course_tag_add.js
+++ b/addons/website_slides/static/src/js/slides_course_tag_add.js
@@ -2,7 +2,7 @@
import { uniqueId } from '@web/core/utils/functions';
import { sprintf } from '@web/core/utils/strings';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import Dialog from '@web/legacy/js/core/dialog';
import publicWidget from '@web/legacy/js/public/public_widget';
diff --git a/addons/website_slides/static/src/js/slides_course_unsubscribe.js b/addons/website_slides/static/src/js/slides_course_unsubscribe.js
index 4134df2a0e5..2dde6784140 100644
--- a/addons/website_slides/static/src/js/slides_course_unsubscribe.js
+++ b/addons/website_slides/static/src/js/slides_course_unsubscribe.js
@@ -3,9 +3,8 @@
import core from "@web/legacy/js/services/core";
import Dialog from '@web/legacy/js/core/dialog';
import publicWidget from '@web/legacy/js/public/public_widget';
-
+import { _t } from "@web/core/l10n/translation";
var QWeb = core.qweb;
-var _t = core._t;
var SlideUnsubscribeDialog = Dialog.extend({
template: 'slides.course.unsubscribe.modal',
diff --git a/addons/website_slides/static/src/js/slides_share.js b/addons/website_slides/static/src/js/slides_share.js
index b63a18d0c26..7589eb919d9 100644
--- a/addons/website_slides/static/src/js/slides_share.js
+++ b/addons/website_slides/static/src/js/slides_share.js
@@ -2,7 +2,7 @@
import publicWidget from '@web/legacy/js/public/public_widget';
import '@website_slides/js/slides';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
export const ShareMail = publicWidget.Widget.extend({
events: {
diff --git a/addons/website_slides/static/src/js/slides_slide_archive.js b/addons/website_slides/static/src/js/slides_slide_archive.js
index 3c6845665d0..90a5c522a3d 100644
--- a/addons/website_slides/static/src/js/slides_slide_archive.js
+++ b/addons/website_slides/static/src/js/slides_slide_archive.js
@@ -2,7 +2,7 @@
import publicWidget from '@web/legacy/js/public/public_widget';
import Dialog from '@web/legacy/js/core/dialog';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
var SlideArchiveDialog = Dialog.extend({
template: 'slides.slide.archive',
diff --git a/addons/website_slides/static/src/js/slides_slide_like.js b/addons/website_slides/static/src/js/slides_slide_like.js
index c515b313158..45b66d24ccf 100644
--- a/addons/website_slides/static/src/js/slides_slide_like.js
+++ b/addons/website_slides/static/src/js/slides_slide_like.js
@@ -1,7 +1,7 @@
/** @odoo-module **/
import { sprintf } from '@web/core/utils/strings';
-import { _t } from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import publicWidget from '@web/legacy/js/public/public_widget';
import '@website_slides/js/slides';
diff --git a/addons/website_slides/static/src/js/tours/slides_tour.js b/addons/website_slides/static/src/js/tours/slides_tour.js
index c4a7f5f8a57..0f4a63746a5 100644
--- a/addons/website_slides/static/src/js/tours/slides_tour.js
+++ b/addons/website_slides/static/src/js/tours/slides_tour.js
@@ -1,9 +1,8 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import wTourUtils from "@website/js/tours/tour_utils";
-import "@web/legacy/translations_loaded";
wTourUtils.registerWebsitePreviewTour('slides_tour', {
url: '/slides',
diff --git a/addons/website_slides_survey/static/src/js/slides_upload.js b/addons/website_slides_survey/static/src/js/slides_upload.js
index 173f4aaf81c..84563f6e835 100644
--- a/addons/website_slides_survey/static/src/js/slides_upload.js
+++ b/addons/website_slides_survey/static/src/js/slides_upload.js
@@ -1,7 +1,6 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
-var _t = core._t;
+import { _t } from "@web/core/l10n/translation";
import SlidesUpload from "@website_slides/js/slides_upload";
/**
diff --git a/addons/website_twitter/static/src/js/website.twitter.editor.js b/addons/website_twitter/static/src/js/website.twitter.editor.js
index c2901ba8a0a..85721670b1d 100644
--- a/addons/website_twitter/static/src/js/website.twitter.editor.js
+++ b/addons/website_twitter/static/src/js/website.twitter.editor.js
@@ -1,11 +1,9 @@
/** @odoo-module **/
-import core from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import dom from "@web/legacy/js/core/dom";
import sOptions from "@web_editor/js/editor/snippets.options";
-var _t = core._t;
-
sOptions.registry.twitter = sOptions.Class.extend({
/**
* @override
diff --git a/odoo/addons/test_main_flows/static/tests/tours/main_flow.js b/odoo/addons/test_main_flows/static/tests/tours/main_flow.js
index c471fc86be9..9c5364a4baf 100644
--- a/odoo/addons/test_main_flows/static/tests/tours/main_flow.js
+++ b/odoo/addons/test_main_flows/static/tests/tours/main_flow.js
@@ -1,10 +1,9 @@
/** @odoo-module **/
-import {_t} from "@web/legacy/js/services/core";
+import { _t } from "@web/core/l10n/translation";
import { Markup } from "@web/legacy/js/core/utils";
import { registry } from "@web/core/registry";
import { stepUtils } from "@web_tour/tour_service/tour_utils";
-import "@web/legacy/translations_loaded";
registry.category("web_tour.tours").add('main_flow_tour', {
test: true,