Projet Socle ENT
Pages enfant
  • bug langue de traitement des pages

Exposé du problème

En Accessibilité, il y a un critère majeur :

Critère 8.3 [Bronze] Accessiweb

Dans chaque page Web, la langue par défaut est-elle présente ?
Correspondances WCAG 2.0 et RGAA? : Critère(s) de succès WCAG 2.0 : 3.1.1? - Technique(s) suffisante(s) et/ou échec(s) WCAG 2.0 : H57? - Test RGAA : 9.8

Bonne nouvelle par rapport à la 3.2, avec uPortal 4, le serveur renvoie l'en-tête HTTP Content-Language correctement. Et même quand on change la langue du portail, l'en-tête HTTP change.
Vous pouvez le vérifier avec Firebug, dans le panneau "réseau".

L'en-tête HTTP indique le ou les langues des pages.(plusieurs possible)

Malheureusement, la langue de traitement de la page est -elle- indiqué en dur dans la page. A savoir les attributs de la balise <html> "lang" et xml:lang".

dans uportal-war/src/main/resources/layout/theme/universality/page.xsl

86.     <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

il faut faire la même chose pour la vue Mobile :

dans uportal-war/src/main/resources/layout/theme/muniversality/muniversality.xsl

là la langue est fixée en dur dans la xsl :

171.    <xsl:param name="USER_LANG">en</xsl:param>

et mettre l'attribut lang au tag "html" :

301.     <xsl:template match="/">302.    <html>La langue de traitement indique la langue principale de la page (une seule possible)

Résolution du problème

il faudrait pouvoir changer dynamiquement la langue principale dans la XSL,
à savoir, avoir en français :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
avoir en anglais :
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

et ainsi de suite...

Proposition de résolution

On peut se basse sur les traductions

uportal-war/src/main/resources/layout/theme/universality/page.xsl b/uportal-war/src/main/resources/layout/theme/universality/page.xsl
diff --git a/uportal-war/src/main/resources/layout/theme/universality/page.xsl b/uportal-war/src/main/resources/layout/theme/universality/page.xsl
index 0aa723d..4039016 100644
--- a/uportal-war/src/main/resources/layout/theme/universality/page.xsl
+++ b/uportal-war/src/main/resources/layout/theme/universality/page.xsl
@@ -83,7 +83,7 @@
       </xsl:choose>
     </xsl:variable>

-    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{upMsg:getMessage('portal.lang', $USER_LANG)}" lang="{upMsg:getMessage('portal.lang', $USER_LANG)}">
       <head>
         <title>
           <xsl:choose>

Ajouter dans chaque fichier de langue la traduction  /uportal-war/src/main/resources/properties/i18n/Messages_*.properties

/uportal-war/src/main/resources/properties/i18n/Messages.properties
diff --git a/uportal-war/src/main/resources/properties/i18n/Messages.properties b/uportal-war/src/main/resources/properties/i18n/Messages.properties
index da52cfe..dc7ee74 100644
--- a/uportal-war/src/main/resources/properties/i18n/Messages.properties
+++ b/uportal-war/src/main/resources/properties/i18n/Messages.properties
@@ -536,3 +536,5 @@ your.account.has.been.successfully.updated.your.changes.will.be.visible.upon.you
 your.password.has.been.updated.successfully=Your password has been updated successfully
 your.selection=Your Selection
 your.selections=Your Selections
+
+portal.lang=en
/uportal-war/src/main/resources/properties/i18n/Messages_fr.properties
diff --git a/uportal-war/src/main/resources/properties/i18n/Messages_fr.properties b/uportal-war/src/main/resources/properties/i18n/Messages_fr.properties
index d44cdba..57d6665 100644
--- a/uportal-war/src/main/resources/properties/i18n/Messages_fr.properties
+++ b/uportal-war/src/main/resources/properties/i18n/Messages_fr.properties
@@ -519,3 +519,5 @@ your.account.has.been.successfully.updated.your.changes.will.be.visible.upon.you
 your.password.has.been.updated.successfully=Votre mot de passe a \u00e9t\u00e9 mis \u00e0 jour avec succ\u00e8s
 your.selection=Votre s\u00e9lection
 your.selections=Vos s\u00e9lections
+
+portal.lang=fr

Avantages

Cela nous permettrai de patcher et de surcharger proprement en css (sans toucher aux css anglaises) le thèmes graphiques "uportal3", "ivy", "coal" et "hight contrast" en français, par le moyen de sélecteurs css qui ne s'appliqueraient qu'en français du type :

html[lang=fr] .up .myclass {
property:value-in-french;
}



  • Aucune étiquette

2 commentaires

  1. Christian COUSQUER dit :

    Julien,

    Dans l'idée, c'est exactement ça. Il serait bon de remonter directement ceci a Jasig, car ça solutionnerai le truc pour n'importe quelle langue i18n...

  2. Christian COUSQUER dit :

    Bon ben, j'ai un pb de clé ssh avec mon mail upmc pour commiter sur sourcesup... comme mathilde. Désolé ;)

    je viens de commiter sur le github de jasig le correctif du bug, il vient d'être merger.

    voici le jira :

    https://issues.jasig.org/browse/UP-3454

    voici le correctif du bug il est simple...

    universality/page.xsl
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{substring-before($USER_LANG,'-')}" lang="{substring-before($USER_LANG,'-')}">

    et

    muniversality/muniversality.xsl
    <html lang="{substring-before($USER_LANG,'-')}">

    ça a été merger le 25 Avril 2012 sur github/jasig/uportal :

    https://github.com/Jasig/uPortal/commits/master