Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 22.9 KB

README.md

File metadata and controls

380 lines (276 loc) · 22.9 KB

Հոկեյլիզացիա

Ինչո՞ւ ես չեմ կարող իմ ամբողջ հավելվածը կամ կայքը գործարկել Google Translate-ի միջոցով և ստանալ հիմնական թարգմանություն այլ լեզվով:

Հիմա կարող ես:

hokeylization » անվանումը պորտմանտո է, որը նշանակում է «հոկեյլի տեղայնացում»

Այն ինչ-որ չափով հուզիչ է, քանի որ շատ պարզ է. այն տողեր է ուղարկում Google Translate-ին

Եվ դա պարզ է, բայց նաև շատ հզոր: Այն ունի հատուկ աջակցություն HTML փաստաթղթերի համար, HandlebarsJS կաղապարներ, և Markdown ֆայլերը:

Դուք կարող եք թարգմանել.

  • JavaScript օբյեկտ, որը պարունակում է հաղորդագրություններ
  • ցանկացած թվով ֆայլեր կամ գրացուցակներ, որոնք միշտ անցնում են ռեկուրսիվ դիրեկտորիաներով

Կարդացեք սա այլ լեզվով

Այս README.md փաստաթուղթը թարգմանվել է հենց hokeylization գործիքի միջոցով Google Translate-ի կողմից աջակցվող յուրաքանչյուր լեզու!

Ես վստահ եմ, որ դա կատարյալ չէ, բայց հուսով եմ, որ ավելի լավ է, քան ոչինչ:

🇸🇦 արաբերեն 🇧🇩 բենգալերեն 🇩🇪 գերմաներեն 🇺🇸 Անգլերեն 🇪🇸 իսպաներեն 🇫🇷 ֆրանսերեն 🇹🇩 Հաուսա 🇮🇳 հինդի 🇮🇩 ինդոնեզերեն 🇮🇹 Իտալերեն 🇯🇵 ճապոներեն 🇰🇷 կորեերեն 🇮🇳 Մարանթի 🇵🇱 լեհերեն 🇧🇷 պորտուգալերեն 🇷🇺 ռուսերեն 🇰🇪 Սուահիլի 🇵🇭 Տագալերեն 🇹🇷 թուրքերեն 🇵🇰 ուրդու 🇻🇳 Վիետնամերեն 🇨🇳 չինարեն

Խնդիր կա՞ README-ի այս թարգմանության հետ:

Բնօրինակի այս թարգմանությունը README կարող է թերի լինել. կամ եթե դա ձեզ հարմար չէ, բացեք խնդիրը

Երբ թարգմանության վերաբերյալ 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_TRANSLATE_PROJECT_ID միջավայրի փոփոխականը՝ ձեր Google Translate նախագիծը նույնականացնելու համար

Սահմանեք GOOGLE_APPLICATION_CREDENTIALS միջավայրի փոփոխականը ձեր ներբեռնած JSON հավատարմագրերին պարզելուց հետո, թե ինչպես է նույնականացումը աշխատում Google ամպի վրա (դա կարող է զվարճալի լինել)

Եթե դուք աշխատում եք սկզբնական կոդից, կարող եք դրանք տեղադրել նաև աղբյուրի .env ֆայլում գրացուցակը դրանք կբեռնվեն գործարկման ժամանակ [dotenv]-ի միջոցով (https://www.npmjs.com/package/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 տարբերակը

Տեքստային ֆայլերի գրացուցակի թարգմանություն

Կարող եք նաև թարգմանել ֆայլերի գրացուցակ: hokeylization-ը ռեկուրսիվորեն կայցելի յուրաքանչյուրը ֆայլը գրացուցակում և գործարկեք դրա բովանդակությունը 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 տարբերակի արժեքը ռեգեքս է (զգույշ եղեք shell մեջբերումների կանոններ!), որը սահմանում է. որ ֆայլերը պետք է թարգմանվեն

Երբ կասկածում եք, կարող եք այս տարբերակը համատեղել -n / --dry-run հետ՝ տեսնելու, թե որ ֆայլերը կթարգմանվեն:

Բացառում է

Երբեմն ձեր -m համընկնում է չափազանց շատ ֆայլերի հետ: Հստակ բացառելու համար օգտագործեք -e / --excludes տարբերակը ֆայլեր, որոնք հակառակ դեպքում կհամապատասխանեին

Դուք կարող եք թվարկել բազմաթիվ ռեգեքսներ՝ բաժանված բացատներով

Ընդհանուր օգտագործումը կլինի՝ --excludes node_modules dist \.git build tmp

ղեկ

Թարգմանվող տողերը կարող են պարունակել {{ handlebars }} կաղապարներ՝ երկու կամ երեք գանգուր փակագծերով

Դուք հավանաբար ՉԵՔ ցանկանում, որ այդ կաղապարների մեջ եղած նյութերը թարգմանվեն

Անցեք -H / --handlebars դրոշը, և {{ ... }} »-ի ներսում որևէ բան չի թարգմանվի

Markdown

Markdown-ը ոչ տեքստ է, ոչ էլ html, ուստի Google Translate-ը դրա հետ կապված որոշակի դժվարություններ ունի

-M / --markdown դրոշը հնարավորություն է տալիս հատուկ մշակում նշվող ֆայլերի համար

Նշման ֆայլերի դեպքում, եթե դուք չեք օգտագործում -M դրոշը, հավանաբար կգտնեք հետևյալ խնդիրները.

  • Կոտրված հղումներ: Թարգմանության մեջ բացատ նիշ է հայտնվում այն բանից հետո, երբ նշվող հղման նկարագրությունը ավարտվում է ( ] -ով), բայց նախքան իր թիրախային հղումը սկսելը ( ( ով): Դա հանգեցնում է նրան, որ նշումը սխալ է մատուցվում, և հղումը փաստաթուղթը դիտելիս կոտրված է:
  • Կոդի բլոկները թարգմանվում են: Google translate-ը չգիտի, թե markdown-ը ինչ է համարում կոդը, իսկ ինչը՝ ոչ
  • Սխալ տարածություն ներքևված կոդի բլոկների համար: Տարածությունը դժվար է պահպանել թարգմանության մեջ
  • 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.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», «տեքստ» կամ ֆայլի ուղին դեպի ձեր սեփական HandlebarsJS ձևանմուշը

Եթե նշեք ձեր սեփական ձևանմուշը, ապա պետք է նաև նշեք ֆայլ (ոչ գրացուցակ) -I / --index համար: տարբերակ

Զվարճացեք լեզուներ թարգմանելով: