Fix getLanguageCodeFromCountryCode
This commit is contained in:
parent
b6dac7da20
commit
5e9abe6aad
@ -6792,13 +6792,15 @@ function picto_from_langcode($codelang, $moreatt = '')
|
|||||||
*/
|
*/
|
||||||
function getLanguageCodeFromCountryCode($countrycode)
|
function getLanguageCodeFromCountryCode($countrycode)
|
||||||
{
|
{
|
||||||
$countrycodetolanguage = array(
|
global $mysoc;
|
||||||
'SA' => 'ar_AR',
|
|
||||||
'DK' => 'da_DA',
|
if (strtoupper($countrycode) == 'MQ') return 'fr_CA';
|
||||||
'CA' => 'en_CA',
|
if (strtoupper($countrycode) == 'SE') return 'sv_SE'; // se_SE is Sami/Sweden, and we want in priority sv_SE for SE country
|
||||||
'SE' => 'sv_SV'
|
if (strtoupper($countrycode) == 'CH')
|
||||||
);
|
{
|
||||||
if (! empty($countrycodetolanguage[$countrycode])) return $countrycodetolanguage[$countrycode];
|
if ($mysoc->country_code == 'FR') return 'fr_CH';
|
||||||
|
if ($mysoc->country_code == 'DE') return 'de_CH';
|
||||||
|
}
|
||||||
|
|
||||||
// Locale list taken from:
|
// Locale list taken from:
|
||||||
// http://stackoverflow.com/questions/3191664/
|
// http://stackoverflow.com/questions/3191664/
|
||||||
@ -6816,7 +6818,6 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'ar-LB',
|
'ar-LB',
|
||||||
'ar-LY',
|
'ar-LY',
|
||||||
'ar-MA',
|
'ar-MA',
|
||||||
'arn-CL',
|
|
||||||
'ar-OM',
|
'ar-OM',
|
||||||
'ar-QA',
|
'ar-QA',
|
||||||
'ar-SA',
|
'ar-SA',
|
||||||
@ -6824,8 +6825,6 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'ar-TN',
|
'ar-TN',
|
||||||
'ar-YE',
|
'ar-YE',
|
||||||
'as-IN',
|
'as-IN',
|
||||||
'az-Cyrl-AZ',
|
|
||||||
'az-Latn-AZ',
|
|
||||||
'ba-RU',
|
'ba-RU',
|
||||||
'be-BY',
|
'be-BY',
|
||||||
'bg-BG',
|
'bg-BG',
|
||||||
@ -6833,8 +6832,6 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'bn-IN',
|
'bn-IN',
|
||||||
'bo-CN',
|
'bo-CN',
|
||||||
'br-FR',
|
'br-FR',
|
||||||
'bs-Cyrl-BA',
|
|
||||||
'bs-Latn-BA',
|
|
||||||
'ca-ES',
|
'ca-ES',
|
||||||
'co-FR',
|
'co-FR',
|
||||||
'cs-CZ',
|
'cs-CZ',
|
||||||
@ -6845,10 +6842,8 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'de-DE',
|
'de-DE',
|
||||||
'de-LI',
|
'de-LI',
|
||||||
'de-LU',
|
'de-LU',
|
||||||
'dsb-DE',
|
|
||||||
'dv-MV',
|
'dv-MV',
|
||||||
'el-GR',
|
'el-GR',
|
||||||
'en-029',
|
|
||||||
'en-AU',
|
'en-AU',
|
||||||
'en-BZ',
|
'en-BZ',
|
||||||
'en-CA',
|
'en-CA',
|
||||||
@ -6888,7 +6883,6 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'eu-ES',
|
'eu-ES',
|
||||||
'fa-IR',
|
'fa-IR',
|
||||||
'fi-FI',
|
'fi-FI',
|
||||||
'fil-PH',
|
|
||||||
'fo-FO',
|
'fo-FO',
|
||||||
'fr-BE',
|
'fr-BE',
|
||||||
'fr-CA',
|
'fr-CA',
|
||||||
@ -6900,14 +6894,11 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'ga-IE',
|
'ga-IE',
|
||||||
'gd-GB',
|
'gd-GB',
|
||||||
'gl-ES',
|
'gl-ES',
|
||||||
'gsw-FR',
|
|
||||||
'gu-IN',
|
'gu-IN',
|
||||||
'ha-Latn-NG',
|
|
||||||
'he-IL',
|
'he-IL',
|
||||||
'hi-IN',
|
'hi-IN',
|
||||||
'hr-BA',
|
'hr-BA',
|
||||||
'hr-HR',
|
'hr-HR',
|
||||||
'hsb-DE',
|
|
||||||
'hu-HU',
|
'hu-HU',
|
||||||
'hy-AM',
|
'hy-AM',
|
||||||
'id-ID',
|
'id-ID',
|
||||||
@ -6916,15 +6907,12 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'is-IS',
|
'is-IS',
|
||||||
'it-CH',
|
'it-CH',
|
||||||
'it-IT',
|
'it-IT',
|
||||||
'iu-Cans-CA',
|
|
||||||
'iu-Latn-CA',
|
|
||||||
'ja-JP',
|
'ja-JP',
|
||||||
'ka-GE',
|
'ka-GE',
|
||||||
'kk-KZ',
|
'kk-KZ',
|
||||||
'kl-GL',
|
'kl-GL',
|
||||||
'km-KH',
|
'km-KH',
|
||||||
'kn-IN',
|
'kn-IN',
|
||||||
'kok-IN',
|
|
||||||
'ko-KR',
|
'ko-KR',
|
||||||
'ky-KG',
|
'ky-KG',
|
||||||
'lb-LU',
|
'lb-LU',
|
||||||
@ -6935,8 +6923,6 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'mk-MK',
|
'mk-MK',
|
||||||
'ml-IN',
|
'ml-IN',
|
||||||
'mn-MN',
|
'mn-MN',
|
||||||
'mn-Mong-CN',
|
|
||||||
'moh-CA',
|
|
||||||
'mr-IN',
|
'mr-IN',
|
||||||
'ms-BN',
|
'ms-BN',
|
||||||
'ms-MY',
|
'ms-MY',
|
||||||
@ -6946,24 +6932,17 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'nl-BE',
|
'nl-BE',
|
||||||
'nl-NL',
|
'nl-NL',
|
||||||
'nn-NO',
|
'nn-NO',
|
||||||
'nso-ZA',
|
|
||||||
'oc-FR',
|
'oc-FR',
|
||||||
'or-IN',
|
'or-IN',
|
||||||
'pa-IN',
|
'pa-IN',
|
||||||
'pl-PL',
|
'pl-PL',
|
||||||
'prs-AF',
|
|
||||||
'ps-AF',
|
'ps-AF',
|
||||||
'pt-BR',
|
'pt-BR',
|
||||||
'pt-PT',
|
'pt-PT',
|
||||||
'qut-GT',
|
|
||||||
'quz-BO',
|
|
||||||
'quz-EC',
|
|
||||||
'quz-PE',
|
|
||||||
'rm-CH',
|
'rm-CH',
|
||||||
'ro-RO',
|
'ro-RO',
|
||||||
'ru-RU',
|
'ru-RU',
|
||||||
'rw-RW',
|
'rw-RW',
|
||||||
'sah-RU',
|
|
||||||
'sa-IN',
|
'sa-IN',
|
||||||
'se-FI',
|
'se-FI',
|
||||||
'se-NO',
|
'se-NO',
|
||||||
@ -6971,39 +6950,21 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'si-LK',
|
'si-LK',
|
||||||
'sk-SK',
|
'sk-SK',
|
||||||
'sl-SI',
|
'sl-SI',
|
||||||
'sma-NO',
|
|
||||||
'sma-SE',
|
|
||||||
'smj-NO',
|
|
||||||
'smj-SE',
|
|
||||||
'smn-FI',
|
|
||||||
'sms-FI',
|
|
||||||
'sq-AL',
|
'sq-AL',
|
||||||
'sr-Cyrl-BA',
|
|
||||||
'sr-Cyrl-CS',
|
|
||||||
'sr-Cyrl-ME',
|
|
||||||
'sr-Cyrl-RS',
|
|
||||||
'sr-Latn-BA',
|
|
||||||
'sr-Latn-CS',
|
|
||||||
'sr-Latn-ME',
|
|
||||||
'sr-Latn-RS',
|
|
||||||
'sv-FI',
|
'sv-FI',
|
||||||
'sv-SE',
|
'sv-SE',
|
||||||
'sw-KE',
|
'sw-KE',
|
||||||
'syr-SY',
|
'syr-SY',
|
||||||
'ta-IN',
|
'ta-IN',
|
||||||
'te-IN',
|
'te-IN',
|
||||||
'tg-Cyrl-TJ',
|
|
||||||
'th-TH',
|
'th-TH',
|
||||||
'tk-TM',
|
'tk-TM',
|
||||||
'tn-ZA',
|
'tn-ZA',
|
||||||
'tr-TR',
|
'tr-TR',
|
||||||
'tt-RU',
|
'tt-RU',
|
||||||
'tzm-Latn-DZ',
|
|
||||||
'ug-CN',
|
'ug-CN',
|
||||||
'uk-UA',
|
'uk-UA',
|
||||||
'ur-PK',
|
'ur-PK',
|
||||||
'uz-Cyrl-UZ',
|
|
||||||
'uz-Latn-UZ',
|
|
||||||
'vi-VN',
|
'vi-VN',
|
||||||
'wo-SN',
|
'wo-SN',
|
||||||
'xh-ZA',
|
'xh-ZA',
|
||||||
@ -7016,14 +6977,17 @@ function getLanguageCodeFromCountryCode($countrycode)
|
|||||||
'zu-ZA',
|
'zu-ZA',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$buildprimarykeytotest = strtolower($countrycode).'-'.strtoupper($countrycode);
|
||||||
|
if (in_array($buildprimarykeytotest, $locales)) return strtolower($countrycode).'_'.strtoupper($countrycode);
|
||||||
|
|
||||||
foreach ($locales as $locale)
|
foreach ($locales as $locale)
|
||||||
{
|
{
|
||||||
$locale_region = locale_get_region($locale);
|
|
||||||
$locale_language = locale_get_primary_language($locale);
|
$locale_language = locale_get_primary_language($locale);
|
||||||
$locale_array = array('language' => $locale_language, 'region' => $locale_region);
|
$locale_region = locale_get_region($locale);
|
||||||
if (strtoupper($countrycode) == $locale_region)
|
if (strtoupper($countrycode) == $locale_region)
|
||||||
{
|
{
|
||||||
return locale_compose($locale_array);
|
//var_dump($locale.'-'.$locale_language.'-'.$locale_region);
|
||||||
|
return strtolower($locale_language).'_'.strtoupper($locale_region);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -48,7 +48,7 @@ if (! defined("NOLOGIN")) define("NOLOGIN",'1'); // If this page is
|
|||||||
* @backupStaticAttributes enabled
|
* @backupStaticAttributes enabled
|
||||||
* @remarks backupGlobals must be disabled to have db,conf,user and lang not erased.
|
* @remarks backupGlobals must be disabled to have db,conf,user and lang not erased.
|
||||||
*/
|
*/
|
||||||
class FunctionsLibTest extends PHPUnit_Framework_TestCase
|
class FunctionsLibTest extends PHPUnit\Framework\TestCase
|
||||||
{
|
{
|
||||||
protected $savconf;
|
protected $savconf;
|
||||||
protected $savuser;
|
protected $savuser;
|
||||||
@ -325,6 +325,57 @@ class FunctionsLibTest extends PHPUnit_Framework_TestCase
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* testGetLanguageCodeFromCountryCode
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testGetLanguageCodeFromCountryCode()
|
||||||
|
{
|
||||||
|
global $mysoc;
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('US');
|
||||||
|
$this->assertEquals('en_US', $language, 'US');
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('ES');
|
||||||
|
$this->assertEquals('es_ES', $language, 'ES');
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('CL');
|
||||||
|
$this->assertEquals('es_CL', $language, 'CL');
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('CA');
|
||||||
|
$this->assertEquals('en_CA', $language, 'CA');
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('MQ');
|
||||||
|
$this->assertEquals('fr_CA', $language);
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('FR');
|
||||||
|
$this->assertEquals('fr_FR', $language);
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('BE');
|
||||||
|
$this->assertEquals('fr_BE', $language);
|
||||||
|
|
||||||
|
$mysoc->country_code = 'FR';
|
||||||
|
$language = getLanguageCodeFromCountryCode('CH');
|
||||||
|
$this->assertEquals('fr_CH', $language);
|
||||||
|
|
||||||
|
$mysoc->country_code = 'DE';
|
||||||
|
$language = getLanguageCodeFromCountryCode('CH');
|
||||||
|
$this->assertEquals('de_CH', $language);
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('DE');
|
||||||
|
$this->assertEquals('de_DE', $language);
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('SA');
|
||||||
|
$this->assertEquals('ar_SA', $language);
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('SE');
|
||||||
|
$this->assertEquals('sv_SE', $language);
|
||||||
|
|
||||||
|
$language = getLanguageCodeFromCountryCode('DK');
|
||||||
|
$this->assertEquals('da_DK', $language);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* testDolTextIsHtml
|
* testDolTextIsHtml
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user