diff --git a/erpnext/accounts/doctype/accounting_period/accounting_period.py b/erpnext/accounts/doctype/accounting_period/accounting_period.py
index f7190b7..de45f3a 100644
--- a/erpnext/accounts/doctype/accounting_period/accounting_period.py
+++ b/erpnext/accounts/doctype/accounting_period/accounting_period.py
@@ -5,6 +5,7 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.model.document import Document
+from frappe import _
 
 class AccountingPeriod(Document):
 	def validate(self):
@@ -16,7 +17,7 @@
 	def autoname(self):
 		company_abbr = frappe.get_cached_value('Company',  self.company,  "abbr")
 		self.name = " - ".join([self.period_name, company_abbr])
-	
+
 	def validate_overlap(self):
 		existing_accounting_period = frappe.db.sql("""select name from `tabAccounting Period`
 			where (
@@ -33,7 +34,7 @@
 			}, as_dict=True)
 
 		if len(existing_accounting_period) > 0:
-			frappe.throw("Accounting Period overlaps with {0}".format(existing_accounting_period[0].get("name")))
+			frappe.throw(_("Accounting Period overlaps with {0}".format(existing_accounting_period[0].get("name"))))
 
 	def get_doctypes_for_closing(self):
 		docs_for_closing = []
diff --git a/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py b/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py
index 101b9f2..1318cf1 100644
--- a/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py
+++ b/erpnext/accounts/doctype/bank_statement_transaction_entry/bank_statement_transaction_entry.py
@@ -48,7 +48,7 @@
 
 	def get_statement_headers(self):
 		if not self.bank_settings:
-			frappe.throw("Bank Data mapper doesn't exist")
+			frappe.throw(_("Bank Data mapper doesn't exist"))
 		mapper_doc = frappe.get_doc("Bank Statement Settings", self.bank_settings)
 		headers = {entry.mapped_header:entry.stmt_header for entry in mapper_doc.header_items}
 		return headers
@@ -57,7 +57,7 @@
 		if self.bank_statement is None: return
 		filename = self.bank_statement.split("/")[-1]
 		if (len(self.new_transaction_items + self.reconciled_transaction_items) > 0):
-			frappe.throw("Transactions already retreived from the statement")
+			frappe.throw(_("Transactions already retreived from the statement"))
 
 		date_format = frappe.get_value("Bank Statement Settings", self.bank_settings, "date_format")
 		if (date_format is None):
@@ -314,7 +314,7 @@
 			try:
 				reconcile_against_document(lst)
 			except:
-				frappe.throw("Exception occurred while reconciling {0}".format(payment.reference_name))
+				frappe.throw(_("Exception occurred while reconciling {0}".format(payment.reference_name)))
 
 	def submit_payment_entries(self):
 		for payment in self.new_transaction_items:
@@ -414,7 +414,7 @@
 	elif (filename.lower().endswith("xls")):
 		rows = get_rows_from_xls_file(filename)
 	else:
-		frappe.throw("Only .csv and .xlsx files are supported currently")
+		frappe.throw(_("Only .csv and .xlsx files are supported currently"))
 
 	stmt_headers = headers.values()
 	for row in rows:
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
index dd4f51c..f4b656d 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -157,7 +157,7 @@
 	can_change_release_date: function(date) {
 		const diff = frappe.datetime.get_diff(date, frappe.datetime.nowdate());
 		if (diff < 0) {
-			frappe.throw('New release date should be in the future');
+			frappe.throw(__('New release date should be in the future'));
 			return false;
 		} else {
 			return true;
diff --git a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
index 1bd833b..a6f6ace 100644
--- a/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
+++ b/erpnext/accounts/doctype/purchase_invoice/purchase_invoice.py
@@ -105,7 +105,7 @@
 
 	def validate_release_date(self):
 		if self.release_date and getdate(nowdate()) >= getdate(self.release_date):
-			frappe.msgprint('Release date must be in the future', raise_exception=True)
+			frappe.throw(_('Release date must be in the future'))
 
 	def validate_cash(self):
 		if not self.cash_bank_account and flt(self.paid_amount):
diff --git a/erpnext/accounts/doctype/subscription_plan/subscription_plan.py b/erpnext/accounts/doctype/subscription_plan/subscription_plan.py
index d3fef60..625979b 100644
--- a/erpnext/accounts/doctype/subscription_plan/subscription_plan.py
+++ b/erpnext/accounts/doctype/subscription_plan/subscription_plan.py
@@ -4,6 +4,7 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe import _
 from frappe.model.document import Document
 from erpnext.utilities.product import get_price
 
@@ -13,7 +14,7 @@
 
 	def validate_interval_count(self):
 		if self.billing_interval_count < 1:
-			frappe.throw('Billing Interval Count cannot be less than 1')
+			frappe.throw(_('Billing Interval Count cannot be less than 1'))
 
 @frappe.whitelist()
 def get_plan_rate(plan, quantity=1, customer=None):
@@ -26,7 +27,7 @@
 			customer_group = frappe.db.get_value("Customer", customer, "customer_group")
 		else:
 			customer_group = None
-		
+
 		price = get_price(item_code=plan.item, price_list=plan.price_list, customer_group=customer_group, company=None, qty=quantity)
 		if not price:
 			return 0
diff --git a/erpnext/controllers/item_variant.py b/erpnext/controllers/item_variant.py
index 9152c31..669aa9b 100644
--- a/erpnext/controllers/item_variant.py
+++ b/erpnext/controllers/item_variant.py
@@ -176,7 +176,7 @@
 	for key in variants:
 		total_variants *= len(variants[key])
 	if total_variants >= 600:
-		frappe.msgprint("Please do not create more than 500 items at a time", raise_exception=1)
+		frappe.throw(_("Please do not create more than 500 items at a time"))
 		return
 	if total_variants < 10:
 		return create_multiple_variants(item, args)
diff --git a/erpnext/education/doctype/question/question.py b/erpnext/education/doctype/question/question.py
index b822108..9a973c7 100644
--- a/erpnext/education/doctype/question/question.py
+++ b/erpnext/education/doctype/question/question.py
@@ -38,7 +38,7 @@
 		options = self.options
 		answers = [item.name for item in options if item.is_correct == True]
 		if len(answers) == 0:
-			frappe.throw("No correct answer is set for {0}".format(self.name))
+			frappe.throw(_("No correct answer is set for {0}".format(self.name)))
 			return None
 		elif len(answers) == 1:
 			return answers[0]
diff --git a/erpnext/education/doctype/quiz/quiz.py b/erpnext/education/doctype/quiz/quiz.py
index 8e54745..ae1cb6c 100644
--- a/erpnext/education/doctype/quiz/quiz.py
+++ b/erpnext/education/doctype/quiz/quiz.py
@@ -4,12 +4,13 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe import _
 from frappe.model.document import Document
 
 class Quiz(Document):
 	def validate(self):
 		if self.passing_score > 100:
-			frappe.throw("Passing Score value should be between 0 and 100")
+			frappe.throw(_("Passing Score value should be between 0 and 100"))
 
 	def allowed_attempt(self, enrollment, quiz_name):
 		if self.max_attempts ==  0:
@@ -17,7 +18,7 @@
 
 		try:
 			if len(frappe.get_all("Quiz Activity", {'enrollment': enrollment.name, 'quiz': quiz_name})) >= self.max_attempts:
-				frappe.msgprint("Maximum attempts for this quiz reached!")
+				frappe.msgprint(_("Maximum attempts for this quiz reached!"))
 				return False
 			else:
 				return True
@@ -56,5 +57,5 @@
 		else:
 			return False
 	except TypeError:
-		frappe.throw("Compare List function takes on list arguments")
+		frappe.throw(_("Compare List function takes on list arguments"))
 
diff --git a/erpnext/education/doctype/student_report_generation_tool/student_report_generation_tool.py b/erpnext/education/doctype/student_report_generation_tool/student_report_generation_tool.py
index f997975..16933dc 100644
--- a/erpnext/education/doctype/student_report_generation_tool/student_report_generation_tool.py
+++ b/erpnext/education/doctype/student_report_generation_tool/student_report_generation_tool.py
@@ -4,6 +4,7 @@
 
 from __future__ import unicode_literals
 import frappe, json
+from frappe import _
 from frappe.model.document import Document
 from erpnext.education.api import get_grade
 from frappe.utils.pdf import get_pdf
@@ -79,7 +80,7 @@
 		from_date, to_date = frappe.db.get_value("Academic Term", academic_term, ["term_start_date", "term_end_date"])
 	if from_date and to_date:
 		attendance = dict(frappe.db.sql('''select status, count(student) as no_of_days
-			from `tabStudent Attendance` where student = %s 
+			from `tabStudent Attendance` where student = %s
 			and date between %s and %s group by status''',
 			(student, from_date, to_date)))
 		if "Absent" not in attendance.keys():
@@ -88,4 +89,4 @@
 			attendance["Present"] = 0
 		return attendance
 	else:
-		frappe.throw("Provide the academic year and set the starting and ending date.") 
\ No newline at end of file
+		frappe.throw(_("Provide the academic year and set the starting and ending date."))
\ No newline at end of file
diff --git a/erpnext/education/utils.py b/erpnext/education/utils.py
index 8cd5bbb..e0b278c 100644
--- a/erpnext/education/utils.py
+++ b/erpnext/education/utils.py
@@ -148,7 +148,7 @@
 		# Check if self enrollment in allowed
 		program = frappe.get_doc('Program', program_name)
 		if not program.allow_self_enroll:
-			return frappe.throw("You are not allowed to enroll for this course")
+			return frappe.throw(_("You are not allowed to enroll for this course"))
 
 		student = get_current_student()
 		if not student:
@@ -162,7 +162,7 @@
 	# Check if self enrollment in allowed
 	program = frappe.get_doc('Program', program_name)
 	if not program.allow_self_enroll:
-		return frappe.throw("You are not allowed to enroll for this course")
+		return frappe.throw(_("You are not allowed to enroll for this course"))
 
 	# Enroll in program
 	program_enrollment = student.enroll_in_program(program_name)
@@ -185,7 +185,7 @@
 
 	student = get_current_student()
 	if not student:
-		return frappe.throw("Student with email {0} does not exist".format(frappe.session.user), frappe.DoesNotExistError)
+		return frappe.throw(_("Student with email {0} does not exist".format(frappe.session.user)), frappe.DoesNotExistError)
 
 	enrollment = get_or_create_course_enrollment(course, program)
 	if content_type == 'Quiz':
@@ -220,7 +220,7 @@
 		quiz = frappe.get_doc("Quiz", quiz_name)
 		questions = quiz.get_questions()
 	except:
-		frappe.throw("Quiz {0} does not exist".format(quiz_name))
+		frappe.throw(_("Quiz {0} does not exist".format(quiz_name)))
 		return None
 
 	questions = [{
@@ -347,7 +347,7 @@
 	if not course_enrollment:
 		program_enrollment = get_enrollment('program', program, student.name)
 		if not program_enrollment:
-			frappe.throw("You are not enrolled in program {0}".format(program))
+			frappe.throw(_("You are not enrolled in program {0}".format(program)))
 			return
 		return student.enroll_in_course(course_name=course, program_enrollment=get_enrollment('program', program, student.name))
 	else:
diff --git a/erpnext/erpnext_integrations/connectors/shopify_connection.py b/erpnext/erpnext_integrations/connectors/shopify_connection.py
index 88078ab..1d6e891 100644
--- a/erpnext/erpnext_integrations/connectors/shopify_connection.py
+++ b/erpnext/erpnext_integrations/connectors/shopify_connection.py
@@ -124,7 +124,7 @@
 
 	else:
 		so = frappe.get_doc("Sales Order", so)
-	
+
 	frappe.db.commit()
 	return so
 
@@ -252,6 +252,6 @@
 		{"parent": "Shopify Settings", "shopify_tax": tax_title}, "tax_account")
 
 	if not tax_account:
-		frappe.throw("Tax Account not specified for Shopify Tax {0}".format(tax.get("title")))
+		frappe.throw(_("Tax Account not specified for Shopify Tax {0}".format(tax.get("title"))))
 
 	return tax_account
diff --git a/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py b/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py
index 90bf957..141329b 100644
--- a/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py
+++ b/erpnext/healthcare/doctype/clinical_procedure_template/clinical_procedure_template.py
@@ -30,7 +30,7 @@
 			try:
 				frappe.delete_doc("Item",self.item)
 			except Exception:
-				frappe.throw("""Not permitted. Please disable the Procedure Template""")
+				frappe.throw(_("""Not permitted. Please disable the Procedure Template"""))
 
 	def get_item_details(self, args=None):
 		item = frappe.db.sql("""select stock_uom, item_name
diff --git a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js
index 2f328de..b3cbd1f 100644
--- a/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js
+++ b/erpnext/healthcare/doctype/patient_appointment/patient_appointment.js
@@ -298,7 +298,7 @@
 		});
 	}
 	else{
-		frappe.msgprint("Please select Patient to get prescribed procedure");
+		frappe.msgprint(__("Please select Patient to get prescribed procedure"));
 	}
 };
 
