Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 22.8 KB

README.md

File metadata and controls

380 lines (276 loc) · 22.8 KB

ہوکیلائزیشن

میں اپنی پوری ایپ یا سائٹ کو گوگل ٹرانسلیٹ کے ذریعے کیوں نہیں چلا سکتا اور کسی دوسری زبان میں بنیادی ترجمہ حاصل کر سکتا ہوں؟

اب آپ کر سکتے ہیں!

نام hokeylization ' ایک پورٹ مینٹیو ہے، جس کا مطلب ہے 'ہوکی لوکلائزیشن'

یہ کچھ حد تک ہوکی ہے کیونکہ یہ بہت آسان ہے: یہ گوگل ٹرانسلیٹ کو تار بھیجتا ہے۔

اور یہ آسان ہے، پھر بھی بہت طاقتور ہے۔ اسے HTML دستاویزات کے لیے خصوصی تعاون حاصل ہے، HandlebarsJS ٹیمپلیٹس، اور Markdown فائلیں۔

آپ ترجمہ کر سکتے ہیں:

  • پیغامات پر مشتمل ایک جاوا اسکرپٹ آبجیکٹ
  • کسی بھی تعداد میں فائلیں یا ڈائریکٹریز، ہمیشہ ڈائرکٹریوں کو بار بار منتقل کرتے ہیں۔

اسے دوسری زبان میں پڑھیں

اس README.md دستاویز کا ترجمہ ہوکیلائزیشن ٹول کا استعمال کرتے ہوئے کیا گیا ہے۔ گوگل ٹرانسلیٹ کے ذریعے تعاون یافتہ ہر زبان!

مجھے یقین ہے کہ یہ کامل نہیں ہے، لیکن مجھے امید ہے کہ یہ کچھ بھی نہیں سے بہتر ہے!

🇸🇦 عربی 🇧🇩 بنگالی 🇩🇪 جرمن 🇺🇸 انگریزی 🇪🇸 ہسپانوی 🇫🇷 فرانسیسی 🇹🇩 ہاؤسا 🇮🇳 ہندی 🇮🇩 انڈونیشیائی 🇮🇹 اطالوی 🇯🇵 جاپانی 🇰🇷 کورین 🇮🇳 مرانتھی 🇵🇱 پولش 🇧🇷 پرتگالی 🇷🇺 روسی 🇰🇪 سواحلی 🇵🇭 Tagalog 🇹🇷 ترکی 🇵🇰 اردو 🇻🇳 ویتنامی 🇨🇳 چینی

کیا README کے اس ترجمے میں کوئی مسئلہ ہے؟

اصل کا یہ خاص ترجمہ README خامی ہو سکتی ہے -- تصحیح بہت خوش آئند ہے! براہ کرم GitHub پر پل کی درخواست بھیجیں، یا اگر آپ ایسا کرنے میں آرام سے نہیں ہیں تو، ایک مسئلہ کھولیں

جب آپ ترجمہ کے بارے میں ایک نیا GitHub مسئلہ بناتے ہیں، تو براہ کرم یہ کریں:

  • صفحہ کا یو آر ایل شامل کریں (براؤزر ایڈریس بار سے کاپی/پیسٹ کریں)
  • درست متن شامل کریں جو غلط ہے (براؤزر سے کاپی/پیسٹ) *براہ کرم بیان کریں کہ کیا غلط ہے -- کیا ترجمہ غلط ہے؟ کیا فارمیٹنگ کسی طرح ٹوٹ گئی ہے؟
  • براہِ کرم ایک بہتر ترجمے کی تجویز پیش کریں، یا متن کو کس طرح مناسب طریقے سے فارمیٹ کیا جائے۔ *** آپ کا شکریہ!**

مشمولات

ذریعہ

سپورٹ اور فنڈنگ

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

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

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

شکریہ!

انسٹالیشن

کمانڈ لائن ٹول استعمال کرنے کے لیے، npm یا yarn کا استعمال کرتے ہوئے انسٹال کریں:

npm install -g hokeylization
yarn global add hokeylization

لائبریری کے طور پر استعمال کرنے کے لیے، lite ورژن انسٹال کریں، جو بہت چھوٹا ہے:

npm install -g hokeylization-lite
yarn global add hokeylization-lite

پھر hokey کمانڈ کے لیے مدد دیکھیں:

hokey --help
hokey -h

