Alejandro Celaya 5 лет назад
Родитель
Сommit
737137b19f

+ 1 - 0
module/Common/src/Template/Extension/TranslatorExtension.php

@@ -20,5 +20,6 @@ class TranslatorExtension implements ExtensionInterface
     public function register(Engine $engine): void
     {
         $engine->registerFunction('translate', [$this->translator, 'translate']);
+        $engine->registerFunction('locale', [$this->translator, 'getLocale']);
     }
 }

+ 5 - 2
module/Common/test/Template/Extension/TranslatorExtensionTest.php

@@ -25,11 +25,14 @@ class TranslatorExtensionTest extends TestCase
     public function properFunctionsAreReturned()
     {
         $engine = $this->prophesize(Engine::class);
-        $registerFunction = $engine->registerFunction('translate', Argument::type('callable'))->will(function () {
+        $registerTranslate = $engine->registerFunction('translate', Argument::type('callable'))->will(function () {
+        });
+        $registerLocale = $engine->registerFunction('locale', Argument::type('array'))->will(function () {
         });
 
         $this->extension->register($engine->reveal());
 
-        $registerFunction->shouldHaveBeenCalledOnce();
+        $registerTranslate->shouldHaveBeenCalledOnce();
+        $registerLocale->shouldHaveBeenCalledOnce();
     }
 }

+ 29 - 28
module/Core/templates/layout/default.phtml

@@ -1,31 +1,32 @@
 <!DOCTYPE html>
-<html>
-<head>
-  <title><?= $this->section('title', '') ?> | URL shortener</title>
-  <meta charset="utf-8" />
-  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
-  <meta name="viewport" content="width=device-width, initial-scale=1" />
-  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" />
-  <style>
-    body {padding-top: 60px;}
-    .app {display: flex; min-height: 100vh; flex-direction: column;}
-    .app-content {flex: 1;}
-    .app-footer p {margin-bottom: 20px;}
-  </style>
-  <?= $this->section('stylesheets', '') ?>
-</head>
-<body class="app">
-  <div class="app-content">
-    <main class="container">
-      <?= $this->section('main', '') ?>
-    </main>
-  </div>
-
-  <footer class="app-footer">
-    <div class="container">
-      <hr />
-      <p>&copy; <?= date('Y') ?> <a href="https://shlink.io">Shlink</a></p>
+<html lang="<?= $this->locale() ?>">
+  <head>
+    <title><?= $this->section('title', '') ?> | URL shortener</title>
+    <meta charset="utf-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
+    <link rel="shortcut icon" href="/favicon.ico">
+    <style>
+      body {padding-top: 60px;}
+      .app {display: flex; min-height: 100vh; flex-direction: column;}
+      .app-content {flex: 1;}
+      .app-footer p {margin-bottom: 20px;}
+    </style>
+    <?= $this->section('stylesheets', '') ?>
+  </head>
+  <body class="app">
+    <div class="app-content">
+      <main class="container">
+        <?= $this->section('main', '') ?>
+      </main>
     </div>
-  </footer>
-</body>
+
+    <footer class="app-footer">
+      <div class="container">
+        <hr>
+        <p>&copy; <?= date('Y') ?> <a href="https://shlink.io">Shlink</a></p>
+      </div>
+    </footer>
+  </body>
 </html>

BIN
public/favicon.ico