Clean up confusion

This commit is contained in:
Stan Ulbrych 2025-06-19 16:01:00 +01:00
parent 7e2a5645d0
commit ff7d10a36a
No known key found for this signature in database
GPG key ID: B8E58DBDB2A1A0B8
2 changed files with 10 additions and 14 deletions

View file

@ -493,8 +493,8 @@ def find(domain, localedir=None, languages=None, all=False):
languages = [] languages = []
if val := os.environ.get('LANGUAGE'): if val := os.environ.get('LANGUAGE'):
languages = val.split(':') languages = val.split(':')
elif os.name == 'posix' and (loc := locale.setlocale(locale.LC_MESSAGES)): elif (loc := locale.getlocale()) != (None, None):
languages = loc.split(':') languages = [".".join(filter(None, loc))]
else: else:
for envar in ('LC_ALL', 'LC_MESSAGES', 'LANG'): for envar in ('LC_ALL', 'LC_MESSAGES', 'LANG'):
val = os.environ.get(envar) val = os.environ.get(envar)

View file

@ -747,7 +747,7 @@ def _for_all_vars(self, mo_file, locale, expected=True):
self.assertIsNone(result) self.assertIsNone(result)
self.env.unset(var) self.env.unset(var)
@unittest.mock.patch("locale.setlocale", return_value='') @unittest.mock.patch("locale.getlocale", return_value=(None, None))
def test_find_with_env_vars(self, patch_getlocale): def test_find_with_env_vars(self, patch_getlocale):
# test that find correctly finds the environment variables # test that find correctly finds the environment variables
# when languages are not supplied # when languages are not supplied
@ -769,30 +769,26 @@ def test_encoding_not_ignored(self, patch_expand_lang):
patch_expand_lang.assert_any_call('ga_IE.UTF-8') patch_expand_lang.assert_any_call('ga_IE.UTF-8')
self.env.unset('LANGUAGE') self.env.unset('LANGUAGE')
@unittest.skipIf(os.name != "posix", "LC_MESSAGES is posix only")
def test_find_LANGUAGE_priority(self): def test_find_LANGUAGE_priority(self):
self.env.set('LANGUAGE', 'ga_IE') self.env.set('LANGUAGE', 'ga_IE')
self.env.set('LC_ALL', 'pt_BR') self.env.set('LC_ALL', 'pt_BR')
if os.name != "posix": orig = locale.setlocale(locale.LC_ALL)
orig = locale.setlocale(locale.LC_MESSAGES) self.addCleanup(lambda: locale.setlocale(locale.LC_ALL, orig))
self.addCleanup(lambda: locale.setlocale(locale.LC_MESSAGES, orig)) locale.setlocale(locale.LC_ALL, 'pt_BR')
locale.setlocale(locale.LC_MESSAGES, 'pt_BR')
mo_file = self.create_mo_file("ga_IE") mo_file = self.create_mo_file("ga_IE")
result = gettext.find("mofile", localedir=os.path.join(self.tempdir, "locale")) result = gettext.find("mofile", localedir=os.path.join(self.tempdir, "locale"))
self.assertEqual(result, mo_file) self.assertEqual(result, mo_file)
@unittest.skipIf(os.name != "posix", "LC_MESSAGES is posix only")
def test_process_vars_override(self): def test_process_vars_override(self):
orig = locale.setlocale(locale.LC_MESSAGES) orig = locale.setlocale(locale.LC_ALL)
self.addCleanup(lambda: locale.setlocale(locale.LC_MESSAGES, orig)) self.addCleanup(lambda: locale.setlocale(locale.LC_ALL, orig))
mo_file = self.create_mo_file("ca_ES") mo_file = self.create_mo_file("ca_ES")
for loc in ("ca_ES", "ca_ES.UTF-8", "ca_ES@euro", "ca_ES@valencia"): for loc in ("ca_ES", "ca_ES.UTF-8", "ca_ES@euro", "ca_ES@valencia"):
locale.setlocale(locale.LC_MESSAGES, loc) locale.setlocale(locale.LC_ALL, loc)
result = gettext.find("mofile", localedir=os.path.join(self.tempdir, "locale")) result = gettext.find("mofile", localedir=os.path.join(self.tempdir, "locale"))
self.assertEqual(mo_file, result) self.assertEqual(mo_file, result)
for loc in ("C", "C.UTF-8"): for loc in ("C", "C.UTF-8"):
locale.setlocale(locale.LC_MESSAGES, loc) locale.setlocale(locale.LC_ALL, loc)
result = gettext.find("mofile", localedir=os.path.join(self.tempdir, "locale")) result = gettext.find("mofile", localedir=os.path.join(self.tempdir, "locale"))
self.assertIsNone(result) self.assertIsNone(result)