public static getLanguagesList ( ) : array | ||
return | array | Array of two letter ISO codes mapped with their associated language names (in English). E.g. `array('en' => 'English', 'ja' => 'Japanese')`. |
/** * Validates the given translations * * There need to be more than 250 translations presen * * Locale, TranslatorName and TranslatorEmail needs to be set in plugin General * * LayoutDirection needs to be ltr or rtl if present * * Locale must be valid (format, language & country) * * @param array $translations * * @return boolean */ public function isValid($translations) { $this->message = null; if (250 > count($translations, COUNT_RECURSIVE)) { $this->message = self::ERRORSTATE_MINIMUMTRANSLATIONS; return false; } if (empty($translations['General']['Locale'])) { $this->message = self::ERRORSTATE_LOCALEREQUIRED; return false; } if (empty($translations['General']['TranslatorName'])) { $this->message = self::ERRORSTATE_TRANSLATORINFOREQUIRED; return false; } if (empty($translations['General']['TranslatorEmail'])) { $this->message = self::ERRORSTATE_TRANSLATOREMAILREQUIRED; return false; } if (!empty($translations['General']['LayoutDirection']) && !in_array($translations['General']['LayoutDirection'], array('ltr', 'rtl'))) { $this->message = self::ERRORSTATE_LAYOUTDIRECTIONINVALID; return false; } $allLanguages = Common::getLanguagesList(); $allCountries = Common::getCountriesList(); if (!preg_match('/^([a-z]{2})_([A-Z]{2})\\.UTF-8$/', $translations['General']['Locale'], $matches)) { $this->message = self::ERRORSTATE_LOCALEINVALID; return false; } else { if (!array_key_exists($matches[1], $allLanguages)) { $this->message = self::ERRORSTATE_LOCALEINVALIDLANGUAGE; return false; } else { if (!array_key_exists(strtolower($matches[2]), $allCountries)) { $this->message = self::ERRORSTATE_LOCALEINVALIDCOUNTRY; return false; } } } return true; }
/** * test format of DataFile/Languages.php * * @group Plugins */ function testGetLanguagesList() { $languages = Common::getLanguagesList(); $this->assertTrue(count($languages) > 0); foreach ($languages as $langCode => $langs) { $this->assertTrue(strlen($langCode) == 2, "{$langCode} length = 2"); $this->assertTrue(is_array($langs) && count($langs) >= 1, "{$langCode} array(names) >= 1"); } }
protected function aggregateByLanguage() { $query = $this->getLogAggregator()->queryVisitsByDimension(array("label" => self::LANGUAGE_DIMENSION)); $languageCodes = array_keys(Common::getLanguagesList()); $metricsByLanguage = new DataArray(); while ($row = $query->fetch()) { $code = Common::extractLanguageCodeFromBrowserLanguage($row['label'], $languageCodes); $metricsByLanguage->sumMetricsVisits($code, $row); } $report = $metricsByLanguage->asDataTable(); $this->insertTable(self::LANGUAGE_RECORD_NAME, $report); }
protected function aggregateByLanguage() { $query = $this->getLogAggregator()->queryVisitsByDimension(array("label" => self::LANGUAGE_DIMENSION)); $languageCodes = array_keys(Common::getLanguagesList()); $countryCodes = Common::getCountriesList($includeInternalCodes = true); $metricsByLanguage = new DataArray(); while ($row = $query->fetch()) { $langCode = Common::extractLanguageCodeFromBrowserLanguage($row['label'], $languageCodes); $countryCode = Common::extractCountryCodeFromBrowserLanguage($row['label'], $countryCodes, $enableLanguageToCountryGuess = true); if ($countryCode == 'xx' || $countryCode == $langCode) { $metricsByLanguage->sumMetricsVisits($langCode, $row); } else { $metricsByLanguage->sumMetricsVisits($langCode . '-' . $countryCode, $row); } } $report = $metricsByLanguage->asDataTable(); $this->insertTable(self::LANGUAGE_RECORD_NAME, $report); }