diff --git a/CHANGELOG.md b/CHANGELOG.md index bf4ac7123..7b3751069 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log for SD.Next -## Update for 2025-02-08 +## Update for 2025-02-09 - **Hints** - added/updated 100+ ui hints! @@ -8,7 +8,7 @@ - **Localization** - full ui localization! english, croatian, spanish, french, italian, portuguese, chinese, japanese, korean, russian - - set in *settings -> user interface -> language* + - set in *settings -> user interface -> language* - [localization](https://github.com/vladmandic/wiki/Locale) documentation - **Torch**: - for **zluda** set default to `torch==2.6.0+cu118` diff --git a/html/override_en.json b/html/override_en.json new file mode 100644 index 000000000..375690325 --- /dev/null +++ b/html/override_en.json @@ -0,0 +1,2 @@ +[ +] \ No newline at end of file diff --git a/html/override_hr.json b/html/override_hr.json new file mode 100644 index 000000000..e6830e3cc --- /dev/null +++ b/html/override_hr.json @@ -0,0 +1,3 @@ +[ + { "id": "", "label": "Reprocess", "localized": "Ponovi", "hint": "Ponovno obradite prethodne generacije koristeći različite parametre" } +] \ No newline at end of file diff --git a/html/override_ko.json b/html/override_ko.json new file mode 100644 index 000000000..5be8b7ae1 --- /dev/null +++ b/html/override_ko.json @@ -0,0 +1,4 @@ +[ + { "id": "", "label": "🎲️", "localized": "", "hint": "무작위 시드 사용" }, + { "id": "", "label": "🔄", "localized": "", "hint": "초기화" } +] \ No newline at end of file diff --git a/javascript/setHints.js b/javascript/setHints.js index b2fd55fa9..aa4fd1a12 100644 --- a/javascript/setHints.js +++ b/javascript/setHints.js @@ -11,7 +11,7 @@ const localeData = { }; async function cycleLocale() { - console.log('cycleLocale', localeData.prev, localeData.locale); + log('cycleLocale', localeData.prev, localeData.locale); const index = allLocales.indexOf(localeData.prev); localeData.locale = allLocales[(index + 1) % allLocales.length]; localeData.btn.innerText = localeData.locale; @@ -129,12 +129,22 @@ async function getLocaleData(desiredLocale = null) { localeData.prev = localeData.locale; } log('getLocale', desiredLocale, localeData.locale); - let res = await fetch(`/file=html/locale_${localeData.locale}.json`); - if (!res || !res.ok) { - localeData.locale = 'en'; - res = await fetch(`/file=html/locale_${localeData.locale}.json`); - } - const json = await res.json(); + // primary + let json = {}; + try { + let res = await fetch(`/file=html/locale_${localeData.locale}.json`); + if (!res || !res.ok) { + localeData.locale = 'en'; + res = await fetch(`/file=html/locale_${localeData.locale}.json`); + } + json = await res.json(); + } catch { /**/ } + + try { + const res = await fetch(`/file=html/override_${localeData.locale}.json`); + if (res && res.ok) json.override = await res.json(); + } catch { /**/ } + return json; } @@ -150,7 +160,10 @@ async function setHints(analyze = false) { if (elements.length === 0) return; if (localeData.data.length === 0) { json = await getLocaleData(window.opts.ui_locale); + let overrideData = json.override || {}; + overrideData = Object.values(overrideData).flat().filter((e) => e.hint.length > 0); localeData.data = Object.values(json).flat().filter((e) => e.hint.length > 0); + Object.assign(localeData.data, overrideData); for (const e of localeData.data) e.label = e.label.toLowerCase().trim(); } if (!localeData.hint) tooltipCreate(); diff --git a/modules/api/middleware.py b/modules/api/middleware.py index b5f02bd60..5c72f2204 100644 --- a/modules/api/middleware.py +++ b/modules/api/middleware.py @@ -71,6 +71,8 @@ def setup_middleware(app: FastAPI, cmd_opts): } if err['code'] == 401 and 'file=' in req.url.path: # dont spam with unauth return JSONResponse(status_code=err['code'], content=jsonable_encoder(err)) + if err['code'] == 404 and 'file=html/' in req.url.path: # dont spam with locales + return JSONResponse(status_code=err['code'], content=jsonable_encoder(err)) log.error(f"API error: {req.method}: {req.url} {err}") diff --git a/modules/cmd_args.py b/modules/cmd_args.py index 755c31c97..4ea45946a 100644 --- a/modules/cmd_args.py +++ b/modules/cmd_args.py @@ -39,6 +39,7 @@ def main_args(): group_http = parser.add_argument_group('HTTP') group_http.add_argument('--theme', type=str, default=os.environ.get("SD_THEME", None), help='Override UI theme') + group_http.add_argument('--locale', type=str, default=os.environ.get("SD_LOCALE", None), help='Override UI locale') group_http.add_argument("--server-name", type=str, default=os.environ.get("SD_SERVERNAME", None), help="Sets hostname of server, default: %(default)s") group_http.add_argument("--tls-keyfile", type=str, default=os.environ.get("SD_TLSKEYFILE", None), help="Enable TLS and specify key file, default: %(default)s") group_http.add_argument("--tls-certfile", type=str, default=os.environ.get("SD_TLSCERTFILE", None), help="Enable TLS and specify cert file, default: %(default)s") @@ -68,7 +69,6 @@ def compatibility_args(): group_compat.add_argument("--ui-settings-file", type=str, help=argparse.SUPPRESS, default=os.path.join(data_path, 'config.json')) group_compat.add_argument("--ui-config-file", type=str, help=argparse.SUPPRESS, default=os.path.join(data_path, 'ui-config.json')) group_compat.add_argument("--hide-ui-dir-config", action='store_true', help=argparse.SUPPRESS, default=False) - group_compat.add_argument("--theme", type=str, help=argparse.SUPPRESS, default=None) group_compat.add_argument("--disable-console-progressbars", action='store_true', help=argparse.SUPPRESS, default=True) group_compat.add_argument("--disable-safe-unpickle", action='store_true', help=argparse.SUPPRESS, default=True) group_compat.add_argument("--lowram", action='store_true', help=argparse.SUPPRESS) @@ -88,7 +88,6 @@ def settings_args(opts, args): group_compat.add_argument("--ui-settings-file", type=str, help=argparse.SUPPRESS, default=os.path.join(data_path, 'config.json')) group_compat.add_argument("--ui-config-file", type=str, help=argparse.SUPPRESS, default=os.path.join(data_path, 'ui-config.json')) group_compat.add_argument("--hide-ui-dir-config", action='store_true', help=argparse.SUPPRESS, default=False) - group_compat.add_argument("--theme", type=str, help=argparse.SUPPRESS, default=None) group_compat.add_argument("--disable-console-progressbars", action='store_true', help=argparse.SUPPRESS, default=True) group_compat.add_argument("--disable-safe-unpickle", action='store_true', help=argparse.SUPPRESS, default=True) group_compat.add_argument("--lowram", action='store_true', help=argparse.SUPPRESS) diff --git a/modules/shared.py b/modules/shared.py index 891ed1306..4cd18f9e3 100644 --- a/modules/shared.py +++ b/modules/shared.py @@ -363,6 +363,8 @@ def temp_disable_extensions(): theme_name = modules.shared.cmd_opts.theme else: theme_name = f'{modules.shared.opts.theme_type.lower()}/{modules.shared.opts.gradio_theme}' + if modules.shared.cmd_opts.locale is not None: + modules.shared.opts.ui_locale = modules.shared.cmd_opts.locale if theme_name == 'lobe': disable_themes.remove('sd-webui-lobe-theme') diff --git a/wiki b/wiki index 1c63a5f30..bcf135aad 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 1c63a5f303e81e97098356bc4ca30c706c39f10f +Subproject commit bcf135aad657085ac566b9c3db44b7e5caf7ab4a