mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-04-17 01:22:19 +03:00
Prioritize matching language script
This commit is contained in:
parent
bc260eab1f
commit
5ee541ae68
25
l10n.py
25
l10n.py
@ -39,16 +39,17 @@ class Translations:
|
||||
available.add(Translations.FALLBACK)
|
||||
|
||||
if not lang:
|
||||
# Choose the default language
|
||||
for preferred in self.preferred():
|
||||
components = preferred.split('-')
|
||||
if preferred in available:
|
||||
lang = preferred
|
||||
elif '-'.join(components[0:2]) in available:
|
||||
lang = '-'.join(components[0:2]) # language-script
|
||||
elif components[0] in available:
|
||||
lang = components[0] # just base language
|
||||
if lang:
|
||||
break
|
||||
else:
|
||||
for preferred in self.preferred():
|
||||
preferred = preferred.split('-',1)[0] # just base language
|
||||
if preferred in available:
|
||||
lang = preferred
|
||||
break
|
||||
|
||||
if lang not in self.available():
|
||||
self.install_dummy()
|
||||
@ -101,14 +102,14 @@ class Translations:
|
||||
key=lambda x: x[1])) # Sort by name
|
||||
return names
|
||||
|
||||
# Returns list of preferred language codes in lowercase RFC4646 format.
|
||||
# Typically "lang[-script][-region]" where lang is a 2 alpha ISO 639-1 or 3 alpha ISO 639-2 code,
|
||||
# script is a 4 alpha ISO 15924 code and region is a 2 alpha ISO 3166 code
|
||||
# Returns list of preferred language codes in RFC4646 format i.e. "lang[-script][-region]"
|
||||
# Where lang is a lowercase 2 alpha ISO 639-1 or 3 alpha ISO 639-2 code,
|
||||
# script is a capitalized 4 alpha ISO 15924 code and region is an uppercase 2 alpha ISO 3166 code
|
||||
def preferred(self):
|
||||
|
||||
if platform=='darwin':
|
||||
from Foundation import NSLocale
|
||||
return [x.lower() for x in NSLocale.preferredLanguages()] or None
|
||||
return NSLocale.preferredLanguages() or None
|
||||
|
||||
elif platform=='win32':
|
||||
|
||||
@ -133,13 +134,13 @@ class Translations:
|
||||
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 [x.lower() for x in wszarray_to_list(buf)]
|
||||
return wszarray_to_list(buf)
|
||||
return None
|
||||
|
||||
else: # POSIX
|
||||
import locale
|
||||
lang = locale.getdefaultlocale()[0]
|
||||
return lang and [lang.replace('_','-').lower()]
|
||||
return lang and [lang.replace('_','-')]
|
||||
|
||||
def respath(self):
|
||||
if getattr(sys, 'frozen', False):
|
||||
|
Loading…
x
Reference in New Issue
Block a user