From dc9e76731b08732fd110fb80b874907704a984b6 Mon Sep 17 00:00:00 2001 From: filip Date: Wed, 6 May 2020 19:14:42 +0200 Subject: finally i18n countries and cities in DL page + update infrastructure for that --- en/downloads/get/index.php | 24 ++++---- en/downloads/get/lib.php | 136 +++++++++++++++++++++++++++++---------------- lib/Downloads.php | 48 +++++++++++++++- tools/web_projects.dat | 2 +- 4 files changed, 149 insertions(+), 61 deletions(-) diff --git a/en/downloads/get/index.php b/en/downloads/get/index.php index 3ec90ebd2..add253c0f 100644 --- a/en/downloads/get/index.php +++ b/en/downloads/get/index.php @@ -33,9 +33,14 @@ * */ -require 'lib.php'; require_once '../../../lib/mga_geoip.php'; +define('HLANG', true); +define('ALIGNMENT', 'Center'); +require '../../../langs.php'; +$dictionary = read_translation_file($locale, array('downloads/get', 'common_footer')); +require 'lib.php'; + // request $product = get('q'); $doc = get('doc'); @@ -44,17 +49,11 @@ if (isset($_GET['torrent'])) { $torrent = strip_tags(trim($_GET['torrent'])); } $torrent = isset($torrent) ? true : false; - if (is_null($product)) { header('Location: /downloads/'); die; } -define('HLANG', true); -define('ALIGNMENT', 'Center'); -require '../../../langs.php'; -$dictionary = read_translation_file($locale, array('downloads/get', 'common_footer')); - session_start(); $download = null; @@ -126,7 +125,12 @@ try { $alt_dl_link, strtoupper($pm['scheme']), $pm['host'] ); } - $s[] = sprintf('%s%s', rewrite_city($city), implode(', ', $mirs)); + if ("-" == $city) { + $city = _r("City not set"); + } + $s[] = sprintf('%s%s', + (isset($cities_i18n[$city])) ? $cities_i18n[$city] : $city, + implode(', ', $mirs)); } $alternative_mirrors .= sprintf('%s%s' . PHP_EOL, count($cities), $country, implode('', $s)); } @@ -143,8 +147,8 @@ try { _r('This %s download mirror is located in %s (%s).', ' '), $one_mirror['mirror_url'], $one_mirror['mirror_host'], - rewrite_city($one_mirror['city']), - $mirrors_country_name + ("-" == $one_mirror['city']) ? $mirrors_country_name : $one_mirror['city'], + ("-" == $one_mirror['city']) ? _r("City not set") : $mirrors_country_name ); $dl2_mirror_alt .= _r('If it does not work well for you, check out these other mirrors.', ' '); if (array_key_exists($_SESSION['country'], $countries)) { diff --git a/en/downloads/get/lib.php b/en/downloads/get/lib.php index 7f720cb08..a479a1f91 100644 --- a/en/downloads/get/lib.php +++ b/en/downloads/get/lib.php @@ -9,46 +9,93 @@ * @link http://www.mageia.org/ * */ -// _r(''); // note, we use geographical country names -$countries = array( - 'AR' => 'Argentina', - 'AU' => 'Australia', - 'BE' => 'Belgique', - 'BG' => 'България - Bulgaria', - 'BR' => 'Brasil', - 'BY' => 'Беларусь - Belarus', - 'CA' => 'Canada', - 'CH' => 'Switzerland', - 'CN' => '中国 - China', - 'CZ' => 'Česko', // Czechia - 'DE' => 'Deutschland', - 'DK' => 'Danmark', - 'EC' => 'Ecuador', - 'ES' => 'España', - 'FR' => 'France', - 'GB' => 'Great Britain', - 'GR' => 'Ελλάδα - Greece', - 'GT' => 'Guatemala', - 'ID' => 'Indonesia', - 'IL' => 'Israel', - 'IT' => 'Italia', - 'JP' => '日本国 - Japan', - 'NC' => 'Nouvelle-Calédonie', - 'NL' => 'Nederlands', - 'PH' => 'Philipines', - 'PL' => 'Polska', - 'RU' => 'Россия - Russia', - 'SE' => 'Sverige', - 'TR' => 'Türkiye', - 'TW' => '臺灣 - Taiwan', - 'UA' => 'Ukraine', - 'UK' => 'the UK', - 'US' => 'the USA', - 'VN' => 'Vietnam', - 'ZA' => 'South Africa' +$countries = array ( + 'AR' => _r("Argentina"), + 'AU' => _r("Australia"), + 'BE' => _r("Belgique"), + 'BG' => _r("България - Bulgaria"), + 'BR' => _r("Brasil"), + 'BY' => _r("Беларусь - Belarus"), + 'CA' => _r("Canada"), + 'CH' => _r("Switzerland"), + 'CN' => _r("中国 - China"), + 'CZ' => _r("Česko"), + 'DE' => _r("Deutschland"), + 'DK' => _r("Danmark"), + 'EC' => _r("Ecuador"), + 'ES' => _r("España"), + 'FR' => _r("France"), + 'GB' => _r("Great Britain"), + 'GR' => _r("Ελλάδα - Greece"), + 'GT' => _r("Guatemala"), + 'HU' => _r("Hungary"), + 'ID' => _r("Indonesia"), + 'IL' => _r("Israel"), + 'IT' => _r("Italia"), + 'JP' => _r("日本国 - Japan"), + 'NC' => _r("Nouvelle-Calédonie"), + 'NL' => _r("Nederlands"), + 'PH' => _r("Philipines"), + 'PL' => _r("Polska"), + 'RU' => _r("Россия - Russia"), + 'SE' => _r("Sverige"), + 'TR' => _r("Türkiye"), + 'TW' => _r("臺灣 - Taiwan"), + 'UA' => _r("Ukraine"), + 'UK' => _r("the UK"), + 'US' => _r("the USA"), + 'VN' => _r("Vietnam"), + 'ZA' => _r("South Africa"), ); +$cities_i18n = array ( + 'Adelaide' => _r("Adelaide"), + 'Amsterdam' => _r("Amsterdam"), + 'Ankara' => _r("Ankara"), + 'Beauharnois' => _r("Beauharnois"), + 'Beijing' => _r("Beijing"), // '北京', // .cn + 'Brasilia' => _r("Brasilia"), + 'Brisbane' => _r("Brisbane"), + 'Brno' => _r("Brno"), + 'Brussels' => _r("Brussels"), + 'Canterbury' => _r("Canterbury"), + 'Cebu' => _r("Cebu"), + 'Chungli' => _r("Chungli"), + 'Cuenca' => _r("Cuenca"), + 'DTU' => _r("DTU"), + 'Durham' => _r("Durham"), + 'Düsseldorf' => _r("Düsseldorf"), + 'Enschede' => _r("Enschede"), + 'Erlangen' => _r("Erlangen"), + 'Falkenstein/Vogtl.' => _r("Falkenstein/Vogtl."), + 'Göttingen' => _r("Göttingen"), + 'Heraklion' => _r("Heraklion"), // 'Ηράκλειο', // .gr + 'HsinChu' => _r("HsinChu"), // '新竹市', // .tw + 'Lenoir' => _r("Lenoir"), + 'Lyon' => _r("Lyon"), + 'Milan' => _r("Milan"), + 'Minsk' => _r("Minsk"), // 'Мінск', // .by + 'Miskolc' => _r("Miskolc"), + 'Moscow' => _r("Moscow"), // 'Москва', // .ru + 'Paris' => _r("Paris"), + 'Prague' => _r("Prague"), // 'Praha', // .cz + 'Princeton' => _r("Princeton"), + 'Schneverdingen' => _r("Schneverdingen"), + 'Shanghai' => _r("Shanghai"), + 'Sofia' => _r("Sofia"), + 'Stellenbosch' => _r("Stellenbosch"), + 'Taipei' => _r("Taipei"), + 'Tsukuba' => _r("Tsukuba"), + 'Umeå' => _r("Umeå"), + 'Vinnytsia' => _r("Vinnytsia"), + 'Warszawa' => _r("Warszawa"), + 'Yonezawa' => _r("Yonezawa"), // '米沢市', // .jp + 'ruchmond' => _r("ruchmond"), + 'Краснодар' => _r("Краснодар"), +); + + /** * Rewrite city name in the local official language. * @@ -56,19 +103,10 @@ $countries = array( * * @return string */ -function rewrite_city($name) +function rewrite_city($name, $cities_for_rewrite) { - $cities = array( - 'HsinChu' => '新竹市', // .tw - 'Yonezawa' => '米沢市', // .jp - 'Beijing' => '北京', // .cn - 'Moscow' => 'Москва', // .ru - 'Minsk' => 'Мінск', // .by - 'Heraklion' => 'Ηράκλειο', // .gr - 'Prague' => 'Praha', // .cz - ); - if (array_key_exists($name, $cities)) { - return $cities[$name]; + if (array_key_exists($name, $cities_for_rewrite)) { + return $cities_for_rewrite[$name]; } return $name; diff --git a/lib/Downloads.php b/lib/Downloads.php index fc8305c06..5d1e676f8 100644 --- a/lib/Downloads.php +++ b/lib/Downloads.php @@ -153,6 +153,14 @@ class Downloads $mirrors = array(); $num_up = 0; $num_dn = 0; + $mirror_cities = array(); + $mirror_countries = array(); + $refresh_country_and_city_arrays = false; + if ($prod == false && $documentation == false && $mirrorlist == false) { + function _r($passthru) {return '_r("' . $passthru . '")';}; + include_once(realpath(__DIR__) . '/../en/downloads/get/lib.php'); + $refresh_country_and_city_arrays = true; + } foreach ($data as $line) { $line = explode(',', trim($line)); $m = array(); @@ -167,10 +175,25 @@ class Downloads $item = array( 'zone' => isset($m['zone']) ? $m['zone'] : '?', 'country' => isset($m['country']) ? $m['country'] : '?', - 'city' => isset($m['city']) ? utf8_encode($m['city']) : '-', + 'city' => isset($m['city']) ? $m['city'] : '-', // BEWARE of the path substitution here. Must match. 'url' => str_replace('/distrib/7/i586', '', $m['url']) ); + if ($refresh_country_and_city_arrays == true) { + // prepare details for i18n + if (isset($m['city'])) { + if (isset($cities_i18n[$m['city']])) { + $mirror_cities[$m['city']] = $cities_i18n[$m['city']]; + } else { + $mirror_cities[$m['city']] = '_r("' . $m['city'] . '") // new city (not yet in /en/downloads/get/lib.php)'; + } + } + if (isset($countries[$item['country']])) { + $mirror_countries[$item['country']] = $countries[$item['country']]; + } else if (isset($item['country'])) { + $mirror_countries[$item['country']] = " // new country (not yet in /en/downloads/get/lib.php)"; + } + } if ($documentation) { $test_file = $item['url'].'/doc/mga7/date.txt'; @@ -199,6 +222,29 @@ class Downloads echo "\nThere are $num_up servers with the file and $num_dn with some kind of issue.\n"; file_put_contents($cache_file, sprintf('' . PHP_EOL, var_export($mirrors, true))); + + if ($refresh_country_and_city_arrays == true) { + foreach ($countries as $ISO_3166_country_code => $lib_country) { + if (!isset($mirror_countries[$ISO_3166_country_code])) { + $mirror_countries[$ISO_3166_country_code] = $lib_country; + } + } + foreach ($cities_i18n as $english_name => $translated_name) { + if (!isset($mirror_cities[$english_name])) { + $mirror_cities[$english_name] = '_r("' . $english_name . '")'; + } + } + ksort($mirror_cities); + $countries_u = array_unique($mirror_countries); + ksort($countries_u); + echo "\nArray of cities for i18n: "; + var_export($mirror_cities); + echo ";\nArray of countries for i18n: "; + var_export($countries_u); + echo ";\n"; + } + echo "\nRemove char ' at each value on both arrays for cities and countries above : replace '_r(\" with just _r( and also behind \")', with \"),\n"; + echo "and update arrays in file /en/downloads/get/lib.php with that.\n"; } return $mirrors; } diff --git a/tools/web_projects.dat b/tools/web_projects.dat index 23c34c0a8..babfb6b2c 100644 --- a/tools/web_projects.dat +++ b/tools/web_projects.dat @@ -7,7 +7,7 @@ resources[about/media]="en/about/media/index.php" resources[about/policies/privacy]="en/about/policies/privacy/index.php" resources[about/reports]="en/about/reports/index.php" resources[about/values]="en/about/values/index.php" -resources[downloads/get]="en/downloads/get/index.php" +resources[downloads/get]="en/downloads/get/index.php en/downloads/get/lib.php" resources[2]="en/2/download_index.php en/2/for-pc/index.php en/2/for-server/index.php en/2/index.php en/2/nav.php" resources[3]="en/3/download_index.php en/3/for-pc/index.php en/3/for-server/index.php en/3/index.php en/3/nav.php" -- cgit v1.2.1