Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 30.4 KB

README.md

File metadata and controls

380 lines (276 loc) · 30.4 KB

হোকিলাইজেশন

আমি কেন Google অনুবাদের মাধ্যমে আমার পুরো অ্যাপ বা সাইট চালাতে পারি না এবং অন্য ভাষায় একটি মৌলিক অনুবাদ পেতে পারি না?

এখন তুমি পার!

hokeylization নামটি একটি পোর্টম্যান্টো, যার অর্থ 'হকি স্থানীয়করণ'

এটি কিছুটা হকি কারণ এটি খুব সহজ: এটি Google অনুবাদে স্ট্রিং পাঠায়

এবং এটি সহজ, তবুও খুব শক্তিশালী। এটি এইচটিএমএল নথিগুলির জন্য বিশেষ সমর্থন রয়েছে, HandlebarsJS টেমপ্লেট, এবং মার্কডাউন ফাইল।

আপনি অনুবাদ করতে পারেন:

  • একটি জাভাস্ক্রিপ্ট অবজেক্ট যাতে বার্তা থাকে
  • যেকোন সংখ্যক ফাইল বা ডিরেক্টরি, সবসময় ডিরেক্টরিগুলোকে আবর্তিতভাবে অতিক্রম করে

এটি অন্য ভাষায় পড়ুন

এই README.md নথিটি অনুবাদ করা হয়েছে, হোকিলাইজেশন টুল ব্যবহার করে, এতে Google অনুবাদ দ্বারা সমর্থিত প্রতিটি ভাষা!

আমি নিশ্চিত যে এটি নিখুঁত নয়, তবে আমি আশা করি এটি কিছুই না হওয়ার চেয়ে ভাল!

🇸🇦 আরবি 🇧🇩 বাংলা 🇩🇪 জার্মান 🇺🇸 ইংরেজি 🇪🇸 স্প্যানিশ 🇫🇷 ফরাসি 🇹🇩 হাউসা 🇮🇳 হিন্দি 🇮🇩 ইন্দোনেশিয়ান 🇮🇹 ইতালীয় 🇯🇵 জাপানি 🇰🇷 কোরিয়ান 🇮🇳 মারান্থি 🇵🇱 পোলিশ 🇧🇷 পর্তুগিজ 🇷🇺 রাশিয়ান 🇰🇪 সোয়াহিলি 🇵🇭 তাগালগ 🇹🇷 তুর্কি 🇵🇰 উর্দু 🇻🇳 ভিয়েতনামী 🇨🇳 চীনা

এই README এর অনুবাদে কি কোন সমস্যা আছে?

