Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 23.8 KB

README.md

File metadata and controls

380 lines (276 loc) · 23.8 KB

Хокейлизатсия

Чаро ман наметавонам тамоми барнома ё сайти худро тавассути Google Translate иҷро кунам ва тарҷумаи асосӣ ба забони дигар гирам?

Акнун, шумо метавонед!

Номи hokeylization як портманто аст, ки маънояш "маҳалликунонии хоккей" аст

Ин то ҳадде ҷолиб аст, зеро он хеле содда аст: он сатрҳоро ба Google Translate мефиристад

Ва он оддӣ, вале хеле пурқувват аст. Он дорои дастгирии махсус барои ҳуҷҷатҳои HTML, HandlebarsJS қолибҳо, ва файлҳои Markdown.

Шумо метавонед тарҷума кунед:

  • объекти JavaScript дорои паёмҳо
  • ҳама гуна шумораи файлҳо ё директорияҳо, ки ҳамеша директорияҳоро ба таври рекурсивӣ мегузаранд

Инро ба забони дигар хонед

Ин ҳуҷҷати README.md бо истифода аз худи асбоби hokeylization тарҷума шудааст ҳар забоне, ки аз ҷониби Google Translate дастгирӣ мешавад!

Ман итминон дорам, ки ин комил нест, аммо ман умедворам, ки он аз ҳеҷ чиз беҳтар аст!

🇸🇦 Арабӣ 🇧🇩 Бенгалӣ 🇩🇪 Олмон 🇺🇸 англисӣ 🇪🇸 испанӣ 🇫🇷 Фаронса 🇹🇩 Hausa 🇮🇳 Ҳиндӣ 🇮🇩 Индонезия 🇮🇹 Италия 🇯🇵 Ҷопон 🇰🇷 Кореяи 🇮🇳 Марантӣ 🇵🇱 Лаҳистон 🇧🇷 Португалӣ 🇷🇺 русӣ 🇰🇪 Суахили 🇵🇭 Тагалогӣ 🇹🇷 Туркӣ 🇵🇰 урду 🇻🇳 Ветнамӣ 🇨🇳 Чин

Оё бо ин тарҷумаи README мушкилот вуҷуд дорад?

Ин тарҷумаи махсуси аслии README метавонад камбудиҳо дошта бошад -- ислоҳот хеле хуш омадед! Лутфан [дархост дар GitHub] ирсол кунед(https://github.com/cobbzilla/hokeylization/pulls), ё агар шумо ин корро бароҳат надоред, як масъаларо кушоед

Вақте ки шумо дар бораи тарҷума масъалаи нави 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-и худ тағирёбандаи муҳити GOOGLE_TRANSLATE_PROJECT_ID кунед

Тағйирёбандаи муҳити зисти 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 хоҳад recursively боздид ҳар файлро дар директория ҷойгир кунед ва мундариҷаи онро тавассути 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 истифода баред, то ошкоро истисно кунед файлҳое, ки дар акси ҳол мувофиқат мекарданд

Шумо метавонед регексҳои сершуморро, ки бо фосила ҷудо карда шудаанд, номбар кунед

Истифодаи маъмул чунин хоҳад буд: --excludes node_modules dist \.git build tmp

Дастакҳо

Сатрҳои тарҷумашаванда метавонанд қолабҳои {{ handlebars }} дошта бошанд, ё бо ду ё се қавси ҷингила

Эҳтимол шумо НАМЕХОХед, ки маводи дар дохили он қолабҳо тарҷумашуда тарҷума карда шаванд

Парчами -H / --handlebars ва чизе дар дохили {{ ... }} тарҷума карда намешавад

Markdown

Markdown на матн аст ва на html, аз ин рӯ Google Translate бо он баъзе мушкилот дорад

Парчами -M / --markdown коркарди махсусро барои файлҳои markdown имкон медиҳад

Бо файлҳои 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 номида мешавад, аммо шумо метавонед онро ҳар чизе ки мехоҳед, номгузорӣ кунед

Агар шумо директорияро ҳамчун варианти hokey -j hokey.json дар он директория 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', 'matn' ё роҳи файл ба қолаби худ HandlebarsJS

Агар шумо қолаби худро муайян кунед, шумо инчунин бояд файлеро (на директория) барои -I / --index вариант

Ҳангоми тарҷумаи забонҳо вақтхушӣ кунед!