当前位置: 首页 > news >正文

先备案还是先做网站珠海建设工程监督站网站

先备案还是先做网站,珠海建设工程监督站网站,廊坊关键词排名推广,织梦网站下载地址文章目录 前期工作和依赖笔记功能代码输出 最近有一个功能#xff0c;将json文件里的内容抽取到一个xlxs中#xff0c;然后维护xlxs文件。当要更新json文件时#xff0c;就更新xlxs的内容并把它传回json中。这个脚本主要使用NodeJS写。 以下是完成此功能时做的一些笔记。 … 文章目录 前期工作和依赖笔记功能代码输出 最近有一个功能将json文件里的内容抽取到一个xlxs中然后维护xlxs文件。当要更新json文件时就更新xlxs的内容并把它传回json中。这个脚本主要使用NodeJS写。 以下是完成此功能时做的一些笔记。 前期工作和依赖 js文件中要使用import因此需要在package.json中设置type: module 依赖 import xlsx from xlsx; import path, { dirname } from node:path; import fs from node:fs; import { fileURLToPath } from node:url; import md5 from blueimp-md5;相关文档 API 参考 | SheetJS 中文网 (nodejs.cn) xlsx - npm (npmjs.com) 笔记 获取此文件目录名 const __dirname dirname(fileURLToPath(import.meta.url));组合文件名 const outPath path.join(__dirname, ./fileName.xlsx);读取一个目录下的所有文件名 const files fs.readdirSync(dirName);读取一个文件 const enJson fs.readFileSync(fileName, utf8);将二维数组转换为xlxs工作表 const sheet xlsx.utils.aoa_to_sheet(sheetData);将工作表添加到工作簿 xlsx.utils.book_append_sheet(workBook, sheet, sheetName);将工作表输出到xlsx文件中 xlsx.writeFile(workBook, outPath, { bookType: xlsx });将数组输出到xlxsdata是数组。 const sheet xlsx.utils.json_to_sheet(data); //将 JS 对象数组转换为工作表 const workBook xlsx.utils.book_new();// 创建一个工作簿对象 xlsx.utils.book_append_sheet(workBook, sheet, sheetName); // 将工作表添加到工作簿 xlsx.writeFile(workBook, path, {bookType: xlsx, }); // 输出到xlsx功能 维护一个xlsx文档里面包含国际化的所有翻译如下第一行 为 语言 enkojafr英文翻译韩文翻译日文翻译法文翻译 有英文json翻译文件如下src/locales/en/fileName1.json 其中key值为i18n的标记value值为对应的翻译。 {inviter: Inviter,worth: Worth ${{value}},countDownTips: Rewards Countdown }默认语言为英语我们需要以它为例子生成对应的其他语言文件如生成src/locales/fr/fileName1.json {inviter: 法文翻译1,worth: 法文翻译2,countDownTips: 法文翻译3 }所有的翻译都在xlsx中。因此我们需要读取xlsx文件遍历src/locales/en下的对应文件参数pageNames将对应翻译生成到对应文件夹。若无对应翻译则用英文兜底。 中途使用md5加密后的en翻译为key将对应xlsx文件中的翻译那一行保存到set中是因为xlsx中没有i18n标记只有各语言翻译。 将xlsx翻译文件输出到locales/[language]/[fileName]的功能封装成一个函数参数如下 读入的en文件夹上级为pagePath 参数 pageNames要维护的文件名列表,如 invite 对应locale/en/invite filePathxlsx文件路径 pagePathlocale文件路径 option:选项包括 - outputKey:输出为json的某一个key值的value没有就不填 这个功能的代码很死板像是硬编码需求如此先写着 - languageArray:传入一个数组包含要求的语言没有就不填会默认xlsx里的所有文件 参数填错了就会报错这个代码的健壮性并不强只是一个加快工作效率的工具 / 练手代码。 所以建议严格按照参数要求调用函数。不要做那种“没有outputKey应该不传但我就传个空串”可能会报奇怪的错误 代码 // 入口 import xlsx from xlsx; import md5 from blueimp-md5; import fs from node:fs; import path from node:path;// 删去前后空格 特判str为undefined const trim (str) (str || ).replace(/^\s|\s$/g, );// 生成一个setkey是en的翻译value是对应row function transSheetToMap(sheetData) {const map new Map();for (const row of sheetData) {const key md5(trim(row.en));map.set(key, row); // 加密后en的value为key整个row为value}return map; }/* 读入的en文件夹上级为pagePathpageNames要维护的文件名列表,如 invite 对应locale/en/invite filePathxlsx文件路径 pagePathlocale文件路径 option:选项包括- outputKey:输出为json的某一个key值的value没有就不填- languageArray:传入一个数组包含要求的语言缩写没有就不填会默认xlsx里的所有文件 */ function xlsxToJson(pageNames, filePath, pagePath, option) {let outputKey undefined;if (option.outputKey) {outputKey option.outputKey;}const workBook xlsx.readFile(filePath);const firstWorksheet workBook.SheetNames[0]; // 全都放在第一个sheet中const sheet workBook.Sheets[firstWorksheet];const sheetData xlsx.utils.sheet_to_json(sheet); // 数组每个项是对象key为语言value为翻译const languages option.languageArray? option.languageArray: Object.keys(sheetData[0]); // 所有语言const dictions transSheetToMap(sheetData);for (const pageName of pageNames) {// 英文文件const pageEnJson JSON.parse(fs.readFileSync(path.join(pagePath, en, ${pageName}.json),utf8));// key 为 i18n标记const pageEnKeys outputKey? Object.keys(pageEnJson[outputKey]): Object.keys(pageEnJson);for (const language of languages) {// 深拷贝英文样本const translatedJson JSON.parse(JSON.stringify(pageEnJson));// translatedJson生成为对应语言en兜底for (const key of pageEnKeys) {const translatedKey outputKey? md5(trim(pageEnJson[outputKey][key])): md5(trim(pageEnJson[key]));const translation dictions.get(translatedKey);if (outputKey) {translatedJson[outputKey][key] translation[language] || translation[en];} else {translatedJson[key] translation[language] || translation[en];}}const filePath path.join(pagePath, language, ${pageName}.json);// 若文件夹不存在则创建if (!fs.existsSync(path.join(pagePath, language))) {fs.mkdirSync(path.join(pagePath, language));}fs.writeFileSync(filePath, JSON.stringify(translatedJson, null, 4));}} }export default xlsxToJson; xlsxToJson([invite, player],C:/Users/somePath/i18n-all.xlsx,C:/Users/somePath/locales,{outputKey: key,languageArray: [de],} ); 输出 调用要翻译的文件为invite输出到json文件的key属性中只翻译到de德文。 xlsxToJson([invite],C:/Users/somePath/i18n-all.xlsx,C:/Users/somePath/locales,{outputKey: key,languageArray: [de],} );对应英文json如下有outputKey一定要填没有的话一定不填不然输出会很奇怪。 // locales/en/invite.json {key: {ogDesc: Download Now!,inviter: Inviter} }结果输出locales/de/invite.json 可能会封装一个npm包可能会维护。笔记先写在这吧
http://www.hkea.cn/news/14358168/

