8 L' information de langue et de l' orientation du texte

Cette section du document traite de deux questions importantes de l' internationalisation du HTML: Référence du langage (attributs de la lang ) et direction (attribuer la dir ) du texte dans le document.

8.1 Langue du réglage: l'attribut lang

les définitions d' attributs
lang = code de langue [CI]
Cet attribut spécifie les valeurs d'attribut de langue principale et le contenu de l'élément sekstovogo. La valeur par défaut de cet attribut est pas installé.

Informations sur la langue spécifiée par l'attribut lang , peut être utilisé par un agent utilisateur de contrôler la génération de l'image de différentes façons. Certaines situations dans lesquelles l'auteur souligne l'information et de la langue peut être utile:

  • Les moteurs de recherche Aide
  • synthétiseurs Aide de la parole
  • agents d'aide de l'utilisateur dans le choix de glyphe variantes pour la typographie de haute qualité
  • Aidez l'agent utilisateur dans la sélection d'un ensemble de guillemets
  • Aidez l'agent utilisateur en matière de transports , les ligatures et les intervalles
  • Aide programme vérifie l'orthographe et la grammaire

Attribut lang spécifie le contenu de l'élément de code et des valeurs d' attribut; Il applique que ce soit pour cet attribut dépend de la syntaxe et la sémantique de l'attribut et l'opération.

Attribut lang est conçu pour permettre aux agents utilisateurs de générer des images plus significatives sur la base de la pratique culturelle acceptée pour une langue donnée. Cela ne signifie pas que les agents utilisateurs doivent générer des symboles qui ne sont pas typiques pour une langue particulière, de façon moins significative; les agents utilisateurs devraient essayer de générer une marque CE , quelle que soit la valeur de l'attribut de la lang .

Par exemple, si dans le texte russe devrait apparaître le symbole de l'alphabet grec:

  <P> <Q lang = "fr"> "Cela a été le résultat de Xtra & gamma; -radiatsii, </ Q> at-il expliqué </ P>.

User agent (1) devrait essayer de créer un texte russe comme approprié (par exemple, dans les guillemets pertinents), et (2) pour essayer de générer le symbole gamma, même si elle est pas un symbole de la Russie.

Pour plus d' informations, voir. Dans la section sur les symboles invisibles .

8.1.1 Codes de langue

La valeur lang est un code de langue qui identifie un langage naturel parlé, qui est orale, écrite ou autrement utilisé pour transférer des informations entre les personnes. Les langages informatiques sont explicitement exclus de codes de langue.

Le document [RFC1766] a identifié et décrit tous les codes de langue à utiliser dans les documents dans la langue de HTML.

En bref, les codes de langue sont constitués d'un code primaire et un certain nombre de sous-codes, ce qui peut être vide:

  De langue Code = primaire code ( "-" subcode) *

Voici quelques exemples de codes de langue:

  • "En": Anglais
  • "En-US": la version américaine de l'anglais.
  • "En-cockney": le Cockney (dialecte anglais).
  • "I-navajo": les Navajos (langue amérindienne).
  • "X-klingon": Le code primaire "x" représente un code de langue expérimentale

codes primaires à deux lettres sont réservées pour les abréviations de langue standard [ISO639] . Cela inclut des codes de fr (français), de (allemand), il (italien), nl (néerlandais), el (grec), es (espagnol), pt (portugais), ar (arabe), il (hébreu), ru ( russe), zh (chinois), ja (japonais), salut (hindi), ur (ourdou) et sa (sanskrit).

Tous les deux lettres subcode est considéré comme le code du pays dans la norme [ISO3166] .

8.1.2 Héritage des codes de langue

Un élément hérite des informations de code de langue dans l'ordre de priorité (du plus haut au plus bas) suivant:

  • Attribut lang , fixé pour l'élément lui - même.
  • L'élément parent le plus proche pour laquelle la valeur de consigne de l'attribut lang (ie attribut lang hérité).
  • Tête HTTP "Content-Language" (qui peut être configuré sur le serveur). Par exemple:
     Content-Language: fr-cockney
    
  • Les valeurs par défaut et la mise à l'agent utilisateur.

Dans cet exemple, la langue principale du document est le français ( "fr"). Un paragraphe est déclaré en espagnol ( "es"), après quoi la langue française devient à nouveau. Le paragraphe suivant est inclus phrase japonaise ( "ja"), puis à nouveau la langue est changée en français.

  <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.0 // EN"
  "Http://www.w3.org/TR/REC-html40/strict.dtd">
 <HTML lang = "fr">
 <HEAD>
 <TITLE> Document Un multilingue </ TITLE>
 </ HEAD>
 <BODY>
 ... Le texte est interprété comme un Français ... <P lang = "es" > ... le texte est interprété comme l' espagnol ... <P> ... texte est interprété à nouveau que les Français ... <P> ... le texte français dans laquelle les captures <EM lang = "ja"> fragment japonais </ EM>, et ici commence à nouveau les français ...

 </ BODY>
 </ HTML>
