fix: use correct lang separator for frappe (backport #36519) (#36520)

* fix: use correct lang separator for frappe

(cherry picked from commit 0218ca538f)

* perf: defer babel import

Only required when configuring but will get loaded everywhere

(cherry picked from commit f574ac11ea)

---------

Co-authored-by: Ankush Menat <ankush@frappe.io>
This commit is contained in:
mergify[bot]
2023-08-07 10:08:59 +05:30
committed by GitHub
parent 2d7d86039a
commit f9981d1ff3
2 changed files with 15 additions and 2 deletions

View File

@@ -6,7 +6,6 @@ import json
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
@@ -169,4 +168,6 @@ def is_holiday(holiday_list, date=None):
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)
from babel import Locale
return Locale.parse(frappe.local.lang, sep="-").territories.get(country_code, country_code)

View File

@@ -8,6 +8,8 @@ from datetime import date, timedelta
import frappe
from frappe.utils import getdate
from erpnext.setup.doctype.holiday_list.holiday_list import local_country_name
class TestHolidayList(unittest.TestCase):
def test_holiday_list(self):
@@ -58,6 +60,16 @@ class TestHolidayList(unittest.TestCase):
self.assertIn(date(2023, 4, 10), holidays)
self.assertNotIn(date(2023, 5, 1), holidays)
def test_localized_country_names(self):
lang = frappe.local.lang
frappe.local.lang = "en-gb"
self.assertEqual(local_country_name("IN"), "India")
self.assertEqual(local_country_name("DE"), "Germany")
frappe.local.lang = "de"
self.assertEqual(local_country_name("DE"), "Deutschland")
frappe.local.lang = lang
def make_holiday_list(
name, from_date=getdate() - timedelta(days=10), to_date=getdate(), holiday_dates=None