diff --git a/packages/addons/service/locale/changelog.txt b/packages/addons/service/locale/changelog.txt index e447f8e84f..986bcb8894 100644 --- a/packages/addons/service/locale/changelog.txt +++ b/packages/addons/service/locale/changelog.txt @@ -1,3 +1,6 @@ +103: +- Fix localedef call, add error detection + 102: - Include localedef diff --git a/packages/addons/service/locale/package.mk b/packages/addons/service/locale/package.mk index e4afc309f8..7ad064fa30 100644 --- a/packages/addons/service/locale/package.mk +++ b/packages/addons/service/locale/package.mk @@ -2,7 +2,7 @@ # Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv) PKG_NAME="locale" -PKG_REV="102" +PKG_REV="103" PKG_ARCH="any" PKG_DEPENDS_TARGET="toolchain glibc" PKG_SECTION="service" @@ -34,10 +34,9 @@ addon() { if [ "${l}" = "POSIX" ]; then continue fi - locales+="|${l}" + locales+="$(echo -e '\\\n ')" done - locales="${locales:1}" - sed -e "s/@LOCALES@/${locales}/" \ + sed -e "s|@LOCALES@|${locales}|" \ -i ${ADDON_BUILD}/${PKG_ADDON_ID}/resources/settings.xml } diff --git a/packages/addons/service/locale/resources/settings.xml b/packages/addons/service/locale/resources/settings.xml index 5157d70e48..4fa663090d 100644 --- a/packages/addons/service/locale/resources/settings.xml +++ b/packages/addons/service/locale/resources/settings.xml @@ -1,7 +1,37 @@ - - - - - + + +
+ + + + 0 + UTF-8 + + + + + + + + false + + + + 30001 + + + + 0 + en_GB + + @LOCALES@ + + + + 30002 + + + +
diff --git a/packages/addons/service/locale/source/default.py b/packages/addons/service/locale/source/default.py index d34da59446..0124daa08e 100644 --- a/packages/addons/service/locale/source/default.py +++ b/packages/addons/service/locale/source/default.py @@ -38,8 +38,20 @@ class Monitor(xbmc.Monitor): if os.path.isdir(localepath) == False: os.environ['I18NPATH'] = i18npath - subprocess.call([os.path.join(path, 'bin/localedef'), '-f', charmap, - '-i', locale, localepath]) + rc = subprocess.run([os.path.join(path, 'bin/localedef'), '-v', '-f', charmap, + '-i', locale, localepath], capture_output=True, + stdin=subprocess.DEVNULL) + + if rc.returncode not in [0, 1]: + xbmc.log(repr(rc), xbmc.LOGERROR) + try: + os.rmdir(localepath) + except OSError as e: + pass + if os.path.isfile(profile): + os.unlink(profile) + xbmcgui.Dialog().ok('Locale', strings(30004).format(lang)) + return if os.path.isdir(profiled) == False: os.makedirs(profiled) diff --git a/packages/addons/service/locale/source/resources/language/English/strings.po b/packages/addons/service/locale/source/resources/language/resource.language.en_gb/strings.po similarity index 79% rename from packages/addons/service/locale/source/resources/language/English/strings.po rename to packages/addons/service/locale/source/resources/language/resource.language.en_gb/strings.po index 0538888a41..5bb8e37165 100644 --- a/packages/addons/service/locale/source/resources/language/English/strings.po +++ b/packages/addons/service/locale/source/resources/language/resource.language.en_gb/strings.po @@ -17,3 +17,7 @@ msgstr "" msgctxt "#30003" msgid "Locale changed to {}. Please reboot to apply globally." msgstr "" + +msgctxt "#30004" +msgid "Creating locale {} failed. Aborting." +msgstr "" diff --git a/packages/addons/service/locale/source/settings-default.xml b/packages/addons/service/locale/source/settings-default.xml index 5db70160c9..e5018a4d90 100644 --- a/packages/addons/service/locale/source/settings-default.xml +++ b/packages/addons/service/locale/source/settings-default.xml @@ -1,4 +1,4 @@ - - - + + UTF-8 +