Ինչո՞ւ ես չեմ կարող իմ ամբողջ հավելվածը կամ կայքը գործարկել Google Translate-ի միջոցով և ստանալ հիմնական թարգմանություն այլ լեզվով:
Հիմա կարող ես:
hokeylization
» անվանումը պորտմանտո է, որը նշանակում է «հոկեյլի տեղայնացում»
Այն ինչ-որ չափով հուզիչ է, քանի որ շատ պարզ է. այն տողեր է ուղարկում Google Translate-ին
Եվ դա պարզ է, բայց նաև շատ հզոր: Այն ունի հատուկ աջակցություն HTML փաստաթղթերի համար, HandlebarsJS կաղապարներ, և Markdown ֆայլերը:
Դուք կարող եք թարգմանել.
- JavaScript օբյեկտ, որը պարունակում է հաղորդագրություններ
- ցանկացած թվով ֆայլեր կամ գրացուցակներ, որոնք միշտ անցնում են ռեկուրսիվ դիրեկտորիաներով
Այս README.md փաստաթուղթը թարգմանվել է հենց hokeylization գործիքի միջոցով Google Translate-ի կողմից աջակցվող յուրաքանչյուր լեզու!
Ես վստահ եմ, որ դա կատարյալ չէ, բայց հուսով եմ, որ ավելի լավ է, քան ոչինչ:
🇸🇦 արաբերեն 🇧🇩 բենգալերեն 🇩🇪 գերմաներեն 🇺🇸 Անգլերեն 🇪🇸 իսպաներեն 🇫🇷 ֆրանսերեն 🇹🇩 Հաուսա 🇮🇳 հինդի 🇮🇩 ինդոնեզերեն 🇮🇹 Իտալերեն 🇯🇵 ճապոներեն 🇰🇷 կորեերեն 🇮🇳 Մարանթի 🇵🇱 լեհերեն 🇧🇷 պորտուգալերեն 🇷🇺 ռուսերեն 🇰🇪 Սուահիլի 🇵🇭 Տագալերեն 🇹🇷 թուրքերեն 🇵🇰 ուրդու 🇻🇳 Վիետնամերեն 🇨🇳 չինարեն
Բնօրինակի այս թարգմանությունը README կարող է թերի լինել. կամ եթե դա ձեզ հարմար չէ, բացեք խնդիրը
Երբ թարգմանության վերաբերյալ GitHub-ի նոր խնդիր եք ստեղծում, խնդրում ենք անել.
- ներառել էջի URL-ը (պատճենել/տեղադրել դիտարկիչի հասցեի տողից)
- ներառել ճշգրիտ տեքստը, որը սխալ է (պատճենել/տեղադրել զննարկիչից)
- խնդրում եմ նկարագրեք, թե ինչն է սխալ. թարգմանությունը ճիշտ չէ՞: ֆորմատավորումը ինչ-որ կերպ կոտրված է?
- Խնդրում ենք առաջարկել ավելի լավ թարգմանություն կամ ինչպես պետք է տեքստը ճիշտ ձևաչափվի
- Շնորհակալություն!
- Աղբյուր
- Աջակցություն և ֆինանսավորում
- [Տեղադրում](# Տեղադրում)
- Setup
- Translating a JavaScript string resource file
- Translating a directory of text files
- Այլ տարբերակներ
- JSON խմբաքանակի հրամաններ
Ես փորձում եմ լինել պրոֆեսիոնալ բաց կոդով ծրագրակազմ մշակող: Ես աշխատել եմ ծրագրային ապահովման ոլորտում երկար տարիներ ես ստեղծել եմ հաջողակ ընկերություններ և վաճառել դրանք հանրային ընկերություններին: Վերջերս ես կորցրել էի աշխատանքս, և իրականում այլ աշխատանք չունեմ
Այսպիսով, ես կփորձեմ գրել օգտակար ծրագրակազմ և տեսնել, թե արդյոք դա աշխատում է
Եթե ձեզ դուր է գալիս այս ծրագրաշարն օգտագործելը, ես շատ ուրախ կլինեմ ստանալ նույնիսկ այն ամենափոքր ամսական ներդրում 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 ֆայլում այս երկու ձևերից մեկով.
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-ը ոչ տեքստ է, ոչ էլ 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
օգնություն ցույց տալու համար
-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
համար:
տարբերակ