Files
web-Iot/tmp_dbg3.cjs
2026-08-14 09:02:52 +08:00

16 lines
1.4 KiB
JavaScript

const fs = require('fs');
const rxJSX = />([^<>`{}()]*[一-鿿][^<>`{}()]*)</g;
const rxAttr = /([A-Za-z_][\w-]*)=(["'`])((?:\\.|(?!\2)[^{}()])*?[一-鿿]+(?:\\.|(?!\2)[^{}()])*?)\2/g;
const rxMsg = /(message\.(?:error|success|warning|info|loading|open))\(\s*(["'`])((?:\\.|(?!\2)[^{}()])*?[一-鿿]+(?:\\.|(?!\2)[^{}()])*?)\2/g;
const rxProp = /(^|[^.\w])((?:title|content|okText|cancelText|message|description|label|placeholder|text|tooltip|subTitle|subtitle)):\s*(["'`])((?:\\.|(?!\3)[^{}()])*?[一-鿿]+(?:\\.|(?!\3)[^{}()])*?)\3/g;
const SKIP_ATTR = new Set(['key','id','path','href','src','to','type','name','value','className','data','mode','status','field','prop','ref']);
const UI_PROP = new Set(['title','content','okText','cancelText','message','description','label','placeholder','text','tooltip','subTitle','subtitle']);
function keyFor(s){ return 'NS.KEY'; } // dummy
let s = fs.readFileSync('src/components/SystemSetting/BasicSettings.tsx','utf8');
s = s.replace(rxJSX, (m,inner)=>'>{t(\''+'NS.'+inner.trim()+'\')}<');
s = s.replace(rxAttr, (m,attr,q,val)=>{ if(SKIP_ATTR.has(attr)) return m; if(val.includes('${')) return m; return attr+'={t(\'NS.'+val.trim()+'\')}'; });
s = s.replace(rxMsg, (m,fn,q,val)=> fn+"(t('NS."+val.trim()+"'))");
s = s.replace(rxProp, (m,pre,prop,q,val)=>{ if(!UI_PROP.has(prop)) return m; return pre+prop+": t('NS."+val.trim()+"')"; });
const lines = s.split('\n');
for (let i=68;i<82;i++){ console.log((i+1)+': '+lines[i]); }