php 国家地区码,有没有一种简单的方法可以从PHP的国家/地区代码中获取语言代码 - php...

我正在使用ISO 3166-1-alpha 2代码传递给应用程序以检索本地供稿,例如/ feeds / us(美国)。我有一个switch语句,该语句根据该country_code提供供稿。

有没有办法将该两位数字代码转换为语言代码,例如en_US?我想知道是否有标准的/函数/库在PHP中执行此操作,或者是否需要构建自己的数组?

参考方案

正如其他人指出的那样,由于许多国家存在多种语言,因此没有内置功能。因此,很遗憾,我无法将您指向执行此操作的库,但是我确实继续编写了一个可以满足您需要的小函数。

有两个警告,一个是如果不提供语言,它将选择列表中的第一个语言环境。为了解决这个问题,您必须在函数调用周围添加一些逻辑,以为其提供适当的语言。另一个是它需要安装php5-intl。

/**

/* Returns a locale from a country code that is provided.

/*

/* @param $country_code ISO 3166-2-alpha 2 country code

/* @param $language_code ISO 639-1-alpha 2 language code

/* @returns a locale, formatted like en_US, or null if not found

/**/

function country_code_to_locale($country_code, $language_code = '')

{

// Locale list taken from:

// http://stackoverflow.com/questions/3191664/

// list-of-all-locales-and-their-short-codes

$locales = array('af-ZA',

'am-ET',

'ar-AE',

'ar-BH',

'ar-DZ',

'ar-EG',

'ar-IQ',

'ar-JO',

'ar-KW',

'ar-LB',

'ar-LY',

'ar-MA',

'arn-CL',

'ar-OM',

'ar-QA',

'ar-SA',

'ar-SY',

'ar-TN',

'ar-YE',

'as-IN',

'az-Cyrl-AZ',

'az-Latn-AZ',

'ba-RU',

'be-BY',

'bg-BG',

'bn-BD',

'bn-IN',

'bo-CN',

'br-FR',

'bs-Cyrl-BA',

'bs-Latn-BA',

'ca-ES',

'co-FR',

'cs-CZ',

'cy-GB',

'da-DK',

'de-AT',

'de-CH',

'de-DE',

'de-LI',

'de-LU',

'dsb-DE',

'dv-MV',

'el-GR',

'en-029',

'en-AU',

'en-BZ',

'en-CA',

'en-GB',

'en-IE',

'en-IN',

'en-JM',

'en-MY',

'en-NZ',

'en-PH',

'en-SG',

'en-TT',

'en-US',

'en-ZA',

'en-ZW',

'es-AR',

'es-BO',

'es-CL',

'es-CO',

'es-CR',

'es-DO',

'es-EC',

'es-ES',

'es-GT',

'es-HN',

'es-MX',

'es-NI',

'es-PA',

'es-PE',

'es-PR',

'es-PY',

'es-SV',

'es-US',

'es-UY',

'es-VE',

'et-EE',

'eu-ES',

'fa-IR',

'fi-FI',

'fil-PH',

'fo-FO',

'fr-BE',

'fr-CA',

'fr-CH',

'fr-FR',

'fr-LU',

'fr-MC',

'fy-NL',

'ga-IE',

'gd-GB',

'gl-ES',

'gsw-FR',

'gu-IN',

'ha-Latn-NG',

'he-IL',

'hi-IN',

'hr-BA',

'hr-HR',

'hsb-DE',

'hu-HU',

'hy-AM',

'id-ID',

'ig-NG',

'ii-CN',

'is-IS',

'it-CH',

'it-IT',

'iu-Cans-CA',

'iu-Latn-CA',

'ja-JP',

'ka-GE',

'kk-KZ',

'kl-GL',

'km-KH',

'kn-IN',

'kok-IN',

'ko-KR',

'ky-KG',

'lb-LU',

'lo-LA',

'lt-LT',

'lv-LV',

'mi-NZ',

'mk-MK',

'ml-IN',

'mn-MN',

'mn-Mong-CN',

'moh-CA',

'mr-IN',

'ms-BN',

'ms-MY',

'mt-MT',

'nb-NO',

'ne-NP',

'nl-BE',

'nl-NL',

'nn-NO',

'nso-ZA',

'oc-FR',

'or-IN',

'pa-IN',

'pl-PL',

'prs-AF',

'ps-AF',

'pt-BR',

'pt-PT',

'qut-GT',

'quz-BO',

'quz-EC',

'quz-PE',

'rm-CH',

'ro-RO',

'ru-RU',

'rw-RW',

'sah-RU',

'sa-IN',

'se-FI',

'se-NO',

'se-SE',

'si-LK',

'sk-SK',

'sl-SI',

'sma-NO',

'sma-SE',

'smj-NO',

'smj-SE',

'smn-FI',

'sms-FI',

'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-SE',

'sw-KE',

'syr-SY',

'ta-IN',

'te-IN',

'tg-Cyrl-TJ',

'th-TH',

'tk-TM',

'tn-ZA',

'tr-TR',

'tt-RU',

'tzm-Latn-DZ',

'ug-CN',

'uk-UA',

'ur-PK',

'uz-Cyrl-UZ',

'uz-Latn-UZ',

'vi-VN',

'wo-SN',

'xh-ZA',

'yo-NG',

'zh-CN',

'zh-HK',

'zh-MO',

'zh-SG',

'zh-TW',

'zu-ZA',);

foreach ($locales as $locale)

{

$locale_region = locale_get_region($locale);

$locale_language = locale_get_primary_language($locale);

$locale_array = array('language' => $locale_language,

'region' => $locale_region);

if (strtoupper($country_code) == $locale_region &&

$language_code == '')

{

return locale_compose($locale_array);

}

elseif (strtoupper($country_code) == $locale_region &&

strtolower($language_code) == $locale_language)

{

return locale_compose($locale_array);

}

}

return null;

}

?>

PHP-全局变量的性能和内存问题 - php

假设情况:我在php中运行一个复杂的站点,并且我使用了很多全局变量。我可以将变量存储在现有的全局范围内,例如$_REQUEST['userInfo'],$_REQUEST['foo']和$_REQUEST['bar']等,然后将许多不同的内容放入请求范围内(这将是适当的用法,因为这些数据指的是要求自…PHP strtotime困境 - php

有人可以解释为什么这在我的服务器上输出为true吗?date_default_timezone_set('Europe/Bucharest'); var_dump( strtotime('29.03.2015 03:00', time()) === strtotime('29.03.2015 04:00…php-casperjs获取内部文本 - php

我正在为casperjs使用php包装器-https://github.com/alwex/php-casperjs我正在网上自动化一些重复的工作,我需要访问一个项目的innerText,但是我尚不清楚如何从casperjs浏览器访问dom。我认为在js中我会var arr = document.querySelector('label.input…php:拆分字符串,直到第一次出现数字 - php

我有像cream 100G sup 5mg Children 我想在第一次出现数字之前将其拆分。所以结果应该是array( array('cream','100G'), array('sup','5mg Children') ); 可以告诉我如何为此创建图案吗?我试过了list(…将大字符串分成多个小字符串-PHP - php

我从数据库中获取了一个长字符串,我需要对其进行解析,以使其不包含一个大字符串,而是多个,其中每个字符串都有2个字符。让我们以示例为例:我连接到表,获取此字符串:B1C1F4G6H4I7J1J8L5O6P2Q1R6T5U8V1Z5,之后,我必须对字符串进行解析,因此:B1 C1 F4 G6 H4 I7 J1 J8 L5 O6 P2 Q1 R6 T5 U8 V1…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值