2009-09-29 17 views
7

मैं वर्तमान में उपयोगकर्ता की भाषा में सामग्री प्रदान करने के लिए एक ऑटो-उपयोगकर्ता-भाषा-पहचान पर काम कर रहा हूं।PHP में उपयोगकर्ता भाषा का पता लगाएं - स्थिर समाधान

बेशक भाषा को मैन्युअल रूप से बदलना संभव है, लेकिन यदि कोई उपयोगकर्ता पहली बार पृष्ठ पर जाता है तो मैं अपनी भाषा में सामग्री प्रदान करना चाहता हूं।

तो मैं googling किया गया था और पाया $ _SERVER [ 'HTTP_ACCEPT_LANGUAGE'] - वार ऐसे ही एक परिणाम प्राप्त करने के लिए: क्या इस परिणाम को फिल्टर करने के लिए सबसे अच्छा तरीका "एन की तरह एक स्पष्ट परिणाम प्राप्त करने के

de-de,de;q=0.8,en-us;q=0.5,en;q=0.3

"/" डीई "/" आईटी "?

$rL = $_SERVER["HTTP_ACCEPT_LANGUAGE"]; // de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 
$langCode = strtoupper($rl[0].$rl[1]); 

इस सर्वर-वार पर दूसरा मुद्दा यह है कि ब्राउज़र केवल कुछ जानकारी प्रदान करता है तो यह केवल मुझे परिणाम देता है। क्या एक डिफ़ॉल्ट पृष्ठ भाषा को संभालने की एकमात्र संभावना है?

दूसरी संभावना है कि मुझे दिलचस्पी है आईपी द्वारा भाषा प्राप्त करना। तो अगर मुझे भाषा मिलती है तो शायद मुझे उपयोगकर्ता की भाषा पता है। लेकिन स्विट्ज़रलैंड, बेल्जियम जैसे बहु भाषा-देशों में क्या है? Tld की तरह .com/.net/.org और इसी तरह के साथ क्या है।

तो उपयोगकर्ता भाषा का पता लगाने के लिए आप किस विधि पर लागू होंगे?

मदद के लिए धन्यवाद।

उत्तर

5

स्वीकार्य-भाषा के साथ चिपकाएं। सभी ब्राउज़रों हेडर को पास करते हैं और यह भौगोलिक स्थान के कच्चे अनुमान की तुलना में उपयोगकर्ता की भाषा होने की अधिक संभावना है।

PECL http_negotiate_language जो हैडर पार्स और ठीक से आप के लिए एक भाषा का चयन कर सकते हैं, हालांकि व्यवहार सिर्फ स्ट्रिंग में के लिए en/de/it देखने का भी कुछ हद तक फर्जी विधि में आईपी सूंघने की तुलना में बेहतर काम करता है।

Whats with tld's like .com/.net/.org and so on.

डोमेन नाम आमतौर पर सूँघने आईपी में शामिल नहीं कर रहे हैं, जो IP सीमाओं कि शायद कुछ देश से जुड़े हैं का अपना बैकएंड डेटाबेस है। देश अनुमान लगाने के लिए रिवर्स-रेज़ोल्यूशन लगभग कोई उपयोग नहीं है क्योंकि कुछ आईपी एक सीसीटीएलडी को रिवर्स-रिजोल्यूशन करते हैं।

+0

अच्छी तरह से, जब मैं http_negotiate_language के उदाहरण का उपयोग करने का प्रयास करता हूं - घातक त्रुटि: अपरिभाषित फ़ंक्शन पर कॉल करें http_negotiate_language() - मैं क्या गलत करता हूं? – wildhaber

+0

pecl_http एक्सटेंशन इंस्टॉल करें। http://uk.php.net/manual/en/http.install.php वैकल्पिक रूप से वार्तालाप_भाषा पृष्ठ की टिप्पणियों में एक मूल-PHP संस्करण है जो ऐसा लगता है कि यह ठीक होना चाहिए। – bobince

1

सर्वोत्तम अभ्यास के रूप में, मैं ज़ेंड फ्रेमवर्क से वास्तव में विकसित Zend_Locale घटकों के साथ जाऊंगा।

आपके पास आईआईआरएन की आवश्यकता है और उपयोगकर्ता के स्थानीय सेटिंग्स की पहचान अंतरराष्ट्रीय स्तर पर मुद्रा, संख्या, दिनांक बनाने और अनुवाद प्रबंधन समाधान की विस्तृत संख्या के लिए आपके आवेदन को स्थानीयकृत करें।

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