اپنی زبان یا دوسری زبان میں آؤٹ پٹ دیکھنا چاہتے ہیں؟

hokey آپ کے شیل کے ماحولیاتی متغیرات سے خود بخود زبان کا پتہ لگانے کی کوشش کرتا ہے۔

آپ LC_ALL ماحول کے متغیر کو ترتیب دے کر کسی زبان کو مجبور کر سکتے ہیں:

LC_ALL=it hokey --help

نوٹ کریں کہ اگر آپ نے hokeylization-lite انسٹال کیا ہے تو کمانڈ مدد صرف انگریزی میں دستیاب ہے۔

سیٹ اپ

اپنے Google Translate پروجیکٹ کی شناخت کے لیے GOOGLE_TRANSLATE_PROJECT_ID ماحولیاتی متغیر سیٹ کریں

GOOGLE_APPLICATION_CREDENTIALS ماحولیاتی متغیر کو اپنے ڈاؤن لوڈ کردہ JSON اسناد پر سیٹ کریں یہ معلوم کرنے کے بعد کہ گوگل کلاؤڈ پر توثیق کیسے کام کرتی ہے (یہ تفریحی ہوسکتا ہے)

اگر آپ سورس کوڈ سے چل رہے ہیں، تو آپ اسے سورس میں .env فائل میں بھی رکھ سکتے ہیں ڈائریکٹری وہ dotenv کے ذریعے رن ٹائم پر لوڈ کی جائے گی۔

جاوا اسکرپٹ سٹرنگ ریسورس فائل کا ترجمہ کرنا

آپ کا سٹرنگ ٹیبل لازمی طور پر جاوا اسکرپٹ فائل میں ان دو شکلوں میں سے کسی ایک میں ہونا چاہیے:

ES6 برآمد:

export default {
  string_key: "some value",
  another_key: "another value",
  ... more keys ...
}

کامن جے ایس ایکسپورٹ

module.exports = {
  string_key: "some value",
  another_key: "another value",
  ... more keys ...
}

اگر اس فائل کا نام myfile.en.js تھا، تو آپ اس کا ہسپانوی اور جرمن میں ترجمہ کر سکتے ہیں:

hokey -l es,de -o myfile.LANG.js myfile.en.js

مذکورہ بالا میں LANG خاص ہے -- یہ اس ٹول میں ایک محفوظ لفظ ہے!

آؤٹ پٹ فائلوں کے لیے LANG کو لینگویج کوڈ سے بدل دیا جاتا ہے۔

اس طرح مندرجہ بالا کمانڈ فائلوں کو تخلیق کرتا ہے:

myfile.es.js
myfile.de.js

-l / --languages اختیار آئی ایس او لینگویج کوڈز کی کوما سے الگ کردہ فہرست ہے۔ Google Translate کے ذریعے تعاون یافتہ

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

تمام کلیدوں کو زبردستی دوبارہ ترجمہ کرنے کے لیے، -f / --force اختیار استعمال کریں۔

ٹیکسٹ فائلوں کی ڈائرکٹری کا ترجمہ کرنا

آپ فائلوں کی ڈائرکٹری کا ترجمہ بھی کر سکتے ہیں۔ hokeylization بار بار ہر ایک کا دورہ کرے گا ڈائریکٹری میں فائل کریں اور گوگل ٹرانسلیٹ کے ذریعے اس کے مواد کو چلائیں، اور آؤٹ پٹ کو محفوظ کریں۔ ایک علیحدہ ڈائریکٹری ٹری میں ایک جیسی نام کی فائل میں

جب آپ کے ترجمے کا ہدف ایک ڈائرکٹری ہے، تو یہ موڈ فعال ہو جاتا ہے۔

-o / --outfile اختیار آؤٹ پٹ ڈائرکٹری کی وضاحت کرتا ہے۔

بڑی وارننگ: ڈائریکٹریز کا ترجمہ کرتے وقت، نہ کریں آؤٹ پٹ ڈائرکٹری کی وضاحت کریں جو آپ کی ان پٹ ڈائرکٹری میں ہے! اگر آپ ایسا کرتے ہیں، تو آپ کریں گے:

  • لامحدود تکرار دلانا
  • اپنا گوگل بل چلائیں۔
  • اپنی ڈسک کو بھریں۔
  • کم مزہ کریں۔

کیا نہیں کرنا کی ایک مثال یہ ہے:

hokey -l es -o templates/es templates # <--- DON'T DO THIS!

