Niyə mən bütün tətbiqimi və ya saytımı Google Translate vasitəsilə işlədə və başqa dildə əsas tərcümə əldə edə bilmirəm?
İndi bilərsən!
hokeylization
' adı bir portmantodur, 'hokey localization' mənasını verir
Bu, bir qədər hokeydir, çünki çox sadədir: o, Google Translate-ə sətirlər göndərir
Və sadə, eyni zamanda çox güclüdür. HTML sənədləri üçün xüsusi dəstəyə malikdir, HandlebarsJS şablonları, və Markdown faylları.
Tərcümə edə bilərsiniz:
- mesajları ehtiva edən JavaScript obyekti
- İstənilən sayda fayl və ya qovluq, həmişə qovluqları rekursiv şəkildə keçərək
Bu README.md sənədi hokeyləşdirmə alətinin özündən istifadə etməklə tərcümə edilmişdir Google Translate tərəfindən dəstəklənən bütün dillər!
Əminəm ki, mükəmməl deyil, amma ümid edirəm ki, heç nədən yaxşıdır!
🇸🇦 Ərəb 🇧🇩 Benqal dili 🇩🇪 Almanca 🇺🇸 İngilis dili 🇪🇸 İspan 🇫🇷 Fransızca 🇹🇩 Hausa 🇮🇳 Hindi 🇮🇩 İndoneziya dili 🇮🇹 İtalyanca 🇯🇵 Yapon 🇰🇷 Koreya 🇮🇳 Marathi 🇵🇱 Polyak dili 🇧🇷 Portuqal dili 🇷🇺 Rus dili 🇰🇪 Suahili 🇵🇭 Taqaloq 🇹🇷 Türkcə 🇵🇰 Urdu 🇻🇳 Vyetnam dili 🇨🇳 Çin
Orijinalın bu xüsusi tərcüməsi README qüsurlu ola bilər -- düzəlişlər çox xoşdur! Lütfən, [GitHub-da çəkmə sorğusu] göndərin (https://github.com/cobbzilla/hokeylization/pulls), və ya bunu etməkdə rahat deyilsinizsə, məsələ açın
Tərcümə ilə bağlı yeni GitHub məsələsi yaratdığınız zaman, lütfən:
- səhifənin URL-ni daxil edin (brauzerin ünvan çubuğundan kopyalayın/yapışdırın)
- səhv olan mətni daxil edin (brauzerdən kopyalayın/yapışdırın)
- zəhmət olmasa nəyin səhv olduğunu təsvir edin -- tərcümə səhvdir? formatlama birtəhər pozuldu?
- lütfən daha yaxşı tərcümə təklifi və ya mətnin düzgün formatlaşdırılması ilə bağlı təklif verin
- Çox sağ ol!
- Mənbə
- [Dəstək və Maliyyələşdirmə](#Dəstək və Maliyyələşdirmə)
- Quraşdırma
- Quraşdırma
- JavaScript sətir resurs faylının tərcüməsi
- [Mətn faylları kataloqunun tərcüməsi](#Mətn fayllarının kataloqunun tərcüməsi)
- Digər seçimlər
- [JSON toplu əmrləri](#JSON toplu əmrləri)
Mən peşəkar açıq mənbə proqram təminatı tərtibatçısı olmağa çalışıram. məndə işləmişəm Uzun illər proqram sektorunda müvəffəqiyyətli şirkətlər qurdum və onları açıq şirkətlərə satdım. Bu yaxınlarda işimi itirdim və başqa işim yoxdur
Beləliklə, mən faydalı proqram yazmağa çalışacağam və bunun işlədiyini görəcəyəm
Bu proqram təminatından istifadə etməkdən zövq alırsınızsa, mən hətta onu da almaqdan çox məmnun olaram ən kiçik Patreon vasitəsilə aylıq töhfə
Çox sağ ol!
Komanda xətti alətindən istifadə etmək üçün npm
və ya yarn
istifadə edərək quraşdırın:
npm install -g hokeylization
yarn global add hokeylization
Kitabxana kimi istifadə etmək üçün daha kiçik olan lite
versiyasını quraşdırın:
npm install -g hokeylization-lite
yarn global add hokeylization-lite
Sonra hokey
əmri üçün yardıma baxın:
hokey --help
hokey -h
Çıxışı öz dilinizdə və ya başqa dildə görmək istəyirsiniz?
hokey
dili avtomatik olaraq qabığınızın mühit dəyişənlərindən aşkarlamağa çalışır
Siz LC_ALL
mühit dəyişənini təyin etməklə dili məcbur edə bilərsiniz:
LC_ALL=it hokey --help
Qeyd edək ki, əgər siz hokeylization-lite
quraşdırmısınızsa, əmr yardımı yalnız ingilis dilində mövcuddur
Google Translate layihənizi müəyyən etmək üçün GOOGLE_TRANSLATE_PROJECT_ID
mühit dəyişənini təyin edin
GOOGLE_APPLICATION_CREDENTIALS
mühit dəyişənini endirdiyiniz JSON etimadnaməsinə təyin edin
autentifikasiyanın Google buludunda necə işlədiyini anladıqdan sonra (əyləncəli ola bilər)
Əgər mənbə kodundan işləyirsinizsə, .env
faylına da qoya bilərsiniz
qovluq onlar dotenv vasitəsilə iş vaxtında yüklənəcəklər
Sətir cədvəliniz gərək bu iki formadan birində JavaScript faylında olmalıdır:
ES6 ixracı:
export default {
string_key: "some value",
another_key: "another value",
... more keys ...
}
CommonJS ixracı
module.exports = {
string_key: "some value",
another_key: "another value",
... more keys ...
}
Bu fayl myfile.en.js
adlandırılıbsa, siz onu ispan və alman dillərinə aşağıdakılarla tərcümə edə bilərsiniz:
hokey -l es,de -o myfile.LANG.js myfile.en.js
Yuxarıdakı LANG
xüsusidir -- bu alətdə qorunan sözdür!
LANG
çıxış faylları üçün dil kodu ilə əvəz olunur
Beləliklə, yuxarıdakı əmr faylları yaradır:
myfile.es.js
myfile.de.js
-l
/ --languages
seçimi ISO dil kodlarının vergüllə ayrılmış siyahısıdır
Google Translate tərəfindən dəstəklənir
Çıxış faylı artıq mövcuddursa, hansı açarların artıq mövcud olduğunu müəyyən etmək üçün araşdırılacaq. Mövcud açarlar tərcümə edilməyəcək. Çatışmayan açarlar üçün tərcümələr yaradılacaq və əlavə olunacaq JS obyektinin sonuna qədər. Bütün fayl həmişə yenidən yazılır.
Bütün düymələri yenidən tərcümə etməyə məcbur etmək üçün -f
/ --force
seçimindən istifadə edin
Siz həmçinin faylların kataloqunu tərcümə edə bilərsiniz. hokeylization recursively hər ziyarət edəcək faylı kataloqa daxil edin və məzmununu Google Translate vasitəsilə işə salın və nəticəni yadda saxlayın ayrı kataloq ağacındakı eyni adlı fayla
Tərcümənizin hədəfi kataloq olduqda, bu rejim aktivləşdirilir
-o
/ --outfile
seçimi çıxış qovluğunu təyin edir
BÖYÜK XƏBƏRDARLIQ: Kataloqları tərcümə edərkən, QAYDIRMAYIN, çıxış kataloqunu göstərin bu sizin giriş kataloqunuzdadır! Bunu etsəniz, aşağıdakıları edəcəksiniz:
- sonsuz rekursiyaya səbəb olur
- Google hesabınızı işə salın
- diskinizi doldurun
- daha az əylənin
Budur nələrin edilməməsinin nümunəsi:
hokey -l es -o templates/es templates # <--- DON'T DO THIS!
Bu işlədikdə, tərcümə edilmiş fayllar templates/es
və beləliklə, yeni olur
tərcümə etmək üçün mənbə faylları, çünki onlar templates/
altındadır -- bu proses davam edir
əbədi, bunu etmə!
Yaxşı, tutaq ki, kataloqda bəzi e-poçt şablonlarınız var:
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
Bütün bunları ispan və alman dillərinə tərcümə etmək üçün çalıştırın:
hokey -l es,de -o templates/email/LANG templates/email/en
Yuxarıdakı LANG
sözdür və ISO dil kodu ilə əvəz olunacaq
Yuxarıdakılar işlədikdə nə baş verir:
templates/email/es
" vətemplates/email/de
yaradılacaq (əgər onlar mövcud deyilsə)templates/email/en
hər bir fayl ispan və alman dillərinə tərcümə olunacaq-f
/--force
istifadə etməyincə mövcud çıxış faylları bərpa olunmayacaq- Siz 'en' altında olduğu kimi '
es
vəde
daxilində eyni kataloq strukturu və faylları iləen
Nə ediləcəyini göstərmək üçün -n
/ --dry-run
, lakin əslində heç bir API zəngi etməyin və ya fayl yazmayın
Tərcümələri, hətta mövcud olsalar belə, həmişə bərpa etmək üçün -f
/ --force
Kataloq rejimində işləyərkən işlənmiş faylları məhdudlaşdırmaq üçün -m
/ --match
keçin
Mənbə kataloqunuzdakı hər faylı həmişə hədəf kataloqunuza tərcümə etmək istəməyə bilərsiniz
-m
/ --match
seçiminin dəyəri regexdir (qabıqdan sitat gətirmə qaydalarına diqqət yetirin!)
hansı fayllar tərcümə edilməlidir
Şübhə olduqda, hansı faylların tərcümə ediləcəyini görmək üçün bu seçimi -n
/ --dry-run
ilə birləşdirə bilərsiniz.
Bəzən -m
çox fayla uyğun gəlir. Açıqca istisna etmək üçün -e
/ --excludes
--excludes` seçimindən istifadə edin
əks halda uyğunlaşacaq fayllar
Siz boşluqlarla ayrılmış çoxlu regexləri sadalaya bilərsiniz
Ümumi istifadə belə olardı: --excludes node_modules dist \.git build tmp
Tərcümə ediləcək sətirlər iki və ya üç mötərizəli {{ handlebars }}
şablonlarından ibarət ola bilər
Siz yəqin ki, bu şablonların içindəki əşyaların tərcümə olunmasını İSTƏMƏYİNİZ
-H
/ --handlebars
bayrağını keçin və {{ ... }}
daxilində olan heç bir şey tərcümə edilməyəcək
Markdown nə mətndir, nə də html, ona görə də Google Translate-də bəzi çətinliklər var
-M
/ --markdown
bayrağı markdown faylları üçün xüsusi işləməyə imkan verir
Markdown faylları ilə, əgər -M
bayrağından istifadə etməsəniz, yəqin ki, bu problemlərlə rastlaşacaqsınız:
- Sınıq bağlantılar. Tərcümədə, işarələmə linkinin təsviri bitdikdən sonra boşluq simvolu görünür (
]
ilə) lakin hədəf linki başlamazdan əvvəl ((
ilə). Bu, işarələmənin səhv göstərilməsinə səbəb olur və link sənədə baxarkən pozulur. - Kod blokları tərcümə olunur. Google translate bilmir ki, markdown kodu nə hesab edir və nəyi etmir
- Girintili kod blokları üçün səhv boşluq. Tərcümə zamanı intervalı qorumaq çətindir
backticks
daxilində olan şeylər, demək olar ki, həmişə onların hərfi dəyərlər olmasını istədiyiniz zaman tərcümə ediləcək
-M
/ --markdown
bayrağı aktiv olduqda:
- Nümunə
](
](
sıxlaşdırılacaq, beləliklə, pozulmuş işarələmə bağlantıları düzəldilir. - "Tərcümə yoxdur" bandı girintili kod bloklarının ətrafına yerləşdiriləcək, düzgün girintiləri qoruyacaq və onların tərcümə edilməməsini təmin edəcək.
- Tərcümə olunmamasını təmin etmək üçün mətnin ətrafında "tərcümə yoxdur"
backticks
yerləşdiriləcək
Normalda hər şey düz mətn kimi işlənir
Məzmununuz HTML-dirsə, -p html
/ --process-as html
seçimini keçirməsəniz, məzmun pozulacaq.
Macəra həvəskarları üçün: kataloqda faylları -F
/ --filter
seçimini keçə bilərsiniz.
fayl sisteminə yazılmazdan əvvəl çıxışı süzmək üçün
Bu seçimin dəyəri filter
adlı funksiyanı ixrac edən JS faylına yol olmalıdır
filter
async
olmalıdır, çünki ona await
çağırılacaq
Fayllar diskə yazılmazdan əvvəl bütün fayl məzmunu sətir kimi filter
.
filter
funksiyasından qaytarılan dəyər əslində yaddaşa yazılacaq dəyərdir
Beləliklə, nəhayət yazılacaqlara tam nəzarət edirsiniz
filter
skripti aşağıdakı yerlərdə axtarılacaq ( .js
ilə əlavə olunacaq)
ad, əgər artıq .js
)
- Cari kataloq
- Cari kataloq daxilində
.hokey-filters
adlı kataloq ${HOME}/.hokey-filters
adlı kataloq, burada${HOME}
cari istifadəçinin ev kataloqudur- Daxili filtrlər kataloqu
filter
sətri bir neçə sözdən ibarət ola bilər. Bu halda ilk söz filtrin adıdır və
qalan sözlər filter
funksiyasına arqument kimi ötürüləcək
Yardım göstərmək üçün -h
/ --help
istifadə edin
-j
/ --json
seçimi ilə siz çoxlu əlaqələndirilmiş hokey
əmrlərini işlədə bilərsiniz
Konvensiyaya görə bu fayl hokey.json
adlanır, lakin siz onu istədiyiniz kimi adlandıra bilərsiniz
Əgər kataloqu -j
seçimi kimi keçirsəniz, hokey
hokey.json
.
JSON faylında bir obyekt olmalıdır. Həmin obyekt daxilində onun xassə adları ilə eynidir
komanda xətti seçimləri, üstəgəl hokey
adlı bir əlavə xüsusiyyət
hokey
. Bu əmrlər daxilində elan edilən xüsusiyyətlər olacaq
xarici obyektdəki hər hansı dublikat bəyannamələri ləğv edin.
hokey
massivindəki hər bir obyekt daxilində siz name
və giriş və çıxış fayllarını təyin etməlisiniz.
Budur 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"
}
]
}
Bu misalda olduğu kimi bir sıra fayl yollarını infiles
tək yolun əvəzinə infile
:
{
... [
{
"name": "my docs",
"infiles": ["README.md", "INSTALL.md", "TUTORIAL.md"],
"outfile": "docs/LANG/",
"markdown": true
]
}
Bir çox dillərə tərcümə edərkən, hokey
edilən bütün tərcümələri sadalayan indeks faylı yarada bilər.
və onlara bağlantılar təqdim edir
İndekslər yaradan zaman yalnız bir giriş mənbəyinə sahib ola bilərsiniz
-I
/ --index
seçimini keçin, dəyər indeks faylının yaradılacağı yerdir, hansı fayl ola bilər
və ya kataloq. Əgər bu bir kataloqdursa, şablon əsasında standart fayl adı istifadə olunacaq (aşağıya bax)
İndeks çıxışının necə formatlandığını müəyyən etmək üçün -A
/ --index-template
istifadə edin. 'html' təyin edə bilərsiniz,
'markdown', 'mətn' və ya öz HandlebarsJS şablonunuza gedən fayl yolu
Öz şablonunuzu göstərsəniz, -I
/ --index
üçün fayl (kataloq deyil) də göstərməlisiniz.
seçim