মূল README এর এই বিশেষ অনুবাদ ত্রুটি থাকতে পারে -- সংশোধনগুলি খুব স্বাগত জানাই! অনুগ্রহ করে একটি [GitHub-এ টেনে নেওয়ার অনুরোধ] পাঠান (https://github.com/cobbzilla/hokeylization/pulls), অথবা আপনি যদি এটি করতে স্বাচ্ছন্দ্যবোধ না করেন, একটি সমস্যা খুলুন

যখন আপনি একটি অনুবাদ সম্পর্কে একটি নতুন 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 অনুবাদ প্রকল্প সনাক্ত করতে GOOGLE_TRANSLATE_PROJECT_ID পরিবেশ পরিবর্তনশীল সেট করুন

আপনার ডাউনলোড করা JSON শংসাপত্রের জন্য GOOGLE_APPLICATION_CREDENTIALS পরিবেশ পরিবর্তনশীল সেট করুন Google ক্লাউডে প্রমাণীকরণ কীভাবে কাজ করে তা খুঁজে বের করার পরে (এটি মজাদার হতে পারে)

আপনি যদি সোর্স কোড থেকে চালাচ্ছেন, তাহলে আপনি এগুলিকে উৎসের একটি .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 বিকল্পটি ISO ভাষা কোডগুলির একটি কমা দ্বারা পৃথক করা তালিকা Google অনুবাদ দ্বারা সমর্থিত

যদি আউটপুট ফাইলটি ইতিমধ্যেই বিদ্যমান থাকে তবে কোন কীগুলি ইতিমধ্যেই বিদ্যমান তা নির্ধারণ করতে এটি পরীক্ষা করা হবে। বিদ্যমান কীগুলি অনুবাদ করা হবে না৷ অনুপস্থিত কীগুলির অনুবাদ তৈরি করা হবে এবং যুক্ত করা হবে JS অবজেক্টের শেষ পর্যন্ত। সম্পূর্ণ ফাইলটি সর্বদা পুনরায় লেখা হয়।

জোর করে সমস্ত কী পুনরায় অনুবাদ করতে, -f / --force বিকল্পটি ব্যবহার করুন

পাঠ্য ফাইলগুলির একটি ডিরেক্টরি অনুবাদ করা হচ্ছে

আপনি ফাইলগুলির একটি ডিরেক্টরিও অনুবাদ করতে পারেন। hokeylization recursively প্রতি পরিদর্শন করা হবে ডিরেক্টরিতে ফাইল করুন এবং Google অনুবাদের মাধ্যমে এর বিষয়বস্তু চালান এবং আউটপুট সংরক্ষণ করুন একটি পৃথক ডিরেক্টরি গাছে একটি অভিন্ন নামযুক্ত ফাইলে

যখন আপনার অনুবাদের লক্ষ্য একটি ডিরেক্টরি, এই মোড সক্রিয় করা হয়

-o / --outfile বিকল্পটি আউটপুট ডিরেক্টরি নির্দিষ্ট করে

বড় সতর্কতা: ডিরেক্টরি অনুবাদ করার সময়, **কোন আউটপুট ডিরেক্টরি উল্লেখ করবেন না যে আপনার ইনপুট ডিরেক্টরির মধ্যে আছে! আপনি যদি এটি করেন তবে আপনি করবেন:

  • অসীম পুনরাবৃত্তি প্ররোচিত করুন
  • আপনার Google বিল চালান
  • আপনার ডিস্ক পূরণ করুন
  • কম মজা করুন

এখানে কী করা উচিত নয় এর একটি উদাহরণ রয়েছে:

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 বিকল্পের মান হল একটি রেজেক্স (শেল উদ্ধৃতি নিয়ম থেকে সাবধান!) যা নির্দিষ্ট করে কোন ফাইল অনুবাদ করা উচিত

সন্দেহ হলে, কোন ফাইলগুলি অনুবাদ করা হবে তা দেখতে আপনি এই বিকল্পটি -n / --dry-run সাথে একত্রিত করতে পারেন

বাদ

কখনও কখনও আপনার -m অনেকগুলি ফাইলের সাথে মেলে। স্পষ্টভাবে বাদ দিতে -e / --excludes বিকল্পটি ব্যবহার করুন অন্যথায় মিলে যেত যে ফাইল

আপনি স্পেস দ্বারা পৃথক করা একাধিক রেজেক্স তালিকা করতে পারেন

একটি সাধারণ ব্যবহার হবে: --excludes node_modules dist \.git build tmp

হ্যান্ডেলবার

অনুবাদের স্ট্রিংগুলিতে {{ handlebars }} টেমপ্লেট থাকতে পারে, হয় দুই বা তিনটি কোঁকড়া-বন্ধনী সহ

আপনি সম্ভবত এই টেমপ্লেটগুলির মধ্যে থাকা জিনিসগুলি অনুবাদ করতে চান না

-H / --handlebars পতাকাটি পাস করুন, এবং {{ ... }} এর মধ্যে থাকা কিছু অনুবাদ করা হবে না

মার্কডাউন

মার্কডাউন পাঠ্য বা এইচটিএমএল নয়, তাই গুগল ট্রান্সলেট এর সাথে কিছু অসুবিধা রয়েছে

-M / --markdown পতাকা মার্কডাউন ফাইলের জন্য বিশেষ হ্যান্ডলিং সক্ষম করে

মার্কডাউন ফাইলগুলির সাথে, আপনি যদি -M পতাকা ব্যবহার না করেন, আপনি সম্ভবত এই সমস্যাগুলি খুঁজে পাবেন:

  • ভাঙা লিঙ্ক। অনুবাদে, একটি মার্কডাউন লিঙ্ক বর্ণনা শেষ হওয়ার পরে একটি স্পেস অক্ষর উপস্থিত হয় ( ] সহ) কিন্তু এর লক্ষ্য লিঙ্কটি শুরু হওয়ার আগে ( ( দিয়ে)। এর ফলে মার্কডাউন ভুলভাবে রেন্ডার হয় এবং লিঙ্কটি ডকুমেন্ট দেখার সময় ভাঙ্গা হয়।
  • কোড ব্লক অনুবাদ করা হয়. Google অনুবাদ জানে না কোন মার্কডাউন কোড বিবেচনা করে এবং কোনটি নয়
  • ইন্ডেন্টেড কোড ব্লকের জন্য ভুল ব্যবধান। অনুবাদে ব্যবধান রক্ষা করা কঠিন
  • 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সেই ডিরেক্টরিতে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"
      }
    ]
}

একাধিক ইনপুট ফাইল

একটি একক পাথ infile infileএর পরিবর্তেinfiles` হিসাবে ফাইল পাথের একটি অ্যারে পাস করুন, যেমন এই উদাহরণে:

{
  ... [
    {
      "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 এর জন্য একটি ফাইল (একটি ডিরেক্টরি নয়) উল্লেখ করতে হবে। বিকল্প

ভাষা অনুবাদ করার জন্য একটি মজার সময় কাটান!