Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 21.2 KB

README.md

File metadata and controls

380 lines (276 loc) · 21.2 KB

هوڪلائيزيشن

مان گوگل ٽرانسليٽ ذريعي پنهنجي پوري ايپ يا سائيٽ کي ڇو نه ٿو هلائي سگهان ۽ ڪنهن ٻئي ٻوليءَ ۾ بنيادي ترجمو حاصل ڪري سگهان ٿو؟

*** هاڻي، توهان ڪري سگهو ٿا! ***

نالو hokeylization هڪ portmanteau آهي، جنهن جي معني آهي 'hokey localization'

اھو ڪجھھ ھوڪي آھي ڇاڪاڻ ته اھو تمام سادو آھي: اھو Google Translate ڏانھن تار موڪلي ٿو

۽ اهو سادو آهي، اڃا به تمام طاقتور. ان ۾ HTML دستاويزن لاءِ خاص سپورٽ آهي، HandlebarsJS ٽيمپليٽ، ۽ Markdown فائلون.

توھان ترجمو ڪري سگھو ٿا:

  • هڪ جاوا اسڪرپٽ اعتراض جنهن ۾ پيغام شامل آهن
  • فائلن يا ڊائريڪٽرن جو ڪو به تعداد، هميشه ڊائريڪٽرن کي بار بار ڪندي

ھي پڙھو ٻي ٻولي ۾

ھي README.md دستاويز ترجمو ڪيو ويو آھي، استعمال ڪندي ھوڪلائيزيشن ٽول پاڻ، ۾ گوگل ترجمي جي مدد سان هر ٻولي!

مون کي پڪ آهي ته اهو مڪمل ناهي، پر مون کي اميد آهي ته اهو ڪجهه به نه کان بهتر آهي!

🇸🇦 عربي 🇧🇩 بنگالي 🇩🇪 جرمن 🇺🇸 انگريزي 🇪🇸 هسپانوي 🇫🇷 فرانسيسي 🇹🇩 هوسا 🇮🇳 هندي 🇮🇩 انڊونيشيا 🇮🇹 اطالوي 🇯🇵 جاپاني 🇰🇷 ڪورين 🇮🇳 مارانٿي 🇵🇱 پولش 🇧🇷 پرتگالي 🇷🇺 روسي 🇰🇪 سواهلي 🇵🇭 Tagalog 🇹🇷 ترڪي 🇵🇰 اردو 🇻🇳 ويٽنامي 🇨🇳 چيني

ڇا README جي ھن ترجمي ۾ ڪو مسئلو آھي؟

هي خاص ترجمو اصل جو README غلطي ٿي سگھي ٿي -- اصلاح تمام ڀليڪار آھي! مھرباني ڪري موڪليو pull request on GitHub, يا جيڪڏهن توهان اهو ڪرڻ ۾ آرام نه آهيو، هڪ مسئلو کوليو

جڏهن توهان ترجمي بابت هڪ نئون GitHub مسئلو ٺاهيو، مهرباني ڪري ڪريو:

  • صفحي جو URL شامل ڪريو (براؤزر ايڊريس بار مان ڪاپي/پيسٽ ڪريو)
  • صحيح متن شامل ڪريو جيڪو غلط آهي (براؤزر مان ڪاپي / پيسٽ ڪريو)
  • مهرباني ڪري وضاحت ڪريو ڇا غلط آهي - ڇا ترجمو غلط آهي؟ ڇا فارميٽنگ ڪنهن طرح ڀڄي وئي آهي؟
  • مھرباني ڪري بھتر ترجمي جي تجويز پيش ڪريو، يا متن کي ڪيئن صحيح شڪل ۾ ھجڻ گھرجي
  • توهان جي مهرباني!

مواد

ذريعو

سپورٽ ۽ فنڊنگ

