Translations cleaning / workflows (#10125)

This commit is contained in:
Félix Malfait
2025-02-11 15:26:21 +01:00
committed by GitHub
parent 6da9976193
commit cc68deaab1
63 changed files with 376 additions and 164 deletions

View File

@ -2,6 +2,7 @@ import { UseFilters, UseGuards } from '@nestjs/common';
import { Args, Context, Mutation, Query, Resolver } from '@nestjs/graphql';
import { InjectRepository } from '@nestjs/typeorm';
import { SOURCE_LOCALE } from 'twenty-shared';
import { Repository } from 'typeorm';
import { ApiKeyTokenInput } from 'src/engine/core-modules/auth/dto/api-key-token.input';
@ -348,7 +349,7 @@ export class AuthResolver {
return await this.resetPasswordService.sendEmailPasswordResetLink(
resetToken,
emailPasswordResetInput.email,
context.req.headers['x-locale'] || 'en',
context.req.headers['x-locale'] || SOURCE_LOCALE,
);
}
@ -366,7 +367,7 @@ export class AuthResolver {
await this.authService.updatePassword(
id,
newPassword,
context.req.headers['x-locale'] || 'en',
context.req.headers['x-locale'] || SOURCE_LOCALE,
);
return await this.resetPasswordService.invalidatePasswordResetToken(id);

View File

@ -2,7 +2,7 @@ import { Injectable, NestMiddleware } from '@nestjs/common';
import { i18n } from '@lingui/core';
import { NextFunction, Request, Response } from 'express';
import { APP_LOCALES } from 'twenty-shared';
import { APP_LOCALES, SOURCE_LOCALE } from 'twenty-shared';
@Injectable()
export class I18nMiddleware implements NestMiddleware {
@ -12,7 +12,7 @@ export class I18nMiddleware implements NestMiddleware {
if (locale && Object.values(APP_LOCALES).includes(locale)) {
i18n.activate(locale);
} else {
i18n.activate('en');
i18n.activate(SOURCE_LOCALE);
}
next();

View File

@ -1,18 +1,37 @@
import { Injectable, OnModuleInit } from '@nestjs/common';
import { i18n } from '@lingui/core';
import { APP_LOCALES } from 'twenty-shared';
import { APP_LOCALES, SOURCE_LOCALE } from 'twenty-shared';
import { messages as afMessages } from 'src/engine/core-modules/i18n/locales/generated/af-ZA';
import { messages as arMessages } from 'src/engine/core-modules/i18n/locales/generated/ar-SA';
import { messages as caMessages } from 'src/engine/core-modules/i18n/locales/generated/ca-ES';
import { messages as csMessages } from 'src/engine/core-modules/i18n/locales/generated/cs-CZ';
import { messages as daMessages } from 'src/engine/core-modules/i18n/locales/generated/da-DK';
import { messages as deMessages } from 'src/engine/core-modules/i18n/locales/generated/de-DE';
import { messages as elMessages } from 'src/engine/core-modules/i18n/locales/generated/el-GR';
import { messages as enMessages } from 'src/engine/core-modules/i18n/locales/generated/en';
import { messages as esMessages } from 'src/engine/core-modules/i18n/locales/generated/es-ES';
import { messages as fiMessages } from 'src/engine/core-modules/i18n/locales/generated/fi-FI';
import { messages as frMessages } from 'src/engine/core-modules/i18n/locales/generated/fr-FR';
import { messages as heMessages } from 'src/engine/core-modules/i18n/locales/generated/he-IL';
import { messages as huMessages } from 'src/engine/core-modules/i18n/locales/generated/hu-HU';
import { messages as itMessages } from 'src/engine/core-modules/i18n/locales/generated/it-IT';
import { messages as jaMessages } from 'src/engine/core-modules/i18n/locales/generated/ja-JP';
import { messages as koMessages } from 'src/engine/core-modules/i18n/locales/generated/ko-KR';
import { messages as nlMessages } from 'src/engine/core-modules/i18n/locales/generated/nl-NL';
import { messages as noMessages } from 'src/engine/core-modules/i18n/locales/generated/no-NO';
import { messages as plMessages } from 'src/engine/core-modules/i18n/locales/generated/pl-PL';
import { messages as pseudoEnMessages } from 'src/engine/core-modules/i18n/locales/generated/pseudo-en';
import { messages as ptBRMessages } from 'src/engine/core-modules/i18n/locales/generated/pt-BR';
import { messages as ptPTMessages } from 'src/engine/core-modules/i18n/locales/generated/pt-PT';
import { messages as roMessages } from 'src/engine/core-modules/i18n/locales/generated/ro-RO';
import { messages as ruMessages } from 'src/engine/core-modules/i18n/locales/generated/ru-RU';
import { messages as srMessages } from 'src/engine/core-modules/i18n/locales/generated/sr-Cyrl';
import { messages as svMessages } from 'src/engine/core-modules/i18n/locales/generated/sv-SE';
import { messages as trMessages } from 'src/engine/core-modules/i18n/locales/generated/tr-TR';
import { messages as ukMessages } from 'src/engine/core-modules/i18n/locales/generated/uk-UA';
import { messages as viMessages } from 'src/engine/core-modules/i18n/locales/generated/vi-VN';
import { messages as zhHansMessages } from 'src/engine/core-modules/i18n/locales/generated/zh-CN';
import { messages as zhHantMessages } from 'src/engine/core-modules/i18n/locales/generated/zh-TW';
@ -22,14 +41,33 @@ export class I18nService implements OnModuleInit {
const messages: Record<keyof typeof APP_LOCALES, any> = {
en: enMessages,
'pseudo-en': pseudoEnMessages,
'fr-FR': frMessages,
'ko-KR': koMessages,
'af-ZA': afMessages,
'ar-SA': arMessages,
'ca-ES': caMessages,
'cs-CZ': csMessages,
'da-DK': daMessages,
'de-DE': deMessages,
'it-IT': itMessages,
'el-GR': elMessages,
'es-ES': esMessages,
'fi-FI': fiMessages,
'fr-FR': frMessages,
'he-IL': heMessages,
'hu-HU': huMessages,
'it-IT': itMessages,
'ja-JP': jaMessages,
'pt-PT': ptPTMessages,
'ko-KR': koMessages,
'nl-NL': nlMessages,
'no-NO': noMessages,
'pl-PL': plMessages,
'pt-BR': ptBRMessages,
'pt-PT': ptPTMessages,
'ro-RO': roMessages,
'ru-RU': ruMessages,
'sr-Cyrl': srMessages,
'sv-SE': svMessages,
'tr-TR': trMessages,
'uk-UA': ukMessages,
'vi-VN': viMessages,
'zh-CN': zhHansMessages,
'zh-TW': zhHantMessages,
};
@ -40,7 +78,7 @@ export class I18nService implements OnModuleInit {
},
);
i18n.activate('en');
i18n.activate(SOURCE_LOCALE);
}
async onModuleInit() {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2,7 +2,7 @@
import { InjectRepository } from '@nestjs/typeorm';
import { TypeOrmQueryService } from '@ptc-org/nestjs-query-typeorm';
import { isDefined } from 'twenty-shared';
import { isDefined, SOURCE_LOCALE } from 'twenty-shared';
import { Repository } from 'typeorm';
import { TypeORMService } from 'src/database/typeorm/typeorm.service';
@ -78,7 +78,7 @@ export class UserWorkspaceService extends TypeOrmQueryService<UserWorkspace> {
user.id,
user.email,
user.defaultAvatarUrl ?? '',
user.locale ?? 'en',
user.locale ?? SOURCE_LOCALE,
],
);
const workspaceMember = await workspaceDataSource?.query(

View File

@ -1,6 +1,7 @@
import { EntityManager } from 'typeorm';
import { DEMO_SEED_USER_IDS } from 'src/database/typeorm-seeds/core/demo/users';
import { SOURCE_LOCALE } from 'twenty-shared';
export const DEMO_SEED_WORKSPACE_MEMBER_IDS = {
NOAH: '20202020-0687-4c41-b707-ed1bfca972a2',
@ -30,7 +31,7 @@ export const seedWorkspaceMemberWithDemoData = async (
id: DEMO_SEED_WORKSPACE_MEMBER_IDS.NOAH,
nameFirstName: 'Noah',
nameLastName: 'A',
locale: 'en',
locale: SOURCE_LOCALE,
colorScheme: 'Light',
userEmail: 'noah@demo.dev',
userId: DEMO_SEED_USER_IDS.NOAH,
@ -39,7 +40,7 @@ export const seedWorkspaceMemberWithDemoData = async (
id: DEMO_SEED_WORKSPACE_MEMBER_IDS.HUGO,
nameFirstName: 'Hugo',
nameLastName: 'I',
locale: 'en',
locale: SOURCE_LOCALE,
colorScheme: 'Light',
userEmail: 'hugo@demo.dev',
userId: DEMO_SEED_USER_IDS.HUGO,
@ -48,7 +49,7 @@ export const seedWorkspaceMemberWithDemoData = async (
id: DEMO_SEED_WORKSPACE_MEMBER_IDS.TIM,
nameFirstName: 'Tim',
nameLastName: 'Apple',
locale: 'en',
locale: SOURCE_LOCALE,
colorScheme: 'Light',
userEmail: 'tim@apple.dev',
userId: DEMO_SEED_USER_IDS.TIM,