From fe01a5a28f34c873019ae3c34086acd6bd791a1d Mon Sep 17 00:00:00 2001 From: おさむのひと <46447427+samunohito@users.noreply.github.com> Date: Sun, 30 Nov 2025 13:27:44 +0900 Subject: refactor: localesをworkspace管理下のパッケージに (#16895) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * refactor: localesをworkspace管理下のパッケージに * fix copilot review * move * move * rename * fix ci * revert unwanted indent changes * fix * fix * fix * fix * 間違えてコミットしていたのを戻す * 不要 * 追加漏れ * ymlの場所だけ戻す * localesの位置を戻したのでこの差分は不要 * 内容的にlocalesにある方が正しい * i18nパッケージ用のREADME.mdを用意 * fix locale.yml * fix locale.yml --------- Co-authored-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com> --- packages/backend/src/core/NotificationService.ts | 4 +- packages/frontend-builder/locale-inliner.ts | 2 +- .../locale-inliner/apply-with-locale.ts | 2 +- packages/frontend-builder/package.json | 1 + packages/frontend-embed/build.ts | 2 +- packages/frontend-embed/package.json | 1 + packages/frontend-embed/src/components/I18n.vue | 4 +- packages/frontend-embed/src/i18n.ts | 2 +- packages/frontend-embed/vite.config.ts | 4 +- packages/frontend-shared/js/i18n.ts | 2 +- packages/frontend-shared/js/locale.ts | 2 +- packages/frontend-shared/js/store-boot-errors.ts | 2 +- packages/frontend-shared/package.json | 1 + packages/frontend/.storybook/preload-locale.ts | 2 +- packages/frontend/build.ts | 2 +- packages/frontend/lib/vite-plugin-watch-locales.ts | 18 +- packages/frontend/package.json | 1 + packages/frontend/src/components/global/I18n.vue | 4 +- packages/frontend/src/i18n.ts | 2 +- packages/frontend/test/i18n.test.ts | 2 +- packages/frontend/test/init.ts | 6 +- packages/frontend/vite.config.ts | 6 +- packages/i18n/README.md | 5 + packages/i18n/build.ts | 163 + packages/i18n/eslint.config.js | 35 + packages/i18n/package.json | 42 + packages/i18n/scripts/generateLocaleInterface.ts | 153 + packages/i18n/scripts/verify.ts | 70 + packages/i18n/src/autogen/locale.ts | 13085 +++++++++++++++++++ packages/i18n/src/index.ts | 166 + packages/i18n/src/types.ts | 14 + packages/i18n/tsconfig.eslint.json | 8 + packages/i18n/tsconfig.json | 14 + packages/sw/build.js | 3 +- packages/sw/package.json | 1 + packages/sw/src/scripts/lang.ts | 2 +- packages/sw/src/sw.ts | 2 +- 37 files changed, 13798 insertions(+), 37 deletions(-) create mode 100644 packages/i18n/README.md create mode 100644 packages/i18n/build.ts create mode 100644 packages/i18n/eslint.config.js create mode 100644 packages/i18n/package.json create mode 100644 packages/i18n/scripts/generateLocaleInterface.ts create mode 100644 packages/i18n/scripts/verify.ts create mode 100644 packages/i18n/src/autogen/locale.ts create mode 100644 packages/i18n/src/index.ts create mode 100644 packages/i18n/src/types.ts create mode 100644 packages/i18n/tsconfig.eslint.json create mode 100644 packages/i18n/tsconfig.json (limited to 'packages') diff --git a/packages/backend/src/core/NotificationService.ts b/packages/backend/src/core/NotificationService.ts index eeade4569b..310ffec7ce 100644 --- a/packages/backend/src/core/NotificationService.ts +++ b/packages/backend/src/core/NotificationService.ts @@ -202,7 +202,7 @@ export class NotificationService implements OnApplicationShutdown { } // TODO - //const locales = await import('../../../../locales/index.js'); + //const locales = await import('i18n'); // TODO: locale ファイルをクライアント用とサーバー用で分けたい @@ -271,7 +271,7 @@ export class NotificationService implements OnApplicationShutdown { let untilTime = untilId ? this.toXListId(untilId) : null; let notifications: MiNotification[]; - for (;;) { + for (; ;) { let notificationsRes: [id: string, fields: string[]][]; // sinceidのみの場合は古い順、そうでない場合は新しい順。 QueryService.makePaginationQueryも参照 diff --git a/packages/frontend-builder/locale-inliner.ts b/packages/frontend-builder/locale-inliner.ts index 9bef465eeb..191d7250a6 100644 --- a/packages/frontend-builder/locale-inliner.ts +++ b/packages/frontend-builder/locale-inliner.ts @@ -10,7 +10,7 @@ import { collectModifications } from './locale-inliner/collect-modifications.js' import { applyWithLocale } from './locale-inliner/apply-with-locale.js'; import { blankLogger } from './logger.js'; import type { Logger } from './logger.js'; -import type { Locale } from '../../locales/index.js'; +import type { Locale } from 'i18n'; import type { Manifest as ViteManifest } from 'vite'; export class LocaleInliner { diff --git a/packages/frontend-builder/locale-inliner/apply-with-locale.ts b/packages/frontend-builder/locale-inliner/apply-with-locale.ts index 5e601cdf12..78851d3029 100644 --- a/packages/frontend-builder/locale-inliner/apply-with-locale.ts +++ b/packages/frontend-builder/locale-inliner/apply-with-locale.ts @@ -5,7 +5,7 @@ import MagicString from 'magic-string'; import { assertNever } from '../utils.js'; -import type { Locale, ILocale } from '../../../locales/index.js'; +import type { ILocale, Locale } from 'i18n'; import type { TextModification } from '../locale-inliner.js'; import type { Logger } from '../logger.js'; diff --git a/packages/frontend-builder/package.json b/packages/frontend-builder/package.json index d01e4c86ed..37dd133fe6 100644 --- a/packages/frontend-builder/package.json +++ b/packages/frontend-builder/package.json @@ -18,6 +18,7 @@ "typescript": "5.9.3" }, "dependencies": { + "i18n": "workspace:*", "estree-walker": "3.0.3", "magic-string": "0.30.21", "vite": "7.2.4" diff --git a/packages/frontend-embed/build.ts b/packages/frontend-embed/build.ts index 737233a4d0..4e1f588802 100644 --- a/packages/frontend-embed/build.ts +++ b/packages/frontend-embed/build.ts @@ -2,7 +2,7 @@ import * as fs from 'fs/promises'; import url from 'node:url'; import path from 'node:path'; import { execa } from 'execa'; -import locales from '../../locales/index.js'; +import locales from 'i18n'; import { LocaleInliner } from '../frontend-builder/locale-inliner.js' import { createLogger } from '../frontend-builder/logger'; diff --git a/packages/frontend-embed/package.json b/packages/frontend-embed/package.json index 85e25c8faa..c27583cf86 100644 --- a/packages/frontend-embed/package.json +++ b/packages/frontend-embed/package.json @@ -11,6 +11,7 @@ }, "dependencies": { "@discordapp/twemoji": "16.0.1", + "i18n": "workspace:*", "@rollup/plugin-json": "6.1.0", "@rollup/plugin-replace": "6.0.3", "@rollup/pluginutils": "5.3.0", diff --git a/packages/frontend-embed/src/components/I18n.vue b/packages/frontend-embed/src/components/I18n.vue index b621110ec9..9866e50958 100644 --- a/packages/frontend-embed/src/components/I18n.vue +++ b/packages/frontend-embed/src/components/I18n.vue @@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only