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 93cf9bc553..3e6915c365 100644
--- a/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue
+++ b/apps/app-frontend/src/components/ui/instance_settings/InstallationSettings.vue
@@ -435,7 +435,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/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json
index d621401151..b76a26a3e7 100644
--- a/apps/app-frontend/src/locales/en-US/index.json
+++ b/apps/app-frontend/src/locales/en-US/index.json
@@ -468,7 +468,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 f5d7321354..ae2ea27871 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 2381c3c6fc..1c233781d4 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 acddaf0eed..aaab0a63dc 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 39f1a0211c..15e78f7da2 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 58d79aa6be..7a1353cb1e 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"
@@ -633,7 +633,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"
@@ -1107,7 +1107,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"
@@ -1215,7 +1215,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"
@@ -2631,7 +2631,7 @@
"message": "Write reports"
},
"scopes.sessionAccess.description": {
- "message": "Access modrinth-issued sessions"
+ "message": "Access Modrinth-issued sessions"
},
"scopes.sessionAccess.label": {
"message": "Access sessions"
@@ -2784,7 +2784,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"
@@ -2847,7 +2847,7 @@
"message": "https://example.com/auth/callback"
},
"settings.applications.field.redirect-uris": {
- "message": "Redirect uris"
+ "message": "Redirect URIs"
},
"settings.applications.field.scopes": {
"message": "Scopes"
@@ -3006,7 +3006,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 d089377a3c..316d75d310 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 bab6725db7..6407de5a0b 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 048f63a29f..7dc341651b 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 7b2614b3a5..c015c7fa0d 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/assets/generated-icons.ts b/packages/assets/generated-icons.ts
index 22569d9b31..d960a5f4da 100644
--- a/packages/assets/generated-icons.ts
+++ b/packages/assets/generated-icons.ts
@@ -3,8 +3,6 @@
import type { FunctionalComponent, SVGAttributes } from 'vue'
-export type IconComponent = FunctionalComponent
-
import _AffiliateIcon from './icons/affiliate.svg?component'
import _AlignLeftIcon from './icons/align-left.svg?component'
import _ArchiveIcon from './icons/archive.svg?component'
@@ -327,6 +325,8 @@ import _XCircleIcon from './icons/x-circle.svg?component'
import _ZoomInIcon from './icons/zoom-in.svg?component'
import _ZoomOutIcon from './icons/zoom-out.svg?component'
+export type IconComponent = FunctionalComponent
+
export const AffiliateIcon = _AffiliateIcon
export const AlignLeftIcon = _AlignLeftIcon
export const ArchiveIcon = _ArchiveIcon
diff --git a/packages/ui/src/components/project/settings/environment/environments.ts b/packages/ui/src/components/project/settings/environment/environments.ts
index 4c34ebcaea..585ee060ef 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 37502c870d..79cdfe6ba7 100644
--- a/packages/ui/src/locales/en-US/index.json
+++ b/packages/ui/src/locales/en-US/index.json
@@ -258,7 +258,7 @@
"defaultMessage": "Performance impact"
},
"header.category.resolutions": {
- "defaultMessage": "Resolutions"
+ "defaultMessage": "Resolution"
},
"hosting.specs.burst": {
"defaultMessage": "Bursts up to {cpus} CPUs"
@@ -429,7 +429,7 @@
"defaultMessage": "Password"
},
"label.played": {
- "defaultMessage": "Played {time}"
+ "defaultMessage": "Played {ago}"
},
"label.project": {
"defaultMessage": "Project"
@@ -825,13 +825,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"
@@ -843,7 +843,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"
@@ -855,19 +855,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"
@@ -891,7 +891,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.settings.analytics.title": {
"defaultMessage": "Analytics"
diff --git a/packages/ui/src/utils/common-messages.ts b/packages/ui/src/utils/common-messages.ts
index e2c1db7914..cc47caff61 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}}',
},
})
diff --git a/packages/ui/src/utils/tag-messages.ts b/packages/ui/src/utils/tag-messages.ts
index 964278a2c1..d82bfd5a01 100644
--- a/packages/ui/src/utils/tag-messages.ts
+++ b/packages/ui/src/utils/tag-messages.ts
@@ -414,7 +414,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',