rime中州韵小狼毫 help lua Translator 帮助消息翻译器

luaRime中州韵/小狼毫输入法强大的武器,掌握如何在Rime中州韵/小狼毫中使用lua,你将体验到什么叫 随心所欲

先看效果

在 rime中州韵 输入效果一览 中的 👇 help效果 一节中, 我们看到了在Rime中州韵/小狼毫输入法中输入 help 时,输入法会展示出如下👇的候选项效果:
20240101183014

这个效果是如何出来的呢? 我们在 rime中州韵小狼毫 自定义词典 一文中介绍过 自定义词典,所以最直观的解决方案是,我们在用户词典中加入对应的自定义词条,然后 重新部署 即可。

这个想法是正确的,如果在我们的自定义词典 (此处以 Custom_phrase.txt 为例)加入以下👇自定义词条,亦可现实同样的效果:

lua version: Lua 5.4	help
特殊符号-->/help	help
latexLetters-->uzalph	help

但是,本文并不打算对比在实现同样效果时,自定义词典lua脚本两种方案孰优孰劣,仅为讲解如何通过lua脚本的方案在Rime中州韵/小狼毫输入法中如何实现这个help的效果。

Translator

Rime输入法中,有两个概念非常重要,一个是Translator, 一个是Filter

20240101191010
在👆上图中,展示了Rime输入法中的TranslatorFilter的大致工作流程:Rime引擎捕捉到用户的键盘输入字符 ddfb,然后经过一些重要的前端处理(前端处理部分上图没有画出)后,进入Translator中处理,Translator将字符 ddfb 翻译成词条 大地。然后把Translator生成的候选词送入Filter中处理,FilterTranslator生成的候选词逐一进行处理,丰富了候选词的信息(在上图的例子中,为候选词大地进行了注音),同时增加了一个新的候选词母亲。经Filter处理完成后的候选词,以及Filter生成的新的候选词,做为最终的候选词选项提供给用户进行选择使用。

本文中,我们将重点讲解如何定义一个Translator处理器。

help.lua

一般来说,根据你需要实现的功能,我们为我们的lua脚本拟定一个名字,今天我们所要实现的功能是实现 help 候选项,所以我们把我们的lua脚本命名为 help.lua

👇如下,我们的help.lua脚本,应该放置于 用户文件夹 下的 lua 子文件夹内,所以如果你的 用户文件夹 内没有 lua 文件夹,请创建 lua 文件夹,然后将你的 help.lua 文档放在此 lua 文件夹内。
20240101194146

help.lua脚本内,以下的脚本结构中,我们定义了一个函数/方法,这个方法名为 translator(名称不限,也可以是其它的名字),这个 translator 方法内部定义了具体的 translator 逻辑。在脚本的最后一行,我们通过 return 关键字抛出了translator方法。这样我们就可以在rime引擎中调用该translator方法实现具体的处理逻辑。

--lua语言中的注释用“--” 
function translator(input, seg)--这里定义 translator 逻辑,例如如果看到 input == ddfb, 则给出候选项 大地
endreturn translator

👇以下是help.lua的具体代码:

