diff --git a/libs/Format/HTML/Template.php b/libs/Format/HTML/Template.php index fa0900b..baa1488 100644 --- a/libs/Format/HTML/Template.php +++ b/libs/Format/HTML/Template.php @@ -1,4 +1,6 @@ -registerFunction('translate', function ($key) { $language = $this->params['language']; - if (array_key_exists($key, $this->params['strings'][$language])) { - return $this->params['strings'][$language][$key]; + if (isset($this->engine->getData('page')['page'])) { + $page = $this->engine->getData('page'); + if (is_array($page['page'])) { + $language = $page['page']['language']; + } + } + + if (array_key_exists($language, $this->params['strings'])) { + if (array_key_exists($key, $this->params['strings'][$language])) { + return $this->params['strings'][$language][$key]; + } } if (array_key_exists($key, $this->params['strings']['en'])) { diff --git a/tests/Format/HTML/TableOfContentsTest.php b/tests/Format/HTML/TableOfContentsTest.php index 78582d4..d2b50c6 100644 --- a/tests/Format/HTML/TableOfContentsTest.php +++ b/tests/Format/HTML/TableOfContentsTest.php @@ -1,5 +1,6 @@ [ + 'Page.md' => 'some text content', + ], + 'it' => [ + 'Page.md' => 'another page', + ], + ]; + $root = vfsStream::setup('root', null, $structure); + + $config->setDocumentationDirectory($root->url()); + $config['valid_content_extensions'] = ['md']; + $config['mode'] = Daux::STATIC_MODE; + $config['index_key'] = 'index.html'; + + $tree = new Root($config); + Builder::build($tree, []); + + return $tree; + } + + public function translateDataProvider() + { + return [ + ['Previous', 'en'], + ['Pagina precedente', 'it'], + ]; + } + + /** + * @dataProvider translateDataProvider + * + * @param $expectedTranslation + * @param $language + */ + public function testTranslate($expectedTranslation, $language) + { + $current = $language . '/Page.html'; + $entry = $this->prophesize(Entry::class); + + $config = new Config(); + $config['tree'] = $this->getTree($config); + $config['title'] = ''; + $config['index'] = $entry->reveal(); + $config['language'] = $language; + $config['base_url'] = ''; + $config['base_page'] = ''; + $config['templates'] = ''; + $config['page']['language'] = $language; + + $config['html'] = [ + 'search' => '', + 'float' => false, + 'toggle_code' => false, + 'piwik_analytics' => '', + 'google_analytics' => '', + ]; + $config['theme'] = [ + 'js' => [''], + 'css' => [''], + 'fonts' => [''], + 'favicon' => '', + 'templates' => 'name', + ]; + $config['strings'] = [ + 'en' => ['Link_previous' => 'Previous',], + 'it' => ['Link_previous' => 'Pagina precedente',], + ]; + + + $config->setCurrentPage(DauxHelper::getFile($config['tree'], $current)); + + $template = new Template($config); + $value = $template->getEngine($config)->getFunction('translate')->call(null, ['Link_previous']); + + $this->assertEquals($expectedTranslation, $value); + } +}