2010-02-23 19 views
5

के माध्यम से किसी उपयोगकर्ता की भाषा का पता लगाने के लिए मैंने वेबसाइट www.tenxian.com विकसित की है।अपने आईपी पते

इसमें तीन भाषा संस्करण, अंग्रेजी, जापानी और चीनी हैं। मैं एक प्रभावी PHP प्रोग्राम कैसे लिख सकता हूं जो विज़िटर के आईपी पते के आधार पर स्वचालित रूप से एक भाषा संस्करण चुन सकता है?

यदि मैं "if-else" का उपयोग करता हूं, तो कोड बहुत जटिल होगा; यदि मैं स्विच-केस का उपयोग करता हूं, तो इसे लिखने के लिए डेटा के बाद से आईपी श्रेणियां, विशेष संख्या नहीं हैं। इसके अलावा, मुझे नहीं पता कि इन आईपी श्रेणियां

ऐसा करने का सबसे आसान तरीका क्या है?

+0

मेरा मानना ​​है कि आप दो चीजें पूछ रहे हैं - अपनी भाषाओं में से किसी एक को आईपी कैसे असाइन करें (या कौन सा देश उपयोगकर्ता है)?और उस सही भाषा में ऐप में सभी संदेशों को कैसे प्रदर्शित करें? क्या यह सही है? – Aishwar

+0

केवल तीन भाषाओं, अंग्रेजी, चीनी और जापानी। अगर मुझे पता है कि आगंतुक जापान से आता है, तो मैं इसे जापानी संस्करण में रीडायरेक्ट कर दूंगा; अगर आगंतुक ग्रेटर चीन से आता है, तो मैं इसे चीनी संस्करण में रीडायरेक्ट कर दूंगा; अन्यथा मैं इसे अंग्रेजी संस्करण में रीडायरेक्ट कर दूंगा। – Steven

+0

यह बहुत स्पष्ट है कि आप इसे करने का सबसे आसान तरीका चाहते हैं .. प्रश्न में इसे जोड़ने में कोई बात नहीं है। –

उत्तर

21

कृपया, कृपया आईपी == भाषा सोचने की गलती न करें। ब्राउजर स्वीकार्य-भाषा शीर्षलेख को पहले देखें, फिर ब्राउजर पहचान स्ट्रिंग जिसमें ओएस भाषा हो सकती है, और उसके बाद ही आईपी को खाते में ले जाएं। सभी मामलों में से लगभग 100% में ब्राउज़र स्वीकार्य-भाषा शीर्षलेख मौजूद और पर्याप्त होगा।

और हमेशा उपयोगकर्ता को दूसरी भाषा में स्विच करने का विकल्प दें।

विदेश में विदेशियों के साधारण मामले के अलावा, आप बेल्जियम के लिए भाषा कैसे निर्धारित करते हैं, जहां वे फ्रेंच, डच और जर्मन बोलते हैं? (शायद यह आपके मामले पर लागू नहीं होता है, बल्कि दार्शनिक रूप से। :))।

+0

+1 हमेशा उपयोगकर्ता को दूसरी भाषा में स्विच करने का विकल्प देता है ... यह एक सबसे अच्छा तरीका है .. :) – RameshVel

+0

स्विट्जरलैंड (जर्मन, फ़्रेंच, इतालवी) में – Benjol

+0

क्या होगा यदि मैं वास्तव में बोली जाने वाली भाषा खोजना चाहता हूं आईपी ​​पते पर आधारित एक क्षेत्र? आइए कहें कि मुझे ऐसी आवश्यकता है। –

0

पीएचपी (http://www.maxmind.com/app/php) के लिए मैक्समाइंड GeoIP मॉड्यूल पर एक नज़र डालें, अपने डेटा संरचना के लिए के रूप में शायद यह करने के लिए प्रमुख आईएसओ -3166-1 देश कोड जो apache_note("GEOIP_COUNTRY_CODE"); रिटर्न देता है।

+0

एक देश कोड पर्याप्त नहीं है: बेल्जियम और स्विट्ज़रलैंड जैसे देशों में एक से अधिक आधिकारिक भाषाएं हैं। – bart

0

शायद आप आईपी जियोकोडिंग डेटाबेस (example) के कुछ रूपों का उपयोग करना चाहते हैं।

0

मान लीजिए कि आप आईपी श्रेणियों को अपनी भाषा विकल्पों में से किसी एक में परिवर्तित कर सकते हैं, तो आप यह कर सकते हैं (ऊपर दिए गए सभी उत्तरों): इस फ़ॉर्म के एक सहयोगी सरणी में संग्रहीत अनुप्रयोगों में आपके सभी संदेश हैं।

$MESSAGES[$USER_LANGUAGE][$msgId]

जहां $USER_LANGUAGE, चीनी जापानी, या अंग्रेज़ी (या कोई अन्य समकक्ष enum) हो सकता है। $msgId "login.successful", "login.fail" जैसी चीजें हो सकती हैं। जहां भी आप उपयोगकर्ता को संदेश प्रदर्शित करते हैं, हार्डकोडेड स्ट्रिंग्स प्रदर्शित नहीं करते हैं, $msgId का उपयोग कर चर के संदर्भ दें।

आप इसे वैश्विक चर के रूप में एक्सेस कर सकते हैं या आप एक ऐसा फ़ंक्शन बना सकते हैं जो $ ‧ में पैरामीटर के रूप में लेता है और संदेश देता है, $USER_LANGUAGE वैश्विक वैरिएबल भी हो सकता है (जिसे उपयोगकर्ता पहली बार आता है में)।

2

हाँ कृपया इसे न करें ... Google ऐसा करता है और परेशान करता है .. मुझे हमेशा अपने ब्राउजर से अंग्रेजी वाला थाई संस्करण मिलता है।

ब्राउज़र से http शीर्षलेख का उपयोग करें।

+0

Google इस संबंध में भयानक है। यहां तक ​​कि यदि आप किसी भिन्न भाषा में इंटरफ़ेस स्विच करने में कामयाब रहे हैं, तो यह एक अलग सेवा (जैसे Google मुखपृष्ठ -> मानचित्र) पर क्लिक करते समय वापस आपके आईपी लोकेल पर वापस आ जाएगा। – deceze

2
<?php 
$ln = split(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]); 
print_r($ln[0]); 
?> 
+2

उन लोगों के लिए जो अभी यहां आए हैं (मेरे जैसे), 'split() 'अब बहिष्कृत है (PHP 5.3.0)। 'विस्फोट() 'ठीक काम करता है। –

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