mirror of
https://github.com/RocketChat/Rocket.Chat.git
synced 2025-12-28 06:47:25 +00:00
chore(i18n): Remove resources' single bundle to reduce package size (#37543)
This commit is contained in:
parent
8596daf01a
commit
5f805f0274
@ -37,10 +37,10 @@
|
||||
"test:e2e:federation": "playwright test --config=playwright-federation.config.ts",
|
||||
"test:e2e:nyc": "nyc report --reporter=lcovonly",
|
||||
"testapi": "TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\"}' mocha --config ./.mocharc.api.js",
|
||||
"testunit": "yarn .testunit:definition && yarn .testunit:client && yarn .testunit:server:cov",
|
||||
"testunit": "yarn .testunit:definition && yarn .testunit:jest && yarn .testunit:server:cov",
|
||||
".testunit:server": "mocha --config ./.mocharc.js",
|
||||
".testunit:server:cov": "nyc -r text -r lcov mocha --config ./.mocharc.js",
|
||||
".testunit:client": "TZ=UTC TS_NODE_COMPILER_OPTIONS='{\"allowJs\": false}' jest",
|
||||
".testunit:jest": "TZ=UTC TS_NODE_COMPILER_OPTIONS='{\"allowJs\": false}' jest",
|
||||
".testunit:definition": "mocha --config ./.mocharc.definition.js",
|
||||
"testunit-watch": "TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\"}' mocha --watch --config ./.mocharc.js",
|
||||
"test": "yarn testunit && yarn testapi",
|
||||
|
||||
@ -1,8 +1,80 @@
|
||||
import { availableTranslationNamespaces, defaultTranslationNamespace, extractTranslationNamespaces } from '@rocket.chat/i18n';
|
||||
import i18nDict from '@rocket.chat/i18n/dist/resources';
|
||||
import languages from '@rocket.chat/i18n/dist/languages';
|
||||
|
||||
import { i18n } from '../../app/utils/lib/i18n';
|
||||
|
||||
// Meteor bundler is incredible (derogatory)
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
if (false) {
|
||||
import('@rocket.chat/i18n/dist/resources/af.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ar.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/az.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/be-BY.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/bg.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/bn-BD.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/bn-IN.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/bs.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ca.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/cs.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/cy.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/da.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/de-AT.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/de-IN.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/de.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/el.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/en.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/eo.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/es.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/et.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/eu.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/fa.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/fi.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/fr.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/gl.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/he.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/hi-IN.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/hi.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/hr.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/hu.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/id.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/it.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ja.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ka-GE.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/km.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ko.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ku.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/lo.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/lt.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/lv.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/mn.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ms-MY.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/nb.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/nl.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/nn.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/pa-IN.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/pl.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/pt-BR.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/pt.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ro.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ru.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/se.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/si.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/sk-SK.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/sl-SI.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/sq.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/sr.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/sv.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ta-IN.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/th-TH.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/tr.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/ug.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/uk.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/vi-VN.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/zh-HK.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/zh-TW.i18n.json');
|
||||
import('@rocket.chat/i18n/dist/resources/zh.i18n.json');
|
||||
}
|
||||
|
||||
void i18n.init({
|
||||
lng: 'en',
|
||||
fallbackLng: 'en',
|
||||
@ -10,9 +82,13 @@ void i18n.init({
|
||||
ns: availableTranslationNamespaces,
|
||||
nsSeparator: '.',
|
||||
resources: Object.fromEntries(
|
||||
Object.entries(i18nDict).map(([language, source]) => [
|
||||
languages.map((language) => [
|
||||
language,
|
||||
extractTranslationNamespaces(source as unknown as Record<string, string>),
|
||||
extractTranslationNamespaces(
|
||||
// TODO: commonjs is terrible but we don't have esm build yet
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-dynamic-require
|
||||
require(`@rocket.chat/i18n/dist/resources/${language}.i18n.json`) as unknown as Record<string, string>,
|
||||
),
|
||||
]),
|
||||
),
|
||||
initImmediate: false,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { availableTranslationNamespaces, defaultTranslationNamespace, extractTranslationNamespaces } from '@rocket.chat/i18n';
|
||||
import i18nDict from '@rocket.chat/i18n/dist/resources';
|
||||
import languages from '@rocket.chat/i18n/dist/languages';
|
||||
import i18next from 'i18next';
|
||||
import sprintf from 'i18next-sprintf-postprocessor';
|
||||
|
||||
@ -12,9 +12,13 @@ void i18n.init({
|
||||
ns: availableTranslationNamespaces,
|
||||
nsSeparator: '.',
|
||||
resources: Object.fromEntries(
|
||||
Object.entries(i18nDict).map(([language, source]) => [
|
||||
languages.map((language) => [
|
||||
language,
|
||||
extractTranslationNamespaces(source as unknown as Record<string, string>),
|
||||
extractTranslationNamespaces(
|
||||
// TODO: commonjs is terrible but we don't have esm build yet
|
||||
// eslint-disable-next-line @typescript-eslint/no-var-requires, import/no-dynamic-require
|
||||
require(`@rocket.chat/i18n/dist/resources/${language}.i18n.json`) as unknown as Record<string, string>,
|
||||
),
|
||||
]),
|
||||
),
|
||||
initImmediate: false,
|
||||
|
||||
@ -9,10 +9,8 @@
|
||||
"import": "./dist/index.js",
|
||||
"require": "./dist/index.cjs"
|
||||
},
|
||||
"./dist/resources": {
|
||||
"types": "./dist/resources.d.ts",
|
||||
"import": "./dist/resources.js",
|
||||
"require": "./dist/resources.cjs"
|
||||
"./dist/resources/*": {
|
||||
"default": "./dist/resources/*"
|
||||
},
|
||||
"./dist/languages": {
|
||||
"types": "./dist/languages.d.ts",
|
||||
|
||||
@ -53,30 +53,15 @@ async function build() {
|
||||
}
|
||||
|
||||
// ./resources
|
||||
const allResources = resources.reduce(
|
||||
(acc, resource) => {
|
||||
return {
|
||||
...acc,
|
||||
[resource.language]: resource.content,
|
||||
};
|
||||
},
|
||||
{} as Record<string, Record<string, string>>,
|
||||
);
|
||||
const allResourcesSerialized = JSON.stringify(allResources, null, 2);
|
||||
|
||||
await writeFile(join(distDirectory, 'resources.js'), `export default ${allResourcesSerialized};`);
|
||||
|
||||
await writeFile(
|
||||
join(distDirectory, 'resources.cjs'),
|
||||
`"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = ${allResourcesSerialized};`,
|
||||
);
|
||||
const baseResource = resources.find((r) => r.language === 'en');
|
||||
if (!baseResource) {
|
||||
throw new Error('Base resource "en" not found');
|
||||
}
|
||||
|
||||
await writeFile(
|
||||
join(distDirectory, 'resources.d.ts'),
|
||||
`export interface RocketchatI18n {
|
||||
${Object.keys(allResources.en)
|
||||
${Object.keys(baseResource.content)
|
||||
.map((key) => `${JSON.stringify(key)}: string;`)
|
||||
.join('\n\t')}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user