From 7c89fd26fdb12abc0180db4acdf796feff2ace94 Mon Sep 17 00:00:00 2001 From: Brian Hanson Date: Mon, 15 Dec 2025 16:09:13 -0600 Subject: [PATCH 01/11] Refator t function --- packages/craftcms-cp/src/types/globals.d.ts | 2 +- .../src/utilities/translate.test.ts | 26 +++++++------- .../craftcms-cp/src/utilities/translate.ts | 2 +- resources/js/Craft.d.ts | 2 +- .../js/components/install/AccountFields.vue | 6 ++-- resources/js/components/install/DbFields.vue | 14 ++++---- .../components/install/InstallingScreen.vue | 6 ++-- .../js/components/install/SiteFields.vue | 6 ++-- resources/js/composables/useInstall.ts | 8 ++--- resources/js/pages/Install.vue | 10 +++--- resources/js/pages/SettingsGeneralPage.vue | 36 +++++++++---------- 11 files changed, 57 insertions(+), 61 deletions(-) diff --git a/packages/craftcms-cp/src/types/globals.d.ts b/packages/craftcms-cp/src/types/globals.d.ts index 86e051a1486..dc4987ba936 100644 --- a/packages/craftcms-cp/src/types/globals.d.ts +++ b/packages/craftcms-cp/src/types/globals.d.ts @@ -39,7 +39,7 @@ interface CraftGlobal { csrfTokenValue?: string; ProgressBar: ProgressBarInterface; IntervalManager: IntervalManagerInterface; - t(category: string, message: string, params?: object): string; + t(message: string, params?: object, category?: string): string; sendActionRequest( method: string, action: string, diff --git a/packages/craftcms-cp/src/utilities/translate.test.ts b/packages/craftcms-cp/src/utilities/translate.test.ts index e57a83a5e91..15556fbf64e 100644 --- a/packages/craftcms-cp/src/utilities/translate.test.ts +++ b/packages/craftcms-cp/src/utilities/translate.test.ts @@ -18,54 +18,54 @@ const translations = { describe('Translate', () => { describe('t', () => { test.for([ - ['site', 'Welcome', {}, translations, 'Bienvenue'], - ['app', 'Not translated', {}, translations, 'Not translated'], - ['unknown', 'Hello', {}, translations, 'Hello'], - ['app', 'Simple message', null, translations, 'Simple message'], + ['Welcome', {}, 'site', translations, 'Bienvenue'], + ['Not translated', {}, 'app', translations, 'Not translated'], + ['Hello', {}, 'unknown', translations, 'Hello'], + ['Simple message', null, 'app', translations, 'Simple message'], [ - 'app', 'Are you sure you want to delete this {type}?', {type: 'item'}, + 'app', translations, 'This is a translated string item?', ], - ['app', 'Hello {name}', {name: 'World'}, {}, 'Hello World'], + ['Hello {name}', {name: 'World'}, 'app', {}, 'Hello World'], [ - 'app', 'Delete {num, plural, =1{user} other{users}} and content', {num: 1}, + 'app', translations, 'Delete user and content', ], [ - 'app', 'Delete {num, plural, =1{user} other{users}} and content', {num: 5}, + 'app', translations, 'Delete users and content', ], [ - 'app', 'Are you sure you want to delete this {type}?', {type: 'item'}, + 'app', translations, 'This is a translated string item?', ], [ - 'app', 'Characters left: {chars, number}', {chars: 100}, + 'app', translations, 'Characters left: 100', ], ])( 't(%s, %s, %s) -> %s', - ([category, message, params, store, expected]) => { + ([message, params, category, store, expected]) => { expect( t( - category as string, message as string, params as any, + category as string, store as Record ) ).toBe(expected); @@ -73,7 +73,7 @@ describe('Translate', () => { ); test('works without store parameter', () => { - expect(t('app', 'Hello {name}', {name: 'World'})).toBe('Hello World'); + expect(t('Hello {name}', {name: 'World'}, 'app')).toBe('Hello World'); }); }); diff --git a/packages/craftcms-cp/src/utilities/translate.ts b/packages/craftcms-cp/src/utilities/translate.ts index 6bbc61c9724..fd916f8f07c 100644 --- a/packages/craftcms-cp/src/utilities/translate.ts +++ b/packages/craftcms-cp/src/utilities/translate.ts @@ -203,9 +203,9 @@ export function formatMessage(pattern: string, params: object): string { } export function t( - category: string, message: string, params?: Record, + category: string = 'app', store?: Record ): string { if ( diff --git a/resources/js/Craft.d.ts b/resources/js/Craft.d.ts index 21274f7e56f..30b4bbb1aec 100644 --- a/resources/js/Craft.d.ts +++ b/resources/js/Craft.d.ts @@ -43,7 +43,7 @@ declare var Craft: { csrfTokenValue?: string; ProgressBar: ProgressBarInterface; IntervalManager: IntervalManagerInterface; - t(category: string, message: string, params?: object): string; + t(message: string, params?: object, category?: string): string; sendActionRequest(method: string, action: string, options?: object): Promise; initUiElements($container: JQuery): void; expandPostArray(arr: object): any; diff --git a/resources/js/components/install/AccountFields.vue b/resources/js/components/install/AccountFields.vue index bb05da14366..1c7f1b3772a 100644 --- a/resources/js/components/install/AccountFields.vue +++ b/resources/js/components/install/AccountFields.vue @@ -33,7 +33,7 @@