# @ai4bharat/indic-transliterate 中文文档

规范地址：https://npmcn.com/package/%40ai4bharat/indic-transliterate/

版本：1\.3\.8
npm 元数据更新时间：2024-09-20T04:48:34.436Z
中文译文更新时间：2026-11-07T00:05:05.743Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40ai4bharat/indic-transliterate
原文对照：https://npmcn.com/package/%40ai4bharat/indic-transliterate/?lang=original
项目主页：https://github.com/AI4Bharat/indic-transliterate-js#readme
源码仓库：https://github.com/AI4Bharat/indic-transliterate-js

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：155 kB，9 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=10
- 运行依赖：1 个
- peer 依赖：react ^16\.0\.0
- 首次发布：2022-08-12T08:23:43.562Z
- 最新版本发布：2024-09-20T04:48:34.134Z
- 近 30 天下载量：2136（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：25（近 12 个月 0 个）

## 中文简介

React 的转写组件

## 安装

```sh
npm install @ai4bharat/indic-transliterate
```

也可以使用：`pnpm add @ai4bharat/indic-transliterate`、`yarn add @ai4bharat/indic-transliterate`、`bun add @ai4bharat/indic-transliterate`

## README

# 翻译

支持21种印地语的React的转写组件. 使用来自 [AI4-Bharat IndictXlit 数据](https://ai4bharat.org/transliteration)。 。 。 .

[![NPM](https://img.shields.io/npm/v/@ai4bharat/indic-transliterate.svg)](https://www.npmjs.com/package/@ai4bharat/indic-transliterate)

![](https://npmcn.com/package/%40ai4bharat/indic-transliterate/assets/hi.gif)

## 目录

-   [1\. 关于](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-1-about)
-   [2\. 演示](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-2-demo)
-   [3\. 安装](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-3-install)
-   [4\. 使用费](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-4-usage)
    -   [4.1. 基本实例](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-41-basic-example)
    -   [4.2. 有定制部分](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-42-with-custom-component)
    -   [4.3. 有类型脚本](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-43-with-typescript)
    -   [4.4. 与材料UI](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-44-with-material-ui)
    -   [4.5 用外部API进行转写](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-45-With-External-API-for-transliteration)
-   [5\. 获得转写建议](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-5-get-transliteration-suggestions)
    -   [5.1. 独立实例](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-51-standalone-example)
    -   [5.2. 自定义触发键](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-52-custom-trigger-keys)
    -   [5.3. 道具](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-53-props)
-   [6\. 语文](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-6-languages)
    -   [6.1. 获得支持的语言](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-61-get-supported-languages)
    -   [6.2. 语言代码清单](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-62-list-of-language-codes)
-   [7\. 新地物:为经常使用的字进行缓存](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-7-New-Feature-Caching-for-Frequently-Used-Words)
-   [8\. 许可证](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-8-license)

## 1\. 关于

这是一个前端库,使您的用户能够以南亚的许多不同语言输入,并且可以被集成到任何基于反应的应用程序中. 这个图书馆是一个叉子 [反应-翻译](https://www.npmjs.com/package/react-transliterate),它使用Google Translaterate API,支持全球约40种语言. 在这个模块中,我们的重点是为印地语,特别是克什米尔语,马尼普里语等低资源语言(Google不支持这些语言)提供高质量的转写-ug建议. 请检查url=值 (帮助) [AI4Bhārat 印度语-Xlit语](https://ai4bharat.org/indic-xlit)。 。 。 .

## 2\. 演示

**[点击这里试试我们的演示!](https://ai4bharat.github.io/indic-transliterate-js/)**

该演示的出处可见于 [`example` 文件夹](https://github.com/AI4Bharat/indic-transliterate-js/tree/master/example) {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}你还得去吗.

## 3\. 安装

```bash
npm install --save @ai4bharat/indic-transliterate

OR

yarn add @ai4bharat/indic-transliterate
```

## 4\. 使用费

### 4.1. 基本实例

```jsx
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. 有定制部分

```jsx
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. 有类型脚本

```tsx
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

```tsx
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进行转写

```tsx
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. 独立的例子

```jsx
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` 属性以检测密钥。 这里有一些可以使用的预定义密钥 。 或者,你可以输入任何其它键的整数代码 作为触发器

```jsx
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 国家](https://npmcn.com/package/%40ai4bharat/indic-transliterate/#readme-45-With-External-API-for-transliteration) |

## 6\. 语文

### 6.1. 获得支持的语言

```jsx
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`。 。 。 .
    
-   **缓存结构 :**  
    缓存按语言排列,每种语言都有自己的词典及其建议:
    
    ```javascript
    {
      language-1: {
        word-1: {
          suggestions: string[],
          frequency: number
        },
        word-2: {
          suggestions: string[],
          frequency: number
        },
        word-3: {
          suggestions: string[],
          frequency: number
        },
        ...
      },
      language-2:{
      ...
      },
      ...
    }
    ```
    
-   **快取查询 :**
    
    -   当一个单词被打入时,工具首先在缓存中查找.
    -   如果找到,建议会被取回,频率计数会被递增.
    -   如果找不到,该工具会从API中获取建议,将单词添加到缓存中,并初始化频率计数为 1.
-   **缓存管理 :**
    
    -   缓存限为一万个单词.
    -   当特定语言的缓存超过一万字时,会去掉最常用的词来为新条目提供空间.
-   **示例工作流程 :**
    
    1.  用户开始输入一个单词( 如"你好" ) :
        -   工具检查缓存是否为单词 .
        -   如果找到"你好",则取出建议,并增加频率.
        -   如果找不到"你好",则从API中取出建议,将"你好"加入到缓存中,频率为1.
    2.  缓存大小超过一万字 :
        -   使用最少的词被新词及其建议所取代.
-   **主要惠益:**
    
    -   改进性能:通过对常用单词使用缓存建议来减少API的调用.
    -   适应性缓存:自动调整用户行为,增加常用单词的频数.
    -   高效存储:用得最少的单词被替换,以保持最佳缓存大小.

## 8\. 许可证

麻省理工学院 [ai4 图片](https://github.com/AI4Bharat)

真诚感谢 [布尔汉努日](https://github.com/burhanuday/react-transliterate) 他的工作是开源的!

## 常见问题

### @ai4bharat/indic-transliterate 是什么？

React 的转写组件

### 如何安装 @ai4bharat/indic-transliterate？

在项目目录运行 npm install @ai4bharat/indic-transliterate，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：react（^16\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @ai4bharat/indic-transliterate 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @ai4bharat/indic-transliterate 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @ai4bharat/indic-transliterate 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=10。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @ai4bharat/indic-transliterate 可以商用吗？

@ai4bharat/indic-transliterate 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @ai4bharat/indic-transliterate 的下载量有多少？

根据 npm 官方下载统计，@ai4bharat/indic-transliterate 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,136 次，日均约 71 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @ai4bharat/indic-transliterate 还在维护吗？

最新版本 1\.3\.8 发布于 2024/09/20（2 年前）；至今共发布 25 个版本，其中过去 12 个月发布了 0 个；首次发布于 2022/08/12。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

