feat: First iteration, multi themes, I18N

This commit is contained in:
gauvainboiche
2026-10-08 11:58:18 +02:00
parent 9240fa3c3c
commit aa9721ac2a
53 changed files with 3363 additions and 1 deletions
+83
View File
@@ -0,0 +1,83 @@
{
"meta": { "name": "English" },
"ui": {
"theme": "Theme",
"language": "Language",
"settings": "Save & settings",
"close": "Close",
"overview": "Overview",
"totalProduced": "Total produced",
"production": "Production / s",
"demand": "Demand / s",
"income": "Income / s",
"manual": "Manual work",
"market": "Market",
"price": "Price",
"priceDown": "Lower the price",
"priceUp": "Raise the price",
"marketing": "Marketing",
"automation": "Automation",
"buyAmount": "Buy amount",
"max": "Max",
"upgrades": "Upgrades",
"noUpgrades": "Keep producing to unlock upgrades.",
"perSecond": "{value}/s",
"makeYield": "+{amount} per click",
"batchInfo": "+{amount} {@theme.res.material} · {cost}",
"marketingInfo": "Level {level} → demand ×{multiplier} · {cost}",
"hintFair": "At or below the fair price ({fair}) demand is at its maximum: lowering the price sells nothing more.",
"hintHigh": "Customers want {demand}/s at this price. Above the fair price ({fair}) demand drops fast.",
"owned": "Owned: {count}",
"rateEach": "{rate}/s each",
"buyN": "Buy ×{count}",
"upgradeCount": "{owned} / {total}"
},
"effect": {
"click_mult": "Manual work ×{value}",
"generator_mult": "{target} output ×{value}",
"global_mult": "All automation ×{value}",
"demand_mult": "Demand ×{value}",
"value_mult": "Sale value ×{value}",
"material_efficiency": "{@theme.res.material} goes ×{value} further",
"batch_discount": "{@theme.res.material} is {percent}% cheaper",
"auto_buy_material": "Restocks {@theme.res.material} automatically"
},
"time": {
"seconds": "{value} s",
"minutes": "{value} min",
"hoursMinutes": "{hours} h {minutes} min"
},
"settings": {
"title": "Save & settings",
"export": "Export your save",
"exportHelp": "Download the file, or copy the text. Keep it to move your progress to another browser or device.",
"downloadJson": "Download .json",
"downloadTxt": "Download .txt",
"copy": "Copy text",
"import": "Import a save",
"importHelp": "Choose a .json or .txt file, or paste the text below. It replaces the progress of the theme it was saved with.",
"importFile": "Choose a file…",
"pastePlaceholder": "Paste the exported text here",
"importText": "Import pasted text",
"danger": "Danger zone",
"reset": "Reset this theme's progress",
"resetConfirm": "Erase all progress for this theme? This cannot be undone."
},
"toast": {
"cookiesBlocked": "Cookies are blocked, so progress cannot be saved in this browser. Use Save & settings to export it.",
"saveFailed": "Could not save your progress. Export it from Save & settings.",
"welcomeBack": "Welcome back! While you were away ({duration}) you made {produced} {@theme.res.units} and earned {funds}.",
"imported": "Save imported.",
"copied": "Copied to the clipboard.",
"copyFailed": "Could not copy. Select the text and copy it manually.",
"reset": "Progress reset."
},
"error": {
"import": {
"empty": "Nothing to import.",
"invalid": "This is not a valid save.",
"wrong_game": "This file is not an Idle Clicker save.",
"unknown_theme": "This save belongs to a theme that is not installed."
}
}
}
+83
View File
@@ -0,0 +1,83 @@
{
"meta": { "name": "Français" },
"ui": {
"theme": "Thème",
"language": "Langue",
"settings": "Sauvegarde et options",
"close": "Fermer",
"overview": "Vue d'ensemble",
"totalProduced": "Total produit",
"production": "Production / s",
"demand": "Demande / s",
"income": "Revenu / s",
"manual": "Travail manuel",
"market": "Marché",
"price": "Prix",
"priceDown": "Baisser le prix",
"priceUp": "Augmenter le prix",
"marketing": "Marketing",
"automation": "Automatisation",
"buyAmount": "Quantité d'achat",
"max": "Max",
"upgrades": "Améliorations",
"noUpgrades": "Continuez à produire pour débloquer des améliorations.",
"perSecond": "{value}/s",
"makeYield": "+{amount} par clic",
"batchInfo": "+{amount} {@theme.res.material} · {cost}",
"marketingInfo": "Niveau {level} → demande ×{multiplier} · {cost}",
"hintFair": "Au prix juste ({fair}) ou en dessous, la demande est maximale : baisser le prix ne vend rien de plus.",
"hintHigh": "Les clients veulent {demand}/s à ce prix. Au-dessus du prix juste ({fair}), la demande chute vite.",
"owned": "Possédé : {count}",
"rateEach": "{rate}/s chacun",
"buyN": "Acheter ×{count}",
"upgradeCount": "{owned} / {total}"
},
"effect": {
"click_mult": "Travail manuel ×{value}",
"generator_mult": "Production de {target} ×{value}",
"global_mult": "Toute l'automatisation ×{value}",
"demand_mult": "Demande ×{value}",
"value_mult": "Valeur de vente ×{value}",
"material_efficiency": "{@theme.res.material} : rendement ×{value}",
"batch_discount": "{@theme.res.material} : {percent} % moins cher",
"auto_buy_material": "Réapprovisionnement automatique : {@theme.res.material}"
},
"time": {
"seconds": "{value} s",
"minutes": "{value} min",
"hoursMinutes": "{hours} h {minutes} min"
},
"settings": {
"title": "Sauvegarde et options",
"export": "Exporter votre sauvegarde",
"exportHelp": "Téléchargez le fichier ou copiez le texte. Conservez-le pour retrouver votre progression sur un autre navigateur ou appareil.",
"downloadJson": "Télécharger en .json",
"downloadTxt": "Télécharger en .txt",
"copy": "Copier le texte",
"import": "Importer une sauvegarde",
"importHelp": "Choisissez un fichier .json ou .txt, ou collez le texte ci-dessous. Cela remplace la progression du thème avec lequel il a été sauvegardé.",
"importFile": "Choisir un fichier…",
"pastePlaceholder": "Collez ici le texte exporté",
"importText": "Importer le texte collé",
"danger": "Zone dangereuse",
"reset": "Réinitialiser la progression de ce thème",
"resetConfirm": "Effacer toute la progression de ce thème ? Cette action est irréversible."
},
"toast": {
"cookiesBlocked": "Les cookies sont bloqués : la progression ne peut pas être sauvegardée dans ce navigateur. Exportez-la depuis Sauvegarde et options.",
"saveFailed": "Impossible de sauvegarder votre progression. Exportez-la depuis Sauvegarde et options.",
"welcomeBack": "Bon retour ! Pendant votre absence ({duration}) — {@theme.res.units} : +{produced}, {@theme.res.funds} : +{funds}.",
"imported": "Sauvegarde importée.",
"copied": "Copié dans le presse-papiers.",
"copyFailed": "Copie impossible. Sélectionnez le texte et copiez-le manuellement.",
"reset": "Progression réinitialisée."
},
"error": {
"import": {
"empty": "Rien à importer.",
"invalid": "Ceci n'est pas une sauvegarde valide.",
"wrong_game": "Ce fichier n'est pas une sauvegarde d'Idle Clicker.",
"unknown_theme": "Cette sauvegarde appartient à un thème qui n'est pas installé."
}
}
}