මට මගේ සම්පූර්ණ යෙදුම හෝ වෙබ් අඩවිය Google පරිවර්තනය හරහා ධාවනය කර වෙනත් භාෂාවකින් මූලික පරිවර්තනයක් ලබා ගත නොහැක්කේ ඇයි?
දැන්, ඔබට පුළුවන්!
hokeylization
යන නම portmanteau, එහි තේරුම 'hokey localization'
එය ඉතා සරල බැවින් එය තරමක් හොකී ය: එය Google පරිවර්තනය වෙත නූල් යවයි
එය සරල නමුත් ඉතා බලවත් ය. එය HTML ලේඛන සඳහා විශේෂ සහාය ඇත, HandlebarsJS සැකිලි, සහ Markdown ගොනු.
ඔබට පරිවර්තනය කළ හැකිය:
- පණිවිඩ අඩංගු JavaScript වස්තුවක්
- ඕනෑම ගොනු හෝ නාමාවලි සංඛ්යාවක්, සෑම විටම ප්රත්යාවර්තීව නාමාවලි හරහා ගමන් කරයි
මෙම README.md ලේඛනය hokeylization මෙවලම භාවිතයෙන් පරිවර්තනය කර ඇත Google Translate මඟින් සහාය දක්වන සෑම භාෂාවක්ම!
එය පරිපූර්ණ නොවන බව මට විශ්වාසයි, නමුත් එය කිසිවකට වඩා හොඳ යැයි මම බලාපොරොත්තු වෙමි!
🇸🇦 අරාබි 🇧🇩 බෙංගාලි 🇩🇪 ජර්මානු 🇺🇸 ඉංග්රීසි 🇪🇸 ස්පාඤ්ඤ 🇫🇷 ප්රංශ 🇹🇩 Hausa 🇮🇳 හින්දි 🇮🇩 ඉන්දුනීසියානු 🇮🇹 ඉතාලි 🇯🇵 ජපන් 🇰🇷 කොරියානු 🇮🇳 මරන්ති 🇵🇱 පෝලන්ත 🇧🇷 පෘතුගීසි 🇷🇺 රුසියානු 🇰🇪 Swahili 🇵🇭 Tagalog 🇹🇷 තුර්කි 🇵🇰 උර්දු 🇻🇳 වියට්නාම 🇨🇳 චීන
මුල් [README] හි මෙම විශේෂිත පරිවර්තනය (https://github.com/cobbzilla/hokeylization/blob/master/README.md) දෝෂ සහිත විය හැක -- නිවැරදි කිරීම් ඉතා සාදරයෙන් පිළිගනිමු! කරුණාකර GitHub මත අදින්න ඉල්ලීමක් හෝ ඔබට එය කිරීමට අපහසු නම්, ගැටළුවක් විවෘත කරන්න
ඔබ පරිවර්තනයක් පිළිබඳ නව GitHub ගැටලුවක් සාදන විට, කරුණාකර කරන්න:
- පිටු URL ඇතුළත් කරන්න (බ්රවුසර ලිපින තීරුවෙන් පිටපත් කරන්න/අලවන්න)
- වැරදි පෙළ ඇතුළත් කරන්න (බ්රවුසරයෙන් පිටපත් කරන්න/අලවන්න)
- කරුණාකර වැරදි දේ විස්තර කරන්න -- පරිවර්තනය වැරදිද? හැඩතල ගැන්වීම කෙසේ හෝ කැඩී තිබේද?
- වඩා හොඳ පරිවර්තනයක් පිළිබඳ යෝජනාවක් කාරුණිකව ඉදිරිපත් කරන්න, නැතහොත් පෙළ නිසි ලෙස හැඩසවිය යුතු ආකාරය
- ඔබට ස්තුතියි!
- මූලාශ්රය
- [සහාය සහ අරමුදල්](#සහාය සහ අරමුදල්)
- ස්ථාපනය
- සැකසීම
- JavaScript string සම්පත් ගොනුවක් පරිවර්තනය කිරීම
- පෙළ ගොනු නාමාවලියක් පරිවර්තනය කිරීම
- වෙනත් විකල්ප
- JSON කණ්ඩායම් විධාන
මම වෘත්තීය විවෘත කේත මෘදුකාංග සංවර්ධකයෙකු වීමට උත්සාහ කරමි. මම වැඩ කරලා තියෙනවා වසර ගණනාවක් තිස්සේ මෘදුකාංග කර්මාන්තය, මම සාර්ථක සමාගම් ආරම්භ කර ඒවා පොදු සමාගම්වලට විකුණා ඇත. මෑතකදී මට මගේ රැකියාව අහිමි වූ අතර, මට වෙනත් වැඩ පෙළගැසී නොමැත
ඒ නිසා මම ප්රයෝජනවත් මෘදුකාංගයක් ලිවීමට උත්සාහ කර එය ක්රියාත්මක වේද බලන්න
ඔබ මෙම මෘදුකාංගය භාවිතා කිරීමට කැමති නම්, එය පවා ලැබීම ගැන මම සතුටු වෙමි කුඩාම 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 පරිවර්තන ව්යාපෘතිය හඳුනා ගැනීමට GOOGLE_TRANSLATE_PROJECT_ID
පරිසර විචල්යය සකසන්න
ඔබ බාගත කළ JSON අක්තපත්රවලට GOOGLE_APPLICATION_CREDENTIALS
පරිසර විචල්යය සකසන්න
ගූගල් ක්ලවුඩ් මත සත්යාපනය ක්රියා කරන ආකාරය සොයා ගැනීමෙන් පසුව (එය විනෝදජනක විය හැක)
ඔබ ප්රභව කේතයෙන් ධාවනය කරන්නේ නම්, ඔබට මේවා මූලාශ්රයේ .env
ගොනුවකට ද තැබිය හැකිය
නාමාවලිය dotenv හරහා ධාවන වේලාවේදී ඒවා පටවනු ලැබේ.
ඔබගේ තන්තු වගුව මෙම ආකාර දෙකෙන් එකක 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 පරිවර්තනය හරහා ධාවනය කර ප්රතිදානය සුරකින්න වෙනම නාමාවලි ගසක එක සමාන ලෙස නම් කරන ලද ගොනුවකට
ඔබගේ පරිවර්තනයේ ඉලක්කය නාමාවලියක් වන විට, මෙම මාදිලිය සක්රීය වේ
-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
භාවිතා කරන්නේ නම් මිස පවතින ප්රතිදාන ගොනු නැවත උත්පාදනය නොවේ - ඔබ අවසන් වන්නේ ඔබට 'en' යටතේ ඇති ආකාරයට සමාන නාමාවලි ව්යුහයක් සහ
es
සහde
තුළ ගොනුen
කළ යුතු දේ සංදර්ශන කිරීමට -n
/ --dry-run
පසු කරන්න, නමුත් ඇත්ත වශයෙන්ම කිසිදු API ඇමතුමක් හෝ කිසිදු ගොනුවක් ලියන්න එපා
පරිවර්තන දැනටමත් පැවතියද, සැමවිටම ප්රතිනිර්මාණය කිරීමට -f
/ --force
යන්න
ඩිරෙක්ටරි-ප්රකාරයේ ධාවනය වන විට සැකසූ ගොනු සීමා කිරීමට -m
/ --match
යන්න
ඔබේ මූලාශ්ර නාමාවලියෙහි ඇති සෑම ගොනුවක්ම ඔබේ ඉලක්ක නාමාවලියට පරිවර්තනය කිරීමට ඔබට සැමවිටම අවශ්ය නොවනු ඇත
-m
/ --match
විකල්පයේ අගය නියම කරන regex (පරෙස්සම් ෂෙල් උද්ධෘත නීති!) වේ.
කුමන ගොනු පරිවර්තනය කළ යුතුද යන්න
සැක සහිත විට, පරිවර්තනය කරන්නේ කුමන ගොනුද යන්න බැලීමට ඔබට මෙම විකල්පය -n
/ --dry-run
සමඟ ඒකාබද්ධ කළ හැකිය.
සමහර විට ඔබේ -m
බොහෝ ගොනු වලට ගැලපේ. පැහැදිලිවම බැහැර කිරීමට -e
/ --excludes
විකල්පය භාවිතා කරන්න
වෙනත් ආකාරයකින් ගැලපෙන ගොනු
ඔබට හිස්තැන් වලින් වෙන් කරන ලද බහු regexs ලැයිස්තුගත කළ හැක
පොදු භාවිතයක් වනුයේ: --excludes node_modules dist \.git build tmp
පරිවර්තනය කිරීමට ඇති තන්තු වල රැලි සහිත වරහන් දෙකක් හෝ තුනක් සහිත {{ handlebars }}
සැකිලි අඩංගු විය හැක
ඔබට එම සැකිලි තුළ ඇති දේවල් පරිවර්තනය කිරීමට අවශ්ය නොවේ
-H
/ --handlebars
ධජය පසු කරන්න, සහ {{ ... }}
තුළ ඇති කිසිවක් පරිවර්තනය නොවේ
Markdown යනු පෙළ හෝ html නොවේ, එබැවින් Google පරිවර්තනයට එය සමඟ යම් දුෂ්කරතා ඇත
-M
/ --markdown
ධජය සලකුණු ගොනු සඳහා විශේෂ හැසිරවීම සබල කරයි
සලකුණු ගොනු සමඟ, ඔබ -M
ධජය භාවිතා නොකරන්නේ නම්, ඔබ බොහෝ විට මෙම ගැටළු සොයා ගනු ඇත:
- බිඳුණු සබැඳි. පරිවර්තනයේදී, සලකුණු සබැඳි විස්තරයක් අවසන් වූ පසු (
]
සමඟ) අවකාශ අක්ෂරයක් දිස්වේ එහි ඉලක්ක සබැඳිය ආරම්භ වීමට පෙර ((
සමඟ) මෙය සලකුණු කිරීම වැරදි ලෙස දැක්වීමට හේතු වේ, සහ සබැඳිය ලේඛනය බැලීමේදී කැඩී ඇත. - කේත බ්ලොක් පරිවර්තනය කරනු ලැබේ. මාර්ක්ඩවුන් කේතය සලකන්නේ කුමක්ද සහ එය නොකරන්නේ කුමක්දැයි Google පරිවර්තනය නොදනී
- indented code blocks සඳහා වැරදි පරතරය. පරිවර්තනවලදී පරතරය සංරක්ෂණය කිරීම අපහසුය
- ඔබට සෑම විටම වාගේ ඒවා වචනාර්ථ අගයන් වීමට අවශ්ය වූ විට,
backticks
තුළ ඇති දේවල් පරිවර්තනය වනු ඇත
-M
/ --markdown
ධජය සබල කර ඇති විට:
- රටාව
](
ට ඝනීභවනය වනු ඇත](
මෙලෙස කැඩුණු සලකුණු සබැඳි සවි කරයි - ඉන්ඩෙන්ටඩ් කේත කුට්ටි වටා "පරිවර්තන නැත" දවටනයක් තබනු ඇත, නිසි ඉන්ඩෙන්ටේෂන් ආරක්ෂා කර ඒවා පරිවර්තනය නොවන බව සහතික කරයි
- ඒවා පරිවර්තනය කර නොමැති බව සහතික කිරීම සඳහා
backticks
තුළ පෙළ වටා "පරිවර්තන නැත" ඔතා තබනු ඇත.
සාමාන්යයෙන් සෑම දෙයක්ම සරල පෙළ ලෙස සකසනු ලැබේ
ඔබේ අන්තර්ගතය HTML නම්, ඔබ -p html
/ --process-as html
විකල්පය පසු කරන්නේ නම් මිස එය අවුල් වේ.
වික්රමාන්විතයන් සඳහා: නාමාවලියක ගොනු සැකසීමේදී, ඔබට -F
/ --filter
විකල්පය සමත් විය හැක
ගොනු පද්ධතියට ලිවීමට පෙර ප්රතිදානය පෙරීමට
මෙම විකල්පයේ අගය filter
නම් ශ්රිතයක් අපනයනය කරන JS ගොනුවකට මාර්ගයක් විය යුතුය
filter
ශ්රිතය 'අසමමුහුර්ත' විය යුතුය, මන්ද එය මත await
async
' කැඳවනු ඇත
ගොනු තැටියට ලිවීමට පෙර, සම්පූර්ණ ගොනු අන්තර්ගතය තන්තුවක් ලෙස filter
ලැබේ.
filter
ලැබෙන ප්රතිලාභ අගය සැබවින්ම ගබඩාවට ලියනු ලැබේ
මේ අනුව, අවසානයේ ලියන දේ පිළිබඳ සම්පූර්ණ පාලනය ඔබට ඇත
filter
ස්ක්රිප්ට් පහත ස්ථානවල සොයනු ඇත ( .js
සමඟ පෙරහනට එකතු වේ
නම, එය දැනටමත් අවසන් වන්නේ නම් මිස .js
)
- වත්මන් නාමාවලිය
- වත්මන් නාමාවලිය තුළ
.hokey-filters
නම් නාමාවලියක් ${HOME}/.hokey-filters
, මෙහි${HOME}
වත්මන් පරිශීලකයාගේ මුල් නාමාවලිය වේ- තනා ඇති පෙරහන් නාමාවලිය
filter
වචන කිහිපයක් විය හැක. මෙම අවස්ථාවේදී, පළමු වචනය පෙරහන් නම, සහ
ඉතිරි වචන filter
තර්ක ලෙස යවනු ලැබේ
උදව් පෙන්වීමට -h
/ --help
භාවිත කරන්න
-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"
}
]
}
මෙම උදාහරණයේ මෙන්, තනි මාර්ගයක් වෙනුවට infile
infiles
ලෙස ගොනු මාර්ග මාලාවක් පසු කරන්න:
{
... [
{
"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
සඳහා ගොනුවක් (ඩිරෙක්ටරයක් නොවේ) ද නියම කළ යුතුය.
විකල්පය