feat(Holiday List): display localized country name
diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.js b/erpnext/setup/doctype/holiday_list/holiday_list.js
index dc4cd9f..8df49e1 100644
--- a/erpnext/setup/doctype/holiday_list/holiday_list.js
+++ b/erpnext/setup/doctype/holiday_list/holiday_list.js
@@ -8,8 +8,12 @@
}
frm.call("get_supported_countries").then(r => {
- frm.subdivisions_by_country = r.message;
- frm.set_df_property("country", "options", Object.keys(r.message));
+ frm.subdivisions_by_country = r.message.subdivisions_by_country;
+ frm.set_df_property(
+ "country",
+ "options",
+ r.message.countries.sort((a, b) => a.label.localeCompare(b.label))
+ );
if (frm.doc.country) {
frm.trigger("set_subdivisions");
@@ -31,7 +35,7 @@
},
set_subdivisions: function(frm) {
const subdivisions = frm.subdivisions_by_country[frm.doc.country];
- if (subdivisions.length > 0) {
+ if (subdivisions && subdivisions.length > 0) {
frm.set_df_property("subdivision", "options", frm.subdivisions_by_country[frm.doc.country]);
frm.set_df_property("subdivision", "hidden", 0);
} else {
diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.json b/erpnext/setup/doctype/holiday_list/holiday_list.json
index 2d24db2..e9b848f 100644
--- a/erpnext/setup/doctype/holiday_list/holiday_list.json
+++ b/erpnext/setup/doctype/holiday_list/holiday_list.json
@@ -141,7 +141,7 @@
"icon": "fa fa-calendar",
"idx": 1,
"links": [],
- "modified": "2023-07-13 13:12:32.082690",
+ "modified": "2023-07-14 11:29:12.537263",
"modified_by": "Administrator",
"module": "Setup",
"name": "Holiday List",
diff --git a/erpnext/setup/doctype/holiday_list/holiday_list.py b/erpnext/setup/doctype/holiday_list/holiday_list.py
index 1aec032..0b26a62 100644
--- a/erpnext/setup/doctype/holiday_list/holiday_list.py
+++ b/erpnext/setup/doctype/holiday_list/holiday_list.py
@@ -6,6 +6,7 @@
from datetime import date
import frappe
+from babel import Locale
from frappe import _, throw
from frappe.model.document import Document
from frappe.utils import formatdate, getdate, today
@@ -39,7 +40,15 @@
@frappe.whitelist()
def get_supported_countries(self):
- return list_supported_countries()
+ subdivisions_by_country = list_supported_countries()
+ countries = [
+ {"value": country, "label": local_country_name(country)}
+ for country in subdivisions_by_country.keys()
+ ]
+ return {
+ "countries": countries,
+ "subdivisions_by_country": subdivisions_by_country,
+ }
@frappe.whitelist()
def get_local_holidays(self):
@@ -157,3 +166,8 @@
)
else:
return False
+
+
+def local_country_name(country_code: str) -> str:
+ """Return the localized country name for the given country code."""
+ return Locale.parse(frappe.local.lang).territories.get(country_code, country_code)