diff --git a/core/Date.php b/core/Date.php index d229cfdb46c7457a1bf9a8172948164b02b71d03..4f792200e202aa99b38ea20faba15d56400b745f 100644 --- a/core/Date.php +++ b/core/Date.php @@ -627,10 +627,10 @@ class Date $monthOfYear = $this->toString('n'); $patternToValue = array( "%day%" => $day, - "%shortMonth%" => $translator->translate('General_ShortMonth_' . $monthOfYear), - "%longMonth%" => $translator->translate('General_LongMonth_' . $monthOfYear), - "%shortDay%" => $translator->translate('General_ShortDay_' . $dayOfWeek), - "%longDay%" => $translator->translate('General_LongDay_' . $dayOfWeek), + "%shortMonth%" => $translator->translate('Intl_ShortMonth_' . $monthOfYear), + "%longMonth%" => $translator->translate('Intl_LongMonth_' . $monthOfYear), + "%shortDay%" => $translator->translate('Intl_ShortDay_' . $dayOfWeek), + "%longDay%" => $translator->translate('Intl_LongDay_' . $dayOfWeek), "%longYear%" => $this->toString('Y'), "%shortYear%" => $this->toString('y'), "%time%" => $this->toString('H:i:s') diff --git a/core/Intl/Data/Resources/countries.php b/core/Intl/Data/Resources/countries.php index 15197f8846cf9ec764ba5eff396aa58bcbb269dd..90485095252d16c714db8da3b1c603d2d142a1c4 100644 --- a/core/Intl/Data/Resources/countries.php +++ b/core/Intl/Data/Resources/countries.php @@ -237,7 +237,7 @@ return array( 'tf' => 'ant', 'tg' => 'afr', 'th' => 'asi', - 'ti' => 'asi', + 'ti' => 'asi', // Tibet (no iso 3166 code) 'tj' => 'asi', 'tk' => 'oce', 'tl' => 'asi', diff --git a/core/Translation/Translator.php b/core/Translation/Translator.php index 902c70c72f2cae7c08773ec9293bb8c53819df2a..9dfc610c8d8541fa392f9316398f1ef40e97510a 100644 --- a/core/Translation/Translator.php +++ b/core/Translation/Translator.php @@ -34,6 +34,13 @@ class Translator */ protected $loadedCountryTranslations = array(); + /** + * Contains the already loaded continent name translations + * + * @var array + */ + protected $loadedContinentTranslations = array(); + /** * Contains the already loaded language name translations * @@ -41,6 +48,13 @@ class Translator */ private $loadedLanguageTranslations = array(); + /** + * Contains the already loaded calendar translations + * + * @var array + */ + private $loadedCalendarTranslations = array(); + /** * @var string */ @@ -103,67 +117,6 @@ class Translator return vsprintf($translationId, $args); } - /** - * Returns the country name for the given country code translated to the given language - * - * @param string $countryCode ISO 3166-1 alpha-2 country code - * @param null|string $language ISO 639-1 language code (defaults to current language) - * @return string translated country name - */ - public function getTranslatedCountry($countryCode, $language=null) - { - $filePattern = PIWIK_INCLUDE_PATH . '/core/Intl/Data/Resources/countries/%s.json'; - - $language = is_string($language) ? $language : $this->getCurrentLanguage(); - $countryCode = strtoupper($countryCode); - - // try to get country name in given language - if (!array_key_exists($language, $this->loadedCountryTranslations) && file_exists(sprintf($filePattern, $language))) { - $this->loadedCountryTranslations[$language] = @json_decode(file_get_contents(sprintf($filePattern, $language)), true); - } - - if (!empty($this->loadedCountryTranslations[$language][$countryCode])) { - return $this->loadedCountryTranslations[$language][$countryCode]; - } - - // fall back to english country name - if ($language != 'en') { - return $this->getTranslatedCountry($countryCode, 'en'); - } - - return ''; - } - - /** - * Returns the language name for the given country code translated to the given language - * - * @param string $languageCode ISO 639-1 language code - * @param null|string $language ISO 639-1 language code (defaults to current language) - * @return string translated language name - */ - public function getTranslatedLanguage($languageCode, $language=null) - { - $filePattern = PIWIK_INCLUDE_PATH . '/core/Intl/Data/Resources/languages/%s.json'; - - $language = is_string($language) ? $language : $this->getCurrentLanguage(); - - // try to get country name in given language - if (!array_key_exists($language, $this->loadedLanguageTranslations) && file_exists(sprintf($filePattern, $language))) { - $this->loadedLanguageTranslations[$language] = @json_decode(file_get_contents(sprintf($filePattern, $language)), true); - } - - if (!empty($this->loadedLanguageTranslations[$language][$languageCode])) { - return $this->loadedLanguageTranslations[$language][$languageCode]; - } - - // fall back to english language name - if ($language != 'en') { - return $this->getTranslatedLanguage($languageCode, 'en'); - } - - return ''; - } - /** * @return string */ diff --git a/plugins/Annotations/Annotations.php b/plugins/Annotations/Annotations.php index daf89e93a6ae7bcb1a7ebf7d3d5f28cd49d36cf6..c560f56b9feb7302f23eeddaf22cdd6f4bf8776b 100755 --- a/plugins/Annotations/Annotations.php +++ b/plugins/Annotations/Annotations.php @@ -29,7 +29,7 @@ class Annotations extends \Piwik\Plugin public function getClientSideTranslationKeys(&$translationKeys) { - $translationKeys[] = 'General_Today'; + $translationKeys[] = 'Intl_Today'; } /** diff --git a/plugins/Annotations/javascripts/annotations.js b/plugins/Annotations/javascripts/annotations.js index 4f8d21de6aaba0a76651c4bfe74fcc39cfabb813..28adbc126bbe75fcd009ee647d1fea38e7c1c218 100755 --- a/plugins/Annotations/javascripts/annotations.js +++ b/plugins/Annotations/javascripts/annotations.js @@ -127,7 +127,7 @@ var result = piwik.getBaseDatePickerOptions(annotationDate); result.showButtonPanel = true; - result.currentText = _pk_translate('General_Today'); + result.currentText = _pk_translate('Intl_Today'); // make sure days before site start & after today cannot be selected var piwikMinDate = result.minDate; diff --git a/plugins/CoreHome/CoreHome.php b/plugins/CoreHome/CoreHome.php index 5e519a7966f73e1176e20bbd5f1caf94c86c15bb..f28a2c7f8e0a63ab26e55b8de97295650b132099 100644 --- a/plugins/CoreHome/CoreHome.php +++ b/plugins/CoreHome/CoreHome.php @@ -171,7 +171,7 @@ class CoreHome extends \Piwik\Plugin $translationKeys[] = 'General_Loading'; $translationKeys[] = 'General_Show'; $translationKeys[] = 'General_Hide'; - $translationKeys[] = 'General_YearShort'; + $translationKeys[] = 'Intl_YearShort'; $translationKeys[] = 'General_MultiSitesSummary'; $translationKeys[] = 'CoreHome_YouAreUsingTheLatestVersion'; $translationKeys[] = 'CoreHome_IncludeRowsWithLowPopulation'; @@ -193,51 +193,51 @@ class CoreHome extends \Piwik\Plugin $translationKeys[] = 'Annotations_HideAnnotationsFor'; $translationKeys[] = 'General_LoadingPopover'; $translationKeys[] = 'General_LoadingPopoverFor'; - $translationKeys[] = 'General_ShortMonth_1'; - $translationKeys[] = 'General_ShortMonth_2'; - $translationKeys[] = 'General_ShortMonth_3'; - $translationKeys[] = 'General_ShortMonth_4'; - $translationKeys[] = 'General_ShortMonth_5'; - $translationKeys[] = 'General_ShortMonth_6'; - $translationKeys[] = 'General_ShortMonth_7'; - $translationKeys[] = 'General_ShortMonth_8'; - $translationKeys[] = 'General_ShortMonth_9'; - $translationKeys[] = 'General_ShortMonth_10'; - $translationKeys[] = 'General_ShortMonth_11'; - $translationKeys[] = 'General_ShortMonth_12'; - $translationKeys[] = 'General_LongMonth_1'; - $translationKeys[] = 'General_LongMonth_2'; - $translationKeys[] = 'General_LongMonth_3'; - $translationKeys[] = 'General_LongMonth_4'; - $translationKeys[] = 'General_LongMonth_5'; - $translationKeys[] = 'General_LongMonth_6'; - $translationKeys[] = 'General_LongMonth_7'; - $translationKeys[] = 'General_LongMonth_8'; - $translationKeys[] = 'General_LongMonth_9'; - $translationKeys[] = 'General_LongMonth_10'; - $translationKeys[] = 'General_LongMonth_11'; - $translationKeys[] = 'General_LongMonth_12'; - $translationKeys[] = 'General_ShortDay_1'; - $translationKeys[] = 'General_ShortDay_2'; - $translationKeys[] = 'General_ShortDay_3'; - $translationKeys[] = 'General_ShortDay_4'; - $translationKeys[] = 'General_ShortDay_5'; - $translationKeys[] = 'General_ShortDay_6'; - $translationKeys[] = 'General_ShortDay_7'; - $translationKeys[] = 'General_LongDay_1'; - $translationKeys[] = 'General_LongDay_2'; - $translationKeys[] = 'General_LongDay_3'; - $translationKeys[] = 'General_LongDay_4'; - $translationKeys[] = 'General_LongDay_5'; - $translationKeys[] = 'General_LongDay_6'; - $translationKeys[] = 'General_LongDay_7'; - $translationKeys[] = 'General_DayMo'; - $translationKeys[] = 'General_DayTu'; - $translationKeys[] = 'General_DayWe'; - $translationKeys[] = 'General_DayTh'; - $translationKeys[] = 'General_DayFr'; - $translationKeys[] = 'General_DaySa'; - $translationKeys[] = 'General_DaySu'; + $translationKeys[] = 'Intl_ShortMonth_1'; + $translationKeys[] = 'Intl_ShortMonth_2'; + $translationKeys[] = 'Intl_ShortMonth_3'; + $translationKeys[] = 'Intl_ShortMonth_4'; + $translationKeys[] = 'Intl_ShortMonth_5'; + $translationKeys[] = 'Intl_ShortMonth_6'; + $translationKeys[] = 'Intl_ShortMonth_7'; + $translationKeys[] = 'Intl_ShortMonth_8'; + $translationKeys[] = 'Intl_ShortMonth_9'; + $translationKeys[] = 'Intl_ShortMonth_10'; + $translationKeys[] = 'Intl_ShortMonth_11'; + $translationKeys[] = 'Intl_ShortMonth_12'; + $translationKeys[] = 'Intl_LongMonth_1'; + $translationKeys[] = 'Intl_LongMonth_2'; + $translationKeys[] = 'Intl_LongMonth_3'; + $translationKeys[] = 'Intl_LongMonth_4'; + $translationKeys[] = 'Intl_LongMonth_5'; + $translationKeys[] = 'Intl_LongMonth_6'; + $translationKeys[] = 'Intl_LongMonth_7'; + $translationKeys[] = 'Intl_LongMonth_8'; + $translationKeys[] = 'Intl_LongMonth_9'; + $translationKeys[] = 'Intl_LongMonth_10'; + $translationKeys[] = 'Intl_LongMonth_11'; + $translationKeys[] = 'Intl_LongMonth_12'; + $translationKeys[] = 'Intl_ShortDay_1'; + $translationKeys[] = 'Intl_ShortDay_2'; + $translationKeys[] = 'Intl_ShortDay_3'; + $translationKeys[] = 'Intl_ShortDay_4'; + $translationKeys[] = 'Intl_ShortDay_5'; + $translationKeys[] = 'Intl_ShortDay_6'; + $translationKeys[] = 'Intl_ShortDay_7'; + $translationKeys[] = 'Intl_LongDay_1'; + $translationKeys[] = 'Intl_LongDay_2'; + $translationKeys[] = 'Intl_LongDay_3'; + $translationKeys[] = 'Intl_LongDay_4'; + $translationKeys[] = 'Intl_LongDay_5'; + $translationKeys[] = 'Intl_LongDay_6'; + $translationKeys[] = 'Intl_LongDay_7'; + $translationKeys[] = 'Intl_DayMo'; + $translationKeys[] = 'Intl_DayTu'; + $translationKeys[] = 'Intl_DayWe'; + $translationKeys[] = 'Intl_DayTh'; + $translationKeys[] = 'Intl_DayFr'; + $translationKeys[] = 'Intl_DaySa'; + $translationKeys[] = 'Intl_DaySu'; $translationKeys[] = 'General_Search'; $translationKeys[] = 'General_Clear'; $translationKeys[] = 'General_MoreDetails'; diff --git a/plugins/CoreHome/javascripts/calendar.js b/plugins/CoreHome/javascripts/calendar.js index 93ecb553f201f717c32900cadc85eefd2c1ee14d..cf707810552ee5e008d7f9ce03fbbb2b92ffb0fd 100644 --- a/plugins/CoreHome/javascripts/calendar.js +++ b/plugins/CoreHome/javascripts/calendar.js @@ -131,55 +131,55 @@ stepMonths: 1, // jquery-ui-i18n 1.7.2 lacks some translations, so we use our own dayNamesMin: [ - _pk_translate('General_DaySu'), - _pk_translate('General_DayMo'), - _pk_translate('General_DayTu'), - _pk_translate('General_DayWe'), - _pk_translate('General_DayTh'), - _pk_translate('General_DayFr'), - _pk_translate('General_DaySa')], + _pk_translate('Intl_DaySu'), + _pk_translate('Intl_DayMo'), + _pk_translate('Intl_DayTu'), + _pk_translate('Intl_DayWe'), + _pk_translate('Intl_DayTh'), + _pk_translate('Intl_DayFr'), + _pk_translate('Intl_DaySa')], dayNamesShort: [ - _pk_translate('General_ShortDay_7'), // start with sunday - _pk_translate('General_ShortDay_1'), - _pk_translate('General_ShortDay_2'), - _pk_translate('General_ShortDay_3'), - _pk_translate('General_ShortDay_4'), - _pk_translate('General_ShortDay_5'), - _pk_translate('General_ShortDay_6')], + _pk_translate('Intl_ShortDay_7'), // start with sunday + _pk_translate('Intl_ShortDay_1'), + _pk_translate('Intl_ShortDay_2'), + _pk_translate('Intl_ShortDay_3'), + _pk_translate('Intl_ShortDay_4'), + _pk_translate('Intl_ShortDay_5'), + _pk_translate('Intl_ShortDay_6')], dayNames: [ - _pk_translate('General_LongDay_7'), // start with sunday - _pk_translate('General_LongDay_1'), - _pk_translate('General_LongDay_2'), - _pk_translate('General_LongDay_3'), - _pk_translate('General_LongDay_4'), - _pk_translate('General_LongDay_5'), - _pk_translate('General_LongDay_6')], + _pk_translate('Intl_LongDay_7'), // start with sunday + _pk_translate('Intl_LongDay_1'), + _pk_translate('Intl_LongDay_2'), + _pk_translate('Intl_LongDay_3'), + _pk_translate('Intl_LongDay_4'), + _pk_translate('Intl_LongDay_5'), + _pk_translate('Intl_LongDay_6')], monthNamesShort: [ - _pk_translate('General_ShortMonth_1'), - _pk_translate('General_ShortMonth_2'), - _pk_translate('General_ShortMonth_3'), - _pk_translate('General_ShortMonth_4'), - _pk_translate('General_ShortMonth_5'), - _pk_translate('General_ShortMonth_6'), - _pk_translate('General_ShortMonth_7'), - _pk_translate('General_ShortMonth_8'), - _pk_translate('General_ShortMonth_9'), - _pk_translate('General_ShortMonth_10'), - _pk_translate('General_ShortMonth_11'), - _pk_translate('General_ShortMonth_12')], + _pk_translate('Intl_ShortMonth_1'), + _pk_translate('Intl_ShortMonth_2'), + _pk_translate('Intl_ShortMonth_3'), + _pk_translate('Intl_ShortMonth_4'), + _pk_translate('Intl_ShortMonth_5'), + _pk_translate('Intl_ShortMonth_6'), + _pk_translate('Intl_ShortMonth_7'), + _pk_translate('Intl_ShortMonth_8'), + _pk_translate('Intl_ShortMonth_9'), + _pk_translate('Intl_ShortMonth_10'), + _pk_translate('Intl_ShortMonth_11'), + _pk_translate('Intl_ShortMonth_12')], monthNames: [ - _pk_translate('General_LongMonth_1'), - _pk_translate('General_LongMonth_2'), - _pk_translate('General_LongMonth_3'), - _pk_translate('General_LongMonth_4'), - _pk_translate('General_LongMonth_5'), - _pk_translate('General_LongMonth_6'), - _pk_translate('General_LongMonth_7'), - _pk_translate('General_LongMonth_8'), - _pk_translate('General_LongMonth_9'), - _pk_translate('General_LongMonth_10'), - _pk_translate('General_LongMonth_11'), - _pk_translate('General_LongMonth_12')] + _pk_translate('Intl_LongMonth_1'), + _pk_translate('Intl_LongMonth_2'), + _pk_translate('Intl_LongMonth_3'), + _pk_translate('Intl_LongMonth_4'), + _pk_translate('Intl_LongMonth_5'), + _pk_translate('Intl_LongMonth_6'), + _pk_translate('Intl_LongMonth_7'), + _pk_translate('Intl_LongMonth_8'), + _pk_translate('Intl_LongMonth_9'), + _pk_translate('Intl_LongMonth_10'), + _pk_translate('Intl_LongMonth_11'), + _pk_translate('Intl_LongMonth_12')] }; }; diff --git a/plugins/CoreHome/javascripts/donate.js b/plugins/CoreHome/javascripts/donate.js index 3f860f6b2ae2d60cfc2d7922744ce3f4b234a5b8..a1f78a38f91e4f8761171829132c7cc45d331d2f 100755 --- a/plugins/CoreHome/javascripts/donate.js +++ b/plugins/CoreHome/javascripts/donate.js @@ -24,7 +24,7 @@ // set's the correct amount text & smiley face image based on the position of the slider var setSmileyFaceAndAmount = function (slider, pos) { // set text yearly amount - $('.slider-donate-amount', slider).text('$' + donateAmounts[pos] + '/' + _pk_translate('General_YearShort')); + $('.slider-donate-amount', slider).text('$' + donateAmounts[pos] + '/' + _pk_translate('Intl_YearShort')); // set the right smiley face $('.slider-smiley-face').attr('src', 'plugins/Morpheus/images/smileyprog_' + pos + '.png'); diff --git a/plugins/CoreHome/templates/_donate.twig b/plugins/CoreHome/templates/_donate.twig index d7dbde58c22f319b9ecd0ddbcda85b1680c65c1c..34cd2065750e75d509aac6e65422450549089327 100755 --- a/plugins/CoreHome/templates/_donate.twig +++ b/plugins/CoreHome/templates/_donate.twig @@ -24,7 +24,7 @@ <div class="slider-position"></div> </div> <div style="display:inline-block;"> - <div class="slider-donate-amount">$30/{{ 'General_YearShort'|translate }}</div> + <div class="slider-donate-amount">$30/{{ 'Intl_YearShort'|translate }}</div> <img class="slider-smiley-face" width="40" height="40" src="plugins/Morpheus/images/smileyprog_1.png"/> </div> diff --git a/plugins/LanguagesManager/API.php b/plugins/LanguagesManager/API.php index 82209a495e05ba915db81f4042936af51e17fa59..bddfaff45080f0fe8f593dbd25d35ffa9c4ea112 100644 --- a/plugins/LanguagesManager/API.php +++ b/plugins/LanguagesManager/API.php @@ -132,8 +132,8 @@ class API extends \Piwik\Plugin\API $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'], + 'name' => $translations['Intl']['OriginalLanguageName'], + 'english_name' => $translations['Intl']['EnglishLanguageName'], 'translators' => $translations['General']['TranslatorName'], 'translators_email' => $translations['General']['TranslatorEmail'], 'percentage_complete' => $percentageComplete . '%', @@ -285,12 +285,12 @@ class API extends \Piwik\Plugin\API $filenames = $this->getAvailableLanguages(); $languagesInfo = array(); foreach ($filenames as $filename) { - $data = file_get_contents(PIWIK_INCLUDE_PATH . "/lang/$filename.json"); + $data = file_get_contents(PIWIK_INCLUDE_PATH . "/plugins/Intl/lang/$filename.json"); $translations = json_decode($data, true); $languagesInfo[] = array( 'code' => $filename, - 'name' => $translations['General']['OriginalLanguageName'], - 'english_name' => $translations['General']['EnglishLanguageName'] + 'name' => $translations['Intl']['OriginalLanguageName'], + 'english_name' => $translations['Intl']['EnglishLanguageName'] ); } diff --git a/plugins/LanguagesManager/Test/Integration/LanguagesManagerTest.php b/plugins/LanguagesManager/Test/Integration/LanguagesManagerTest.php index 1d0b74f3bf4c3437398f8c154f79edcfe90e2b53..cf85b79bcf09a73670bc72e4fbabc9d6f2c472a1 100755 --- a/plugins/LanguagesManager/Test/Integration/LanguagesManagerTest.php +++ b/plugins/LanguagesManager/Test/Integration/LanguagesManagerTest.php @@ -139,9 +139,9 @@ class LanguagesManagerTest extends \PHPUnit_Framework_TestCase $languagesReference = $dataProvider->getLanguageList(); foreach ($languages as $language) { - $data = file_get_contents(PIWIK_INCLUDE_PATH . "/lang/$language.json"); + $data = file_get_contents(PIWIK_INCLUDE_PATH . "/plugins/Intl/lang/$language.json"); $translations = json_decode($data, true); - $name = $translations['General']['EnglishLanguageName']; + $name = $translations['Intl']['EnglishLanguageName']; if ($language != 'en') { $this->assertFalse($name == 'English', "for $language"); diff --git a/plugins/Overlay/templates/index.twig b/plugins/Overlay/templates/index.twig index a5ab981c0570deedde2ccfaa4c7192e067436ca0..0917f196728d9ede63eb579b9443b7457d4a396a 100644 --- a/plugins/Overlay/templates/index.twig +++ b/plugins/Overlay/templates/index.twig @@ -15,8 +15,8 @@ <div id="Overlay_DateRangeSelection"> <select id="Overlay_DateRangeSelect" name="Overlay_DateRangeSelect"> - <option value="day;today">{{ 'General_Today'|translate }}</option> - <option value="day;yesterday">{{ 'General_Yesterday'|translate }}</option> + <option value="day;today">{{ 'Intl_Today'|translate }}</option> + <option value="day;yesterday">{{ 'Intl_Yesterday'|translate }}</option> <option value="week;today">{{ 'General_CurrentWeek'|translate }}</option> <option value="month;today">{{ 'General_CurrentMonth'|translate }}</option> <option value="year;today">{{ 'General_CurrentYear'|translate }}</option> diff --git a/plugins/UserCountry/LocationProvider.php b/plugins/UserCountry/LocationProvider.php index 381f9faa0096eb7795a8b2f555db48105beda7d1..01eef0f97705c171488fffe71cab9553692cf602 100755 --- a/plugins/UserCountry/LocationProvider.php +++ b/plugins/UserCountry/LocationProvider.php @@ -352,7 +352,7 @@ abstract class LocationProvider && !empty($location[self::CONTINENT_CODE_KEY]) ) { $continentCode = strtolower($location[self::CONTINENT_CODE_KEY]); - $location[self::CONTINENT_NAME_KEY] = Piwik::translate('UserCountry_continent_' . $continentCode); + $location[self::CONTINENT_NAME_KEY] = continentTranslate($continentCode); } // fill in country name if country code is present diff --git a/plugins/UserCountry/functions.php b/plugins/UserCountry/functions.php index 8ef8e1c4b0cee4d210fc316706824503fea1cf93..830f026edac310edcfbc50cf6992e12f11424442 100644 --- a/plugins/UserCountry/functions.php +++ b/plugins/UserCountry/functions.php @@ -43,7 +43,7 @@ function continentTranslate($label) if ($label == 'unk' || $label == '') { return Piwik::translate('General_Unknown'); } - return Piwik::translate('UserCountry_continent_' . $label); + return Piwik::translate('Intl_Continent_' . $label); } /** @@ -58,9 +58,23 @@ function countryTranslate($label) return Piwik::translate('General_Unknown'); } - $country = StaticContainer::get('Piwik\Translation\Translator')->getTranslatedCountry($label); + // Try to get name from Intl plugin + $key = 'Intl_Country_' . strtoupper($label); + $country = Piwik::translate($key); - return $country ? $country : Piwik::translate('UserCountry_country_' . $label); + if ($country != $key) { + return $country; + } + + // Handle special country codes + $key = 'UserCountry_country_' . $label; + $country = Piwik::translate($key); + + if ($country != $key) { + return $country; + } + + return Piwik::translate('General_Unknown'); } /** diff --git a/plugins/UserCountryMap/Controller.php b/plugins/UserCountryMap/Controller.php index f1cc36eed010ea7d2c2bb4724480a28153c40c61..63e84c6ba877e1d92487f48e8839138855d0427c 100644 --- a/plugins/UserCountryMap/Controller.php +++ b/plugins/UserCountryMap/Controller.php @@ -105,6 +105,15 @@ class Controller extends \Piwik\Plugin\Controller $view->config = json_encode($config); $view->noData = empty($config['visitsSummary']['nb_visits']); + $view->continents = array( + 'AF' => \Piwik\Plugins\UserCountry\continentTranslate('afr'), + 'AS' => \Piwik\Plugins\UserCountry\continentTranslate('asi'), + 'EU' => \Piwik\Plugins\UserCountry\continentTranslate('eur'), + 'NA' => \Piwik\Plugins\UserCountry\continentTranslate('amn'), + 'OC' => \Piwik\Plugins\UserCountry\continentTranslate('oce'), + 'SA' => \Piwik\Plugins\UserCountry\continentTranslate('ams') + ); + return $view->render(); } diff --git a/plugins/UserCountryMap/templates/visitorMap.twig b/plugins/UserCountryMap/templates/visitorMap.twig index 5959be340778501481b6b560b78504155e7e3555..7fed99203545e2cab8a5c72a030a8d297f0275bd 100644 --- a/plugins/UserCountryMap/templates/visitorMap.twig +++ b/plugins/UserCountryMap/templates/visitorMap.twig @@ -63,12 +63,9 @@ <select class="userCountryMapSelectCountry"> <option value="world">{{ 'UserCountryMap_WorldWide'|translate }}</option> <option disabled="disabled">––––––</option> - <option value="AF">{{ 'UserCountry_continent_afr'|translate }}</option> - <option value="AS">{{ 'UserCountry_continent_asi'|translate }}</option> - <option value="EU">{{ 'UserCountry_continent_eur'|translate }}</option> - <option value="NA">{{ 'UserCountry_continent_amn'|translate }}</option> - <option value="OC">{{ 'UserCountry_continent_oce'|translate }}</option> - <option value="SA">{{ 'UserCountry_continent_ams'|translate }}</option> + {% for code,continent in continents %} + <option value="{{ code }}">{{ continent }}</option> + {% endfor %} <option disabled="disabled">––––––</option> </select> </div> diff --git a/plugins/UserLanguage/functions.php b/plugins/UserLanguage/functions.php index 8e5b4eeccc453ca10b152560a9c2adf62ce9f806..bc8175c77ad3fb01cdae8ba4ea0b9db33473015e 100644 --- a/plugins/UserLanguage/functions.php +++ b/plugins/UserLanguage/functions.php @@ -25,9 +25,9 @@ function languageTranslate($label) return Piwik::translate('General_Unknown'); } - $language = StaticContainer::get('Piwik\Translation\Translator')->getTranslatedLanguage($label); + $language = Piwik::translate('Intl_Language_'.$label); - if ($language) { + if ($language != 'Intl_Language_'.$label) { return $language; } @@ -54,9 +54,9 @@ function languageTranslateWithCode($label) if (count($ex) == 2 && $ex[0] != $ex[1]) { $countryKey = 'UserCountry_country_' . $ex[1]; - $country = StaticContainer::get('Piwik\Translation\Translator')->getTranslatedCountry($ex[1]); + $country = Piwik::translate('Intl_Country_'.strtoupper($ex[1])); - if (empty($country)) { + if ($country == 'Intl_Country_'.strtoupper($ex[1])) { $country = Piwik::translate($countryKey); } diff --git a/plugins/UsersManager/Controller.php b/plugins/UsersManager/Controller.php index 635e49cb9224d0669802b529cf437d1a96366691..105d795036aeae2e1de90cfdd18d3fbeb5a8e19b 100644 --- a/plugins/UsersManager/Controller.php +++ b/plugins/UsersManager/Controller.php @@ -175,8 +175,8 @@ class Controller extends ControllerAdmin protected function getDefaultDates() { $dates = array( - 'today' => $this->translator->translate('General_Today'), - 'yesterday' => $this->translator->translate('General_Yesterday'), + 'today' => $this->translator->translate('Intl_Today'), + 'yesterday' => $this->translator->translate('Intl_Yesterday'), 'previous7' => $this->translator->translate('General_PreviousDays', 7), 'previous30' => $this->translator->translate('General_PreviousDays', 30), 'last7' => $this->translator->translate('General_LastDays', 7), diff --git a/plugins/VisitTime/functions.php b/plugins/VisitTime/functions.php index a52b8ffba8b31778536539ffae18c15dd6d7e7eb..4b7d0250085b41e3d0afabbe5d712a1e9dfd408b 100644 --- a/plugins/VisitTime/functions.php +++ b/plugins/VisitTime/functions.php @@ -36,5 +36,5 @@ function dayOfWeekFromDate($dateStr) */ function translateDayOfWeek($dayOfWeek) { - return Piwik::translate('General_LongDay_' . $dayOfWeek); + return Piwik::translate('Intl_LongDay_' . $dayOfWeek); } diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__LanguagesManager.getAvailableLanguageNames.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__LanguagesManager.getAvailableLanguageNames.xml index 357a0e6fc03b10834ade8029e932a74a4db47b83..146aa5866ace32795020bc153df23000ce150cec 100644 --- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__LanguagesManager.getAvailableLanguageNames.xml +++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata_year__LanguagesManager.getAvailableLanguageNames.xml @@ -12,32 +12,32 @@ </row> <row> <code>be</code> - <name>БеларуÑкаÑ</name> + <name>беларуÑкаÑ</name> <english_name>Belarusian</english_name> </row> <row> <code>bg</code> - <name>БългарÑки</name> + <name>българÑки</name> <english_name>Bulgarian</english_name> </row> <row> <code>bn</code> - <name>বাঙালি</name> + <name>বাংলা</name> <english_name>Bengali</english_name> </row> <row> <code>bs</code> - <name>bosanski jezik</name> + <name>bosanski</name> <english_name>Bosnian</english_name> </row> <row> <code>ca</code> - <name>Català </name> + <name>català </name> <english_name>Catalan</english_name> </row> <row> <code>cs</code> - <name>ÄŒesky</name> + <name>ÄeÅ¡tina</name> <english_name>Czech</english_name> </row> <row> @@ -47,7 +47,7 @@ </row> <row> <code>da</code> - <name>Dansk</name> + <name>dansk</name> <english_name>Danish</english_name> </row> <row> @@ -58,7 +58,7 @@ <row> <code>el</code> <name>Ελληνικά</name> - <english_name>Hellenic</english_name> + <english_name>Greek</english_name> </row> <row> <code>en</code> @@ -67,17 +67,17 @@ </row> <row> <code>es</code> - <name>Español</name> + <name>español</name> <english_name>Spanish</english_name> </row> <row> <code>et</code> - <name>Eesti keel</name> + <name>eesti</name> <english_name>Estonian</english_name> </row> <row> <code>eu</code> - <name>Euskara</name> + <name>euskara</name> <english_name>Basque</english_name> </row> <row> @@ -87,17 +87,17 @@ </row> <row> <code>fi</code> - <name>Suomi</name> + <name>suomi</name> <english_name>Finnish</english_name> </row> <row> <code>fr</code> - <name>Français</name> + <name>français</name> <english_name>French</english_name> </row> <row> <code>gl</code> - <name>Galego</name> + <name>galego</name> <english_name>Galician</english_name> </row> <row> @@ -112,12 +112,12 @@ </row> <row> <code>hr</code> - <name>Hrvatski</name> + <name>hrvatski</name> <english_name>Croatian</english_name> </row> <row> <code>hu</code> - <name>Magyar</name> + <name>magyar</name> <english_name>Hungarian</english_name> </row> <row> @@ -127,12 +127,12 @@ </row> <row> <code>is</code> - <name>Ãslenska</name> + <name>Ãslenska</name> <english_name>Icelandic</english_name> </row> <row> <code>it</code> - <name>Italiano</name> + <name>italiano</name> <english_name>Italian</english_name> </row> <row> @@ -152,17 +152,17 @@ </row> <row> <code>lt</code> - <name>Lietuvių</name> + <name>lietuvių</name> <english_name>Lithuanian</english_name> </row> <row> <code>lv</code> - <name>LatvieÅ¡u</name> + <name>latvieÅ¡u</name> <english_name>Latvian</english_name> </row> <row> <code>nb</code> - <name>Norsk (bokmÃ¥l)</name> + <name>norsk bokmÃ¥l</name> <english_name>Norwegian BokmÃ¥l</english_name> </row> <row> @@ -172,57 +172,57 @@ </row> <row> <code>nn</code> - <name>Norsk (nynorsk)</name> + <name>nynorsk</name> <english_name>Norwegian Nynorsk</english_name> </row> <row> <code>pl</code> - <name>Polski</name> + <name>polski</name> <english_name>Polish</english_name> </row> <row> <code>pt-br</code> - <name>Português brasileiro</name> + <name>português do Brasil</name> <english_name>Brazilian Portuguese</english_name> </row> <row> <code>pt</code> - <name>Português</name> + <name>português</name> <english_name>Portuguese</english_name> </row> <row> <code>ro</code> - <name>Română</name> + <name>română</name> <english_name>Romanian</english_name> </row> <row> <code>ru</code> - <name>РуÑÑкий</name> + <name>руÑÑкий</name> <english_name>Russian</english_name> </row> <row> <code>sk</code> - <name>Slovensky</name> + <name>slovenÄina</name> <english_name>Slovak</english_name> </row> <row> <code>sl</code> - <name>SlovenÅ¡Äina</name> + <name>slovenÅ¡Äina</name> <english_name>Slovenian</english_name> </row> <row> <code>sq</code> - <name>Shqip</name> + <name>shqip</name> <english_name>Albanian</english_name> </row> <row> <code>sr</code> - <name>Srpski</name> + <name>ÑрпÑки</name> <english_name>Serbian</english_name> </row> <row> <code>sv</code> - <name>Svenska</name> + <name>svenska</name> <english_name>Swedish</english_name> </row> <row> @@ -237,12 +237,12 @@ </row> <row> <code>th</code> - <name>ภาษาไทย</name> + <name>ไทย</name> <english_name>Thai</english_name> </row> <row> <code>tl</code> - <name>Tagalog</name> + <name>Filipino</name> <english_name>Tagalog</english_name> </row> <row> @@ -252,12 +252,12 @@ </row> <row> <code>uk</code> - <name>УкраїнÑька</name> + <name>українÑька</name> <english_name>Ukrainian</english_name> </row> <row> <code>vi</code> - <name>Việt</name> + <name>Tiếng Việt</name> <english_name>Vietnamese</english_name> </row> <row> @@ -268,6 +268,6 @@ <row> <code>zh-tw</code> <name>ç¹é«”䏿–‡</name> - <english_name>Traditional Chinese (Taiwan)</english_name> + <english_name>Traditional Chinese</english_name> </row> </result> \ No newline at end of file diff --git a/tests/angularjs/bootstrap.js b/tests/angularjs/bootstrap.js index 459f9f10bf690ed6e916fb69b6deeae5a149da50..9483f564597a5c0ce3998f09d00e74b279e8e6bb 100644 --- a/tests/angularjs/bootstrap.js +++ b/tests/angularjs/bootstrap.js @@ -21,7 +21,7 @@ piwik.hasSuperUserAccess = 1; piwik.config = {}; piwik.config = {"action_url_category_delimiter":"\/","autocomplete_min_sites":"5","datatable_export_range_as_day":"rss"}; -var translations = {"CorePluginsAdmin_NoZipFileSelected":"Please select a ZIP file.","General_InvalidDateRange":"Invalid Date Range, Please Try Again","General_Loading":"Loading...","General_Show":"show","General_Hide":"hide","General_YearShort":"yr","General_MultiSitesSummary":"All Websites","CoreHome_YouAreUsingTheLatestVersion":"You are using the latest version of Piwik!","CoreHome_IncludeRowsWithLowPopulation":"Rows with low population are hidden %s Show all rows","CoreHome_ExcludeRowsWithLowPopulation":"All rows are shown %s Exclude low population","CoreHome_DataTableIncludeAggregateRows":"Aggregate rows are hidden %s Show them","CoreHome_DataTableExcludeAggregateRows":"Aggregate rows are shown %s Hide them","CoreHome_Default":"default","CoreHome_PageOf":"%1$s of %2$s","CoreHome_FlattenDataTable":"The report is hierarchical %s Make it flat","CoreHome_UnFlattenDataTable":"The report is flat %s Make it hierarchical","CoreHome_ExternalHelp":"Help (opens in new tab)","SitesManager_NotFound":"No websites found for","Annotations_ViewAndAddAnnotations":"View and add annotations for %s...","General_RowEvolutionRowActionTooltipTitle":"Open Row Evolution","General_RowEvolutionRowActionTooltip":"See how the metrics for this row changed over time","Annotations_IconDesc":"View notes for this date range.","Annotations_IconDescHideNotes":"Hide notes for this date range.","Annotations_HideAnnotationsFor":"Hide annotations for %s...","General_LoadingPopover":"Loading %s...","General_LoadingPopoverFor":"Loading %s for","General_ShortMonth_1":"Jan","General_ShortMonth_2":"Feb","General_ShortMonth_3":"Mar","General_ShortMonth_4":"Apr","General_ShortMonth_5":"May","General_ShortMonth_6":"Jun","General_ShortMonth_7":"Jul","General_ShortMonth_8":"Aug","General_ShortMonth_9":"Sep","General_ShortMonth_10":"Oct","General_ShortMonth_11":"Nov","General_ShortMonth_12":"Dec","General_LongMonth_1":"January","General_LongMonth_2":"February","General_LongMonth_3":"March","General_LongMonth_4":"April","General_LongMonth_5":"May","General_LongMonth_6":"June","General_LongMonth_7":"July","General_LongMonth_8":"August","General_LongMonth_9":"September","General_LongMonth_10":"October","General_LongMonth_11":"November","General_LongMonth_12":"December","General_ShortDay_1":"Mon","General_ShortDay_2":"Tue","General_ShortDay_3":"Wed","General_ShortDay_4":"Thu","General_ShortDay_5":"Fri","General_ShortDay_6":"Sat","General_ShortDay_7":"Sun","General_LongDay_1":"Monday","General_LongDay_2":"Tuesday","General_LongDay_3":"Wednesday","General_LongDay_4":"Thursday","General_LongDay_5":"Friday","General_LongDay_6":"Saturday","General_LongDay_7":"Sunday","General_DayMo":"Mo","General_DayTu":"Tu","General_DayWe":"We","General_DayTh":"Th","General_DayFr":"Fr","General_DaySa":"Sa","General_DaySu":"Su","General_Search":"Search","General_MoreDetails":"More Details","General_Help":"Help","General_MetricsToPlot":"Metrics to plot","General_MetricToPlot":"Metric to plot","General_RecordsToPlot":"Records to plot","General_SaveImageOnYourComputer":"To save the image on your computer, right click on the image and select \"Save Image As...\"","General_ExportAsImage":"Export as Image","General_NoDataForGraph":"No data for this graph.","Widgetize_OpenInNewWindow":"Open in a new window","Dashboard_LoadingWidget":"Loading widget, please wait...","General_TransitionsRowActionTooltipTitle":"Open Transitions","General_TransitionsRowActionTooltip":"See what visitors did before and after viewing this page","Dashboard_AddPreviewedWidget":"Click to add widget to the dashboard","Dashboard_WidgetPreview":"Widget preview","Dashboard_Maximise":"Maximise","Dashboard_Minimise":"Minimise","Dashboard_WidgetNotFound":"Widget not found","Dashboard_DashboardCopied":"Current dashboard successfully copied to selected user.","General_Close":"Close","General_Refresh":"Refresh","General_Website":"Website","General_ColumnNbVisits":"Visits","General_ColumnPageviews":"Pageviews","General_ColumnRevenue":"Revenue","General_TotalVisitsPageviewsRevenue":"(Total: %s visits, %s pageviews, %s revenue)","General_EvolutionSummaryGeneric":"%1$s in %2$s compared to %3$s in %4$s. Evolution: %5$s","General_AllWebsitesDashboard":"All Websites dashboard","General_NVisits":"%s visits","MultiSites_Evolution":"Evolution","SitesManager_AddSite":"Add a new website","General_Next":"Next","General_Previous":"Previous","General_GoTo":"Go to %s","Dashboard_DashboardOf":"Dashboard of %s","Actions_SubmenuSitesearch":"Site Search","MultiSites_LoadingWebsites":"Loading websites","General_ErrorRequest":"Oops\u2026 problem during the request, please try again.","Goals_AddGoal":"Add Goal","Goals_UpdateGoal":"Update Goal","Goals_DeleteGoalConfirm":"Are you sure you want to delete the Goal %s?","UserCountry_FatalErrorDuringDownload":"A fatal error occurred while downloading this file. There might be something wrong with your internet connection, with the GeoIP database you downloaded or Piwik. Try downloading and installing it manually.","UserCountry_SetupAutomaticUpdatesOfGeoIP":"Setup automatic updates of GeoIP databases","General_Done":"Done","Feedback_ThankYou":"Thank you for helping us to make Piwik better!","Feedback_RateFeatureTitle":"Do you like the '%s' feature? Please rate and leave a comment","Feedback_RateFeatureThankYouTitle":"Thank you for rating '%s'!","Feedback_RateFeatureLeaveMessageLike":"We are glad you like it! Please let us know what you like the most or if you have a feature request.","Feedback_RateFeatureLeaveMessageDislike":"We are sorry to hear you don't like it! Please let us know how we can improve.","Feedback_SendFeedback":"Send Feedback","Feedback_RateFeatureSendFeedbackInformation":"Your Piwik platform will send us (the Piwik team) an email (including your email address) so we can get in contact with you if you have any question.","General_Ok":"Ok","General_OrCancel":"or %s Cancel %s","General_Save":"Save","UsersManager_DeleteConfirm":"Are you sure you want to delete the user %s?","UsersManager_ConfirmGrantSuperUserAccess":"Do you really want to grant '%s' Super User access? Warning: the user will have access to all websites and will be able to perform administrative tasks.","UsersManager_ConfirmProhibitOtherUsersSuperUserAccess":"Do you really want to remove Super User access from '%s'? The user will lose all permissions and access to all websites. Make sure to set permissions to needed websites afterwards if necessary.","UsersManager_ConfirmProhibitMySuperUserAccess":"%s, do you really want to remove your own Super User access? You will lose all permissions and access to all websites and will be logged out from Piwik.","SitesManager_OnlyOneSiteAtTime":"You can only edit one website at a time. Please Save or Cancel your current modifications to the website %s.","SitesManager_DeleteConfirm":"Are you sure you want to delete the website %s?","ScheduledReports_ReportSent":"Report sent","ScheduledReports_ReportUpdated":"Report updated","General_OverlayRowActionTooltipTitle":"Open Page Overlay","General_OverlayRowActionTooltip":"See analytics data directly on your website (opens new tab)","CustomAlerts_InvalidMetricValue":"Value must be numeric","Live_VisitorProfile":"Visitor profile","Live_NoMoreVisits":"There are no more visits for this visitor.","Live_ShowMap":"show map","Live_HideMap":"hide map","Live_PageRefreshed":"Number of times this page was viewed \/ refreshed in a row."}; +var translations = {"CorePluginsAdmin_NoZipFileSelected":"Please select a ZIP file.","General_InvalidDateRange":"Invalid Date Range, Please Try Again","General_Loading":"Loading...","General_Show":"show","General_Hide":"hide","Intl_YearShort":"yr","General_MultiSitesSummary":"All Websites","CoreHome_YouAreUsingTheLatestVersion":"You are using the latest version of Piwik!","CoreHome_IncludeRowsWithLowPopulation":"Rows with low population are hidden %s Show all rows","CoreHome_ExcludeRowsWithLowPopulation":"All rows are shown %s Exclude low population","CoreHome_DataTableIncludeAggregateRows":"Aggregate rows are hidden %s Show them","CoreHome_DataTableExcludeAggregateRows":"Aggregate rows are shown %s Hide them","CoreHome_Default":"default","CoreHome_PageOf":"%1$s of %2$s","CoreHome_FlattenDataTable":"The report is hierarchical %s Make it flat","CoreHome_UnFlattenDataTable":"The report is flat %s Make it hierarchical","CoreHome_ExternalHelp":"Help (opens in new tab)","SitesManager_NotFound":"No websites found for","Annotations_ViewAndAddAnnotations":"View and add annotations for %s...","General_RowEvolutionRowActionTooltipTitle":"Open Row Evolution","General_RowEvolutionRowActionTooltip":"See how the metrics for this row changed over time","Annotations_IconDesc":"View notes for this date range.","Annotations_IconDescHideNotes":"Hide notes for this date range.","Annotations_HideAnnotationsFor":"Hide annotations for %s...","General_LoadingPopover":"Loading %s...","General_LoadingPopoverFor":"Loading %s for","Intl_ShortMonth_1":"Jan","Intl_ShortMonth_2":"Feb","Intl_ShortMonth_3":"Mar","Intl_ShortMonth_4":"Apr","Intl_ShortMonth_5":"May","Intl_ShortMonth_6":"Jun","Intl_ShortMonth_7":"Jul","Intl_ShortMonth_8":"Aug","Intl_ShortMonth_9":"Sep","Intl_ShortMonth_10":"Oct","Intl_ShortMonth_11":"Nov","Intl_ShortMonth_12":"Dec","Intl_LongMonth_1":"January","Intl_LongMonth_2":"February","Intl_LongMonth_3":"March","Intl_LongMonth_4":"April","Intl_LongMonth_5":"May","Intl_LongMonth_6":"June","Intl_LongMonth_7":"July","Intl_LongMonth_8":"August","Intl_LongMonth_9":"September","Intl_LongMonth_10":"October","Intl_LongMonth_11":"November","Intl_LongMonth_12":"December","Intl_ShortDay_1":"Mon","Intl_ShortDay_2":"Tue","Intl_ShortDay_3":"Wed","Intl_ShortDay_4":"Thu","Intl_ShortDay_5":"Fri","Intl_ShortDay_6":"Sat","Intl_ShortDay_7":"Sun","Intl_LongDay_1":"Monday","Intl_LongDay_2":"Tuesday","Intl_LongDay_3":"Wednesday","Intl_LongDay_4":"Thursday","Intl_LongDay_5":"Friday","Intl_LongDay_6":"Saturday","Intl_LongDay_7":"Sunday","Intl_DayMo":"Mo","Intl_DayTu":"Tu","Intl_DayWe":"We","Intl_DayTh":"Th","Intl_DayFr":"Fr","Intl_DaySa":"Sa","Intl_DaySu":"Su","General_Search":"Search","General_MoreDetails":"More Details","General_Help":"Help","General_MetricsToPlot":"Metrics to plot","General_MetricToPlot":"Metric to plot","General_RecordsToPlot":"Records to plot","General_SaveImageOnYourComputer":"To save the image on your computer, right click on the image and select \"Save Image As...\"","General_ExportAsImage":"Export as Image","General_NoDataForGraph":"No data for this graph.","Widgetize_OpenInNewWindow":"Open in a new window","Dashboard_LoadingWidget":"Loading widget, please wait...","General_TransitionsRowActionTooltipTitle":"Open Transitions","General_TransitionsRowActionTooltip":"See what visitors did before and after viewing this page","Dashboard_AddPreviewedWidget":"Click to add widget to the dashboard","Dashboard_WidgetPreview":"Widget preview","Dashboard_Maximise":"Maximise","Dashboard_Minimise":"Minimise","Dashboard_WidgetNotFound":"Widget not found","Dashboard_DashboardCopied":"Current dashboard successfully copied to selected user.","General_Close":"Close","General_Refresh":"Refresh","General_Website":"Website","General_ColumnNbVisits":"Visits","General_ColumnPageviews":"Pageviews","General_ColumnRevenue":"Revenue","General_TotalVisitsPageviewsRevenue":"(Total: %s visits, %s pageviews, %s revenue)","General_EvolutionSummaryGeneric":"%1$s in %2$s compared to %3$s in %4$s. Evolution: %5$s","General_AllWebsitesDashboard":"All Websites dashboard","General_NVisits":"%s visits","MultiSites_Evolution":"Evolution","SitesManager_AddSite":"Add a new website","General_Next":"Next","General_Previous":"Previous","General_GoTo":"Go to %s","Dashboard_DashboardOf":"Dashboard of %s","Actions_SubmenuSitesearch":"Site Search","MultiSites_LoadingWebsites":"Loading websites","General_ErrorRequest":"Oops\u2026 problem during the request, please try again.","Goals_AddGoal":"Add Goal","Goals_UpdateGoal":"Update Goal","Goals_DeleteGoalConfirm":"Are you sure you want to delete the Goal %s?","UserCountry_FatalErrorDuringDownload":"A fatal error occurred while downloading this file. There might be something wrong with your internet connection, with the GeoIP database you downloaded or Piwik. Try downloading and installing it manually.","UserCountry_SetupAutomaticUpdatesOfGeoIP":"Setup automatic updates of GeoIP databases","General_Done":"Done","Feedback_ThankYou":"Thank you for helping us to make Piwik better!","Feedback_RateFeatureTitle":"Do you like the '%s' feature? Please rate and leave a comment","Feedback_RateFeatureThankYouTitle":"Thank you for rating '%s'!","Feedback_RateFeatureLeaveMessageLike":"We are glad you like it! Please let us know what you like the most or if you have a feature request.","Feedback_RateFeatureLeaveMessageDislike":"We are sorry to hear you don't like it! Please let us know how we can improve.","Feedback_SendFeedback":"Send Feedback","Feedback_RateFeatureSendFeedbackInformation":"Your Piwik platform will send us (the Piwik team) an email (including your email address) so we can get in contact with you if you have any question.","General_Ok":"Ok","General_OrCancel":"or %s Cancel %s","General_Save":"Save","UsersManager_DeleteConfirm":"Are you sure you want to delete the user %s?","UsersManager_ConfirmGrantSuperUserAccess":"Do you really want to grant '%s' Super User access? Warning: the user will have access to all websites and will be able to perform administrative tasks.","UsersManager_ConfirmProhibitOtherUsersSuperUserAccess":"Do you really want to remove Super User access from '%s'? The user will lose all permissions and access to all websites. Make sure to set permissions to needed websites afterwards if necessary.","UsersManager_ConfirmProhibitMySuperUserAccess":"%s, do you really want to remove your own Super User access? You will lose all permissions and access to all websites and will be logged out from Piwik.","SitesManager_OnlyOneSiteAtTime":"You can only edit one website at a time. Please Save or Cancel your current modifications to the website %s.","SitesManager_DeleteConfirm":"Are you sure you want to delete the website %s?","ScheduledReports_ReportSent":"Report sent","ScheduledReports_ReportUpdated":"Report updated","General_OverlayRowActionTooltipTitle":"Open Page Overlay","General_OverlayRowActionTooltip":"See analytics data directly on your website (opens new tab)","CustomAlerts_InvalidMetricValue":"Value must be numeric","Live_VisitorProfile":"Visitor profile","Live_NoMoreVisits":"There are no more visits for this visitor.","Live_ShowMap":"show map","Live_HideMap":"hide map","Live_PageRefreshed":"Number of times this page was viewed \/ refreshed in a row."}; if(typeof(piwik_translations) == 'undefined') { var piwik_translations = new Object; }for(var i in translations) { piwik_translations[i] = translations[i];} var expect = chai.expect