diff options
author | Stefan Giehl <stefan@matomo.org> | 2022-03-14 23:36:04 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-14 23:36:04 +0300 |
commit | 6712b4f7ee71a53187b19bd3a066d2c57da7e155 (patch) | |
tree | 0d4fc517c470efd2e0e8a08eba725259496a6afa /plugins | |
parent | b183ce903f3e24c97ad929c77aff99e1ef93ab11 (diff) |
Adds GitHub action to automatically update our Intl data from CLDR (#18842)
* make cldr version an optional parameter & fix script for PHP8
* adds action to update intl data
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/Intl/Commands/GenerateIntl.php | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/plugins/Intl/Commands/GenerateIntl.php b/plugins/Intl/Commands/GenerateIntl.php index 555190ef91..ec035b40bb 100644 --- a/plugins/Intl/Commands/GenerateIntl.php +++ b/plugins/Intl/Commands/GenerateIntl.php @@ -40,6 +40,7 @@ class GenerateIntl extends ConsoleCommand { $this->setName('translations:generate-intl-data') ->addOption('language', 'l', InputOption::VALUE_OPTIONAL, 'language that should be fetched') + ->addOption('cldr-version', '', InputOption::VALUE_OPTIONAL, 'CLDR version to use for update') ->setDescription('Generates Intl-data for Piwik'); } @@ -70,15 +71,17 @@ class GenerateIntl extends ConsoleCommand $matomoLanguages = [$input->getOption('language')]; } + if ($input->getOption('cldr-version')) { + $this->CLDRVersion = $input->getOption('cldr-version'); + } + $aliasesUrl = 'https://raw.githubusercontent.com/unicode-org/cldr-json/%s/cldr-json/cldr-core/supplemental/aliases.json'; $aliasesData = Http::fetchRemoteFile(sprintf($aliasesUrl, $this->CLDRVersion)); $aliasesData = json_decode($aliasesData, true); - $aliasesData = $aliasesData['supplemental']['metadata']['alias']['languageAlias']; + $aliasesData = $aliasesData['supplemental']['metadata']['alias']['languageAlias'] ?? []; $this->checkCurrencies($output); - $writePath = Filesystem::getPathToPiwikRoot() . '/plugins/Intl/lang/%s.json'; - foreach ($matomoLanguages AS $langCode) { if ($langCode == 'dev') { @@ -150,7 +153,7 @@ class GenerateIntl extends ConsoleCommand $currencyData = Http::fetchRemoteFile(sprintf($currencyDataUrl, $this->CLDRVersion, 'en')); $currencyData = json_decode($currencyData, true); - $currencyData = $currencyData['supplemental']['currencyData']['region']; + $currencyData = $currencyData['supplemental']['currencyData']['region'] ?? []; $cldrCurrencies = array(); foreach ($currencyData as $region) { @@ -187,7 +190,7 @@ class GenerateIntl extends ConsoleCommand if (empty($languageData)) { $languageData = Http::fetchRemoteFile(sprintf($languageDataUrl, $this->CLDRVersion, 'en')); $languageData = json_decode($languageData, true); - $languageData = $languageData['main']['en']['localeDisplayNames']['languages']; + $languageData = $languageData['main']['en']['localeDisplayNames']['languages'] ?? []; } if (array_key_exists($code, $languageData) && $languageData[$code] != $code) { @@ -212,7 +215,7 @@ class GenerateIntl extends ConsoleCommand try { $territoryData = Http::fetchRemoteFile(sprintf($territoryDataUrl, $this->CLDRVersion, 'en')); $territoryData = json_decode($territoryData, true); - $territoryData = $territoryData['main']['en']['localeDisplayNames']['territories']; + $territoryData = $territoryData['main']['en']['localeDisplayNames']['territories'] ?? []; if (array_key_exists($territory, $territoryData)) { $englishName .= ' ('.$territoryData[$territory].')'; @@ -241,7 +244,7 @@ class GenerateIntl extends ConsoleCommand try { $languageData = Http::fetchRemoteFile(sprintf($languageDataUrl, $this->CLDRVersion, $requestLangCode)); $languageData = json_decode($languageData, true); - $languageData = $languageData['main'][$requestLangCode]['localeDisplayNames']['languages']; + $languageData = $languageData['main'][$requestLangCode]['localeDisplayNames']['languages'] ?? []; if (empty($languageData)) { throw new \Exception(); @@ -273,7 +276,7 @@ class GenerateIntl extends ConsoleCommand try { $layoutData = Http::fetchRemoteFile(sprintf($layoutDirectionUrl, $this->CLDRVersion, $requestLangCode)); $layoutData = json_decode($layoutData, true); - $layoutData = $layoutData['main'][$requestLangCode]['layout']['orientation']; + $layoutData = $layoutData['main'][$requestLangCode]['layout']['orientation'] ?? []; if (empty($layoutData)) { throw new \Exception(); @@ -311,7 +314,7 @@ class GenerateIntl extends ConsoleCommand try { $territoryData = Http::fetchRemoteFile(sprintf($territoryDataUrl, $this->CLDRVersion, $requestLangCode)); $territoryData = json_decode($territoryData, true); - $territoryData = $territoryData['main'][$requestLangCode]['localeDisplayNames']['territories']; + $territoryData = $territoryData['main'][$requestLangCode]['localeDisplayNames']['territories'] ?? []; if (empty($territoryData)) { throw new \Exception(); @@ -342,7 +345,7 @@ class GenerateIntl extends ConsoleCommand try { $calendarData = Http::fetchRemoteFile(sprintf($calendarDataUrl, $this->CLDRVersion, $requestLangCode)); $calendarData = json_decode($calendarData, true); - $calendarData = $calendarData['main'][$requestLangCode]['dates']['calendars']['gregorian']; + $calendarData = $calendarData['main'][$requestLangCode]['dates']['calendars']['gregorian'] ?? []; if (empty($calendarData)) { throw new \Exception(); @@ -418,7 +421,7 @@ class GenerateIntl extends ConsoleCommand try { $dateFieldData = Http::fetchRemoteFile(sprintf($dateFieldsUrl, $this->CLDRVersion, $requestLangCode)); $dateFieldData = json_decode($dateFieldData, true); - $dateFieldData = $dateFieldData['main'][$requestLangCode]['dates']['fields']; + $dateFieldData = $dateFieldData['main'][$requestLangCode]['dates']['fields'] ?? []; if (empty($dateFieldData)) { throw new \Exception(); @@ -445,7 +448,7 @@ class GenerateIntl extends ConsoleCommand try { $timeZoneData = Http::fetchRemoteFile(sprintf($timeZoneDataUrl, $this->CLDRVersion, $requestLangCode)); $timeZoneData = json_decode($timeZoneData, true); - $timeZoneData = $timeZoneData['main'][$requestLangCode]['dates']['timeZoneNames']; + $timeZoneData = $timeZoneData['main'][$requestLangCode]['dates']['timeZoneNames'] ?? []; if (empty($timeZoneData)) { throw new \Exception(); @@ -508,7 +511,7 @@ class GenerateIntl extends ConsoleCommand try { $unitsData = Http::fetchRemoteFile(sprintf($unitsUrl, $this->CLDRVersion, $requestLangCode)); $unitsData = json_decode($unitsData, true); - $unitsData = $unitsData['main'][$requestLangCode]['numbers']; + $unitsData = $unitsData['main'][$requestLangCode]['numbers'] ?? []; if (empty($unitsData)) { throw new \Exception(); @@ -538,7 +541,7 @@ class GenerateIntl extends ConsoleCommand try { $unitsData = Http::fetchRemoteFile(sprintf($unitsUrl, $this->CLDRVersion, $requestLangCode)); $unitsData = json_decode($unitsData, true); - $unitsData = $unitsData['main'][$requestLangCode]['units']; + $unitsData = $unitsData['main'][$requestLangCode]['units'] ?? []; if (empty($unitsData)) { throw new \Exception(); @@ -596,7 +599,7 @@ class GenerateIntl extends ConsoleCommand try { $currencyData = Http::fetchRemoteFile(sprintf($currenciesUrl, $this->CLDRVersion, $requestLangCode)); $currencyData = json_decode($currencyData, true); - $currencyData = $currencyData['main'][$requestLangCode]['numbers']['currencies']; + $currencyData = $currencyData['main'][$requestLangCode]['numbers']['currencies'] ?? []; if (empty($currencyData)) { throw new \Exception(); |