世の中はすっかり二十一世紀という装いで、いよいよユニコードの利用できる環境も一般に浸透してきました。ユニコードというのは、ひとつの文字コード体系で多言語を扱えるように、さまざまな言語で使われる文字をまとめるものです。日本語とフランス語、さらには中国語やロシア語、アラビア語といった多言語の混在を可能にするユニコードの可能性は、今後のインターネット空間を、きっと今まで以上に豊かで優雅なコミュニケーションを可能とする場所に変えるでしょう。複数言語の混在するページを閲覧する環境を整えるのは 、今やそれほど難しいことではなくなりましたし、UAの多くがユニコードを理解するようになっています。
というわけで、この文書では多言語、特に日本語、フランス語の混在する文書を作成するこつのようなものを説明します。そして特に、Shift-JISで記述された文書中に、フランス語などの別言語を混在させる方法を紹介します。
ユニコードで書くとなれば簡単。ユニコード(UTF-8やUTF-16)が扱えるエディタやツール等を使って、普通に書いていけばそれでいいはずです。ですがこれだと、旧いUA(ブラウザ)では日本語部分も読めなかったりするという問題があって、未ださまざまな環境が混在しているという状況では、ちょっと辛いかも知れません。もう随分大丈夫にはなっている、のですが、それでもまだちょっと踏み切るには早いかも知れないと思っています。
ただし、フランス人向けに多言語ページを作成するのなら、ユニコードを使用したほうがよいでしょうね。
となれば、Shift-JISで書かれた日本語の文章にフランス語をちりばめるにはどうすればいいのでしょうか。これは、それほど難しいことではありません。以前、HTML編で紹介しました文字実体参照、&を&と記述するやり方、でアクサン付きアルファベを使えばいいのです。
このサイト、こととねでも、このやり方でアクサン付きアルファベを記述しています。でも、残念ながらこのやり方でも問題はあって、やはり古いUAでは表示されなかったりするのです。その文字の部分が、?に換わったりするので、正直、ユニコードで記述していったほうがいいのではないかと思うことも多々あります。でもこととねの方針というのが、せめて自宅のLC 630(まだ現役)でなんとか閲覧できるというものである以上、ユニコードは使えないのです。iCabの68k版では、ユニコードが読めません。またNetscape Navigator 3にいたっては、ユニコードで書かれたHTMLファイルを、延々リロードし続けるという、恐ろしい状況が発生します。
こんな、非常に個人的な理由で本当に申し訳ないのですが、こととねでは、もうしばらくShift-JISを使いたいと思います。世間一般をみるならば、もう充分ユニコードの機は熟していると思うんですけどね。
HTML文書で多言語を扱おうとする際には、以下のようなことに気をつけておくとよいかも知れません。普通に見えることだけを考えれば、さほど重要ではないかも知れないことです。なので、凝りたいという人以外には、なんの意味もない、またすでに凝っている人には、当然のことでやっぱり意味のない、その程度のことです。
HTMLでは、いろいろな要素(pとかaとか)が定められており、またそれぞれの要素には属性(titleとかhrefとか)を指定することができます。要素は、その示された(タグで囲まれた)部分がどういう意味合いをもつかということ、そして属性は、その要素がもつ性格のようなものを、それぞれUAに指し示しています。で、この属性のひとつとして、lang属性というのがあるのです。
lang属性というのは、その要素が何語で書かれているのかというのを示すための属性で、ほとんどすべての要素に対して用いることができるものです。これは大抵、html要素につけられていることが多く、<html lang="ja"> と書かれていれば、このHTML文書は日本語で書かれたものなんだよ、ということを教えてくれているわけです。先ほど例に出しましたp要素に、<p lang="fr"> というかたちで使ったなら、これはフランス語で書かれた段落ですよ、ということになりますね。例でお分かりと思いますが、日本語の言語コードは "ja" で、フランス語は "fr" です。
では、なぜこの言語を指定することで、どういうメリットがあるのでしょうか。
UAのなかには、このlang属性を解釈して、挙動を変えるものがあります。例えば、引用を示すqという要素に対しUAは、自動で引用符を付けることになっており、その際にはlang属性を参照して、それぞれの言語にそぐう引用符を付ける決まりになっています。ですが、これはどちらかといえば、かなり些細なことです。むしろ重要なのは、次のことでしょう。
WWWの利用者のなかには、視覚に障碍をお持ちのかたもいらっしゃいます。彼らの多くはWWWを利用する際に、文書内のテキスト部分を読み上げてくれるブラウザでアクセスしているとのことです。こういう音声ブラウザは、読み上げの際に言語情報を取得して、それぞれの言語に適した読み上げ、発音を可能とします。
まったく指定しなくてもなんとかなるものではありますが、ある程度広いアクセスを想定するのだったら、それらのユーザが利用しやすいよう、文書に言語情報を与えておくのが望ましいかと思われます。
最近のInternet Explorerは、どうやら積極的にlang属性を解釈するようになっています。例えばフォントを指定する際に、その言語に相応しくないフォントは使えないようになっています。
これは、日本語の場合を考えてみるとよいでしょう。日本語は、2バイトコードを使って表現される文字です。なので、日本語に1バイトフォントを指定すると、文字化けをしてしまう。おそらくこれを避けようとしているのだと思うのですが、日本語に対して1バイトフォントは指定しても反映されなくなってしまいました。
この「日本語に対して」というのがややこしいのですが、これは日本語で書かれた文書のなかのアルファベットにも適用されます。なのでこの場合には、font要素でそのアルファベットに1バイトフォントを指定したとしても、無視されてしまいます(日本語であると思われているのでしょう)。
この現象を回避するためには、lang属性を使って適切な言語情報を与えてやるとよいでしょう。font要素を使っているなら、font要素に直接lang属性を加えればいいし、span要素を使って、lang属性だけを与えてやるのもよいかも知れません。span要素で指定する場合には、CSSの疑似クラスセレクタを用いて、言語ごとに適したフォントを指定してやるのがよさそうです。
ちなみにこのサイトでは、疑似クラスは使わず、class属性を使ってフォントを割り当てています。なおユニコードで書かれた文書なら、lang属性に応じてフォントも自動で切り替わる、はずです。
ユニコードでは、中国や日本、韓国などで使われている漢字の一部が、同じコードで表現されています。同じ文字を同じコードであらわすことによって、全体の文字数を減らそうとしているのですが、この中には残念ながら異体字が同一のものとしてまとめられている例が、決して少なくないのです。
これらの文字はCJK統合漢字と呼ばれており、さまざまな場で問題とされています。文字としては同一であっても、あまりに字体の異なるものが含まれているからです。そのため、言語情報にしたがってその言語に応じた文字が選ばれるという方式が考えられました。
ということは、lang属性を用い、適切な言語を指定してやることが重要になってきます。HTMLにおいて適切な日本語の漢字で表現されるようにするには、おそらくこの方法がベストであると思われます。特に、フランス人向けに多言語ページを作成したいなら、日本語の部分にlang="ja"を書いておくほうがよいでしょう。でないと、日中韓の漢字が混ざり合って表示されるかも。それは正直、ちょっといやですしね。
ことさら旧いUAにこだわるつもりがないなら、多言語文書を作成するにはユニコードを使うほうがよいでしょう。多言語サイトでなくとも、他文化への情報発信を考えている人、外国語による文書を作ろうとしている人にも、この文書が役立てばうれしいです。
では最後に、日本語とフランス語の混在している例を示して、この文書を終えるとしましょう。lang属性は、見出しではspan要素で、リスト内ではdt要素とdd要素に指定しています。
フランス語の部屋「いつかフランス人に」へ トップページに戻る