README-Kuriru-moji-ru
Lang::JA::Kana::Kuriru-moji
Документация:
Модуль транслитерации японской каны в кириллицу
Комплексный модуль Raku для конвертации японской каны (хирагана и катакана) в кириллическое письмо с использованием различных систем транслитерации, разработанных для славянских языков, среднеазиатских языков и различных контекстов использования.
Содержание
Возможности
17 полных систем транслитерации с уникальными лингвистическими адаптациями
85+ псевдонимов систем, включая родные названия и ISO-коды
Академические стандарты (Поливанов, ГОСТ, Концевич, советская)
Варианты для славянских языков (русский, украинский, сербский, болгарский, македонский, белорусский)
Среднеазиатские языки (казахский, киргизский, монгольский, таджикский)
Европейские варианты (молдавский румынский на кириллице)
Игровые и аниме системы для фан-сообществ
Обработка долгих гласных с академической нотацией
Обработка сокуон (っ) с удвоением согласных
Современные расширения (звуки ファ, ティ, ヴ)
Поддержка исторической каны (ゐゑを)
Установка
# Установка из экосистемы
zef install Lang::JA::Kana
# Или клонирование и локальная установка
git clone https://github.com/your-repo/lang-ja-kana.git
cd lang-ja-kana
zef install .Быстрый старт
use Lang::JA::Kana::Kuriru-moji;
# Базовое использование (система Поливанова - по умолчанию)
say to-kuriru-moji("こんにちは"); # конничиха
say to-kuriru-moji("とうきょうです"); # то:кё:дэсу
# Различные системы
say to-kuriru-moji("しんぶん", :system<phonetic>); # шинбун
say to-kuriru-moji("とうきょう", :system<static>); # тоукёу
say to-kuriru-moji("ナルト", :system<anime>); # наруто
# Языковые варианты
say to-kuriru-moji("さくら", :system<ukrainian>); # сакура
say to-kuriru-moji("さくら", :system<serbian>); # сакура
say to-kuriru-moji("さくら", :system<macedonian>); # сакураСистемы транслитерации
Русские академические и исторические системы
| Система | Описание | Ключевые особенности |
|---|---|---|
| Поливанов (по умолчанию) | Академический стандарт | Обозначения долгих гласных (:), し→си, じゃ→дзя |
| Phonetic | Интуитивная для русскоязычных | し→ши, じゃ→джя, ち→чи |
| Static | Упрощённая, без диакритиков | っ→(пусто), ー→(пусто) |
| ГОСТ 7.79-2000 | Официальный российский стандарт | На основе Поливанова с модификациями |
| Советская учебная | Образовательный стандарт | Фонетическая основа с учебными конвенциями |
| Концевич | Академическая транслитерация | ち→ти, し→си с долгими гласными |
| Дореволюционная (ru-petr1708) | Историческая русская | Использует символы і, ѣ, ѳ |
Игровые и развлекательные системы
| Система | Псевдонимы | Описание |
|---|---|---|
| Аниме-манга | anime, fan, anime-manga-fan | Популярна в фан-сообществах |
| Игровая | game, gaming-community | Используется в игровых контекстах |
Варианты для славянских языков
| Язык | Псевдонимы | Уникальные особенности |
|---|---|---|
| Украинский | ukraine, ukraina, ua, ukr, uk | і вместо и, специфические согласные |
| Сербский | serbia, srbija, sr, srb, serubija | Символ џ (дже) |
| Болгарский | bulgaria, balgarija, bg, bgr | Адаптация фонетической основы |
| Македонский | macedonia, makedonija, mk, makedonia* | ќ (гье), ѓ (кье), џ (дже) |
| Белорусский | belarus, belaruskaja, be, berarushi* | ў (краткое у), чы/шы/жы |
Среднеазиатские языки
| Язык | Псевдонимы | Уникальные особенности |
|---|---|---|
| Казахский | kazakhstan, qazaqstan, kz, kazafusutan* | ұ (у с чертой), ғ (гайн), ө (о с чертой) |
| Киргизский | kyrgyzstan, qyrgyz, ky, kirugisutan* | ү (прямое у), ө (о с чертой), ң (энг) |
| Монгольский | mongolia, mongol, mn, mongoru* | ү (прямое у), ө (о с чертой) |
| Таджикский | tajikistan, tojikiston, tj, tajiiku* | ғ, қ, ҳ, ҷ персидско-адаптированные буквы |
Европейские варианты
| Язык | Псевдонимы | Уникальные особенности |
|---|---|---|
| Молдавский | moldova, romanian-cyrillic, md, morudoba* | Румынская фонология на кириллице |
*Звёздочка обозначает псевдонимы на основе японской ромадзи
Примеры использования
Базовая конвертация
use Lang::JA::Kana::Kuriru-moji;
# Хирагана
say to-kuriru-moji("ひらがな"); # хирагана
# Катакана
say to-kuriru-moji("カタカナ"); # катакана
# Смешанный текст (не-кана проходит без изменений)
say to-kuriru-moji("Hello こんにちは World"); # Hello конничиха WorldСравнение систем
my $word = "じゃじゅじょ";
say "Поливанов: " ~ to-kuriru-moji($word, :system<polivanov>); # дзядзюдзё
say "Фонетическая: " ~ to-kuriru-moji($word, :system<phonetic>); # джяджюджё
say "Статическая: " ~ to-kuriru-moji($word, :system<static>); # зязюзёДолгие гласные
# Система Поливанова использует двоеточия для долгих гласных
say to-kuriru-moji("がっこう", :system<polivanov>); # гакко:
say to-kuriru-moji("とうきょう", :system<polivanov>); # то:кё:
# Статическая система сохраняет отдельные звуки
say to-kuriru-moji("がっこう", :system<static>); # гаккоу
say to-kuriru-moji("とうきょう", :system<static>); # тоукёуЯзыково-специфические особенности
# Украинский использует і вместо и
say to-kuriru-moji("きみ", :system<ukrainian>); # кімі
# Белорусский использует ў для определённых звуков
say to-kuriru-moji("うた", :system<belarusian>); # ўта
# Македонский использует уникальные буквы
say to-kuriru-moji("きけ", :system<macedonian>); # ќиќе
# Таджикский использует персидско-адаптированные буквы
say to-kuriru-moji("かが", :system<tajik>); # қағаСовременные расширения
# Адаптации иностранных звуков
say to-kuriru-moji("ファイル", :system<phonetic>); # фаиру
say to-kuriru-moji("ティーム", :system<phonetic>); # тиму
say to-kuriru-moji("ヴァイオリン", :system<phonetic>); # ваиоринПсевдонимы систем
Полный справочник псевдонимов
Академические системы:
polivanov,academicphonetic,intuitivestatic,simplegost2000,gost-7.79-2000soviet,soviet-textbookkontsevichru-petr1708
Развлекательные:
anime-manga,anime-manga-fan,anime,fangaming,gaming-community,game
Украинский:
ukrainian,ukraine,ukraina,ukrainski,ukuraina,ua,ukr,uk
Сербский:
serbian,serbia,srbija,srbski,serubija,sr,srb
Болгарский:
bulgarian,bulgaria,balgarija,balgarski,burugarija,burugariya,bg,bgr
Македонский:
macedonian,macedonia,makedonija,makedonski,makedonia,mazedoniya,mk,mkd
Белорусский:
belarusian,belarus,belaruskaja,belaruski,berarushi,be,blr
Казахский:
kazakh,kazakhstan,qazaqstan,qazaq,kazafusutan,kz,kaz
Киргизский:
kyrgyz,kyrgyzstan,qyrgyzstan,qyrgyz,kirugisutan,ky,kgz
Монгольский:
mongolian,mongolia,mongol,mongolski,mongoru,mn,mng
Таджикский:
tajik,tajikistan,tojikiston,tojik,tajiiku,tj,tjk
Молдавский:
moldovan,moldova,romanian-cyrillic,moldavia,morudoba,md,mol
Расширенные возможности
Обработка сокуон (っ)
Модуль правильно обрабатывает малое цу (っ/ッ), удваивая следующий согласный:
say to-kuriru-moji("がっこう"); # гакко: (удвоенное к)
say to-kuriru-moji("ちょっと"); # тётто (удвоенное т)
say to-kuriru-moji("いっぱい"); # иппаи (удвоенное п)Обработка долгих гласных
Академические системы используют нотацию с двоеточием для долгих гласных:
# Расширение ー (тё:омпу)
say to-kuriru-moji("ラーメン", :system<polivanov>); # ра:мэн
# Удвоение гласных
say to-kuriru-moji("おおきい", :system<polivanov>); # о:ки:
# Образец ou → о:
say to-kuriru-moji("とうきょう", :system<polivanov>); # то:кё:Поддержка исторической каны
# Довоенная кана
say to-kuriru-moji("ゐゑを"); # вивэо
say to-kuriru-moji("ゔぁゔぃ"); # вави
# Старые формы
say to-kuriru-moji("ゑいが", :system<ru-petr1708>); # вѣига (с историческим ѣ)Обработка смешанного контента
Символы, не являющиеся каной, проходят без изменений:
say to-kuriru-moji("彼はにほんじんです"); # 彼ханихондзиндэсу
say to-kuriru-moji("Email: [email protected]"); # Email: [email protected]
say to-kuriru-moji("価格:せんえん"); # 価格:сэнэнСправочник API
Основная функция
sub to-kuriru-moji(Str $text, Str :$system = 'polivanov') is exportПараметры:
$text- Входной текст, содержащий японскую кану:$system- Система транслитерации (по умолчанию: 'polivanov')
Возвращает: Строку с каной, конвертированной в кириллицу
Пример:
my $result = to-kuriru-moji("こんにちは", :system<phonetic>);Обработка ошибок
Неизвестные системы приведут к прекращению работы функции с сообщением об ошибке:
# Это приведёт к ошибке
to-kuriru-moji("test", :system<unknown>);
# Unknown transliteration system: unknown. Use 'polivanov', 'phonetic', 'static', etc.Интеграция с основным модулем
Этот модуль является частью более крупного пакета Lang::JA::Kana:
use Lang::JA::Kana;
# Прямой доступ
say kana-to-kuriru-moji("こんにちは");
say kana-to-kuriru-moji("さくら", :system<ukrainian>);
# Или использование подмодуля напрямую
use Lang::JA::Kana::Kuriru-moji;
say to-kuriru-moji("こんにちは");Покрытие символов
Поддерживаемая кана
Хирагана: Вся стандартная хирагана, включая:
Базовый слоговой состав (あ-ん)
Звонкие знаки (が-ぽ)
Комбинации (きゃ-ぴょ)
Малые варианты (ぁ-ゎ)
Исторические формы (ゐゑゔ)
Современные расширения (ふぁ-ヴォ)
Катакана: Полное покрытие катаканы, включая:
Базовый слоговой состав (ア-ン)
Звонкие знаки (ガ-ポ)
Комбинации (キャ-ピョ)
Малые варианты (ァ-ヮ)
Знак долгого гласного (ー)
Адаптации иностранных звуков (ファ-ヴォ)
Неподдерживаемое содержание
Кандзи: Проходят без изменений
Латинский алфавит: Проходит без изменений
Числа: Проходят без изменений
Пунктуация: Проходит без изменений
Катакана половинной ширины: Должна быть сначала конвертирована в полную ширину
Лингвистические заметки
Философия дизайна систем
Каждая система транслитерации отражает различные приоритеты:
Академические системы приоритизируют лингвистическую точность и обратимость
Фонетические системы приоритизируют интуитивное произношение для носителей
Статические системы приоритизируют простоту и согласованность
Языковые варианты адаптируются к специфическим кириллическим алфавитам и фонологиям
Региональные адаптации
Языково-специфические варианты учитывают:
Уникальные буквы (ў, ө, ғ, ќ и т.д.)
Фонологические различия (образцы палатализации)
Орфографические конвенции (использование мягких/твёрдых знаков)
Исторические развития (реформы алфавита)
Тестирование
Модуль включает комплексные тесты:
# Запуск базовых тестов
raku t/01-basic.t
# Тестирование всех систем
raku test-systems.raku
# Тестирование новых систем специально
raku test-new-systems.rakuСоображения производительности
Конвертация символов использует хеш-поиск (O(1) на символ)
Многосимвольные комбинации обрабатываются от самых длинных к самым коротким
Варианты постобработки применяются эффективно
Использование памяти масштабируется с длиной входного текста
Галерея примеров
Перевод поэзии
my $haiku = "ふるいけや\nかえるとびこむ\nみずのおと";
say to-kuriru-moji($haiku, :system<polivanov>);
# фуруикэя
# каэрутобикому
# мидзуно:тоИмена из аниме/манги
say to-kuriru-moji("ナルト", :system<anime>); # наруто
say to-kuriru-moji("セーラームーン", :system<anime>); # серамун
say to-kuriru-moji("ピカチュウ", :system<gaming>); # пикатюуГеографические названия
say to-kuriru-moji("とうきょう", :system<static>); # тоукёу
say to-kuriru-moji("おおさか", :system<static>); # оосака
say to-kuriru-moji("ひろしま", :system<polivanov>); # хиросимаТехнические термины
say to-kuriru-moji("コンピューター", :system<phonetic>); # конпюта
say to-kuriru-moji("インターネット", :system<static>); # интанетто
say to-kuriru-moji("テクノロジー", :system<polivanov>); # тэкунородзи:Участие в разработке
Мы приветствуем участие в разработке. Пожалуйста, посетите репозиторий проекта:https://github.com/slavenskoj/raku-lang-ja-kana
Приносим извинения за возможные ошибки и приветствуем предложения по улучшению.
Лицензия
Эта библиотека является свободным программным обеспечением; вы можете распространять её и/или модифицировать в соответствии с Художественной лицензией 2.0.
См. также
Lang::JA::Kana - Документация основного модуля
Lang::JA::Kana::Romaji - Романизация
Lang::JA::Kana::Hangul - Транслитерация в хангыль
Стандарт Unicode - Блок хирагана
Стандарт Unicode - Блок катакана
Авторы
Данслав Славенской