مان هڪ پروفيشنل اوپن سورس سافٽ ويئر ڊولپر ٿيڻ جي ڪوشش ڪري رهيو آهيان. ۾ ڪم ڪري چڪو آهيان سافٽ ويئر انڊسٽري ڪيترن ئي سالن تائين، مون ڪامياب ڪمپنيون شروع ڪيون آهن ۽ انهن کي عوامي ڪمپنين کي وڪرو ڪيو آهي. تازو مون پنهنجي نوڪري وڃائي ڇڏيو، ۽ مون وٽ حقيقت ۾ ڪو ٻيو ڪم نه آهي

تنهن ڪري مان ڪوشش ڪرڻ وارو آهيان مددگار سافٽ ويئر لکڻ ۽ ڏسو ته اهو ڪم ڪري ٿو

جيڪڏهن توهان هن سافٽ ويئر کي استعمال ڪندي لطف اندوز ڪيو، مون کي تمام گهڻي خوشي ٿي ويندي سڀ کان ننڍو ماهوار حصو Patreon ذريعي

توهان جي مهرباني!

تنصيب

ڪمانڊ لائن ٽول استعمال ڪرڻ لاءِ، انسٽال ڪريو 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

JavaScript اسٽرنگ ريسورس فائل جو ترجمو

توهان جي اسٽرنگ ٽيبل ** لازمي طور تي جاوا اسڪرپٽ فائل ۾ انهن ٻن فارمن مان هڪ ۾ هجي:

ES6 برآمد:

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

CommonJS برآمد

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 اختيار هڪ ڪاما سان ڌار ڪيل فهرست آهي ISO ٻوليءَ جي ڪوڊن جي Google ترجمي جي مدد سان

جيڪڏهن آئوٽ پٽ فائل اڳ ۾ ئي موجود آهي، اهو طئي ڪيو ويندو ته ڪهڙيون چابيون اڳ ۾ ئي موجود آهن. موجوده ڪنجيون ترجمو نه ڪيون وينديون. گم ٿيل ڪنجي لاءِ ترجمو ٺاهيا ويندا ۽ شامل ڪيا ويندا JS اعتراض جي آخر تائين. پوري فائل کي هميشه ٻيهر لکيو ويو آهي.

سڀني ڪنجين کي ٻيهر ترجمو ڪرڻ لاءِ، استعمال ڪريو -f / --force اختيار

ٽيڪسٽ فائلن جي ڊاريڪٽري جو ترجمو

توھان پڻ ترجمو ڪري سگھوٿا فائلن جي ڊاريڪٽري. hokeyization recursively هر جو دورو ڪندو فائل ڊاريڪٽري ۾ ۽ ان جي مواد کي گوگل ترجمو ذريعي هلائي، ۽ آئوٽ کي محفوظ ڪريو هڪ الڳ ڊاريڪٽري وڻ ۾ هڪ جيتري نالي واري فائل ڏانهن

جڏھن توھان جي ترجمي جو ھدف ڊاريڪٽري آھي، اھو موڊ فعال آھي

-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/de' ڊائريڪٽريون ٺاهي وينديون (جيڪڏهن اهي موجود نه هجن)
  • ھر فائل templates/email/en ۾ ترجمو ڪيو ويندو اسپيني ۽ جرمن ۾
  • موجوده ٻاھرين فائلن کي ٻيهر پيدا نه ڪيو ويندو جيستائين توھان استعمال نه ڪندا -f / --force
  • توهان هڪجهڙائي واري ڊاريڪٽري جي جوڙجڪ ۽ فائلن سان ختم ڪندا es ۽ de جي اندر جيئن توهان وٽ en هيٺ آهي.

ٻيا اختيار

خشڪ ڊوڙ

پاس -n / --dry-run ڏيکارڻ لاءِ ته ڇا ڪيو ويندو، پر اصل ۾ ڪي به API ڪال نه ڪريو يا ڪا فائلون نه لکو

زور

پاس -f / --force هميشه ترجمن کي ٻيهر ٺاهڻ لاءِ، جيتوڻيڪ اهي اڳ ۾ ئي موجود آهن

ملائي

