<?php namespace Stores; print \Transvision\Json::output($done);
// This view works only for snippets (website ID 6) $current_website = $sites[6]; $current_locale = $locale; $json_data = []; if ($locale == '') { exit(Json::invalidAPICall('Missing locale code in the request')); } if (!Project::isSupportedLocale($current_website, $current_locale)) { exit(Json::invalidAPICall('This locale is not supported for snippets')); } foreach (Project::getWebsiteFiles($current_website) as $current_filename) { if (!Project::isSupportedLocale($current_website, $current_locale, $current_filename, $langfiles_subsets)) { // File is not managed for this website+locale, ignore it continue; } if (!file_exists(Project::getLocalFilePath($current_website, $current_locale, $current_filename))) { // If the .lang file does not exist, just skip the locale for this file continue; } $locale_data = LangManager::loadSource($current_website, $current_locale, $current_filename); foreach ($locale_data['strings'] as $reference_string => $translated_string) { if ($reference_string != $translated_string) { // Interested only in translated strings, clean up {ok} $json_data[$reference_string] = Utils::cleanString($translated_string); } } } ksort($json_data); $callback = isset($_GET['callback']) ? $_GET['callback'] : false; exit(Json::output($json_data, $callback, true));
if (!file_exists(Project::getLocalFilePath($current_website, $current_locale, $current_filename))) { continue; } $reference_data = LangManager::loadSource($current_website, $reference_locale, $current_filename); $locale_analysis = LangManager::analyzeLangFile($current_website, $current_locale, $current_filename, $reference_data); $untranslated[$current_locale] += count($locale_analysis['Identical']) + count($locale_analysis['Missing']); $translated[$current_locale] += count($locale_analysis['Translated']); $file_count[$current_locale] += 1; } } $all_strings[$current_locale] = $untranslated[$current_locale] + $translated[$current_locale]; } // I need locales with more untranslated strings first arsort($untranslated); if ($json) { die(Json::output($untranslated, false, true)); } // General table with untranslated/translated strings per locale $rows = ''; foreach ($untranslated as $locale => $untranslated_count) { if ($untranslated_count == 0) { $class = 'class="count_complete"'; } else { $class = ''; } $rows .= "<tr {$class}>" . " <td><a href='./?locale={$locale}'>{$locale}</a></td>\n" . " <td>{$untranslated_count}</td>\n" . " <td>{$translated[$locale]}</td>\n" . " <td>{$all_strings[$locale]}</td>\n" . " <td>{$file_count[$locale]}</td>\n" . "</tr>\n"; } $general_table = "\n<table class='sortable'>\n <thead>\n <tr>\n <th>Locale</th>\n <th>Untranslated</th>\n <th>Translated</th>\n <th>Total</th>\n <th>Files</th>\n </tr>\n </thead>\n <tbody>\n{$rows}\n </tbody>\n <tfooter>\n <tr>\n <th colspan='4'>Number of locales</th>\n <td><strong>" . count($mozilla) . "</strong></td>\n </tr>\n </tfooter>\n</table>\n"; /* Summary table code */ // Those are tips displayed when hovering the row header $title = ['perfect' => 'Everything is translated', 'good' => 'Less than 50 missing strings', 'average' => 'Between 50 and 200 missing strings', 'bad' => 'Between 200 and 500 missing strings', 'very bad' => 'More than 500 missing strings'];
<?php namespace Stores; print \Transvision\Json::output($locales);
/** * @dataProvider outputDP */ public function testOutput($a, $b, $c, $d) { $obj = new _Json(); $this->string($obj->output($a, $b, $c))->isEqualTo($d); }
} else { $file_analysis = RawManager::compareRawFiles($website, $current_locale, $filename); $cmp_result = $file_analysis['cmp_result']; $export_data[$website_name][$displayed_filename]['status'] = $cmp_result; } $export_data[$website_name][$displayed_filename]['data_source'] = $website_data_source; if (Project::isCriticalFile($website, $filename, $current_locale)) { $export_data[$website_name][$displayed_filename]['critical'] = true; } else { $export_data[$website_name][$displayed_filename]['critical'] = false; } // Flags if ($file_flags) { $export_data[$website_name][$displayed_filename]['flags'] = $file_flags; } // Stage URL $export_data[$website_name][$displayed_filename]['url'] = Project::getLocalizedURL($reference_data, $current_locale); // Some files have a deadline if (isset($deadline[$filename])) { $export_data[$website_name][$displayed_filename]['deadline'] = $deadline[$filename]; } } } } if ($serial) { header("Content-type:text/plain"); die(serialize($export_data)); } if ($json) { die(Json::output($export_data, false, true)); }
echo "\n <tr>\n <td class='maincolumn'>{$locale_link}</td>\n <td><span class='rawstatus {$cmp_result}'>" . str_replace('_', ' ', $cmp_result) . "</span></td>\n </tr>\n"; } $coverage = Project::getUserBaseCoverage($complete_locales_list, $adu) . '%'; echo ' </tbody> <tfoot> <tr> <td colspan= "2">' . $complete_locales_count . ' translated locales (' . round($complete_locales_count / count($supported_locales) * 100) . '%)<br>' . $coverage . ' of our l10n user base' . '</td> </tr> </tfoot> </table> '; } $htmlresult = ob_get_contents(); ob_clean(); if ($json) { if ($locale == 'all' || $locale == '') { echo Json::output($json_data, false, true); } else { // Only one locale if (isset($json_data[$current_filename][$locale])) { $single_locale_json[$current_filename][$locale] = $json_data[$current_filename][$locale]; echo Json::output($single_locale_json, false, true); } else { // Unknown locale die(Json::invalidAPICall("Unknown locale: {$locale}. Check the value and try again.")); } } } else { echo $htmlresult; }
<?php namespace Langchecker; use Transvision\Json; if (!isset($_GET['locales'])) { die(Json::invalidAPICall('ERROR: missing list of locales.')); } $locales = $_GET['locales']; if (!is_array($locales)) { die(Json::invalidAPICall('ERROR: locales is not an array.')); } echo Project::getUserBaseCoverage($locales, $adu);
$supported_locales = Project::getSupportedLocales($current_website, $current_filename, $langfiles_subsets); foreach ($supported_locales as $current_locale) { if (!file_exists(Project::getLocalFilePath($current_website, $current_locale, $current_filename))) { // If the .lang file does not exist, just skip the locale for this file continue; } $locale_data = LangManager::loadSource($current_website, $current_locale, $current_filename); foreach ($reference_data['strings'] as $string_id => $string_value) { if (LangManager::isStringLocalized($string_id, $locale_data, $reference_data)) { $all_strings[$string_id][$current_locale] = Utils::cleanString($locale_data['strings'][$string_id]); } } } // If request output is JSON, we're ready if ($json) { die(Json::output($all_strings, false, true)); } // Colors used to display tags $bg_colors = ['#459E09', '#B29EF9', '#2D68BA', '#E39530', '#D6D6D4', '#E3309E', '#FF4040', '#F5F562', '#F562C7', '#C0FCF2']; $font_colors = ['#FFF', '#FFF', '#FFF', '#FFF', '#000', '#FFF', '#FFF', '#000', '#FFF', '#000']; if (isset($reference_data['tag_bindings'])) { $tag_bindings = $reference_data['tag_bindings']; // I want keys in $available_tags to be progressive $available_tags = array_values(array_unique(array_values($tag_bindings))); } else { $tag_bindings = []; $available_tags = []; } echo "<p>Click on the green English strings to expand/collapse the translations done</p>\n"; // Display all tags used in this page if (count($available_tags) > 0) {
<?php namespace Stores; use Transvision\Json; // Create our API object $request = new API($url); $response = new Json(); // Check if valid API call if ($request->isValidRequest()) { include MODELS . 'api_model.php'; } else { $json = $response->output($request->invalidAPICall()); } include VIEWS . 'json_view.php'; exit;
$current_filename = $filename; if (in_array($current_filename, Project::getWebsiteFiles($current_website))) { $output_array = array_values(Project::getSupportedLocales($current_website, $current_filename, $langfiles_subsets)); } } } elseif ($project != '') { switch ($project) { case 'locamotion': $output_array = $locamotion_locales; break; case 'marketplacebadge': $output_array = $marketplacebadge_locales; break; case 'slogans': $output_array = $slogans_locales; break; case 'snippets': $output_array = $snippets_locales; break; case 'snippets_main': $output_array = $snippets_main_locales; break; } } if (count($output_array) == 0) { // No locales: either wrong values or not enought parameters http_response_code(400); $output_array[] = 'Please check you request: provide a project name, or a valid couple website+file.'; } echo Json::output($output_array, false, true);
<?php namespace Stores; print \Transvision\Json::output($mapping);
<?php namespace Stores; print \Transvision\Json::output($json);