--lua语言中的注释用“--” 
function translator(input, seg)if (input == "/help") thenyield(Candidate("help", seg.start, seg._end, "带圈汉字/数字/字母-->/hzq/szq/zmq", " "))yield(Candidate("help", seg.start, seg._end, "符号/记号/箭头/雪花/表情-->/fh/jh/jt/xh/bq", " "))yield(Candidate("help", seg.start, seg._end, "数学/数字名/音乐/分数/电脑-->/sx/szm/yy/fs/dn", " "))yield(Candidate("help", seg.start, seg._end, "方块/麻将/象棋/色子/扑克-->/fk/mj/xq/sz/pk", " "))yield(Candidate("help", seg.start, seg._end, "单位/货币/偏旁-->/dw/hb/pp", " "))yield(Candidate("help", seg.start, seg._end, "标点/下标/竖标点-->/bd/xb/bdz", " "))yield(Candidate("help", seg.start, seg._end, "希腊字符/大写-->/xl/xld", " "))yield(Candidate("help", seg.start, seg._end, "罗马数字/大写-->/lm/lmd", " "))yield(Candidate("help", seg.start, seg._end, "天干/地支/干支-->/tg/dz/gz", " "))yield(Candidate("help", seg.start, seg._end, "八卦-->/bg/bgm/txj", " "))yield(Candidate("help", seg.start, seg._end, "星座/名-->/xz/xzm/seg", " "))yield(Candidate("help", seg.start, seg._end, "节气/天气-->/jq/tq", " "))yield(Candidate("help", seg.start, seg._end, "数字/字母-->/123/abc...", " "))yield(Candidate("help", seg.start, seg._end, "状态/推荐/进度/对错-->/zt/tj/jd/dc", " "))elseif (input == "help") thenyield(Candidate("help", seg.start, seg._end, "lua version: ".._VERSION, " "))yield(Candidate("help", seg.start, seg._end, "特殊符号-->/help", " "))yield(Candidate("help", seg.start, seg._end, "latexLetters-->uzalph", " "))--yield(Candidate("help", seg.start, seg._end, "", " "))--yield(Candidate("help", seg.start, seg._end, "", " "))--yield(Candidate("help", seg.start, seg._end, "", " "))end
endreturn translator

rime.lua

上文中我们完成了 help.lua 文档中脚本的定义。但是仅仅是一个脚本,是没有办法与 rime 引擎联动的,我们还需要一个 rime.lua 的脚本负责将我们定义的 help.lua 脚本中的 translator 映射成 rime 可以引用的方法接口,以下👇是 rime.lua 文档内的脚本内容:

help_translator = require("help")

👆上述脚本中,= 左边的 help_translator 就是映射出来的可以在 rime 引擎中使用的 translator 接口,这个接口将在下文中被我们引用;= 右边的 require 方法内的参数 help 则是我们上文所定义的 help.lua 文档的名字。也就是说,在rime.lua脚本中,require方法所引用的是,是lua文件夹内的lua脚本文档的名字(文档名)。

rime.lua 与其它的 lua 文档不一样,rime.lua 文档需要放在 用户文件夹 内(不是lua文件夹哦),如下👇:
20240101205638

wubi_pinyin.custom.yaml

👆上文中,我们通过 help.lua 脚本文档定义并返回了一个translator方法,然后通过rime.lua脚本文档将help.lua中所定义的translator方法映射成translator接口help_translator。那么这个映射出来的help_translator接口应该如何使用呢?

显然,我们应该在我们的输入方案中引用并使用这个help_translator接口,以五笔・拼音输入方案为例, 我们需要在五笔・拼音输入方案的方案文档wubi_pinyin.schema.yaml的补丁文档wubi_pinyin.custom.yaml中来引用help_translator接口。我们在wubi_pinyin.custom.yaml文档中增加一个translator的引用,如下👇:
20240101212626

我们修改并保存wubi_pinyin.custom.yaml文档后,请记得重新部署rime输入引擎,则rime输入引擎就会在我们所定义的输入方案(此处为五笔・拼音)中引用所定义的 help_translator 翻译器,从而实现help.lua脚本中所定义的候选词生成功能,效果如下👇:
20240101213117

help.lua 文档

👆以上所述 help.lua脚本,你也可以在 help.lua 下载取用。

rime.lua 文档

👆以上所述 rime.lua 脚本,你也可以在 rime.lua 下载取用。

wubi_pinyin.custom.yaml 文档

👆以上所述 wubi_pinyin.custom.yaml 文档,你也可以在 wubi_pinyin.custom.yaml 下载取胜。

小结

以上就是本文所带来的分享,文章主要讲解并实现了一个简单的 help_translator 翻译器,该 help_translator 翻译器通过 help.lua 文档实现,然后通过 rime.lua 文档实现了脚本函数到 help_translator 接口的转换映射,最后我们以五笔・拼音输入方案为例,在五笔・拼音输入方案文档 wubi_pinyin.schema.yaml 的补丁文档 wubi_pinyin.custom.yaml 中引用并使用了 help_translator 翻译器,最终我们实现了我们想要的 help 候选项效果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法第十一天-组合总和Ⅳ