diff --git a/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js b/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js
index c7df5b7..7ea4568 100644
--- a/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js
+++ b/erpnext/healthcare/doctype/patient_encounter/patient_encounter.js
@@ -160,7 +160,7 @@
 
 var btn_create_procedure = function (frm) {
 	if(!frm.doc.patient){
-		frappe.throw("Please select patient");
+		frappe.throw(__("Please select patient"));
 	}
 	frappe.route_options = {
 		"patient": frm.doc.patient,
diff --git a/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py b/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py
index 3a80b30..abb82f2 100644
--- a/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py
+++ b/erpnext/hr/doctype/employee_benefit_claim/employee_benefit_claim.py
@@ -84,7 +84,7 @@
 			pay_against_benefit_claim, max_benefit_amount = frappe.db.get_value("Salary Component", sal_struct_row.salary_component, ["pay_against_benefit_claim", "max_benefit_amount"])
 		except TypeError:
 			# show the error in tests?
-			frappe.throw("Unable to find Salary Component {0}".format(sal_struct_row.salary_component))
+			frappe.throw(_("Unable to find Salary Component {0}".format(sal_struct_row.salary_component)))
 		if sal_struct_row.is_flexible_benefit == 1 and pay_against_benefit_claim != 1:
 			total_pro_rata_max += max_benefit_amount
 	if total_pro_rata_max > 0:
diff --git a/erpnext/hr/doctype/hr_settings/hr_settings.js b/erpnext/hr/doctype/hr_settings/hr_settings.js
index d8be46b..9e5effe 100644
--- a/erpnext/hr/doctype/hr_settings/hr_settings.js
+++ b/erpnext/hr/doctype/hr_settings/hr_settings.js
@@ -15,7 +15,7 @@
 		let policy = frm.doc.password_policy;
 		if (policy) {
 			if (policy.includes(' ') || policy.includes('--')) {
-				frappe.msgprint("Password policy cannot contain spaces or simultaneous hyphens. The format will be restructured automatically");
+				frappe.msgprint(_("Password policy cannot contain spaces or simultaneous hyphens. The format will be restructured automatically"));
 			}
 			frm.set_value('password_policy', policy.split(new RegExp(" |-", 'g')).filter((token) => token).join('-'));
 		}
diff --git a/erpnext/hub_node/api.py b/erpnext/hub_node/api.py
index 0c94df3..0d01c67 100644
--- a/erpnext/hub_node/api.py
+++ b/erpnext/hub_node/api.py
@@ -120,7 +120,7 @@
 def publish_selected_items(items_to_publish):
 	items_to_publish = json.loads(items_to_publish)
 	if not len(items_to_publish):
-		frappe.throw('No items to publish')
+		frappe.throw(_('No items to publish'))
 
 	for item in items_to_publish:
 		item_code = item.get('item_code')
@@ -165,7 +165,7 @@
 		frappe.db.set_value("Marketplace Settings", "Marketplace Settings", "sync_in_progress", 1)
 		return response
 	else:
-		frappe.throw('Unable to update remote activity')
+		frappe.throw(_('Unable to update remote activity'))
 
 
 def item_sync_postprocess():
@@ -173,7 +173,7 @@
 	if response:
 		frappe.db.set_value('Marketplace Settings', 'Marketplace Settings', 'last_sync_datetime', frappe.utils.now())
 	else:
-		frappe.throw('Unable to update remote activity')
+		frappe.throw(_('Unable to update remote activity'))
 
 	frappe.db.set_value('Marketplace Settings', 'Marketplace Settings', 'sync_in_progress', 0)
 
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index ded1e53..55a6892 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -645,7 +645,7 @@
 	set status for project and all related tasks
 	'''
 	if not status in ('Completed', 'Cancelled'):
-		frappe.throw('Status must be Cancelled or Completed')
+		frappe.throw(_('Status must be Cancelled or Completed'))
 
 	project = frappe.get_doc('Project', project)
 	frappe.has_permission(doc = project, throw = True)
diff --git a/erpnext/public/js/education/lms/quiz.js b/erpnext/public/js/education/lms/quiz.js
index 1b520eb..5248129 100644
--- a/erpnext/public/js/education/lms/quiz.js
+++ b/erpnext/public/js/education/lms/quiz.js
@@ -68,7 +68,7 @@
 		}).then(res => {
 			this.submit_btn.remove()
 			if (!res.message) {
-				frappe.throw("Something went wrong while evaluating the quiz.")
+				frappe.throw(__("Something went wrong while evaluating the quiz."))
 			}
 
 			let indicator = 'red'
diff --git a/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py b/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py
index 448abe8..aad267e 100644
--- a/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py
+++ b/erpnext/regional/doctype/gstr_3b_report/gstr_3b_report.py
@@ -4,6 +4,7 @@
 
 from __future__ import unicode_literals
 import frappe
+from frappe import _
 from frappe.model.document import Document
 import json
 from six import iteritems
@@ -414,7 +415,7 @@
 		if gst_details:
 			return gst_details[0]
 		else:
-			frappe.throw("Please enter GSTIN and state for the Company Address {0}".format(self.company_address))
+			frappe.throw(_("Please enter GSTIN and state for the Company Address {0}".format(self.company_address)))
 
 	def get_account_heads(self):
 
@@ -427,7 +428,7 @@
 		if account_heads:
 			return account_heads
 		else:
-			frappe.throw("Please set account heads in GST Settings for Compnay {0}".format(self.company))
+			frappe.throw(_("Please set account heads in GST Settings for Compnay {0}".format(self.company)))
 
 	def get_missing_field_invoices(self):
 
