פארוואס קען איך נישט לויפן מיין גאנצע אַפּ אָדער פּלאַץ דורך Google Translate און באַקומען אַ יקערדיק איבערזעצונג אין אן אנדער שפּראַך?
איצט, איר קענען!
דער נאָמען hokeylization
איז אַ פּאָרטמאַנטעאַו, טייַטש 'האָקיי לאָוקאַלאַזיישאַן'
עס איז אַ ביסל האָקי ווייַל עס איז זייער פּשוט: עס סענדז סטרינגס צו Google Translate
און עס איז פּשוט, אָבער אויך זייער שטאַרק. עס האט ספּעציעל שטיצן פֿאַר HTML דאָקומענטן, HandlebarsJS טעמפּלאַטעס, און מאַרקדאָוון טעקעס.
איר קענט איבערזעצן:
- אַ דזשאַוואַסקריפּט כייפעץ מיט אַרטיקלען
- קיין נומער פון טעקעס אָדער דיירעקטעריז, שטענדיק דורכגיין דירעקטעריז רעקורסיוולי
דעם README.md דאָקומענט איז איבערגעזעצט, ניצן די האָקייליזאַטיאָן געצייַג זיך, אין יעדער שפּראַך געשטיצט דורך Google Translate!
איך בין זיכער אַז עס איז נישט גאנץ, אָבער איך האָפֿן עס איז בעסער ווי גאָרנישט!
🇸🇦 אַראַביש 🇧🇩 בענגאַליש 🇩🇪 דייַטש 🇺🇸 ענגליש 🇪🇸 שפּאַניש 🇫🇷 פראנצויזיש 🇹🇩 Hausa 🇮🇳 הינדיש 🇮🇩 אינדאָנעזיש 🇮🇹 איטאַליעניש 🇯🇵 יאַפּאַניש 🇰🇷 קאָרעיִש 🇮🇳 Marathi 🇵🇱 פויליש 🇧🇷 פּאָרטוגעזיש 🇷🇺 רוסיש 🇰🇪 סוואַהילי 🇵🇭 Tagalog 🇹🇷 טערקיש 🇵🇰 אורדו 🇻🇳 וויעטנאַמעזיש 🇨🇳 כינעזיש
די באַזונדער איבערזעצונג פון דער אָריגינעל README קען זיין פלאָז - * קערעקשאַנז זענען זייער באַגריסן!* ביטע שיקן אַ ציען בעטן אויף גיטהוב, אָדער אויב איר זענט נישט באַקוועם צו טאָן דאָס, עפענען אַן אַרויסגעבן
ווען איר שאַפֿן אַ נייַע GitHub אַרויסגעבן וועגן אַ איבערזעצונג, ביטע טאָן:
- אַרייַננעמען די URL פון די בלאַט (קאָפּי / פּאַפּ פון דעם בלעטערער אַדרעס באַר)
- אַרייַננעמען די פּינטלעך טעקסט וואָס איז פאַלש (קאָפּי / פּאַפּ פון בלעטערער)
- ביטע באַשרייַבן וואָס איז פאַלש - איז די איבערזעצונג פאַלש? איז די פאָרמאַטטינג עפעס צעבראכן?
- ביטע פאָרשלאָגן אַ פאָרשלאָג פון אַ בעסער איבערזעצונג, אָדער ווי דער טעקסט זאָל זיין רעכט פאָרמאַטטעד
- אדאנק!
- מקור
- שטיצן און פאַנדינג
- ינסטאַלירונג
- סעטאַפּ
- [טראַנסלייטינג אַ דזשאַוואַסקריפּט שטריקל מיטל טעקע](# טראַנסלייטינג-אַ-דזשאַוואַסקריפּט-סטרינג-ריסאָרס-טעקע)
- [טראַנסלייטינג אַ וועגווייַזער פון טעקסט טעקעס](# טראַנסלייטינג אַ וועגווייַזער פון טעקסט טעקעס)
- אנדערע אָפּציעס
- 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_TRANSLATE_PROJECT_ID
צו ידענטיפיצירן דיין Google זעץ פּרויעקט
שטעלן די סוויווע בייַטעוודיק GOOGLE_APPLICATION_CREDENTIALS
צו די JSON קראַדענטשאַלז איר דאַונלאָודיד
נאָך פיגורינג אויס ווי אָטענטאַקיישאַן אַרבעט אויף Google וואָלקן (עס קען זיין שפּאַס)
אויב איר לויפן פֿון די מקור קאָד, איר קענען אויך שטעלן די אין אַ .env
טעקע אין די מקור
וועגווייַזער זיי וועט זיין לאָודיד ביי רונטימע דורך dotenv
דיין שטריקל טיש מוז זיין אין אַ דזשאַוואַסקריפּט טעקע אין איינער פון די צוויי פארמען:
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 זעץ, און ראַטעווען די רעזולטאַט צו אַ יידעניקאַל נאָמען טעקע אין אַ באַזונדער וועגווייַזער בוים
ווען דער ציל פון דיין איבערזעצונג איז אַ וועגווייַזער, דעם מאָדע איז ענייבאַלד
די -o
/ --outfile
אָפּציע ספּעציפיצירט די רעזולטאַט וועגווייַזער
** גרויס ווארענונג **: ווען איבערזעצן דירעקטעריז, ** טאָן ניט ** ספּעציפיצירן אַ רעזולטאַט וועגווייַזער וואָס איז אין דיין אַרייַנשרייַב וועגווייַזער! אויב איר טאָן דאָס, איר וועט:
- ינדוסירן ינפאַנאַט רעקורסיאָן
- פאַרגרעסערן דיין Google רעכענונג
- פּלאָמבירן דיין דיסק
- האָבן ווייניקער שפּאַס
דאָ איז אַ בייַשפּיל פון וואָס * ניט צו טאָן *:
hokey -l es -o templates/es templates # <--- DON'T DO THIS!
ווען דאָס לויפט, איבערגעזעצט טעקעס זענען געשריבן צו templates/es
, און אַזוי ווערן נייַ
מקור טעקעס צו איבערזעצן, זינט זיי זענען אונטער templates/
- דער פּראָצעס האלט
אויף אייביק, טאָן ניט טאָן עס!
גוט, לאָזן ס זאָגן איר האָבן עטלעכע E- בריוו טעמפּלאַטעס אין אַ וועגווייַזער:
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
צו ווייַזן וואָס וואָלט זיין געטאן, אָבער טאָן ניט טאַקע מאַכן קיין אַפּי קאַללס אָדער שרייַבן קיין טעקעס
פאָרן -f
/ --force
צו שטענדיק רידזשענערייט איבערזעצונגען, אפילו אויב זיי שוין עקסיסטירן
פאָרן -m
/ --match
צו באַגרענעצן די פּראַסעסט טעקעס ווען פליסנדיק אין וועגווייַזער מאָדע
איר קען נישט שטענדיק ווילן צו איבערזעצן יעדער טעקע אין דיין מקור וועגווייַזער צו דיין ציל וועגווייַזער
די ווערט פון די -m
/ --match
אָפּציע איז אַ רעגעקס (היט אייך שאָל ציטירן כּללים!) וואָס ספּעציפיצירט
וואָס טעקעס זאָל זיין איבערגעזעצט
ווען אין צווייפל, איר קענען פאַרבינדן דעם אָפּציע מיט -n
/ --dry-run
צו זען וואָס טעקעס וואָלט זיין איבערגעזעצט
מאל דיין -m
שוועבעלעך צו פילע טעקעס. ניצן די -e
/ --excludes
אָפּציע צו בפירוש ויסשליסן
טעקעס וואָס אַנדערש וואָלט האָבן מאַטשט
איר קענען רשימה קייפל רעגעקסעס, אפגעשיידט דורך ספּייסאַז
א פּראָסט נוצן וואָלט זיין: --excludes node_modules dist \.git build tmp
די סטרינגס צו איבערזעצן קען אַנטהאַלטן {{ handlebars }}
טעמפּלאַטעס, אָדער מיט צוויי אָדער דריי געגרייַזלט-ברייסאַז
איר מיסטאָמע * טאָן ניט * וועלן די שטאָפּן ין די טעמפּלאַטעס צו זיין איבערגעזעצט
פאָרן די -H
/ --handlebars
פאָן, און אַלץ אין {{ ... }}
וועט נישט זיין איבערגעזעצט
מאַרקדאַון איז ניט טעקסט אדער HTML, אַזוי Google זעץ האט עטלעכע שוועריקייטן מיט אים
די -M
/ --markdown
פאָן ינייבאַלז ספּעציעל האַנדלינג פֿאַר מאַרקדאַון טעקעס
מיט מאַרקדאַון טעקעס, אויב איר טאָן ניט נוצן די -M
פאָן, איר וועט מיסטאָמע געפֿינען די פּראָבלעמס:
- צעבראכן לינקס. אין דער איבערזעצונג, אַ פּלאַץ כאַראַקטער אויס נאָך אַ מאַרקדאַון לינק באַשרייַבונג ענדס (מיט
]
) אָבער איידער זיין ציל לינק הייבט זיך אָן (מיט(
). דאס גורם אז דער מאַרקדאַון איז נישט ריכטיק, און דער לינק איז צעבראכן ווען וויוינג דעם דאָקומענט. - קאָד בלאַקס ווערן איבערגעזעצט. Google זעץ קען נישט וויסן וואָס מאַרקדאַון באַטראַכט קאָד און וואָס עס טוט נישט
- אומרעכט ספּייסינג פֿאַר ינדענטיד קאָד בלאַקס. ספּייסינג איז שווער צו ופהיטן אין איבערזעצונג
- טינגז ין פון
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
צו ווייַזן הילף
מיט די -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',
'מאַרקדאָוון', 'טעקסט' אָדער דער טעקע דרך צו דיין אייגענע HandlebarsJS מוסטער
אויב איר ספּעציפיצירן דיין אייגענע מוסטער, איר מוזן אויך ספּעציפיצירן אַ טעקע (נישט אַ וועגווייַזער) פֿאַר די -I
/ --index
אָפּציע