diff --git a/erpnext/www/book-appointment/index.js b/erpnext/www/book-appointment/index.js
index 457c6cf..b91e3b0 100644
--- a/erpnext/www/book-appointment/index.js
+++ b/erpnext/www/book-appointment/index.js
@@ -13,26 +13,31 @@
 }
 
 async function get_global_variables() {
-    // Using await 
+    // Using await through this file instead of then.
     window.appointment_settings = (await frappe.call({
         method: 'erpnext.www.book-appointment.index.get_appointment_settings'
     })).message;
     window.timezones = (await frappe.call({
-        method: 'erpnext.www.book-appointment.index.get_timezones'
+        method:'erpnext.www.book-appointment.index.get_timezones'
     })).message;
     window.holiday_list = window.appointment_settings.holiday_list;
 }
 
 function setup_timezone_selector() {
+    /**
+     * window.timezones is a dictionary with the following structure
+     * { IANA name: Pretty name}
+     * For example : { Asia/Kolkata : "India Time - Asia/Kolkata"}
+     */
     let timezones_element = document.getElementById('appointment-timezone');
     let offset = new Date().getTimezoneOffset();
-    window.timezones.forEach(timezone => {
+    Object.keys(window.timezones).forEach((timezone) => {
         let opt = document.createElement('option');
         opt.value = timezone;
         if (timezone == moment.tz.guess()) {
             opt.selected = true;
         }
-        opt.innerHTML = timezone;
+        opt.innerHTML = window.timezones[timezone]
         timezones_element.appendChild(opt)
     });
 }
diff --git a/erpnext/www/book-appointment/index.py b/erpnext/www/book-appointment/index.py
index a8ab229..163fdc0 100644
--- a/erpnext/www/book-appointment/index.py
+++ b/erpnext/www/book-appointment/index.py
@@ -25,7 +25,18 @@
 
 @frappe.whitelist(allow_guest=True)
 def get_timezones():
-	return pytz.all_timezones
+	from babel.dates import get_timezone, get_timezone_name, Locale
+	from frappe.utils.momentjs import get_all_timezones
+
+	translated_dict = {}
+	locale = Locale.parse(frappe.local.lang, sep="-")
+
+	for tz in get_all_timezones():
+		timezone_name = get_timezone_name(get_timezone(tz), locale=locale, width='short')
+		if timezone_name:
+			translated_dict[tz] = timezone_name + ' - ' + tz
+
+	return translated_dict
 
 @frappe.whitelist(allow_guest=True)
 def get_appointment_slots(date, timezone):
