मैं एक समाधान के साथ आने के, प्रारंभिक बिंदु स्थानों है।
आप getLocales
विधि के साथ सभी स्थानीय लोगों की सूची प्राप्त कर सकते हैं। $locales = ResourceBundle::getLocales('');
यहाँ देखें: http://php.net/manual/en/resourcebundle.locales.php
तो फिर तुम $countryName = Locale::getDisplayRegion($locale, 'en');
के साथ प्रत्येक स्थान के देश का नाम प्राप्त कर सकते हैं या आप Locale::getDisplayLanguage ($locale)
और इतने पर के साथ भाषा नाम प्राप्त कर सकते हैं। यहां देखें: http://php.net/manual/en/class.locale.php
उदाहरण के लिए मैं निम्नलिखित कोड के साथ कई टाइमज़ोन नामों से मेल खाता हूं;
<?php
/* fill the array with values from
https://gist.github.com/vxnick/380904#gistcomment-1433576
Unfortunately I couldn't manage to find a proper
way to convert countrynames to short codes
*/
$countries = [];
$locales = ResourceBundle::getLocales('');
foreach ($locales as $l => $locale) {
$countryName = Locale::getDisplayRegion($locale, 'en');
$countryCode = array_search($countryName, $countries);
if($countryCode !== false) {
$timezone_identifiers = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, $countryCode);
echo "----------------".PHP_EOL;
echo $countryName.PHP_EOL;
echo Locale::getDisplayLanguage ($locale).PHP_EOL;
var_dump($timezone_identifiers);
}
}
मुझे पता है कि यह सबसे अच्छा जवाब नहीं है लेकिन कम से कम यह आपको किक शुरू कर सकता है।
अद्यतन
स्थान प्रति देश का नाम प्राप्त करने के लिए आप इस एक कोशिश कर सकते हैं;
<?php
$locales = ResourceBundle::getLocales('');
foreach ($locales as $l => $locale) {
$countryName = Locale::getDisplayRegion($locale, 'en');
echo $locale."===>".$countryName.PHP_EOL;
}
अद्यतन 2
दिन नाम, महीने के नाम, स्थान के अनुसार मुद्रा इकट्ठा
$locales = ResourceBundle::getLocales('');
foreach ($locales as $l => $locale) {
echo "============= ".PHP_EOL;
echo "Locale:". $locale. PHP_EOL;
echo "Language: ".Locale::getDisplayLanguage($locale, 'en');
echo PHP_EOL;
$formatter = new NumberFormatter($locale, NumberFormatter::CURRENCY);
echo "Currency: ".$formatter->getTextAttribute(NumberFormatter::CURRENCY_CODE);
echo PHP_EOL;
echo PHP_EOL."Days :".PHP_EOL;
$dt = new DateTime('this sunday');
for($i = 0; $i<=6; $i++) {
echo IntlDateFormatter::formatObject($dt, "eeee", $locale);
$dt->add(new DateInterval('P1D'));
echo PHP_EOL;
}
echo PHP_EOL."Months :".PHP_EOL;
$dt = new DateTime('01/01/2015');
for($i = 0; $i<12; $i++) {
echo IntlDateFormatter::formatObject($dt, "MMMM", $locale);
$dt->add(new DateInterval('P1M'));
echo PHP_EOL;
}
}
जहां तक मेरा डॉक्स पर पढ़ा है, उपयोगकर्ता के साथ प्रति स्थान की जानकारी इकट्ठा करने के लिए उपरोक्त तरीकों। एक पुस्तकालय है जो इस प्रयोजनों के लिए फायदेमंद हो सकता है। https://github.com/ICanBoogie/CLDR
उत्तर के लिए धन्यवाद। लेकिन मुझे सभी सीएलडीआर जानकारी की आवश्यकता है। प्रत्येक भाषा द्वारा देशों के नाम की तरह। यह cldr डेटा पर है। http://www.unicode.org/Public/cldr/27.0.1/ .. फ़ाइलें डाउनलोड करें और पूरी जानकारी देखें। – sweb
@sweb क्या आप मुझे बता सकते हैं कि कौन सी एक्सएमएल फाइल मुझे cldr डेटाबेस दिखाना चाहिए? यह थोड़ा बड़ा है:) मुझे यकीन है कि किसी बिंदु पर पूर्वनिर्धारित कार्यों के साथ डेटा मैप करने के तरीके हैं, लेकिन यदि यह पर्याप्त नहीं है तो हमें एक्सएमएल डेटा को पार्स और मैप करना चाहिए। मेरे अपडेट को भी देखें, यह आपको प्रति स्थानीय देश नाम देता है जिसमें भाषाएं शामिल हैं। – Ugur
मैं cldr डेटा पर विशेषज्ञ नहीं हूं लेकिन कोर.ज़िप [/common/main/*.xml] पर लगता है कि सभी लोकल डेटा जैसे सप्ताहों का नाम सप्ताह और बहुत कुछ होना चाहिए .. मैं इसे xml प्रक्रिया नहीं करना चाहता हूं। कारण php intl यह है। दिन के महीने और आदि का नाम ... मुझे लगता है कि कुछ विधि या आदि मुझे यह डेटा दे सकते हैं। मैं क्या देख रहा हूँविधि या कक्षा – sweb