An open API service indexing awesome lists of open source software.

https://github.com/crizmo/japanese-easy

A comprehensive toolkit for learning and working with Japanese Kanji, Kana, and vocabulary data, complete with charts, readings, and utility functions.
https://github.com/crizmo/japanese-easy

hiragana japanese japanese-language jlpt kana kanji katakana language-resources npm reading vocabulary

Last synced: 6 months ago
JSON representation

A comprehensive toolkit for learning and working with Japanese Kanji, Kana, and vocabulary data, complete with charts, readings, and utility functions.

Awesome Lists containing this project

README

          

# Japanese-easy

`japanese-easy` is a utility package designed to make it easier to work with Japanese Kana and Kanji data. This package provides functions for fetching Kanji and Kana information, converting Kanji to Kana, retrieving Kanji lists, and accessing Hiragana and Katakana charts.

## Features

- Lookup Kanji data, including meanings, readings, and more.
- Lookup Kana (Hiragana/Katakana) details.
- Convert Kanji to Kana for better understanding of pronunciation.
- Retrieve a list of Kanji based on grades or other filters.
- Access complete Hiragana and Katakana charts.
- Lookup specific words and their meanings.
- Lookup random words or words by JLPT level.
- Retrieve all available words, optionally filtered by level.

---

## Installation

Install the package via npm:

```bash
npm install japanese-easy
```

---

## Usage

Here are examples of how to use the `japanese-easy` package:

### Importing the Package

```javascript
import * as japanese_easy from 'japanese-easy';
```

### Lookup Kanji Data

```javascript
japanese_easy.lookupKanji('猫').then(data => {
console.log("Result from lookupKanji:", data);
});
```

### Lookup Kana Data

```javascript
japanese_easy.lookupKana('あ').then(data => {
console.log("Result from lookupKana:", data);
});
```

### Convert Kanji to Kana

```javascript
japanese_easy.convertKanjiToKana('猫').then(data => {
console.log("Result from convertKanjiToKana:", data);
});
```

### Lookup Kanji List

```javascript
japanese_easy.lookupKanjiList('grade-1').then(data => {
console.log("Result from lookupKanjiList:", data);
});
```

### Get Hiragana Chart

```javascript
japanese_easy.getHiraganaChart().then(data => {
console.log("Result from getHiraganaChart:", data);
});
```

### Get Katakana Chart

```javascript
japanese_easy.getKatakanaChart().then(data => {
console.log("Result from getKatakanaChart:", data);
});
```

### Lookup Specific Word

```javascript
japanese_easy.lookupWord('夜更かし').then(data => {
console.log("Result from lookupWord:", data);
});
```

### Lookup Words by JLPT Level

```javascript
japanese_easy.lookupWordsByLevel(3).then(data => {
console.log("Result from lookupWordsByLevel (N3):", data);
});
```

### Lookup Random Word

```javascript
japanese_easy.lookupRandomWord().then(data => {
console.log("Result from lookupRandomWord:", data);
});
```

### Lookup Random Word by Level

```javascript
japanese_easy.lookupRandomWord(1).then(data => {
console.log("Result from lookupRandomWord (N1):", data);
});
```

### Lookup All Words

```javascript
japanese_easy.lookupAllWords().then(data => {
console.log("Result from lookupAllWords:", data);
});
```

### Fetch All Words by Level

```javascript
japanese_easy.lookupAllWords(3).then(data => {
console.log("Result from lookupAllWords (N3):", data);
});
```

---

## API Reference

### `lookupKanji(kanji: string): Promise`
Fetches detailed information about a given Kanji.

- **Parameter:** `kanji` - The Kanji character to lookup.
- **Returns:** A Promise resolving to Kanji data.

---

### `lookupKana(kana: string): Promise`
Fetches information about a given Kana (Hiragana or Katakana).

- **Parameter:** `kana` - The Kana character to lookup.
- **Returns:** A Promise resolving to Kana data.

---

### `convertKanjiToKana(text: string): Promise`
Converts a string of Kanji into Kana for better pronunciation.

- **Parameter:** `text` - A string containing Kanji.
- **Returns:** A Promise resolving to the Kana equivalent.

---

### `lookupKanjiList(filter: string): Promise`
Fetches a list of Kanji based on a specified filter (e.g., grade level).

#### Available Parameters for `lookupKanjiList`

The `lookupKanjiList` function supports the following categories as parameters:

- `joyo` or `jouyou`: List of Jōyō Kanji.
- `jinmeiyo` or `jinmeiyou`: List of Jinmeiyō Kanji.
- `heisig`: List of Kanji with a Heisig keyword.
- `kyouiku` or `kyouiku`: List of all Kyōiku Kanji.
- `grade-1`: List of Grade 1 Kyōiku Kanji.
- `grade-2`: List of Grade 2 Kyōiku Kanji.
- `grade-3`: List of Grade 3 Kyōiku Kanji.
- `grade-4`: List of Grade 4 Kyōiku Kanji.
- `grade-5`: List of Grade 5 Kyōiku Kanji.
- `grade-6`: List of Grade 6 Kyōiku Kanji.
- `grade-8`: List of Jōyō Kanji excluding Kyōiku Kanji.
- `all`: List of all 13,000+ available Kanji.

- **Parameter:** `filter` - A string filter such as "grade-1".
- **Returns:** A Promise resolving to an array of Kanji.

---

### `lookupWord(word: string): Promise`
Fetches detailed information about a specific word.

- **Parameter:** `word` - The word to lookup.
- **Returns:** A Promise resolving to word data.

---

### `lookupWordsByLevel(level: number): Promise`
Fetches words by their JLPT level.

- **Parameter:** `level` - The JLPT level (e.g., 1, 2, 3, 4, 5).
- **Returns:** A Promise resolving to an array of words.

---

### `lookupRandomWord(level?: number): Promise`
Fetches a random word, optionally filtered by JLPT level.

- **Parameter:** `level` - The JLPT level (optional).
- **Returns:** A Promise resolving to a random word.

---

### `lookupAllWords(level?: number): Promise`
Fetches all available words, optionally filtered by JLPT level.

- **Parameter:** `level` - The JLPT level (optional).
- **Returns:** A Promise resolving to an array of words.

---

### `getHiraganaChart(): Promise`
Fetches the complete Hiragana chart.

- **Returns:** A Promise resolving to a Hiragana chart object.

---

### `getKatakanaChart(): Promise`
Fetches the complete Katakana chart.

- **Returns:** A Promise resolving to a Katakana chart object.

---

## Scripts

### Running Tests

To run tests for the package, use:

```bash
npm run test
```

This will execute the `tests/core.js` file.

---

## Japanese Easy Website
For more information, visit the [Japanese Easy](https://japanese-easy.vercel.app/) website.

---

## Contributing

Contributions are welcome! If you have suggestions or find bugs, feel free to open an issue or submit a pull request on [GitHub](https://github.com/crizmo/japanese-easy).

---

## Issues

If you encounter any problems, please report them at the [issues page](https://github.com/crizmo/japanese-easy/issues).

---

## License

This project is licensed under the MIT License. See the [LICENSE](https://github.com/crizmo/japanese-easy/blob/main/LICENSE) file for details.

---

## Author

Developed by **Kurizu**.

- GitHub: [@crizmo](https://github.com/crizmo)

---

## Links

- [Repository](https://github.com/crizmo/japanese-easy)
- [Issues](https://github.com/crizmo/japanese-easy/issues)
- [Homepage](https://github.com/crizmo/japanese-easy#readme)