From 5250868b97a37b3eeb02197e52f8f71d5e61cf1b Mon Sep 17 00:00:00 2001 From: Cassiano D'Andrea Date: Wed, 24 Sep 2025 11:15:02 -0300 Subject: [PATCH 1/4] Adding new and missing translations for pt-BR and en-US locales --- client/modules/IDE/actions/project.js | 16 ++++++++++------ client/modules/IDE/components/Header/Toolbar.jsx | 3 +-- .../modules/IDE/components/SketchListRowBase.jsx | 2 +- translations/locales/en-US/translations.json | 7 ++++--- translations/locales/pt-BR/translations.json | 10 +++++++--- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/client/modules/IDE/actions/project.js b/client/modules/IDE/actions/project.js index 5b3aaf7743..9a5a94b893 100644 --- a/client/modules/IDE/actions/project.js +++ b/client/modules/IDE/actions/project.js @@ -413,7 +413,7 @@ export function deleteProject(id) { }); }; } -export function changeVisibility(projectId, projectName, visibility) { +export function changeVisibility(projectId, projectName, visibility, t) { return (dispatch, getState) => { const state = getState(); @@ -443,11 +443,15 @@ export function changeVisibility(projectId, projectName, visibility) { name: response.data.name }); - dispatch( - setToastText( - `${projectName} is now ${newVisibility.toLowerCase()}` - ) - ); + const visibilityToastText = t('Visibility.Changed', { + projectName, + newVisibility: + newVisibility === 'Public' + ? t('Visibility.Public.Label').toLowerCase() + : t('Visibility.Private.Label').toLowerCase() + }); + + dispatch(setToastText(visibilityToastText)); dispatch(showToast(2000)); } } diff --git a/client/modules/IDE/components/Header/Toolbar.jsx b/client/modules/IDE/components/Header/Toolbar.jsx index 35add9795b..fbf0b5d091 100644 --- a/client/modules/IDE/components/Header/Toolbar.jsx +++ b/client/modules/IDE/components/Header/Toolbar.jsx @@ -33,7 +33,6 @@ const Toolbar = (props) => { const dispatch = useDispatch(); const { t } = useTranslation(); const userIsOwner = user?.username === project.owner?.username; - const showVisibilityDropdown = project?.owner && userIsOwner; const playButtonClass = classNames({ @@ -51,7 +50,7 @@ const Toolbar = (props) => { const handleVisibilityChange = useCallback( (sketchId, sketchName, newVisibility) => { - dispatch(changeVisibility(sketchId, sketchName, newVisibility)); + dispatch(changeVisibility(sketchId, sketchName, newVisibility, t)); }, [changeVisibility] ); diff --git a/client/modules/IDE/components/SketchListRowBase.jsx b/client/modules/IDE/components/SketchListRowBase.jsx index 4d83ee0304..e1c4c80f13 100644 --- a/client/modules/IDE/components/SketchListRowBase.jsx +++ b/client/modules/IDE/components/SketchListRowBase.jsx @@ -91,7 +91,7 @@ const SketchListRowBase = ({ const handleVisibilityChange = useCallback( (sketchId, sketchName, newVisibility) => { - changeVisibility(sketchId, sketchName, newVisibility); + changeVisibility(sketchId, sketchName, newVisibility, t); }, [changeVisibility] ); diff --git a/translations/locales/en-US/translations.json b/translations/locales/en-US/translations.json index b101b56e8f..4069fd2621 100644 --- a/translations/locales/en-US/translations.json +++ b/translations/locales/en-US/translations.json @@ -29,8 +29,8 @@ "Reference": "Reference", "About": "About", "ReportBug": "Report a Bug", - "ChatOnDiscord":"Chat On Discord", - "PostOnTheForum":"Post on the Forum" + "ChatOnDiscord": "Chat On Discord", + "PostOnTheForum": "Post on the Forum" }, "Lang": "Language", "BackEditor": "Back to Editor", @@ -690,6 +690,7 @@ "Private": { "Description": "Only you can see this sketch.", "Label": "Private" - } + }, + "Changed": "'{{projectName}}' is now {{newVisibility}}..." } } diff --git a/translations/locales/pt-BR/translations.json b/translations/locales/pt-BR/translations.json index eac7eeb2a7..52faf2052a 100644 --- a/translations/locales/pt-BR/translations.json +++ b/translations/locales/pt-BR/translations.json @@ -27,7 +27,10 @@ "Title": "Ajuda", "KeyboardShortcuts": "Atalhos de Teclado", "Reference": "Referência", - "About": "Sobre" + "About": "Sobre", + "ReportBug": "Reportar um Bug", + "ChatOnDiscord": "Conversar no Discord", + "PostOnTheForum": "Postar no Fórum" }, "BackEditor": "Voltar ao Editor", "WarningUnsavedChanges": "Realmente quer sair da página? Há mudanças não salvas.", @@ -208,7 +211,7 @@ "AutocompleteHinterOnARIA": "Geração de dicas do Autocompleter ativada", "AutocompleteHinterOffARIA": "Geração de dicas do Autocompleter desativada", "LibraryVersion": "Versão do p5.js", - "LibraryVersionInfo": "Há uma [nova versão 2.0](https://github.com/processing/p5.js/releases/) do p5.js disponível! Ela se tornará padrão em agosto de 2026, então aproveite este tempo para testá-la e relatar bugs. Está interessado em transitar esboços de 1.x para 2.0? Confira os [recursos de compatibilidade e transição.](https://github.com/processing/p5.js-compatibility)", + "LibraryVersionInfo": "Há uma [nova versão 2.0](https://github.com/processing/p5.js/releases/) do p5.js disponível! Ela se tornará padrão em agosto de 2026, então aproveite este tempo para testá-la e relatar bugs. Está interessado em migrar esboços de 1.x para 2.0? Confira os [recursos de compatibilidade e migração.](https://github.com/processing/p5.js-compatibility)", "CustomVersionTitle": "Gerenciando suas próprias bibliotecas? Legal!", "CustomVersionInfo": "A versão do p5.js está atualmente sendo gerenciada no código do index.html. Isso significa que não pode ser ajustada a partir desta aba.", "CustomVersionReset": "Se você gostaria de usar as bibliotecas padrão, pode substituir as tags de script no index.html pelo seguinte:", @@ -621,6 +624,7 @@ "Private": { "Description": "Apenas você pode ver este esboço.", "Label": "Privado" - } + }, + "Changed": "'{{projectName}}' agora é {{newVisibility}}..." } } From 97f6d78862694cafa05903482fa2d6e8270bc6f6 Mon Sep 17 00:00:00 2001 From: Cassiano D'Andrea Date: Fri, 26 Sep 2025 01:18:49 -0300 Subject: [PATCH 2/4] =?UTF-8?q?Rename=20menu=20entry=20to=20"Portugu=C3=AA?= =?UTF-8?q?s=20do=20Brasil",=20in=20order=20to=20distinguish=20it=20from?= =?UTF-8?q?=20Portuguese=20of=20Portugal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/i18n.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/i18n.js b/client/i18n.js index 8fa6959f6a..3b54262990 100644 --- a/client/i18n.js +++ b/client/i18n.js @@ -70,7 +70,7 @@ export function languageKeyToLabel(lang) { it: 'Italiano', ja: '日本語', ko: '한국어', - 'pt-BR': 'Português', + 'pt-BR': 'Português do Brasil', sv: 'Svenska', 'uk-UA': 'Українська', 'zh-CN': '简体中文', From a29a91db48ca0cc7807ebb2a9d85876cb45fb888 Mon Sep 17 00:00:00 2001 From: Cassiano D'Andrea Date: Sat, 27 Sep 2025 00:39:32 -0300 Subject: [PATCH 3/4] Using a much more flexible `switch` statement --- client/modules/IDE/actions/project.js | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/client/modules/IDE/actions/project.js b/client/modules/IDE/actions/project.js index 9a5a94b893..c303f691b1 100644 --- a/client/modules/IDE/actions/project.js +++ b/client/modules/IDE/actions/project.js @@ -443,12 +443,22 @@ export function changeVisibility(projectId, projectName, visibility, t) { name: response.data.name }); + let visibilityLabel; + + switch (newVisibility) { + case 'Public': + visibilityLabel = t('Visibility.Public.Label'); + break; + case 'Private': + visibilityLabel = t('Visibility.Private.Label'); + break; + default: + visibilityLabel = newVisibility; + } + const visibilityToastText = t('Visibility.Changed', { projectName, - newVisibility: - newVisibility === 'Public' - ? t('Visibility.Public.Label').toLowerCase() - : t('Visibility.Private.Label').toLowerCase() + newVisibility: visibilityLabel.toLowerCase() }); dispatch(setToastText(visibilityToastText)); From 52cfbe77db2a5d542c2cf06cad7d431e76a098ee Mon Sep 17 00:00:00 2001 From: Cassiano D'Andrea Date: Sun, 28 Sep 2025 12:19:19 -0300 Subject: [PATCH 4/4] Fixing "bug" translation --- translations/locales/pt-BR/translations.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/translations/locales/pt-BR/translations.json b/translations/locales/pt-BR/translations.json index 52faf2052a..15a0aecf68 100644 --- a/translations/locales/pt-BR/translations.json +++ b/translations/locales/pt-BR/translations.json @@ -28,7 +28,7 @@ "KeyboardShortcuts": "Atalhos de Teclado", "Reference": "Referência", "About": "Sobre", - "ReportBug": "Reportar um Bug", + "ReportBug": "Reportar um Erro", "ChatOnDiscord": "Conversar no Discord", "PostOnTheForum": "Postar no Fórum" }, @@ -211,7 +211,7 @@ "AutocompleteHinterOnARIA": "Geração de dicas do Autocompleter ativada", "AutocompleteHinterOffARIA": "Geração de dicas do Autocompleter desativada", "LibraryVersion": "Versão do p5.js", - "LibraryVersionInfo": "Há uma [nova versão 2.0](https://github.com/processing/p5.js/releases/) do p5.js disponível! Ela se tornará padrão em agosto de 2026, então aproveite este tempo para testá-la e relatar bugs. Está interessado em migrar esboços de 1.x para 2.0? Confira os [recursos de compatibilidade e migração.](https://github.com/processing/p5.js-compatibility)", + "LibraryVersionInfo": "Há uma [nova versão 2.0](https://github.com/processing/p5.js/releases/) do p5.js disponível! Ela se tornará padrão em agosto de 2026, então aproveite este tempo para testá-la e relatar erros. Está interessado em migrar esboços de 1.x para 2.0? Confira os [recursos de compatibilidade e migração.](https://github.com/processing/p5.js-compatibility)", "CustomVersionTitle": "Gerenciando suas próprias bibliotecas? Legal!", "CustomVersionInfo": "A versão do p5.js está atualmente sendo gerenciada no código do index.html. Isso significa que não pode ser ajustada a partir desta aba.", "CustomVersionReset": "Se você gostaria de usar as bibliotecas padrão, pode substituir as tags de script no index.html pelo seguinte:",