मी माझे संपूर्ण अॅप किंवा साइट Google Translate द्वारे का चालवू शकत नाही आणि दुसर्या भाषेत मूलभूत भाषांतर का मिळवू शकत नाही?
आता तू करू शकतेस!
hokeylization
हे नाव पोर्टमॅन्टेउ आहे, ज्याचा अर्थ 'होकी लोकॅलायझेशन' आहे.
हे काहीसे हटके आहे कारण ते खूप सोपे आहे: ते Google Translate ला स्ट्रिंग पाठवते
आणि हे सोपे आहे, तरीही खूप शक्तिशाली आहे. यात HTML दस्तऐवजांसाठी विशेष समर्थन आहे, HandlebarsJS टेम्पलेट, आणि मार्कडाउन फाइल.
तुम्ही भाषांतर करू शकता:
- संदेश असलेली JavaScript ऑब्जेक्ट
- कितीही फाइल्स किंवा डिरेक्टरीज, नेहमी आवर्तीने डिरेक्टरी ट्रॅव्हर्स करतात
हा README.md दस्तऐवज हॉकीलायझेशन टूल वापरून भाषांतरित करण्यात आला आहे Google Translate द्वारे समर्थित प्रत्येक भाषा!
मला खात्री आहे की ते परिपूर्ण नाही, परंतु मला आशा आहे की ते काहीही नसण्यापेक्षा चांगले आहे!
🇸🇦 अरबी 🇧🇩 बंगाली 🇩🇪 जर्मन 🇺🇸 इंग्रजी 🇪🇸 स्पॅनिश 🇫🇷 फ्रेंच 🇹🇩 हौसा 🇮🇳 हिंदी 🇮🇩 इंडोनेशियन 🇮🇹 इटालियन 🇯🇵 जपानी 🇰🇷 कोरियन 🇮🇳 मराठी 🇵🇱 पोलिश 🇧🇷 पोर्तुगीज 🇷🇺 रशियन 🇰🇪 स्वाहिली 🇵🇭 Tagalog 🇹🇷 तुर्की 🇵🇰 उर्दू 🇻🇳 व्हिएतनामी 🇨🇳 चीनी
मूळ README चे हे विशिष्ट भाषांतर सदोष असू शकतात -- दुरुस्तीचे स्वागत आहे! कृपया GitHub वर पुल विनंती पाठवा, किंवा तुम्हाला ते करण्यात सोयीस्कर नसल्यास, समस्या उघडा
जेव्हा तुम्ही भाषांतराबद्दल नवीन GitHub समस्या तयार करता, तेव्हा कृपया हे करा:
- पृष्ठ URL समाविष्ट करा (ब्राउझर अॅड्रेस बारवरून कॉपी/पेस्ट करा)
- चुकीचा मजकूर समाविष्ट करा (ब्राउझरवरून कॉपी/पेस्ट करा)
- कृपया काय चुकीचे आहे याचे वर्णन करा -- भाषांतर चुकीचे आहे का? स्वरूपन काहीसे तुटले आहे का?
- कृपया अधिक चांगल्या भाषांतराची किंवा मजकूर योग्यरित्या कसा फॉरमॅट केला जावा यासाठी सुचवा
- धन्यवाद!
- स्रोत
- समर्थन आणि निधी
- स्थापना
- सेटअप
- जावास्क्रिप्ट स्ट्रिंग रिसोर्स फाइलचे भाषांतर करणे
- मजकूर फाइल्सच्या निर्देशिकेचे भाषांतर करणे
- इतर पर्याय
- JSON बॅच कमांड्स
मी एक प्रोफेशनल ओपन सोर्स सॉफ्टवेअर डेव्हलपर बनण्याचा प्रयत्न करत आहे. मध्ये काम करत आहे अनेक वर्षांपासून सॉफ्टवेअर उद्योगात, मी यशस्वी कंपन्या सुरू केल्या आहेत आणि त्या सार्वजनिक कंपन्यांना विकल्या आहेत. अलीकडे मी माझी नोकरी गमावली, आणि माझ्याकडे खरोखर दुसरे कोणतेही काम नाही
म्हणून मी उपयुक्त सॉफ्टवेअर लिहिण्याचा प्रयत्न करणार आहे आणि ते कार्य करते का ते पाहणार आहे
जर तुम्हाला हे सॉफ्टवेअर वापरण्यास आनंद वाटत असेल, तर मला अगदी आनंद होईल सर्वात लहान पॅट्रिऑनद्वारे मासिक योगदान
धन्यवाद!
कमांड लाइन टूल वापरण्यासाठी, 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 फाइलमध्ये या दोनपैकी एका स्वरूपात असावी:
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
वापरा
-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
साठी फाइल (निर्देशिका नव्हे) देखील निर्दिष्ट करणे आवश्यक आहे.
पर्याय