/** * @dataProvider getPluralFormDP */ public function testGetPluralForm($a, $b, $c) { $obj = new _Utils(); $this->string($obj->getPluralForm($a, $b))->isEqualTo($c); }
foreach (array_keys($webprojects['locales'][$locale]) as $product_code) { $available_products[$product_code] = $webprojects['locales'][$locale][$product_code]['name']; } asort($available_products); $link = "https://l10n.mozilla-community.org/webdashboard/?locale={$locale}#web_projects"; $tmp_message = ''; foreach ($available_products as $product_code => $product_name) { $webproject = $webprojects['locales'][$locale][$product_code]; $webproject_errors = $webproject['error_status']; $webproject_incomplete = $webproject['missing'] + $webproject['untranslated'] > 0; if ($webproject_incomplete || $webproject_errors) { // Web project is incomplete (either missing or untranslated strings) $tmp_message .= "<p><strong>{$webproject['name']}</strong><br/>"; $tmp_message .= Utils::getPluralForm($webproject['missing'], 'missing string') . ', '; $tmp_message .= Utils::getPluralForm($webproject['untranslated'], 'untranslated string') . ', '; $tmp_message .= Utils::getPluralForm($webproject['fuzzy'], 'fuzzy string') . '.'; if ($webproject_errors) { $tmp_message .= '<br/>' . htmlspecialchars($webproject['error_message']); } $tmp_message .= '</p>'; } } if ($tmp_message != '') { array_push($rss_data, ['Incomplete Web Projects', $link, $tmp_message]); } } else { $locale_has_web_projects = false; } // Build a RSS feed $rss_feed = new FeedRSS("L10n Web Dashboard - {$locale}", "https://l10n.mozilla-community.org/webdashboard/?locale={$locale}", "[{$locale}] Localization Status of Web Content", $rss_data); include __DIR__ . '/../views/locale.php';
$stats[$locale]['complete'] = true; $stats[$locale]['percentage'] = 100; } else { $stats[$locale]['percentage'] = round($stats[$locale]['strings_done'] / $stats[$locale]['strings_total'] * 100, 2); } } $percent_locale_done = round(count($locale_done) / $total_locales * 100, 2); // Compute user base coverage for each page then an average $page_coverage = []; $sum_percent_covered_users = $sum_locales_per_page = 0; foreach ($locale_done_per_page as $page => $locales) { $page_coverage[$page] = Utils::getUserBaseCoverage($locales, LANG_CHECKER); $sum_percent_covered_users += $page_coverage[$page]; $sum_locales_per_page += count($locales); } $perfect_locales_coverage = Utils::getUserBaseCoverage($locale_done, LANG_CHECKER); $average_coverage = round($sum_percent_covered_users / $sum_pages, 2); $average_nb_locales = round($sum_locales_per_page / $sum_pages, 2); // Organize data in $stats to display a summary of all locales $locales_summary = ['perfect' => ['title' => 'Perfect', 'description' => 'No missing strings', 'locales' => [], 'locamotion_locales' => []], 'good' => ['title' => 'Good', 'description' => 'Less than 10% missing', 'locales' => [], 'locamotion_locales' => []], 'average' => ['title' => 'Average', 'description' => 'Between 10% and 40% missing', 'locales' => [], 'locamotion_locales' => []], 'bad' => ['title' => 'Bad', 'description' => 'Between 40% and 70% missing', 'locales' => [], 'locamotion_locales' => []], 'verybad' => ['title' => 'Very Bad', 'description' => 'Over 70% missing', 'locales' => [], 'locamotion_locales' => []]]; foreach ($stats as $locale => $locale_stats) { $category = ''; if ($locale_stats['percentage'] == 100) { $category = 'perfect'; } elseif ($locale_stats['percentage'] >= 90) { $category = 'good'; } elseif ($locale_stats['percentage'] >= 60) { $category = 'average'; } elseif ($locale_stats['percentage'] >= 30) { $category = 'bad'; } else {