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

https://github.com/yosina-lib/yosina

Yosina is a transliteration library deals with the letters and symbols used in Japanese writing.
https://github.com/yosina-lib/yosina

hyphens japanese normalization preprocessing symbols transliteration unicode

Last synced: 26 days ago
JSON representation

Yosina is a transliteration library deals with the letters and symbols used in Japanese writing.

Awesome Lists containing this project

README

          

# Yosinaプロジェクト

- [English](./README.md)

| 言語 | パッケージリポジトリ | インストールコマンド |
|----------|-------------------|-----------------|
| JavaScript/TypeScript | [npm ![@yosina-lib/yosina](https://img.shields.io/npm/v/@yosina-lib/yosina) ](https://www.npmjs.com/package/@yosina-lib/yosina) | `npm install @yosina-lib/yosina` |
| Python | [PyPI ![yosina](https://img.shields.io/pypi/v/yosina)](https://pypi.org/project/yosina/) | `pip install yosina` |
| Rust | [crates.io ![yosina](https://img.shields.io/crates/v/yosina)](https://crates.io/crates/yosina) | `cargo add yosina` |
| Java | [Maven Central ![yosina.io/yosina](https://img.shields.io/maven-central/v/io.yosina/yosina)](https://central.sonatype.com/artifact/io.yosina/yosina) | [クイックスタート](#java)を参照 |
| Ruby | [RubyGems ![yosina](https://img.shields.io/gem/v/yosina)](https://rubygems.org/gems/yosina) | `gem install yosina` |
| Go | [Go Packages ![yosina](https://img.shields.io/badge/pkg.go.dev-reference-007d9c)](https://pkg.go.dev/github.com/yosina-lib/yosina/go) | `go get github.com/yosina-lib/yosina/go` ![github.com/yosina-lib/yosina/go](https://img.shields.io/badge/go.dev-reference-007d9c) |
| PHP | [Packagist ![yosina-lib/yosina](https://img.shields.io/packagist/v/yosina-lib/yosina)](https://packagist.org/packages/yosina-lib/yosina) | `composer require yosina-lib/yosina` |
| C# (.NET) | [NuGet Gallery ![Yosina](https://img.shields.io/nuget/v/Yosina)](https://www.nuget.org/packages/Yosina) | `dotnet add package Yosina` |
| Dart | [pub.dev ![yosina](https://img.shields.io/pub/v/yosina.svg)](https://pub.dev/packages/yosina) | `dart pub add yosina` |
| Swift | Swift Package Manager | [クイックスタート](#swift)を参照 |

## はじめに

Yosinaは、日本語文字に使用される文字や記号を専門的に扱う翻字ライブラリです。日本語は、中国語や英語の文字だけでなく、ドイツ語やフランス語などの様々な文字体系の影響を受けた独特の文字体系を持つ長い歴史があります。また、日本の文字コード体系の標準には非常に複雑な問題があり、Unicodeが広く普及した後でも不確実性を引き起こし続けています。

「Yosina」という名前は、「適切に」「ふさわしく」「あなたが最善と思うように」という意味の古い日本語の副詞「よしなに」から取られています。日本語テキストを扱う開発者は、同じ文字に対してなぜこれほど多くのバリエーションが存在するのかと常に疑問に思い、そのような落とし穴をすべて忘れさせてくれるものがあればと願ったことがあるでしょう。Yosinaは、開発者がそのようなテキストをより適切に処理できる方法となることを願って名付けられました。

## 機能

Yosinaは、次のような様々な日本語テキスト変換を処理できます:

- **半角・全角変換**:半角カタカナや記号を全角に変換し、その逆も可能です。

![変換例](./common/assets/conversion-example1.svg)

![変換例](./common/assets/conversion-example2.svg)

- **視覚的に曖昧な文字の処理**:カタカナ・ひらがなの間のハイフンマイナスを長音記号に文脈的に置き換え、その逆も可能です。

![変換例](./common/assets/conversion-example3.svg)

![変換例](./common/assets/conversion-example4.svg)

- **旧字体から新字体への漢字変換**:旧字体の字形を現代の新字体に変換します。

![変換例](./common/assets/conversion-example5.svg)

- **ひらがな・カタカナ変換**:ひらがなとカタカナの間で双方向に変換し、濁音・半濁音文字を正しく処理します。

- **日本語繰り返し記号の展開**:繰り返し記号(々、ゝ、ゞ、ヽ、ヾ)を前の文字を適切な濁音処理で繰り返すことで展開します。

## 多言語サポート

Yosinaは複数のプログラミング言語で利用可能です:

- **[JavaScript/TypeScript](javascript/)** - 包括的な機能を持つオリジナル実装 (Node.js 22+, 主要ブラウザ, Deno 1.28+)
- **[Python](python/)** - PythonicなインターフェースのPythonポート (Python 3.10+)
- **[Rust](rust/)** - 高性能なRust実装 (Rust 2021 edition以降)
- **[Java](java/)** - Gradleビルドシステムを使用したJava実装 (Java 17+)
- **[Ruby](ruby/)** - Ruby固有のインターフェースを持つRuby実装 (Ruby 2.7+)
- **[Go](go/)** - エラーハンドリングとパフォーマンスに重点を置いたGo実装 (Go 1.21+)
- **[PHP](php/)** - モダンなPHP機能をサポートするPHP実装 (PHP 8.2+)
- **[C#](csharp/)** - .NETサポートとコード生成機能を持つC#実装 (.NET 9.0+)
- **[Swift](swift/)** - Swift Package ManagerをサポートするSwift実装 (Swift 5.0+)
- **[Dart](dart/)** - FlutterおよびDartアプリケーション向けのDart実装 (Dart 3.0+)

## クイックスタート

### JavaScript/TypeScript

```bash
npm install @yosina-lib/yosina
```

```javascript
import { makeTransliterator, TransliterationRecipe } from '@yosina-lib/yosina';

// レシピを使用(推奨)
const recipe: TransliterationRecipe = {
kanjiOldNew: true,
toHalfwidth: true,
replaceSuspiciousHyphensToprolongedSoundMarks: true
};

const transliterator = await makeTransliterator(recipe);
const result = transliterator('日本語のテキスト');
console.log(result);
```

### Python

```bash
pip install yosina
```

```python
from yosina import make_transliterator, TransliterationRecipe

# レシピを使用(推奨)
recipe = TransliterationRecipe(
kanji_old_new=True,
jisx0201_and_alike=True,
replace_suspicious_hyphens_to_prolonged_sound_marks=True
)

transliterator = make_transliterator(recipe)
result = transliterator("日本語のテキスト")
print(result)
```

### Rust

`Cargo.toml`に追加:

```toml
[dependencies]
yosina = "1.0.0"
```

### Java

`build.gradle`に追加:

```gradle
dependencies {
implementation 'io.yosina:yosina:1.0.0'
}
```

```java
import io.yosina.Yosina;
import io.yosina.TransliterationRecipe;
import java.util.function.Function;

// レシピを使用(推奨)
TransliterationRecipe recipe = new TransliterationRecipe()
.withKanjiOldNew(true)
.withCombineDecomposedHiraganasAndKatakanas(true)
.withReplaceSpaces(true);

Function transliterator = Yosina.makeTransliterator(recipe);
String result = transliterator.apply("日本語のテキスト");
System.out.println(result);
```

### Ruby

```bash
gem install yosina
```

```ruby
require 'yosina'

# レシピを使用(推奨)
recipe = Yosina::TransliterationRecipe.new(
kanji_old_new: true,
replace_spaces: true,
replace_suspicious_hyphens_to_prolonged_sound_marks: true
)

transliterator = Yosina.make_transliterator(recipe)
result = transliterator.call("日本語のテキスト")
puts result
```

### Go

```bash
go get github.com/yosina-lib/yosina/go
```

```go
package main

import (
"fmt"
"log"
"github.com/yosina-lib/yosina/go"
)

func main() {
recipe := &yosina.TransliterationRecipe{
ReplaceSpaces: true,
KanjiOldNew: true,
}

transliterator, err := yosina.MakeTransliterator(recipe)
if err != nil {
log.Fatal(err)
}

result, err := transliterator("日本語のテキスト")
if err != nil {
log.Fatal(err)
}

fmt.Println(result)
}
```

### PHP

```bash
composer require yosina-lib/yosina
```

```php