README-Kuriru-moji

Lang::JA::Kana::Kuriru-moji

Documentation:

クリル文字 - Japanese Kana to Cyrillic Transliteration Module

A comprehensive Raku module for converting Japanese Kana (Hiragana and Katakana) to Cyrillic script using various transliteration systems designed for different Slavic languages, Central Asian languages, and usage contexts.

Table of Contents

Features

  • 17 Complete Transliteration Systems with unique linguistic adaptations

  • 85+ System Aliases including native names and ISO codes

  • Academic Standards (Polivanov, GOST, Kontsevich, Soviet)

  • Slavic Language Variants (Russian, Ukrainian, Serbian, Bulgarian, Macedonian, Belarusian)

  • Central Asian Languages (Kazakh, Kyrgyz, Mongolian, Tajik)

  • European Variants (Moldovan Romanian Cyrillic)

  • Gaming & Anime Systems for fan communities

  • Long Vowel Handling with academic notation

  • Sokuon (っ) Processing with consonant doubling

  • Modern Extensions (ファ, ティ, ヴ sounds)

  • Historical Kana Support (ゐゑを)

Installation

# Install from ecosystem
zef install Lang::JA::Kana

# Or clone and install locally
git clone https://github.com/your-repo/lang-ja-kana.git
cd lang-ja-kana
zef install .

Quick Start

use Lang::JA::Kana::Kuriru-moji;

# Basic usage (Polivanov system - default)
say to-kuriru-moji("こんにちは");           # конничиха
say to-kuriru-moji("とうきょうです");       # то:кё:дэсу

# Different systems
say to-kuriru-moji("しんぶん", :system<phonetic>);    # шинбун
say to-kuriru-moji("とうきょう", :system<static>);     # тоукёу
say to-kuriru-moji("ナルト", :system<anime>);          # наруто

# Language variants
say to-kuriru-moji("さくら", :system<ukrainian>);      # сакура
say to-kuriru-moji("さくら", :system<serbian>);        # сакура
say to-kuriru-moji("さくら", :system<macedonian>);     # сакура

Transliteration Systems

Russian Academic & Historical Systems

SystemDescriptionKey Features
Polivanov (default)Academic standardLong vowel marks (:), し→си, じゃ→дзя
PhoneticIntuitive for Russian speakersし→ши, じゃ→джя, ち→чи
StaticSimplified, no diacriticalsっ→(empty), ー→(empty)
GOST 7.79-2000Official Russian standardBased on Polivanov with modifications
Soviet TextbookEducational standardPhonetic base with textbook conventions
KontsevichAcademic transliterationち→ти, し→си with long vowels
Pre-revolutionary (ru-petr1708)Historical RussianUses і, ѣ, ѳ characters

Gaming & Entertainment Systems

SystemAliasesDescription
Anime-Mangaanime, fan, anime-manga-fanPopular in fan communities
Gaminggame, gaming-communityUsed in gaming contexts

Slavic Language Variants

LanguageAliasesUnique Features
Ukrainianukraine, ukraina, ua, ukr, ukі instead of и, specific consonants
Serbianserbia, srbija, sr, srb, serubijaџ (dzhe) character
Bulgarianbulgaria, balgarija, bg, bgrPhonetic base adaptation
Macedonianmacedonia, makedonija, mk, makedonia*ќ (gje), ѓ (kje), џ (dzhe)
Belarusianbelarus, belaruskaja, be, berarushi*ў (short u), чы/шы/жы

Central Asian Languages

LanguageAliasesUnique Features
Kazakhkazakhstan, qazaqstan, kz, kazafusutan*ұ (barred u), ғ (ghayn), ө (barred o)
Kyrgyzkyrgyzstan, qyrgyz, ky, kirugisutan*ү (straight u), ө (barred o), ң (eng)
Mongolianmongolia, mongol, mn, mongoru*ү (straight u), ө (barred o)
Tajiktajikistan, tojikiston, tj, tajiiku*ғ, қ, ҳ, ҷ Persian-adapted letters

European Variants

LanguageAliasesUnique Features
Moldovanmoldova, romanian-cyrillic, md, morudoba*Romanian phonology in Cyrillic

*Asterisk indicates Japanese-based romaji aliases

Usage Examples

Basic Conversion

use Lang::JA::Kana::Kuriru-moji;

# Hiragana
say to-kuriru-moji("ひらがな");        # хирагана

# Katakana  
say to-kuriru-moji("カタカナ");        # катакана

# Mixed text (non-kana passed through)
say to-kuriru-moji("Hello こんにちは World");  # Hello конничиха World

