Files
MyGoNavi/frontend/src/components/QueryEditorTransaction.i18n.test.ts
tianqijiuyun-latiao 9364c48ef0 feat(i18n): 完善多模块多语言适配与发版验证
扩展前后端多语言文案与共享词典。增加多模块 i18n 回归测试与 guard。收口外部 SQL 菜单和弹窗多语言文案。
2026-06-17 13:17:33 +08:00

54 lines
1.7 KiB
TypeScript

import { readFileSync } from 'node:fs';
import { describe, expect, it } from 'vitest';
const settingsSource = readFileSync(new URL('./QueryEditorTransactionSettings.tsx', import.meta.url), 'utf8');
const toolbarSource = readFileSync(new URL('./QueryEditorTransactionToolbar.tsx', import.meta.url), 'utf8');
const settingsLegacyLiterals = [
'立即',
'参考 DBeaver',
'手动',
'自动',
];
const toolbarLegacyLiterals = [
'后自动提交',
'自动提交中',
'提交',
'回滚',
];
const requiredKeys = [
'query_editor.transaction.delay.immediate',
'query_editor.transaction.mode.tooltip',
'query_editor.transaction.mode.manual',
'query_editor.transaction.mode.auto',
'query_editor.transaction.status.auto_commit_countdown',
'query_editor.transaction.status.auto_committing',
'query_editor.transaction.action.commit',
'query_editor.transaction.action.commit_with_count',
'query_editor.transaction.action.rollback',
];
describe('QueryEditor transaction i18n', () => {
it('uses localized keys for transaction settings and toolbar chrome', () => {
for (const source of [settingsSource, toolbarSource]) {
expect(source).toContain("import { useOptionalI18n } from '../i18n/provider';");
expect(source).toContain('const i18n = useOptionalI18n();');
expect(source).toContain('const t = i18n?.t ?? defaultTranslate;');
}
for (const key of requiredKeys) {
expect(`${settingsSource}\n${toolbarSource}`).toContain(key);
}
for (const literal of settingsLegacyLiterals) {
expect(settingsSource).not.toContain(literal);
}
for (const literal of toolbarLegacyLiterals) {
expect(toolbarSource).not.toContain(literal);
}
});
});