جب یہ چلتا ہے، ترجمہ شدہ فائلیں templates/es پر لکھی جاتی ہیں، اور اس طرح نئی بن جاتی ہیں۔ ترجمہ کرنے کے لیے ماخذ فائلیں، کیونکہ وہ templates/ کے تحت ہیں -- یہ عمل جاری رہتا ہے۔ ہمیشہ کے لیے، ایسا مت کرو!

درست استعمال

ٹھیک ہے، ہم کہتے ہیں کہ آپ کے پاس ڈائریکٹری میں کچھ ای میل ٹیمپلیٹس ہیں:

templates/email/en/welcome.txt
templates/email/en/welcome.html
templates/email/en/verify-account.txt
templates/email/en/verify-account.html
templates/email/en/reset-password.txt
templates/email/en/reset-password.html

ان سب کا ہسپانوی اور جرمن میں ترجمہ کرنے کے لیے، چلائیں:

hokey -l es,de -o templates/email/LANG templates/email/en

مذکورہ بالا میں، LANG ایک محفوظ لفظ ہے اور اسے ISO زبان کے کوڈ سے بدل دیا جائے گا۔

جب اوپر چلتا ہے تو کیا ہوتا ہے:

  • templates/email/es اور templates/email/de ڈائریکٹریز بنائی جائیں گی (اگر وہ موجود نہیں ہیں)
  • templates/email/en میں موجود ہر فائل کا ہسپانوی اور جرمن میں ترجمہ کیا جائے گا۔
  • موجودہ آؤٹ پٹ فائلوں کو دوبارہ تخلیق نہیں کیا جائے گا جب تک کہ آپ -f / --force استعمال نہیں کرتے ہیں۔
  • آپ کو es اور de کے اندر ایک جیسی ڈائرکٹری ڈھانچہ اور فائلیں ملیں گی جیسا کہ آپ کے پاس en کے تحت ہے۔

دیگر اختیارات

ڈرائی رن

کیا کیا جائے گا یہ ظاہر کرنے کے لیے -n / --dry-run پاس کریں، لیکن اصل میں کوئی API کال نہ کریں یا کوئی فائل نہ لکھیں۔

زبردستی۔

ترجمہ کو ہمیشہ دوبارہ تخلیق کرنے کے لیے -f / --force پاس کریں، چاہے وہ پہلے سے موجود ہوں۔

میچ

ڈائریکٹری موڈ میں چلتے وقت پروسیس شدہ فائلوں کو محدود کرنے کے لیے -m / --match کو پاس کریں۔

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

-m / --match اختیار کی قدر ایک regex ہے (شیل کوٹ کرنے کے قوانین سے ہوشیار رہیں!) کن فائلوں کا ترجمہ کیا جانا چاہئے۔

شک ہونے پر، آپ اس اختیار کو -n / --dry-run کے ساتھ جوڑ کر دیکھ سکتے ہیں کہ کن فائلوں کا ترجمہ کیا جائے گا۔

شامل نہیں۔

کبھی کبھی آپ کا -m بہت زیادہ فائلوں سے میل کھاتا ہے۔ واضح طور پر خارج کرنے کے لیے -e / --excludes اختیار استعمال کریں۔ فائلیں جو دوسری صورت میں مماثل ہوتیں۔

آپ خالی جگہوں سے الگ کرکے متعدد ریجیکس کی فہرست بنا سکتے ہیں۔

ایک عام استعمال یہ ہوگا: --excludes node_modules dist \.git build tmp

ہینڈل بارز

ترجمہ کرنے والی تاروں میں {{ handlebars }} ٹیمپلیٹس ہو سکتے ہیں، یا تو دو یا تین گھوبگھرالی منحنی خطوط وحدانی کے ساتھ

آپ شاید نہیں چاہتے کہ ان ٹیمپلیٹس کے اندر موجود چیزوں کا ترجمہ کیا جائے۔

-H / --handlebars پرچم کو پاس کریں، اور {{ ... }} کے اندر کسی بھی چیز کا ترجمہ نہیں کیا جائے گا۔

نشان لگانا

مارک ڈاؤن نہ تو ٹیکسٹ ہے اور نہ ہی ایچ ٹی ایم ایل، اس لیے گوگل ٹرانسلیٹ کو اس میں کچھ مشکلات ہیں۔

-M / --markdown پرچم مارک ڈاؤن فائلوں کے لیے خصوصی ہینڈلنگ کو قابل بناتا ہے۔

