Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 30.5 KB

README.md

File metadata and controls

380 lines (276 loc) · 30.5 KB

Hokeyization

म किन Google Translate मार्फत मेरो सम्पूर्ण एप वा साइट चलाउन सक्दिन र अर्को भाषामा आधारभूत अनुवाद प्राप्त गर्न सक्दिन?

*** अब, तपाईं सक्नुहुन्छ! ***

नाम hokeylization एक पोर्टमान्टेउ हो, जसको अर्थ 'होकी स्थानीयकरण' हो।

यो केहि हकी छ किनभने यो धेरै सरल छ: यसले गुगल अनुवादमा स्ट्रिङहरू पठाउँछ

र यो सरल छ, तर पनि धेरै शक्तिशाली। यसमा HTML कागजातहरूको लागि विशेष समर्थन छ, HandlebarsJS टेम्प्लेटहरू, र मार्कडाउन फाइलहरू।

तपाईं अनुवाद गर्न सक्नुहुन्छ:

  • सन्देशहरू भएको JavaScript वस्तु
  • फाइलहरू वा डाइरेक्टरीहरूको कुनै पनि संख्या, सधैं पुनरावर्ती डाइरेक्टरीहरू पार गर्दै

यो अर्को भाषामा पढ्नुहोस्

यो README.md कागजात होकीलाइजेशन उपकरण प्रयोग गरेर अनुवाद गरिएको छ Google अनुवादद्वारा समर्थित हरेक भाषा!

म निश्चित छु कि यो उत्तम छैन, तर मलाई आशा छ कि यो केहि भन्दा राम्रो छ!

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

README को यो अनुवादमा कुनै समस्या छ?

मूल README को यो विशेष अनुवाद त्रुटि हुन सक्छ -- सुधार धेरै स्वागत छ! कृपया 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 अनुवाद परियोजना पहिचान गर्न GOOGLE_TRANSLATE_PROJECT_ID वातावरण चर सेट गर्नुहोस्

तपाईँले डाउनलोड गर्नुभएको JSON प्रमाणहरूमा GOOGLE_APPLICATION_CREDENTIALS वातावरण चर सेट गर्नुहोस् गुगल क्लाउडमा प्रमाणीकरणले कसरी काम गर्छ भनेर पत्ता लगाएपछि (यो रमाइलो हुन सक्छ)

यदि तपाइँ स्रोत कोडबाट चल्दै हुनुहुन्छ भने, तपाइँ यसलाई स्रोतमा .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 द्वारा समर्थित

यदि आउटपुट फाइल पहिले नै अवस्थित छ भने, कुन कुञ्जीहरू पहिल्यै अवस्थित छन् भनेर निर्धारण गर्न जाँच गरिनेछ। अवस्थित कुञ्जीहरू अनुवाद गरिने छैन। छुटेका कुञ्जीहरूका लागि अनुवादहरू उत्पन्न हुनेछन् र थपिनेछन् JS वस्तुको अन्त्यमा। सम्पूर्ण फाइल सधैं पुन: लेखिएको छ।

सबै कुञ्जीहरूलाई जबरजस्ती पुन: अनुवाद गर्न, -f / --force विकल्प प्रयोग गर्नुहोस्

पाठ फाइलहरूको डाइरेक्टरी अनुवाद गर्दै

तपाईं फाइलहरूको डाइरेक्टरी पनि अनुवाद गर्न सक्नुहुन्छ। hokeylisation पुनरावृत्ति प्रत्येक भ्रमण गर्नेछ डाइरेक्टरीमा फाइल गर्नुहोस् र Google अनुवादक मार्फत यसको सामग्रीहरू चलाउनुहोस्, र आउटपुट बचत गर्नुहोस् छुट्टै डाइरेक्टरी रूखमा समान नामको फाइलमा

जब तपाईंको अनुवादको लक्ष्य डाइरेक्टरी हो, यो मोड सक्षम हुन्छ

