diff --git a/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js b/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js
index 2235298..f795dfa 100644
--- a/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js
+++ b/erpnext/accounts/doctype/chart_of_accounts_importer/chart_of_accounts_importer.js
@@ -94,8 +94,7 @@
 				callback: function(r) {
 					if(r.message===false) {
 						frm.set_value("company", "");
-						frappe.throw(__(`Transactions against the company already exist!
-							Chart Of accounts can be imported for company with no transactions`));
+						frappe.throw(__("Transactions against the Company already exist! Chart of Accounts can only be imported for a Company with no transactions."));
 					} else {
 						frm.trigger("refresh");
 					}
diff --git a/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js b/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js
index 9703527..6ae81d7 100644
--- a/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js
+++ b/erpnext/accounts/page/bank_reconciliation/bank_reconciliation.js
@@ -156,7 +156,7 @@
 
 	setup_transactions_dom() {
 		const me = this;
-		me.parent.$main_section.append(`<div class="transactions-table"></div>`)
+		me.parent.$main_section.append('<div class="transactions-table"></div>');
 	}
 
 	create_datatable() {
@@ -167,9 +167,7 @@
 			})
 		}
 		catch(err) {
-			let msg = __(`Your file could not be processed by ERPNext.
-						<br>It should be a standard CSV or XLSX file.
-						<br>The headers should be in the first row.`)
+			let msg = __("Your file could not be processed. It should be a standard CSV or XLSX file with headers in the first row.");
 			frappe.throw(msg)
 		}
 
diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index 7ad164a..b2318a2 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -373,8 +373,8 @@
 			doctype_field = frappe.scrub(doctype)
 			frm.set_value(doctype_field, '');
 			frappe.msgprint({
-				title: __(`Invalid ${doctype}`),
-				message: __(`The selected ${doctype} doesn't contains selected Asset Item.`),
+				title: __('Invalid {0}', [__(doctype)]),
+				message: __('The selected {0} does not contain the selected Asset Item.', [__(doctype)]),
 				indicator: 'red'
 			});
 		}
@@ -436,7 +436,7 @@
 	depreciation_start_date: function(frm, cdt, cdn) {
 		const book = locals[cdt][cdn];
 		if (frm.doc.available_for_use_date && book.depreciation_start_date == frm.doc.available_for_use_date) {
-			frappe.msgprint(__(`Depreciation Posting Date should not be equal to Available for Use Date.`));
+			frappe.msgprint(__("Depreciation Posting Date should not be equal to Available for Use Date."));
 			book.depreciation_start_date = "";
 			frm.refresh_field("finance_books");
 		}
diff --git a/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.js b/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.js
index 99b8214..dc3ae8b 100644
--- a/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.js
+++ b/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.js
@@ -4,7 +4,7 @@
 		let from_time = Date.parse('01/01/2019 ' + d.from_time);
 		let to_time = Date.parse('01/01/2019 ' + d.to_time);
 		if (from_time > to_time) {
-			frappe.throw(__(`In row ${i + 1} of Appointment Booking Slots : "To Time" must be later than "From Time"`));
+			frappe.throw(__('In row {0} of Appointment Booking Slots: "To Time" must be later than "From Time".', [i + 1]));
 		}
 	});
 }
\ No newline at end of file
diff --git a/erpnext/projects/doctype/task/task.js b/erpnext/projects/doctype/task/task.js
index 8c6a9cf..002ddb2 100644
--- a/erpnext/projects/doctype/task/task.js
+++ b/erpnext/projects/doctype/task/task.js
@@ -49,7 +49,10 @@
 			},
 			callback: function (r) {
 				if (r.message.length > 0) {
-					frappe.msgprint(__(`Cannot convert it to non-group. The following child Tasks exist: ${r.message.join(", ")}.`));
+					let message = __('Cannot convert Task to non-group because the following child Tasks exist: {0}.',
+						[r.message.join(", ")]
+					);
+					frappe.msgprint(message);
 					frm.reload_doc();
 				}
 			}
diff --git a/erpnext/public/js/hub/pages/Category.vue b/erpnext/public/js/hub/pages/Category.vue
index 057fe8b..16d0601 100644
--- a/erpnext/public/js/hub/pages/Category.vue
+++ b/erpnext/public/js/hub/pages/Category.vue
@@ -32,7 +32,7 @@
 			item_id_fieldname: 'name',
 
 			// Constants
-			empty_state_message: __(`No items in this category yet.`),
+			empty_state_message: __('No items in this category yet.'),
 
 			search_value: '',
 
