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:
parent
43d98bff1c
commit
381c156fb9
45
l10n.py
45
l10n.py
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user