Remarque. Les cellules de table peuvent hériter de la valeur de l'attribut lang pas de parents, mais de la première cellule fusionnée. Voir. Dans la section héritage d'alignement .

8.1.3 Interprétation des codes de langue

Dans le contexte de code HTML doit être interprété par les agents utilisateurs comme une hiérarchie de caractères, plutôt que d'un caractère. Si l'agent utilisateur génère une image en fonction des informations sur la langue (par exemple, en comparant les codes de langue dans stylesheets et valeurs attribut lang ), il doit toujours trouver une correspondance exacte, mais doit également prendre en codes primaires considération. Ainsi, si la valeur de l' attribut lang "en-US" est réglé pour l'élément HTML , l'agent utilisateur doit d' abord sélectionner les informations de style, qui coïncide avec le "en-US", puis générer une valeur commune "en".

Remarque. La hiérarchie des codes de langue ne garantit pas la compréhension de toutes les langues avec des préfixes communs des personnes parlant couramment l'une ou plusieurs de ces langues. Il permet à l'utilisateur de demander cette communauté quand il est pour l'utilisateur vrai.

8.2 Spécification de la direction du texte et les tableaux: attribut dir

les définitions d' attributs

dir = LTR | Le RTL [CI]
Cet attribut définit l'orientation de base du neutre dans le sens de la direction du texte (par exemple, un texte qui ne hérite directionnalité pas tel que défini dans [UNICODE] ) et la direction des tables . Les valeurs possibles sont:
  • LTR: De gauche à droite.
  • RTL: De droite à gauche.

En plus de spécifier la langue du document en utilisant l' attribut lang , les auteurs peuvent spécifier la direction principale ( de gauche à droite ou de droite à gauche), certaines parties du texte, des tableaux, etc. Ceci est fait en utilisant l'attribut dir .

Spécification [UNICODE] spécification n'attribue directionnalité aux caractères et définit un algorithme (complexe) pour déterminer la directionnalité correcte du texte. Si le document ne contient pas de caractères affichables gauche-droite, l'agent utilisateur doit utiliser l'algorithme bidirectionnel est pas [UNICODE] . Si le document contient ces caractères, et si l'agent utilisateur et affiche, il doit utiliser l'algorithme bidirectionnel.

