WordPress Internationalization

WordPress Internationalization – Internationalization जिसे i18n के नाम से भी जाना जाता है, एक ऐसी प्रक्रिया है, जिसमें हम किसी Theme या Plugin को किसी अन्‍य International या Local Language में Translate हो सकने के लिए निश्चित करते हैं। WordPress में Internationalization का मतलब ये है कि हम हमारे Plugin/Theme में जिन Strings (Text Messages) को Translate होने के लिए Predefine करना चाहते हैं, उन्हें Mark कर सकते हैं। जबकि Localization वह प्रक्रिया होती है जिसमें हम किसी Theme/Plugin को किसी अन्‍य Language में Translate करते हैं।

हालांकि Theme/Plugin को Internationalize करना जरूरी नहीं होताए लेकिन यदि हम अपने Plugin/Theme को Internationalize करें, तो हमारा Plugin/Theme और ज्यादा लोगों के लिए उपयोगी हो सकता है, जो कि हमारे लिए काफी उपयोगी साबित होता है।

किसी Plugin/Theme के Strings के Translation के लिए WordPress हमें दो API Functions Provide करता है। पहला Function __() होता है, जहां Function का नाम Double Underscore है और हम इसे निम्नानुसार Use कर सकते हैं:

$hello = __(Hello!, custom-plugin);

इस Function में पहले Parameter के रूप में हम वह String Specify करते हैं, जिसे Translate करने के लिए Mark करना है। ये वह String होता है, जो Web Browser में उस समय दिखाई देता है, जब इस Text को अन्‍य Language में Translate किया जाना सम्भव नहीं होता। जबकि दूसरा Parameter, Text Domain को Represent कर रहा है।

ThemesPlugins की स्थिति में ये Text Domain एक Unique Identifier होता है, जो Current Theme/Plugin को किसी भी अन्‍य Loaded Theme/Plugin से अलग Identify करने का काम करता है।

जब हम हमारे Theme/Plugin द्वारा किसी Translatable String को Web Browser में Echo करना चाहते हैं, तब इस जरूरत को पूरा करने के लिए WordPress हमें _e() नाम का एक दूसरा API Function Provide करता है। इसे हम निम्नानुसार Use कर सकते हैं:

_e(Hello! How is this Plugin?, custom-plugin);

ये Function Exactly __() Function की तरह ही काम करता है। अन्तर केवल इतना है कि ये Function String को Output के रूप में Web Browser में Render भी करता है।

सामान्‍यत: जब हम हमारे Theme/Plugin में Placeholders को Internationalize करना चाहते हैं, तब हमें विशेष ध्‍यान देने की जरूरत होती है। उदाहरण के लिए यदि हम निम्न Error Message को Translate Translatable करना चाहें-

Error Code 1000: Username is required field.

तो हमें इस Message के विभिन्न Parts को हमेंशा printf() या sprintf() Function के बीच उपयुक्त Formatting के साथ Specify करना चाहिए। जैसे:

<?php 
  $error_number = 6980; 
  $error_field = "Email"; 
  printf(__('Error Code %1$d: %2$s is a required field', 'custom-plugin'), $error_number, $error_field)); 
?>

जब हम इस तरह से __() Function को Use करते हैं, तो Translation के समय बडी ही आसानी से इस बात का पता लगाया जा सकता है कि किस Text String को Translation के लिए Specify किया जा रहा है।

जब हम Plural के साथ प्रक्रिया कर रहे होते हैं, तब भी हमें Translatable String Specify करने के लिए Special Attention देने की जरूरत होती है। उदाहरण के लिए मानलो कि हमें निम्न String को Translate करना है:

<?php 
  $count = 1; 
  printf(__('You have %d new message', 'custom-plugin'), $count);
?>

यदि केवल एक ही Message को Translatable बनाना हो, तो ये Statement Normal तरीके से काम करता है, लेकिन यदि हमें एक से ज्यादा Messages का Translatable बनाने की जरूरत हो, तो हमारे सामने समस्या पैदा हो सकती है। इस समस्या से बचने के लिए WordPress हमें __ngettext() नाम का एक और Translation Function Provide करता है, जिसे हम निम्नानुसार Use कर सकते हैं:

<?php 
  $count = 34; 
  printf(__ngettext('You have %d new message', 'You have %d new messages', 
  $count, 'custom-plugin'), $count); 
?>

__ngettext() Function कुल चार Parameters Accept करता है। जहां पहला Parameter Translatable Message के Singular Version के लिए जिम्मेदार होता हैं। दूसरा Parameter Translatable Message के Plural Version के लिए जिम्मेदार होता हैं। तीसरा Parameter Plugin के Text Domain के लिए जिम्मेदार होता है। जबकि अन्तिम Parameter के आधार पर ये तय होता है कि Singular Version Message Return होगा या Plural Version Message Return होगा।

Translatable Sting में Comments को Add करने के लिए भी WordPress हमें _c() नाम का एक Function Provide करता है, जिसे हम निम्नानुसार तरीके से Use कर सकते हैं:

<?php 
  echo _c('Editor|user role', 'custom-plugin'); 
  echo _c('Editor|rich-text editor', 'custom-plugin');
?>

जब हम __() Function के स्थान पर _c() Function को Use करते हैं, तब Translatable String के बाद जहां से हमें Comment शुरू करना होता है, वहां हम PIPE ( | ) Symbol का प्रयोग करते हैं और इस Symbol के बाद जो कुछ भी लिखा जाता है, वह Rendering के दौरान Ignore कर दिया जाता है।

इस Function का प्रयोग करते हुए हम ऐसे Custom Message यानी Comments लिख सकते हैं, जिसे Theme/Plugin को Translate करने वाला Translator पढ़कर Translate होने वाले Content के Context के बारे में बेहतर तरीके से समझ सकता है।

इस प्रकार से WordPress द्वारा Provided इन Functions का प्रयोग करके यदि हम हमारे Plugin को Translation के लिए Prepare करना चाहें, तो हमें Translation करने के लिए एक Localization File को Load करना होता है। इस Localization File को Load करने के लिए हम निम्नानुसार तरीके से load_plugin_textdomain() API Function को Use कर सकते हैं:

<?php 
  add_action('init', 'custom_init');
  function custom_init() {
    load_plugin_textdomain('custom-plugin', false, plugin_basename(dirname(__FILE__).'/localization'));
  }
?>

इस Code में load_plugin_textdomain() का पहला Parameter वह Unique Text Domain होता है, जिसे हमने अपने Theme/Plugin के सभी Translatable String के साथ Attach किया है। जबकि दूसरे Parameter के रूप में हमें ABSPATH Variable के Relative URL Specify करना होता है।

हालांकि जब हम तीसरे Parameter के रूप में /plugins Folder में स्थित अपनी Translation File का Path Specify करते हैं, तब हमें दूसरे Parameter के रूप में Path के स्थान पर केवल false मान Specify करना होता है।

इन Localization Files को Store करने के लिए हमें हमारे Plugin Folder के अन्दर ही एक Sub-Folder Create करना होता है, जिसका नाम सामान्‍यत: /localization रखा जाता है। जबकि इस Folder के Path को Retrieve करने के लिए हम plugin_basename dirname Functions को Use करते हैं।

WP Plugin Activation Hook - Deactivation Hook
WordPress Directory Constants

WordPress in Hindi - BccFalna.comये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Advance WordPress in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी है, तो निश्चित रूप से ये EBook भी आपके लिए काफी उपयोगी साबित होगी।

Advance WordPress in Hindi | Page: 835 | Format: PDF

BUY NOW GET DEMO REVIEWS