Files
Starlight_Lancher/scripts/axolotl/skin-site-i18n.test.mjs
T
AxTps fd341d4b9e
Sync source to CNB / Sync Git ref (push) Skipped
fix: 统一皮肤站文案脚本的拼写
2026-10-20 22:09:31 +08:00

37 lines
1.2 KiB
JavaScript

import assert from 'node:assert/strict'
import fs from 'node:fs'
import test from 'node:test'
import { collectSkinSiteMessages } from './skin-site-messages.mjs'
test('all skin-site messages used in source exist in both release language catalogs', () => {
const messages = collectSkinSiteMessages()
assert.ok(messages.length > 100, 'The check must scan the actual UI')
for (const locale of ['en-US', 'zh-CN']) {
const catalog = JSON.parse(
fs.readFileSync(`apps/app-frontend/src/locales/${locale}/index.json`, 'utf8'),
)
const missing = messages.filter(({ id }) => !catalog[id]?.message)
assert.deepEqual(
missing.map(({ id }) => id),
[],
`${locale} has uncataloged UI messages`,
)
}
})
test('Chinese login and announcement labels do not fall back to English', () => {
const catalog = JSON.parse(
fs.readFileSync('apps/app-frontend/src/locales/zh-CN/index.json', 'utf8'),
)
for (const id of [
'app.skin-site.login.title',
'app.skin-site.login.username',
'app.skin-site.login.password-hint',
'app.skin-site.home.announcements.title',
'app.skin-site.home.announcements.failed',
]) {
assert.match(catalog[id]?.message ?? '', /\p{Script=Han}/u, id)
}
})