Зашто не могу да покренем целу своју апликацију или сајт преко Гоогле преводиоца и добијем основни превод на другом језику?
Сада можете!
Назив hokeylization
је портманто, што значи хокеи локализација
Помало је зезнуто јер је врло једноставно: шаље стрингове Гоогле преводиоцу
И то је једноставно, али и веома моћно. Има посебну подршку за ХТМЛ документе, ХандлебарсЈС шаблони, и датотеке Маркдовн.
Можете превести:
- ЈаваСцрипт објекат који садржи поруке
- било који број датотека или директоријума, увек рекурзивно прелазећи директоријуме
Овај РЕАДМЕ.мд документ је преведен, користећи сам алат за хокеилизацију, у сваки језик који подржава Гоогле преводилац!
Сигуран сам да није савршено, али надам се да је боље него ништа!
🇸🇦 арапски 🇧🇩 бенгалски 🇩🇪 немачки 🇺🇸 енглески 🇪🇸 шпански 🇫🇷 француски 🇹🇩 Хауса 🇮🇳 хинди 🇮🇩 индонежански 🇮🇹 италијански 🇯🇵 јапански 🇰🇷 корејски 🇮🇳 Марантхи 🇵🇱 пољски 🇧🇷 португалски 🇷🇺 руски 🇰🇪 свахили 🇵🇭 Тагалог 🇹🇷 турски 🇵🇰 урду 🇻🇳 вијетнамски 🇨🇳 кинески
Овај конкретни превод оригиналног РЕАДМЕ може бити мањкав -- исправке су добродошле! Молимо пошаљите захтев за повлачење на ГитХуб, или ако вам то не одговара, отворите проблем
Када креирате нови ГитХуб проблем о преводу, урадите следеће:
- укључите УРЛ странице (копирајте/налепите из траке за адресу прегледача)
- укључите тачан текст који је погрешан (копирајте/налепите из претраживача)
- опишите шта није у реду -- да ли је превод нетачан? да ли је форматирање некако покварено?
- љубазно понудите предлог бољег превода, односно како текст треба да буде правилно форматиран
- Хвала вам!
- Извор
- Подршка и финансирање
- Инсталација
- Подешавање
- Превођење датотеке ресурса са ЈаваСцрипт стринговима
- Превођење директоријума текстуалних датотека
- Остале опције
- ЈСОН скупне команде
- хокеилизација на ГитХуб
- хокеилизација на нпм
Покушавам да будем професионални програмер софтвера отвореног кода. Ја сам радио у софтверској индустрији дуги низ година, покренуо сам успешне компаније и продао их јавним предузећима. Недавно сам изгубио посао и немам никакав други посао у реду
Зато ћу покушати да напишем користан софтвер и да видим да ли то функционише
Ако уживате у коришћењу овог софтвера, био бих веома срећан да добијем чак и најмањи месечни допринос преко Патреона
Хвала вам!
Да бисте користили алатку командне линије, инсталирајте користећи 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_PROJECT_ID
да бисте идентификовали ваш пројекат Гоогле преводиоца
Подесите променљиву окружења GOOGLE_APPLICATION_CREDENTIALS
на ЈСОН акредитиве које сте преузели
након што схватите како аутентификација функционише на Гоогле облаку (може бити забавно)
Ако покрећете из изворног кода, можете их ставити и у .env
датотеку у изворном коду
директоријум они ће бити учитани током извршавања преко дотенв
Ваша табела стрингова мора бити у ЈаваСцрипт датотеци у једном од ова два облика:
ЕС6 извоз:
export default {
string_key: "some value",
another_key: "another value",
... more keys ...
}
ЦоммонЈС извоз
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
је листа ИСО језичких кодова раздвојених зарезима
подржава Гоогле преводилац
Ако излазна датотека већ постоји, биће испитана да би се утврдило који кључеви већ постоје. Постојећи кључеви неће бити преведени. Преводи за кључеве који недостају биће генерисани и додати до краја ЈС објекта. Цео фајл се увек поново пише.
Да бисте присилили поновно превођење свих кључева, користите опцију -f
/ --force
Такође можете превести директоријум датотека. хокеилизација ће рекурзивно посећивати сваки датотеку у директоријуму и покрените њен садржај преко Гоогле преводиоца и сачувајте резултат у датотеку са идентичним именом у посебном стаблу директоријума
Када је циљ вашег превода директоријум, овај режим је омогућен
Опција -o
/ --outfile
одређује излазни директоријум
ВЕЛИКО УПОЗОРЕЊЕ: Када преводите директоријуме, НЕмојте наводити излазни директоријум који се налази у вашем улазном директоријуму! Ако то урадите, ви ћете:
- индукују бесконачну рекурзију
- покрените Гоогле рачун
- попуните свој диск
- мање се забављајте
Ево примера шта не треба радити:
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
“ је резервисана реч и биће замењена ИСО кодом језика
Шта се дешава када се горе наведено покрене:
- Директоријуми
templates/email/es
иtemplates/email/de
ће бити креирани (ако не постоје) - Сваки фајл у
templates/email/en
биће преведен на шпански и немачки - Постојеће излазне датотеке неће бити регенерисане осим ако не користите
-f
/--force
- На крају ћете имати идентичну структуру директоријума и датотеке унутар
es
иde
као што имате подen
Проследите -n
/ --dry-run
да бисте приказали шта би било урађено, али заправо немојте упућивати никакве АПИ позиве или писати датотеке
Проследите -f
/ --force
да увек поново генеришете преводе, чак и ако већ постоје
Проследите -m
/ --match
да бисте ограничили датотеке које се обрађују када се покрећу у режиму директоријума
Можда нећете увек желети да преведете сваку датотеку у вашем изворном директоријуму у циљни директоријум
Вредност опције -m
/ --match
је регуларни израз (пазите на правила навођења шкољке!) који наводи
које датотеке треба превести
Када сте у недоумици, можете комбиновати ову опцију са -n
/ --dry-run
да видите које датотеке ће бити преведене
Понекад ваш -m
одговара превише датотека. Користите опцију -e
/ --excludes
--екцлудес` да бисте експлицитно искључили
датотеке које би се иначе подударале
Можете навести више регуларних израза, раздвојених размацима
Уобичајена употреба би била: --excludes node_modules dist \.git build tmp
Стрингови за превод могу да садрже шаблоне {{ handlebars }}
, било са две или три витичасте заграде
Вероватно НЕ желите да се ствари унутар тих шаблона преведу
Проследите -H
/ --handlebars
заставицу и ништа унутар {{ ... }}
неће бити преведено
Маркдовн није ни текст ни хтмл, тако да Гоогле преводилац има неких потешкоћа са тим
Ознака -M
/ --markdown
омогућава посебно руковање датотекама са маркдовном
Са маркдовн датотекама, ако не користите -M
, вероватно ћете наћи ове проблеме:
- Неисправне везе. У преводу, знак за размак се појављује након што се опис везе за смањење вредности заврши (са
]
), али пре него што почне његова циљна веза (са(
). Ово доводи до погрешног приказивања умањивања, а веза је покварен приликом прегледа документа. - Блокови кода се преводе. Гугл преводилац не зна шта маркдовн сматра кодом, а шта не
- Нетачан размак за увучене блокове кода. Размак је тешко сачувати у преводу
- Ствари унутар
backticks
ће се превести када скоро увек желите да буду буквалне вредности
Када је омогућена -M
/ --markdown
:
- Образац
](
ће бити сажет у](
чиме се поправљају покварене везе за смањење вредности - Омот „без превођења“ биће постављен око увучених блокова кода, чувајући исправно увлачење и осигуравајући да нису преведени
- Омот „без превођења“ ће бити постављен око текста унутар
backticks
како би се осигурало да нису преведени
Обично се све обрађује као обичан текст
Ако је ваш садржај ХТМЛ, биће оштећен осим ако не проследите опцију -p html
/ --process-as html
За авантуристе: када обрађујете датотеке у директоријуму, можете проследити опцију -F
/ --filter
да филтрира излаз пре него што се упише у систем датотека
Вредност ове опције мора бити путања до ЈС датотеке која извози функцију под називом filter
Функција filter
мора бити async
јер ће бити позвана await
Пре него што се датотеке уписују на диск, цео садржај датотеке ће бити прослеђен функцији filter
као стринг
Повратна вредност из функције filter
је оно што ће заправо бити уписано у складиште
Дакле, имате потпуну контролу над оним што ће коначно бити написано
Скрипта filter
ће се тражити на следећим локацијама (са .js
ће бити додат филтеру
име, осим ако се већ завршава на .js
)
- Тренутни директоријум
- Директоријум под називом
.hokey-filters
унутар тренутног директоријума - Директоријум под називом
${HOME}/.hokey-filters
, где је${HOME}
кућни директоријум тренутног корисника - Уграђени директоријум филтера
Стринг filter
може бити више речи. У овом случају, прва реч је назив филтера и
преостале речи ће бити прослеђене као аргументи функцији filter
Користите -h
/ --help
да прикажете помоћ
Са -j
/ --json
, можете покренути више координисаних hokey
команди
По конвенцији се ова датотека зове hokey.json
, али можете да је назовете како год желите
Ако проследите директоријум као опцију
-j,
hokeyће тражити
hokey.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
да одредите како је форматиран излаз индекса. Можете одредити 'хтмл',
'маркдовн', 'тект' или путања датотеке до вашег шаблона ХандлебарсЈС
Ако наведете сопствени шаблон, такође морате да наведете датотеку (не директоријум) за -I
/ --index
опција