From 6d68d50699720b6c2a07e3be3187635a17269254 Mon Sep 17 00:00:00 2001 From: lumiscosity Date: Wed, 28 Jan 2026 19:10:50 +0100 Subject: [PATCH] Deduplicate common strings in translation (#5085) * deduplicate common strings, part 1 * deduplicate common strings, part 2 * typo and general import mess fixes * detail common string * fix lint * fix lint TWO * adress review concerns + lint * app lint too * actually leave privateLabel untouched * lint fix THREE * fix: broken msg * fix: lint --------- Co-authored-by: Calum H. Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com> --- .../ui/modal/InstanceSettingsModal.vue | 18 +- .../app-frontend/src/locales/en-US/index.json | 3 - .../src/components/ui/ProjectMemberHeader.vue | 29 +-- .../ui/create/CollectionCreateModal.vue | 13 +- .../ui/create/OrganizationCreateModal.vue | 13 +- .../ui/create/ProjectCreateModal.vue | 19 +- .../ui/dashboard/CreatorTaxFormModal.vue | 8 +- .../ui/dashboard/CreatorWithdrawModal.vue | 26 +-- .../withdraw-stages/CompletionStage.vue | 8 - .../LegacyPaypalDetailsStage.vue | 13 +- apps/frontend/src/layouts/default.vue | 6 +- apps/frontend/src/locales/en-US/index.json | 165 ------------------ .../src/pages/auth/reset-password.vue | 12 +- apps/frontend/src/pages/auth/sign-in.vue | 16 +- apps/frontend/src/pages/auth/sign-up.vue | 34 ++-- apps/frontend/src/pages/auth/verify-email.vue | 16 +- apps/frontend/src/pages/collection/[id].vue | 10 +- apps/frontend/src/pages/index.vue | 20 +-- apps/frontend/src/pages/moderation/index.vue | 19 +- .../src/pages/moderation/reports/index.vue | 23 +-- .../moderation/technical-review/index.vue | 23 +-- .../src/pages/settings/billing/index.vue | 42 +---- apps/frontend/src/pages/settings/profile.vue | 12 +- apps/frontend/src/pages/user/[id].vue | 28 ++- .../affiliate/AffiliateLinkCreateModal.vue | 7 +- .../billing/FormattedPaymentMethod.vue | 4 +- .../src/components/billing/PurchaseModal.vue | 78 ++------- .../project/ProjectSidebarDetails.vue | 7 +- .../components/servers/backups/BackupItem.vue | 6 +- packages/ui/src/locales/en-US/index.json | 125 ++++++++----- packages/ui/src/utils/common-messages.ts | 100 ++++++++--- 31 files changed, 279 insertions(+), 624 deletions(-) diff --git a/apps/app-frontend/src/components/ui/modal/InstanceSettingsModal.vue b/apps/app-frontend/src/components/ui/modal/InstanceSettingsModal.vue index 2d345ad2b..92df17f2d 100644 --- a/apps/app-frontend/src/components/ui/modal/InstanceSettingsModal.vue +++ b/apps/app-frontend/src/components/ui/modal/InstanceSettingsModal.vue @@ -7,7 +7,14 @@ import { MonitorIcon, WrenchIcon, } from '@modrinth/assets' -import { Avatar, defineMessage, TabbedModal, type TabbedModalTab, useVIntl } from '@modrinth/ui' +import { + Avatar, + commonMessages, + defineMessage, + TabbedModal, + type TabbedModalTab, + useVIntl, +} from '@modrinth/ui' import { convertFileSrc } from '@tauri-apps/api/core' import { ref } from 'vue' @@ -74,11 +81,6 @@ function show() { } defineExpose({ show }) - -const titleMessage = defineMessage({ - id: 'instance.settings.title', - defaultMessage: 'Settings', -}) diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json index ebf577e37..861203a96 100644 --- a/apps/app-frontend/src/locales/en-US/index.json +++ b/apps/app-frontend/src/locales/en-US/index.json @@ -476,9 +476,6 @@ "instance.settings.tabs.window.width.enter": { "message": "Enter width..." }, - "instance.settings.title": { - "message": "Settings" - }, "instance.worlds.a_minecraft_server": { "message": "A Minecraft Server" }, diff --git a/apps/frontend/src/components/ui/ProjectMemberHeader.vue b/apps/frontend/src/components/ui/ProjectMemberHeader.vue index 3cf8f8e55..d08f798c4 100644 --- a/apps/frontend/src/components/ui/ProjectMemberHeader.vue +++ b/apps/frontend/src/components/ui/ProjectMemberHeader.vue @@ -9,13 +9,13 @@ @@ -26,6 +26,7 @@ import { CheckIcon, XIcon } from '@modrinth/assets' import { ButtonStyled, + commonMessages, defineMessages, injectNotificationManager, type MessageDescriptor, @@ -81,14 +82,6 @@ const messages = defineMessages({ defaultMessage: "You've been invited to join this project. Please accept or decline the invitation.", }, - accept: { - id: 'project-member-header.accept', - defaultMessage: 'Accept', - }, - decline: { - id: 'project-member-header.decline', - defaultMessage: 'Decline', - }, successJoin: { id: 'project-member-header.success-join', defaultMessage: 'You have joined the project team', @@ -105,14 +98,6 @@ const messages = defineMessages({ id: 'project-member-header.error-decline', defaultMessage: 'Failed to decline team invitation', }, - success: { - id: 'project-member-header.success', - defaultMessage: 'Success', - }, - error: { - id: 'project-member-header.error', - defaultMessage: 'Error', - }, }) const { formatMessage } = useVIntl() @@ -171,13 +156,13 @@ async function acceptInvite(): Promise { await acceptTeamInvite(props.project.team) await handleUpdateMembers() addNotification({ - title: formatMessage(messages.success), + title: formatMessage(commonMessages.successLabel), text: formatMessage(messages.successJoin), type: 'success', }) } catch { addNotification({ - title: formatMessage(messages.error), + title: formatMessage(commonMessages.errorLabel), text: formatMessage(messages.errorJoin), type: 'error', }) @@ -192,13 +177,13 @@ async function declineInvite(): Promise { await removeTeamMember(props.project.team, props.auth.user.id) await handleUpdateMembers() addNotification({ - title: formatMessage(messages.success), + title: formatMessage(commonMessages.successLabel), text: formatMessage(messages.successDecline), type: 'success', }) } catch { addNotification({ - title: formatMessage(messages.error), + title: formatMessage(commonMessages.errorLabel), text: formatMessage(messages.errorDecline), type: 'error', }) diff --git a/apps/frontend/src/components/ui/create/CollectionCreateModal.vue b/apps/frontend/src/components/ui/create/CollectionCreateModal.vue index 06ee080b9..ac3cc2739 100644 --- a/apps/frontend/src/components/ui/create/CollectionCreateModal.vue +++ b/apps/frontend/src/components/ui/create/CollectionCreateModal.vue @@ -43,7 +43,7 @@ @@ -60,6 +60,7 @@ import { PlusIcon, XIcon } from '@modrinth/assets' import { ButtonStyled, + commonMessages, defineMessages, injectNotificationManager, NewModal, @@ -102,18 +103,10 @@ const messages = defineMessages({ defaultMessage: 'Your new collection will be created as a public collection with {count, plural, =0 {no projects} one {# project} other {# projects}}.', }, - cancel: { - id: 'create.collection.cancel', - defaultMessage: 'Cancel', - }, createCollection: { id: 'create.collection.create-collection', defaultMessage: 'Create collection', }, - errorTitle: { - id: 'create.collection.error-title', - defaultMessage: 'An error occurred', - }, }) const name = ref('') @@ -150,7 +143,7 @@ async function create() { await router.push(`/collection/${result.id}`) } catch (err) { addNotification({ - title: formatMessage(messages.errorTitle), + title: formatMessage(commonMessages.errorNotificationTitle), text: err?.data?.description || err?.message || err, type: 'error', }) diff --git a/apps/frontend/src/components/ui/create/OrganizationCreateModal.vue b/apps/frontend/src/components/ui/create/OrganizationCreateModal.vue index d80e05633..9f208c628 100644 --- a/apps/frontend/src/components/ui/create/OrganizationCreateModal.vue +++ b/apps/frontend/src/components/ui/create/OrganizationCreateModal.vue @@ -65,7 +65,7 @@ @@ -83,6 +83,7 @@ import { PlusIcon, XIcon } from '@modrinth/assets' import { ButtonStyled, + commonMessages, defineMessages, injectNotificationManager, NewModal, @@ -130,18 +131,10 @@ const messages = defineMessages({ defaultMessage: 'You will be the owner of this organization, but you can invite other members and transfer ownership at any time.', }, - cancel: { - id: 'create.organization.cancel', - defaultMessage: 'Cancel', - }, createOrganization: { id: 'create.organization.create-organization', defaultMessage: 'Create organization', }, - errorTitle: { - id: 'create.organization.error-title', - defaultMessage: 'An error occurred', - }, }) const name = ref('') @@ -172,7 +165,7 @@ async function createOrganization(): Promise { } catch (err: any) { console.error(err) addNotification({ - title: formatMessage(messages.errorTitle), + title: formatMessage(commonMessages.errorNotificationTitle), text: err.data ? err.data.description : err, type: 'error', }) diff --git a/apps/frontend/src/components/ui/create/ProjectCreateModal.vue b/apps/frontend/src/components/ui/create/ProjectCreateModal.vue index fe9e6ea76..b3b355e2c 100644 --- a/apps/frontend/src/components/ui/create/ProjectCreateModal.vue +++ b/apps/frontend/src/components/ui/create/ProjectCreateModal.vue @@ -43,7 +43,7 @@