diff --git a/erpnext/public/js/hub/pages/FeaturedItems.vue b/erpnext/public/js/hub/pages/FeaturedItems.vue
index ab9990a..63ae7e9 100644
--- a/erpnext/public/js/hub/pages/FeaturedItems.vue
+++ b/erpnext/public/js/hub/pages/FeaturedItems.vue
@@ -33,10 +33,8 @@
 
 			// Constants
 			page_title: __('Your Featured Items'),
-            empty_state_message: __(`No featured items yet. Got to your 
-                                <a href="#marketplace/published-items">
-                                Published Items</a> 
-                                and feature upto 8 items that you want to highlight to your customers.`)
+			empty_state_message: __('No featured items yet. Got to your {0} and feature up to eight items that you want to highlight to your customers.',
+				[`<a href="#marketplace/published-items">${__("Published Items")}</a>`])
 		};
 	},
 	created() {
@@ -71,9 +69,9 @@
 
 			const item_name = this.items.filter(item => item.hub_item_name === hub_item_name);
 
-			alert = frappe.show_alert(__(`<span>${item_name} removed.
-				<a href="#" data-action="undo-remove"><b>Undo</b></a></span>`),
-				grace_period/1000,
+			alert_message = __('{0} removed. {1}', [item_name, 
+				`<a href="#" data-action="undo-remove"><b>${__('Undo')}</b></a>`]);
+			alert = frappe.show_alert(alert_message, grace_period / 1000,
 				{
 					'undo-remove': undo_remove.bind(this)
 				}
diff --git a/erpnext/public/js/hub/pages/Item.vue b/erpnext/public/js/hub/pages/Item.vue
index 51ade42..93002a7 100644
--- a/erpnext/public/js/hub/pages/Item.vue
+++ b/erpnext/public/js/hub/pages/Item.vue
@@ -113,12 +113,12 @@
 
 			let stats = __('No views yet');
 			if (this.item.view_count) {
-				const views_message = __(`${this.item.view_count} Views`);
+				const views_message = __('{0} Views', [this.item.view_count]);
 
 				const rating_html = get_rating_html(this.item.average_rating);
 				const rating_count =
 					this.item.no_of_ratings > 0
-						? `${this.item.no_of_ratings} reviews`
+						? __('{0} reviews', [this.item.no_of_ratings])
 						: __('No reviews yet');
 
 				stats = [views_message, rating_html, rating_count];
@@ -310,7 +310,7 @@
 					return this.get_item_details();
 				})
 				.then(() => {
-					frappe.show_alert(__(`${this.item.item_name} Updated`));
+					frappe.show_alert(__('{0} Updated', [this.item.item_name]));
 				});
 		},
 
@@ -337,7 +337,7 @@
 		},
 
 		unpublish_item() {
-			frappe.confirm(__(`Unpublish {0}?`, [this.item.item_name]), () => {
+			frappe.confirm(__('Unpublish {0}?', [this.item.item_name]), () => {
 				frappe
 					.call('erpnext.hub_node.api.unpublish_item', {
 						item_code: this.item.item_code,
diff --git a/erpnext/public/js/hub/pages/NotFound.vue b/erpnext/public/js/hub/pages/NotFound.vue
index 246d31b..8901b97 100644
--- a/erpnext/public/js/hub/pages/NotFound.vue
+++ b/erpnext/public/js/hub/pages/NotFound.vue
@@ -27,7 +27,7 @@
 			},
 
 			// Constants
-			empty_state_message: __(`Sorry! I could not find what you were looking for.`)
+			empty_state_message: __('Sorry! We could not find what you were looking for.')
 		};
 	},
 }
diff --git a/erpnext/public/js/hub/pages/Publish.vue b/erpnext/public/js/hub/pages/Publish.vue
index 735f2b9..96fa0aa 100644
--- a/erpnext/public/js/hub/pages/Publish.vue
+++ b/erpnext/public/js/hub/pages/Publish.vue
@@ -75,14 +75,11 @@
 			// TODO: multiline translations don't work
 			page_title: __('Publish Items'),
 			search_placeholder: __('Search Items ...'),
-			empty_state_message: __(`No Items selected yet. Browse and click on items below to publish.`),
-			valid_items_instruction: __(`Only items with an image and description can be published. Please update them if an item in your inventory does not appear.`),
+			empty_state_message: __('No Items selected yet. Browse and click on items below to publish.'),
+			valid_items_instruction: __('Only items with an image and description can be published. Please update them if an item in your inventory does not appear.'),
 			last_sync_message: (hub.settings.last_sync_datetime)
-				? __(`Last sync was
-				<a href="#marketplace/profile">
-					${comment_when(hub.settings.last_sync_datetime)}</a>.
-				<a href="#marketplace/published-items">
-					See your Published Items</a>.`)
+				? __('Last sync was {0}.', [`<a href="#marketplace/profile">${comment_when(hub.settings.last_sync_datetime)}</a>`]) + 
+				  ` <a href="#marketplace/published-items">${__('See your Published Items.')}</a>`
 				: ''
 		};
 	},
@@ -147,11 +144,9 @@
 		},
 
 		add_last_sync_message() {
-			this.last_sync_message = __(`Last sync was
-				<a href="#marketplace/profile">
-					${comment_when(hub.settings.last_sync_datetime)}</a>.
-				<a href="#marketplace/published-items">
-					See your Published Items</a>.`);
+			this.last_sync_message = __('Last sync was {0}.',
+				[`<a href="#marketplace/profile">${comment_when(hub.settings.last_sync_datetime)}</a>`]
+			) + `<a href="#marketplace/published-items">${__('See your Published Items')}</a>.`;
 		},
 
 		clear_last_sync_message() {
diff --git a/erpnext/public/js/hub/pages/SavedItems.vue b/erpnext/public/js/hub/pages/SavedItems.vue
index c29675a..7007ddc 100644
--- a/erpnext/public/js/hub/pages/SavedItems.vue
+++ b/erpnext/public/js/hub/pages/SavedItems.vue
@@ -29,7 +29,7 @@
 
 			// Constants
 			page_title: __('Saved Items'),
-			empty_state_message: __(`You haven't saved any items yet.`)
+			empty_state_message: __('You have not saved any items yet.')
 		};
 	},
 	created() {
@@ -64,8 +64,13 @@
 
 			const item_name = this.items.filter(item => item.hub_item_name === hub_item_name);
 
-			alert = frappe.show_alert(__(`<span>${item_name} removed.
-				<a href="#" data-action="undo-remove"><b>Undo</b></a></span>`),
+			alert = frappe.show_alert(`
+				<span>
+					${__('{0} removed.', [item_name], 'A specific Item has been removed.')}
+					<a href="#" data-action="undo-remove">
+						<b>${__('Undo', None, 'Undo removal of item.')}</b>
+					</a>
+				</span>`,
 				grace_period/1000,
 				{
 					'undo-remove': undo_remove.bind(this)
diff --git a/erpnext/public/js/hub/pages/Search.vue b/erpnext/public/js/hub/pages/Search.vue
index 1032842..c10841e 100644
--- a/erpnext/public/js/hub/pages/Search.vue
+++ b/erpnext/public/js/hub/pages/Search.vue
@@ -42,7 +42,10 @@
 	computed: {
 		page_title() {
 			return this.items.length
-				? __(`Results for "${this.search_value}" ${this.category !== 'All'? `in category ${this.category}` : ''}`)
+				? __('Results for "{0}" {1}', [
+					this.search_value,
+					this.category !== 'All' ? __('in category {0}', [this.category]) : ''
+				  ])
 				: __('No Items found.');
 		}
 	},
diff --git a/erpnext/public/js/hub/pages/Seller.vue b/erpnext/public/js/hub/pages/Seller.vue
index e339eaa..c0903c6 100644
--- a/erpnext/public/js/hub/pages/Seller.vue
+++ b/erpnext/public/js/hub/pages/Seller.vue
@@ -136,7 +136,7 @@
 				this.init = false;
 				this.profile = data.profile;
 				this.items = data.items;
-				this.item_container_heading = data.is_featured_item? "Features Items":"Popular Items";
+				this.item_container_heading = data.is_featured_item ? __('Featured Items') : __('Popular Items');
 				this.hub_seller = this.items[0].hub_seller;
 				this.recent_seller_reviews = data.recent_seller_reviews;
 				this.seller_product_view_stats = data.seller_product_view_stats;
@@ -147,7 +147,7 @@
 
 				this.country = __(profile.country);
 				this.site_name = __(profile.site_name);
-				this.joined_when = __(`Joined ${comment_when(profile.creation)}`);
+				this.joined_when = __('Joined {0}', [comment_when(profile.creation)]);
 
 				this.image = profile.logo;
 				this.sections = [
diff --git a/erpnext/public/js/setup_wizard.js b/erpnext/public/js/setup_wizard.js
index 5d21190..092f839 100644
--- a/erpnext/public/js/setup_wizard.js
+++ b/erpnext/public/js/setup_wizard.js
@@ -161,7 +161,10 @@
 						if(r.message){
 							exist = r.message;
 							me.get_field("bank_account").set_value("");
-							frappe.msgprint(__(`Account ${me.values.bank_account} already exists, enter a different name for your bank account`));
+							let message = __('Account {0} already exists. Please enter a different name for your bank account.',
+								[me.values.bank_account]
+							);
+							frappe.msgprint(message);
 						}
 					}
 				});
