--- :transforms: - :aliases: - Latin-Katakana - und-Kana-t-und-latn :direction: both :rules: - ":: [[ᄀ-ᄒᄚᄡ\\u1160-ᅵᆪᆬ-ᆭᆰ-ᆵ<-↓│■○\\u3000-。「-」゙-゚ァ-ロワヲ-ヴヷヺ-ー!-~¢-₩][',.A-Za-z~À-ÖØ-öø-ďĒ-ĥĨ-İĴ-ķĹ-ľŃ-ňŌ-őŔ-ťŨ-žƠ-ơƯ-ưǍ-ǜǞ-ǣǦ-ǭǰǴ-ǵǸ-țȞ-ȟȦ-ȳ̄Ӣ-ӣӮ-ӯḀ-ẙẠ-ỹᾱᾹῑῙῡῩK-Å]] ;" - ":: [:Latin:] fullwidth-halfwidth ();" - ":: NFD (NFC);" - ":: Lower (); # whenever transliterating from cased to uncased script, include this" - "$vowel = [aeiou] ;" - "$consonant = [bcdfghjklmnpqrstvwxyz] ;" - "$macron = ̄ ;" - "$kana = [ぁ-ゔ] ;" - "$voice = [゙゛];" - "$semivoice = [゚゜];" - "$k_start = [カキクケコかきくけこ] ;" - "$s_start = [サシスセソさしすせそ] ;" - "$j_start = [シし] $voice ;" - "$t_start = [タチツテトたちつてと] ;" - "$n_start = [ナニヌネノンなにぬねの] ;" - "$h_start = [ハヒヘホはひへほ] ;" - "$f_start = [フふ] ;" - "$m_start = [マミムメモまみむめも] ;" - "$y_start = [ヤユヨやゆよ] ;" - "$r_start = [ラリルレロらりるれろ] ;" - "$w_start = [ワヰヱヲわゐゑを] ;" - "$v_start = [ワヰヱヲ]゙ ;" - "$voweled_basekana = [ァ-オカキクケコサシスセソタチッツテトナ-ノハヒフヘホマ-ヲヵヶ] ;" - "$n_quoter = [ア イ ウ エ オ ナ ニ ヌ ネ ノ ヤ ユ ヨ ン] ;" - "$small_y = [ャィュェョ] ;" - "$iteration = ゝ ;" - "'.' <> 。;" - "',' <> 、;" - "va <> ヷ ;" - "vi <> ヸ ;" - "ve <> ヹ ;" - "vo <> ヺ ;" - "'~ka' <> ヵ ;" - "'~ke' <> ヶ ;" - "ya < '~'ャ;" - "yi < '~'ィ ;" - "yu < '~'ュ;" - "ye < '~'ェ;" - "yo < '~'ョ;" - "a <> ア ;" - "b | '~' < ヒ ゙} $small_y ;" - "by } $vowel > ビ | '~y' ;" - "ba <> バ ;" - "bi <> ビ ;" - "bu <> ブ ;" - "be <> ベ ;" - "bo <> ボ ;" - "c } i > | s ;" - "c } e > | s ;" - "da <> ダ ;" - "di <> ディ ;" - "du <> デゥ ;" - "de <> デ ;" - "do <> ド ;" - "dzu <> ヅ ;" - "dja < ヂャ ;" - "dji'~i' < ヂィ ; # liu" - "dju < ヂュ ;" - "dje < ヂェ ;" - "djo < ヂョ ;" - "dji <> ヂ ;" - "dj } $vowel > ヂ | '~y' ;" - "cha < チャ ;" - "chi'~i' < チィ ; # liu" - "chu < チュ ;" - "che < チェ ;" - "cho < チョ ;" - "chi <> チ ;" - "ch } $vowel > チ | '~y' ;" - "e <> エ ;" - "g | '~' < ギ} $small_y ;" - "gy } $vowel > ギ | '~y' ;" - "ga <> ガ ;" - "gi <> ギ ;" - "gu <> グ ;" - "ge <> ゲ ;" - "go <> ゴ ;" - "i <> イ ;" - "ja <> ジャ ;" - "ji'~i' < ジィ ; # liu" - "ju <> ジュ ;" - "je <> ジェ ;" - "jo <> ジョ ;" - "ji <> ジ ;" - "k | '~' < キ} $small_y ;" - "ky } $vowel > キ | '~y' ;" - "ka <> カ ;" - "ki <> キ ;" - "ku <> ク ;" - "ke <> ケ ;" - "ko <> コ ;" - "m | '~' < ミ} $small_y ;" - "my } $vowel > ミ | '~y' ;" - "ma <> マ ;" - "mi <> ミ ;" - "mu <> ム ;" - "me <> メ ;" - "mo <> モ ;" - "m } [pbfv] > ン ;" - "n | '~' < ニ } $small_y ;" - "ny } $vowel > ニ | '~y' ;" - "na <> ナ ;" - "ni <> ニ ;" - "nu <> ヌ ;" - "ne <> ネ ;" - "no <> ノ ;" - "o <> オ ;" - "p | '~' < ピ } $small_y ;" - "py } $vowel > ピ | '~y' ;" - "pa <> パ ;" - "pi <> ピ ;" - "pu <> プ ;" - "pe <> ペ ;" - "po <> ポ ;" - "h | '~' < ヒ } $small_y ;" - "hy } $vowel > ヒ | '~y' ;" - "ha <> ハ ;" - "hi <> ヒ ;" - "hu <> ヘゥ ;" - "he <> ヘ ;" - "ho <> ホ ;" - "fa <> ファ ;" - "fi <> フィ ;" - "fe <> フェ ;" - "fo <> フォ ;" - "fu <> フ ;" - "r | '~' < リ } $small_y ;" - "ry } $vowel > リ | '~y' ;" - "ra <> ラ ;" - "ri <> リ ;" - "ru <> ル ;" - "re <> レ ;" - "ro <> ロ ;" - "za <> ザ ;" - "zi <> ゼィ ;" - "zu <> ズ ;" - "ze <> ゼ ;" - "zo <> ゾ ;" - "sa <> サ ;" - "si <> セィ ;" - "su <> ス ;" - "se <> セ ;" - "so <> ソ ;" - "sha < シャ ;" - "shi'~i' < シィ ; # liu" - "shu < シュ ;" - "she < シェ ;" - "sho < ショ ;" - "shi <> シ ;" - "sh } $vowel > シ | '~y' ;" - "ta <> タ ;" - "ti <> ティ ;" - "tu <> テゥ ;" - "te <> テ ;" - "to <> ト ;" - "tsu <> ツ ;" - "vu <> ヴ ;" - "u <> ウ ;" - "wa <> ワ ;" - "wi <> ヰ ;" - "wu > ウ ;" - "we <> ヱ ;" - "wo <> ヲ ;" - "ya <> ヤ ;" - "yi > イ ;" - "yu <> ユ ;" - "ye > エ ;" - "yo <> ヨ ;" - "s } sh > ッ ;" - "t } ch > ッ ;" - "j } j <> ッ } $j_start ;" - "b } b <> ッ } [$h_start$f_start] $voice;" - "d } d <> ッ } $t_start $voice;" - "g } g <> ッ } $k_start $voice;" - "p } p <> ッ } [$h_start$f_start] $semivoice;" - "z } z <> ッ } $s_start $voice;" - "v } v <> ッ } $v_start;" - "k } k <> ッ } $k_start ;" - "m } m <> ッ } $m_start ;" - "n } n <> ッ } $n_start ;" - "h } h <> ッ } $h_start ;" - "f } f <> ッ } $f_start ;" - "r } r <> ッ } $r_start ;" - "t } t <> ッ } $t_start ;" - "s } s <> ッ } $s_start ;" - "w } w <> ッ } $w_start;" - "y } y <> ッ } $y_start;" - "x } x > ッ ;" - "c } k > ッ ;" - "c } c > ッ ;" - "c } q > ッ ;" - "l } l > ッ ;" - "q } q > ッ ;" - "$macron <> ー ;" - "'~a' <> ァ ;" - "'~i' <> ィ ;" - "'~u' <> ゥ ;" - "'~e' <> ェ ;" - "'~o' <> ォ ;" - "'~tsu' <> ッ ;" - "'~wa' <> ヮ ;" - "'~ya' <> ャ ;" - "'~yi' > ィ ;" - "'~yu' <> ュ ;" - "'~ye' > ェ ;" - "'~yo' <> ョ ;" - "j $1 < sh (y* $vowel) {ヽ$voice ;" - "dj $1 < ch (y* $vowel) {ヽ$voice ;" - "dz $1 < ts (y* $vowel) {ヽ$voice ;" - "g $1 < k (y* $vowel) {ヽ$voice ;" - "z $1 < s (y* $vowel) {ヽ$voice ;" - "d $1 < t (y* $vowel) {ヽ$voice ;" - "h $1 < b (y* $vowel) {ヽ$voice ;" - "v $1 < w (y* $vowel) {ヽ$voice ;" - "sh $1 < sh (y* $vowel) {ヽ$voice ;" - "j $1 < j (y* $vowel) {ヽ$voice ;" - "ch $1 < ch (y* $vowel) {ヽ$voice ;" - "dj $1 < dj(y* $vowel) {ヽ$voice ;" - "ts $1 < ts (y* $vowel) {ヽ$voice ;" - "dz $1 < dz (y* $vowel) {ヽ$voice ;" - "$1 < ($consonant y* $vowel) {ヽ$voice? ;" - "$1 < (.) {ヽ $voice? ; # otherwise repeat last character" - "< ヽ $voice? ; # delete if no characters found" - "$voweled_basekana [\\u3099 \\u309A]? { h > ー ;" - "cy > セィ ;" - "dy > ディ ;" - "hy > ヒ ;" - "sy > セィ ;" - "ty > ティ ;" - "zy > ゼィ ;" - "h > ヘ ;" - "ch > チ;" - "sh > シ ;" - "dz > ヅ ;" - "dj > ヂ;" - "b > ブ ;" - "d > デ ;" - "g > グ ;" - "k > ク ;" - "m > ム ;" - "n'' < ン } $n_quoter ;" - "n <> ン ;" - "p > プ ;" - "r > ル ;" - "s > ス ;" - "t > テ ;" - "y > イ ;" - "z > ズ ;" - "v > ヴ ;" - "f > フ;" - "j > ジ;" - "w > ウ;" - "ß > | ss ;" - "æ > | e ;" - "ð > | d ;" - "ø > | u ;" - "þ > | th ;" - "c > | k ;" - "l > | r ;" - "q > | k ;" - "x > | ks ;" - "'~' > ; # delete stray tildes between letters" - "[:Katakana:] { '' } [:Latin:] > ; # delete stray quotes between letters" - ":: NFC (NFD) ;" - ":: ([[:Katakana:][\\u309B\\u309C\\u30A0\\u30FC\\uFF70\\uFF9E\\uFF9F]] halfwidth-fullwidth);" - ":: ( [[\\ -~¢-£¥-¦¬̄₩。-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ│-○][~、-。がぎぐげござじずぜぞだぢづでどば-ぱび-ぴぶ-ぷべ-ぺぼ-ぽゔ゙-゛ゞァ-ヺー-ヾ][\\u309B\\u309C\\u30A0\\u30FC\\uFF70\\uFF9E\\uFF9F]] ) ;" :source: Latn :target: Kana :variant: ~