Uniapp项目简体中文转台湾繁体中文方法
准备工作
-
安装必要工具
-
确保已安装 Node.js(包含 npm)
-
在终端输入以下命令验证安装:
-
-
备份项目
具体操作步骤
1. 安装 OpenCC
-
打开终端
-
进入项目根目录
-
安装 OpenCC(局部安装到项目):
-
npm install opencc-js --save-dev
操作后验证
# 检查是否安装成功
npm list opencc-js
# 运行测试转换
node -e "console.log(require('opencc-js').Converter({from:'cn',to:'tw'})('测试')"
# 应输出:測試
2. 创建配置文件
-
在项目根目录 新建
s2tw.json文件-
右键项目文件夹 → 新建文件 → 命名
s2tw.json
-
-
编辑内容(示例):
{ "type": "s2tw", "dict": { "鼠标": "滑鼠", "博客": "部落格", "视频": "影片", "软件": "軟體" // OpenCC 默认已转换,此处仅为示例 } }3. 创建转换脚本
-
在项目根目录 新建
convert-chinese.js -
粘贴以下代码(注意修改
inputDir参数):
4. 执行转换
-
在终端运行脚本(仍在项目根目录):
-
观察输出:
关键位置示意图
你的项目根目录/ ├── src/ ← 代码目录(由 CONFIG.inputDir 指定) ├── node_modules/ ← 自动生成(安装OpenCC后出现) ├── s2tw.json ← 自定义词典 ├── convert-chinese.js ← 转换脚本 └── package.json ← Node.js项目配置
修改转换脚本配置调整转换脚本的 扫描范围 和 文件过滤规则。以下是具体修改方法:
const fs = require('fs'); const path = require('path'); const OpenCC = require('opencc-js'); // ▶▶▶ 重點修改這裡:指定你的源碼目錄 ◀◀◀ const CONFIG = { inputDir: './', // 需要轉換的目錄(如Uniapp的src文件夾) fileTypes: ['.vue', '.js', '.json', '.wxml', '.wxss'], // 目標文件類型 excludeDirs: ['node_modules', 'unpackage', 'dist', 'static'], // 排除不需要的目錄 openccConfig: path.resolve(__dirname, 's2tw.json') // 配置文件路徑 }; const converter = OpenCC.Converter({ from: 'cn', to: 'tw' }); // 簡→臺繁 // 處理特殊文件(如 pages.json) // 針對 JSON 文件可能出現的中文鍵名問題,添加 鍵值雙轉換邏輯 function processFile(filePath) { const content = fs.readFileSync(filePath, 'utf8'); let converted = converter(content); // 特別處理 JSON 鍵名(如 "navigationBarTitleText": "首頁") if (path.extname(filePath) === '.json') { try { const jsonObj = JSON.parse(converted); const convertedObj = deepConvertKeys(jsonObj); // 遞歸轉換鍵名 converted = JSON.stringify(convertedObj, null, 2); } catch (e) { console.error(`JSON 解析失敗: ${filePath}`, e); } } fs.writeFileSync(filePath, converted, 'utf8'); } // 遞歸轉換對象鍵名 function deepConvertKeys(obj) { if (typeof obj !== 'object' || obj === null) return obj; return Object.keys(obj).reduce((acc, key) => { const newKey = converter(key); // 轉換鍵名 acc[newKey] = deepConvertKeys(obj[key]); // 遞歸處理值 return acc; }, Array.isArray(obj) ? [] : {}); } // 增強目錄遍歷邏輯 // 更新 traverseDir 函數,添加目錄排除邏輯 function traverseDir(dir) { fs.readdirSync(dir).forEach(entry => { const entryPath = path.join(dir, entry); const isDir = fs.statSync(entryPath).isDirectory(); // 跳過排除目錄 if (isDir && CONFIG.excludeDirs.includes(entry)) { console.log(`跳過目錄: ${entryPath}`); return; } if (isDir) { traverseDir(entryPath); } else { const ext = path.extname(entryPath).toLowerCase(); if (CONFIG.fileTypes.includes(ext)) { processFile(entryPath); } } }); } console.log('⚠️ 開始轉換,請確保已備份代碼!'); traverseDir(CONFIG.inputDir); console.log('✅ 轉換完成!立即通過 git diff 檢查變更'); -

浙公网安备 33010602011771号