php لینگویج فائلز کے ترجمے کا فریم ورک؟

نبیل

تکنیکی معاون
اینٹرانس کی بدولت po فائلز کی ٹرانسلیشن کا ایک عمدہ فریم ورک مہیا ہو گیا ہے۔ لیکن کئی دوسرے php سوفٹویر ہیں جن کی po فائلز موجود نہیں ہیں اور ہم ان کی لوکلائزیشن پر کام کرنا چاہتے ہیں جیسے کہ postNuke اور جملہ وغیرہ۔ میرا مشاہدہ ہے کہ اکثر php سوفٹویر کی لینگویج فائلز میں کسی طرح Key/Value پیئر استعمال ہوئے ہوتے ہیں۔ ذیل میں phpbb کی ایک لینگویج فائل کا کچھ حصہ دکھایا گیا ہے:

کوڈ:
$lang['Forum'] = 'Forum';
$lang['Category'] = 'Category';
$lang['Topic'] = 'Topic';
$lang['Topics'] = 'Topics';
$lang['Replies'] = 'Replies';
$lang['Views'] = 'Views';
$lang['Post'] = 'Post';
$lang['Posts'] = 'Posts';
$lang['Posted'] = 'Posted';
$lang['Username'] = 'Username';
$lang['Password'] = 'Password';
$lang['Email'] = 'Email';
$lang['Poster'] = 'Poster';
$lang['Author'] = 'Author';
$lang['Time'] = 'Time';
$lang['Hours'] = 'Hours';
$lang['Message'] = 'Message';

جبکہ ذیل میں جملہ کی لینگویج فائل کا کچھ حصہ دکھایا گیا ہے:

کوڈ:
DEFINE('_CMN_NAME','Name');
DEFINE('_CMN_DESCRIPTION','Description');
DEFINE('_CMN_SAVE','Save');
DEFINE('_CMN_CANCEL','Cancel');
DEFINE('_CMN_PRINT','Print');
DEFINE('_CMN_PDF','PDF');
DEFINE('_CMN_EMAIL','E-mail');
DEFINE('_ICON_SEP','|');
DEFINE('_CMN_PARENT','Parent');
DEFINE('_CMN_ORDERING','Ordering');
DEFINE('_CMN_ACCESS','Access Level');
DEFINE('_CMN_SELECT','Select');

ان لینگویج فائلز کو ٹرانسلیٹ‌کرنے کا واحد طریقہ ابھی تک ٹیکسٹ ایڈیٹر کے ذریعے ہی ہے۔ میرے ذہن میں یہ خیال آیا تھا کہ اگر کسی طرح ان لینگویج فائللز کو po فائلز میں کنورٹ کر لیا جائے تو انہیں انٹرانس یا اس جیسے کسی فریم ورک میں ٹرانسلیٹ کرنا کافی آسان ہوجائے گا اور اس طرح اس پر مشترکہ انداز میں کام بھی ہو سکے گا۔ یوں ہمارے لوکلائزیشن پر کام کا سکوپ بھی مزید وسیع ہو جائے گا۔ آپ دوستوں کی اس بارے میں کیا تجاویز ہیں؟
 
نبیل انٹرانس پر اگر ایک عدد معلوماتی پوسٹ ہو جائے تو شاید بہت سے لوگ اس پر کام کرنے کے لیے آمادہ ہو جائیں۔ میں نے خود اب تک ایک دفعہ اسے دیکھا تو ہے مگر تفصیل سے نہیں۔ ایک انتہائی ضروری چیز پی ایچ پی پر بنیادی ٹیوٹوریل کی بھی ہے کیونکہ اگر کوئی بھی ایسا کام جو آن لائن رہتے ہوئے کرنا ہے تو اس کے لیے اس کا بنیادی علم ہونا ضروری ہے۔

پی ایچ پی کی لینگویج فائلز کو po میں بدلنے کا طریقہ کار کیا ہوگا اور اگر ایسا ہو جائے تو یقینا کام کرنا ٹیم کی صورت میں آسان ہو جائے گا۔
 

زیک

مسافر
نبیل: ہمیں یہ converter شروع سے نہیں لکھنا پڑے گا۔ ٹرانسلیٹ ٹولکٹ یہی کام کرتی ہے۔ بس اس میں کچھ تبدیلیاں کرنے کی ضرورت ہے کہ وہ پی‌ایچ‌پی‌بی‌بی، جملہ، پوسٹ‌نیوک وغیرہ کے فارمیٹ کو پڑھ لے اور ان کو لکھ بھی سکے۔

اب ہے کوئی جسے Python آتی ہو؟
 

نبیل

