web-dev-qa-db-fra.com

définir plusieurs langues en html

Je souhaite déterminer plusieurs langues pour un document, car il est disponible dans plusieurs langues. Si j'utilise

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

ce n'est pas W3C valide et le validateur dit que je devrais le définir dans l'attribut lang de la racine, mais cet attribut ne prend en charge qu'un seul langage:

<html lang="en">

fonctionne, mais pas

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

Alors, où dois-je le définir?

Merci de votre aide.

19
swd_fs

tous les attributs ne prennent en charge qu'une seule langue, donc je pense que vous ne devez définir qu'une seule langue, la langue la plus importante doit être définie, cela ne peut pas être fait si vous avez plusieurs langues sur un même document, voici donc les informations pour résoudre votre problème:

Les attributs lang et xml: lang ne vous permettent pas d'attribuer plusieurs langues à un seul document. Donc, si vous écrivez une page Web en plusieurs langues, vous avez deux options:

  1. Définissez une langue principale avec l'attribut lang, puis appelez la ou les langues secondaires avec les attributs lang sur les éléments du document
  2. Oubliez l'attribut lang, ne les utilisez pas et définissez-le dans les différentes divisions du document.

exemple pour les informations de langue dans les éléments:

    <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>

J'ai quelques pages en plusieurs langues et j'utilise la 2ème option ...

Vous voudrez peut-être lire http://www.w3.org/TR/2007/NOTE-i18n-html-tech-lang-20070412/#ri20060630.133619987

16
jagb

Vous ne pouvez pas l'utiliser comme ça.

Vous devrez soit utiliser un encodage qui englobe tous les caractères souhaités (par exemple UTF-8) qui prend en charge toute la plage Unicode), soit utiliser des entités nommées ou des références numériques pour inclure des caractères en dehors de l'encodage utilisé.

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

METTRE À JOUR

Si vous utilisez HTML5, vous pouvez utiliser lang pour chaque élément. Cela signifie que si vous avez un div qui contient du chinois mandarin, définissez simplement un attribut lang = "zh-CN" pour ce div, comme. ( Quelle est l'alternative HTML5 à la méta obsolète http-equiv = content-language. )

3
MaVRoSCy

Quelle version HTML utilisez-vous? Dans HTML 4.01 , votre utilisation de Content-Language avec plusieurs langues est valide . Dans HTML5 , ce n'est pas .

Mais même pour HTML 4.01, l'utilisation de Content-Language pour l'élément meta n'est pas recommandé: en-têtes HTTP, méta-éléments et informations de langage (W3C)

2
unor

La signification de l'en-tête HTTP Content-Language, et donc de son substitut de balise meta, est qu'il déclare les langues du document ou les langues du public cible (les RFC pertinents sont contradictoires), pas les langues de certains autres documents (comme les traductions du document actuel). L'effet pratique de l'en-tête est faible, probablement limité à l'utilisation de la première langue nommée comme langue du document, si il n'y a aucune information de langue dans le balisage HTML .

Pour indiquer qu'un document est disponible dans d'autres langues, vous pouvez utiliser des balises comme

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

Voir 12.3.3 Liens et moteurs de recherche dans la spécification HTML 4.01.

Il n'y a aucune garantie que cela aura un effet. Cela peut affecter les moteurs de recherche, mais pas plus qu'un lien normal. Certaines anciennes versions de navigateur avaient des commandes pour sélectionner des versions alternatives d'un document, basées sur des éléments comme celui-ci, mais la fonctionnalité semble avoir été supprimée.

2
Jukka K. Korpela

Comme les autres affiches et le W3C l'ont souligné, vous ne pouvez pas spécifier plus d'une langue dans l'attribut lang de la balise html.

Cependant, comme indiqué dans cette réponse à "Quelle valeur d'attribut dois-je utiliser pour une page en plusieurs langues?" , vous pouvez baliser différentes parties d'une page avec des éléments tels que les balises div et span pour indiquer différentes langues (ou références à d'autres langues) utilisées sur la page.

En outre, vous pouvez créer des métadonnées qui décrivent plusieurs langues pour le public cible d'une page, plutôt que la langue d'une plage de texte spécifique. Pour ce faire, demandez au serveur d'envoyer les informations dans HTTP Content-Language entête. Si votre public cible parle plusieurs langues, l'en-tête HTTP vous permet d'utiliser une liste de langues séparées par des virgules.

Voici un exemple d'en-tête HTTP qui déclare que la ressource est un mélange d'anglais, d'hindi et de pendjabi de l'article du W3C Déclaration de la langue en HTML :

Content-Language: en, hi, pa

Notez s'il vous plaît: puisque vous devez toujours utiliser un attribut de langue sur la balise html, et que l'attribut de langue remplace toujours les informations d'en-tête HTTP, cela devient vraiment un point fin. L'en-tête HTTP ne doit être utilisé que pour fournir des métadonnées sur le public cible du document dans son ensemble, et l'attribut de langue sur la balise html doit être utilisé pour déclarer la langue par défaut du contenu.

Pour plus de détails sur cette dernière technique, voir en-têtes HTTP, meta éléments et informations de langage . Pour les déclarations de langage générales et le balisage, voir Déclaration du langage en HTML .

0
Improv