PHP अंतर्राष्ट्रीयकरण (i18n): एक व्यावहारिक डेवलपर गाइड

Yee
Aug 03, 2024

अपनी PHP वेबसाइट को ग्लोबल बनाएं: एक अधिक प्रभावी अंतरराष्ट्रीयकरण समाधान
अगर आप मेरी तरह हैं और ऐसे "वेनिला" PHP प्रोजेक्ट्स को मेंटेन करते हैं जो बड़े फ्रेमवर्क्स (जैसे Laravel या Symfony) पर निर्भर नहीं करते, तो मल्टी-लैंग्वेज सपोर्ट (i18n) शायद आपके लिए एक लगातार, भले ही छोटा, सिरदर्द रहा होगा।
पारंपरिक समाधान gettext
, भले ही शक्तिशाली है, लेकिन इसे कॉन्फ़िगर करना काफी झंझट भरा है। खासकर छोटे प्रोजेक्ट्स में, यह ऐसा लगता है जैसे "छोटी सी समस्या के लिए बड़ा हथौड़ा इस्तेमाल करना।" हमें वास्तव में ऐसी विधि चाहिए जिसे जल्दी से लागू किया जा सके और ज्यादा जटिलता न आए।
कई प्रोजेक्ट्स में बहुत कोशिशों और गलतियों के बाद, हमने PHP array files और ऑनलाइन ट्रांसलेशन टूल्स पर आधारित एक हल्का अंतरराष्ट्रीयकरण समाधान विकसित किया है। यह तरीका न केवल लागू करने में आसान है, बल्कि इसका रखरखाव भी बेहद कम लागत वाला है। आज मैं आपके साथ यह पूरा समाधान बिना किसी शर्त के साझा कर रहा हूँ।
प्रैक्टिकल गाइड: मैंने O.Translator के साथ PHP मल्टी-लैंग्वेज सपोर्ट कैसे हासिल किया
हमारा मुख्य विचार बहुत सीधा है: हर भाषा के लिए एक PHP फाइल होती है, जिसमें एक return
स्टेटमेंट होता है जो एक एसोसिएटिव ऐरे लौटाता है। यह तरीका सरल, सहज और न्यूनतम परफॉर्मेंस ओवरहेड वाला है।
चरण 1: अपनी डायरेक्टरी संरचना की योजना बनाएं
एक स्पष्ट डायरेक्टरी संरचना आधी जंग जीतने के बराबर है। चीजों को व्यवस्थित रखने के लिए, हम सभी भाषा फाइलों को एक ही डायरेक्टरी में रखेंगे और उन्हें भाषा कोड के अनुसार नाम देंगे, जैसे:
project_root/
├── index.php // Your main logic file
├── i18n/ // Folder for all language files
│ ├── lang.cn.php // Chinese language pack
│ ├── lang.en.php // English language pack
│ └── lang.fr.php // French language pack
चरण 2: अपना "भाषा शस्त्रागार" बनाएं
अब, हम बेस भाषा फाइल बनाएंगे। आइए उदाहरण के लिए चीनी लें और एक lang.cn.php
फाइल बनाएं। इस फाइल की सामग्री एक साधारण PHP array है, जिसमें keys यूनिक आइडेंटिफायर होते हैं और values संबंधित टेक्स्ट स्ट्रिंग्स होती हैं।
lang.cn.php उदाहरण: Keys वही रहते हैं, values भाषा के अनुसार बदलती हैं
चरण 3: अनुवाद विजार्ड, O.Translator में प्रवेश करें
क्या आप दर्जनों या सैकड़ों एंट्रीज़ को मैन्युअली अनुवाद कर रहे हैं? यही वह दोहराव वाला काम है जिसे प्रोग्रामर सबसे ज्यादा नापसंद करते हैं। यहीं हमारा गुप्त हथियार, O.Translator, आपकी मदद के लिए आता है।
यह एक प्रोफेशनल ऑनलाइन डॉक्युमेंट ट्रांसलेशन प्लेटफॉर्म है, जो PHP फाइल्स को पूरी तरह सपोर्ट करता है, जिससे यह आपकी array को सीधे पढ़ सकता है और 70 से अधिक भाषाओं में ट्रांसलेट कर सकता है।
यह प्रक्रिया बेहद आसान है:
- O.Translator होमपेज पर जाएँ और अपनी बेस भाषा फ़ाइल (जैसे
lang.cn.php
) अपलोड करें। - अपनी लक्षित भाषाएँ चुनें, जैसे English और French।
- अनुवाद पर क्लिक करें, कुछ पल प्रतीक्षा करें, और आपकी अनुवादित
lang.en.php
औरlang.fr.php
फाइलें तैयार हो जाएंगी।
मुझे सबसे ज्यादा यह बात प्रभावित करती है कि O.Translator आपको अनुवाद का एक हिस्सा मुफ्त में पूर्वावलोकन करने देता है। अगर आप परिणाम से संतुष्ट हैं, तो आप पूरी अनुवाद सेवा के लिए भुगतान करने का निर्णय ले सकते हैं। उनके अपने शब्दों में: "कभी भी ऐसे उत्पाद के लिए भुगतान न करें जिससे आप खुश न हों।"
चरण 4: कोड को जीवंत बनाएं
सब कुछ तैयार है; अब हमें बस आखिरी टच देना है। अब, आइए मुख्य index.php
फाइल को संशोधित करें ताकि यह यूज़र की पसंद के अनुसार उपयुक्त भाषा पैक को डायनामिक रूप से लोड कर सके।
<?php
// 1. Determine the current language (using a GET parameter for demonstration)
$supported_langs = ['en', 'cn', 'fr'];
$default_lang = 'en';
$lang = isset($_GET['lang']) && in_array($_GET['lang'], $supported_langs) ? $_GET['lang'] : $default_lang;
// 2. Load the corresponding language file
// Use a global variable like $_ or a specific variable like $TEXTS to store the strings
$_ = require_once __DIR__ . "/i18n/lang.{$lang}.php";
?>
अपने HTML टेम्पलेट में, आप टेक्स्ट स्ट्रिंग्स को इस तरह आसानी से कॉल कर सकते हैं:
<!DOCTYPE html>
<html lang="<?php echo htmlspecialchars($lang); ?>">
<head>
<meta charset="UTF-8">
<title><?php echo htmlspecialchars($_['heading_home']); ?></title>
</head>
<body>
<header>
<h1><?php echo htmlspecialchars($_['heading_home']); ?></h1>
<nav>
<ul>
<li><?php echo htmlspecialchars($_['heading_about']); ?></li>
<li><?php echo htmlspecialchars($_['button_read_more']); ?></li>
</ul>
</nav>
</header>
</body>
</html>
देखिए, आपकी एक साधारण मल्टी-लैंग्वेज वेबसाइट तैयार है!
विचार और उन्नत सोच
हालांकि यह समाधान हल्का है, लेकिन प्रोडक्शन में डिप्लॉय करने से पहले कुछ बातों पर विचार करना चाहिए:
- यूज़र की भाषा कैसे पहचानें? उदाहरण में एक GET पैरामीटर जैसे
?lang=en
का उपयोग किया गया है। वास्तविक एप्लिकेशन में, आप$_SESSION
,$_COOKIE
का उपयोग कर सकते हैं, या ब्राउज़र केAccept-Language
रिक्वेस्ट हेडर को ऑटोमैटिक डिटेक्शन के लिए पार्स कर सकते हैं। - परफॉर्मेंस विचार: छोटे या मीडियम साइज की वेबसाइट्स के लिए, हर रिक्वेस्ट पर PHP फाइल के लिए
require_once
का परफॉर्मेंस ओवरहेड नगण्य है। अगर आपकी साइट पर हाई ट्रैफिक है, तो और बेहतर ऑप्टिमाइजेशन के लिए APC या OPcache जैसी बाइटकोड कैशिंग टेक्नोलॉजी का उपयोग करें। - स्केलेबिलिटी: जैसे-जैसे भाषाओं या टेक्स्ट स्ट्रिंग्स की संख्या बढ़ती है, फाइल्स को मैन्युअली मैनेज करना जटिल हो सकता है। इस स्तर पर, आपको और अधिक प्रोफेशनल i18n समाधान जैसे PHP का gettext एक्सटेंशन या फ्रेमवर्क द्वारा प्रदान किए गए स्थानीयकरण कॉम्पोनेंट्स का उपयोग करना पड़ सकता है।
- अनुवाद में निरंतरता: सभी भाषा संस्करणों में ब्रांड नाम और शब्दावली की एकरूपता बनाए रखने के लिए, O.Translator का Glossary फीचर उपयोग करना अत्यधिक अनुशंसित है।
- उच्च-स्तरीय रणनीति: यह लेख तकनीकी कार्यान्वयन पर केंद्रित है। अगर आप वेबसाइट अंतरराष्ट्रीयकरण के लिए समग्र रणनीति के बारे में और जानना चाहते हैं, तो आप हमारा विस्तार से लिखा गया दूसरा लेख पढ़ सकते हैं।