تکنیکی معاون
محب، ترجمے کے کام کے لیے php کا علم ہونا ضروری نہیں ہے، صرف انگریزی اور اردو پر اتنی دسترس ضروری ہے کہ تکنیکی اصطلاحات کا مناسب ترجمہ کیا جا سکے۔ انٹرانس کا استعمال بھی ایک no-brainer ہے۔ اس میں تمہیں ہر ٹرم کے ساتھ Edit کمانڈ کا بٹن مل جائے گا یا تم چاہو تو Edit All کے ذریعے تمام آئٹمز کو بھی ایڈٹ کر سکتے ہو۔ تم یہ کام شروع کرو، کوئی مشکل پیش آئی تو میں اور زکریا اس میں مدد کے لیے موجود ہیں۔
 

نبیل

تکنیکی معاون
زکریا نے کہا:
نبیل: ہمیں یہ converter شروع سے نہیں لکھنا پڑے گا۔ ٹرانسلیٹ ٹولکٹ یہی کام کرتی ہے۔ بس اس میں کچھ تبدیلیاں کرنے کی ضرورت ہے کہ وہ پی‌ایچ‌پی‌بی‌بی، جملہ، پوسٹ‌نیوک وغیرہ کے فارمیٹ کو پڑھ لے اور ان کو لکھ بھی سکے۔

اب ہے کوئی جسے Python آتی ہو؟

زکریا Python مجھے اتنی ہی آتی ہے جتنی کہ مجھے php آتی ہے، یعنی بالکل بھی نہیں۔ :oops:

آپ یہ بتائیں کہ ٹرانسلیشن ٹول کٹ میں کہاں تبدیلی کرنی ہوگی اور کیا تبدیلی کرنی ہوگی؟
 

زیک

مسافر
نبیل: ٹرانسلیٹ ٹولکٹ میں کئی converters موجود ہیں۔ اب دیکھنا یہ ہے کہ ان میں سے کونسا ہمارے مقاصد پورے کرتا ہے یا ان کے قریب ہے۔ اگر کوئی ملتا جلتا ہے تو اس کے کوڈ میں کچھ تبدیلی کر کے اسے استعمال کیا جا سکتا ہے۔

میں نے ابھی ڈاؤنلوڈ کیا ہے مگر استعمال کر کے نہیں دیکھا۔
 

نبیل

تکنیکی معاون
زکریا میں نے ابھی ٹرانسلیشن ٹول کٹ کے converters کو دیکھا ہے اور میرے اندازے کے مطابق ہمیں atxt2po اور po2txt کو adapt کرنے کی ضرورت پڑے گی۔ میں نے txt2po کا سورس کوڈ دیکھا ہے۔ اگر چہ بہت مشکل نہیں لگ رہا لیکن بہتر یہی ہوگا کہ کوئی Python کے ایکسپرٹ‌ اس معاملے میں ہماری مدد فرما دیں۔ :p
 
Python اگر Perl سے ملتی جلتی زبان ہے تو پھر کوشش کرکے دیکھا جاسکتا ہے ۔ نبیل میں پی ایچ پی کی بات صرف اس پوسٹ کے حوالے سے نہیں کررہا تھا بلکہ ویب سائٹ پر کچھ بنا کر پوسٹ کرنے کے حوالے سے کررہا تھا۔

چلو رہنمائی کرتے جاؤ تو میں قیصرانی کو بھی کھینچ کر لے آتا ہوں اور کرتے ہیں کام مل کر اس پر۔
 

نبیل

تکنیکی معاون
مجھے ایک اور خیال آیا ہے کہ اگر python میں لکھے ہوئے پروگرام میں بھی تبدیلی کرنی ہی ہے تو کیوں نہ خود سے کسی دوسری لینگویج میں یہ پروگرام لکھ لیا جائے۔ ایک ٹیکسٹ فائل کو پڑھنے اور اس میں انفارمیشن کو پراسیس کرکے ایک دوسری فائل میں لکھنے کے لیے محض ایک کمانڈ لائن یوٹیلیٹی کی ضرورت ہوگی جو یہ کام بیچ موڈ میں کر سکے۔

ذاتی طور پر میں سی شارپ میں ایک اپلیکیشن لکھنا چاہوں گا یا کوئی اور سی شارپ کے ایکسپرٹ (جیسے راجہ فار حریت) چاہیں تو اس سلسلے میں ہماری مدد کر سکتے ہیں۔

یہاں مجھے اس سلسلے میں انفارمیشن درکار ہوگی کہ آخر پو فائلز کا سٹرکچر کیا ہوتا ہے؟ زکریا اگر ایک مثال دے کر بتا سکیں کہ phpbb کی لینگویج فائل کا کوئی حصہ کنورژن کے بعد پو فائل میں کیسا نظر آئے گا تو اس سے کافی مدد مل سکتی ہے۔
 

