مترجمین کے لیے¶
یہ صفحہ اُس شخص کے لیے ہے جو کیٹلاگ میں ترمیم کرتا ہے، اُس کے لیے نہیں جو کوڈ لکھتا ہے۔ یہ جان بوجھ کر مختصر ہے، اور اسی لیے ہے کہ کسی پروجیکٹ کی اپنی مترجم ہدایات میں اس کا ربط دیا جائے یا اسے نقل کر لیا جائے۔
یہاں کسی چیز کے لیے آپ کو Python پڑھنا نہیں پڑتا۔ یہاں سب کچھ ایک ہی چیز کے بارے میں ہے: پیغام کے وہ حصے جو خمدار بریسز میں ہوتے ہیں۔
پلیس ہولڈر کیا ہے¶
کیٹلاگ کے کسی پیغام میں خمدار بریسز کے اندر نام ہو سکتے ہیں:
{name} ایک پلیس ہولڈر ہے۔ جب پروگرام یہ پیغام دکھاتا ہے تو وہ {name}
کی جگہ اپنی فراہم کردہ کوئی قدر رکھ دیتا ہے — کسی شخص کا نام، فائل کا نام،
کوئی عدد۔ پلیس ہولڈر ترجمہ کرنے والا لفظ نہیں؛ وہ ایک خانہ ہے۔
آپ کا ترجمہ msgstr میں جاتا ہے، اور اس میں وہ خانہ برقرار رہنا لازم ہے:
آپ کیا بدل سکتے ہیں اور کیا نہیں¶
آپ کر سکتے ہیں:
- پلیس ہولڈر کو کہیں بھی لے جانا جہاں ہدف زبان کی گرامر چاہے، بشمول پیغام کے شروع میں۔
- پلیس ہولڈر کو دہرانا اگر زبان کو وہ قدر دو بار درکار ہو۔
- باقی ہر لفظ نئے سرے سے لکھنا، بشمول اوقاف، خالی جگہ اور جملے کی ترتیب۔
آپ نہیں کر سکتے:
- بریسز کے اندر والے نام کا ترجمہ۔
{name}{name}ہی رہتا ہے، اُس زبان میں بھی جو باقی کچھ بھی لاطینی حروف میں نہیں لکھتی۔ - بریسز ہٹانا، یا نام انہیں کے بغیر لکھنا۔
- ASCII بریسز
{}کی جگہ پورے چوڑے{}رکھنا۔ بہت سے ان پٹ میتھڈ پورے چوڑے حروف پیدا کرتے ہیں؛ وہ تقریباً ایک جیسے دکھتے ہیں اور کام نہیں کرتے۔ - فارمیٹنگ جوڑنا، جیسے
{name!r}یا{amount:.2f}۔ قدر کیسے دکھائی جائے گی، یہ پروگرام میں طے ہوتا ہے، کیٹلاگ میں نہیں۔ - ایسا پلیس ہولڈر ایجاد کرنا جو
msgidمیں نہ ہو۔
اگر کسی پیغام کو ایسی قدر چاہیے جو اصل پیغام دیتا ہی نہیں، تو وہ ایسا پیغام ہے جسے ڈویلپر کو بدلنا ہو گا۔ اس کے گرد راستہ نکالنے کے بجائے یہ بات کہہ دیجیے۔
جمع کی صورتیں¶
گنتی والا پیغام آپ کی زبان میں جمع کی ہر صورت کے لیے ایک msgstr خانہ لے کر
آتا ہے، اور یہ آپ کی زبان طے کرتی ہے کہ وہ کتنی ہیں — جاپانی کے لیے ایک، جرمن
کے لیے دو، روسی کے لیے تین، عربی کے لیے چھ۔ کیٹلاگ جتنے خانے دے، سب بھریے۔
دو قاعدے جن پر لوگ اکثر پھسلتے ہیں:
- یہ خانے "واحد، جمع، زیادہ جمع" نہیں ہیں۔ ہر اشاریے کا مطلب وہی ہے جو آپ کی زبان کا جمع کا قاعدہ کہے۔ لیٹویائی کی تیسری صورت صرف صفر کے لیے ہے؛ سلووینی کی دوسری ٹھیک دو کے لیے؛ ویلش عام صورت کو اشاریہ 0 پر رکھتی ہے اور واحد کو اشاریہ 1 پر۔
- دو خانوں میں بجا طور پر ایک ہی متن ہو سکتا ہے۔ ترکی، ہنگری، فارسی اور بنگالی میں اسم عدد کے بعد واحد ہی رہتا ہے، لہٰذا گنتی والے پیغام کی دونوں صورتیں ایک ہی سٹرنگ ہوتی ہیں۔ یہ درست ہے، نقل چسپاں کی لغزش نہیں۔
اوپر کے پلیس ہولڈر قواعد ہر صورت پر الگ الگ لاگو ہوتے ہیں۔
fuzzy اندراج¶
جس اندراج پر fuzzy کا نشان ہو وہ مشین کا اندازہ ہے: ڈویلپر نے اصل پیغام بدل
دیا، اور اوزار نے نئے متن کو آپ کے پرانے ترجمے کے ساتھ جوڑ دیا تاکہ آپ کے پاس
شروع کرنے کو کچھ ہو۔
fuzzy اندراج پروگرام استعمال نہیں کرتا — وہ اس کی جگہ غیر ترجمہ شدہ اصل
دکھاتا ہے — جب تک کوئی متن پر نظرِ ثانی کر کے fuzzy نشان ہٹا نہ دے۔ بیشتر PO
ایڈیٹروں میں اسی کام کا بٹن موجود ہے۔
ناکامی کا پیغام پڑھنا¶
اوزار کیٹلاگ کمپائل ہوتے وقت پلیس ہولڈر جانچتے ہیں، اور پیغام آپ کے لیے لکھا
گیا ہے، کسی پروگرامر کے لیے نہیں۔ صرف یہ بتا دینا کہ {name} غائب ہے، ایک بند
گلی ہے جب وہی حروف آپ کے سامنے نظر آ رہے ہوں، لہٰذا جہاں کوئی پلیس ہولڈر موجود
لگتا ہو مگر ہو نہ، وہاں پیغام وجہ بھی بتاتا ہے۔ اصل Hello {name} کے مقابل،
ان میں سے ہر ایک کی اطلاع
translation does not match the source placeholders: کے تحت دی جاتی ہے۔
| آپ کا ترجمہ کیا کہتا ہے | جو وجہ وہ بتاتا ہے |
|---|---|
こんにちは {name} |
{name} غائب ہے (اس کے گرد کے بریسز ASCII کے { اور } نہیں ہیں) |
こんにちは {{name}} |
{name} غائب ہے (وہ {{name}} لکھا ہے، جو ثابت بریس کو ایسکیپ کرنے کا طریقہ ہے) |
こんにちは name |
{name} غائب ہے (نام تو آیا ہے، مگر بریسز کے اندر نہیں) |
こんにちは {名前} |
{name} غائب ہے؛ {名前} ماخذ پیغام میں نہیں ہے |
جو حروف دیکھے نہیں جا سکتے، ان کا الگ سلوک ہے۔ بریسز کے اندر بغیر توڑ والی خالی جگہ (no-break space) وہ چیز ہے جو کوئی ان پٹ میتھڈ پیدا کرتا ہے اور کوئی ایڈیٹر دکھاتا نہیں، لہٰذا پیغام اسے ایسے حرف کا نام لینے کے بجائے — جسے آپ ڈھونڈ ہی نہیں سکتے — اس کے کوڈ پوائنٹ سے چھاپ دیتا ہے:
جس نام کے حروف مختلف رسم الخط ملا دیں — یعنی ہم شکل حروف والا معاملہ، جہاں
سریلک а لاطینی a سے الگ پہچانا ہی نہیں جا سکتا — اسے دو بار دکھایا جاتا
ہے، ایک بار پڑھنے کے قابل صورت میں اور ایک بار ایسکیپ شدہ، اور یہی وہ واحد
صورت ہے جو دونوں میں فرق بتاتی ہے:
translation does not match the source placeholders: {name} is missing;
{nаme} (n\u0430me) is not in the source message
یہی تفریق اُس وقت بھی لاگو ہوتی ہے جب پورا کا پورا ایک ہی رسم الخط میں لکھا
ہوا یونانی یا سریلک نام کسی ASCII ماخذ نام سے ٹکرائے، بشمول ایک حرفی لاطینی
a / سریلک а والے معاملے کے۔
اگر آپ کو ان میں سے کوئی صورت پیش آئے اور حل واضح نہ ہو، تو محفوظ راستہ یہ ہے
کہ اپنا لکھا ہوا پلیس ہولڈر مٹا دیجیے اور msgid والا نقل کر لیجیے۔
جانچیں کیا نہیں کر سکتیں¶
اوزار یہ تصدیق کرتے ہیں کہ آپ کے پلیس ہولڈر سالم ہیں۔ وہ یہ نہیں بتا سکتے کہ ترجمہ درست، فطری یا سیاق کے لیے مناسب ہے یا نہیں — یہ پوری طرح آپ کے ذمے رہتا ہے۔
دو چیزیں کسی بھی جانچ سے زیادہ کام آتی ہیں:
- مترجم کا تبصرہ پڑھیے۔ پیغام کے اوپر
#.سے شروع ہونے والی سطر ڈویلپر کی طرف سے یہ بتانا ہے کہ یہ کہاں آتا ہے اور اس کا مطلب کیا ہے۔ -
msgctxtکے بارے میں پوچھیے۔ جب ایک ہی لفظ مختلف سیاق کے ساتھ دو بار آئے، تو اس کی وجہ یہی ہوتی ہے کہ دونوں کا ترجمہ الگ ہونا چاہیے — مثلاً "Open" بطور بٹن اور "Open" بطور حالت۔