Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 30.2 KB

README.md

File metadata and controls

380 lines (276 loc) · 30.2 KB

हॉकीलायझेशन

मी माझे संपूर्ण अॅप किंवा साइट Google Translate द्वारे का चालवू शकत नाही आणि दुसर्‍या भाषेत मूलभूत भाषांतर का मिळवू शकत नाही?

आता तू करू शकतेस!

hokeylization हे नाव पोर्टमॅन्टेउ आहे, ज्याचा अर्थ 'होकी लोकॅलायझेशन' आहे.

हे काहीसे हटके आहे कारण ते खूप सोपे आहे: ते Google Translate ला स्ट्रिंग पाठवते

आणि हे सोपे आहे, तरीही खूप शक्तिशाली आहे. यात HTML दस्तऐवजांसाठी विशेष समर्थन आहे, HandlebarsJS टेम्पलेट, आणि मार्कडाउन फाइल.

तुम्ही भाषांतर करू शकता:

  • संदेश असलेली JavaScript ऑब्जेक्ट
  • कितीही फाइल्स किंवा डिरेक्टरीज, नेहमी आवर्तीने डिरेक्टरी ट्रॅव्हर्स करतात

हे दुसऱ्या भाषेत वाचा

हा README.md दस्तऐवज हॉकीलायझेशन टूल वापरून भाषांतरित करण्यात आला आहे Google Translate द्वारे समर्थित प्रत्येक भाषा!

मला खात्री आहे की ते परिपूर्ण नाही, परंतु मला आशा आहे की ते काहीही नसण्यापेक्षा चांगले आहे!

🇸🇦 अरबी 🇧🇩 बंगाली 🇩🇪 जर्मन 🇺🇸 इंग्रजी 🇪🇸 स्पॅनिश 🇫🇷 फ्रेंच 🇹🇩 हौसा 🇮🇳 हिंदी 🇮🇩 इंडोनेशियन 🇮🇹 इटालियन 🇯🇵 जपानी 🇰🇷 कोरियन 🇮🇳 मराठी 🇵🇱 पोलिश 🇧🇷 पोर्तुगीज 🇷🇺 रशियन 🇰🇪 स्वाहिली 🇵🇭 Tagalog 🇹🇷 तुर्की 🇵🇰 उर्दू 🇻🇳 व्हिएतनामी 🇨🇳 चीनी

README च्या या भाषांतरात काही अडचण आहे का?

मूळ README चे हे विशिष्ट भाषांतर सदोष असू शकतात -- दुरुस्तीचे स्वागत आहे! कृपया GitHub वर पुल विनंती पाठवा, किंवा तुम्हाला ते करण्यात सोयीस्कर नसल्यास, समस्या उघडा

जेव्हा तुम्ही भाषांतराबद्दल नवीन GitHub समस्या तयार करता, तेव्हा कृपया हे करा:

  • पृष्ठ URL समाविष्ट करा (ब्राउझर अॅड्रेस बारवरून कॉपी/पेस्ट करा)
  • चुकीचा मजकूर समाविष्ट करा (ब्राउझरवरून कॉपी/पेस्ट करा)
  • कृपया काय चुकीचे आहे याचे वर्णन करा -- भाषांतर चुकीचे आहे का? स्वरूपन काहीसे तुटले आहे का?
  • कृपया अधिक चांगल्या भाषांतराची किंवा मजकूर योग्यरित्या कसा फॉरमॅट केला जावा यासाठी सुचवा
  • धन्यवाद!

सामग्री

स्त्रोत

समर्थन आणि निधी

मी एक प्रोफेशनल ओपन सोर्स सॉफ्टवेअर डेव्हलपर बनण्याचा प्रयत्न करत आहे. मध्ये काम करत आहे अनेक वर्षांपासून सॉफ्टवेअर उद्योगात, मी यशस्वी कंपन्या सुरू केल्या आहेत आणि त्या सार्वजनिक कंपन्यांना विकल्या आहेत. अलीकडे मी माझी नोकरी गमावली, आणि माझ्याकडे खरोखर दुसरे कोणतेही काम नाही

म्हणून मी उपयुक्त सॉफ्टवेअर लिहिण्याचा प्रयत्न करणार आहे आणि ते कार्य करते का ते पाहणार आहे

जर तुम्हाला हे सॉफ्टवेअर वापरण्यास आनंद वाटत असेल, तर मला अगदी आनंद होईल सर्वात लहान पॅट्रिऑनद्वारे मासिक योगदान

धन्यवाद!

स्थापना

कमांड लाइन टूल वापरण्यासाठी, 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 द्वारे रनटाइमवर लोड केले जातील

JavaScript स्ट्रिंग रिसोर्स फाइलचे भाषांतर करणे

तुमची स्ट्रिंग सारणी आवश्यक 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 Translate द्वारे समर्थित

आउटपुट फाइल आधीपासून अस्तित्वात असल्यास, कोणत्या की आधीच अस्तित्वात आहेत हे निर्धारित करण्यासाठी त्याची तपासणी केली जाईल. विद्यमान कीचे भाषांतर केले जाणार नाही. गहाळ की साठी भाषांतरे तयार केली जातील आणि जोडली जातील जेएस ऑब्जेक्टच्या शेवटी. संपूर्ण फाइल नेहमी पुन्हा लिहिली जाते.

सर्व की पुन्हा भाषांतरित करण्यासाठी, -f / --force पर्याय वापरा

