]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Use lang attribute 4257/head
authorSimounet <contact@simounet.net>
Fri, 11 Jan 2019 20:09:49 +0000 (21:09 +0100)
committerSimounet <contact@simounet.net>
Thu, 23 Jan 2020 20:21:54 +0000 (21:21 +0100)
src/Wallabag/CoreBundle/Entity/Entry.php
src/Wallabag/CoreBundle/Resources/views/base.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig
src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig
tests/Wallabag/CoreBundle/Entity/EntryTest.php [new file with mode: 0644]

index beda581af2ee214abb96c11a6fd48eb6af30908b..190457983f92eb9d5bc77a25c24b08646ddb918f 100644 (file)
@@ -787,6 +787,19 @@ class Entry
         return $this->language;
     }
 
+    /**
+     * Format the entry language to a valid html lang attribute.
+     */
+    public function getHTMLLanguage()
+    {
+        $parsedLocale = \Locale::parseLocale($this->getLanguage());
+        $lang = '';
+        $lang .= $parsedLocale['language'] ?? '';
+        $lang .= isset($parsedLocale['region']) ? '-' . $parsedLocale['region'] : '';
+
+        return $lang;
+    }
+
     /**
      * @return string|null
      */
index befe2ef277921772c1adeece6a819ee08b701364..496b3fb6b652f283ef6e54f066edf0b0b3c2f41a 100644 (file)
@@ -1,9 +1,10 @@
 <!DOCTYPE html>
-<!--[if lte IE 6]><html class="no-js ie6 ie67 ie678" lang="en"><![endif]-->
-<!--[if lte IE 7]><html class="no-js ie7 ie67 ie678" lang="en"><![endif]-->
-<!--[if IE 8]><html class="no-js ie8 ie678" lang="en"><![endif]-->
-<!--[if gt IE 8]><html class="no-js" lang="en"><![endif]-->
-<html>
+{% set lang = app.request.locale|default('') -%}
+<!--[if lte IE 6]><html class="no-js ie6 ie67 ie678"{% if lang is not empty %} lang="{{ lang }}"{% endif %}><![endif]-->
+<!--[if lte IE 7]><html class="no-js ie7 ie67 ie678"{% if lang is not empty %} lang="{{ lang }}"{% endif %}><![endif]-->
+<!--[if IE 8]><html class="no-js ie8 ie678"{% if lang is not empty %} lang="{{ lang }}"{% endif %}><![endif]-->
+<!--[if gt IE 8]><html class="no-js"{% if lang is not empty %} lang="{{ lang }}"{% endif %}><![endif]-->
+<html{% if lang is not empty %} lang="{{ lang }}"{% endif %}>
     <head>
         {% block head %}
             <meta name="viewport" content="initial-scale=1.0">
index 4c0f85cc6e81f47a2ef9b20fff1c2990aad52b43..c2e69a2704652bad71e6106995fc6ca625a519fb 100644 (file)
@@ -5,7 +5,7 @@
 {% block content %}
     <div id="article">
         <header class="mbm">
-            <h1>{{ entry.title|e|default('entry.default_title'|trans)|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" class="nostyle" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
+            <h1><span{% if entry.language is defined and entry.language is not null %} lang="{{ entry.getHTMLLanguage() }}"{% endif %}>{{ entry.title|e|default('entry.default_title'|trans)|raw }}</span> <a href="{{ path('edit', { 'id': entry.id }) }}" class="nostyle" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
         </header>
 
         <div id="article_toolbar">
@@ -96,7 +96,7 @@
                 </div>
             </aside>
         </div>
-        <article>
+        <article{% if entry.language is defined and entry.language is not null %} lang="{{ entry.getHTMLLanguage() }}"{% endif %}>
             {{ entry.content | raw }}
         </article>
     </div>
index 70932f21578ff7d107e2e3df57116141cca2ba5d..e23fa0e19ec7ec7715ace7f579ba52cec9387b85 100644 (file)
 {% block content %}
     <div id="article">
         <header class="mbm">
-            <h1>{{ entry.title|striptags|default('entry.default_title'|trans)|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
+            <h1><span{% if entry.language is defined and entry.language is not null %} lang="{{ entry.getHTMLLanguage() }}"{% endif %}>{{ entry.title|striptags|default('entry.default_title'|trans)|raw }}</span> <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1>
         </header>
         <aside>
             <div class="tools">
             </div>
 
         </aside>
-        <article>
+        <article{% if entry.language is defined and entry.language is not null %} lang="{{ entry.getHTMLLanguage() }}"{% endif %}>
             {{ entry.content | raw }}
         </article>
 
diff --git a/tests/Wallabag/CoreBundle/Entity/EntryTest.php b/tests/Wallabag/CoreBundle/Entity/EntryTest.php
new file mode 100644 (file)
index 0000000..d400636
--- /dev/null
@@ -0,0 +1,28 @@
+<?php
+
+namespace Tests\Wallabag\CoreBundle\Entity;
+
+use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
+use Wallabag\CoreBundle\Entity\Entry;
+
+class EntryTest extends WallabagCoreTestCase
+{
+    public function testGetLanguage()
+    {
+        $this->logInAs('admin');
+        $entry = new Entry($this->getLoggedInUser());
+        $languages = [
+            'en_GB' => 'en-GB',
+            'en_US' => 'en-US',
+            'en-gb' => 'en-GB',
+            'en-US' => 'en-US',
+            'fr' => 'fr',
+            'fr_FR' => 'fr-FR',
+            'ja' => 'ja',
+        ];
+        foreach ($languages as $entryLang => $lang) {
+            $entry->setLanguage($entryLang);
+            $this->assertSame($lang, $entry->getHTMLLanguage());
+        }
+    }
+}