پاس -m / --match فائلن کي محدود ڪرڻ لاءِ پروسيس ٿيل جڏهن ڊاريڪٽري موڊ ۾ هلندي

توھان ھميشہ پنھنجي ماخذ ڊاريڪٽري ۾ *ھر * فائل کي توھان جي ٽارگيٽ ڊاريڪٽري ۾ ترجمو ڪرڻ نٿا چاھيو

-m / --match اختيار جي قيمت هڪ ريجڪس آهي (شيل جي حوالن جي ضابطن کان خبردار!) جيڪو بيان ڪري ٿو ڪهڙيون فائلون ترجمو ڪرڻ گهرجن

جڏهن شڪ هجي، توهان هن اختيار کي گڏ ڪري سگهو ٿا -n / --dry-run سان اهو ڏسڻ لاءِ ته ڪهڙيون فائلون ترجمو ڪيون وينديون

شامل نه آهي

ڪڏهن ڪڏهن توهان جو -m تمام گهڻين فائلن سان ملندو آهي. واضح طور تي خارج ڪرڻ لاء -e / --excludes اختيار استعمال ڪريو فائلون جيڪي ٻي صورت ۾ ملن ها

توھان ڪيترن ئي ريجڪسز کي لسٽ ڪري سگھو ٿا، جڳن سان الڳ ٿيل

ھڪڙو عام استعمال ٿيندو: --excludes node_modules dist \.git build tmp

دستي

ترجمي لاءِ تارن ۾ ٿي سگھي ٿو {{ handlebars }} ٽيمپليٽ، يا ته ٻه يا ٽي گھڙيل ڪڙيون

توهان شايد * نه ٿا چاهيو ته انهن ٽيمپليٽس جي اندر جو مواد ترجمو ڪيو وڃي

-H / --handlebars جھنڊو پاس ڪريو، ۽ {{ ... }} جي اندر ڪا به شيءِ ترجمو نه ڪئي ويندي

مارڪ ڊائون

مارڪ ڊائون نه ئي متن آهي ۽ نه ئي html، تنهنڪري گوگل ترجمو ان سان گڏ ڪجهه مشڪلات آهي

-M / --markdown مارڪ ڊائون فائلن لاءِ خاص ھينڊلنگ کي قابل بڻائي ٿو