मजकूर फाइल्सच्या निर्देशिकेचे भाषांतर करणे

तुम्ही फाइल्सच्या डिरेक्ट्रीचे भाषांतर देखील करू शकता. हॉकीलायझेशन प्रत्येकाला वारंवार भेट देईल डिरेक्टरीमध्ये फाइल करा आणि त्यातील मजकूर Google Translate द्वारे चालवा आणि आउटपुट जतन करा वेगळ्या डिरेक्टरी ट्रीमधील समान नावाच्या फाइलवर

जेव्हा तुमच्या भाषांतराचे लक्ष्य निर्देशिका असते, तेव्हा हा मोड सक्षम केला जातो

-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 पर्यायाचे मूल्य हे regex आहे (शेल अवतरण नियमांपासून सावध रहा!) जे निर्दिष्ट करते कोणत्या फायली अनुवादित केल्या पाहिजेत

शंका असल्यास, कोणत्या फाइल्सचे भाषांतर केले जाईल हे पाहण्यासाठी तुम्ही हा पर्याय -n / --dry-run सह एकत्र करू शकता

वगळले

काहीवेळा तुमचे -m बर्‍याच फाइल्सशी जुळते. स्पष्टपणे वगळण्यासाठी -e / --excludes पर्याय वापरा फायली ज्या अन्यथा जुळल्या असत्या

तुम्ही रिक्त स्थानांद्वारे विभक्त केलेल्या एकाधिक regexes सूचीबद्ध करू शकता

एक सामान्य वापर असा असेल: --excludes node_modules dist \.git build tmp

हँडलबार

भाषांतर करण्यासाठी स्ट्रिंगमध्ये {{ handlebars }} टेम्पलेट्स असू शकतात, एकतर दोन किंवा तीन कुरळे-ब्रेसेससह

त्या टेम्प्लेटमधील सामग्रीचे भाषांतर व्हावे असे तुम्हाला कदाचित नको आहे

-H / --handlebars ध्वज पास करा आणि {{ ... }} मधील काहीही भाषांतरित केले जाणार नाही

मार्कडाउन

मार्कडाउन हा मजकूर किंवा एचटीएमएल नाही, त्यामुळे गुगल ट्रान्सलेटला त्यात काही अडचणी आहेत

-M / --markdown ध्वज मार्कडाउन फायलींसाठी विशेष हाताळणी सक्षम करते

मार्कडाउन फाइल्ससह, तुम्ही -M ध्वज वापरत नसल्यास, तुम्हाला कदाचित या समस्या आढळतील:

  • तुटलेले दुवे. भाषांतरात, मार्कडाउन लिंक वर्णन संपल्यानंतर स्पेस कॅरेक्टर दिसतो ( ] सह) परंतु त्याची लक्ष्य लिंक सुरू होण्यापूर्वी ( ( सह). यामुळे मार्कडाउन चुकीचे रेंडर होते आणि लिंक दस्तऐवज पाहताना तुटलेले आहे.
  • कोड ब्लॉक्सचे भाषांतर केले जाते. गुगल ट्रान्सलेटला माहित नाही की मार्कडाउन काय कोड मानतो आणि काय नाही
  • इंडेंटेड कोड ब्लॉक्ससाठी चुकीचे अंतर. भाषांतरात अंतर राखणे कठीण आहे
  • backticks च्या आतील गोष्टी अनुवादित केल्या जातील, जेव्हा तुम्‍हाला जवळजवळ नेहमीच ती शाब्दिक मूल्ये हवी असतात

जेव्हा -M / --markdown ध्वज सक्षम केला जातो:

  • पॅटर्न ]( कंडेन्स्ड असेल ]( अशा प्रकारे तुटलेल्या मार्कडाउन लिंक्सचे निराकरण करणे
  • "नो ट्रान्सलेट" रॅपर इंडेंटेड कोड ब्लॉक्सभोवती ठेवला जाईल, योग्य इंडेंटेशन जतन करून आणि ते भाषांतरित केलेले नाहीत याची खात्री करून
  • मजकुराचे भाषांतर केलेले नाही याची खात्री करण्यासाठी backticks मधील मजकुराभोवती "अनुवाद नाही" रॅपर ठेवले जाईल

प्रक्रिया-म्हणून

साधारणपणे प्रत्येक गोष्टीवर साध्या मजकुराची प्रक्रिया केली जाते

तुमचा आशय एचटीएमएल असल्यास, तुम्ही -p html / --process-as html पर्याय पास केल्याशिवाय ती गोंधळात टाकली जाईल

फिल्टर

साहसी व्यक्तींसाठी: निर्देशिकेतील फाइल्सवर प्रक्रिया करताना, तुम्ही -F / --filter पर्याय पास करू शकता. आउटपुट फाइलसिस्टमवर लिहिण्यापूर्वी फिल्टर करण्यासाठी

या पर्यायाचे मूल्य filter नावाचे फंक्शन निर्यात करणार्‍या JS फाईलचा मार्ग असणे आवश्यक आहे

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"
      }
    ]
}

एकाधिक इनपुट फाइल्स

या उदाहरणाप्रमाणे, एकल पथ 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 साठी फाइल (निर्देशिका नव्हे) देखील निर्दिष्ट करणे आवश्यक आहे. पर्याय

भाषांचे भाषांतर करण्यात मजा करा!