diff --git a/global.json b/global.json index d222860..9327923 100755 --- a/global.json +++ b/global.json @@ -76,6 +76,27 @@ "View_on_github": "Bei GitHub anzeigen", "View_documentation": "Dokumentation anzeigen", "Table_of_contents": "Inhaltsverzeichnis" + }, + "it": { + "CodeBlocks_title": "Blocchi di codice", + "CodeBlocks_hide": "No", + "CodeBlocks_below": "Sotto", + "CodeBlocks_inline": "In linea", + "CodeBlocks_show": "Mostra blocchi di codice", + "Search_one_result": "1 risultato", + "Search_results": "!count risultati", + "Search_no_results": "Nessun risultato trovato", + "Search_common_words_ignored": "Le parole comuni vengono per lo più ignorate", + "Search_too_short": "Ricerca troppo breve", + "Search_one_character_or_more": "Dovrebbe essere composto da uno o più caratteri", + "Search_should_be_x_or_more": "Dovrebbe essere composto da almeno !min caratteri", + "Search_placeholder": "Cerca...", + "Link_previous": "Pagina precedente", + "Link_next": "Pagina successiva", + "Edit_on": "Modifica su :name:", + "View_on_github": "Guarda su GitHub", + "View_documentation": "Leggi la documentazione", + "Table_of_contents": "Contenuti" } }, 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); + } +}