Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 23.1 KB

README.md

File metadata and controls

380 lines (276 loc) · 23.1 KB

Акеялізацыя

Чаму я не магу запусціць усё сваё прыкладанне або сайт праз Google Translate і атрымаць базавы пераклад на іншую мову?

Цяпер вы можаце!

Назва hokeylization з'яўляецца portmanteau, што азначае 'лакалізацыя hokey'

Гэта ў некаторай ступені хітра, таму што вельмі проста: ён адпраўляе радкі ў Google Translate

І гэта проста, але таксама вельмі магутна. Ён мае спецыяльную падтрымку дакументаў HTML, HandlebarsJS шаблоны, і файлы Markdown.

Вы можаце перакласці:

  • аб'ект JavaScript, які змяшчае паведамленні
  • любую колькасць файлаў або каталогаў, заўсёды рэкурсіўны пераход па каталогах

Прачытайце гэта на іншай мове

Гэты дакумент README.md быў перакладзены з дапамогай самога інструмента hokeylization на усе мовы, якія падтрымліваюцца 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

Пераклад каталога тэкставых файлаў

Вы таксама можаце перакласці каталог файлаў. hokeylization будзе рэкурсіўна наведваць кожны файл у каталогу і запусціце яго змесціва праз 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 не ведае, што ўцэнка ўлічвае код, а што не
  • Няправільны інтэрвал для блокаў кода з водступам. Інтэрвал цяжка захаваць у перакладзе
  • Рэчы ўнутры backticks будуць перакладзены, калі вы амаль заўсёды хочаце, каб яны былі літаральнымі значэннямі

Калі сцяг -M / --markdown уключаны:

  • Шаблон ]( будзе скарочаны да ]( , такім чынам выпраўляючы непрацуючыя спасылкі ўцэнкі
  • Абгортка "no translate" будзе размешчана вакол блокаў кода з водступам, захоўваючы правільны водступ і гарантуючы, што яны не перакладаюцца
  • Абгортка "no translate" будзе размешчана вакол тэксту ў backticks , каб пераканацца, што яны не перакладаюцца

Працэс-як

Звычайна ўсё апрацоўваецца як звычайны тэкст

Калі ваш кантэнт з'яўляецца HTML, ён будзе сапсаваны, калі вы не перадасце параметр -p html / --process-as html

Фільтр

Для аматараў прыгод: пры апрацоўцы файлаў у каталогу вы можаце перадаць -F / --filter --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 варыянт

Атрымлівайце задавальненне, перакладаючы мовы!