2d35c1d9de
- New client-side i18n via React Context (useI18n, tArray, I18nProvider) - Catalog ships 21 locale stubs; only zh-CN/en/ja have reviewed translations - Header language switcher (globe icon + short label) before settings gear - All hardcoded Chinese UI text migrated to keys: typewriter, options, hints (with embedded gear icon via dangerouslySetInnerHTML), settings panel, footer/about, play page hints - AI output language follows user-selected locale via trailing one-liner directive appended to Architect/Writer/CharacterDesigner/InsertBeat user messages (preserves system-prompt cacheability) - Per-locale separator rule: zh uses middot between every glyph; en/ja use plain spaces - Option value → i18n key suffix maps preserve Chinese as the underlying identifier so analytics unions and STYLE_MAP keys stay byte-stable Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
43 lines
1.2 KiB
JavaScript
43 lines
1.2 KiB
JavaScript
#!/usr/bin/env node
|
|
// Fix type annotations for params parameter in locale files
|
|
|
|
import { readFileSync, writeFileSync } from 'fs';
|
|
import { resolve, dirname } from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
const localesDir = resolve(__dirname, '../lib/i18n/locales');
|
|
|
|
// Target locales
|
|
const targetLocales = [
|
|
'de', 'es', 'fr', 'id', 'it', 'ja', 'ko', 'nl', 'pl', 'pt-BR', 'pt',
|
|
'ru', 'th', 'tr', 'uk', 'zh-TW', 'zh-HK'
|
|
];
|
|
|
|
function fixParamsType(content) {
|
|
// Replace (params) => with (params: { authEnabled?: boolean }) =>
|
|
return content.replace(
|
|
/\(params\)\s*=>\s*\{/g,
|
|
'(params: { authEnabled?: boolean }) => {'
|
|
);
|
|
}
|
|
|
|
let successCount = 0;
|
|
for (const locale of targetLocales) {
|
|
try {
|
|
const filePath = resolve(localesDir, `${locale}.ts`);
|
|
const content = readFileSync(filePath, 'utf-8');
|
|
const newContent = fixParamsType(content);
|
|
|
|
if (newContent !== content) {
|
|
writeFileSync(filePath, newContent);
|
|
console.log(`✓ Fixed ${locale}.ts`);
|
|
successCount++;
|
|
}
|
|
} catch (e) {
|
|
console.error(`✗ Error updating ${locale}:`, e.message);
|
|
}
|
|
}
|
|
|
|
console.log(`\nDone! Fixed ${successCount} locale files`);
|