نبیل

تکنیکی معاون
محب علوی نے کہا:
Python اگر Perl سے ملتی جلتی زبان ہے تو پھر کوشش کرکے دیکھا جاسکتا ہے ۔ نبیل میں پی ایچ پی کی بات صرف اس پوسٹ کے حوالے سے نہیں کررہا تھا بلکہ ویب سائٹ پر کچھ بنا کر پوسٹ کرنے کے حوالے سے کررہا تھا۔

چلو رہنمائی کرتے جاؤ تو میں قیصرانی کو بھی کھینچ کر لے آتا ہوں اور کرتے ہیں کام مل کر اس پر۔

محب، میرا ارادہ ہے کہ میں php میں ویب اپلیکیشن ڈیویلپمنٹ سے متعلقہ چند ٹیوٹوریل پوسٹ کروں۔ بس وقت ملنے کی دیر ہے۔ میں اردو ویب کے ہی چند پراجیکٹس میں کافی الجھا ہوا ہوں۔ ان سے وقت ملے گا تو اس جانب بھی توجہ دوں گا۔

انٹرانس پر ترجمے کے کام کے سلسلے میں وقاص کام شروع کر رہے ہیں۔ تم ان سے اس بارے میں جو چاہو سوال کر سکتے ہو۔ یہ کام خود بھی کرو بلکہ باقیوں کو بھی احساس دلاؤ کہ سوفٹویر کی اردو لوکلائزیشن کا کام تاریخی اہمیت رکھتا ہے۔
 

زیک

مسافر
نبیل: TWiki والا کنورٹر بھی کام کا لگ رہا ہے۔

مجھے Python اتنی آتی ہے کہ اردو سیارہ کا کام کر لیتا ہوں۔
 

زیک

مسافر
ٹرانسلیٹ ٹولکٹ پر کام کر کے اس میں رد و بدل کا یہ فائدہ ہے کہ وہ پراجیکٹ جاری ہے اور اس میں ہماری بھی کچھ contribution ہو جائے گی۔

دوسری طرف Python سیکھنا بھی وقت لے گا۔ اس لئے دوسری کسی زبان میں بھی لکھا جا سکتا ہے۔ مگر خیال رہے کہ کوڈ کراس پلیٹ‌فارم ہو۔ ویسے بھی سی‌شارپ شاید بہتر نہیں ہے اس کام کے لئے۔ کوئی ایسی زبان جو text parsing کے لئے بنی ہو بہتر رہے گی۔ جیسے پرل۔

پہ فائل کا فارمیٹ میں ابھی لکھتا ہوں۔
 

نبیل

تکنیکی معاون
زکریا، میرے خیال میں ڈاٹ نیٹ لینگویجز ٹیکسٹ پارسنگ کے لیے بری نہیں ہیں۔ ڈاٹ نیٹ‌ کلاس لائبریریز میں ریگولر ایکسپریشنز کی مکمل سپورٹ ہے۔ بہرحال میں ریگولرایکسپریشنز کے بارے میں اتنا نہیں جانتا۔
 

زیک

مسافر
پو فائل کا فارمیٹ آپ دیکھ ستے ہیں۔ بنیادی طور پر یہ یوں ہوتا ہے:

کوڈ:
white-space
#  translator-comments
#. automatic-comments
#: reference...
#, flag...
msgid untranslated-string
msgstr translated-string

مسئلہ یہ ہے پی‌ایچ‌پی‌بی‌بی وغیرہ ہر سٹرنگ کو ایک لیبل دیتے ہیں اور اس لیبل سے ہی سب کام ہوتا ہے۔ میری تجویز یہ ہے کہ اس لیبل کو پو فائل میں کمنٹ میں ریفرنس والی لائن کے طور پر ڈالا جائے۔

آپ کی پی‌ایچ‌پی‌بی‌بی کی مثال:

کوڈ:
$lang['Forum'] = 'Forum';
$lang['Category'] = 'Category';
$lang['Admin_panel'] = 'Go to Administration Panel';

اس کو پو فائل میں ایسے رکھا جائے:
کوڈ:
#: Forum
msgid "Forum"
msgstr "فورم"

#: Category
msgid "Category"
msgstr "زمرہ"

#: Admin_panel
msgid "Go to Administration Panel"
msgstr "ایڈمن پینل پر جائیں"
 

زیک

