1
0
mirror of https://github.com/EDCD/EDMarketConnector.git synced 2025-04-14 16:27:13 +03:00

l10n: Change _Locale.preferred_languages() to use a common return var

This is the first step before putting any necessary "difference between
OneSky and system names for languages" translations in.
This commit is contained in:
Athanasius 2021-12-11 10:53:31 +00:00
parent 43d98bff1c
commit 381c156fb9
No known key found for this signature in database
GPG Key ID: AE3E527847057C7D

45
l10n.py
View File

@ -309,7 +309,7 @@ class _Locale:
return None
def preferred_languages(self) -> Iterable[str]:
def preferred_languages(self) -> Iterable[str]: # noqa: CCR001
"""
Return a list of preferred language codes.
@ -320,34 +320,41 @@ class _Locale:
:return: The preferred language list
"""
languages: Iterable[str]
if platform == 'darwin':
return NSLocale.preferredLanguages()
languages = NSLocale.preferredLanguages()
elif platform != 'win32':
# POSIX
lang = locale.getlocale()[0]
return lang and [lang.replace('_', '-')] or []
languages = lang and [lang.replace('_', '-')] or []
def wszarray_to_list(array):
offset = 0
while offset < len(array):
sz = ctypes.wstring_at(ctypes.addressof(array) + offset*2)
if sz:
yield sz
offset += len(sz)+1
else:
def wszarray_to_list(array):
offset = 0
while offset < len(array):
sz = ctypes.wstring_at(ctypes.addressof(array) + offset*2)
if sz:
yield sz
offset += len(sz)+1
else:
break
else:
break
num = ctypes.c_ulong()
size = ctypes.c_ulong(0)
if GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, ctypes.byref(num), None, ctypes.byref(size)) and size.value:
buf = ctypes.create_unicode_buffer(size.value)
num = ctypes.c_ulong()
size = ctypes.c_ulong(0)
languages = []
if GetUserPreferredUILanguages(
MUI_LANGUAGE_NAME, ctypes.byref(num), None, ctypes.byref(size)
) and size.value:
buf = ctypes.create_unicode_buffer(size.value)
if GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, ctypes.byref(num), ctypes.byref(buf), ctypes.byref(size)):
return wszarray_to_list(buf)
if GetUserPreferredUILanguages(
MUI_LANGUAGE_NAME, ctypes.byref(num), ctypes.byref(buf), ctypes.byref(size)
):
languages = wszarray_to_list(buf)
return []
return languages
# singletons