diff options
author | Bastien Montagne <bastien@blender.org> | 2020-12-04 17:04:28 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2020-12-04 17:14:16 +0300 |
commit | 7bd8b8cdacd2cd7036851a77b41c4c7767f09e5e (patch) | |
tree | e2407a43be3f2efcefd05afcc4541b1430f80bb7 /release/scripts/modules/bl_i18n_utils/utils.py | |
parent | 69dd7e42c8bbe0e6feb0aee0eeb424f21f5da0af (diff) |
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.
Diffstat (limited to 'release/scripts/modules/bl_i18n_utils/utils.py')
-rw-r--r-- | release/scripts/modules/bl_i18n_utils/utils.py | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/release/scripts/modules/bl_i18n_utils/utils.py b/release/scripts/modules/bl_i18n_utils/utils.py index 4cb25816a34..14587100aea 100644 --- a/release/scripts/modules/bl_i18n_utils/utils.py +++ b/release/scripts/modules/bl_i18n_utils/utils.py @@ -39,9 +39,6 @@ import bpy ##### Misc Utils ##### -from bpy.app.translations import locale_explode - - _valid_po_path_re = re.compile(r"^\S+:[0-9]+$") @@ -79,6 +76,28 @@ def get_best_similar(data): 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): """ Return: |