240 - 《简繁转换的 3 个方案》
发布于 2023年1月7日
这周看到了几次繁简体转换的案例,于是研究了下。
繁简体转换有多种方法,有比较重的,有比较轻的,有跑在 Node 里的,有跑在 Browser 里的,有甚至直接一行 CSS 就能完成转换的。
1、例行先问下 chatgpt,他给的答案是 opencc,这应该是最准确的方案。但缺点是重,需安装 npm 包,然后还有 node-gyp 编译,我本地还编译失败了。
import { OpenCC } from 'opencc';
const converter: OpenCC = new OpenCC('s2t.json');
await converter.convertPromise('汉字');
opencc 还有一些非官网的其他实现,比如 purejs 的,wasm 的等等,但看下来都感觉比较重,那有没有轻量点的方案呢?问了 chatgpt 之后,告诉我可以尝试用自定义的字词映射表。
2、这周翻 antgroup.com 代码时也是看到了相似的字词表映射方案,优点是轻,2000+ 的映射表只要 50K+(gzip 前),缺点是覆盖面窄,比如不支持一些生僻字。
const TongWen = {
'\u00b7': '\u2027',
'\u2015': '\u2500',
'\u2016': '\u2225',
// 这里省略 2000+ 行的字映射表
// 可以在 https://github.com/tongwentang/tongwen-core/tree/master/dictionaries 找到
};
const words = {
'\u8054\u7cfb': '\u806f\u7e6b',
'\u5173\u7cfb': '\u95dc\u4fc2',
};
function toTrad(itxt: string) {
let newItxt = itxt;