Kwa nini siwezi kuendesha programu au tovuti yangu yote kupitia Google Tafsiri na kupata tafsiri ya kimsingi katika lugha nyingine?
Sasa, unaweza!
Jina hokeylization
ni portmanteau, ikimaanisha 'ujanibishaji wa hokey'
Ni hokey kwa kiasi fulani kwa sababu ni rahisi sana: hutuma masharti kwa Google Tafsiri
Na ni rahisi, lakini pia nguvu sana. Ina msaada maalum kwa hati za HTML, HandlebarsJS violezo, na Markdown faili.
Unaweza kutafsiri:
- Kitu cha JavaScript kilicho na ujumbe
- idadi yoyote ya faili au saraka, kila wakati hupitia saraka kwa kujirudia
Hati hii ya README.md imetafsiriwa, kwa kutumia zana ya hokeylization yenyewe, kuwa kila lugha inayotumika na Google Tafsiri!
Nina hakika sio kamili, lakini natumai ni bora kuliko chochote!
🇸🇦 Kiarabu 🇧🇩 Kibengali 🇩🇪 Kijerumani 🇺🇸 Kiingereza 🇪🇸 Kihispania 🇫🇷 Kifaransa 🇹🇩 Kihausa 🇮🇳 Kihindi 🇮🇩 Kiindonesia 🇮🇹 Kiitaliano 🇯🇵 Kijapani 🇰🇷 Kikorea 🇮🇳 Marathi 🇵🇱 Kipolandi 🇧🇷 Kireno 🇷🇺 Kirusi 🇰🇪 Kiswahili 🇵🇭 Kitagalogi 🇹🇷 Kituruki 🇵🇰 Kiurdu 🇻🇳 Kivietinamu 🇨🇳 Kichina
Tafsiri hii mahususi ya README inaweza kuwa na dosari -- marekebisho yanakaribishwa sana! Tafadhali tuma ombi la kuvuta kwenye GitHub, au ikiwa huna raha kufanya hivyo, fungua toleo
Unapounda toleo jipya la GitHub kuhusu tafsiri, tafadhali fanya:
- jumuisha URL ya ukurasa (nakili/bandika kutoka kwa upau wa anwani ya kivinjari)
- jumuisha maandishi kamili ambayo sio sahihi (nakili/bandika kutoka kwa kivinjari)
- tafadhali eleza kilicho kibaya -- je tafsiri si sahihi? umbizo limevunjika kwa namna fulani?
- tafadhali toa pendekezo la tafsiri bora zaidi, au jinsi maandishi yanapaswa kupangwa vizuri
- Asante!
- Chanzo
- Msaada na Ufadhili
- Usakinishaji
- Weka
- Kutafsiri faili ya nyenzo ya mfuatano wa JavaScript
- Kutafsiri saraka ya faili za maandishi
- Chaguo zingine
- Amri za kundi la JSON
Ninajaribu kuwa mtaalamu wa kuunda programu huria. Nimekuwa nikifanya kazi ndani tasnia ya programu kwa miaka mingi, nimeanzisha kampuni zilizofanikiwa na kuziuza kwa kampuni za umma. Hivi majuzi nilipoteza kazi yangu, na kwa kweli sina kazi nyingine yoyote iliyopangwa
Kwa hivyo nitajaribu kuandika programu muhimu na kuona ikiwa hiyo inafanya kazi
Ikiwa unafurahia kutumia programu hii, ningefurahi sana kupokea hata ndogo zaidi mchango wa kila mwezi kupitia Patreon
Asante!
Ili kutumia zana ya mstari wa amri, sakinisha kwa kutumia npm
au yarn
:
npm install -g hokeylization
yarn global add hokeylization
Ili kutumia kama maktaba, sakinisha toleo la lite
, ambalo ni dogo zaidi:
npm install -g hokeylization-lite
yarn global add hokeylization-lite
Kisha angalia msaada kwa amri ya hokey
:
hokey --help
hokey -h
Je, ungependa kuona matokeo katika lugha yako au lugha nyingine?
hokey
hujaribu kugundua lugha kiotomatiki kutoka kwa vigeu vya mazingira vya ganda lako
Unaweza kulazimisha lugha kwa kuweka LC_ALL
wa mazingira:
LC_ALL=it hokey --help
Kumbuka kwamba ikiwa umesakinisha hokeylization-lite
, msaada wa amri unapatikana kwa Kiingereza pekee
Weka mabadiliko ya mazingira ya GOOGLE_TRANSLATE_PROJECT_ID
ili kutambua mradi wako wa Tafsiri ya Google
Weka mabadiliko ya mazingira ya GOOGLE_APPLICATION_CREDENTIALS
kuwa kitambulisho cha JSON ulichopakua
baada ya kujua jinsi uthibitishaji unavyofanya kazi kwenye wingu la Google (inaweza kufurahisha)
Ikiwa unatumia msimbo wa chanzo, unaweza pia kuweka hizi katika faili .env
katika chanzo
saraka zitapakiwa wakati wa utekelezaji kupitia dotenv
Jedwali lako la mfuatano lazima liwe katika faili ya JavaScript katika mojawapo ya aina hizi mbili:
Usafirishaji wa ES6:
export default {
string_key: "some value",
another_key: "another value",
... more keys ...
}
Usafirishaji wa CommonJS
module.exports = {
string_key: "some value",
another_key: "another value",
... more keys ...
}
Ikiwa faili hii iliitwa myfile.en.js
, unaweza kuitafsiri kwa Kihispania na Kijerumani kwa:
hokey -l es,de -o myfile.LANG.js myfile.en.js
LANG
iliyo hapo juu ni maalum -- ni neno lililohifadhiwa katika zana hii!
LANG
inabadilishwa na msimbo wa lugha kwa faili za towe
Kwa hivyo amri hapo juu huunda faili:
myfile.es.js
myfile.de.js
Chaguo la -l
/ --languages
ni orodha iliyotenganishwa kwa koma ya misimbo ya lugha ya ISO.
inatumika na Google Tafsiri
Ikiwa faili ya pato tayari ipo, itachunguzwa ili kubaini ni funguo zipi tayari zipo. Vifunguo vilivyopo havitatafsiriwa. Tafsiri za vitufe vinavyokosekana zitatolewa na kuongezwa hadi mwisho wa kitu cha JS. Faili nzima huandikwa upya kila wakati.
Ili kulazimisha kutafsiri upya vitufe vyote, tumia chaguo la -f
/ --force
Unaweza pia kutafsiri saraka ya faili. hokeylization itatembelea kila mara faili kwenye saraka na uendeshe yaliyomo kupitia Google Tafsiri, na uhifadhi matokeo kwa faili iliyopewa jina sawa katika mti tofauti wa saraka
Wakati lengo la tafsiri yako ni saraka, hali hii huwashwa
Chaguo la -o
/ --outfile
saraka ya pato
ONYO KUBWA: Unapotafsiri saraka, USI bainisha saraka ya towe hiyo iko ndani ya saraka yako ya kuingiza! Ukifanya hivi, utakuwa:
- kushawishi kujirudia usio na mwisho
- endesha bili yako ya Google
- jaza diski yako
- kuwa na furaha kidogo
Hapa kuna mfano wa kile sichopaswa kufanya:
hokey -l es -o templates/es templates # <--- DON'T DO THIS!
Hii inapotekelezwa, faili zilizotafsiriwa huandikwa kwa templates/es
, na hivyo kuwa mpya
faili za chanzo za kutafsiri, kwa kuwa ziko chini ya templates/
-- mchakato huu unaendelea
milele, usifanye hivyo!
Sawa, tuseme una violezo vya barua pepe kwenye saraka:
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
Ili kutafsiri haya yote kwa Kihispania na Kijerumani, endesha:
hokey -l es,de -o templates/email/LANG templates/email/en
Katika yaliyo hapo juu, LANG
ni neno lililohifadhiwa na nafasi yake itachukuliwa na msimbo wa lugha wa ISO
Ni nini hufanyika wakati hapo juu inaendesha:
- Saraka za
violezo/barua
templates/email/esna
templates/email/de` (ikiwa hazipo) - Kila faili katika
templates/email/en
kwa Kihispania na Kijerumani - Faili zilizopo za towe hazitafanywa upya isipokuwa utumie
-f
/--force
- Utaishia na muundo wa saraka sawa na faili ndani ya
es
nade
kama unavyo chinien
Pitia -n
/ --dry-run
ili kuonyesha kile ambacho kingefanywa, lakini usipige simu zozote za API au uandike faili zozote.
Pitia -f
/ --force
ili kuzalisha upya tafsiri kila wakati, hata kama tayari zipo
Pitia -m
/ --match
ili kupunguza faili zilizochakatwa wakati wa kuendesha katika hali ya saraka
Huenda usitake kila wakati kutafsiri kila faili katika saraka yako ya chanzo hadi saraka unayolenga
Thamani ya chaguo la -m
/ --match
ni regex (tahadhari kanuni za kunukuu ganda!) inayobainisha.
faili zipi zinapaswa kutafsiriwa
Ukiwa na shaka, unaweza kuchanganya chaguo hili na -n
/ --dry-run
ili kuona ni faili zipi zitatafsiriwa.
Wakati mwingine -m
yako inalingana na faili nyingi sana. Tumia chaguo la -e
/ --excludes
ili kutenga kwa uwazi
faili ambazo vinginevyo zingelingana
Unaweza kuorodhesha regeksi nyingi, zikitenganishwa na nafasi
Matumizi ya kawaida yatakuwa: --excludes node_modules dist \.git build tmp
Mifuatano ya kutafsiri inaweza kuwa na violezo {{ handlebars }}
, iwe na viunga viwili au vitatu vilivyojipinda.
Huenda HUTAKI kutaka mambo yaliyo ndani ya violezo hivyo yatafsiriwe
Pitisha bendera ya -H
/ --handlebars
, na chochote kilicho ndani ya {{ ... }}
hakitatafsiriwa
Markdown si maandishi wala html, kwa hivyo Google Tafsiri ina matatizo nayo
Alama ya -M
/ --markdown
huwezesha utunzaji maalum wa faili za alama
Na faili za alama, ikiwa hautumii bendera ya -M
, labda utapata shida hizi:
- Viungo vilivyovunjika. Katika tafsiri, herufi ya nafasi inaonekana baada ya maelezo ya kiungo cha alama kuisha (na
]
) lakini kabla ya kiungo chake kinacholengwa kuanza (na(
). Hii husababisha alama chini kutoa kimakosa, na kiungo imevunjwa wakati wa kutazama hati. - Vizuizi vya msimbo hutafsiriwa. Tafsiri ya Google haijui ni alama gani inazingatia msimbo na nini haijui
- Nafasi zisizo sahihi za vizuizi vya msimbo vilivyowekwa ndani. Nafasi ni ngumu kuhifadhi katika tafsiri
- Mambo ya ndani ya
backticks
, wakati karibu kila mara unataka yawe maadili halisi
Wakati bendera ya -M
/ --markdown
imewashwa:
- Mchoro
](
utafupishwa hadi](
hivyo kurekebisha viungo vilivyovunjika - Kanga ya "hakuna kutafsiri" itawekwa karibu na vizuizi vya msimbo vilivyowekwa ndani, kuhifadhi ujongezaji ufaao na kuhakikisha kuwa hazitafsiriwi.
- Karatasi ya "hakuna tafsiri" itawekwa karibu na maandishi ndani ya
backticks
ili kuhakikisha kuwa hazitafsiriwi
Kwa kawaida kila kitu kinachakatwa kama maandishi wazi
Ikiwa maudhui yako ni HTML, yataharibika isipokuwa ukipitisha chaguo la -p html
/ --process-as html
Kwa adventurous: wakati wa kusindika faili kwenye saraka, unaweza kupitisha chaguo la -F
/ --filter
kuchuja matokeo kabla ya kuandikwa kwa mfumo wa faili
Thamani ya chaguo hili lazima iwe njia ya faili ya JS inayohamisha kipengele cha kukokotoa kiitwacho filter
filter
za kukokotoa za kichujio
lazima async
kwa sababu await
itaitwa juu yake
Kabla ya faili kuandikwa kwa diski, yaliyomo yote ya faili yatapitishwa kwa kazi ya filter
kama mfuatano
Thamani ya kurejesha kutoka kwa chaguo za kukokotoa filter
ndiyo itaandikwa kwa hifadhi
Kwa hivyo, una udhibiti kamili juu ya kile kitakachoandikwa
Hati ya filter
katika maeneo yafuatayo (yenye .js
itaongezwa kwenye kichujio.
jina, isipokuwa tayari inaisha kwa .js
)
- Saraka ya sasa
- Saraka inayoitwa
.hokey-filters
ndani ya saraka ya sasa - Saraka inayoitwa
${HOME}/.hokey-filters
, ambapo${HOME}
ndio saraka ya nyumbani ya mtumiaji wa sasa - [saraka ya vichujio] iliyojengewa ndani (https://github.com/cobbzilla/hokeylization/tree/master/util/filter)
filter
unaweza kuwa maneno mengi. Katika kesi hii, neno la kwanza ni jina la chujio, na
maneno yaliyosalia yatapitishwa kama hoja kwa kitendakazi cha filter
Tumia -h
/ --help
ili kuonyesha usaidizi
Ukiwa na chaguo la -j
/ --json
, unaweza kuendesha amri nyingi za hokey
Kwa kawaida faili hii inaitwa hokey.json
, lakini unaweza kuipa jina lolote utakalo
Ukipitisha saraka kama chaguo
-j,
hokey
hokey.json` kwenye saraka hiyo.
Faili ya JSON inapaswa kuwa na kitu kimoja. Ndani ya kitu hicho, majina ya mali yake ni sawa na
chaguzi za safu ya amri, pamoja na mali moja ya ziada inayoitwa hokey
Sifa ya hokey
ni safu ya amri za kutekeleza. Sifa zilizotangazwa ndani ya amri hizi zitafanya
kubatilisha marudio ya matamko yoyote katika kitu cha nje.
Ndani ya kila kitu kwenye safu ya hokey
, unapaswa kutaja name
, na faili za pembejeo na towe.
Huu hapa ni mfano wa 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"
}
]
}
Pitisha safu ya njia za faili kama infiles
badala ya njia moja infile
, kama katika mfano huu:
{
... [
{
"name": "my docs",
"infiles": ["README.md", "INSTALL.md", "TUTORIAL.md"],
"outfile": "docs/LANG/",
"markdown": true
]
}
Wakati wa kutafsiri kwa lugha nyingi, hokey
inaweza kuunda faili ya faharasa inayoorodhesha tafsiri zote zilizofanywa
na hutoa viungo kwao
Unapotengeneza faharasa, unaweza kuwa na chanzo kimoja tu cha ingizo
Pitisha chaguo la -I
/ --index
, thamani ni pale faili ya faharisi itatolewa, ambayo inaweza kuwa faili.
au saraka. Ikiwa ni saraka, jina la faili chaguo-msingi litatumika, kulingana na kiolezo (tazama hapa chini)
Tumia -A
/ --index-template
ili kubainisha jinsi matokeo ya faharasa yameumbizwa. Unaweza kutaja 'html',
'markdown', 'text', au njia ya faili kwa kiolezo chako HandlebarsJS
Ukibainisha kiolezo chako mwenyewe, lazima pia ubainishe faili (sio saraka) ya -I
/ --index
chaguo