update
This commit is contained in:
174
modules/pdgoogleanalytycs4pro/vendor/giggsey/locale/src/Locale.php
vendored
Normal file
174
modules/pdgoogleanalytycs4pro/vendor/giggsey/locale/src/Locale.php
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
<?php
|
||||
|
||||
namespace Giggsey\Locale;
|
||||
|
||||
class Locale
|
||||
{
|
||||
protected static $dataDir = '../data/';
|
||||
|
||||
/**
|
||||
* Gets the primary language for the input locale
|
||||
*
|
||||
* @param string $locale Input locale (e.g. en-GB)
|
||||
* @return string Primary Language (e.g. en)
|
||||
*/
|
||||
public static function getPrimaryLanguage(string $locale): string
|
||||
{
|
||||
$parts = explode('-', str_replace('_', '-', $locale));
|
||||
|
||||
return strtolower($parts[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the region for the input locale
|
||||
*
|
||||
* @param string $locale Input locale (e.g. de-CH-1991)
|
||||
* @return string Region (e.g. CH)
|
||||
*/
|
||||
public static function getRegion(string $locale): string
|
||||
{
|
||||
$parts = explode('-', str_replace('_', '-', $locale));
|
||||
|
||||
if (count($parts) === 1) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$region = end($parts);
|
||||
|
||||
if (strlen($region) === 4) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ($region === 'POSIX') {
|
||||
$region = 'US';
|
||||
}
|
||||
|
||||
return strtoupper($region);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the localised display name for the region of the input locale
|
||||
*
|
||||
* @param string $locale The locale to return a display region for
|
||||
* @param string $inLocale Format locale to display the region name
|
||||
* @return string Display name for the region, or an empty string if no result could be found
|
||||
*/
|
||||
public static function getDisplayRegion(string $locale, string $inLocale): string
|
||||
{
|
||||
$dataDir = __DIR__ . DIRECTORY_SEPARATOR . static::$dataDir;
|
||||
|
||||
// Convert $locale into a region
|
||||
$region = static::getRegion($locale);
|
||||
|
||||
$regionList = require $dataDir . '_list.php';
|
||||
|
||||
/*
|
||||
* Loop through each part of the $inLocale, and see if we have data for that locale
|
||||
*
|
||||
* E.g zh-Hans-HK will look for zh-Hanks-HK, zh-Hanks, then finally zh
|
||||
*/
|
||||
$fallbackParts = explode('-', str_replace('_', '-', $inLocale));
|
||||
$filesToSearch = [];
|
||||
|
||||
$i = count($fallbackParts);
|
||||
while ($i > 0) {
|
||||
$searchLocale = strtolower(implode('-', $fallbackParts));
|
||||
|
||||
if (isset($regionList[$searchLocale])) {
|
||||
$filesToSearch[] = $searchLocale;
|
||||
}
|
||||
|
||||
array_pop($fallbackParts);
|
||||
$i--;
|
||||
}
|
||||
|
||||
/*
|
||||
* Load data files, and load the region (if it exists) from it
|
||||
*/
|
||||
|
||||
foreach ($filesToSearch as $fileToSearch) {
|
||||
// Load data file
|
||||
$data = require $dataDir . $fileToSearch . '.php';
|
||||
|
||||
if (isset($data[$region])) {
|
||||
return $data[$region];
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
public static function getVersion()
|
||||
{
|
||||
$file = __DIR__ . DIRECTORY_SEPARATOR . static::$dataDir . '_version.php';
|
||||
|
||||
return require $file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a list of all the supported locales
|
||||
*
|
||||
* @return string[]
|
||||
*/
|
||||
public static function getSupportedLocales(): array
|
||||
{
|
||||
$dataDir = __DIR__ . DIRECTORY_SEPARATOR . static::$dataDir;
|
||||
$regionList = require $dataDir . '_list.php';
|
||||
|
||||
return array_keys($regionList);
|
||||
}
|
||||
|
||||
/**
|
||||
* Load a list of all countries supported by a particular Locale
|
||||
*
|
||||
* @param string $locale
|
||||
* @return string[] Associative array of Country Code => Country Name
|
||||
* @throws \RuntimeException On an invalid region
|
||||
*/
|
||||
public static function getAllCountriesForLocale(string $locale): array
|
||||
{
|
||||
$dataDir = __DIR__ . DIRECTORY_SEPARATOR . static::$dataDir;
|
||||
$regionList = require $dataDir . '_list.php';
|
||||
|
||||
if (!isset($regionList[$locale])) {
|
||||
throw new \RuntimeException("Locale is not supported");
|
||||
}
|
||||
|
||||
/*
|
||||
* Loop through each part of the $locale, and load data for that locale
|
||||
*
|
||||
* E.g zh-Hans-HK will look for zh-Hanks-HK, zh-Hanks, then finally zh
|
||||
*/
|
||||
$fallbackParts = explode('-', str_replace('_', '-', $locale));
|
||||
$filesToSearch = [];
|
||||
|
||||
$i = count($fallbackParts);
|
||||
while ($i > 0) {
|
||||
$searchLocale = strtolower(implode('-', $fallbackParts));
|
||||
|
||||
if (isset($regionList[$searchLocale])) {
|
||||
$filesToSearch[] = $searchLocale;
|
||||
}
|
||||
|
||||
array_pop($fallbackParts);
|
||||
$i--;
|
||||
}
|
||||
|
||||
/*
|
||||
* Load data files, and load the region (if it exists) from it
|
||||
*/
|
||||
|
||||
$returnData = [];
|
||||
|
||||
foreach ($filesToSearch as $fileToSearch) {
|
||||
// Load data file
|
||||
$data = require $dataDir . $fileToSearch . '.php';
|
||||
|
||||
$returnData += $data;
|
||||
}
|
||||
|
||||
ksort($returnData);
|
||||
|
||||
return $returnData;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user