[サンスクリットページ雑感集・技術情報]

ローマ字→デーヴァナーガリー変換(ヒンディー語)

Since 2005/7/31 Last Updated 2007/4/14


 これからいくつかにわけて、私がふだん使っているユーティリティプログラムを公開します。まずは、ローマ字→デーヴァナーガリー変換(ヒンディー語版)です。
注意:このページはOSおよびブラウザがデーヴァナーガリーに対応していないと、デーヴァナーガリー部分を正常に見ることができません。WindowsならばXPでなければなりません(95/98/Meは不可)。詳しくはWindows XPでデーヴァナーガリーを使うを見てください。
このページで紹介するユーティリティは、このページを正常に見ることのできる環境でなければ使用することができません(動作はするかもしれませんが結果を見ることができません)。

以下ご紹介するのは、ご自分のパソコンにインストールして使うユーティリティ・プログラムです。インストールは面倒くさいという人のために、CGI版も用意しました。CGI版ではプログラムをインストールせずにすぐにこのページ上でローマ字→デーヴァナーガリー変換を行います。
CGI版へGO!

  1. 概要
    1. ローマ字で書かれたヒンディー語文を、デーヴァナーガリーに変換します。
    2. プログラムはPerlで書かれており、処理が高速です。一応Windowsでしか動作確認をしていないのでWindows用ということにしておきますが、特殊なことはやっていないので、Perlさえ動作するならばOSに依存しないはずです。
    3. 入力は通常のテキストファイルです。{と}で囲まれた部分をヒンディー語文とみなしてデーヴァナーガリーに変換します。それ以外の部分はそのまま出力しますが、日本語コードはシフトJISコードで書かれていることを前提にしています。
    4. 出力はHTMLファイルです。MS-IEなどのブラウザで閲覧し、そこから必要に応じて他のアプリケーション(Wordなど)にコピー&ペーストしてください。
    5. プログラムをインストールするのは面倒という人のためにCGI版も用意しました(このページの一番下)。



  2. インストールと実行
    1. 以下の「インストールと実行」は、ご自分のパソコンにプログラムをインストールして使うためのものです。面倒くさそうだと思ったら、CGI版を使ってください(このページの一番下)。
    2. まず、Perlを持っていない人は、どこからか入手してインストールしておいてください。とりあえずはvector (Windows版)が手ごろでしょうか。Perl自体は日本語対応していなくてもかまいません。
    3. プログラムは本体とデータ定義ファイルに分かれています。 このうち上の2つを同じフォルダ(ディレクトリ)にダウンロード(リンクを右クリック→「対象をファイルに保存」)してください。なお、最後のサンプルファイルをダウンロードする場合は inp.txt という名に変更してください。
    4. 入力ファイルはinp.txt、出力ファイルはout.htmです。変更することもできますが、できる限りこのままの設定でお使いください。変更する場合は後述の起動オプションで変更します。
    5. 入力ファイルができあがったら、hin2uni.pl をダブルクリックします。一瞬黒いDOS窓の画面が出てすぐ消えます。そしたらもうout.htmができあがっています。



  3. 入力ファイルの書式
    1. 入力ファイルの{と}で囲まれた部分をヒンディー語文とみなしてデーヴァナーガリーに変換します。それ以外の部分はそのまま出力します。シフトJISコードで書かれていることを前提にしているので、2バイト目が{ないし}である漢字コードを用いても正常に動作します。他の漢字コード(EUC-JPなど)を用いてもそのまま出力されるので大丈夫のはずです。
    2. 処理は行ごとにおこなっているので、{と}の間に改行を入れてはいけません。{があるのに}がない行は、行末に}があるものとして処理します。
    3. {と}で囲まれた部分以外はそのまま出力しているので、書式の制御などをする場合はHTMLのタグを用いてください。たとえば改行をさせたいなら、<br>と書きます。
    4. {そのもの、}そのものを出力したい場合はそれぞれ{{、}}のように書きます。
    5. HTMLの最初(<html>から<body>まで)と最後のタグ(</body>から</html>まで)はプログラムが出力するので書かないでください。要するに文書の内容だけを書いてください。ただし、後述の -r スイッチを指定して起動した場合は、最初と最後のタグを出力しません。
    6. ローマ字は以下のものを用いてください。
      a aa i ii u uu r1 e ai o au
       
      k kh g gh n1 c ch j jh n2  
       
      t3 t3h d3 d3h n3 t th d dh n  
      p ph b bh m y r l v . ,
      s2 s3 s h q x g2 z r3 r3h f
      0 1 2 3 4 5 6 7 8 9 --
      その他
      • 子音のあとの母音字はもちろん母音記号に変換。よって子音のあとのaは何も出力しない。子音のみにしたいときは後述のwを用いる。
      • h3……ヴィサルガ。
      • m3……アヌスヴァーラ(ピンドゥ)。
      • ~……直前の母音を鼻母音にする(例:कँ=ka~、किं=ki~)。
      • w……ヴィラーマ記号を出力(例:त्=tw)。結合子音もこれを用いる(例:स्त=swta、श्र=s2wra)。
      • '……何も出力しない。強制的に音節をわけるのに用いる(例:नई=na'ii、बह=b'ha)。
      • +……'と同様。
      • _(下線)……スペースを出力。なお、単にスペースを書いてもスペースを出力することは可能です。
      { }内に上記に定義されていない文字や記号類を書いた場合は、そのまま出力します。



  4. 起動オプション
    起動時にオプションを指定することができます。その際の起動法は次のとおりです。
    perl hin2uni.pl 入力ファイル 出力ファイル データ定義ファイル スイッチ
    オプションを省略した場合は以下に説明する規定値が用いられます。途中のオプションを省略することはできません。たとえば、3番目のオプションを指定する場合は、1番目と2番目のオプションも必ず指定しなければなりません。
    また、ファイル名に関するオプションについて、たとえファイル名が同じでフォルダ(ディレクトリ)名だけを変更したい場合も、必ずファイル名まで指定しなければなりません。
    1. 入力ファイル……規定値 inp.txt
    2. 出力ファイル……規定値 out.htm
    3. データ定義ファイル……規定値 h_mu.txt
    4. スイッチ……規定値なし。ここに -r を指定すると、HTMLの最初(<html>から<body>まで)と最後のタグ(</body>から</html>まで)を出力しません。



  5. データ定義ファイルの書式
    データ定義ファイル h_mu.txt の各行は、カンマ区切りで4つのデータが書かれています。必要に応じて変更してください。
    token,code1,code2,flag
    tokenとは、入力ファイルのコードで、最大4文字です。
    code1は、直前が子音のときの出力文字です。
    code2は、直前が母音のときの出力文字です。
    flagは、この文字が子音かどうかです。子音のときは1、母音のときは0です。また-1のときはノー・オペレーション(この前が子音かどうかの状態をそのまま引き継ぐ)です。



  6. うまく動かないときは
    「プログラムを実行したのに変換が行われていないぞ」というときのほとんどは、定義ファイルや入力ファイルがうまく読み込まれていない、もしくは出力ファイルが思いがけないところにできているというものです。ファイルが読めない場合、実際にはエラーメッセージが出ているのですが、実行が一瞬で終了してしまうためにそのエラーメッセージを読むことができません。
    プログラムのアイコンを右クリックして「プロパティ」で、「作業フォルダ」を確認してください。これが何らかの理由でプログラムのあるフォルダ(正確にはデータ定義ファイルのあるフォルダ)になっていないと、データ定義ファイルは読み込まれなかったり、入力ファイルが読み込まれなかったり、出力ファイルが思いがけないところにできたりします。
    何らかの理由で入出力ファイルやデータ定義ファイルを、作業フォルダと異なる場所にしたいときは、起動オプションをしっかり指定してください(アイコンを右クリック→「プロパティ」で「リンク先」のところに指定する)。



  7. プログラムの著作権について
     このプログラムはcopyleftです。転載、改変は自由におこなってください。



  8. CGI版
     プログラムやPerlをダウンロードしてインストールしたりするのは面倒という人のために、このページ上ですぐに変換をするCGI版を用意しました。
     以下の窓にテキストを入力して、変換ボタンをクリックしてください。サンプルデータを2行ほどプリセットしておきましたが、当然消していただいて結構です。
     入力の書式は上記の「入力ファイルの書式」と同様です。ただし、いちいち改行のために<br>タグを書くのはわずらわしいので、こちらはふつうに改行すればそのまま結果も改行するようになっています。また、{ }は行を越えて有効です。ですから全体がヒンディー語文であるならば、最初の行に{、最後の行に}を書くだけでOKです。
     フォントの大きさは1〜7の適当な数値を指定してください(デフォルトは3)。大きくすると変換結果が読みやすくなりますが、他のアプリケーションに文字コードをコピー&ペーストするだけならどんな大きさでもかまいません。
     その下の「.を।に変換し,を無変換にする」というのは、現代ヒンディー語の句読点方式にあわせた変換です。これをオフにすると古典的な句読点方式、つまり.を॥に、,を।に変換する方式になります。
     次の「子音の前の鼻音をピンドゥに変換する」というのは、たとえばntなど、鼻音+同系列子音という組み合わせを、自動的にm3t、つまりピンドゥ+子音に変換するものです。こうすればhindiiと書いても自動的にhim3dii(हिंदी)となります。このスイッチをオンにしたままでこれを抑止したいときはhinwdiiと書けば結合子音(हिन्दी)に、またhin'diiと書けば非結合子音(हिनदी)になります。

    Text :
    フォントの大きさ


    .を।に変換し,を無変換にする
    子音の前の鼻音をピンドゥに変換する


※ご意見、ご教示などは、に戻り、掲示板あるいはメールで賜るとありがたく思います。