From aeb69beb6f8e24b7e2cc7a21dd4adbc7fbf3bf66 Mon Sep 17 00:00:00 2001 From: MiroslavDionisiev Date: Tue, 23 Sep 2025 15:43:00 +0300 Subject: [PATCH 1/3] feat: [IPR-1063] Add locale to editor state props --- packages/scratch-gui/src/exported-reducers.ts | 5 +++-- .../scratch-gui/src/lib/app-state-provider-hoc.jsx | 9 +++------ packages/scratch-gui/src/lib/editor-state.tsx | 11 ++++++++++- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/packages/scratch-gui/src/exported-reducers.ts b/packages/scratch-gui/src/exported-reducers.ts index 65acf6fc83..7ca4165f3f 100644 --- a/packages/scratch-gui/src/exported-reducers.ts +++ b/packages/scratch-gui/src/exported-reducers.ts @@ -1,5 +1,5 @@ import {ScratchPaintReducer} from 'scratch-paint'; -import LocalesReducer, {localesInitialState, initLocale} from './reducers/locales.js'; +import LocalesReducer, {localesInitialState, initLocale, selectLocale} from './reducers/locales.js'; import GuiReducer, {buildInitialState, guiMiddleware, initEmbedded, initFullScreen, initPlayer} from './reducers/gui'; import {setFullScreen, setPlayer, setEmbedded} from './reducers/mode.js'; import {activateDeck} from './reducers/cards.js'; @@ -49,5 +49,6 @@ export { setFullScreen, setPlayer, setEmbedded, - activateDeck + activateDeck, + selectLocale }; diff --git a/packages/scratch-gui/src/lib/app-state-provider-hoc.jsx b/packages/scratch-gui/src/lib/app-state-provider-hoc.jsx index 42eed52698..f748888f94 100644 --- a/packages/scratch-gui/src/lib/app-state-provider-hoc.jsx +++ b/packages/scratch-gui/src/lib/app-state-provider-hoc.jsx @@ -4,7 +4,6 @@ import PropTypes from 'prop-types'; import {EditorState} from './editor-state'; import {setPlayer, setFullScreen, setEmbedded} from '../reducers/mode.js'; -import ConnectedIntlProvider from './connected-intl-provider.jsx'; /** * Wraps the editor into the redux state contained within an EditorState instance. @@ -39,11 +38,9 @@ export const AppStateProviderHOC = function (WrappedComponent) { } = this.props; return ( - - - + ); } diff --git a/packages/scratch-gui/src/lib/editor-state.tsx b/packages/scratch-gui/src/lib/editor-state.tsx index d3c1e38105..c447ca5bc4 100644 --- a/packages/scratch-gui/src/lib/editor-state.tsx +++ b/packages/scratch-gui/src/lib/editor-state.tsx @@ -21,6 +21,7 @@ export interface EditorStateParams { isPlayerOnly?: boolean; showTelemetryModal?: boolean; isEmbedded?: boolean; + locale?: string; } /** @@ -40,10 +41,18 @@ export class EditorState { let enhancer; let initializedLocales = localesInitialState; - const locale = detectLocale(Object.keys(locales)); + + let locale = 'en'; + if (params.locale && Object.keys(locales).includes(params.locale)) { + locale = params.locale; + } else { + locale = detectLocale(Object.keys(locales)); + } + if (locale !== 'en') { initializedLocales = initLocale(initializedLocales, locale); } + if (params.localesOnly) { // Used for instantiating minimal state for the unsupported // browser modal From eed6b5f7606df9aaa6b185814bd37256a899b59a Mon Sep 17 00:00:00 2001 From: MiroslavDionisiev Date: Wed, 24 Sep 2025 11:44:44 +0300 Subject: [PATCH 2/3] feat: [IPR-1063] Add warning for unsupported locacale --- packages/scratch-gui/src/lib/editor-state.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/scratch-gui/src/lib/editor-state.tsx b/packages/scratch-gui/src/lib/editor-state.tsx index c447ca5bc4..8b590633b9 100644 --- a/packages/scratch-gui/src/lib/editor-state.tsx +++ b/packages/scratch-gui/src/lib/editor-state.tsx @@ -43,8 +43,12 @@ export class EditorState { let initializedLocales = localesInitialState; let locale = 'en'; - if (params.locale && Object.keys(locales).includes(params.locale)) { - locale = params.locale; + if (params.locale) { + if (Object.keys(locales).includes(params.locale)) { + locale = params.locale; + } else { + console.warn(`Unsupported locale ${params.locale}, falling back to en`); + } } else { locale = detectLocale(Object.keys(locales)); } From a28aa466beedac210fa721d607942b3c9ab8ba06 Mon Sep 17 00:00:00 2001 From: MiroslavDionisiev Date: Wed, 24 Sep 2025 11:45:13 +0300 Subject: [PATCH 3/3] feat: [IPR-1063] Move jq command from publish workflow to script --- .github/workflows/publish.yml | 7 +------ scripts/prepare-standalone-gui.sh | 10 ++++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 scripts/prepare-standalone-gui.sh diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 35620bdfa2..bf609463ac 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -112,12 +112,7 @@ jobs: - name: Publish scratch-gui-standalone run: | - jq ' - .name = "@scratch/scratch-gui-standalone" | - del(.peerDependencies) | - .exports."." = .exports."./standalone" | - del(.exports."./standalone") - ' ./packages/scratch-gui/package.json | npx sponge ./packages/scratch-gui/package.json + bash ./scripts/prepare-standalone-gui.sh npm --workspace=@scratch/scratch-gui-standalone run clean && npm --workspace=@scratch/scratch-gui-standalone run build:dist-standalone npm publish --access=public --tag="${{steps.npm_tag.outputs.npm_tag}}" --workspace=@scratch/scratch-gui-standalone diff --git a/scripts/prepare-standalone-gui.sh b/scripts/prepare-standalone-gui.sh new file mode 100644 index 0000000000..b83e85e03b --- /dev/null +++ b/scripts/prepare-standalone-gui.sh @@ -0,0 +1,10 @@ +jq ' + if .name != "@scratch/scratch-gui-standalone" then + .name = "@scratch/scratch-gui-standalone" | + del(.peerDependencies) | + .exports."." = .exports."./standalone" | + del(.exports."./standalone") + else + . + end +' ./packages/scratch-gui/package.json | npx sponge ./packages/scratch-gui/package.json \ No newline at end of file