-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/estemplates/email/de डाइरेक्टरीहरू सिर्जना गरिनेछन् (यदि तिनीहरू अवस्थित छैनन् भने)
  • प्रत्येक फाइल templates/email/en मा स्पेनिश र जर्मनमा अनुवाद गरिनेछ
  • तपाईले -f / --force प्रयोग नगरेसम्म अवस्थित आउटपुट फाइलहरू पुन: उत्पन्न हुने छैनन्।
  • तपाईं एक समान डाइरेक्टरी ढाँचा र फाइलहरू esde भित्रका साथ समाप्त हुनुहुनेछ जुन तपाईंसँग 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 झण्डा पास गर्नुहोस्, र {{ ... }} भित्रको कुनै पनि कुरा अनुवाद गरिने छैन।

चिन्ह लगाउनु

मार्कडाउन न त पाठ हो न html, त्यसैले Google अनुवादकसँग केही कठिनाइहरू छन्

-M / --markdown फ्ल्यागले मार्कडाउन फाइलहरूको लागि विशेष ह्यान्डलिङ सक्षम गर्दछ

मार्कडाउन फाइलहरूसँग, यदि तपाईंले -M झण्डा प्रयोग गर्नुहुन्न भने, तपाईंले यी समस्याहरू फेला पार्नुहुनेछ:

  • बिग्रिएको लिङ्कहरू। अनुवादमा, मार्कडाउन लिङ्क विवरण समाप्त भएपछि स्पेस क्यारेक्टर देखिन्छ ( ] सँग) तर यसको लक्षित लिङ्क सुरु हुनु अघि ( ( सँग)। यसले मार्कडाउनलाई गलत तरिकाले रेन्डर गर्न, र लिङ्कलाई निम्त्याउँछ। कागजात हेर्दा तोडिएको छ।
  • कोड ब्लकहरू अनुवादित हुन्छन्। गुगल ट्रान्सलेटले कुन मार्कडाउनलाई कोड मान्छ र के गर्दैन भन्ने थाहा छैन
  • इन्डेन्टेड कोड ब्लकहरूको लागि गलत स्पेसिङ। अनुवादमा स्पेसिङ सुरक्षित गर्न गाह्रो छ
  • backticks भित्रका चीजहरू अनुवादित हुनेछन्, जब तपाईं प्रायः तिनीहरूलाई शाब्दिक मानहरू हुन चाहनुहुन्छ

जब -M / --markdown झण्डा सक्षम हुन्छ:

  • ढाँचा ]( कन्डेन्स्ड हुनेछ ]( यसरी टुटेको मार्कडाउन लिङ्कहरू फिक्स गर्दै
  • एक "नो ट्रान्सलेट" र्‍यापरलाई इन्डेन्टेड कोड ब्लकहरू वरिपरि राखिनेछ, उचित इन्डेन्टेसन सुरक्षित गर्दै र तिनीहरू अनुवाद नगरिएको सुनिश्चित गर्दै
  • अनुवाद नभएको सुनिश्चित गर्नको लागि backticks भित्र पाठको वरिपरि एउटा "नो ट्रान्सलेट" र्यापर राखिनेछ।

प्रक्रिया-जस्तो

सामान्यतया सबै कुरा सादा पाठको रूपमा प्रशोधन गरिन्छ

यदि तपाईंको सामग्री HTML हो भने, तपाईंले -p html / --process-as html विकल्प पास नगरेसम्म यो खलबलिनेछ।

फिल्टर

साहसिकका लागि: डाइरेक्टरीमा फाइलहरू प्रशोधन गर्दा, तपाईंले -F / --filter विकल्प पास गर्न सक्नुहुन्छ। फाइल प्रणालीमा लेख्नु अघि आउटपुट फिल्टर गर्न

यो विकल्पको मान JS फाइलको बाटो हुनुपर्छ जसले filter नामक प्रकार्य निर्यात गर्छ

filter प्रकार्य async हुनुपर्छ किनभने 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 array मा, तपाईँले 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 को लागी फाइल (डाइरेक्टरी होइन) निर्दिष्ट गर्नुपर्छ। विकल्प

भाषाहरू अनुवाद गर्न रमाईलो गर्नुहोस्!