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

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

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

Сега, можеш!

Името hokeylization е портманто, што значи „локализација на хокеј“

Донекаде е хокеј бидејќи е многу едноставен: испраќа низи до Google Translate

И едноставно е, но и многу моќно. Има специјална поддршка за HTML документи, Шаблони за HandlebarsJS, и датотеки Markdown.

Можете да преведете:

  • објект JavaScript што содржи пораки
  • кој било број на датотеки или директориуми, секогаш поминувајќи низ директориуми рекурзивно

Прочитајте го ова на друг јазик

Овој документ на README.md е преведен, користејќи ја самата алатка за хокејлизација секој јазик поддржан од Google Translate!

Сигурен сум дека не е совршено, но се надевам дека е подобро од ништо!

🇸🇦 Арапски 🇧🇩 бенгалски 🇩🇪 германски 🇺🇸 англиски 🇪🇸 шпански 🇫🇷 Француски 🇹🇩 Хауса 🇮🇳 хинди 🇮🇩 индонезиски 🇮🇹 италијански 🇯🇵 Јапонски 🇰🇷 корејски 🇮🇳 Маранти 🇵🇱 полски 🇧🇷 португалски 🇷🇺 руски 🇰🇪 свахили 🇵🇭 тагалог 🇹🇷 турски 🇵🇰 урду 🇻🇳 виетнамски 🇨🇳 кинески

Дали има проблем со овој превод на README?

Овој конкретен превод на оригиналот README може да има недостатоци -- корекциите се многу добредојдени! Ве молиме испратете повлечено барање на GitHub, или ако не ви е удобно да го правите тоа, отворете проблем

Кога креирате нов проблем на GitHub за превод, ве молиме направете:

  • Вклучете ја URL-адресата на страницата (копирајте/залепете од лентата за адреси на прелистувачот)
  • Вклучете го точниот текст што е погрешен (копирајте/залепете од прелистувачот)
  • Ве молиме опишете што не е во ред -- дали преводот е неточен? форматирањето некако е скршено?
  • љубезно понудете предлог за подобар превод или како текстот треба да биде правилно форматиран
  • Ви благодарам!

Содржини

Извор

Поддршка и финансирање

Се обидувам да бидам професионален развивач на софтвер со отворен код. Јас сум работел во Софтверската индустрија долги години, основав успешни компании и ги продавав на јавни претпријатија. Неодамна останав без работа и навистина немам друга работа

Затоа, ќе се обидам да напишам корисен софтвер и да видам дали тоа функционира

Ако уживате во користењето на овој софтвер, јас би бил многу среќен да го добијам дури и истиот најмал месечен придонес преку Patreon

Ви благодарам!

Инсталација

За да ја користите алатката за командна линија, инсталирајте користејќи 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 Translate

Поставете ја променливата на околината GOOGLE_APPLICATION_CREDENTIALS на ингеренциите за JSON што ги преземавте откако ќе откриете како функционира автентикацијата на облакот на Google (може да биде забавно)

Ако работите од изворниот код, можете да ги ставите и во датотека .env во изворот директориум тие ќе бидат вчитани при извршување преку dotenv

Преведување на ресурсна датотека со низа JavaScript

Вашата табела со низа мора да биде во датотека JavaScript во една од овие две форми:

Извоз на ES6:

export default {
  string_key: "some value",
  another_key: "another value",
  ... more keys ...
}

CommonJS извоз

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 е листа на ISO јазични кодови одделени со запирки поддржано од Google Translate

Ако излезната датотека веќе постои, таа ќе се испита за да се утврди кои клучеви веќе постојат. Постоечките клучеви нема да се преведат. Ќе се генерираат и додадат преводи за клучевите што недостасуваат до крајот на објектот JS. Целата датотека секогаш се препишува.

За присилно преведување на сите копчиња, користете ја -f / --force

Преведување директориум со текстуални датотеки

Можете исто така да преведете директориум со датотеки. хокејлизацијата рекурзивно ќе ја посети секоја датотека во директориумот и извршете ја неговата содржина преку Google Translate и зачувајте го излезот до датотека со идентично име во посебно дрво на директориуми

Кога целта на вашиот превод е директориум, овој режим е овозможен

Опцијата -o / --outfile го одредува излезниот директориум

ГОЛЕМО ПРЕДУПРЕДУВАЊЕ: Кога преведувате директориуми, НЕ назначувајте излез директориум тоа е во вашиот влезен директориум! Ако го направите ова, ќе:

  • индуцира бесконечна рекурзија
  • пополнете ја вашата сметка на Google
  • пополнете го вашиот диск
  • помалку забавувај се

Еве пример за тоа што не треба да се прави:

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 е резервиран збор и ќе биде заменет со кодот на јазикот ISO