مارڪ ڊائون فائلن سان، جيڪڏهن توهان -M پرچم استعمال نٿا ڪريو، توهان شايد اهي مسئلا ڳوليندا.

  • ٽٽل ڳنڍيون. ترجمي ۾، هڪ اسپيس ڪردار ظاهر ٿئي ٿو بعد ۾ هڪ مارڪ ڊائون لنڪ وضاحت ختم ٿيڻ کان پوءِ ( ] سان ) پر ان کان اڳ جو ٽارگيٽ لنڪ شروع ٿئي ( ( سان) . ان جي ڪري مارڪ ڊائون غلط طور تي رينڊر ٿئي ٿو، ۽ لنڪ ٽوڙيو ويو آهي جڏهن دستاويز کي ڏسڻ.
  • ڪوڊ بلاڪ ترجمو ڪيو وڃي. گوگل ترجمي کي خبر ناهي ته ڪهڙي مارڪ ڊائون کي ڪوڊ سمجهي ٿو ۽ ڇا نٿو ڪري
  • داخل ٿيل ڪوڊ بلاڪ لاءِ غلط فاصلو. ترجمي ۾ فاصلو محفوظ ڪرڻ ڏکيو آهي
  • backticks جي اندر جون شيون ترجمو ٿي وينديون، جڏهن توهان لڳ ڀڳ هميشه چاهيو ٿا ته اهي لفظي قدر هجن

جڏهن -M / --markdown پرچم کي فعال ڪيو ويو آهي:

  • نموني ]( کي ڳنڍيو ويندو ](
  • هڪ "ترجمو نه" ريپر انڊينٽ ٿيل ڪوڊ بلاڪ جي چوڌاري رکيل هوندو، مناسب انڊينٽيشن کي محفوظ ڪندي ۽ يقيني بڻائيندو ته اهي ترجمو نه ڪيا ويا آهن
  • هڪ "ترجمو نه آهي" لفافي کي متن جي چوڌاري backticks جي اندر رکيل هوندو انهي کي يقيني بڻائڻ ته اهي ترجمو نه ڪيا ويا آهن

پروسيس-جيئن

عام طور تي هر شي کي سادي متن جي طور تي پروسيس ڪيو ويندو آهي

جيڪڏهن توهان جو مواد HTML آهي، اهو خراب ٿي ويندو جيستائين توهان -p html / --process-as html اختيار پاس نه ڪندا

فلٽر

جرئتمندن لاءِ: ڊاريڪٽري ۾ فائلن کي پروسيس ڪندي، توھان پاس ڪري سگھو ٿا -F / --filter اختيار آئوٽ پٽ کي فلٽر ڪرڻ کان اڳ ان کي فائل سسٽم ۾ لکيو وڃي

ھن اختيار جي قيمت ھڪڙي JS فائل ڏانھن ھڪڙو رستو ھجڻ گھرجي جيڪو ھڪڙي فنڪشن کي برآمد ڪري ٿو جيڪو نالو filter

filter فنڪشن لازمي طور تي async هجڻ گهرجي ڇو ته ان تي await سڏيو ويندو

فائلن کي ڊسڪ تي لکڻ کان اڳ، سمورو فائل مواد هڪ اسٽرنگ جي طور تي filter فنڪشن ڏانهن منتقل ڪيو ويندو.

واپسي جي قيمت filter فنڪشن مان آهي جيڪو اصل ۾ ذخيرو ڏانهن لکيو ويندو

ان ڪري، توهان وٽ مڪمل ڪنٽرول آهي جيڪو آخر ۾ لکيو ويندو

filter اسڪرپٽ کي هيٺين جڳهن ۾ .js ويندو (جي ايس سان گڏ فلٽر ۾ شامل ڪيو ويندو نالو، جيستائين اهو اڳ ۾ ئي ختم نه ٿئي .js )

  • موجوده ڊاريڪٽري
  • موجوده ڊاريڪٽري اندر .hokey-filters نالي هڪ ڊاريڪٽري
  • هڪ ڊاريڪٽري نالي ${HOME}/.hokey-filters ، جتي ${HOME} موجوده استعمال ڪندڙ جي گهر ڊاريڪٽري آهي
  • بلٽ ان فلٽر ڊاريڪٽري

فلٽر پيٽرولر

filter اسٽرنگ ڪيترائي لفظ ٿي سگھن ٿا. انهي حالت ۾، پهريون لفظ فلٽر جو نالو آهي، ۽ باقي لفظن کي filter فنڪشن ڏانهن دليلن طور منظور ڪيو ويندو

مدد

مدد ڏيکارڻ لاءِ -h / --help استعمال ڪريو

JSON بيچ حڪم

-j / --json اختيار سان، توهان ڪيترن ئي هموار hokey حڪمن کي هلائي سگهو ٿا

ڪنوينشن موجب ھن فائل کي hokey.json ، پر توھان ان جو نالو ڏيئي سگھو ٿا جيڪو توھان چاھيو

جيڪڏهن توهان هڪ ڊاريڪٽري کي -j اختيار طور پاس ڪيو، hokey ان ڊاريڪٽري ۾ 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'، 'markdown'، 'text'، يا فائل جو رستو توهان جي پنهنجي HandlebarsJS ٽيمپليٽ

جيڪڏهن توهان پنهنجي پنهنجي ٽيمپليٽ جي وضاحت ڪريو ٿا، توهان کي پڻ هڪ فائل (ڊائريڪٽري نه) جي وضاحت ڪرڻ گهرجي -I / --index لاءِ اختيار

ٻولين جي ترجمي ۾ مزو وٺو!