翻译
支持21种印地语的React的转写组件. 使用来自 AI4-Bharat IndictXlit 数据。 。 。 .
目录
1. 关于
这是一个前端库,使您的用户能够以南亚的许多不同语言输入,并且可以被集成到任何基于反应的应用程序中. 这个图书馆是一个叉子 反应-翻译,它使用Google Translaterate API,支持全球约40种语言. 在这个模块中,我们的重点是为印地语,特别是克什米尔语,马尼普里语等低资源语言(Google不支持这些语言)提供高质量的转写-ug建议. 请检查url=值 (帮助) AI4Bhārat 印度语-Xlit语。 。 。 .
2. 演示
该演示的出处可见于 example 文件夹 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}你还得去吗.
3. 安装
npm install --save @ai4bharat/indic-transliterate
OR
yarn add @ai4bharat/indic-transliterate
4. 使用费
4.1. 基本实例
import React, { useState } from "react";
import { IndicTransliterate } from "@ai4bharat/indic-transliterate";
import "@ai4bharat/indic-transliterate/dist/index.css";
const App = () => {
const [text, setText] = useState("");
return (
<IndicTransliterate
value={text}
onChangeText={(text) => {
setText(text);
}}
lang="hi"
/>
);
};
export default App;
4.2. 有定制部分
import React, { useState } from "react";
import { IndicTransliterate } from "@ai4bharat/indic-transliterate";
import "@ai4bharat/indic-transliterate/dist/index.css";
const App = () => {
const [text, setText] = useState("");
return (
<IndicTransliterate
renderComponent={(props) => <textarea {...props} />}
value={text}
onChangeText={(text) => {
setText(text);
}}
lang="hi"
/>
);
};
export default App;
4.3. 有类型脚本
import React, { useState } from "react";
import { IndicTransliterate, Language } from "@ai4bharat/indic-transliterate";
import "@ai4bharat/indic-transliterate/dist/index.css";
const App = () => {
const [text, setText] = useState("");
const [lang, setLang] = useState<Language>("hi");
return (
<IndicTransliterate
renderComponent={(props) => <textarea {...props} />}
value={text}
onChangeText={(text) => {
setText(text);
}}
lang={lang}
/>
);
};
export default App;
4.4. 与材料UI
import React, { useState } from "react";
import { IndicTransliterate, Language } from "@ai4bharat/indic-transliterate";
import "@ai4bharat/indic-transliterate/dist/index.css";
import Input from "@material-ui/core/Input";
const App = () => {
const [text, setText] = useState("");
const [lang, setLang] = useState<Language>("hi");
return (
<IndicTransliterate
renderComponent={(props) => {
const inputRef = props.ref;
delete props["ref"];
return <Input {...props} inputRef={inputRef} />;
}}
value={text}
onChangeText={(text) => {
setText(text);
}}
lang={lang}
/>
);
};
export default App;
4.5. 与外部API进行转写
import { IndicTransliterate } from "@ai4bharat/indic-transliterate";
import "@ai4bharat/indic-transliterate/dist/index.css";
const App = () => {
const [text, setText] = useState("");
return (
<IndicTransliterate
value={text}
onChangeText={(text) => {
setText(text);
}}
lang="hi"
customApiURL="https://your-custom-transliteration-api/{language}/{text}"
/>
);
};
export default App;
这使得用户可以整合自己的API,而不是依赖默认的转写API,只要外部API是一个 GET 下列格式的 API : https://your-custom-transliteration-api/{language}/{text} 并返回此格式的响应 :
{
"result": [
"suggestion-1",
"suggestion-2",
"suggestion-3",
"suggestion-4",
"suggestion-5",
...
],
...
}
5. 获得转写建议
5.1. 独立的例子
import { getTransliterateSuggestions } from "@ai4bharat/indic-transliterate";
const data = await getTransliterateSuggestions(
word, // word to fetch suggestions for
{
numOptions: 5, // number of suggestions to fetch
showCurrentWordAsLastSuggestion: true, // add the word as the last suggestion
lang: "hi", // target language
},
);
5.2. 自定义触发键
按下键后将当前选择输入文本框
翻译使用 event.keycode 属性以检测密钥。 这里有一些可以使用的预定义密钥 。 或者,你可以输入任何其它键的整数代码 作为触发器
import React, { useState } from "react";
import { IndicTransliterate, TriggerKeys } from "@ai4bharat/indic-transliterate";
import "@ai4bharat/indic-transliterate/dist/index.css";
import Input from "@material-ui/core/Input";
const App = () => {
const [text, setText] = useState("");
return (
<IndicTransliterate
value={text}
onChangeText={(text) => {
setText(text);
}}
lang="hi"
triggerKeys={[
TriggerKeys.KEY_RETURN,
TriggerKeys.KEY_ENTER,
TriggerKeys.KEY_SPACE,
TriggerKeys.KEY_TAB,
]}
/>
);
};
export default App;
5.3. 道具
| Prop | 需要吗? | 默认 | 说明 |
|---|---|---|---|
| 更改文本 | 对 | 组件当前值的收听器 . (text: string) => void | |
| 价值 | 对 | value 传递给组件的道具 | |
| 启用 | 真实 | 控制是否应显示建议 | |
| 组件 | (props) => <input {...props} /> | 组件要完成。 您可以通过组件库中的组件作为此道具 | |
| 朗语 | 顿 | 语言想通相. 语言代码见下一节 | |
| 最大选项 | 页:1 | 在帮助中显示的最大建议数 | |
| 页:1 | 0 个 | 帮助者顶部和护身符底部之间的额外空间 | |
| 页:1 | 0 个 | 助手的护身符和左侧的间隔 | |
| 容器分类Name | 空字符串 | 类名传递到组件的容器 | |
| 容器样式 | {} | CSS 样式对象传递到容器 | |
| 活动项目样式 | {} | CSS 样式对象传递到活动项目 <li> 标签 | |
| 隐藏 Mobile Devices 上的建议框 | false | Gboard 和 Swiftkey 等键盘支持多种语言的打字, 如果建议在移动设备上可见 | |
| 隐藏建议框断点 | 450个 | 类型 : number时使用 hideSuggestionBoxOnMobileDevices 这是真的。 在此设备宽度下不会显示建议框 | |
| 触发键 | KEY_SPACE, KEY_ENTER, KEY_TAB, KEY_RETURN | 按下键后将当前选择输入文本框 | |
| 插入当前选择 | true | 如果插入当前选择时 blur 发生事件 | |
| 显示当前 WordAs Last 建议 | true | 将当前输入显示为建议框中的最后选项 | |
| 水平视图 | false | 何时 true 建议并列出现,使更喜欢紧凑布局的用户更容易读取和获取 | |
| 自定义ApiURL | indic 转写 api | 灵活使用外部 API 进行转写, 只要响应结构遵循要求的格式, 无缝整合 4.5 国家 |
6. 语文
6.1. 获得支持的语言
import { getTransliterationLanguages } from "@ai4bharat/indic-transliterate";
const data = await getTransliterationLanguages();
6.2. 语言代码清单
目前支持来自印度次大陆的下列21种语言:
| ISO 639 代码 | 语言 |
|---|---|
| 作为 | 阿萨姆语 - অসমীয়া |
| bn 时 | 孟加拉语 - বাংলা |
| brx 颜色 | 波罗 - बड़ो |
| 宽 | 古吉拉特语 |
| 顿 | 印地语 - QQ |
| 单位n | 坎纳达 - ಕನ್ನಡ |
| 千岁 | 克什米尔人- |
| 刚 | Konkani Goan - \\\\ n |
| 母亲 | 迈蒂利 - मैथिली |
| 门l | 马来亚拉姆语 |
| 门尼 | 马尼普里- |
| 老师 | 马拉地语 - मराठी - |
| 无 | 尼泊尔- |
| 或者说 | 欧里亚 - ଓଡ଼ିଆ |
| 父亲 | 潘贾比 - ਪੰਜਾਬੀ |
| 萨 | 梵语 - संस्कृतम् |
| 页:1 | 信德语 - QQ |
| 对 | 僧伽罗语 - සිංහල - සිංහල |
| ta | 泰米尔语 - தமிழ் |
| 电话 | 泰卢固语 - QQ |
| 我们 | 乌尔都语 - اُردُو |
7. 新地物:为经常使用的字进行缓存
概览:
该模块现在支持每个语言可高达一万个字的缓存来通过减少API调用来提高性能. 缓存机制存储了单词及其相应的建议,提高了生成建议的速度和效率,特别是对于常用的单词.
如何运作:
-
缓存初始化 :
当用户开始打字时,工具会获取每个单词的建议. 如果第一次使用一个单词,则在缓存中加上其建议并初始频率计数:1。 。 。 . -
缓存结构 :
缓存按语言排列,每种语言都有自己的词典及其建议:{ language-1: { word-1: { suggestions: string[], frequency: number }, word-2: { suggestions: string[], frequency: number }, word-3: { suggestions: string[], frequency: number }, ... }, language-2:{ ... }, ... } -
快取查询 :
- 当一个单词被打入时,工具首先在缓存中查找.
- 如果找到,建议会被取回,频率计数会被递增.
- 如果找不到,该工具会从API中获取建议,将单词添加到缓存中,并初始化频率计数为 1.
-
缓存管理 :
- 缓存限为一万个单词.
- 当特定语言的缓存超过一万字时,会去掉最常用的词来为新条目提供空间.
-
示例工作流程 :
- 用户开始输入一个单词( 如"你好" ) :
- 工具检查缓存是否为单词 .
- 如果找到"你好",则取出建议,并增加频率.
- 如果找不到"你好",则从API中取出建议,将"你好"加入到缓存中,频率为1.
- 缓存大小超过一万字 :
- 使用最少的词被新词及其建议所取代.
- 用户开始输入一个单词( 如"你好" ) :
-
主要惠益:
- 改进性能:通过对常用单词使用缓存建议来减少API的调用.
- 适应性缓存:自动调整用户行为,增加常用单词的频数.
- 高效存储:用得最少的单词被替换,以保持最佳缓存大小.
8. 许可证
麻省理工学院 ai4 图片
真诚感谢 布尔汉努日 他的工作是开源的!