Што се случува кога горенаведеното работи:

  • Директориумите templates/email/es “ и templates/email/de ќе бидат креирани (ако не постојат)
  • Секоја датотека во templates/email/en ќе биде преведена на шпански и германски
  • Постоечките излезни датотеки нема да се регенерираат освен ако не користите -f / --force
  • Ќе завршите со идентична структура на директориуми и датотеки во es и de како што имате под en

Други опции

Суво трчање

Поминете -n / --dry-run за да се прикаже што би се направило, но всушност не правете повици API или пишувајте датотеки

Сила

Поминете -f / --force за секогаш да ги регенерирате преводите, дури и ако тие веќе постојат

Натпревар

Поминете -m / --match за да ги ограничите датотеките што се обработуваат кога се извршуваат во режим на директориум

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

Вредноста на -m / --match е регекс (пазете правила за цитирање на школка!) што одредува кои датотеки треба да се преведат

Кога се сомневате, можете да ја комбинирате оваа опција со -n / --dry-run за да видите кои датотеки ќе бидат преведени

Исклучува

Понекогаш вашиот -m се совпаѓа со премногу датотеки. Користете ја -e / --excludes за експлицитно исклучување датотеки кои инаку би се совпаѓале

Можете да наведете повеќе регекси, одделени со празни места

Вообичаена употреба би била: --excludes node_modules dist \.git build tmp

Рачки

Низите што треба да се преведат може да содржат шаблони {{ handlebars }} , со две или три кадрави загради

Веројатно НЕ сакате работите во тие шаблони да бидат преведени

Поминете го -H / --handlebars и сè во рамките на {{ ... }} нема да се преведе

Означување

Markdown не е ниту текст ниту HTML, така што Google Translate има одредени тешкотии со него

-M / --markdown овозможува посебно ракување со датотеките за обележување

Со датотеките за обележување, ако не го користите знамето -M , веројатно ќе ги најдете овие проблеми:

  • Скршени врски. Во преводот, знакот празно место се појавува по завршувањето на описот на врската за означување (со ] ), но пред да започне неговата целна врска (со ( ). Ова предизвикува ознаката да се прикажува погрешно, а врската е скршен при прегледување на документот.
  • Код блоковите се преведуваат. Google translate не знае што се смета за код за означување, а што не
  • Неправилно растојание за вовлечените кодни блокови. Тешко е да се зачува растојанието во преводот
  • Работите во backticks ќе се преведат, кога речиси секогаш сакате тие да бидат буквални вредности

Кога е овозможено знамето -M / --markdown :

  • Шаблонот ]( ќе се кондензира на ]( со што ќе се поправат скршените врски за обележување
  • Ќе се стави обвивка „без превод“ околу вовлечените кодни блокови, со што ќе се зачува правилното вовлекување и ќе се осигура дека тие не се преведени
  • Обвивка „без превод“ ќе биде поставена околу текстот во backticks за да се осигура дека тие не се преведени

Процес-како

Нормално, сè се обработува како обичен текст

Ако вашата содржина е HTML, таа ќе биде извалкана освен ако не ја поминете -p html / --process-as html

Филтер

За авантуристи: кога обработувате датотеки во директориум, можете да ја поминете опцијата -F / --filter за филтрирање на излезот пред да се запише во датотечен систем

Вредноста на оваа опција мора да биде патека до датотека JS што извезува функција со име filter

Функцијата filter мора да биде async “ бидејќи await ќе се повика „чек“.

Пред да се запишат датотеките на дискот, целата содржина на датотеката ќе биде предадена на функцијата filter како низа

Повратната вредност од функцијата filter е она што всушност ќе биде запишано во складиштето

Така, имате целосна контрола врз она што конечно ќе биде напишано

filter ќе се бара на следните локации (со .js ќе биде додадена на филтерот име, освен ако веќе не завршува на .js )

  • Тековниот директориум
  • Директориум со име .hokey-filters во тековниот директориум
  • Директориум со име ${HOME}/.hokey-filters , каде што ${HOME} е домашниот директориум на тековниот корисник
  • Вградениот директориум со филтри

Параметри на филтерот

Низата filter може да биде повеќе зборови. Во овој случај, првиот збор е името на филтерот и преостанатите зборови ќе бидат пренесени како аргументи на функцијата filter

Помош

Користете -h / --help за да покажете помош

JSON серија команди

Со -j / --json , можете да извршите повеќе координирани hokey команди

По конвенција оваа датотека се нарекува hokey.json , но можете да ја именувате како што сакате

Ако го предадете директориумот како опција -j,hokeyќе бараhokey.json` во тој директориум

Датотеката 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 за да одредите како е форматиран излезот на индексот. Можете да наведете 'html', 'markdown', 'text' или патеката на датотеката до вашиот сопствен шаблон HandlebarsJS

Ако наведете сопствен шаблон, мора да наведете и датотека (не директориум) за -I / --index опција

Забавно време преведувајќи јазици!