مارک ڈاؤن فائلوں کے ساتھ، اگر آپ -M پرچم استعمال نہیں کرتے ہیں، تو آپ کو شاید یہ مسائل ملیں گے:

  • ٹوٹے ہوئے لنکس۔ ترجمہ میں، مارک ڈاؤن لنک کی تفصیل ختم ہونے کے بعد ایک اسپیس کریکٹر ظاہر ہوتا ہے ( ] کے ساتھ) لیکن اس سے پہلے کہ اس کا ہدف کا لنک شروع ہو ( ( کے ساتھ)۔ اس کی وجہ سے مارک ڈاؤن غلط طریقے سے رینڈر ہو جاتا ہے، اور لنک دستاویز دیکھتے وقت ٹوٹ جاتا ہے۔
  • کوڈ بلاکس کا ترجمہ کیا جاتا ہے۔ گوگل ٹرانسلیٹ یہ نہیں جانتا کہ مارک ڈاؤن کس کوڈ کو سمجھتا ہے اور کس کو نہیں۔
  • انڈینٹڈ کوڈ بلاکس کے لیے غلط وقفہ کاری۔ ترجمے میں وقفہ کو محفوظ کرنا مشکل ہے۔
  • backticks کے اندر کی چیزوں کا ترجمہ ہو جائے گا، جب آپ تقریباً ہمیشہ یہ چاہتے ہیں کہ وہ لفظی قدر ہوں۔

جب -M / --markdown جھنڈا فعال ہو:

  • پیٹرن ]( کو گاڑھا کیا جائے گا ]( اس طرح ٹوٹے ہوئے مارک ڈاؤن لنکس کو ٹھیک کرنا
  • ایک "ترجمہ نہیں" ریپر کو انڈینٹڈ کوڈ بلاکس کے ارد گرد رکھا جائے گا، مناسب انڈینٹیشن کو محفوظ رکھا جائے گا اور اس بات کو یقینی بنایا جائے گا کہ ان کا ترجمہ نہیں کیا گیا ہے۔
  • ایک "ترجمہ نہیں" ریپر کو backticks کے اندر متن کے گرد رکھا جائے گا تاکہ یہ یقینی بنایا جا سکے کہ ان کا ترجمہ نہیں کیا گیا ہے۔

عمل کے طور پر

عام طور پر ہر چیز پر سادہ متن کے طور پر کارروائی کی جاتی ہے۔

اگر آپ کا مواد ایچ ٹی ایم ایل ہے، تو یہ الٹ جائے گا جب تک کہ آپ -p html / --process-as html اختیار کو پاس نہیں کرتے

فلٹر

مہم جوئی کے لیے: ڈائریکٹری میں فائلوں پر کارروائی کرتے وقت، آپ -F / --filter آپشن پاس کر سکتے ہیں۔ فائل سسٹم پر لکھے جانے سے پہلے آؤٹ پٹ کو فلٹر کرنے کے لیے

اس اختیار کی قدر JS فائل کا راستہ ہونا چاہیے جو filter نامی فنکشن برآمد کرتی ہے۔

filter فنکشن کو 'async' ہونا چاہیے کیونکہ await async اس پر کال کیا جائے گا۔

فائلوں کو ڈسک پر لکھے جانے سے پہلے، فائل کے پورے مواد کو سٹرنگ کے طور پر filter فنکشن میں منتقل کر دیا جائے گا۔

filter فنکشن سے واپسی کی قیمت وہی ہے جو اصل میں اسٹوریج میں لکھی جائے گی۔

اس طرح، آپ کا مکمل کنٹرول ہے کہ آخر میں کیا لکھا جائے گا۔

filter اسکرپٹ کو درج ذیل مقامات پر تلاش کیا جائے گا ( .js کے ساتھ فلٹر میں شامل کیا جائے گا نام، جب تک کہ یہ پہلے ہی .js پر ختم نہ ہو جائے)

  • موجودہ ڈائریکٹری
  • موجودہ ڈائرکٹری کے اندر .hokey-filters نام کی ایک ڈائرکٹری
  • ایک ڈائرکٹری جس کا نام ہے ${HOME}/.hokey-filters ، جہاں ${HOME} موجودہ صارف کی ہوم ڈائرکٹری ہے
  • بلٹ ان فلٹرز ڈائرکٹری

فلٹر پیرامیٹرز

filter سٹرنگ متعدد الفاظ ہو سکتی ہے۔ اس صورت میں، پہلا لفظ فلٹر کا نام ہے، اور بقیہ الفاظ filter فنکشن میں بطور دلیل بھیجے جائیں گے۔

مدد

مدد دکھانے کے لیے -h / --help استعمال کریں۔

JSON بیچ کمانڈز

-j / --json آپشن کے ساتھ، آپ متعدد مربوط hokey کمانڈ چلا سکتے ہیں۔

کنونشن کے مطابق اس فائل کو hokey.json کہا جاتا ہے، لیکن آپ اسے جو چاہیں نام دے سکتے ہیں۔

اگر آپ کسی ڈائرکٹری کو -j اختیار کے طور پر پاس کرتے ہیں، تو hokey hokeyاس ڈائریکٹری میںhokey.json hokey.json تلاش کرے گا۔

JSON فائل میں ایک آبجیکٹ ہونا چاہیے۔ اس چیز کے اندر، اس کی جائیداد کے نام ایک جیسے ہیں۔ کمانڈ لائن کے اختیارات کے علاوہ ایک اضافی پراپرٹی جس کا نام hokey

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

hokey صف میں ہر چیز کے اندر، آپ کو ایک name ، اور ان پٹ اور آؤٹ پٹ فائلوں کی وضاحت کرنی چاہیے

یہاں ایک hokey.json کی مثال ہے۔

{
    "inputLanguage": "en",
    "languages": "es,fr,ja", # can also be an array of strings
    "force": false,
    "match": null,
    "processAs": null,
    "excludes": ["exclude-1", "exclude-2"],
    "handlebars": false,
    "markdown": false,
    "regular": false,
    "dryRun": false,
    "filter": "theFilter.js",
    "hokey": [
      {
        "name": "locale names",
        "infile": "messages/locales_en.js",
        "outfile": "messages/locales_LANG.js",
        "handlebars": true
      },
      {
        "name": "CLI messages",
        "infile": "messages/en_messages.js",
        "outfile": "messages/LANG_messages.js",
        "handlebars": true
      },
      {
        "name": "README",
        "infile": "README.md",
        "outfile": "lang/LANG/",
        "excludes": ["lang/", "node_modules/", "\\.git/", "tmp/"],
        "filter": "relativizeMarkdownLinks lang",
        "markdown": true,
        "index": "lang/README.md"
      }
    ]
}

متعدد ان پٹ فائلیں۔

فائل کے راستوں کی ایک صف کو ایک ہی راستے کی بجائے infiles infile کے بطور پاس کریں، جیسا کہ اس مثال میں ہے:

{
  ... [
    {
      "name": "my docs",
      "infiles": ["README.md", "INSTALL.md", "TUTORIAL.md"],
      "outfile": "docs/LANG/",
      "markdown": true
  ]
}

اشاریہ جات

بہت سی زبانوں میں ترجمہ کرتے وقت، hokey ایک انڈیکس فائل بنا سکتا ہے جس میں کئے گئے تمام تراجم کی فہرست ہوتی ہے۔ اور ان کو لنک فراہم کرتا ہے۔

اشاریہ جات تیار کرتے وقت، آپ کے پاس صرف ایک ان پٹ ذریعہ ہوسکتا ہے

-I / --index اختیار کو پاس کریں، قدر وہ جگہ ہے جہاں انڈیکس فائل تیار کی جائے گی، جو ایک فائل ہو سکتی ہے۔ یا ڈائریکٹری۔ اگر یہ ڈائرکٹری ہے تو، ٹیمپلیٹ کی بنیاد پر ڈیفالٹ فائل نام استعمال کیا جائے گا (نیچے دیکھیں)

انڈیکس آؤٹ پٹ کو کس طرح فارمیٹ کیا جاتا ہے اس کا تعین کرنے کے لیے -A / --index-template استعمال کریں۔ آپ 'html' کی وضاحت کر سکتے ہیں، 'مارک ڈاؤن'، 'ٹیکسٹ'، یا آپ کے اپنے HandlebarsJS ٹیمپلیٹ کا فائل کا راستہ

اگر آپ خود اپنی ٹیمپلیٹ کی وضاحت کرتے ہیں، تو آپ کو -I / --index کے لیے ایک فائل (ڈائریکٹری نہیں) بھی بتانی ہوگی۔ اختیار

زبانوں کا ترجمہ کرنے میں مزہ آئے!