From a9796183e18c0700b5f0559c9afa63548d553a9d Mon Sep 17 00:00:00 2001 From: Fabian Becker <fabian.becker@uni-tuebingen.de> Date: Fri, 16 Aug 2013 14:55:10 +0200 Subject: [PATCH] Fix failing LanguagesManagerTest and LanguagesManager API --- plugins/LanguagesManager/API.php | 56 +++++++++++++------ .../PHPUnit/Plugins/LanguagesManagerTest.php | 5 +- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/plugins/LanguagesManager/API.php b/plugins/LanguagesManager/API.php index 332b68cc9c..2c14dcac73 100644 --- a/plugins/LanguagesManager/API.php +++ b/plugins/LanguagesManager/API.php @@ -69,12 +69,12 @@ class API return $this->languageNames; } $path = PIWIK_INCLUDE_PATH . "/lang/"; - $languages = _glob($path . "*.php"); + $languages = _glob($path . "*.json"); $pathLength = strlen($path); $languageNames = array(); if ($languages) { foreach ($languages as $language) { - $languageNames[] = substr($language, $pathLength, -strlen('.php')); + $languageNames[] = substr($language, $pathLength, -strlen('.json')); } } $this->languageNames = $languageNames; @@ -88,20 +88,34 @@ class API */ public function getAvailableLanguagesInfo() { - require PIWIK_INCLUDE_PATH . '/lang/en.php'; + $data = file_get_contents(PIWIK_INCLUDE_PATH . '/lang/en.json'); + $translations = json_decode($data, true); $englishTranslation = $translations; $filenames = $this->getAvailableLanguages(); $languagesInfo = array(); foreach ($filenames as $filename) { - require PIWIK_INCLUDE_PATH . "/lang/$filename.php"; - $translationStringsDone = array_intersect_key($englishTranslation, array_filter($translations, 'strlen')); - $percentageComplete = count($translationStringsDone) / count($englishTranslation); + $data = file_get_contents(PIWIK_INCLUDE_PATH . '/lang/$filename.json'); + $translations = json_decode($data, true); + + $intersect = function($array, $array2) { + $res = $array(); + foreach($array as $module => $keys) { + if(!isset($array2[$module])) { + unset($res[$module]); + } else { + $res[$module] = array_intersect_key($res[$module], array_filter($array2[$module], 'strlen')); + } + } + return $res; + }; + $translationStringsDone = $intersect($englishTranslation, $translations); + $percentageComplete = count($translationStringsDone, COUNT_RECURSIVE) / count($englishTranslation, COUNT_RECURSIVE); $percentageComplete = round(100 * $percentageComplete, 0); $languageInfo = array('code' => $filename, - 'name' => $translations['General_OriginalLanguageName'], - 'english_name' => $translations['General_EnglishLanguageName'], - 'translators' => $translations['General_TranslatorName'], - 'translators_email' => $translations['General_TranslatorEmail'], + 'name' => $translations['General']['OriginalLanguageName'], + 'english_name' => $translations['General']['EnglishLanguageName'], + 'translators' => $translations['General']['TranslatorName'], + 'translators_email' => $translations['General']['TranslatorEmail'], 'percentage_complete' => $percentageComplete . '%', ); $languagesInfo[] = $languageInfo; @@ -121,13 +135,14 @@ class API } $filenames = $this->getAvailableLanguages(); - $translations = $languagesInfo = array(); + $languagesInfo = array(); foreach ($filenames as $filename) { - require PIWIK_INCLUDE_PATH . "/lang/$filename.php"; + $data = file_get_contents(PIWIK_INCLUDE_PATH . "/lang/$filename.json"); + $translations = json_decode($data, true); $languagesInfo[] = array( 'code' => $filename, - 'name' => $translations['General_OriginalLanguageName'], - 'english_name' => $translations['General_EnglishLanguageName'] + 'name' => $translations['General']['OriginalLanguageName'], + 'english_name' => $translations['General']['EnglishLanguageName'] ); } $this->availableLanguageNames = $languagesInfo; @@ -145,11 +160,16 @@ class API if (!$this->isLanguageAvailable($languageCode)) { return false; } - $translations = array(); - require PIWIK_INCLUDE_PATH . "/lang/$languageCode.php"; + $data = file_get_contents(PIWIK_INCLUDE_PATH . "/lang/$languageCode.json"); + $translations = json_decode($data, true); $languageInfo = array(); - foreach ($translations as $key => $value) { - $languageInfo[] = array('label' => $key, 'value' => $value); + foreach ($translations as $module => $keys) { + foreach($keys as $key => $value) { + $languageInfo[] = array( + 'label' => sprintf("%s_%s", $module, $key), + 'value' => $value + ); + } } return $languageInfo; } diff --git a/tests/PHPUnit/Plugins/LanguagesManagerTest.php b/tests/PHPUnit/Plugins/LanguagesManagerTest.php index ac7d2de015..9e5e8e30b5 100755 --- a/tests/PHPUnit/Plugins/LanguagesManagerTest.php +++ b/tests/PHPUnit/Plugins/LanguagesManagerTest.php @@ -250,8 +250,9 @@ class Test_LanguagesManager extends PHPUnit_Framework_TestCase { $languages = API::getInstance()->getAvailableLanguages(); foreach ($languages as $language) { - require PIWIK_INCLUDE_PATH . "/lang/$language.php"; - $name = $translations['General_EnglishLanguageName']; + $data = file_get_contents(PIWIK_INCLUDE_PATH . "/lang/$language.json"); + $translations = json_decode($data, true); + $name = $translations['General']['EnglishLanguageName']; if ($language != 'en') { $this->assertFalse($name == 'English', "for $language"); -- GitLab