diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index beda581af..190457983 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php @@ -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 */ diff --git a/src/Wallabag/CoreBundle/Resources/views/base.html.twig b/src/Wallabag/CoreBundle/Resources/views/base.html.twig index befe2ef27..496b3fb6b 100644 --- a/src/Wallabag/CoreBundle/Resources/views/base.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/base.html.twig @@ -1,9 +1,10 @@ - - - - - +{% set lang = app.request.locale|default('') -%} + + + + + {% block head %} diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig index 4c0f85cc6..c2e69a270 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig @@ -5,7 +5,7 @@ {% block content %}
-

{{ entry.title|e|default('entry.default_title'|trans)|raw }}

+

{{ entry.title|e|default('entry.default_title'|trans)|raw }}

@@ -96,7 +96,7 @@
-
+ {{ entry.content | raw }}
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig index 70932f215..e23fa0e19 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig @@ -223,7 +223,7 @@ {% block content %}
-

{{ entry.title|striptags|default('entry.default_title'|trans)|raw }}

+

{{ entry.title|striptags|default('entry.default_title'|trans)|raw }}

-
+ {{ entry.content | raw }}
diff --git a/tests/Wallabag/CoreBundle/Entity/EntryTest.php b/tests/Wallabag/CoreBundle/Entity/EntryTest.php new file mode 100644 index 000000000..d400636e7 --- /dev/null +++ b/tests/Wallabag/CoreBundle/Entity/EntryTest.php @@ -0,0 +1,28 @@ +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()); + } + } +}