mirror of
https://github.com/EDCD/EDMarketConnector.git
synced 2025-06-10 04:12:15 +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)
|
available.add(Translations.FALLBACK)
|
||||||
|
|
||||||
if not lang:
|
if not lang:
|
||||||
|
# Choose the default language
|
||||||
for preferred in self.preferred():
|
for preferred in self.preferred():
|
||||||
|
components = preferred.split('-')
|
||||||
if preferred in available:
|
if preferred in available:
|
||||||
lang = preferred
|
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
|
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():
|
if lang not in self.available():
|
||||||
self.install_dummy()
|
self.install_dummy()
|
||||||
@ -101,14 +102,14 @@ class Translations:
|
|||||||
key=lambda x: x[1])) # Sort by name
|
key=lambda x: x[1])) # Sort by name
|
||||||
return names
|
return names
|
||||||
|
|
||||||
# Returns list of preferred language codes in lowercase RFC4646 format.
|
# Returns list of preferred language codes in RFC4646 format i.e. "lang[-script][-region]"
|
||||||
# Typically "lang[-script][-region]" where lang is a 2 alpha ISO 639-1 or 3 alpha ISO 639-2 code,
|
# Where lang is a lowercase 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
|
# script is a capitalized 4 alpha ISO 15924 code and region is an uppercase 2 alpha ISO 3166 code
|
||||||
def preferred(self):
|
def preferred(self):
|
||||||
|
|
||||||
if platform=='darwin':
|
if platform=='darwin':
|
||||||
from Foundation import NSLocale
|
from Foundation import NSLocale
|
||||||
return [x.lower() for x in NSLocale.preferredLanguages()] or None
|
return NSLocale.preferredLanguages() or None
|
||||||
|
|
||||||
elif platform=='win32':
|
elif platform=='win32':
|
||||||
|
|
||||||
@ -133,13 +134,13 @@ class Translations:
|
|||||||
if (GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, ctypes.byref(num), None, ctypes.byref(size)) and size.value):
|
if (GetUserPreferredUILanguages(MUI_LANGUAGE_NAME, ctypes.byref(num), None, ctypes.byref(size)) and size.value):
|
||||||
buf = ctypes.create_unicode_buffer(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(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
|
return None
|
||||||
|
|
||||||
else: # POSIX
|
else: # POSIX
|
||||||
import locale
|
import locale
|
||||||
lang = locale.getdefaultlocale()[0]
|
lang = locale.getdefaultlocale()[0]
|
||||||
return lang and [lang.replace('_','-').lower()]
|
return lang and [lang.replace('_','-')]
|
||||||
|
|
||||||
def respath(self):
|
def respath(self):
|
||||||
if getattr(sys, 'frozen', False):
|
if getattr(sys, 'frozen', False):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user