From 0844c63ffee9bf9c2ffb1feedcaee444a06689b3 Mon Sep 17 00:00:00 2001 From: cmerabet Date: Sat, 9 May 2026 19:16:41 +0200 Subject: [PATCH] Fix Local subclass --- babel/core.py | 4 +++- tests/test_core.py | 8 ++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/babel/core.py b/babel/core.py index 4210b46bb..eb5e7d5bd 100644 --- a/babel/core.py +++ b/babel/core.py @@ -211,7 +211,9 @@ def __init__( self.modifier = modifier self.__data: localedata.LocaleDataDict | None = None - identifier = str(self) + identifier = get_locale_identifier( + (self.language, self.territory, self.script, self.variant, self.modifier), + ) identifier_without_modifier = identifier.partition('@')[0] if localedata.exists(identifier): self.__data_identifier = identifier diff --git a/tests/test_core.py b/tests/test_core.py index 461d70782..fcaeca02a 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -83,6 +83,14 @@ def test_attributes(self): locale = Locale('en', 'US') assert locale.language == 'en' assert locale.territory == 'US' + + def test_locale_subclass_custom_str(self): + class MyLocale(Locale): + def __str__(self): + return f"[{self.language}]" + locale = MyLocale("en") + assert locale.language == "en" + assert str(locale) == "[en]" def test_default(self, monkeypatch): for name in ['LANGUAGE', 'LC_ALL', 'LC_CTYPE', 'LC_MESSAGES']: