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

news2024/11/27 14:33:38

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, 则给出候选项 大地
end

return translator

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

--lua语言中的注释用“--” 
function translator(input, seg)
	if (input == "/help") then
		yield(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") then
		yield(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
end

return 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.coloradmin.cn/o/1357160.html

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

相关文章

Python(wordcloud):根据文本数据(.txt文件)绘制词云图

一、前言 本文将介绍如何利用python来根据文本数据(.txt文件)绘制词云图,除了绘制常规形状的词云图(比如长方形),还可以指定词云图的形状。 二、相关库的介绍 1、安装相关的库 pip install jieba pip i…

how2heap-2.23-04-unsorted_bin_leak

#include<stdio.h> #include<malloc.h>int main() {char* a malloc(0x88);char* b malloc(0x8);free(a);long* c malloc(0x88);printf("%lx , %lx\n",c[0],c[1]);return 0; }unsorted bin leak原理&#xff1a;将chunk从unsorted bin申请回来时&#…

Transforer逐模块讲解

本文将按照transformer的结构图依次对各个模块进行讲解&#xff1a; 可以看一下模型的大致结构&#xff1a;主要有encode和decode两大部分组成&#xff0c;数据经过词embedding以及位置embedding得到encode的时输入数据 输入部分 embedding就是从原始数据中提取出单词或位置&…

matlab如何标定相机内外参和畸变参数

关于内外参矩阵和畸变矩阵可以学习 https://blog.csdn.net/qq_30815237/article/details/87530011?spm1001.2014.3001.5506 在APP中找到 camera Calibrator 点击 Add Images&#xff0c;导入拍照图片。标定20张左右就够了&#xff0c;然后角度变一下&#xff0c;但不需要变太…

微信小程序+前后端开发学习材料

目录结构 全局文件 1.app.json 文件 用来对微信小程序进行全局配置&#xff0c;决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。文件内容为一个 JSON 对象。 1.1 page用于指定小程序由哪些页面组成&#xff0c;每一项都对应一个页面的 路径&#xff08;含文…

计算机基础面试题 |10.精选计算机基础面试题

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

UE相关杂项笔记

1.PAK包解析 UE4如何反向查找Pak里面包含哪些文件 - 哔哩哔哩 CMD控制台命令输入 D:&quot;Epic Games&quot;\UE_5.1\Engine\Binaries\Win64\UnrealPak.exe 包路径 -list *文件夹带空格时 添加“ ”包裹住文件夹名 解包工具路径 UE引擎安装路径\UE_5.1\Engine\Binarie…

sql:定时执行存储过程(嵌套存储过程、使用游标)

BEGINDeclare FormNo nvarchar(20) --单号Declare Type nvarchar(50) --类型Declare PickedQty float -Declare OutQty float Declare 生产量 floatDeclare 已装箱数量 float Declare 已入库数量 floatDeclare 损耗数量 float Declare 退货品出库数量 intdeclare k c…

Mac上修复Gitee报错 Oauth: Access token is expired

一. 背景&#xff1a; 最近在gitee上拉了两次项目&#xff0c;两次使用的邮箱密码不一致&#xff08;换绑邮箱&#xff09;&#xff0c;第一次在idea中拉取后端项目&#xff0c;第二次在webstorm中拉取前端项目&#xff0c;出现该异常&#xff0c;记录下解决方案 二. 错误回显…

burpsuite模块介绍之项目选项

使用该模块中的功能实现对token的爆破 靶场搭建:phpstudy的安装与靶场搭建 - junlin623 - 博客园 (cnblogs.com) 实现 1)先抓个包 2)设置宏 要实现我们爆破的时候请求的token也跟靶场一样一次一换从而实现爆破,那就需要用到项目选项中的宏(预编译功能)

用 Python 抓取 bilibili 弹幕并分析!

01 实现思路 首先&#xff0c;利用哔哩哔哩的弹幕接口&#xff0c;把数据保存到本地。接着&#xff0c;对数据进行分词。最后&#xff0c;做了评论的可视化。 02 弹幕数据 平常我们在看视频时&#xff0c;弹幕是出现在视频上的。实际上在网页中&#xff0c;弹幕是被隐藏在源代码…

windows+django+nginx部署静态资源文件

平台&#xff1a;windows python&#xff1a;3.10.0 django&#xff1a;4.0.8 nginx&#xff1a;1.24.0 背景 开发阶段采用前后端分离模式&#xff0c;现在要将项目部署到工控机上&#xff0c;把前端项目编译出来的静态文件放到后端项目中进行一体化部署&#xff0c;且不修改…

opencv006 绘制直线、矩形、⚪、椭圆

绘制图形是opencv经常使用的操作之一&#xff0c;库中提供了很多有用的接口&#xff0c;今天来学习一下吧&#xff01; &#xff08;里面的函数和参数还是有点繁琐的&#xff09; 最终结果显示 函数介绍 直线 line(img, pt1, pt2, color, thickness, lineType, shift) img: 在…

Python从入门到网络爬虫(内置函数详解)

前言 Python 内置了许多的函数和类型&#xff0c;比如print()&#xff0c;input()等&#xff0c;我们可以直接在程序中使用它们&#xff0c;非常方便&#xff0c;并且它们是Python解释器的底层实现的&#xff0c;所以效率是比一般的自定义函数更有效率。目前共有71个内置函数&…

Java编程中的IO模型详解:BIO,NIO,AIO的区别与实际应用场景分析

IO模型 IO模型就是说用什么样的通道进行数据的发送和接收&#xff0c;Java 共支持3种网络编程IO 模式&#xff1a;BIO,NIO,AIO BIO(Blocking lO) 同步阻塞模型&#xff0c; 一个客户端连接对应一个处理线程 代码示例&#xff1a; package com.tuling.bio; import java.io.…

回归预测 | Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测

回归预测 | Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测 目录 回归预测 | Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现基于GA-Elman遗传算法优化神经网络多输入单输…

内核死锁检测--lockdep(linux3.16)

之前看网上说linux内核自带了死锁检测工具。现在试试使用效果怎么样。感觉确实能够检测到&#xff0c;后面有时间在研究原理把。 死锁检测lockdep实现原理-CSDN博客//这个文章讲了一些检测原理 需要开启如下选项&#xff08;选项应该是开多了&#xff0c;用最后三个就行&#x…

Linux之IP地址、主机名、域名解析

一、IP地址 可以通过ifconfig命令查看本机的ip地址&#xff0c;如果无法使用ifconfig命令&#xff0c;可以安装 安装&#xff1a;yum -y install net-tools ens33&#xff1a;主网卡&#xff0c;里面的inet就是ip地址 lo&#xff1a;本地回环网卡&#xff0c;127.0.0.1&…

工具网站DefiLlama全攻略:从零学习链上数据使用与发现

DefiLlama 是一个 DeFi(去中心化金融)信息聚合器,其主要功能是提供各种 DeFi 平台的准确、全面数据。DefiLlama 致力于在不受广告或赞助内容影响的情况下为用户提供这些数据,以确保信息内容的透明度和公正性,该平台聚合来自多个区块链的数据,让用户能够全面了解 DeFi 格局…

【React系列】高阶组件

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 高阶组件 1.1. 认识高阶组件 什么是高阶组件呢&#xff1f;相信很多同学都听说过&#xff0c;也用过 高阶函数&…