Bien que Unicode spécifie des caractères spéciaux qui sont responsables de la direction du texte, HTML offre la structure de balisage de niveau supérieur, en effectuant les mêmes fonctions: attribut dir ( à ne pas confondre avec l'élément de la DIR ) et membre de BDO . Ainsi, pour citer l'hébreu, il est plus facile d'écrire

  <Q lang = "il" dir = "rtl"> ... citation en hébreu ... </ Q>

que l'équivalent avec des références Unicode:

  & # X202B; & # x05F4;  ... Citation en hébreu ... & # x05F4; & # x202C ;

Les agents utilisateurs ne doivent pas utiliser l'attribut lang pour déterminer la direction du texte.

Attribut dir hérité, et il peut être remplacé. Voir. Dans la section sur l' héritage de l' information de la direction du texte .

8.2.1 Introduction à l'algorithme bidirectionnel

L'exemple suivant illustre le comportement attendu de l'algorithme bidirectionnel. Il montre le texte anglais de gauche à droite et le texte hébreu de droite à gauche.

Considérez le texte suivant:

  IVRIT4 English5 IVRIT6 de english1 IVRIT2

Les symboles dans cet exemple (et répliquées dans tous les exemples) sont stockés dans l'ordinateur sous la même forme dans laquelle ils sont présentés ici: le premier symbole - "a", la seconde - "n" dernière "6".

Supposons, pour le paragraphe contenant le document spécifié en anglais. Cela signifie que la direction principale est la direction de gauche à droite. La présentation correcte de cette ligne:

 4TIRVI English5 6TIRVI de english1 2TIRVI
  <----- <----- <-----
  HHH
 -------------------------------------------------- ->
  E

dots lignes indiquent la structure de l'offre: la langue principale est l'anglais, mais certains éléments sont intégrés dans l'hébreu. Pour la présentation correcte n'a pas besoin de balisage supplémentaire puisque les fragments hébreux dans les agents utilisateurs d'adresses correctes appliquant l'algorithme bidirectionnel.

D'autre part, si le document définit la langue hébraïque, la direction de base est de droite à gauche. Représentation correcte soit ainsi:

 6TIRVI English5 4TIRVI français3 2TIRVI english1
  -------> -------> ------->
  EEE
 <-------------------------------------------------
  H

Dans ce cas, la phrase entière semble droite à gauche, et les fragments en anglais traite l'algorithme bidirectionnel.

8.2.2 Héritage de l' information de la direction du texte

Pour Unicode algorithme bidirectionnel doit être la direction principale de texte pour les blocs de texte. Pour spécifier la direction de base des éléments de niveau bloc, définissez cet élément d'attribut dir . La valeur dir , installé par défaut, est "ltr" (gauche à droite).

Si l'attribut dir est fixé à un élément de niveau bloc, il agit tout au long de l'élément , et pour tous les éléments de sous-niveau de bloc. Réglage de l'attribut dir de l' élément imbriqué est prioritaire sur la valeur héritée.

Pour définir l'orientation du texte principal pour un document entier, définissez l'attribut dir dans l'élément HTML .

Par exemple:

  <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.0 // EN"
  "Http://www.w3.org/TR/REC-html40/strict.dtd">
 <HTML dir = "RTL">
 <HEAD>
 <TITLE> ... la position droite à gauche ... </ TITLE>

 </ HEAD>
 ... Texte de droite à gauche ... <P dir = "ltr" > ... texte de gauche à droite ... </ P>

 <P> ... à nouveau le texte de droite à gauche ... </ P>

 </ HTML>

éléments Inline, d'autre part, ne héritent pas l'attribut est la dir . Cela signifie qu'aucun élément en ligne attribut dir ne sera pas ouvrir davantage la mise en œuvre en conformité avec le niveau de l'algorithme bidirectionnel. (Cet élément est considéré comme élément de niveau bloc ou un élément en ligne basé sur la vue par défaut. S'il vous plaît noter que les éléments de l' INS et DEL peuvent être des éléments de niveau bloc ou les éléments en ligne, selon le contexte.)

8.2.3 Réglage de la direction de texte intégré

L' algorithme bidirectionnel [UNICODE] dessine automatiquement une séquence de caractères introduits selon la direction hérité (comme indiqué dans les exemples précédents). Cependant, en général, il est pris en compte qu'un seul niveau d'intégration. Afin de changer la direction d'atteindre de nouveaux niveaux, utiliser l'attribut dir dans un élément intégré.

Considérons le texte de l'exemple précédent:

 IVRIT4 English5 IVRIT6 de english1 IVRIT2

Supposons que la langue principale du document contenant ce paragraphe est l'anglais. Dans cette phrase anglaise contient un fragment hébreu étendant de IVRIT2 à IVRIT4, et il contient un fragment de la langue anglaise (English 3). Ainsi, la présentation désirée du texte:

 2TIRVI English5 6TIRVI de english1 4TIRVI
  ------->
  A
  <-----------------------
  et
 -------------------------------------------------- ->
  A

Pour modifier le texte des deux fragments incorporés devons demander plus d'informations, et nous le faisons, séparant clairement la deuxième mise en œuvre. Dans cet exemple, nous utilisons pour marquer l'élément de texte SPAN et attribuer le répertoire :

 english1 <SPAN dir = "RTL"> IVRIT2 français3 IVRIT4 </ SPAN> English5 IVRIT6

Les auteurs peuvent également être utilisés pour changer la direction de quelques fragments embarqués caractères Unicode. Pour indiquer la direction de gauche à droite dans le fragment Surround exécution des caractères de texte de gauche à droite INCORPORATION ( "LRE", hex 202A) et POP FORMATAGE DIRECTIONNEL ( «PDF», le code hexadécimal 202C). Pour indiquer la direction de droite à gauche dans les fragments d'application Surround texte caractères DROIT DE GAUCHE Embedding ( "RTE", 202B code hexadécimal) et PDF.

En utilisant les balises HTML orientation avec des caractères Unicode. Les auteurs et les outils de développeurs pour créer HTML-document devrait être au courant des éventuels conflits découlant de l'utilisation de l'attribut dir avec des éléments intégrés (y compris de BDO ) en même temps que les caractères de formatage correspondant [l'UNICODE] . Il est préférable d'utiliser une seule méthode. Méthode utilisant un balisage de document assure l' intégrité structurelle et élimine quelques problèmes avec l' édition de texte HTML bidirectionnel dans les éditeurs de texte simple, mais certains logiciels peut être préférable d'utiliser les symboles [l'UNICODE] . Si les deux méthodes sont utilisées, devraient être bien pris en charge correctement intégrer le balisage et le caractère, sinon les résultats pourraient être imprévisibles.

8.2.4 Redéfinition l'algorithme bidirectionnel: un élément de BDO

  <L'ELEMENT! De BDO - - ( % inline; ) * - priorité sur I18N BiDi ->
 <! ATTLIST BDO
  % coreattrs;
  - Id , classe , le style , le titre -
  la lang % LanguageCode;
  #IMPLIED - Le code de langue -
  le répertoire (ltr | rtl) #REQUIRED - direction -
  >

Balise de début: obligatoire, balise fermante: obligatoire

les définitions d' attributs

dir = LTR | Le RTL [CI]
Cet attribut obligatoire indique la direction principale de l'élément de contenu du texte. Cette direction est prioritaire par rapport à la direction de l'héritabilité des caractères tels que définis dans [UNICODE] . Les valeurs possibles sont:
  • LTR: de gauche à droite.
  • RTL: La direction de droite à gauche.

Attributs définis ailleurs

algorithme bidirectionnel et l' attribut dir sont généralement suffisantes pour contrôler le changement dans la direction de texte intégré. Cependant, dans certaines situations, l'algorithme bidirectionnel peut conduire à une présentation incorrecte. Element BDO permet aux auteurs de désactiver l'algorithme bidirectionnel pour des fragments de texte sélectionnés.

Considérons un document avec le même fragment de texte:

 IVRIT4 English5 IVRIT6 de english1 IVRIT2

mais supposons que ce texte a déjà été présenté dans le bon ordre. Une raison à cela peut être que la norme de la MIME ( [RFC2045] , [RFC1556] ) favorise ordre visuel, à savoir la séquence avec la direction de droite à gauche sont insérées dans un flux d'octets de droite à gauche. Dans un e-mail, il peut être formaté, y compris les sauts de ligne, par exemple:

  english1 2TIRVI français3
 4TIRVI English5 6TIRVI

Ceci est en contradiction avec l'algorithme bidirectionnel [l'UNICODE] , parce que cet algorithme inverse 2TIRVI, 4TIRVI 6TIRVI et la deuxième fois, de sorte que les mots hébreux sont affichés de gauche à droite au lieu de droite à gauche.

