mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-07-29 17:59:47 +08:00
✨ feat(i18n): 完善多模块多语言适配与发版验证
扩展前后端多语言文案与共享词典。增加多模块 i18n 回归测试与 guard。收口外部 SQL 菜单和弹窗多语言文案。
This commit is contained in:
53
frontend/src/components/QueryEditorTransaction.i18n.test.ts
Normal file
53
frontend/src/components/QueryEditorTransaction.i18n.test.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
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);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user