diff --git a/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue b/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue
index c8e6267d6..256b16acb 100644
--- a/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue
+++ b/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue
@@ -456,7 +456,7 @@ const messages = defineMessages({
unlinkInstanceConfirmDescription: {
id: 'instance.settings.tabs.installation.unlink.confirm.description',
defaultMessage:
- 'If you proceed, you will not be able to re-link it without creating an entirely new instance. You will no longer receive modpack updates and it will become a normal.',
+ 'If you proceed, you will not be able to re-link it without creating an entirely new instance. You will no longer receive modpack updates and it will become a normal instance.',
},
reinstallModpackConfirmTitle: {
id: 'instance.settings.tabs.installation.reinstall.confirm.title',
diff --git a/apps/app-frontend/src/components/ui/world/InstanceItem.vue b/apps/app-frontend/src/components/ui/world/InstanceItem.vue
index 8057c0b85..0f9bc63b8 100644
--- a/apps/app-frontend/src/components/ui/world/InstanceItem.vue
+++ b/apps/app-frontend/src/components/ui/world/InstanceItem.vue
@@ -156,7 +156,7 @@ onUnmounted(() => {
{{
formatMessage(commonMessages.playedLabel, {
- time: formatRelativeTime(last_played.toISOString?.()),
+ ago: formatRelativeTime(last_played.toISOString?.()),
})
}}
diff --git a/apps/app-frontend/src/components/ui/world/WorldItem.vue b/apps/app-frontend/src/components/ui/world/WorldItem.vue
index 28470b95f..e3af7a3b3 100644
--- a/apps/app-frontend/src/components/ui/world/WorldItem.vue
+++ b/apps/app-frontend/src/components/ui/world/WorldItem.vue
@@ -290,7 +290,7 @@ const messages = defineMessages({
{{
formatMessage(commonMessages.playedLabel, {
- time: formatRelativeTime(dayjs(world.last_played).toISOString()),
+ ago: formatRelativeTime(dayjs(world.last_played).toISOString()),
})
}}
diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json
index e31e04aa3..cc3e7cb1b 100644
--- a/apps/app-frontend/src/locales/en-US/index.json
+++ b/apps/app-frontend/src/locales/en-US/index.json
@@ -477,7 +477,7 @@
"message": "Unlink instance"
},
"instance.settings.tabs.installation.unlink.confirm.description": {
- "message": "If you proceed, you will not be able to re-link it without creating an entirely new instance. You will no longer receive modpack updates and it will become a normal."
+ "message": "If you proceed, you will not be able to re-link it without creating an entirely new instance. You will no longer receive modpack updates and it will become a normal instance."
},
"instance.settings.tabs.installation.unlink.confirm.title": {
"message": "Are you sure you want to unlink this instance?"
diff --git a/apps/frontend/src/components/ui/dashboard/withdraw-stages/MuralpayKycStage.vue b/apps/frontend/src/components/ui/dashboard/withdraw-stages/MuralpayKycStage.vue
index f5d732135..ae2ea2787 100644
--- a/apps/frontend/src/components/ui/dashboard/withdraw-stages/MuralpayKycStage.vue
+++ b/apps/frontend/src/components/ui/dashboard/withdraw-stages/MuralpayKycStage.vue
@@ -345,7 +345,7 @@ watch(
const messages = defineMessages({
entityQuestion: {
id: 'dashboard.creator-withdraw-modal.kyc.entity-question',
- defaultMessage: 'Are you a withdrawing as an individual or business?',
+ defaultMessage: 'Are you withdrawing as an individual or a business?',
},
entityDescription: {
id: 'dashboard.creator-withdraw-modal.kyc.entity-description',
diff --git a/apps/frontend/src/components/ui/servers/marketing/MedalPlanPromotion.vue b/apps/frontend/src/components/ui/servers/marketing/MedalPlanPromotion.vue
index 2381c3c6f..1c233781d 100644
--- a/apps/frontend/src/components/ui/servers/marketing/MedalPlanPromotion.vue
+++ b/apps/frontend/src/components/ui/servers/marketing/MedalPlanPromotion.vue
@@ -49,7 +49,7 @@ const messages = defineMessages({
info: {
id: 'hosting-marketing.medal.info',
defaultMessage:
- 'Try a free 3GB server for 5 days powered by Medal',
+ 'Try a free 3 GB server for 5 days powered by Medal',
},
textSecondary: {
id: 'hosting-marketing.medal.text-secondary',
diff --git a/apps/frontend/src/components/ui/servers/marketing/ServerPlanSelector.vue b/apps/frontend/src/components/ui/servers/marketing/ServerPlanSelector.vue
index acddaf0ee..aaab0a63d 100644
--- a/apps/frontend/src/components/ui/servers/marketing/ServerPlanSelector.vue
+++ b/apps/frontend/src/components/ui/servers/marketing/ServerPlanSelector.vue
@@ -133,7 +133,6 @@ const billingMonths = computed(() => {
{{ formatPrice(locale, price / billingMonths, currency, true) }}
- {{ isUsa ? '' : currency }}
/ month, billed {{ interval }}
diff --git a/apps/frontend/src/composables/auth/scopes.ts b/apps/frontend/src/composables/auth/scopes.ts
index 39f1a0211..15e78f7da 100644
--- a/apps/frontend/src/composables/auth/scopes.ts
+++ b/apps/frontend/src/composables/auth/scopes.ts
@@ -319,7 +319,7 @@ export const scopeMessages = defineMessages({
},
sessionAccessDescription: {
id: 'scopes.sessionAccess.description',
- defaultMessage: 'Access modrinth-issued sessions',
+ defaultMessage: 'Access Modrinth-issued sessions',
},
})
diff --git a/apps/frontend/src/locales/en-US/index.json b/apps/frontend/src/locales/en-US/index.json
index 68a0e1c99..5c11956fc 100644
--- a/apps/frontend/src/locales/en-US/index.json
+++ b/apps/frontend/src/locales/en-US/index.json
@@ -39,7 +39,7 @@
"message": "Download options"
},
"app-marketing.download.terms": {
- "message": "By downloading Modrinth App you agree to our Terms and Privacy Policy."
+ "message": "By downloading Modrinth App, you agree to our Terms and Privacy Policy."
},
"app-marketing.download.title": {
"message": "Download Modrinth App (Beta)"
@@ -108,7 +108,7 @@
"message": "% CPU"
},
"app-marketing.features.performance.description": {
- "message": "Modrinth App performs better than many of the leading mod managers, using just 150mb of RAM!"
+ "message": "Modrinth App performs better than many of the leading mod managers, using just 150 MB of RAM!"
},
"app-marketing.features.performance.discord": {
"message": "Discord"
@@ -657,7 +657,7 @@
"message": "A business entity refers to a registered organization such as a corporation, partnership, or LLC."
},
"dashboard.creator-withdraw-modal.kyc.entity-question": {
- "message": "Are you a withdrawing as an individual or business?"
+ "message": "Are you withdrawing as an individual or a business?"
},
"dashboard.creator-withdraw-modal.kyc.private-individual": {
"message": "Private individual"
@@ -1131,7 +1131,7 @@
"message": "Do Modrinth Hosting servers have DDoS protection?"
},
"hosting-marketing.faq.ddos-protection.answer": {
- "message": "Yes. All Modrinth Hosting servers come with DDoS protection, with up to 17Tbps capacity in some locations."
+ "message": "Yes. All Modrinth Hosting servers come with DDoS protection, with up to 17 Tbps capacity in some locations."
},
"hosting-marketing.faq.heading": {
"message": "Frequently Asked Questions"
@@ -1239,7 +1239,7 @@
"message": "Know exactly what you need?"
},
"hosting-marketing.medal.info": {
- "message": "Try a free 3GB server for 5 days powered by Medal"
+ "message": "Try a free 3 GB server for 5 days powered by Medal"
},
"hosting-marketing.medal.learn-more": {
"message": "Learn more"
@@ -2673,7 +2673,7 @@
"message": "Write reports"
},
"scopes.sessionAccess.description": {
- "message": "Access modrinth-issued sessions"
+ "message": "Access Modrinth-issued sessions"
},
"scopes.sessionAccess.label": {
"message": "Access sessions"
@@ -2826,7 +2826,7 @@
"message": "Add more"
},
"settings.applications.button.add-redirect-uri": {
- "message": "Add a redirect uri"
+ "message": "Add a redirect URI"
},
"settings.applications.button.cancel": {
"message": "Cancel"
@@ -2889,7 +2889,7 @@
"message": "https://example.com/auth/callback"
},
"settings.applications.field.redirect-uris": {
- "message": "Redirect uris"
+ "message": "Redirect URIs"
},
"settings.applications.field.scopes": {
"message": "Scopes"
@@ -3051,7 +3051,7 @@
"message": "Create a PAT"
},
"settings.pats.description": {
- "message": "PATs can be used to access Modrinth's API. For more information, see Modrinth's API documentation. They can be created and revoked at any time."
+ "message": "PATs can be used to access Modrinth's API. They can be created and revoked at any time. For more information, see Modrinth's API documentation."
},
"settings.pats.modal.create.action": {
"message": "Create PAT"
diff --git a/apps/frontend/src/pages/app.vue b/apps/frontend/src/pages/app.vue
index d089377a3..316d75d31 100644
--- a/apps/frontend/src/pages/app.vue
+++ b/apps/frontend/src/pages/app.vue
@@ -380,7 +380,7 @@ const messages = defineMessages({
performantDescription: {
id: 'app-marketing.features.performance.description',
defaultMessage:
- 'Modrinth App performs better than many of the leading mod managers, using just 150mb of RAM!',
+ 'Modrinth App performs better than many of the leading mod managers, using just 150 MB of RAM!',
},
websiteIntegration: {
id: 'app-marketing.features.website.title',
@@ -485,7 +485,7 @@ const messages = defineMessages({
downloadTerms: {
id: 'app-marketing.download.terms',
defaultMessage:
- 'By downloading Modrinth App you agree to our Terms and Privacy Policy.',
+ 'By downloading Modrinth App, you agree to our Terms and Privacy Policy.',
},
linuxDisclaimer: {
id: 'app-marketing.download.linux-disclaimer',
diff --git a/apps/frontend/src/pages/hosting/index.vue b/apps/frontend/src/pages/hosting/index.vue
index bab6725db..6407de5a0 100644
--- a/apps/frontend/src/pages/hosting/index.vue
+++ b/apps/frontend/src/pages/hosting/index.vue
@@ -860,7 +860,7 @@ const messages = defineMessages({
faqDDOSProtectionAnswer: {
id: 'hosting-marketing.faq.ddos-protection.answer',
defaultMessage:
- 'Yes. All Modrinth Hosting servers come with DDoS protection, with up to 17Tbps capacity in some locations.',
+ 'Yes. All Modrinth Hosting servers come with DDoS protection, with up to 17 Tbps capacity in some locations.',
},
faqLocation: {
id: 'hosting-marketing.faq.location',
diff --git a/apps/frontend/src/pages/settings/applications.vue b/apps/frontend/src/pages/settings/applications.vue
index 048f63a29..7dc341651 100644
--- a/apps/frontend/src/pages/settings/applications.vue
+++ b/apps/frontend/src/pages/settings/applications.vue
@@ -337,7 +337,7 @@ const messages = defineMessages({
},
redirectUrisLabel: {
id: 'settings.applications.field.redirect-uris',
- defaultMessage: 'Redirect uris',
+ defaultMessage: 'Redirect URIs',
},
redirectUriPlaceholder: {
id: 'settings.applications.field.redirect-uri.placeholder',
@@ -349,7 +349,7 @@ const messages = defineMessages({
},
addRedirectUri: {
id: 'settings.applications.button.add-redirect-uri',
- defaultMessage: 'Add a redirect uri',
+ defaultMessage: 'Add a redirect URI',
},
cancel: {
id: 'settings.applications.button.cancel',
diff --git a/apps/frontend/src/pages/settings/pats.vue b/apps/frontend/src/pages/settings/pats.vue
index 7b2614b3a..c015c7fa0 100644
--- a/apps/frontend/src/pages/settings/pats.vue
+++ b/apps/frontend/src/pages/settings/pats.vue
@@ -287,7 +287,7 @@ const messages = defineMessages({
description: {
id: 'settings.pats.description',
defaultMessage:
- "PATs can be used to access Modrinth's API. For more information, see Modrinth's API documentation. They can be created and revoked at any time.",
+ "PATs can be used to access Modrinth's API. They can be created and revoked at any time. For more information, see Modrinth's API documentation.",
},
create: {
id: 'settings.pats.action.create',
diff --git a/packages/ui/src/components/project/settings/environment/environments.ts b/packages/ui/src/components/project/settings/environment/environments.ts
index 4c34ebcae..585ee060e 100644
--- a/packages/ui/src/components/project/settings/environment/environments.ts
+++ b/packages/ui/src/components/project/settings/environment/environments.ts
@@ -30,7 +30,7 @@ export const ENVIRONMENTS_COPY: Record<
description: defineMessage({
id: 'project.environment.server-only.description',
defaultMessage:
- 'All functionality is done server-side and is compatible with vanilla clients.',
+ 'All functionality is done server-side and is compatible with vanilla clients. Also works on the internal server in singleplayer.',
}),
},
singleplayer_only: {
@@ -52,7 +52,7 @@ export const ENVIRONMENTS_COPY: Record<
description: defineMessage({
id: 'project.environment.dedicated-server-only.description',
defaultMessage:
- 'All functionality is done server-side and is compatible with vanilla clients.',
+ 'All functionality is done server-side and is compatible with vanilla clients. Only works on dedicated servers.',
}),
},
client_and_server: {
@@ -62,8 +62,7 @@ export const ENVIRONMENTS_COPY: Record<
}),
description: defineMessage({
id: 'project.environment.client-and-server.description',
- defaultMessage:
- 'Has some functionality on both the client and server, even if only partially.',
+ defaultMessage: 'Required on both the client and server.',
}),
},
client_only_server_optional: {
@@ -74,7 +73,7 @@ export const ENVIRONMENTS_COPY: Record<
description: defineMessage({
id: 'project.environment.client-only-server-optional.description',
defaultMessage:
- 'Has some functionality on both the client and server, even if only partially.',
+ 'Most functionality is client-side, but installing it on the server enables enhanced functionality.',
}),
},
server_only_client_optional: {
@@ -85,7 +84,7 @@ export const ENVIRONMENTS_COPY: Record<
description: defineMessage({
id: 'project.environment.server-only-client-optional.description',
defaultMessage:
- 'Has some functionality on both the client and server, even if only partially.',
+ 'Most functionality is server-side, but installing it on the client enables enhanced functionality.',
}),
},
client_or_server: {
@@ -107,7 +106,7 @@ export const ENVIRONMENTS_COPY: Record<
description: defineMessage({
id: 'project.environment.client-or-server-prefers-both.description',
defaultMessage:
- 'Has some functionality on both the client and server, even if only partially.',
+ 'Has some functionality on both the client and server, even if only partially. Installing it on both leads to the best experience.',
}),
},
unknown: {
diff --git a/packages/ui/src/locales/en-US/index.json b/packages/ui/src/locales/en-US/index.json
index 7dbd74988..25db487ff 100644
--- a/packages/ui/src/locales/en-US/index.json
+++ b/packages/ui/src/locales/en-US/index.json
@@ -270,7 +270,7 @@
"defaultMessage": "Performance impact"
},
"header.category.resolutions": {
- "defaultMessage": "Resolutions"
+ "defaultMessage": "Resolution"
},
"hosting.specs.burst": {
"defaultMessage": "Bursts up to {cpus} CPUs"
@@ -477,7 +477,7 @@
"defaultMessage": "Password"
},
"label.played": {
- "defaultMessage": "Played {time}"
+ "defaultMessage": "Played {ago}"
},
"label.project": {
"defaultMessage": "Project"
@@ -1011,13 +1011,13 @@
"defaultMessage": "{count} {count, plural, one {download} other {downloads}}"
},
"project.environment.client-and-server.description": {
- "defaultMessage": "Has some functionality on both the client and server, even if only partially."
+ "defaultMessage": "Required on both the client and server."
},
"project.environment.client-and-server.title": {
"defaultMessage": "Client and server, required on both"
},
"project.environment.client-only-server-optional.description": {
- "defaultMessage": "Has some functionality on both the client and server, even if only partially."
+ "defaultMessage": "Most functionality is client-side, but installing it on the server enables enhanced functionality."
},
"project.environment.client-only-server-optional.title": {
"defaultMessage": "Client and server, optional on server"
@@ -1029,7 +1029,7 @@
"defaultMessage": "Client-side only"
},
"project.environment.client-or-server-prefers-both.description": {
- "defaultMessage": "Has some functionality on both the client and server, even if only partially."
+ "defaultMessage": "Has some functionality on both the client and server, even if only partially. Installing it on both leads to the best experience."
},
"project.environment.client-or-server-prefers-both.title": {
"defaultMessage": "Client and server, best when installed on both"
@@ -1041,19 +1041,19 @@
"defaultMessage": "Client and server, optional on both"
},
"project.environment.dedicated-server-only.description": {
- "defaultMessage": "All functionality is done server-side and is compatible with vanilla clients."
+ "defaultMessage": "All functionality is done server-side and is compatible with vanilla clients. Only works on dedicated servers."
},
"project.environment.dedicated-server-only.title": {
"defaultMessage": "Server-side only"
},
"project.environment.server-only-client-optional.description": {
- "defaultMessage": "Has some functionality on both the client and server, even if only partially."
+ "defaultMessage": "Most functionality is server-side, but installing it on the client enables enhanced functionality."
},
"project.environment.server-only-client-optional.title": {
"defaultMessage": "Client and server, optional on client"
},
"project.environment.server-only.description": {
- "defaultMessage": "All functionality is done server-side and is compatible with vanilla clients."
+ "defaultMessage": "All functionality is done server-side and is compatible with vanilla clients. Also works on the internal server in singleplayer."
},
"project.environment.server-only.title": {
"defaultMessage": "Server-side only, works in singleplayer too"
@@ -1077,7 +1077,7 @@
"defaultMessage": "Unknown environment"
},
"project.follower-count-tooltip": {
- "defaultMessage": "{count} {count, plural, one {followers} other {followers}}"
+ "defaultMessage": "{count} {count, plural, one {follower} other {followers}}"
},
"project.online-player-count": {
"defaultMessage": "{count} {count, plural, one {online} other {online}}"
diff --git a/packages/ui/src/utils/common-messages.ts b/packages/ui/src/utils/common-messages.ts
index 755daacce..55675ac58 100644
--- a/packages/ui/src/utils/common-messages.ts
+++ b/packages/ui/src/utils/common-messages.ts
@@ -199,7 +199,7 @@ export const commonMessages = defineMessages({
},
playedLabel: {
id: 'label.played',
- defaultMessage: 'Played {time}',
+ defaultMessage: 'Played {ago}',
},
privateLabel: {
id: 'collections.label.private',
@@ -391,7 +391,7 @@ export const commonMessages = defineMessages({
},
projectFollowers: {
id: 'project.follower-count-tooltip',
- defaultMessage: '{count} {count, plural, one {followers} other {followers}}',
+ defaultMessage: '{count} {count, plural, one {follower} other {followers}}',
},
projectOnlinePlayerCount: {
id: 'project.online-player-count',
diff --git a/packages/ui/src/utils/tag-messages.ts b/packages/ui/src/utils/tag-messages.ts
index b6a698b0f..5275a3213 100644
--- a/packages/ui/src/utils/tag-messages.ts
+++ b/packages/ui/src/utils/tag-messages.ts
@@ -598,7 +598,7 @@ export function sortTagsForDisplay(tags: string[]): string[] {
export const categoryHeaderMessages = defineMessages({
resolutions: {
id: 'header.category.resolutions',
- defaultMessage: 'Resolutions',
+ defaultMessage: 'Resolution',
},
categories: {
id: 'header.category.category',