Dans ce cas , la solution consiste à remplacer l'effet de l'algorithme bidirectionnel en mettant l'Email extrait dans un élément PRE (pour préserver les sauts de ligne) et chaque ligne, pour lesquels l'attribut dir réglé sur le LTR, dans l'élément de BDO :

  <PRE>
 <BDO dir = "LTR"> english1 2TIRVI français3 </ BDO>
 <BDO dir = "LTR"> 4TIRVI English5 6TIRVI </ BDO>
 </ PRE>

commande algorithme bidirectionnel est délivré, "je dois être parti!", ce qui conduira à la présentation souhaitée:

 english1 2TIRVI français3
 4TIRVI English5 6TIRVI

Element BDO doit être utilisé dans les scénarios qui nécessitent un contrôle absolu sur la séquence (par exemple, les numéros de pièce en plusieurs langues). Attribut dir pour cet élément est obligatoire.

Les auteurs peuvent également utiliser des caractères Unicode spéciaux pour éviter d'utiliser l'algorithme bidirectionnel - GAUCHE-À-DROITE OVERRIDE (202D) ou OVERRIDE DROIT DE GAUCHE (202E code hexadécimal). caractère POP FORMATAGE DIRECTIONNEL (code hexadécimal de 202C) complète toute séquence à utiliser pour contourner l'algorithme bidirectionnel.

Remarque. Rappelez - vous que lorsque vous utilisez l'attribut dir dans les éléments intégrés (y compris de BDO ) en même temps que les caractères de formatage correspondant [l'UNICODE] , il peut y avoir des conflits.

Bi-directionnel et le codage de caractères Selon [RFC1555] et [RFC1556] , il existe des dispositions particulières pour l'utilisation des valeurs de paramètre "charset" pour indiquer le traitement bidirectionnel dans le courrier MIME, en particulier pour les différences visuelles, l'orientation explicite et implicite. La valeur "ISO-8859-8" ( en hébreu) désigne le codage visuel, "ISO-8859-8-i" désigne bidirectionnalité implicite, et "ISO-8859-8-e» désigne directionnalité explicite.

Parce que HTML utilise l'algorithme bidirectionnel Unicode, les documents pertinents à l' aide de la norme ISO 8859-8 codage devraient être étiquetés comme "ISO-8859-8-i". le contrôle directionnel explicite est également possible en HTML, mais il ne peut pas être exprimé dans la norme ISO 8859-8, puisque vous ne devriez pas utiliser "ISO-8859-8-e".

