Чаро ман наметавонам тамоми барнома ё сайти худро тавассути Google Translate иҷро кунам ва тарҷумаи асосӣ ба забони дигар гирам?
Акнун, шумо метавонед!
Номи hokeylization
як портманто аст, ки маънояш "маҳалликунонии хоккей" аст
Ин то ҳадде ҷолиб аст, зеро он хеле содда аст: он сатрҳоро ба Google Translate мефиристад
Ва он оддӣ, вале хеле пурқувват аст. Он дорои дастгирии махсус барои ҳуҷҷатҳои HTML, HandlebarsJS қолибҳо, ва файлҳои Markdown.
Шумо метавонед тарҷума кунед:
- объекти JavaScript дорои паёмҳо
- ҳама гуна шумораи файлҳо ё директорияҳо, ки ҳамеша директорияҳоро ба таври рекурсивӣ мегузаранд
Ин ҳуҷҷати README.md бо истифода аз худи асбоби hokeylization тарҷума шудааст ҳар забоне, ки аз ҷониби Google Translate дастгирӣ мешавад!
Ман итминон дорам, ки ин комил нест, аммо ман умедворам, ки он аз ҳеҷ чиз беҳтар аст!
🇸🇦 Арабӣ 🇧🇩 Бенгалӣ 🇩🇪 Олмон 🇺🇸 англисӣ 🇪🇸 испанӣ 🇫🇷 Фаронса 🇹🇩 Hausa 🇮🇳 Ҳиндӣ 🇮🇩 Индонезия 🇮🇹 Италия 🇯🇵 Ҷопон 🇰🇷 Кореяи 🇮🇳 Марантӣ 🇵🇱 Лаҳистон 🇧🇷 Португалӣ 🇷🇺 русӣ 🇰🇪 Суахили 🇵🇭 Тагалогӣ 🇹🇷 Туркӣ 🇵🇰 урду 🇻🇳 Ветнамӣ 🇨🇳 Чин
Ин тарҷумаи махсуси аслии README метавонад камбудиҳо дошта бошад -- ислоҳот хеле хуш омадед! Лутфан [дархост дар GitHub] ирсол кунед(https://github.com/cobbzilla/hokeylization/pulls), ё агар шумо ин корро бароҳат надоред, як масъаларо кушоед
Вақте ки шумо дар бораи тарҷума масъалаи нави GitHub эҷод мекунед, лутфан амал кунед:
- URL-и саҳифаро дохил кунед (аз сатри суроғаҳои браузер нусхабардорӣ/часбонед)
- матни дақиқи нодурустро дохил кунед (аз браузер нусхабардорӣ/часбонед)
- лутфан шарҳ диҳед, ки чӣ хато аст -- тарҷума нодуруст аст? оё форматкунӣ ягон хел вайрон шудааст?
- лутфан пешниҳод кунед, ки тарҷумаи беҳтар ё чӣ гуна матн бояд дуруст формат карда шавад
- Сипос!
- Манбаъ
- [Дастгирӣ ва маблағгузорӣ](#Дастгирӣ ва маблағгузорӣ)
- Насб
- Танзим
- Тарҷумаи файли захиравии сатри JavaScript
- [Тарҷумаи феҳристи файлҳои матнӣ](#Тарҷумаи-феҳристи файлҳои матнӣ)
- Имконоти дигар
- Фармонҳои партияи 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-и худ тағирёбандаи муҳити GOOGLE_TRANSLATE_PROJECT_ID
кунед
Тағйирёбандаи муҳити зисти 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 хоҳад 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 на матн аст ва на 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
истифода баред
Бо варианти -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
вариант