مان گوگل ٽرانسليٽ ذريعي پنهنجي پوري ايپ يا سائيٽ کي ڇو نه ٿو هلائي سگهان ۽ ڪنهن ٻئي ٻوليءَ ۾ بنيادي ترجمو حاصل ڪري سگهان ٿو؟
*** هاڻي، توهان ڪري سگهو ٿا! ***
نالو hokeylization
هڪ portmanteau آهي، جنهن جي معني آهي 'hokey localization'
اھو ڪجھھ ھوڪي آھي ڇاڪاڻ ته اھو تمام سادو آھي: اھو Google Translate ڏانھن تار موڪلي ٿو
۽ اهو سادو آهي، اڃا به تمام طاقتور. ان ۾ HTML دستاويزن لاءِ خاص سپورٽ آهي، HandlebarsJS ٽيمپليٽ، ۽ Markdown فائلون.
توھان ترجمو ڪري سگھو ٿا:
- هڪ جاوا اسڪرپٽ اعتراض جنهن ۾ پيغام شامل آهن
- فائلن يا ڊائريڪٽرن جو ڪو به تعداد، هميشه ڊائريڪٽرن کي بار بار ڪندي
ھي README.md دستاويز ترجمو ڪيو ويو آھي، استعمال ڪندي ھوڪلائيزيشن ٽول پاڻ، ۾ گوگل ترجمي جي مدد سان هر ٻولي!
مون کي پڪ آهي ته اهو مڪمل ناهي، پر مون کي اميد آهي ته اهو ڪجهه به نه کان بهتر آهي!
🇸🇦 عربي 🇧🇩 بنگالي 🇩🇪 جرمن 🇺🇸 انگريزي 🇪🇸 هسپانوي 🇫🇷 فرانسيسي 🇹🇩 هوسا 🇮🇳 هندي 🇮🇩 انڊونيشيا 🇮🇹 اطالوي 🇯🇵 جاپاني 🇰🇷 ڪورين 🇮🇳 مارانٿي 🇵🇱 پولش 🇧🇷 پرتگالي 🇷🇺 روسي 🇰🇪 سواهلي 🇵🇭 Tagalog 🇹🇷 ترڪي 🇵🇰 اردو 🇻🇳 ويٽنامي 🇨🇳 چيني
هي خاص ترجمو اصل جو README غلطي ٿي سگھي ٿي -- اصلاح تمام ڀليڪار آھي! مھرباني ڪري موڪليو pull request on GitHub, يا جيڪڏهن توهان اهو ڪرڻ ۾ آرام نه آهيو، هڪ مسئلو کوليو
جڏهن توهان ترجمي بابت هڪ نئون GitHub مسئلو ٺاهيو، مهرباني ڪري ڪريو:
- صفحي جو URL شامل ڪريو (براؤزر ايڊريس بار مان ڪاپي/پيسٽ ڪريو)
- صحيح متن شامل ڪريو جيڪو غلط آهي (براؤزر مان ڪاپي / پيسٽ ڪريو)
- مهرباني ڪري وضاحت ڪريو ڇا غلط آهي - ڇا ترجمو غلط آهي؟ ڇا فارميٽنگ ڪنهن طرح ڀڄي وئي آهي؟
- مھرباني ڪري بھتر ترجمي جي تجويز پيش ڪريو، يا متن کي ڪيئن صحيح شڪل ۾ ھجڻ گھرجي
- توهان جي مهرباني!
- ذريعو
- [مدد ۽ فنڊنگ](#سپورٽ ۽ فنڊنگ)
- [تنصيب](# تنصيب)
- [سيٽ اپ](# سيٽ اپ)
- جاوا اسڪرپٽ اسٽرنگ ريسورس فائل جو ترجمو
- متن فائلن جي ڊائريڪٽري جو ترجمو
- ٻيا اختيار
- JSON بيچ ڪمانڊز
مان هڪ پروفيشنل اوپن سورس سافٽ ويئر ڊولپر ٿيڻ جي ڪوشش ڪري رهيو آهيان. ۾ ڪم ڪري چڪو آهيان سافٽ ويئر انڊسٽري ڪيترن ئي سالن تائين، مون ڪامياب ڪمپنيون شروع ڪيون آهن ۽ انهن کي عوامي ڪمپنين کي وڪرو ڪيو آهي. تازو مون پنهنجي نوڪري وڃائي ڇڏيو، ۽ مون وٽ حقيقت ۾ ڪو ٻيو ڪم نه آهي
تنهن ڪري مان ڪوشش ڪرڻ وارو آهيان مددگار سافٽ ويئر لکڻ ۽ ڏسو ته اهو ڪم ڪري ٿو
جيڪڏهن توهان هن سافٽ ويئر کي استعمال ڪندي لطف اندوز ڪيو، مون کي تمام گهڻي خوشي ٿي ويندي سڀ کان ننڍو ماهوار حصو 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
توهان جي اسٽرنگ ٽيبل ** لازمي طور تي جاوا اسڪرپٽ فائل ۾ انهن ٻن فارمن مان هڪ ۾ هجي:
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
استعمال ڪريو
-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
لاءِ
اختيار