i18n utils: reduce dependency to Blender bpy API, step 1.
This involves re-implementing some of Blender-defined helpers in utils, we keep debug code to ensure those are still matching on behavior/results sides. This will allow to get more i18n tools independent from blender executable.
This commit is contained in:
@@ -39,9 +39,6 @@ import bpy
|
|||||||
|
|
||||||
|
|
||||||
##### Misc Utils #####
|
##### Misc Utils #####
|
||||||
from bpy.app.translations import locale_explode
|
|
||||||
|
|
||||||
|
|
||||||
_valid_po_path_re = re.compile(r"^\S+:[0-9]+$")
|
_valid_po_path_re = re.compile(r"^\S+:[0-9]+$")
|
||||||
|
|
||||||
|
|
||||||
@@ -79,6 +76,28 @@ def get_best_similar(data):
|
|||||||
return key, tmp
|
return key, tmp
|
||||||
|
|
||||||
|
|
||||||
|
_locale_explode_re = re.compile(r"^([a-z]{2,})(?:_([A-Z]{2,}))?(?:@([a-z]{2,}))?$")
|
||||||
|
|
||||||
|
|
||||||
|
def locale_explode(locale):
|
||||||
|
"""Copies behavior of `BLT_lang_locale_explode`, keep them in sync."""
|
||||||
|
ret = (None, None, None, None, None)
|
||||||
|
m = _locale_explode_re.match(locale)
|
||||||
|
if m:
|
||||||
|
lang, country, variant = m.groups()
|
||||||
|
return (lang, country, variant,
|
||||||
|
"%s_%s" % (lang, country) if country else None,
|
||||||
|
"%s@%s" % (lang, variant) if variant else None)
|
||||||
|
|
||||||
|
try:
|
||||||
|
import bpy.app.translations as bpy_translations
|
||||||
|
assert(ret == bpy_translations.locale_explode(locale))
|
||||||
|
except ModuleNotFoundError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
def locale_match(loc1, loc2):
|
def locale_match(loc1, loc2):
|
||||||
"""
|
"""
|
||||||
Return:
|
Return:
|
||||||
|
|||||||
Reference in New Issue
Block a user