Skip to content

Commit

Permalink
feat(i18n): script generating json translations (tari-project#945)
Browse files Browse the repository at this point in the history
Motivation and Context
---
We spend so much time on adding new i18n translations to the JSON files
so I decided to automate this process a bit.

General Info
---
We can now generate json boilerplate using npm script. It also can be
used to solve conflicts related to the i18n.

Description
---
Updates translation files by setting a nested value in JSON files
located in the 'public/locales' directory. It takes a file name and an
optional key-value pair as arguments. The key is a dot-separated string
representing the nested property to update, and the value is the new
value to set.

If only the file name is provided, the script will clean up and format
the translation files by merging them with the default English
translations and sorting the keys.
 
Usage
---
 `npm run translate <fileName> [<key="value">]`
 
Arguments
---
* **fileName** - The name of the scope file to search for (without
extension).
* **key="value"** (optional) - The key-value pair to set in the
translation files.
 
Examples
---
```npm run translate common``` - Cleans up and formats the translation files for the 'common' scope, add missing translations with english template.
```npm run translate common greeting.hello="Hello, world!"``` - Sets the
value of 'greeting.hello' to "Hello, world!" in the 'common' scope.

---------

Co-authored-by: Brian Pearce <[email protected]>
  • Loading branch information
mmrrnn and brianp authored Oct 28, 2024
1 parent 45ea5cb commit 718f4d5
Show file tree
Hide file tree
Showing 136 changed files with 3,051 additions and 2,399 deletions.
2 changes: 1 addition & 1 deletion eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export default [
parser: tsParser,
parserOptions: { ecmaFeatures: { jsx: true } },
},
files: ['src/**/*.{js,ts,jsx,tsx}'],
files: ['src/**/*.{js,ts,jsx,tsx}', 'scripts/**/*.{js,ts,jsx,tsx}'],
ignores: ['./**/*.config.{js,ts}'],
plugins: { react, 'react-hooks': hooksPlugin, i18next },
rules: {
Expand Down
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@
"preview": "vite preview",
"tauri": "tauri",
"lint": "eslint src/",
"lint:fix": "eslint src/ --fix"
"lint:fix": "eslint src/ --fix",
"translate": "node ./scripts/translator.js"
},
"dependencies": {
"@floating-ui/react": "^0.26.25",
Expand Down
54 changes: 27 additions & 27 deletions public/locales/af/airdrop.json
Original file line number Diff line number Diff line change
@@ -1,38 +1,38 @@
{
"airdropGame": "Airdrop Speletjie",
"loginButton": "Meld aan om edelstene te eis",
"logout": "Teken uit",
"referral": "Nooi \"n vriend",
"unclaimedGems": "Ongeëisde Edelstene",
"inviteFirends": "Nooi Vriende",
"invitedAmount": "U het <span>{{count}}</span> vriende genooi",
"nextTierBonus": "Nooi <strong>{{count}} vriende</strong> & verdien {{bonusGems}} bonus edelstene",
"bonus-gems-earned": "Bonus edelstene verdien",
"claimGems": "Eis Edelstene",
"doLater": "Ek sal dit later doen",
"linkCopied": "Skakel gekopieer!",
"giftReferralCodeHeader": "Eis u verwysingskode <span>{{gems}}<image src=\"/assets/images/gem.png\" alt=\"\"/></span> edelstene.",
"claimModalFieldLabel": "Opsioneel",
"claimModalFieldPlaceholder": "Voer verwysingskode in",
"claimModalFinePrint": "<strong>Neem asseblief kennis:</strong> die eis van edelstene skakel analise aan sodat ons Universe kan verbeter",
"claimModalText": "Verdien edelstene deur te myn en vriende te verwys om u airdrop-belonings tydens die toetsnetwerk te verhoog! Het u \"n verwysingskode? Voer dit hieronder in en verdien \"n bykomende <strong>{{gems}}</strong> edelstene vir u en u vriend!",
"claimModalTitle": "Verdien belonings vir Mynbou op Toetsnetwerk",
"claimReferralCode": "Eis u verwysingskode <span>{{gems}}<image src=\"/assets/images/gem.png\" alt=\"\"/></span> edelstene.",
"claimReferralGifts": "Eis u verwysingskode en verdien {{gems}} edelstene. Sodra u u rekening koppel, sal u u edelstene ontvang.",
"doLater": "Ek sal dit later doen",
"giftReferralCode": "Verdien {{gems}} edelstene vir elke vriend wat u na Tari Heelal nooi. Sodra hulle hul rekening koppel, sal u u edelstene ontvang.",
"permissionNoGems": {
"title": "Maak Tari Heelal beter",
"text": "Tari Heelal wil graag analise gebruik om u ervaring te verbeter."
},
"giftReferralCodeHeader": "Eis u verwysingskode <span>{{gems}}<image src=\"/assets/images/gem.png\" alt=\"\"/></span> edelstene.",
"inviteFirends": "Nooi Vriende",
"inviteFriendsText": "Kopieer skakel en deel dit",
"invitedAmount": "U het <span>{{count}}</span> vriende genooi",
"keep-mining-to-earn-rewards": "Hou aan myn om meer belonings te verdien!",
"linkCopied": "Skakel gekopieer!",
"logged-in-as": "Aangemeld as <strong>@{{twitter}}</strong>",
"loginButton": "Meld aan om edelstene te eis",
"logout": "Teken uit",
"nextTierBonus": "Nooi <strong>{{count}} vriende</strong> & verdien {{bonusGems}} bonus edelstene",
"permission": {
"title": "Verdien Edelstene & maak Tari Heelal beter",
"text": "Tari Heelal wil graag analise gebruik om u ervaring te verbeter en u met edelstene vir mynbou te beloon."
"text": "Tari Heelal wil graag analise gebruik om u ervaring te verbeter en u met edelstene vir mynbou te beloon.",
"title": "Verdien Edelstene & maak Tari Heelal beter"
},
"claimModalTitle": "Verdien belonings vir Mynbou op Toetsnetwerk",
"claimModalText": "Verdien edelstene deur te myn en vriende te verwys om u airdrop-belonings tydens die toetsnetwerk te verhoog! Het u \"n verwysingskode? Voer dit hieronder in en verdien \"n bykomende <strong>{{gems}}</strong> edelstene vir u en u vriend!",
"claimModalFieldLabel": "Opsioneel",
"claimModalFieldPlaceholder": "Voer verwysingskode in",
"permissionNoGems": {
"text": "Tari Heelal wil graag analise gebruik om u ervaring te verbeter.",
"title": "Maak Tari Heelal beter"
},
"referral": "Nooi \"n vriend",
"topTooltipText": "Kry \"n Tari Airdrop deur edelstene in te samel. Hoe meer edelstene jy verdien, hoe groter is jou airdrop.",
"topTooltipTitle": "Testnet Belonings",
"claimModalFinePrint": "<strong>Neem asseblief kennis:</strong> die eis van edelstene skakel analise aan sodat ons Universe kan verbeter",
"inviteFriendsText": "Kopieer skakel en deel dit",
"logged-in-as": "Aangemeld as <strong>@{{twitter}}</strong>",
"bonus-gems-earned": "Bonus edelstene verdien",
"keep-mining-to-earn-rewards": "Hou aan myn om meer belonings te verdien!",
"your-friend-accepted-gift": "Een van jou vriende het jou geskenk aanvaar!",
"you-reached-your-giftinh-goal": "Jy het jou geskenkdoelwit bereik!"
"unclaimedGems": "Ongeëisde Edelstene",
"you-reached-your-giftinh-goal": "Jy het jou geskenkdoelwit bereik!",
"your-friend-accepted-gift": "Een van jou vriende het jou geskenk aanvaar!"
}
36 changes: 18 additions & 18 deletions public/locales/af/common.json
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
{
"submit": "Dien in",
"cancel": "Kanselleer",
"temperature": "Temperatuur",
"max-temperature": "Maksimum temperatuur",
"usage": "Gebruik",
"seconds": "Sekondes",
"close-tari-universe": "Sluit Tari Universe",
"connection": "Verbinding",
"continue": "Gaan voort",
"copied": "Gekopieer",
"unknown": "Onbekend",
"versions": "Weergawes",
"version": "Weergawe",
"resources": "Hulpbronne",
"critical-error": "Kritieke fout",
"day": "Dag",
"disconnect": "Ontkoppel",
"hashrate": "Hashtempo",
"utilization": "Benutting",
"max-temperature": "Maksimum temperatuur",
"mode": "Modus",
"day": "Dag",
"shutting-down": "Afskakel..",
"critical-error": "Kritieke fout",
"please-try-again-later": "Probeer asseblief later weer. As die probleem voortduur, kontak ons asseblief.",
"close-tari-universe": "Sluit Tari Universe",
"resources": "Hulpbronne",
"restart": "Herbegin",
"seconds": "Sekondes",
"shutting-down": "Afskakel..",
"submit": "Dien in",
"tari-universe": "Tari Heelal",
"temperature": "Temperatuur",
"testnet": "Toetsnetwerk",
"continue": "Gaan voort",
"restart": "Herbegin",
"connection": "Verbinding",
"disconnect": "Ontkoppel"
"unknown": "Onbekend",
"usage": "Gebruik",
"utilization": "Benutting",
"version": "Weergawe",
"versions": "Weergawes"
}
10 changes: 5 additions & 5 deletions public/locales/af/components.json
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
{
"field-error-message": {
"integers-only": "Slegs heelgetalle toegelaat",
"invalid": "Veld ongeldig",
"required": "Veld benodig",
"password-too-short": "Wagwoord moet ten minste 8 karakters hê",
"invalid-url": "Moet 'n geldige URL-adres wees",
"invalid-email": "Voer 'n geldige e-posadres in",
"invalid-date": "Datum is ongeldig",
"integers-only": "Slegs heelgetalle toegelaat"
"invalid-email": "Voer 'n geldige e-posadres in",
"invalid-url": "Moet 'n geldige URL-adres wees",
"password-too-short": "Wagwoord moet ten minste 8 karakters hê",
"required": "Veld benodig"
}
}
4 changes: 2 additions & 2 deletions public/locales/af/external-dependency-dialog.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"title": "Eksterne Afhanklikhede",
"description": "Die volgende eksterne afhanklikhede is nodig vir die toepassing om korrek te funksioneer.",
"download-and-install": "Laai af en installeer"
"download-and-install": "Laai af en installeer",
"title": "Eksterne Afhanklikhede"
}
24 changes: 12 additions & 12 deletions public/locales/af/mining-view.json
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
{
"floor": "Vloer",
"current-block-time": "Huidige bloktyd",
"your-reward-is": "Jou beloning is",
"connection-to-node-lost": "Kontak met mynwerker verloor. Wag asseblief vir mynwerker om kontak te maak of begin weer.",
"current-block-time": "Huidige bloktyd",
"day": "day",
"estimated-earnings": "Geskatte verdienste",
"floor": "Vloer",
"mining-button-text": {
"starting-mining": "Myn begin",
"start-mining": "Begin myn",
"pause-mining": "Onderbreek myn",
"changing-mode": "Verander modus",
"cancel-mining": "Kanselleer myn",
"waiting-for-idle": "Wag tot onaktief",
"changing-mode": "Verander modus",
"pause-mining": "Onderbreek myn",
"start-mining": "Begin myn",
"started-auto-mining": "Outomatiese myn het begin",
"stop-mining": "Stop Mynbou"
"starting-mining": "Myn begin",
"stop-mining": "Stop Mynbou",
"waiting-for-idle": "Wag tot onaktief"
},
"you-won-while-away": "<span>Jy het {{ blocks }} gewen</span> terwyl jy weg was",
"estimated-earnings": "Geskatte verdienste",
"you-earn-rewards-separately": "Jy verdien belonings vir die myn van CPU en GPU afsonderlik",
"day": "day"
"you-won-while-away": "<span>Jy het {{ blocks }} gewen</span> terwyl jy weg was",
"your-reward-is": "Jou beloning is"
}
9 changes: 9 additions & 0 deletions public/locales/af/p2p.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"miners": "Miners",
"p2pool-chain-tip": "P2Pool Chain Tip",
"p2pool-connected": "P2Pool Connected",
"p2pool-connection-info": "Connection",
"p2pool-connection-info-more": "Connection details",
"p2pool-stats": "Pool mining stats",
"tribe": "Tribe"
}
16 changes: 8 additions & 8 deletions public/locales/af/paper-wallet.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
{
"connect": {
"title": "Koppel jou Tari Universe beursie aan jou foon",
"text": "Laai Tari Aurora af en hou jou XTM oral dop. Kry dit nou in die App Store of Google Play Winkel.",
"blackButton": "Ek het die app",
"scan": "Skandeer QR-kode",
"text": "Laai Tari Aurora af en hou jou XTM oral dop. Kry dit nou in die App Store of Google Play Winkel.",
"textButton": "Leer meer oor Tari Aurora",
"scan": "Skandeer QR-kode"
"title": "Koppel jou Tari Universe beursie aan jou foon"
},
"qrcode": {
"warning": "Moenie hierdie QR-kode deel nie",
"title": "Voer in na Tari Aurora",
"text": "Skandeer die QR-kode binne die Tari Aurora app om jou Tari Universe beursie in te voer. Gebruik die eenmalige kode hieronder om jou identiteit te bevestig, volg dan die stappe binne die app.",
"blackButton": "Klaar",
"textButton": "Ek het hulp nodig",
"copied": "Gekopieer!",
"inputLabel": "Identifikasiekode",
"copied": "Gekopieer!"
"text": "Skandeer die QR-kode binne die Tari Aurora app om jou Tari Universe beursie in te voer. Gebruik die eenmalige kode hieronder om jou identiteit te bevestig, volg dan die stappe binne die app.",
"textButton": "Ek het hulp nodig",
"title": "Voer in na Tari Aurora",
"warning": "Moenie hierdie QR-kode deel nie"
}
}
Loading

0 comments on commit 718f4d5

Please sign in to comment.