System Comparisons

my $word = "じゃじゅじょ";

say "Polivanov: " ~ to-kuriru-moji($word, :system<polivanov>);  # дзядзюдзё
say "Phonetic:  " ~ to-kuriru-moji($word, :system<phonetic>);   # джяджюджё
say "Static:    " ~ to-kuriru-moji($word, :system<static>);     # зязюзё

Long Vowels

# Polivanov system uses colons for long vowels
say to-kuriru-moji("がっこう", :system<polivanov>);    # гакко:
say to-kuriru-moji("とうきょう", :system<polivanov>);   # то:кё:

# Static system keeps individual sounds
say to-kuriru-moji("がっこう", :system<static>);       # гаккоу
say to-kuriru-moji("とうきょう", :system<static>);      # тоукёу

Language-Specific Features

# Ukrainian uses і instead of и
say to-kuriru-moji("きみ", :system<ukrainian>);         # кімі

# Belarusian uses ў for certain sounds
say to-kuriru-moji("うた", :system<belarusian>);        # ўта

# Macedonian uses unique letters
say to-kuriru-moji("きけ", :system<macedonian>);        # ќиќе

# Tajik uses Persian-adapted letters
say to-kuriru-moji("かが", :system<tajik>);             # қаға

Modern Extensions

# Foreign sound adaptations
say to-kuriru-moji("ファイル", :system<phonetic>);      # фаиру
say to-kuriru-moji("ティーム", :system<phonetic>);      # тиーму
say to-kuriru-moji("ヴァイオリン", :system<phonetic>);  # ваиорин

System Aliases

Complete Alias Reference

Academic Systems:

  • polivanov, academic

  • phonetic, intuitive

  • static, simple

  • gost2000, gost-7.79-2000

  • soviet, soviet-textbook

  • kontsevich

  • ru-petr1708

Entertainment:

  • anime-manga, anime-manga-fan, anime, fan

  • gaming, gaming-community, game

Ukrainian:

  • ukrainian, ukraine, ukraina, ukrainski, ukuraina, ua, ukr, uk

Serbian:

  • serbian, serbia, srbija, srbski, serubija, sr, srb

Bulgarian:

  • bulgarian, bulgaria, balgarija, balgarski, burugarija, burugariya, bg, bgr

Macedonian:

  • macedonian, macedonia, makedonija, makedonski, makedonia, mazedoniya, mk, mkd

Belarusian:

  • belarusian, belarus, belaruskaja, belaruski, berarushi, be, blr

Kazakh:

  • kazakh, kazakhstan, qazaqstan, qazaq, kazafusutan, kz, kaz

Kyrgyz:

  • kyrgyz, kyrgyzstan, qyrgyzstan, qyrgyz, kirugisutan, ky, kgz

Mongolian:

  • mongolian, mongolia, mongol, mongolski, mongoru, mn, mng

Tajik:

  • tajik, tajikistan, tojikiston, tojik, tajiiku, tj, tjk

Moldovan:

  • moldovan, moldova, romanian-cyrillic, moldavia, morudoba, md, mol

Advanced Features

Sokuon (っ) Handling

The module properly handles small tsu (っ/ッ) by doubling the following consonant:

say to-kuriru-moji("がっこう");     # гакко: (doubled к)
say to-kuriru-moji("ちょっと");     # тётто (doubled т)
say to-kuriru-moji("いっぱい");     # иппаи (doubled п)

Long Vowel Processing

Academic systems use colon notation for long vowels:

# ー (chōonpu) extension
say to-kuriru-moji("ラーメン", :system<polivanov>);  # ра:мэн

# Vowel doubling
say to-kuriru-moji("おおきい", :system<polivanov>);  # о:ки:

# ou → о: pattern
say to-kuriru-moji("とうきょう", :system<polivanov>); # то:кё:

Historical Kana Support

# Pre-war kana
say to-kuriru-moji("ゐゑを");       # вивэо
say to-kuriru-moji("ゔぁゔぃ");     # вави

# Old forms
say to-kuriru-moji("ゑいが", :system<ru-petr1708>);  # вѣига (with historical ѣ)

Mixed Content Handling

Non-kana characters pass through unchanged:

say to-kuriru-moji("彼はにほんじんです");       # 彼ханихондзиндэсу
say to-kuriru-moji("Email: [email protected]"); # Email: [email protected]
say to-kuriru-moji("価格:せんえん");          # 価格:сэнэн

API Reference

Main Function

sub to-kuriru-moji(Str $text, Str :$system = 'polivanov') is export