相关文章:

  • 新郑网站开发WordPress小程序导航主题
  • 免费生成图片的网站手机网络不稳定怎么解决
  • 汕头网站建设网站建设基于django的电子商务网站设计
  • 做的网站有广告共享影院 wordpress
  • 建站公司合同模板ih5 wordpress
  • 个人网站设计要求营销公司取名字大全
  • 接口网站开发有app怎么做网站
  • 广州网站建设全包网址大全网站
  • 网站备案域名需要解析到备案服务器吗都哪些网站可以做gif
  • 苏州公司建设网站制作金华网络公司网站建设
  • 58做二手车网站应该怎么推广如何做网站广告图片
  • 恒星科技网站建设电商设计参考网站
  • 电子烟网站设计app展示网站模板
  • 网站建设600元全包wordpress 主题 破解版
  • 怎么做网站给国外看见山东高端网站定制
  • 网站兼容所有浏览器网站的建设课程
  • 品牌微信网站建设超简单网站
  • 建设糖果网站的好处有哪些手机网站建设的费用
  • 网站后台是什么丰都网站建设
  • 免费网站设计模板网站新版
  • 婺源做网站有吗做棋牌辅助网站
  • 怎么推广自己做的网站网站开发现状都用php
  • ps做汽车网站下载地址wordpress分配管理员
  • 汕头网站开发网站备案拍照 广州
  • 国外网站翻墙怎么做买域名哪个网站好
  • 网上书城网站开发意义电子商务网站建设软件选择
  • 栖霞酒店网站设计价格广州网站建设在线
  • 河南省建设网站政务公开网站项目建设书
  • 推进网站集约化建设wordpress 不能更换主题
  • 特色的南昌网站制作现在感染症状有哪些