PHP का अंतर्राष्ट्रीयकरण: वेबसाइट को दुनिया की सभी भाषाओं में कैसे बनाएं

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP का अंतर्राष्ट्रीयकरण सिर्फ 'शब्दों का अनुवाद' क्यों नहीं है

\n\n

कल्पना करें: आपने एक शानदार PHP प्रोजेक्ट लिखा है। यह काम करता है, उपयोगकर्ताओं को खुश करता है, लाभ कमाता है। लेकिन एक दिन आंकड़ों में आप देखते हैं कि 30% ट्रैफ़िक जर्मनी से, 15% जापान से और 10% UAE से है। आपकी वेबसाइट केवल रूसी में बोलती है। उपयोगकर्ता अपनी भाषा में 'खरीदें' बटन नहीं ढूंढ पाते और चले जाते हैं।

\n\n

परिचित स्थिति? PHP अनुप्रयोगों का अंतर्राष्ट्रीयकरण (i18n) सिर्फ टेम्पलेट में शब्दों को बदलना नहीं है। यह एक आर्किटेक्चरल दृष्टिकोण है जो आपके कोड को संस्कृति, मुद्रा, तिथियों और यहां तक कि टेक्स्ट की दिशा (बाएं से दाएं या दाएं से बाएं) को 'समझने' की अनुमति देता है।

\n\n

इस लेख में, हम देखेंगे कि कैसे एक सामान्य PHP साइट को मूल टूल और सर्वोत्तम अभ्यासों का उपयोग करके बहुभाषी प्लेटफॉर्म में बदला जाए। आप जानेंगे कि PHP में gettext कैसे काम करता है, स्थानीयकरण अंतर्राष्ट्रीयकरण से कैसे अलग है, और बहुवचन के साथ गलतियों से कैसे बचें।

\n\n

i18n बनाम l10n: अंतर क्या है (और यह क्यों महत्वपूर्ण है)

\n\n

कोड लिखने से पहले, आइए शब्दों पर सहमत हों। अंतर्राष्ट्रीयकरण (i18n) कोड को अनुवाद के लिए तैयार करना है: स्ट्रिंग्स को निकालना, संख्याओं, तिथियों, मुद्राओं के प्रारूपों के साथ काम करना। स्थानीयकरण (l10n) किसी विशिष्ट क्षेत्र के लिए अनुवाद और अनुकूलन की प्रक्रिया है।

\n\n

एक सरल उपमा: अंतर्राष्ट्रीयकरण एक घर बनाने जैसा है जिसमें खाली कमरे हों जहां कोई भी फर्नीचर रखा जा सके। स्थानीयकरण किसी विशिष्ट निवासी की पसंद के अनुसार फर्नीचर की व्यवस्था करना है।

\n\n

PHP डेवलपर के लिए इसका मतलब है: स्ट्रिंग्स को हार्डकोड न करें! कभी नहीं। भले ही साइट अभी केवल रूसी में हो। प्रत्येक वाक्यांश को अनुवाद फ़ंक्शन में लपेटा जाना चाहिए।

\n\n

PHP में i18n के लिए टेक्नोलॉजी स्टैक

\n\n

PHP इकोसिस्टम में कई शक्तिशाली उपकरण हैं। हम दो मुख्य दृष्टिकोणों पर विचार करेंगे: क्लासिक gettext और आधुनिक ICU MessageFormat intl एक्सटेंशन के माध्यम से।

\n\n

1. Gettext — बहुभाषीता का दादा

\n\n

PHP में Gettext कई CMS (WordPress, Drupal) के लिए डी-फैक्टो मानक है। यह अनुवाद संग्रहीत करने के लिए .po और .mo फ़ाइलों का उपयोग करता है। लाभ: सरलता, बहुवचन रूपों का समर्थन, Poedit के साथ एकीकरण।

\n\n

2. ICU MessageFormat — जटिल तर्क के लिए

\n\n

PHP intl एक्सटेंशन (Internationalization) MessageFormatter और NumberFormatter क्लास प्रदान करता है। यह उन प्रोजेक्ट्स के लिए विकल्प है जहां केस, लिंग और संख्या के चयन के साथ जटिल टेम्पलेट्स की आवश्यकता होती है।

\n\n

3. रैपर लाइब्रेरीज़

\n
    \n
  • symfony/translation — Symfony का घटक, YAML/XLIFF और gettext दोनों के साथ काम करता है।
  • \n
  • laravel-localization — Laravel के लिए (पैकेज mcamara/laravel-localization)।
  • \n
  • zend-i18n — Laminas के लिए (पूर्व Zend Framework)।
  • \n
\n\n

अभ्यास: PHP में gettext को शुरू से सेट करना

\n\n

मान लीजिए, हमारे पास एक सरल स्क्रिप्ट index.php है जो एक अभिवादन प्रदर्शित करती है। इसे बहुभाषी बनाते हैं।

\n\n

चरण 1. कोड तैयार करना

\n\n

सभी स्ट्रिंग्स को फ़ंक्शन _() (gettext() का उपनाम) में लपेटें:

\n\n
<?php\n// index.php\necho _("हमारी साइट पर आपका स्वागत है!");\n\n$items = 5;\n// बहुवचन रूपों के लिए ngettext का उपयोग करें\necho ngettext("%d आइटम", "%d आइटम्स", $items);\n?>
\n\n

चरण 2. .pot फ़ाइल जनरेट करना

\n\n

सर्वर पर gettext स्थापित करें या xgettext का उपयोग करें:

\n\n
xgettext -o locales/messages.pot index.php --from-code=UTF-8
\n\n

चरण 3. अनुवाद बनाना

\n\n

messages.pot को locales/hi_IN/LC_MESSAGES/messages.po में कॉपी करें और संपादित करें:

\n\n
msgid "हमारी साइट पर आपका स्वागत है!"\nmsgstr "Welcome to our site!"\n\nmsgid "%d आइटम"\nmsgid_plural "%d आइटम्स"\nmsgstr[0] "%d item"\nmsgstr[1] "%d items"
\n\n

चरण 4. संकलन और पोस्ट

ब्लॉग

पुस्तक अनुशंसाएँ