web-dev-qa-db-ja.com

HTMLで複数の言語を定義する

ドキュメントは複数の言語で利用できるため、ドキュメントの複数の言語を確認したいと考えています。私が使うなら

<meta http-equiv="content-language" content="en,de,fr" />

これは有効なW3Cではなく、バリデーターはルートのlang属性で定義する必要があると言っていますが、この属性は1つの言語しかサポートしていません。

<html lang="en">

動作しますが、動作しません

<html lang="de,en,fr">

では、どこに定義すればよいですか?

ご協力いただきありがとうございます。

19
swd_fs

すべての属性は1つの言語のみをサポートするため、1つの言語のみを定義する必要があります。最も重要な言語を設定する必要があります。1つのドキュメントに複数の言語がある場合、これは実行できません。問題を解決するための情報を以下に示します。

Langおよびxml:lang属性では、複数の言語を単一のドキュメントに割り当てることはできません。したがって、複数の言語でWebページを作成している場合、2つのオプションがあります。

  1. Lang属性を使用して1次言語を定義し、次にドキュメント内の要素にlang属性を使用して2次言語を呼び出します
  2. Lang属性は省略し、使用せずに、ドキュメントのさまざまな部門で定義します。

要素の言語情報の例:

    <div lang="fr-CA" xml:lang="fr-CA">
    Canadian French content...
    </div>
    <div lang="en-CA" xml:lang="en-CA">
    Canadian English content...
    </div>
    <div lang="nl-NL" xml:lang="nl-NL">
    Netherlands, Dutch content...
    </div>

複数の言語ページがあり、2番目のオプションを使用しています...

あなたは読みたいかもしれません http://www.w3.org/TR/2007/NOTE-i18n-html-tech-lang-20070412/#ri20060630.133619987

16
jagb

このようには使えません。

必要なすべての文字(Unicode範囲全体をサポートするUTF-8など)を含むエンコードを使用するか、名前付きエンティティまたは数値参照を使用して、使用中のエンコード外の文字を含める必要があります。

http://bytes.com/topic/html-css/answers/154652-multiple-languages-one-document

更新

HTML5を使用している場合は、各要素にlangを使用できます。つまり、中国語を含むdivがある場合は、そのdivにlang = "zh-CN"属性を定義するだけです。 ( 廃止されたメタhttp-equiv = content-languageに代わるHTML5の選択肢は何ですか。

3
MaVRoSCy

どのHTMLバージョンを使用していますか? HTML 4.01では、Content-Language複数言語の場合はvalidです。 HTML5では、 ではない です。

ただし、HTML 4.01の場合でも、Content-Language for meta要素はお勧めしません: HTTPヘッダー、メタ要素、言語情報(W3C)

2
unor

Content-Language HTTPヘッダー、つまりmetaタグの代理の意味は、ドキュメントの言語、または対象読者の言語を宣言することです(関連するRFCは矛盾しています)not他の一部のドキュメントの言語(現在のドキュメントの翻訳など)。ヘッダーの実用的な効果は小さく、おそらくドキュメントの言語として指定された最初の言語の使用に限定されますifHTMLマークアップに言語情報がありません。

ドキュメントが他の言語で利用可能であることを示すには、次のようなタグを使用できます

 <link rel="alternate" hreflang="de" href="foobar.de.html">

HTML 4.01仕様の 12.3.3リンクと検索エンジン を参照してください。

これが何らかの影響を与える保証はありません。これは検索エンジンに影響を与える可能性がありますが、通常のリンクよりも影響は大きくありません。一部の古いブラウザバージョンには、このような要素に基づいてドキュメントの代替バージョンを選択するコマンドがありましたが、この機能は削除されているようです。

2

他のポスターとW3Cが指摘したように、langタグのhtml属性で複数の言語を指定することはできません。

ただし、 この答えは 「混合言語ページにはどの属性値を使用すればよいですか?」 の場合、divspanタグなどの要素を使用してページのさまざまな部分をマークアップし、ページで使用されているさまざまな言語(または他の言語への参照)を示すことができます。

また、特定の範囲のテキストの言語ではなく、ページの対象ユーザー向けに複数の言語を記述するメタデータを作成できます。そのためには、サーバーにHTTPで情報を送信させますContent-Languageヘッダー。対象読者が複数の言語を話す場合、HTTPヘッダーを使用すると、言語のコンマ区切りリストを使用できます。

W3Cの記事 HTMLで言語を宣言する から、リソースが英語、ヒンディー語、パンジャブ語の混合であることを宣言するHTTPヘッダーの例を次に示します。

Content-Language: en, hi, pa

ご注意ください: htmlタグでは常に言語属性を使用する必要があり、言語属性は常にHTTPヘッダー情報をオーバーライドするため、これは本当に重要な点になります。 HTTPヘッダーは、ドキュメント全体の対象読者に関するメタデータを提供するためにのみ使用する必要があり、htmlタグの言語属性を使用して、コンテンツのデフォルト言語を宣言する必要があります。

この最後の手法の詳細については、 HTTPヘッダー、meta要素および言語情報 を参照してください。一般的な言語の宣言とマークアップについては、「 HTMLでの言語の宣言 」を参照してください。

0
Improv