La valeur "ISO-8859-8" implique que le document est formaté visuellement, et certaines balises pour être utilisé de façon incorrecte (par exemple, CREATE TABLE avec aligné à droite , sans lignes de rupture) pour garantir un affichage correct sur les anciens agents utilisateurs qui ne supportent pas bi-directionnel. Ces documents ne répondent pas à cette spécification. Si nécessaire, vous pouvez les changer (et en même temps ils sont affichés correctement dans les anciennes versions d'agents utilisateurs) en ajoutant, le cas échéant, le marquage de BDO . Contrairement à ce qui a été dit dans [RFC1555] et [RFC1556] , l'encodage ISO-8859-6 (arabe) est pas un ordre visuel.

8.2.5 Les références de caractères pour la gestion et la direction du syndicat

Parce que parfois , il y a une certaine ambiguïté quant à la nature (par exemple, des signes de ponctuation), la spécification [UNICODE] comprend des symboles pour la détermination correcte du but. spécification Unicode inclut également certains caractères pour contrôler l'union, si nécessaire (par exemple, certaines situations avec des lettres arabes). HTML 4.0 inclut ces caractères références de caractères .

La DTD suivante définit la représentation de certaines zones de l'objet:

  <ENTITÉ ZWNJ CDATA "& # 8204;" - = largeur Null sans joint ->
  <ENTITÉ zwj CDATA "& # 8205;" - = combinateur zero-width ->
  <ENTITÉ lrm CDATA "& # 8206;" - label = gauche à droite ->
  <ENTITÉ RLM CDATA "& # 8207;" - label = de droite à gauche ->

Objet ZWNJ utilisé pour verrouiller le syndicat dans les contextes où le syndicat va se passer, mais il ne devrait pas se produire. Objet zwj a l'effet inverse; elle se confond dans le cas où il n'a pas été supposé, mais il doit se produire. Par exemple, la lettre arabe "HEH" est utilisé pour abréger "Hijri", le nom du système islamique de la chronologie. Comme un caractère distinct "HEH" en alphabet arabe ressemble au numéro cinq, afin de ne pas confondre la lettre "HEH" avec le dernier chiffre cinq en un an, en utilisant la forme originale de la lettre "HEH". Cependant, aucun contexte supplémentaire (par exemple, de combiner les lettres), qui peut se combiner à la "HÉ". ZWJ Symbole fournit un contexte.

De même, dans les textes persans, la lettre peut parfois être combinée avec une autre lettre, tandis que dans le texte manuscrit qui ne devrait pas l'être. symbole ZWNJ est utilisé pour verrouiller le syndicat dans de tels cas.

L'ordre des symboles, lrm et RLM, sont utilisées pour déterminer la direction du neutre par rapport à la direction des personnages. Par exemple, si les guillemets sont placés entre l'arabe (de droite à gauche) et le latin (de gauche à droite) la lettre, la direction ne sont pas des citations claires (si elles appartiennent à l'arabe ou le texte latin?). Lrm et caractères RLM ont une propriété directionnelle mais ne possèdent pas les propriétés largeur et la séparation des mots / lignes. Pour plus de détails, voir. [Le UNICODE] .

glyphes de caractères de réflexion. En général, l'algorithme bidirectionnel ne reflète pas les glyphes de caractères et ne les affecte pas. Une exception sont des caractères tels que les parenthèses (voir. [Le UNICODE] , table 4-7). Si la réflexion est souhaitable, comme les hiéroglyphes égyptiens, des caractères grecs ou les effets spéciaux de conception, vous pouvez le faire avec les styles.

8.2.6 Feuilles de style et bidirectionnelle

En général, en utilisant des feuilles de style pour changer la représentation visuelle d'un élément de niveau bloc pour le haut-et vice versa est utilisé dans la direction vers l'avant. Cependant, parce que l'algorithme bidirectionnel utilise différents éléments internes / niveau bloc , au cours de la conversion doit être prudent.

Si l'élément en ligne qui n'a pas l'attribut dir, est converti en un style d'élément de niveau de bloc à l' aide de feuilles de style pour déterminer la direction de l'unité principale, il hérite de l'attribut dir de l'élément de bloc parent le plus proche.

Si un élément de bloc qui n'a pas l'attribut a la dir, est converti à l'élément de style construit en utilisant la feuille de style, la présentation résultant devrait être équivalent, en termes de mise en forme bidirectionnelle, à la mise en forme obtenue en ajoutant explicitement un attribut dir (qui est attribuée la valeur héritée) converti éléments.