2010-10-13 17 views
5

एक टेम्पलेट में मैं एक विशिष्ट दिनांक का दिन और महीना प्रदर्शित करता हूं:लोकेल के आधार पर तिथियों को कैसे प्रारूपित करें?

<div class="jour"><?php echo date('d',strtotime($content->getCreatedAt())) ?></div> 
<div class="mois"><?php echo date('M',strtotime($content->getCreatedAt())) ?></div> 

यह ठीक काम करता है, समस्या महीने का नाम अंग्रेजी में है। मैं कहां निर्दिष्ट करूं कि मैं उदाहरण के लिए फ्रेंच, किसी अन्य लोकेल में महीने का नाम चाहता हूं?

+0

मैं "default_culture" settings.yml में स्थापित करने की कोशिश की, लेकिन वह कुछ भी – Manu

उत्तर

5

सिम्फनी मेंसहायक मददकर्ताओं के बीच सहायक है जो i18n-aware है। दुर्भाग्यवश प्रारूपों को बुरी तरह से दस्तावेज किया गया है, see this link उन पर एक संकेत के लिए।

+2

हाँ ... यही कारण है कि करने के लिए एक बहुत अच्छा तरीका होगा कर दो! हालांकि, मैं एक सामान्य PHP समाधान के रूप में अपना जवाब छोड़ दूंगा। – lonesomeday

+0

प्रारूप_डेटा महीने का नाम प्रदर्शित कर सकता है? मुझे प्रलेखन नहीं मिल रहा है। – Manu

+0

कभी नहीं, इसे मिला - http://trac.symfony-project.org/wiki/formatDateHowTo – Manu

1

default_culture केवल मूल PHP कार्यों के लिए सिम्फनी अंतर्राष्ट्रीयकरण ढांचे के लिए लागू होता है। यदि आप इस सेटिंग परियोजना विस्तृत बदलना चाहते हैं, मैं config/ProjectConfiguration.class.php में ऐसा होता है, setlocale का उपयोग कर, और फिर date से strftime का उपयोग नहीं बल्कि:

// config/ProjectConfigration.class.php 
setlocale(LC_TIME, 'fr_FR'); 

// *Success.php 
<div class="jour"><?php echo strftime('%d',strtotime($content->getCreatedAt())) ?></div> 
<div class="mois"><?php echo strftime('%b',strtotime($content->getCreatedAt())) ?></div> 

ध्यान दें कि यह स्थान सेटिंग की आवश्यकता है आपकी मशीन पर सक्षम हो। जांचने के लिए, var_dump(setlocale(LC_ALL, 'fr_FR')); करें यदि परिणाम false है, तो आप ऐसा करने के लिए setlocale का उपयोग नहीं कर सकते हैं और शायद अनुवाद कोड स्वयं लिखने की आवश्यकता है। इसके अलावा, आपको अपने सिस्टम पर सही लोकेल स्थापित करना होगा। यह जांचने के लिए कि कौन से स्थान स्थापित हैं, कमांड लाइन पर locale -a करें।

+0

परिवर्तन नहीं किया व्यक्तिगत रूप से पाया 'strftime% एक्स% X' पैरामीटर बहुत उपयोगी –

1

दिन में इतनी देर में बुझाने के लिए खेद है, लेकिन मैं यहां अपने विचार जोड़ना चाहता हूं। मेरे द्वारा आया सर्वोत्तम अंतर्राष्ट्रीय दिनांक प्रारूप "% e% b% y" है, उदा। 9 मार्च 2012. मुझे आईएसओ प्रारूप "% वाई-% एम-% डी" की तुलना में यह बहुत अधिक पठनीय लगता है, उदा। 2012-03-09। दस्तावेज़ों के मुताबिक,% x प्रारूप लोकेल संवेदनशील होना चाहिए, लेकिन यह मेरे लिए काम नहीं करता है, कम से कम आईफोन पर नहीं। ऐसा इसलिए हो सकता है क्योंकि सफारी HTML शीर्षकों में लोकेल नहीं दे रहा है, मुझे नहीं पता।

0

कभी-कभी सेटलोकेल() को विभिन्न संभावित मानों के साथ सरणी का उपयोग करने में उपयोगी होता है। विभिन्न वातावरण विशेष रूप से समर्थन करने के लिए (विंडोज, लिनक्स, ...)

setlocale(LC_TIME, array('fr', 'fr_FR', 'fr_FR.utf8', 'french', 'french_FRANCE', 'french_FRANCE.utf8')); 
echo strftime("%A %d %B", strtotime(date("Y-m-d"))); 

प्रलेखन राज्यों के रूप में:

तो लोकेल एक सरणी है या अतिरिक्त पैरामीटर के बाद फिर प्रत्येक सरणी तत्व या पैरामीटर है सफलता तक नए लोकेल के रूप में सेट करने की कोशिश की। यह उपयोगी है यदि एक लोकेल विभिन्न प्रणालियों पर अलग-अलग नामों के तहत या संभावित रूप से उपलब्ध लोकेल के लिए फ़ॉलबैक प्रदान करने के लिए ज्ञात नहीं है।

संबंधित मुद्दे