Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 23.8 KB

README.md

File metadata and controls

380 lines (276 loc) · 23.8 KB

Хокеилизација

Зашто не могу да покренем целу своју апликацију или сајт преко Гоогле преводиоца и добијем основни превод на другом језику?

Сада можете!

Назив 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 опција

Забавите се преводећи језике!