From 18dee373d5ebf337e33d1c38e057ed0c24a74f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Fri, 15 Apr 2022 08:22:58 +0200 Subject: [PATCH] :zap: Add autocompletion for i18n keys in script sections of Vue files (#3133) * :blue_book: Type `baseText()` to i18n keys * :blue_book: Adjust `baseText()` signature * :shirt: Except JSON files from Vue ESLint * :bug: Fix errors surfaced by `baseText()` typing * :zap: Pluralize keys * :blue_book: Add typing for category names * :zap: Mark internal keys * :pencil2: Update docs references * :art: Prettify syntax * :bug: Fix leftover internal key references --- .../src/components/DeleteUserModal.vue | 12 +++-- .../src/components/InviteUsersModal.vue | 5 +- packages/editor-ui/src/components/Node.vue | 7 ++- .../components/NodeCreator/CategoryItem.vue | 7 +-- .../src/components/WorkflowSettings.vue | 2 +- .../src/plugins/i18n/docs/ADDENDUM.md | 12 ++--- packages/editor-ui/src/plugins/i18n/index.ts | 28 +++++++++-- .../src/plugins/i18n/locales/en.json | 46 +++++++++---------- .../editor-ui/src/plugins/i18n/types.d.ts | 7 --- .../editor-ui/src/views/SettingsUsersView.vue | 5 +- packages/editor-ui/src/views/SetupView.vue | 15 +++++- packages/editor-ui/tsconfig.json | 1 + packages/editor-ui/tslint.json | 3 +- 13 files changed, 95 insertions(+), 55 deletions(-) delete mode 100644 packages/editor-ui/src/plugins/i18n/types.d.ts diff --git a/packages/editor-ui/src/components/DeleteUserModal.vue b/packages/editor-ui/src/components/DeleteUserModal.vue index de21bcb4bb..1871288aed 100644 --- a/packages/editor-ui/src/components/DeleteUserModal.vue +++ b/packages/editor-ui/src/components/DeleteUserModal.vue @@ -90,8 +90,11 @@ export default mixins(showMessage).extend({ return this.userToDelete && !this.userToDelete.firstName; }, title(): string { - const user = this.userToDelete && (this.userToDelete.fullName || this.userToDelete.email); - return this.$locale.baseText('settings.users.deleteUser', { interpolate: { user }}); + const user = this.userToDelete && (this.userToDelete.fullName || this.userToDelete.email) || ''; + return this.$locale.baseText( + 'settings.users.deleteUser', + { interpolate: { user }}, + ); }, enabled(): boolean { if (this.isPending) { @@ -138,7 +141,10 @@ export default mixins(showMessage).extend({ if (this.transferId) { const getUserById = this.$store.getters['users/getUserById']; const transferUser: IUser = getUserById(this.transferId); - message = this.$locale.baseText('settings.users.transferredToUser', { interpolate: { user: transferUser.fullName }}); + message = this.$locale.baseText( + 'settings.users.transferredToUser', + { interpolate: { user: transferUser.fullName || '' }}, + ); } this.$showMessage({ diff --git a/packages/editor-ui/src/components/InviteUsersModal.vue b/packages/editor-ui/src/components/InviteUsersModal.vue index 18730fe580..d52ebd1ae5 100644 --- a/packages/editor-ui/src/components/InviteUsersModal.vue +++ b/packages/editor-ui/src/components/InviteUsersModal.vue @@ -106,7 +106,10 @@ export default mixins(showMessage).extend({ }, buttonLabel(): string { if (this.emailsCount > 1) { - return this.$locale.baseText('settings.users.inviteXUser', { interpolate: { count: this.emailsCount }}); + return this.$locale.baseText( + 'settings.users.inviteXUser', + { interpolate: { count: this.emailsCount.toString() }}, + ); } return this.$locale.baseText('settings.users.inviteUser'); diff --git a/packages/editor-ui/src/components/Node.vue b/packages/editor-ui/src/components/Node.vue index 2c7e9abfe7..1120a05e35 100644 --- a/packages/editor-ui/src/components/Node.vue +++ b/packages/editor-ui/src/components/Node.vue @@ -125,13 +125,16 @@ export default mixins(externalHooks, nodeBase, nodeHelpers, workflowHelpers).ext if (this.nodeType !== null && this.nodeType.hasOwnProperty('eventTriggerDescription')) { const nodeName = this.$locale.shortNodeType(this.nodeType.name); const { eventTriggerDescription } = this.nodeType; - return this.$locale.nodeText().eventTriggerDescription(nodeName, eventTriggerDescription); + return this.$locale.nodeText().eventTriggerDescription( + nodeName, + eventTriggerDescription || '', + ); } else { return this.$locale.baseText( 'node.waitingForYouToCreateAnEventIn', { interpolate: { - nodeType: this.nodeType && getTriggerNodeServiceName(this.nodeType.displayName), + nodeType: this.nodeType ? getTriggerNodeServiceName(this.nodeType.displayName) : '', }, }, ); diff --git a/packages/editor-ui/src/components/NodeCreator/CategoryItem.vue b/packages/editor-ui/src/components/NodeCreator/CategoryItem.vue index dcf9bafe1b..a35b4729e6 100644 --- a/packages/editor-ui/src/components/NodeCreator/CategoryItem.vue +++ b/packages/editor-ui/src/components/NodeCreator/CategoryItem.vue @@ -15,6 +15,7 @@