refactor: Remove translation service (#36056)

pull/36061/head^2
Kevin Aleman 8 months ago committed by GitHub
parent 0220fc938c
commit 54cf109d73
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      apps/meteor/server/services/startup.ts
  2. 45
      apps/meteor/server/services/translation/service.ts
  3. 3
      packages/core-services/src/index.ts
  4. 8
      packages/core-services/src/types/ITranslationService.ts

@ -25,7 +25,6 @@ import { RoomService } from './room/service';
import { SAUMonitorService } from './sauMonitor/service';
import { SettingsService } from './settings/service';
import { TeamService } from './team/service';
import { TranslationService } from './translation/service';
import { UiKitCoreAppService } from './uikit-core-app/service';
import { UploadService } from './upload/service';
import { UserService } from './user/service';
@ -57,7 +56,6 @@ export const registerServices = async (): Promise<void> => {
api.registerService(new VideoConfService());
api.registerService(new UploadService());
api.registerService(new MessageService());
api.registerService(new TranslationService());
api.registerService(new SettingsService());
api.registerService(new OmnichannelIntegrationService());
api.registerService(new ImportService());

@ -1,45 +0,0 @@
import { ServiceClassInternal } from '@rocket.chat/core-services';
import type { ITranslationService } from '@rocket.chat/core-services';
import type { IUser } from '@rocket.chat/core-typings';
import { Settings } from '@rocket.chat/models';
import mem from 'mem';
import { i18n } from '../../lib/i18n';
export class TranslationService extends ServiceClassInternal implements ITranslationService {
protected name = 'translation';
// Cache the server language for 1 hour
private getServerLanguageCached = mem(this.getServerLanguage.bind(this), { maxAge: 1000 * 60 * 60 });
private async getServerLanguage(): Promise<string> {
return ((await Settings.findOneById('Language'))?.value as string) || 'en';
}
// Use translateText when you already know the language, or want to translate to a predefined language
translateText(text: string, targetLanguage: string, args?: Record<string, string>): Promise<string> {
return Promise.resolve(i18n.t(text, { lng: targetLanguage, ...args }));
}
// Use translate when you want to translate to the user's language, or server's as a fallback
async translate(text: string, user: IUser): Promise<string> {
const language = user.language || (await this.getServerLanguageCached());
return this.translateText(text, language);
}
async translateToServerLanguage(text: string, args?: Record<string, string>): Promise<string> {
const language = await this.getServerLanguageCached();
return this.translateText(text, language, args);
}
async translateMultipleToServerLanguage(keys: string[]): Promise<Array<{ key: string; value: string }>> {
const language = await this.getServerLanguageCached();
return keys.map((key) => ({
key,
value: i18n.t(key, { lng: language, fallbackLng: 'en' }),
}));
}
}

@ -42,7 +42,6 @@ import type {
IListRoomsFilter,
} from './types/ITeamService';
import type { ITelemetryEvent, TelemetryMap, TelemetryEvents } from './types/ITelemetryEvent';
import type { ITranslationService } from './types/ITranslationService';
import type { UiKitCoreAppPayload, IUiKitCoreApp, IUiKitCoreAppService } from './types/IUiKitCoreApp';
import type { ISendFileLivechatMessageParams, ISendFileMessageParams, IUploadFileParams, IUploadService } from './types/IUploadService';
import type { IUserService } from './types/IUserService';
@ -139,7 +138,6 @@ export {
IOmnichannelTranscriptService,
IQueueWorkerService,
HealthAggResult,
ITranslationService,
IMessageService,
ISettingsService,
IOmnichannelEEService,
@ -176,7 +174,6 @@ export const Calendar = proxify<ICalendarService>('calendar');
export const QueueWorker = proxify<IQueueWorkerService>('queue-worker');
export const OmnichannelTranscript = proxify<IOmnichannelTranscriptService>('omnichannel-transcript');
export const Message = proxify<IMessageService>('message');
export const Translation = proxify<ITranslationService>('translation');
export const Settings = proxify<ISettingsService>('settings');
export const OmnichannelIntegration = proxify<IOmnichannelIntegrationService>('omnichannel-integration');
export const Federation = proxify<IFederationService>('federation');

@ -1,8 +0,0 @@
import type { IUser } from '@rocket.chat/core-typings';
export interface ITranslationService {
translateText(text: string, targetLanguage: string, args?: Record<string, string>): Promise<string>;
translate(text: string, user: IUser): Promise<string>;
translateToServerLanguage(text: string, args?: Record<string, string>): Promise<string>;
translateMultipleToServerLanguage(keys: string[]): Promise<Array<{ key: string; value: string }>>;
}
Loading…
Cancel
Save