diff --git a/plugins/UserSettings/Columns/Language.php b/plugins/UserSettings/Columns/Language.php index f61154c7c42cddf66c751dbd7011f5d2b5e3894d..776505d7739b01380a6b90886a8cfba35c14bf65 100644 --- a/plugins/UserSettings/Columns/Language.php +++ b/plugins/UserSettings/Columns/Language.php @@ -8,6 +8,7 @@ */ namespace Piwik\Plugins\UserSettings\Columns; +use Piwik\Common; use Piwik\Piwik; use Piwik\Plugin\Dimension\VisitDimension; use Piwik\Tracker\Action; @@ -32,12 +33,23 @@ class Language extends VisitDimension */ public function onNewVisit(Request $request, Visitor $visitor, $action) { - $language = $request->getBrowserLanguage(); + return $this->getSingleLanguageFromAcceptedLanguages($request->getBrowserLanguage()); + } - if (empty($language)) { + /** + * For better privacy we store only the main language code, instead of the whole browser language string. + * + * @param $acceptLanguagesString + * @return string + */ + protected function getSingleLanguageFromAcceptedLanguages($acceptLanguagesString) + { + if (empty($acceptLanguagesString)) { return ''; } - return substr($language, 0, 20); + $allLanguageCodes = array_keys(Common::getLanguagesList()); + $languageCode = Common::extractLanguageCodeFromBrowserLanguage($acceptLanguagesString, $allLanguageCodes); + return $languageCode; } -} \ No newline at end of file +}