Ngano nga dili nako mapadagan ang akong tibuuk nga app o site pinaagi sa Google Translate ug makakuha usa ka sukaranan nga paghubad sa lain nga lengguwahe?
Karon, mahimo nimo!
Ang ngalan nga hokeylization
kay usa ka portmanteau, nagpasabut nga 'hokey localization'
Kini medyo hokey tungod kay kini yano kaayo: nagpadala kini og mga string sa Google Translate
Ug kini yano, apan gamhanan usab kaayo. Kini adunay espesyal nga suporta alang sa mga dokumento sa HTML, HandlebarsJS templates, ug Markdown nga mga file.
Mahimo nimong hubaron ang:
- usa ka butang sa JavaScript nga adunay mga mensahe
- bisan unsang gidaghanon sa mga file o mga direktoryo, kanunay nga nagsubay sa mga direktoryo nga balikbalik
Kining README.md nga dokumento gihubad, gamit ang hokeylization tool mismo, ngadto sa matag pinulongan gisuportahan sa Google Translate!
Sigurado ko nga dili kini perpekto, apan nanghinaut ko nga kini mas maayo kaysa wala!
🇸🇦 Arabiko 🇧🇩 Bengali 🇩🇪 German 🇺🇸 English 🇪🇸 Kinatsila 🇫🇷 French 🇹🇩 Hausa 🇮🇳 Hindi 🇮🇩 Indonesian 🇮🇹 Italyano 🇯🇵 Japanese 🇰🇷 Korean 🇮🇳 Marathi 🇵🇱 Polish 🇧🇷 Portuguese 🇷🇺 Russian 🇰🇪 Swahili 🇵🇭 Tagalog 🇹🇷 Turkish 🇵🇰 Urdu 🇻🇳 Vietnamese 🇨🇳 Chinese
Kining partikular nga hubad sa orihinal nga README basin naay depekto -- malipayon kaayo ang mga koreksiyon! Palihog ipadala ug pull request sa GitHub, o kung dili ka komportable sa pagbuhat niana, ablihi ang usa ka isyu
Kung maghimo ka usa ka bag-ong isyu sa GitHub bahin sa usa ka paghubad, palihug buhata:
- Ilakip ang URL sa panid (kopya / idikit gikan sa address bar sa browser)
- Ilakip ang eksakto nga teksto nga sayup (kopya / idikit gikan sa browser)
- palihug ihulagway kung unsa ang sayup -- sayop ba ang paghubad? naguba ba ang pag-format sa usa ka paagi?
- malulotong maghatag ug sugyot sa mas maayong hubad, o kon sa unsang paagi ang teksto kinahanglang hustong maporma
- Salamat!
- Source
- Pagsuporta ug Pagpondo
- Pag-instalar
- Setup
- Paghubad sa JavaScript string resource file
- Paghubad sa direktoryo sa mga text file
- Ubang mga kapilian
- JSON batch commands
Ako naningkamot nga mahimong usa ka propesyonal nga open source software developer. Nagtrabaho ko sa ang industriya sa software sulod sa daghang katuigan, nagsugod ko og malampusong mga kompanya ug gibaligya kini sa mga publikong kompanya. Bag-o lang nawad-an kog trabaho, ug wala na gyud koy laing trabaho nga nakalinya
Mao nga sulayan nako ang pagsulat sa makatabang nga software ug tan-awon kung kini molihok
Kung malingaw ka sa paggamit niini nga software, malipay ako nga makadawat bisan ang pinakagamay binulan nga kontribusyon pinaagi sa Patreon
Salamat!
Aron magamit ang command line tool, i-install gamit ang npm
o yarn
:
npm install -g hokeylization
yarn global add hokeylization
Aron magamit isip librarya, i-install ang lite
nga bersyon, nga mas gamay:
npm install -g hokeylization-lite
yarn global add hokeylization-lite
Dayon tan-awa ang tabang alang sa hokey
sugo:
hokey --help
hokey -h
Gusto nga makita ang output sa imong lengguwahe o lain nga lengguwahe?
hokey
mosulay sa pag-ila sa pinulongan nga awtomatiko gikan sa mga variable sa palibot sa imong shell
Mahimo nimong pugson ang usa ka pinulongan pinaagi sa pag-set sa LC_ALL
environment variable:
LC_ALL=it hokey --help
Timan-i nga kung imong gi-install ang hokeylization-lite
, ang tabang sa command magamit ra sa English
I-set ang GOOGLE_TRANSLATE_PROJECT_ID
environment variable aron mailhan ang imong proyekto sa Google Translate
I-set ang GOOGLE_APPLICATION_CREDENTIALS
environment variable sa JSON nga mga kredensyal nga imong gi-download
pagkahuman nahibal-an kung giunsa ang pag-authenticate sa Google cloud (mahimong makalingaw)
Kung nagdagan ka gikan sa source code, mahimo nimo kining ibutang sa .env
file sa tinubdan
direktoryo nga sila ikarga sa runtime pinaagi sa dotenv
Ang imong string table kinahanglang naa sa JavaScript file sa usa niining duha ka porma:
ES6 export:
export default {
string_key: "some value",
another_key: "another value",
... more keys ...
}
CommonJS export
module.exports = {
string_key: "some value",
another_key: "another value",
... more keys ...
}
Kung kining payl gihinganlan og myfile.en.js
, mahimo nimo kining hubaron ngadto sa Spanish ug German gamit ang:
hokey -l es,de -o myfile.LANG.js myfile.en.js
Espesyal ang LANG
sa ibabaw -- kini usa ka gitagana nga pulong niini nga himan!
Ang LANG
gipulihan sa code sa pinulongan alang sa mga output file
Busa ang sugo sa ibabaw nagmugna sa mga file:
myfile.es.js
myfile.de.js
Ang -l
/ --languages
nga opsyon kay usa ka lista nga gibulag sa koma sa mga ISO nga code sa pinulongan
gisuportahan sa Google Translate
Kung naa na ang output file, susihon kini aron mahibal-an kung unsang mga yawe ang naglungtad na. Ang kasamtangan nga mga yawe dili hubaron. Ang mga paghubad alang sa nawala nga mga yawe himuon ug idugang hangtod sa katapusan sa JS object. Ang tibuok file kanunay nga gisulat pag-usab.
Aron pugson ang paghubad pag-usab sa tanang yawe, gamita ang opsyon nga -f
/ --force
Mahimo ka usab maghubad sa usa ka direktoryo sa mga file. Ang hokeylization kanunay nga mobisita sa matag file sa direktoryo ug ipadagan ang mga sulod niini pinaagi sa Google Translate, ug i-save ang output sa usa ka parehas nga ngalan nga file sa usa ka lahi nga punoan sa direktoryo
Kung ang target sa imong hubad usa ka direktoryo, kini nga mode gipaandar
Ang -o
/ --outfile
nga opsyon nagtino sa output directory
DAKO NGA WARNING: Sa paghubad sa mga direktoryo, AYAW magtakda ug output nga direktoryo kana sa sulod sa imong input directory! Kung buhaton nimo kini, imong buhaton:
- pag-aghat sa walay katapusan nga pagbalik-balik
- padagana ang imong Google bill
- pun-a ang imong disk
- dili kaayo lingaw
Ania ang usa ka pananglitan kung unsa ang dili buhaton:
hokey -l es -o templates/es templates # <--- DON'T DO THIS!
Kung kini modagan, ang gihubad nga mga file isulat sa templates/es
, ug sa ingon mahimong bag-o
tinubdan nga mga file aron hubaron, tungod kay sila ubos sa templates/
-- kini nga proseso nagpadayon
hangtod sa hangtod, ayaw kini buhata!
OK, ingnon ta nga ikaw adunay pipila ka mga template sa email sa usa ka direktoryo:
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
Aron mahubad kining tanan ngadto sa Kinatsila ug Aleman, pagdagan:
hokey -l es,de -o templates/email/LANG templates/email/en
Sa ibabaw, ang LANG
kay gireserba nga pulong ug pulihan sa ISO nga code sa pinulongan
Unsa ang mahitabo kung ang naa sa ibabaw modagan:
- Ang
templates/email/es
ugtemplates/email/de
nga mga direktoryo pagabuhaton (kung wala kini) - Ang matag file sa
templates/email/en
hubaron sa Spanish ug German - Ang naglungtad nga mga file sa output dili mabag-o gawas kung mogamit ka
-f
/--force
- Makuha nimo ang parehas nga istruktura sa direktoryo ug mga file sa sulod sa
es
ugde
sama sa naa nimo sa ilawom saen
Ipasa -n
/ --dry-run
aron ipakita kung unsa ang buhaton, apan ayaw gyud paghimo og bisan unsang mga tawag sa API o pagsulat sa bisan unsang mga file
Ipasa -f
/ --force
aron kanunay nga ma-regenerate ang mga hubad, bisan kung anaa na sila
Ipasa -m
/ --match
aron limitahan ang mga file nga giproseso kung nagdagan sa directory-mode
Mahimong dili nimo kanunay gusto nga hubaron ang matag file sa imong gigikanan nga direktoryo sa imong target nga direktoryo
Ang bili sa -m
/ --match
nga kapilian kay usa ka regex (pagbantay sa mga lagda sa pagkutlo sa shell!) nga nagtino
unsa nga mga file ang kinahanglan hubaron
Kung nagduhaduha, mahimo nimong ikombinar kini nga kapilian sa -n
/ --dry-run
aron makita kung unsang mga file ang hubaron
Usahay ang imong -m
motakdo sa daghang mga file. Gamita ang -e
/ --excludes
nga opsyon aron klaro nga dili iapil
mga file nga kon dili unta motakdo
Mahimo nimong ilista ang daghang mga regex, nga gibulag sa mga wanang
Usa ka komon nga paggamit mao ang: --excludes node_modules dist \.git build tmp
Ang mga kuwerdas nga hubaron mahimong adunay mga template {{ handlebars }}
, nga adunay duha o tulo ka mga curly-braces
Tingali DILI nimo gusto nga mahubad ang mga butang sa sulod sa mga templates
Ipasa ang -H
/ --handlebars
nga bandera, ug bisan unsa sulod sa {{ ... }}
dili mahubad
Ang Markdown dili teksto o html, busa ang Google Translate adunay pipila ka mga kalisud niini
Ang -M
/ --markdown
nga bandera makahimo sa espesyal nga pagdumala sa markdown nga mga file
Uban sa mga markdown file, kung dili nimo gamiton ang -M
nga bandila, lagmit makit-an nimo kini nga mga problema:
- Naguba nga mga link. Sa paghubad, usa ka karakter sa espasyo ang makita pagkahuman sa usa ka paghulagway sa link sa markdown matapos (uban ang
]
) apan sa dili pa magsugod ang target nga link niini (uban sa(
). Kini maoy hinungdan nga ang markdown dili ma-render, ug ang link nabuak kung nagtan-aw sa dokumento. - Ang mga bloke sa code mahubad. Ang paghubad sa Google wala mahibal-an kung unsa ang gikonsiderar nga markdown nga code ug kung unsa ang wala
- Sayop nga gilay-on alang sa indented nga mga bloke sa code. Lisud ipreserbar ang gilay-on sa paghubad
- Ang mga butang sa sulod sa
backticks
mahubad, kung gusto nimo kini nga literal nga mga kantidad
Sa diha nga ang -M
/ --markdown
nga bandila gipalihok:
- Ang pattern nga
](
ipamub-ot ngadto sa](
busa ayohon ang naguba nga markdown links - Usa ka wrapper nga "walay paghubad" ibutang sa palibot sa mga indented nga mga bloke sa code, pagpreserbar sa husto nga indentasyon ug pagsiguro nga kini dili mahubad
- Usa ka "no translate" wrapper ang ibutang sa palibot sa teksto sulod sa
backticks
aron masiguro nga kini dili mahubad
Kasagaran ang tanan giproseso isip plain text
Kung HTML ang imong sulod, madaot kini gawas kung ipasa nimo ang opsyon nga -p html
/ --process-as html
Para sa mga adventurous: kung nagproseso sa mga file sa usa ka direktoryo, mahimo nimong ipasa ang kapilian nga -F
/ --filter
sa pagsala sa output sa wala pa kini isulat sa filesystem
Ang bili niini nga opsyon kinahanglan nga usa ka dalan sa usa ka JS file nga nag-eksport sa usa ka function nga ginganlan og filter
Ang filter
function kinahanglan nga async
tungod kay ang await
tawagon niini
Sa dili pa isulat ang mga file ngadto sa disk, ang tibuok sulod sa file ipasa ngadto sa filter
function isip string
Ang pagbalik nga kantidad gikan sa function nga filter
mao ang aktuwal nga isulat sa pagtipig
Sa ingon, ikaw adunay bug-os nga kontrol sa kung unsa ang isulat sa katapusan
Ang filter
nga script pangitaon sa mosunod nga mga lokasyon (uban ang .js
idugang sa filter
ngalan, gawas kon kini natapos na sa .js
)
- Ang kasamtangan nga direktoryo
- Usa ka direktoryo nga ginganlag
.hokey-filters
sulod sa kasamtangan nga direktoryo - Usa ka direktoryo nga ginganlag
${HOME}/.hokey-filters
, diin ang${HOME}
mao ang direktoryo sa balay sa kasamtangang user - Ang built-in nga filter directory
Ang filter
string mahimong daghang mga pulong. Sa kini nga kaso, ang unang pulong mao ang filter nga ngalan, ug
ang nahabilin nga mga pulong ipasa ingon mga argumento sa filter
function
Gamita -h
/ --help
aron ipakita ang tabang
Uban sa -j
/ --json
nga kapilian, mahimo nimong ipadagan ang daghang mga coordinated nga hokey
mga sugo
Pinaagi sa kombensiyon kini nga payl gitawag og hokey.json
, apan mahimo nimo kining hinganlan sa bisan unsa nga imong gusto
Kung imong ipasa ang usa ka direktoryo ingon nga -j
nga kapilian, ang hokey
mangita alang sa usa ka hokey.json
sa kana nga direktoryo
Ang JSON file kinahanglan adunay usa ka butang. Sulod niana nga butang, ang mga ngalan sa kabtangan niini parehas sa
ang mga kapilian sa command-line, dugang usa ka dugang nga kabtangan nga ginganlag hokey
Ang kabtangan nga hokey
kay usa ka han-ay sa mga sugo nga ipadagan. Ang mga kabtangan nga gipahayag sa sulod niini nga mga sugo
i-override ang bisan unsang duplicate nga deklarasyon sa gawas nga butang.
Sulod sa matag butang sa hokey
array, kinahanglan nimong itakda ang usa ka name
, ug ang input ug output nga mga file
Ania ang usa ka pananglitan sa usa ka 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"
}
]
}
Ipasa ang usa ka han-ay sa mga agianan sa file isip infiles
imbes nga usa ka dalan infile
, sama niini nga pananglitan:
{
... [
{
"name": "my docs",
"infiles": ["README.md", "INSTALL.md", "TUTORIAL.md"],
"outfile": "docs/LANG/",
"markdown": true
]
}
Kung naghubad sa daghang mga pinulongan, ang hokey
makahimo og index file nga naglista sa tanang mga hubad nga gihimo
ug naghatag og mga link ngadto kanila
Sa paghimo og mga indeks, mahimo ka nga adunay usa lamang ka tinubdan sa input
Ipasa ang -I
/ --index
nga kapilian, ang bili diin ang index file mabuhat, nga mahimong usa ka file
o usa ka direktoryo. Kung kini usa ka direktoryo, usa ka default filename ang gamiton, base sa template (tan-awa sa ubos)
Gamita ang -A
/ --index-template
aron mahibal-an kung giunsa pagporma ang index output. Mahimo nimong ipiho ang 'html',
'markdown', 'text', o ang file path sa imong kaugalingong HandlebarsJS template
Kung imong ipiho ang imong kaugalingon nga template, kinahanglan ka usab magbutang usa ka file (dili usa ka direktoryo) para sa -I
/ --index
kapilian