Miért nem futtathatom a teljes alkalmazásomat vagy webhelyemet a Google Fordítón keresztül, és miért nem tudok egy másik nyelvre fordítani?
Most már tudod!
A hokeylization
név egy portmanteau, jelentése "hokey lokalizáció"
Ez kissé hokey, mert nagyon egyszerű: karakterláncokat küld a Google Fordítónak
És ez egyszerű, ugyanakkor nagyon erős. Speciálisan támogatja a HTML dokumentumokat, HandlebarsJS sablonok, és Markdown fájlokat.
Lefordíthatod:
- üzeneteket tartalmazó JavaScript objektum
- tetszőleges számú fájl vagy könyvtár, mindig rekurzívan bejárva a könyvtárakat
Ezt a README.md dokumentumot maga a hokeylization eszköz segítségével fordították le a Google Fordító által támogatott minden nyelv!
Biztos vagyok benne, hogy nem tökéletes, de remélem, jobb a semminél!
🇸🇦 arab 🇧🇩 bengáli 🇩🇪 német 🇺🇸 angol 🇪🇸 spanyol 🇫🇷 francia 🇹🇩 Hausa 🇮🇳 hindi 🇮🇩 indonéz 🇮🇹 olasz 🇯🇵 japán 🇰🇷 koreai 🇮🇳 Marathi 🇵🇱 lengyel 🇧🇷 portugál 🇷🇺 orosz 🇰🇪 szuahéli 🇵🇭 Tagalog 🇹🇷 török 🇵🇰 urdu 🇻🇳 vietnami 🇨🇳 kínai
Az eredeti README konkrét fordítása hibás lehet -- a javításokat nagyon szívesen fogadjuk! Kérjük, küldjön lehívási kérelmet a GitHubon, vagy ha nem érzi jól magát, nyisson meg egy problémát
Amikor új GitHub-kiadást hoz létre egy fordítással kapcsolatban, tegye a következőket:
- tartalmazza az oldal URL-jét (másolás/beillesztés a böngésző címsorából)
- Pontosan adja meg a hibás szöveget (másolás/beillesztés a böngészőből)
- Kérem írja le, mi a hiba -- hibás a fordítás? elromlott valahogy a formázás?
- Kérem, tegyen javaslatot jobb fordításra, vagy a szöveg helyes formázására
- Köszönöm!
- Forrás
- Támogatás és finanszírozás
- Telepítés
- Beállítás
- JavaScript karakterlánc-erőforrásfájl fordítása
- Szövegfájlok könyvtárának fordítása
- Egyéb opciók
- JSON kötegelt parancsok
Megpróbálok professzionális nyílt forráskódú szoftverfejlesztő lenni. ben dolgoztam A szoftveriparban évek óta sikeres cégeket alapítottam, amelyeket állami cégeknek adtam el. Nemrég elvesztettem a munkámat, és nem igazán van más dolgom
Tehát megpróbálok hasznos szoftvereket írni, és megnézem, működik-e
Ha szívesen használja ezt a szoftvert, nagyon örülnék, ha megkapnám még a legkisebb havi hozzájárulás a Patreonon keresztül
Köszönöm!
A parancssori eszköz használatához telepítse az npm
" vagy a yarn
:
npm install -g hokeylization
yarn global add hokeylization
Könyvtárként való használathoz telepítse a lite
verziót, amely sokkal kisebb:
npm install -g hokeylization-lite
yarn global add hokeylization-lite
Ezután nézze meg a hokey
parancs súgóját:
hokey --help
hokey -h
Szeretné látni a kimenetet az Ön nyelvén vagy más nyelven?
hokey
megpróbálja automatikusan felismerni a nyelvet a shell környezeti változóiból
A nyelvet az LC_ALL
környezeti változó beállításával kényszerítheti ki:
LC_ALL=it hokey --help
Vegye figyelembe, hogy ha telepítette a hokeylization-lite
, a parancssúgó csak angol nyelven érhető el
Állítsa be a GOOGLE_TRANSLATE_PROJECT_ID
környezeti változót a Google Fordító-projekt azonosításához
Állítsa be a GOOGLE_APPLICATION_CREDENTIALS
környezeti változót a letöltött JSON hitelesítő adatokra
miután rájött, hogyan működik a hitelesítés a Google felhőben (mókás lehet)
Ha a forráskódból fut, ezeket egy .env
fájlba is elhelyezheti a forrásban
könyvtárba töltődnek be futás közben a [dotenv]-en keresztül (https://www.npmjs.com/package/dotenv)
A karakterlánc-táblázatnak JavaScript-fájlban kell lennie, az alábbi két formátum egyikében:
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 ...
}
Ha ennek a fájlnak a neve myfile.en.js
, akkor lefordíthatja spanyolra és németre a következőkkel:
hokey -l es,de -o myfile.LANG.js myfile.en.js
A fentiekben szereplő LANG
különleges – ez egy fenntartott szó ebben az eszközben!
A LANG
helyére a kimeneti fájlok nyelvi kódja lép
Így a fenti parancs létrehozza a fájlokat:
myfile.es.js
myfile.de.js
A "-l" / --languages
-l
" opció az ISO nyelvkódok vesszővel elválasztott listája
a Google Fordító által támogatott
Ha a kimeneti fájl már létezik, a rendszer megvizsgálja, hogy mely kulcsok léteznek már. A meglévő kulcsokat nem fordítjuk le. A program a hiányzó kulcsok fordításait generálja és hozzáfűzi a JS objektum végére. A teljes fájl mindig újraírásra kerül.
Az összes billentyű újrafordításának kényszerítéséhez használja a -f
" / --force
opciót
A fájlok könyvtárát is lefordíthatja. hokeylization rekurzívan meglátogat minden fájlt a könyvtárba, és futtassa a tartalmát a Google Fordítón keresztül, majd mentse a kimenetet egy azonos nevű fájlba egy külön könyvtárfában
Ha a fordítás célja egy könyvtár, ez a mód engedélyezve van
A -o
/ --outfile
opció határozza meg a kimeneti könyvtárat
NAGY FIGYELMEZTETÉS: Könyvtárak fordításakor NE adjon meg kimeneti könyvtárat amely a bemeneti könyvtárában van! Ha ezt megteszi, akkor:
- végtelen rekurziót indukál
- állítsa be a Google számláját
- töltse fel a lemezt
- kevésbé szórakozik
Íme egy példa arra, hogy mit ne tegyünk:
hokey -l es -o templates/es templates # <--- DON'T DO THIS!
Amikor ez fut, a lefordított fájlok a templates/es
, és így újakká válnak
lefordítandó forrásfájlokat, mivel ezek a templates/
alatt vannak -- ez a folyamat folytatódik
örökké, ne csináld!
Rendben, tegyük fel, hogy van néhány e-mail sablon egy címtárban:
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
Ha mindezt spanyolra és németre szeretné lefordítani, futtassa:
hokey -l es,de -o templates/email/LANG templates/email/en
A fentiekben a LANG
" egy fenntartott szó, és az ISO nyelvi kód váltja fel
Mi történik, ha a fenti fut:
- A
templates/email/es
" és atemplates/email/de
könyvtárak létrejönnek (ha nem léteznek) - A
templates/email/en
minden fájl spanyol és német nyelvre lesz fordítva - A meglévő kimeneti fájlok nem generálódnak újra, hacsak nem használod a
-f
" /--force
- A végén azonos könyvtárszerkezetet és fájlokat fog kapni az
es
ésde
, mint azen
Adja át a -n
/ --dry-run
, hogy megjelenítse, mi történik, de valójában ne kezdeményezzen API-hívásokat és ne írjon fájlokat
Adja át a -f
/ --force
a fordítások újragenerálásához, még akkor is, ha már léteznek
Adja át a -m
/ --match
, hogy korlátozza a feldolgozott fájlok számát, ha könyvtár módban fut
Előfordulhat, hogy nem mindig akarja lefordítani a forráskönyvtár minden fájlját a célkönyvtárba
A -m
/ --match
opció értéke egy regex (vigyázz a shell idézési szabályokra!), amely meghatározza
mely fájlokat kell lefordítani
Ha kétségei vannak, kombinálhatja ezt az opciót az -n
/ --dry-run
, hogy megtudja, mely fájlok lesznek lefordítva
Néha a -m
túl sok fájlnak felel meg. Az explicit kizáráshoz használja a -e
/ --excludes
opciót
fájlokat, amelyek egyébként megegyeztek volna
Több regexet is felsorolhat, szóközökkel elválasztva
Egy általános használat a következő lenne: --excludes node_modules dist \.git build tmp
A lefordítandó karakterláncok tartalmazhatnak {{ handlebars }}
sablonokat, két vagy három kapcsos kapcsos zárójellel
Valószínűleg NEM szeretnéd, hogy a sablonokban lévő tartalmat lefordítsák
Adja át a -H
/ --handlebars
jelzőt, és a {{ ... }}
kifejezésen belüli elemek nem lesznek lefordítva
A Markdown se nem szöveg, se nem html, így a Google Fordítónak vannak nehézségei vele
A -M
/ --markdown
jelző lehetővé teszi a leértékelési fájlok speciális kezelését
A markdown fájloknál, ha nem használja az -M
jelzőt, valószínűleg a következő problémákat fogja találni:
- Törött linkek. A fordításban egy szóköz jelenik meg a lejelölő hivatkozás leírása után (a
]
karakterrel), de mielőtt a célhivatkozás elkezdődne ((
). Ez azt okozza, hogy a leértékelés helytelenül jelenik meg, és a link elromlik a dokumentum megtekintésekor. - A kódblokkokat lefordítják. A Google fordító nem tudja, hogy a leértékelés mit tekint kódnak és mit nem
- Helytelen térköz a behúzott kódblokkoknál. A szóközt nehéz megőrizni a fordításban
- A
backticks
belüli dolgokat a rendszer lefordítja, ha szinte mindig azt szeretné, hogy azok szó szerinti értékek legyenek
Ha a -M
/ --markdown
jelző engedélyezve van:
- A
](
minta](
](
tömörítve ezzel javítva a hibás leíró hivatkozásokat - A behúzott kódblokkok köré "nincs fordítás" burkoló kerül elhelyezésre, amely megőrzi a megfelelő behúzást, és biztosítja, hogy ne legyenek lefordítva.
- A „fordítás nélkül” burkoló a
backticks
belüli szöveg körül lesz elhelyezve annak biztosítására, hogy ne legyenek lefordítva.
Általában mindent egyszerű szövegként dolgoz fel
Ha a tartalom HTML, akkor összekeveredik, hacsak nem adja át a -p html
" / --process-as html
opciót
Kalandosoknak: ha egy könyvtárban lévő fájlokat dolgoz fel, átadhatja a -F
" / --filter
opciót
a kimenet szűrésére, mielőtt a fájlrendszerbe írná
A beállítás értékének egy olyan JS-fájl elérési útját kell megadnia, amely a filter
nevű függvényt exportálja
A filter
függvénynek async
"-nek kell lennie, mert a await
kerül
Mielőtt a fájlokat lemezre írnák, a teljes fájltartalom filter
funkcióhoz
A filter
függvény visszatérési értéke az, ami ténylegesen a tárolóba kerül
Így teljes ellenőrzése alatt áll, hogy végül mi kerül megírásra
A filter
szkriptet a következő helyeken keresi a rendszer (a .js
hozzá lesz fűzve a szűrőhöz
név, kivéve, ha már .js
)
- Az aktuális könyvtár
- Egy
.hokey-filters
nevű könyvtár az aktuális könyvtárban - Egy
${HOME}/.hokey-filters
nevű könyvtár, ahol a${HOME}
az aktuális felhasználó saját könyvtára - A beépített szűrők könyvtára
A filter
karakterlánc több szóból állhat. Ebben az esetben az első szó a szűrő neve, és
a fennmaradó szavak argumentumként kerülnek átadásra a filter
függvénynek
Használja a -h
/ --help
a súgó megjelenítéséhez
A -j
/ --json
opcióval több koordinált hokey
parancsot futtathat
Megállapodás szerint ezt a fájlt hokey.json
hívják, de tetszés szerint nevezheti el
Ha egy könyvtárat ad meg "-j" opcióként, a hokey
-j
" a " hokey.json
" fájlt keresi abban a könyvtárban
A JSON-fájlnak egy objektumot kell tartalmaznia. Ezen az objektumon belül a tulajdonságnevei megegyeznek a
a parancssori opciókat, plusz egy további, hokey
nevű tulajdonságot
A hokey
tulajdonság a futtatandó parancsok tömbje. Az ezekben a parancsokban deklarált tulajdonságok
felülírja a duplikált deklarációkat a külső objektumban.
A hokey
tömb minden objektumán belül meg kell adnia egy "nevet name
és a bemeneti és kimeneti fájlokat
Íme egy példa a 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"
}
]
}
Adja meg a fájl elérési útjainak infiles
egyetlen elérési út helyett infile
, mint ebben a példában:
{
... [
{
"name": "my docs",
"infiles": ["README.md", "INSTALL.md", "TUTORIAL.md"],
"outfile": "docs/LANG/",
"markdown": true
]
}
Ha sok nyelvre fordít, a hokey
létrehozhat egy indexfájlt, amely felsorolja az összes fordítást
és linkeket biztosít hozzájuk
Indexek generálásakor csak egy bemeneti forrás lehet
Adja meg az -I
/ --index
opciót, az érték az, ahol az indexfájl generálódik, amely lehet egy fájl
vagy egy könyvtárat. Ha ez egy könyvtár, akkor a rendszer az alapértelmezett fájlnevet használja a sablon alapján (lásd alább)
A -A
/ --index-template
segítségével határozza meg az indexkimenet formázását. Megadhatja a 'html'-t,
„markdown”, „text” vagy a fájl elérési útja a saját HandlebarsJS sablonjához
Ha saját sablont ad meg, akkor egy fájlt (nem egy könyvtárat) is meg kell adnia az -I
" / --index
választási lehetőség