组合总和Ⅳ 题目要求 解题思路 来自[负雪明烛] 题目有个明显的提示:求组合的个数,而不是每个组合。如果是要求出每个组合,那么必须使用回溯法,保存所有路径。但是如果是组合个数,一般都应该想到[动态规划]的解法。 直…

记录 搭载小车 运行激光slam lio-sam fast-lio2

用了将近一个月搭载了一台履带车 其中 主控:NUC i7-8559U 激光雷达为:velodyne16线和hesai64线 IMU为:轮趣N100 mini 对imu使用上位机进行调平矫正 设置输出400HZ 对外参标定 首先使用velodyne16线 安装驱动直接运行,没遇到啥…

人工智能_机器学习092_使用三维瑞士卷数据_利用分层聚类算法进行瑞士卷数据三维聚类---人工智能工作笔记0132

然后我们使用分层聚类算法来对我们导入的瑞士卷数据进行聚类 agg =AgglomerativeClustering(n_clusters = 6,linkage = ward) 可以看到这里我们使用的,聚类距离计算用的是,ward这种,最小化簇内方差的形式,l进行聚类对吧 可以看到这个linkage参数有好几个选择对吧,是之前我们讲过…

网络通信理论-入门1

网口框架 100M 2. 物理层解读 2.1 同步的方法:编码 为了让接收方在没有外部时钟参考的情况也能确定每一位的起始、结束和中间位置,在传输信号时不直接采用二进制编码。在 10BASE-T 的传输方式中采用曼彻斯特编码,在 100BASE-T 中则采用 4B/…

Java JDBC整合(概述,搭建,PreparedStatement和Statement,结果集处理)

一、JDBC的概述: JDBC:是一种执行sql语句的Java APL,可以为多种关系类型数据库提供统一访问,它由一组用Java语言编写的类和接口组成。有了JDBC,Java人员只需要编写一次程序就可以访问不同的数据库。 JDBC APL&#xf…

Python+PyCharm的安装配置及教程(实用)

python and PyCharm 安装教程可参考:https://blog.csdn.net/wangyuxiang946/article/details/130634049 Pyhon 下载地址:https://www.python.org/downloads/ PyCharm 下载地址:https://www.jetbrains.com/pycharm/download/?sectionwindo…

AP9196 DC-DC升压恒流电源管理芯 3-40V 200W升降压线路图

产品说明 AP9196 是一系列电路简洁的宽调光比升压调光恒流驱动器,适用于 3-40V 输入电压范围的 LED照明领域。AP9196 采用我司专利算法,可以实现高精度的恒流效果,输出电流恒流精度≤3%,电压工作范围为5-40V&#xff0…

在Fiber中处理请求和响应

掌握GoLang Fiber中请求和响应管理的艺术,以实现高效的Web开发 在Web开发领域,有效地处理请求和响应是构建既用户友好又高效的Web应用的基石。该过程涉及管理传入的HTTP请求、解析数据和参数、构建适当的响应、处理不同的响应类型以及优雅地处理错误。对…

湖仓架构的演进

1.数据仓库架构的历史演进 起初,业界数据处理首选方式是数仓架构。通常数据处理的流程是把一些业务数据库,通过ETL的方式加载到Data Warehouse中,再在前端接入一些报表或者BI的工具去展示。 数据仓库概念是 Inmon 于 1990 年提出并给出了完…

求实创新 不断探索 浙江移动基于亚信科技AntDB数据库率先完成CRM系统全域改造

12日20日,中国信息通信研究院(简称:信通院)和中国通信标准化协会大数据库技术推进委员会(CCSA TC601)共同组织的2023年大数据库“星河(Galaxy)”案例评选结果发布。中国移动通信集团…

【Bootstrap学习 day13】

