• ベストアンサー

言語コードの2文字または、3文字または、3桁の数値コードの記述について

普通言語コードを記述するとき、アメリカの英語だとしたら「en-us」となりますが、アルファベット3文字や3桁の数値のコードも使用できるのでしょうか? 例えば、アメリカの場合2文字は「us」、3文字は「usa」、3桁数値は「840」なので、言語コードをアメリカの英語とする場合、「en-usa」や「en-840」と記述してよいのでしょうか? 回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

クライアントが何かわからなければ、ブラウザと思っておいてもらって問題はないと思います。 (IEやFirefoxなどのHTMLブラウザだけがクライアントではありません) > また、言語サブセットというのは言語コードのあとのハイフン(-)の後に続く副言語的なコードを表しているのでしょうか? そのとおり、同じです。 コンテントネゴシエーションでは「言語-国-地域」ではなく、「言語-国または地域」の2つで書く方が一般的だと思います。 > HTMLに書けるものは、ある程度限定されています。RFCに未定義かつIANAに未登録のものを書いてもブラウザは認識しません。 > ただし先頭の2文字から推測はしてくれると思われます。 これについては、私からはノーコメントです。 <p lang="en">English explanation.</p> <p lang="ja">日本語で説明。</p> と書くことはありますが、 何を持って「サポートしている」なのかがわからないので。 もしよろしければ、教えて頂きたいですが、、、もう見てらっしゃらないでしょうねぇ。。。(^^; スタイルシートで div[lang=ja]などと指定されていれば、<div lang="ja">の部分に適用されますが、 (ただし[ ]セレクタに対応しているブラウザのみ。) ただ、この書き方はlangだから適用されるという物ではなく、 <div class="hoge"> に対して div[class=hoge]と書くのと同じですし、 IANAに登録されていない言語セットでも適用されます。 スタイルシートだけを考えるのであれば、 class="lang-ja"とする代わりに、lang="ja"とするような物だと思っても、ほぼ差し支えはないのではないでしょうか。 Apacheのコンテントネゴシエーションについては、 jaとja-jpを別物として扱います。 クライアントは、ja-jpを送信するときは、サブセットをつけないjaも一緒に送信するべきだ、となっています。 他のサーバー(サーバーソフトウェア)については知りません。 Apacheでは、IANAやRFCに登録されていない自分しか知らない言語コードでも使えますが、 それを使ったとして、ユーザーが知りえるか、という問題があります。 ユーザーが知ることも無く、利用されない言語コードを、あえて使うのかどうかは制作者次第です。 で、あえて使う例を一つ。 過去、隠しリンクのような"イースターエッグ"と呼ばれるおまけページやジョークページを作る目的で、特殊な言語コードが使われるサイトがありました。 たとえば日本語なら、ja-kansai(またはja-jp-kansai)など、方言をサブセットとしてサーバーに登録しておき、 そのサブセットを登録したブラウザのみ方言で表示され、それ以外の一般設定では、標準語で表示されるページにできます。 ただしそういうコードは、メール仲間やニュースグループなど、限られた人だけの、内輪の情報になることがほとんどですね。 たぶん、IE、Safari、Firefox、Operaは、独自の言語コードを設定するのは容易ではないと思います。私が知らないだけかもしれませんが。 ジョークページとはいえ、Web標準が推奨される昨今、標準ではない方言を使うかどうかは、、、まぁ、非推奨なHTMLタグを多用してる私からは何も言いません。(^^) 文字コードについて。 言語セットと文字コードは別物です。 ja-jpでShift_JISにしたり、ja-jpでeuc-jpなど、組み合わせを変えても問題はありませんし、 ja-jpが指定されていれば文字コードがこれである、というルールもありません。 en-usでShift_JISにしてもいいです。 なお、Shift_JISを指定したときは、Shift_JIS独特の文字(日本語など)を使わなければならないというルールもありません。

miya_HN
質問者

お礼

補足の回答ありがとうございます。 まだ、勉強不足でApacheなどのことは分かりませんがこれから徐々に理解していきたいと思います。 ありがとうございました。

その他の回答 (2)

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.2

こちら↓のANo.1でも書きましたが・・ http://okwave.jp/qa3819536.html HTMLに書けるものは、ある程度限定されています。RFCに未定義かつIANAに未登録のものを書いてもブラウザは認識しません。ただし先頭の2文字から推測はしてくれると思われます。 また言語コードは文字コードと違って正確に認識されないても大きな影響はありません。文字コードが誤っていると困りますけど、en-xxxならasciiでしょうし。 文字コード自体は書かれる場所によってascii、iso-8859-1、Latin1、windows-1252と様々に呼ばれますけどね。SJISだってWikipediaで「cp932」を引けば複雑なことになっちゃっているのがわかります( http://ja.wikipedia.org/wiki/CP932 )。文字コードは奥が深いです(苦笑

miya_HN
質問者

お礼

ありがとうございました。

miya_HN
質問者

補足

確かに文字コードの方が間違っていた場合文字化けが起こるので問題ですね。 先頭にくる言語コード以外はブラウザは認識しないんですか。 ということは、RFCで定義されていて、なおかつIANAに登録したもののみ、複雑な言語コード、例えば、 言語コード-副言語コード1-副言語コード2...(続く) のような場合でもブラウザは認識するということでしょうか?「副言語コード」は国コードなどを指します。 すいませんがよろしくお願いします。

回答No.1

書いても良いです。 サーバーやクライアントが対応していなければ、無視されます。(エラーになるとか、動作が止まるとかいうことはありません) http://httpd.apache.org/docs/2.2/mod/mod_negotiation.html http://httpd.apache.org/docs/2.2/mod/mod_mime.html#addlanguage Apacheの場合、デフォルトで言語サブセットに対応していない(登録されていない)と思います。

miya_HN
質問者

お礼

ありがとうございました。

miya_HN
質問者

補足

記述することは可能なんですね。 >サーバーやクライアントが対応していなければ、無視されます。(エラーになるとか、動作が止まるとかいうことはありません) 「サーバーやクライアントが対応していなければ」というのは、ブラウザのことを指しているのでしょうか? また、言語サブセットというのは言語コードのあとのハイフン(-)の後に続く副言語的なコードを表しているのでしょうか? よろしくお願いします。

関連するQ&A

専門家に質問してみよう