مسافر
نبیل نے کہا:
زکریا، میرے خیال میں ڈاٹ نیٹ لینگویجز ٹیکسٹ پارسنگ کے لیے بری نہیں ہیں۔ ڈاٹ نیٹ‌ کلاس لائبریریز میں ریگولر ایکسپریشنز کی مکمل سپورٹ ہے۔ بہرحال میں ریگولرایکسپریشنز کے بارے میں اتنا نہیں جانتا۔

ہاں مگر کراس پلیٹ‌فارم نہیں۔ چونکہ gettext اور po فائلیں یونکس سے آئی ہیں اس لئے ہمارا سکرپٹ بھی یونکس پر کام کرے تو ہم اسے پبلک بھی کر سکتے ہیں۔
 

نبیل

تکنیکی معاون
شکریہ زکریا۔

اب یہ بتائیں کہ مثلاً phpbb کی لینگویج فائلوں کو پو فائلز میں کنورٹ کرتے ہوئے اوریجنل فائلز مین وائٹ سپیسز اور کمنٹس کا خیال کیسے رکھا جائے؟ جب پو فائل واپس لینگویج فائل میں کنورٹ کی جائے تو کم ازکم فائل کے پرانے کمنٹ تو اسی جگہ پر آنے چاہییں۔
 

زیک

مسافر
نبیل نے کہا:
اب یہ بتائیں کہ مثلاً phpbb کی لینگویج فائلوں کو پو فائلز میں کنورٹ کرتے ہوئے اوریجنل فائلز مین وائٹ سپیسز اور کمنٹس کا خیال کیسے رکھا جائے؟ جب پو فائل واپس لینگویج فائل میں کنورٹ کی جائے تو کم ازکم فائل کے پرانے کمنٹ تو اسی جگہ پر آنے چاہییں۔

پو فائل میں کمنٹ # سے شروع ہوتا ہے۔ اس لئے یہ تو آسان ہو گا۔ وائٹ سپیس کے بارے میں یقین سے نہیں کہہ سکتا کیونکہ پو فائل میں اس کی کچھ اہمیت ہے۔ میرا اندازہ ہے کہ اگرچہ ہر سٹرنگ کے ترجمے کے ساتھ خالی لائن ضروری ہے لیکن یہ ایک سے زیادہ بھی ہو سکتی ہیں۔ اگر ایسا ہے تو جہاں پی‌ایچ‌پی‌بی‌بی کی فائل میں وائٹ سپیس ہے وہاں پو فائل میں extra space ڈال دی جائے اور واپس کنورژن پر ایک required white space کو ختم کیا جائے مگر باقی برقرار رکھی جائیں۔
 
اگر فائلیں لینکس اور یونیکس پر ہی رہیں گی تو پرل بہترین چوائس ہے۔ یونیکس پر پرل کے ساتھ ساتھ آسانی سے یونیکس کی اپنی یوٹیلٹیز بھی استعمال کی جاسکتی ہیں جیسے AWK and SED۔

مجھے وضاحت سے بتادیں کہ فائل کس فارمیٹ میں ہوگی اور اسے کس فارمیٹ میں کنورٹ کرنا ہے، میں اس سلسلے میں کچھ اور لوگوں کو بھی ملوث کرتا ہوں اگر مجھے واضح طور پر پتہ چل جائے۔ یہ کام میں ایک اسائنمنٹ کے کسی کو دے بھی سکتا ہوں اور ساتھ میں خود بھی کرنا شروع ہوجاؤں گا۔
 

نعمان

محفلین
اگر اس سلسلے میں کچھ پیش رفت نہیں ہوئی تو جلد ہونا چاہئے تاکہ جملہ کا کام بھی انٹرانس پر آسکے۔

میں نے جملہ کی جو فائل دیکھی ہے اور جیسے پی ایچ پی بی بی کی مثال دی گئی ہے تو میرے خیال میں ان فائلوں کو پی ایچ پی میں ہی کوئی اسکرپٹ لکھ کر پو فائلوں میں کنورٹ کیا جاسکتا ہے۔ مجھے پی ایچ پی کی یا پروگرامنگ کی زیادہ معلومات نہیں، اور یقینا میری پیش کردہ تجویز پہلے سے آپ حضرات کے علم میں ہوگی۔ میں یہ جاننا چاہوں گا کہ اس میں کیا خامی ہے؟

یعنی دیکھیں یہ فائلیں سیدھی سیدھی پی ایچ پی فائلیں ہیں۔ ان میں ایک لینگویج ایرے میں اسٹرنگز دی جاتی ہیں۔ اگر ایسا سیدھا سادھا لوپ لکھا جائے جو ان اسٹرنگز کو پو اسٹرنگز میں ڈھال دے؟
 
Top