Proč nemohu spustit celou aplikaci nebo web prostřednictvím Překladače Google a získat základní překlad do jiného jazyka?
Teď můžeš!
Název hokeylization
je portmanteau, což znamená „hokey lokalizace“
Je to poněkud nešikovné, protože je velmi jednoduché: odesílá řetězce do Překladače Google
A je to jednoduché, ale také velmi silné. Má speciální podporu pro HTML dokumenty, HandlebarsJS šablony, a soubory Markdown.
Můžete přeložit:
- objekt JavaScript obsahující zprávy
- libovolný počet souborů nebo adresářů, vždy procházet adresáře rekurzivně
Tento dokument README.md byl přeložen pomocí samotného nástroje pro hokeyylizaci každý jazyk podporovaný Překladačem Google!
Jsem si jistý, že to není dokonalé, ale doufám, že je to lepší než nic!
🇸🇦 arabština 🇧🇩 bengálština 🇩🇪 němčina 🇺🇸 angličtina 🇪🇸 španělština 🇫🇷 francouzština 🇹🇩 hausa 🇮🇳 hindština 🇮🇩 indonéština 🇮🇹 italština 🇯🇵 japonština 🇰🇷 korejština 🇮🇳 Marathi 🇵🇱 polština 🇧🇷 portugalština 🇷🇺 ruština 🇰🇪 svahilština 🇵🇭 tagalog 🇹🇷 turečtina 🇵🇰 urdština 🇻🇳 vietnamština 🇨🇳 čínština
Tento konkrétní překlad originálu README může být chyba -- opravy jsou velmi vítány! Odešlete žádost o stažení na GitHubu, nebo pokud se vám to nelíbí, otevřete problém
Když vytvoříte nový problém na GitHubu o překladu, proveďte prosím:
- zahrňte adresu URL stránky (zkopírujte/vložte z adresního řádku prohlížeče)
- uveďte přesný text, který je nesprávný (zkopírujte/vložte z prohlížeče)
- popište prosím, co je špatně - je překlad nesprávný? je formátování nějak narušené?
- laskavě nabídněte návrh lepšího překladu nebo jak by měl být text správně naformátován
- Děkuji!
- Zdroj
- Support and Funding
- Instalace
- Nastavení
- Překlad zdrojového souboru řetězce JavaScript
- Překlad adresáře textových souborů
- Další možnosti
- dávkové příkazy JSON
Snažím se být profesionálním vývojářem open source softwaru. Pracoval jsem v v softwarovém průmyslu jsem zakládal úspěšné společnosti a prodal je veřejným společnostem. Nedávno jsem přišel o práci a vlastně žádnou jinou práci nemám
Takže zkusím napsat užitečný software a uvidím, jestli to funguje
Pokud rádi používáte tento software, budu tak rád, že obdržím i nejmenší měsíční příspěvek přes Patreon
Děkuji!
Chcete-li použít nástroj příkazového řádku, nainstalujte pomocí npm
nebo yarn
:
npm install -g hokeylization
yarn global add hokeylization
Chcete-li použít jako knihovnu, nainstalujte verzi lite
, která je mnohem menší:
npm install -g hokeylization-lite
yarn global add hokeylization-lite
Pak se podívejte do nápovědy pro příkaz hokey
:
hokey --help
hokey -h
Chcete vidět výstup ve vašem jazyce nebo jiném jazyce?
hokey
se pokouší automaticky detekovat jazyk z proměnných prostředí vašeho shellu
Jazyk můžete vynutit nastavením proměnné prostředí LC_ALL
:
LC_ALL=it hokey --help
Všimněte si, že pokud jste nainstalovali hokeylization-lite
, je nápověda k příkazům dostupná pouze v angličtině
Nastavte proměnnou prostředí GOOGLE_TRANSLATE_PROJECT_ID
k identifikaci vašeho projektu Překladače Google
Nastavte proměnnou prostředí GOOGLE_APPLICATION_CREDENTIALS
na přihlašovací údaje JSON, které jste si stáhli
po zjištění, jak funguje ověřování v cloudu Google (může to být zábava)
Pokud spouštíte ze zdrojového kódu, můžete je také vložit do souboru .env
ve zdrojovém kódu
adresář budou načteny za běhu přes dotenv
Vaše tabulka řetězců musí být v souboru JavaScript v jedné z těchto dvou forem:
Export ES6:
export default {
string_key: "some value",
another_key: "another value",
... more keys ...
}
Export CommonJS
module.exports = {
string_key: "some value",
another_key: "another value",
... more keys ...
}
Pokud byl tento soubor pojmenován myfile.en.js
, můžete jej přeložit do španělštiny a němčiny pomocí:
hokey -l es,de -o myfile.LANG.js myfile.en.js
LANG
ve výše uvedeném je speciální - je to vyhrazené slovo v tomto nástroji!
LANG
je nahrazeno kódem jazyka pro výstupní soubory
Výše uvedený příkaz tedy vytvoří soubory:
myfile.es.js
myfile.de.js
Možnost -l
/ --languages
--languages` je seznam kódů jazyků ISO oddělených čárkami.
podporováno Překladačem Google
Pokud výstupní soubor již existuje, bude zkoumán, které klíče již existují. Stávající klíče nebudou přeloženy. Budou vygenerovány a připojeny překlady pro chybějící klíče na konec objektu JS. Vždy se přepíše celý soubor.
Chcete-li vynutit retranslaci všech klíčů, použijte volbu -f
/ --force
Můžete také přeložit adresář souborů. hokeylizace rekurzivně navštíví každého soubor v adresáři a spusťte jeho obsah přes Google Translate a uložte výstup do identicky pojmenovaného souboru v samostatném adresářovém stromu
Pokud je cílem vašeho překladu adresář, je tento režim povolen
Volba -o
/ --outfile
určuje výstupní adresář
VELKÉ VAROVÁNÍ: Při překladu adresářů NEZADÁVEJTE výstupní adresář který je ve vašem vstupním adresáři! Pokud to uděláte, budete:
- vyvolat nekonečnou rekurzi
- spusťte svůj účet Google
- naplňte si disk
- bavte se méně
Zde je příklad toho, co nedělat:
hokey -l es -o templates/es templates # <--- DON'T DO THIS!
Když se to spustí, přeložené soubory se zapíší do templates/es
a stanou se tak novými
zdrojové soubory k překladu, protože jsou pod templates/
-- tento proces pokračuje
navždy, nedělej to!
Dobře, řekněme, že máte v adresáři nějaké e-mailové šablony:
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
Chcete-li toto vše přeložit do španělštiny a němčiny, spusťte:
hokey -l es,de -o templates/email/LANG templates/email/en
Ve výše uvedeném textu je LANG
vyhrazené slovo a bude nahrazeno kódem jazyka ISO
Co se stane, když se spustí výše uvedené:
- Budou vytvořeny adresáře
templates/email/es
atemplates/email/de
(pokud neexistují) - Každý soubor v
templates/email/en
bude přeložen do španělštiny a němčiny - Stávající výstupní soubory nebudou obnoveny, pokud nepoužijete
-f
/--force
- Skončíte s identickou adresářovou strukturou a soubory v rámci
es
ade
, jako máte poden
Předejte -n
/ --dry-run
, abyste zobrazili, co by se udělalo, ale ve skutečnosti neprovádějte žádná volání API ani nezapisujte žádné soubory
Předáním -f
/ --force
vždy obnovíte překlady, i když již existují
Předejte -m
/ --match
, abyste omezili zpracovávané soubory při spuštění v adresářovém režimu
Možná nebudete vždy chtít překládat každý soubor ve zdrojovém adresáři do cílového adresáře
Hodnota možnosti -m
/ --match
je regulární výraz (pozor na pravidla citování shellu!), který určuje
které soubory by měly být přeloženy
Pokud si nejste jisti, můžete tuto možnost zkombinovat s -n
/ --dry-run
a zjistit, které soubory budou přeloženy
Někdy vaše -m
odpovídá příliš mnoha souborům. Chcete-li explicitně vyloučit, použijte možnost -e
/ --excludes
soubory, které by se jinak shodovaly
Můžete uvést více regulárních výrazů oddělených mezerami
Běžné použití by bylo: --excludes node_modules dist \.git build tmp
Řetězce k překladu mohou obsahovat šablony {{ handlebars }}
, buď se dvěma nebo třemi složenými závorkami
Pravděpodobně NECHCETE překládat věci uvnitř těchto šablon
Předejte -H
/ --handlebars
a nic v {{ ... }}
nebude přeloženo
Markdown není ani text, ani html, takže s ním má Překladač Google určité potíže
-M
/ --markdown
umožňuje speciální manipulaci se soubory markdown
Pokud u souborů markdown nepoužijete příznak -M
, pravděpodobně narazíte na tyto problémy:
- Nefunkční odkazy. V překladu se po ukončení popisu odkazu markdown objeví mezera (s
]
), ale dříve, než začne jeho cílový odkaz (s(
). To způsobí, že se značka down vykreslí nesprávně a odkaz je při prohlížení dokumentu rozbitý. - Bloky kódu jsou přeloženy. Překladač Google neví, co markdown považuje za kód a co ne
- Nesprávné mezery pro odsazené bloky kódu. V překladu je obtížné zachovat mezery
- Věci uvnitř
backticks
se přeloží, když téměř vždy chcete, aby to byly doslovné hodnoty
Když je povolen příznak -M
/ --markdown
:
- Vzor
](
bude zhuštěn na](
čímž se opraví nefunkční odkazy na markdown - Kolem odsazených bloků kódu bude umístěn obal „bez překladu“, který zachová správné odsazení a zajistí, že nebudou přeloženy
- Obálka "bez překladu" bude umístěna kolem textu v
backticks
, aby bylo zajištěno, že nebudou přeloženy
Normálně je vše zpracováno jako prostý text
Pokud je váš obsah HTML, bude zmrzačený, pokud nezadáte možnost -p html
/ --process-as html
Pro odvážné: při zpracování souborů v adresáři můžete předat volbu -F
/ --filter
k filtrování výstupu před jeho zapsáním do souborového systému
Hodnota této možnosti musí být cesta k souboru JS, který exportuje funkci s názvem filter
Funkce filter
musí být async
protože na ni bude vyvoláno await
Před zapsáním souborů na disk bude celý obsah souboru předán funkci filter
jako řetězec
Návratová hodnota z funkce filter
je to, co bude skutečně zapsáno do úložiště
Máte tak úplnou kontrolu nad tím, co bude nakonec napsáno
Skript filter
bude hledán v následujících umístěních (s .js
bude připojen k filtru
název, pokud již nekončí na .js
)
- Aktuální adresář
- Adresář s názvem
.hokey-filters
v aktuálním adresáři - Adresář s názvem
${HOME}/.hokey-filters
, kde${HOME}
je domovský adresář aktuálního uživatele - Vestavěný adresář filtrů
Řetězec filter
může obsahovat více slov. V tomto případě je první slovo název filtru a
zbývající slova budou předána jako argumenty funkci filter
K zobrazení nápovědy použijte -h
/ --help
S -j
/ --json
můžete spouštět více koordinovaných příkazů hokey
Podle konvence se tento soubor nazývá hokey.json
, ale můžete si jej pojmenovat, jak chcete
Pokud předáte adresář jako volbu -j
, hokey
hokey.json
Soubor JSON by měl obsahovat jeden objekt. V rámci tohoto objektu jsou jeho názvy vlastností stejné jako
možnosti příkazového řádku a jednu další vlastnost s názvem hokey
Vlastnost hokey
je pole příkazů ke spuštění. Vlastnosti deklarované v těchto příkazech budou
přepíše všechny duplicitní deklarace ve vnějším objektu.
V rámci každého objektu v poli hokey
byste měli zadat name
a vstupní a výstupní soubory
Zde je příklad souboru 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"
}
]
}
Předejte pole cest k souborům jako infiles
namísto jediné cesty infile
, jako v tomto příkladu:
{
... [
{
"name": "my docs",
"infiles": ["README.md", "INSTALL.md", "TUTORIAL.md"],
"outfile": "docs/LANG/",
"markdown": true
]
}
Při překladu do mnoha jazyků může hokey
vytvořit indexový soubor, který uvádí všechny provedené překlady
a poskytuje na ně odkazy
Při generování indexů můžete mít pouze jeden vstupní zdroj
Předejte volbu -I
/ --index
, hodnota je místo, kde se vygeneruje soubor indexu, což může být soubor
nebo adresář. Pokud se jedná o adresář, použije se výchozí název souboru na základě šablony (viz níže)
Pomocí -A
/ --index-template
určete, jak je formátován výstup indexu. Můžete zadat 'html',
'markdown', 'text' nebo cesta k souboru k vaší vlastní šabloně HandlebarsJS
Pokud zadáte vlastní šablonu, musíte také zadat soubor (nikoli adresář) pro -I
/ --index
volba