1 ;;; kana-to-roman.el --- Kana to Roman converter
3 ;; Copyright (C) 1996 MORIOKA Tomohiko
5 ;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
7 ;; $Id: kana-to-roman.el,v 0.4 1996/10/04 14:52:16 morioka Exp $
8 ;; Keywords: Roman-to-Kana, input, Japanese, mule
10 ;; This file is not part of GNU Emacs.
12 ;; This program is free software; you can redistribute it and/or
13 ;; modify it under the terms of the GNU General Public License as
14 ;; published by the Free Software Foundation; either version 2, or (at
15 ;; your option) any later version.
17 ;; This program is distributed in the hope that it will be useful, but
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 ;; General Public License for more details.
22 ;; You should have received a copy of the GNU General Public License
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
25 ;; Boston, MA 02111-1307, USA.
29 (require 'roman-to-kana)
32 ;; (sort (mapcar (lambda (cell)
33 ;; (cons (cdr cell)(car cell))
35 ;; hepburn-roman-to-kana-translation-rule-alist)
37 ;; (string< (car c2)(car c1))
40 (defvar kana-to-roman-translate-table 'hepburn)
42 (defvar hepburn-kana-to-roman-translation-rule-alist
43 '(("
\e$B%t$)
\e(B" . "vo")
44 ("
\e$B%t$'
\e(B" . "ve")
45 ("
\e$B%t$#
\e(B" . "vi")
46 ("
\e$B%t$!
\e(B" . "va")
48 ("
\e$B$s$N
\e(B" . "nno")
49 ("
\e$B$s$M
\e(B" . "nne")
50 ("
\e$B$s$L
\e(B" . "nnu")
51 ("
\e$B$s$K
\e(B" . "nni")
52 ("
\e$B$s$J
\e(B" . "nna")
54 ;;("
\e$B$s
\e(B" . "x")
55 ;;("
\e$B$s
\e(B" . "n'")
63 ("
\e$B$j$g
\e(B" . "ryo")
64 ("
\e$B$j$e
\e(B" . "ryu")
65 ("
\e$B$j$c
\e(B" . "rya")
66 ("
\e$B$j$'
\e(B" . "rye")
67 ("
\e$B$j$#
\e(B" . "ryi")
76 ("
\e$B$_$g
\e(B" . "myo")
77 ("
\e$B$_$e
\e(B" . "myu")
78 ("
\e$B$_$c
\e(B" . "mya")
79 ("
\e$B$_$'
\e(B" . "mye")
80 ("
\e$B$_$#
\e(B" . "myi")
89 ("
\e$B$W$)
\e(B" . "pfo")
90 ("
\e$B$W$'
\e(B" . "pfe")
91 ("
\e$B$W$#
\e(B" . "pfi")
92 ("
\e$B$W$!
\e(B" . "pfa")
95 ("
\e$B$U$)
\e(B" . "fo")
96 ("
\e$B$U$'
\e(B" . "fe")
97 ("
\e$B$U$#
\e(B" . "fi")
98 ("
\e$B$U$!
\e(B" . "fa")
100 ("
\e$B$T$g
\e(B" . "pyo")
101 ("
\e$B$T$e
\e(B" . "pyu")
102 ("
\e$B$T$c
\e(B" . "pya")
103 ("
\e$B$T$'
\e(B" . "pye")
104 ("
\e$B$T$#
\e(B" . "pyi")
105 ("
\e$B$T
\e(B" . "pi")
106 ("
\e$B$S$g
\e(B" . "byo")
107 ("
\e$B$S$e
\e(B" . "byu")
108 ("
\e$B$S$c
\e(B" . "bya")
109 ("
\e$B$S$'
\e(B" . "bye")
110 ("
\e$B$S$#
\e(B" . "byi")
111 ("
\e$B$S
\e(B" . "bi")
112 ("
\e$B$R$g
\e(B" . "hyo")
113 ("
\e$B$R$e
\e(B" . "hyu")
114 ("
\e$B$R$c
\e(B" . "hya")
115 ("
\e$B$R$'
\e(B" . "hye")
116 ("
\e$B$R$#
\e(B" . "hyi")
117 ("
\e$B$R
\e(B" . "hi")
118 ("
\e$B$Q
\e(B" . "pa")
119 ("
\e$B$P
\e(B" . "ba")
120 ("
\e$B$O
\e(B" . "ha")
121 ("
\e$B$N
\e(B" . "no")
122 ("
\e$B$M
\e(B" . "ne")
123 ("
\e$B$L
\e(B" . "nu")
124 ("
\e$B$K$g
\e(B" . "nyo")
125 ("
\e$B$K$e
\e(B" . "nyu")
126 ("
\e$B$K$c
\e(B" . "nya")
127 ("
\e$B$K$'
\e(B" . "nye")
128 ("
\e$B$K$#
\e(B" . "nyi")
129 ("
\e$B$K
\e(B" . "ni")
130 ("
\e$B$J
\e(B" . "na")
131 ("
\e$B$I
\e(B" . "do")
132 ("
\e$B$H$%
\e(B" . "tu")
133 ("
\e$B$H
\e(B" . "to")
134 ("
\e$B$G$#
\e(B" . "di")
135 ("
\e$B$G
\e(B" . "de")
136 ("
\e$B$F$#
\e(B" . "ti")
137 ("
\e$B$F
\e(B" . "te")
138 ("
\e$B$E$)
\e(B" . "dzo")
139 ("
\e$B$E$'
\e(B" . "dze")
140 ("
\e$B$E$#
\e(B" . "dzi")
141 ("
\e$B$E$!
\e(B" . "dza")
142 ("
\e$B$E
\e(B" . "dzu")
143 ("
\e$B$D$)
\e(B" . "tso")
144 ("
\e$B$D$'
\e(B" . "tse")
145 ("
\e$B$D$#
\e(B" . "tsi")
146 ("
\e$B$D$!
\e(B" . "tsa")
147 ("
\e$B$D
\e(B" . "tsu")
148 ("
\e$B$C%t$)
\e(B" . "vvo")
149 ("
\e$B$C%t$'
\e(B" . "vve")
150 ("
\e$B$C%t$#
\e(B" . "vvi")
151 ("
\e$B$C%t$!
\e(B" . "vva")
152 ("
\e$B$C%t
\e(B" . "vvu")
153 ("
\e$B$C$r
\e(B" . "wwo")
154 ("
\e$B$C$q
\e(B" . "wwe")
155 ("
\e$B$C$p
\e(B" . "wwi")
156 ("
\e$B$C$o
\e(B" . "wwa")
157 ("
\e$B$C$m
\e(B" . "rro")
158 ("
\e$B$C$l
\e(B" . "rre")
159 ("
\e$B$C$k
\e(B" . "rru")
160 ("
\e$B$C$j$g
\e(B" . "rryo")
161 ("
\e$B$C$j$e
\e(B" . "rryu")
162 ("
\e$B$C$j$c
\e(B" . "rrya")
163 ("
\e$B$C$j$'
\e(B" . "rrye")
164 ("
\e$B$C$j$#
\e(B" . "rryi")
165 ("
\e$B$C$j
\e(B" . "rri")
166 ("
\e$B$C$i
\e(B" . "rra")
167 ("
\e$B$C$h
\e(B" . "yyo")
168 ("
\e$B$C$f
\e(B" . "yyu")
169 ("
\e$B$C$d
\e(B" . "yya")
170 ("
\e$B$C$b
\e(B" . "mmo")
171 ("
\e$B$C$a
\e(B" . "mme")
172 ("
\e$B$C$`
\e(B" . "mmu")
173 ("
\e$B$C$_$g
\e(B" . "mmyo")
174 ("
\e$B$C$_$e
\e(B" . "mmyu")
175 ("
\e$B$C$_$c
\e(B" . "mmya")
176 ("
\e$B$C$_$'
\e(B" . "mmye")
177 ("
\e$B$C$_$#
\e(B" . "mmyi")
178 ("
\e$B$C$_
\e(B" . "mmi")
179 ("
\e$B$C$^
\e(B" . "mma")
180 ("
\e$B$C$]
\e(B" . "ppo")
181 ("
\e$B$C$\
\e(B" . "bbo")
182 ("
\e$B$C$[
\e(B" . "hho")
183 ("
\e$B$C$Z
\e(B" . "ppe")
184 ("
\e$B$C$Y
\e(B" . "bbe")
185 ("
\e$B$C$X
\e(B" . "hhe")
186 ("
\e$B$C$W$)
\e(B" . "ppfo")
187 ("
\e$B$C$W$'
\e(B" . "ppfe")
188 ("
\e$B$C$W$#
\e(B" . "ppfi")
189 ("
\e$B$C$W$!
\e(B" . "ppfa")
190 ("
\e$B$C$W
\e(B" . "ppu")
191 ("
\e$B$C$V
\e(B" . "bbu")
192 ("
\e$B$C$U$)
\e(B" . "ffo")
193 ("
\e$B$C$U$'
\e(B" . "ffe")
194 ("
\e$B$C$U$#
\e(B" . "ffi")
195 ("
\e$B$C$U$!
\e(B" . "ffa")
196 ("
\e$B$C$U
\e(B" . "ffu")
197 ("
\e$B$C$T$g
\e(B" . "ppyo")
198 ("
\e$B$C$T$e
\e(B" . "ppyu")
199 ("
\e$B$C$T$c
\e(B" . "ppya")
200 ("
\e$B$C$T$'
\e(B" . "ppye")
201 ("
\e$B$C$T$#
\e(B" . "ppyi")
202 ("
\e$B$C$T
\e(B" . "ppi")
203 ("
\e$B$C$S$g
\e(B" . "bbyo")
204 ("
\e$B$C$S$e
\e(B" . "bbyu")
205 ("
\e$B$C$S$c
\e(B" . "bbya")
206 ("
\e$B$C$S$'
\e(B" . "bbye")
207 ("
\e$B$C$S$#
\e(B" . "bbyi")
208 ("
\e$B$C$S
\e(B" . "bbi")
209 ("
\e$B$C$R$g
\e(B" . "hhyo")
210 ("
\e$B$C$R$e
\e(B" . "hhyu")
211 ("
\e$B$C$R$c
\e(B" . "hhya")
212 ("
\e$B$C$R$'
\e(B" . "hhye")
213 ("
\e$B$C$R$#
\e(B" . "hhyi")
214 ("
\e$B$C$R
\e(B" . "hhi")
215 ("
\e$B$C$Q
\e(B" . "ppa")
216 ("
\e$B$C$P
\e(B" . "bba")
217 ("
\e$B$C$O
\e(B" . "hha")
218 ("
\e$B$C$K$g
\e(B" . "nnyo")
219 ("
\e$B$C$K$e
\e(B" . "nnyu")
220 ("
\e$B$C$K$c
\e(B" . "nnya")
221 ("
\e$B$C$K$'
\e(B" . "nnye")
222 ("
\e$B$C$K$#
\e(B" . "nnyi")
223 ("
\e$B$C$I
\e(B" . "ddo")
224 ("
\e$B$C$H$%
\e(B" . "ttu")
225 ("
\e$B$C$H
\e(B" . "tto")
226 ("
\e$B$C$G$#
\e(B" . "ddi")
227 ("
\e$B$C$G
\e(B" . "dde")
228 ("
\e$B$C$F$#
\e(B" . "tti")
229 ("
\e$B$C$F
\e(B" . "tte")
230 ("
\e$B$C$E$)
\e(B" . "ddzo")
231 ("
\e$B$C$E$'
\e(B" . "ddze")
232 ("
\e$B$C$E$#
\e(B" . "ddzi")
233 ("
\e$B$C$E$!
\e(B" . "ddza")
234 ("
\e$B$C$E
\e(B" . "ddzu")
235 ("
\e$B$C$D$)
\e(B" . "ttso")
236 ("
\e$B$C$D$'
\e(B" . "ttse")
237 ("
\e$B$C$D$#
\e(B" . "ttsi")
238 ("
\e$B$C$D$!
\e(B" . "ttsa")
239 ("
\e$B$C$D
\e(B" . "ttsu")
240 ("
\e$B$C$B$g
\e(B" . "ddjo")
241 ("
\e$B$C$B$e
\e(B" . "ddju")
242 ("
\e$B$C$B$c
\e(B" . "ddja")
243 ("
\e$B$C$B$'
\e(B" . "ddje")
244 ("
\e$B$C$B
\e(B" . "ddji")
245 ("
\e$B$C$A$g
\e(B" . "ccho")
246 ("
\e$B$C$A$e
\e(B" . "cchu")
247 ("
\e$B$C$A$c
\e(B" . "ccha")
248 ("
\e$B$C$A$'
\e(B" . "cche")
249 ("
\e$B$C$A
\e(B" . "cchi")
250 ("
\e$B$C$@
\e(B" . "dda")
251 ("
\e$B$C$?
\e(B" . "tta")
252 ("
\e$B$C$>
\e(B" . "zzo")
253 ("
\e$B$C$=
\e(B" . "sso")
254 ("
\e$B$C$<
\e(B" . "zze")
255 ("
\e$B$C$;
\e(B" . "sse")
256 ("
\e$B$C$:
\e(B" . "zzu")
257 ("
\e$B$C$9
\e(B" . "ssu")
258 ("
\e$B$C$8$g
\e(B" . "jjo")
259 ("
\e$B$C$8$e
\e(B" . "jju")
260 ("
\e$B$C$8$c
\e(B" . "jja")
261 ("
\e$B$C$8$'
\e(B" . "jje")
262 ("
\e$B$C$8
\e(B" . "zzi")
263 ("
\e$B$C$8
\e(B" . "jji")
264 ("
\e$B$C$7$g
\e(B" . "ssho")
265 ("
\e$B$C$7$e
\e(B" . "sshu")
266 ("
\e$B$C$7$c
\e(B" . "ssha")
267 ("
\e$B$C$7$'
\e(B" . "sshe")
268 ("
\e$B$C$7
\e(B" . "sshi")
269 ("
\e$B$C$6
\e(B" . "zza")
270 ("
\e$B$C$5
\e(B" . "ssa")
271 ("
\e$B$C$4
\e(B" . "ggo")
272 ("
\e$B$C$3
\e(B" . "kko")
273 ("
\e$B$C$2
\e(B" . "gge")
274 ("
\e$B$C$1
\e(B" . "kke")
275 ("
\e$B$C$0
\e(B" . "ggu")
276 ("
\e$B$C$/
\e(B" . "kku")
277 ("
\e$B$C$.$g
\e(B" . "ggyo")
278 ("
\e$B$C$.$e
\e(B" . "ggyu")
279 ("
\e$B$C$.$c
\e(B" . "ggya")
280 ("
\e$B$C$.$'
\e(B" . "ggye")
281 ("
\e$B$C$.$#
\e(B" . "ggyi")
282 ("
\e$B$C$.
\e(B" . "ggi")
283 ("
\e$B$C$-$g
\e(B" . "kkyo")
284 ("
\e$B$C$-$e
\e(B" . "kkyu")
285 ("
\e$B$C$-$c
\e(B" . "kkya")
286 ("
\e$B$C$-$'
\e(B" . "kkye")
287 ("
\e$B$C$-$#
\e(B" . "kkyi")
288 ("
\e$B$C$-
\e(B" . "kki")
289 ("
\e$B$C$,
\e(B" . "gga")
290 ("
\e$B$C$+
\e(B" . "kka")
291 ("
\e$B$C$&
\e(B" . "wwu")
292 ("
\e$B$C$$$'
\e(B" . "yye")
293 ("
\e$B$C$$
\e(B" . "yyi")
295 ("
\e$B$B$g
\e(B" . "djo")
296 ("
\e$B$B$e
\e(B" . "dju")
297 ("
\e$B$B$c
\e(B" . "dja")
298 ("
\e$B$B$'
\e(B" . "dje")
299 ("
\e$B$B
\e(B" . "dji")
300 ("
\e$B$A$g
\e(B" . "cho")
301 ("
\e$B$A$e
\e(B" . "chu")
302 ("
\e$B$A$c
\e(B" . "cha")
303 ("
\e$B$A$'
\e(B" . "che")
304 ("
\e$B$A
\e(B" . "chi")
305 ("
\e$B$@
\e(B" . "da")
306 ("
\e$B$?
\e(B" . "ta")
307 ("
\e$B$>
\e(B" . "zo")
308 ("
\e$B$=
\e(B" . "so")
309 ("
\e$B$<
\e(B" . "ze")
310 ("
\e$B$;
\e(B" . "se")
311 ("
\e$B$:
\e(B" . "zu")
312 ("
\e$B$9
\e(B" . "su")
313 ("
\e$B$8$g
\e(B" . "jo")
314 ("
\e$B$8$e
\e(B" . "ju")
315 ("
\e$B$8$c
\e(B" . "ja")
316 ("
\e$B$8$'
\e(B" . "je")
317 ("
\e$B$8
\e(B" . "zi")
318 ("
\e$B$8
\e(B" . "ji")
319 ("
\e$B$7$g
\e(B" . "sho")
320 ("
\e$B$7$e
\e(B" . "shu")
321 ("
\e$B$7$c
\e(B" . "sha")
322 ("
\e$B$7$'
\e(B" . "she")
323 ("
\e$B$7
\e(B" . "shi")
324 ("
\e$B$6
\e(B" . "za")
325 ("
\e$B$5
\e(B" . "sa")
326 ("
\e$B$4
\e(B" . "go")
327 ("
\e$B$3
\e(B" . "ko")
328 ("
\e$B$2
\e(B" . "ge")
329 ("
\e$B$1
\e(B" . "ke")
330 ("
\e$B$0
\e(B" . "gu")
331 ("
\e$B$/
\e(B" . "ku")
332 ("
\e$B$.$g
\e(B" . "gyo")
333 ("
\e$B$.$e
\e(B" . "gyu")
334 ("
\e$B$.$c
\e(B" . "gya")
335 ("
\e$B$.$'
\e(B" . "gye")
336 ("
\e$B$.$#
\e(B" . "gyi")
337 ("
\e$B$.
\e(B" . "gi")
338 ("
\e$B$-$g
\e(B" . "kyo")
339 ("
\e$B$-$e
\e(B" . "kyu")
340 ("
\e$B$-$c
\e(B" . "kya")
341 ("
\e$B$-$'
\e(B" . "kye")
342 ("
\e$B$-$#
\e(B" . "kyi")
343 ("
\e$B$-
\e(B" . "ki")
344 ("
\e$B$,
\e(B" . "ga")
345 ("
\e$B$+
\e(B" . "ka")
349 ("
\e$B$$$'
\e(B" . "ye")
354 (defun hiragana-to-roman-translate-string (str &optional table)
356 (setq table (symbol-value
358 (symbol-name kana-to-roman-translate-table)
359 "-kana-to-roman-translation-rule-alist"))
362 (while (setq ret (roman-to-kana-string-1 str table))
363 (setq dest (concat dest (car ret)))
369 (defun hiragana-to-roman-translate-region (start end)
371 (let ((str (buffer-substring start end)))
372 (delete-region start end)
374 (insert (hiragana-to-roman-translate-string str))
381 (provide 'kana-to-roman)
383 (run-hooks 'kana-to-roman-load-hook)
385 ;;; kana-to-roman.el ends here