Bootstrap5 下拉菜单 下拉菜单通常用于导航标题内&#xff0c;在用户鼠标悬停或单击触发元素时显示相关链接列表。 基础的下拉列表 <div class"dropdown"><button type"button" class"btn btn-primary dropdown-toggle" data-bs-toggl…

亚马逊速卖通eBay测评补单:批量注册买家账号如何保证成功率

在当今的电商领域&#xff0c;测评如同一面镜子&#xff0c;为商家展现出产品的真实面貌。对于商家而言&#xff0c;自行养号进行测评的重要性日益凸显。 与依赖国外买手或测评服务商相比&#xff0c;自行搭建账号具有以下优势&#xff1a; 一&#xff0c;可以避免买家账号资…

win10电脑提示“KBDSG.DLL文件缺失”,软件游戏无法启动运行,快速修复方法

很多用户在日常使用电脑的时候&#xff0c;或多或少都遇到过&#xff0c;在启动游戏或软件的时候&#xff0c;Windows桌面会弹出错误提示框“KBDSG.DLL文件缺失&#xff0c;造成软件无法启动或运行&#xff0c;请尝试重新安装解决”。 不少用户&#xff0c;会根据提示重装游戏或…

STM32疑难杂症

1.keil的奇怪问题 创建的数组分配内存到0x10000000地址的时候,数据总是莫名其妙的出现问题,取消勾选就正常了 stm32f407内部有一个CCM内存,这部分内存只能由内核控制,任何外设都不能够进行访问。这样问题就来了,如果使用keil5进行编程时勾选了这个选项(下图),则编译的…

[每周一更]-(第50期):Go的垃圾回收GC

参考文章&#xff1a; https://juejin.cn/post/7111515970669117447https://draveness.me/golang/docs/part3-runtime/ch07-memory/golang-garbage-collector/https://colobu.com/2022/07/16/A-Guide-to-the-Go-Garbage-Collector/https://liangyaopei.github.io/2021/01/02/g…

2023年终总结(脚踏实地,仰望星空)

回忆录 2023年&#xff0c;经历非常多的大事情&#xff0c;找工作、实习、研究生毕业、堂哥结婚、大姐买车、申博、读博、参加马拉松&#xff0c;有幸这一年全家人平平安安&#xff0c;在稳步前进。算是折腾的一年&#xff0c;杭州、赣州、武汉、澳门、珠海、遵义来回跑。完成…

软件测试|SQL AND和OR运算符解析

简介 在SQL&#xff08;Structured Query Language&#xff09;中&#xff0c;AND和OR是两个常用的逻辑运算符。它们用于组合条件来构建复杂的查询语句&#xff0c;帮助我们更精确地过滤和检索数据。本文将详细介绍SQL中的AND和OR运算符&#xff0c;包括其语法、用法以及使用时…

nginx原理和配置项详解

一、nginx原理 Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;也是一个IMAP/POP3/SMTP代理服务器。其工作原理和配置项如下&#xff1a; 工作原理&#xff1a; 反向代理&#xff1a;Nginx可以作为反向代理服务器&#xff0c;接收客户端的请求&#xff0c;然后将请求转…

企业级实践为“燃料”,大模型助推Kyligence产品力向上

回顾2023年&#xff0c;最火热的科技话题无疑是生成式AI。 从ChatGPT横空出世&#xff0c;到“千模大战”如火如荼&#xff0c;AIGC正式破圈&#xff0c;成为企业数字化转型的新关键词。 在红杉中国《2023企业数字化年度指南》中&#xff0c;通过调研235家企业可知&#xff0…

VR与数字孪生:共同构筑未来的虚拟世界

随着科技的不断发展&#xff0c;数字孪生和VR已经成为当今热门的科技话题。作为山海鲸可视化软件的开发者&#xff0c;我们对这两者都有深入的了解。在此&#xff0c;我们将详细探讨数字孪生与VR的区别和联系。 首先&#xff0c;数字孪生&#xff08;Digital Twin&#xff09;…