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