Parameters:

  • $text - Input text containing Japanese kana

  • :$system - Transliteration system (default: 'polivanov')

Returns: String with kana converted to Cyrillic

Example:

my $result = to-kuriru-moji("こんにちは", :system<phonetic>);

Error Handling

Unknown systems will cause the function to die with an error message:

# This will die
to-kuriru-moji("test", :system<unknown>);
# Unknown transliteration system: unknown. Use 'polivanov', 'phonetic', 'static', etc.

Integration with Main Module

This module is part of the larger Lang::JA::Kana package:

use Lang::JA::Kana;

# Direct access
say kana-to-kuriru-moji("こんにちは");
say kana-to-kuriru-moji("さくら", :system<ukrainian>);

# Or use submodule directly
use Lang::JA::Kana::Kuriru-moji;
say to-kuriru-moji("こんにちは");

Performance Considerations

  • Character conversion uses hash lookups (O(1) per character)

  • Multi-character combinations are processed longest-first

  • Post-processing variants are applied efficiently

  • Memory usage scales with input text length

Character Coverage

Supported Kana

Hiragana: All standard hiragana including:

  • Basic syllabary (あ-ん)

  • Voiced marks (が-ぽ)

  • Combinations (きゃ-ぴょ)

  • Small variants (ぁ-ゎ)

  • Historical forms (ゐゑゔ)

  • Modern extensions (ふぁ-ヴォ)

Katakana: Complete katakana coverage including:

  • Basic syllabary (ア-ン)

  • Voiced marks (ガ-ポ)

  • Combinations (キャ-ピョ)

  • Small variants (ァ-ヮ)

  • Long vowel mark (ー)

  • Foreign adaptations (ファ-ヴォ)

Unsupported Content

  • Kanji: Passed through unchanged

  • Latin alphabet: Passed through unchanged

  • Numbers: Passed through unchanged

  • Punctuation: Passed through unchanged

  • Half-width katakana: Must be converted to full-width first

Linguistic Notes

System Design Philosophy

Each transliteration system reflects different priorities:

  • Academic systems prioritize linguistic accuracy and reversibility

  • Phonetic systems prioritize intuitive pronunciation for speakers

  • Static systems prioritize simplicity and consistency

  • Language variants adapt to specific Cyrillic alphabets and phonologies

Regional Adaptations

Language-specific variants account for:

  • Unique letters (ў, ө, ғ, ќ, etc.)

  • Phonological differences (palatalization patterns)

  • Orthographic conventions (soft/hard signs usage)

  • Historical developments (alphabet reforms)

Testing

The module includes comprehensive tests:

# Run basic tests
raku t/01-basic.t

# Test all systems
raku test-systems.raku

# Test new systems specifically  
raku test-new-systems.raku

Examples Gallery

Poetry Translation

my $haiku = "ふるいけや\nかえるとびこむ\nみずのおと";
say to-kuriru-moji($haiku, :system<polivanov>);
# фуруикэя
# каэрутобикому
# мидзуно:то

Anime/Manga Names

say to-kuriru-moji("ナルト", :system<anime>);        # наруто
say to-kuriru-moji("セーラームーン", :system<anime>); # серамун
say to-kuriru-moji("ピカチュウ", :system<gaming>);   # пикатюу

Geographic Names

say to-kuriru-moji("とうきょう", :system<static>);   # тоукёу
say to-kuriru-moji("おおさか", :system<static>);     # оосака
say to-kuriru-moji("ひろしま", :system<polivanov>);  # хиросима

Technical Terms

say to-kuriru-moji("コンピューター", :system<phonetic>); # конпюта
say to-kuriru-moji("インターネット", :system<static>);   # интанетто
say to-kuriru-moji("テクノロジー", :system<polivanov>);  # тэкунородзи:

Contributing

Contributions are welcome. Please visit the project repository at:https://github.com/slavenskoj/raku-lang-ja-kana

We apologize for any errors and welcome suggestions for improvements.

License

This library is free software; you can redistribute it and/or modify it under the Artistic License 2.0.

See Also

Authors

Danslav Slavenskoj

Lang::JA::Kana v1.2.1

Japanese Hiragana and Katakana conversion utilities

Authors

  • Danslav Slavenskoj

License

Artistic-2.0

Dependencies

Test Dependencies

Provides

  • Lang::JA::Kana
  • Lang::JA::Kana::Hangul
  • Lang::JA::Kana::Kuriru-moji
  • Lang::JA::Kana::Romaji

The Camelia image is copyright 2009 by Larry Wall. "Raku" is trademark of the Yet Another Society. All rights reserved.