| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- const fs = require('fs');
- const path = require('path');
- const translationsPath = path.join('d:', 'workspace', 'AuraK', 'web', 'utils', 'translations.ts');
- const betterTranslations = {
- navAgent: { zh: "智能体", en: "Agent", ja: "エージェント" },
- navNotebook: { zh: "笔记本", en: "Notebook", ja: "ノートブック" },
- navPlugin: { zh: "插件", en: "Plugins", ja: "プラグイン" },
- navTenants: { zh: "租户管理", en: "Tenants", ja: "テナント管理" },
- noNotesFound: { zh: "未找到笔记", en: "No notes found", ja: "ノートが見つかりません" },
- notebookDesc: { zh: "笔记本功能可以帮助您整理和归纳知识。", en: "Notebooks help you organize and summarize knowledge.", ja: "ノートブックは知識の整理と要約に役立ちます。" },
- personalNotebook: { zh: "个人笔记本", en: "Personal Notebook", ja: "個人用ノートブック" },
- pluginBy: { zh: "作者", en: "By", ja: "作者" },
- pluginCommunity: { zh: "社区插件", en: "Community Plugins", ja: "コミュニティプラグイン" },
- pluginConfig: { zh: "插件配置", en: "Plugin Config", ja: "プラグイン設定" },
- pluginDesc: { zh: "扩展系统功能。", en: "Extend system capabilities.", ja: "システム機能を拡張します。" },
- pluginOfficial: { zh: "官方插件", en: "Official Plugins", ja: "公式プラグイン" },
- pluginTitle: { zh: "插件", en: "Plugins", ja: "プラグイン" },
- searchAgent: { zh: "搜索智能体", en: "Search Agents", ja: "エージェントを検索" },
- searchPlugin: { zh: "搜索插件", en: "Search Plugins", ja: "プラグインを検索" },
- statusRunning: { zh: "运行中", en: "Running", ja: "実行中" },
- statusStopped: { zh: "已停止", en: "Stopped", ja: "停止中" },
- success: { zh: "成功", en: "Success", ja: "成功" },
- updatedAtPrefix: { zh: "最后更新于", en: "Last updated at", ja: "最終更新日:" },
- visualVision: { zh: "视觉分析", en: "Visual Analysis", ja: "視覚分析" },
- warning: { zh: "警告", en: "Warning", ja: "警告" },
- "x-api-key": { zh: "API 密钥", en: "API Key", ja: "APIキー" },
- "x-tenant-id": { zh: "租户 ID", en: "Tenant ID", ja: "テナントID" },
- "x-user-language": { zh: "用户语言", en: "User Language", ja: "ユーザー言語" },
- unknown: { zh: "未知", en: "Unknown", ja: "不明" }
- };
- let content = fs.readFileSync(translationsPath, 'utf8');
- function isValidIdentifier(id) {
- return /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(id);
- }
- // Simple parser to extract blocks
- const langBlocks = content.split(/(\w+): \{/);
- let header = langBlocks[0];
- let newContent = header;
- for (let i = 1; i < langBlocks.length; i += 2) {
- const lang = langBlocks[i];
- let block = langBlocks[i + 1];
- // Find the end of this block
- let endIdx = block.lastIndexOf('},');
- if (endIdx === -1) endIdx = block.lastIndexOf('}'); // last block
- let footer = block.substring(endIdx);
- let itemsStr = block.substring(0, endIdx);
- let items = itemsStr.split('\n');
- let seenKeys = new Set();
- let resultItems = [];
- for (let line of items) {
- let match = line.match(/^(\s+)(['"]?[a-zA-Z0-9_-]+['"]?):(.*)/);
- if (match) {
- let indent = match[1];
- let keyStr = match[2];
- let rest = match[3];
- let actualKey = keyStr.replace(/['"]/g, '');
- if (seenKeys.has(actualKey)) continue;
- seenKeys.add(actualKey);
- let val = rest.trim().replace(/,$/, '');
- // If it's a placeholder (same as key) or empty, use better translation if available
- if ((val === `"${actualKey}"` || val === `'${actualKey}'`) && betterTranslations[actualKey]) {
- val = JSON.stringify(betterTranslations[actualKey][lang] || betterTranslations[actualKey].en || actualKey);
- }
- const quotedKey = isValidIdentifier(actualKey) ? actualKey : `"${actualKey}"`;
- resultItems.push(`${indent}${quotedKey}: ${val},`);
- } else if (line.trim().startsWith('//') || line.trim() === '') {
- resultItems.push(line);
- }
- }
- newContent += `${lang}: {` + resultItems.join('\n') + footer;
- }
- fs.writeFileSync(translationsPath, newContent, 'utf8');
- console.log('Final cleanup and translation improvement complete!');
|