From 9e3b7343355f139aae95f4318de07668776e260c Mon Sep 17 00:00:00 2001 From: neoapps-dev Date: Tue, 1 Sep 2026 13:40:16 +0300 Subject: [PATCH] feat: russian translation! --- README.md | 2 + public/fonts/rus/COPYRIGHT.txt | 1 + public/fonts/rus/minecraft.ttf | Bin 0 -> 21808 bytes src/components/common/SkinViewer.tsx | 2 +- src/components/modals/CustomTUModal.tsx | 8 +- src/components/modals/GameLogModal.tsx | 2 +- src/components/modals/OptionsModal.tsx | 8 +- src/components/modals/SetUidModal.tsx | 6 +- src/components/views/CreditsView.tsx | 16 +- src/components/views/GoldMapperView.tsx | 2 +- src/components/views/ScreenshotsView.tsx | 2 +- src/components/views/SettingsView.tsx | 7 +- src/components/views/WorkshopView.tsx | 12 +- src/css/index.css | 5 +- src/i18n/config.ts | 5 + src/i18n/langFonts.ts | 35 + src/i18n/locales/ru.json | 773 +++++++++++++++++++++++ src/pages/App.tsx | 10 +- 18 files changed, 865 insertions(+), 31 deletions(-) create mode 100644 public/fonts/rus/COPYRIGHT.txt create mode 100755 public/fonts/rus/minecraft.ttf create mode 100644 src/i18n/langFonts.ts create mode 100644 src/i18n/locales/ru.json diff --git a/README.md b/README.md index dcc4490..5e5688a 100644 --- a/README.md +++ b/README.md @@ -239,6 +239,8 @@ sudo apt install --reinstall libwebkit2gtk-4.1-0 - **The LCE Community** - Research and foundations for LCE on PC - **Str1k3r** - Original creator of LCEOnline - **DTention** - Original creator of [LCE-Save-Converter](https://github.com/dtentiion/LCE-Save-Converter) +- **dydymiku** - French translation +- **Hvrket** - Russian translation --- diff --git a/public/fonts/rus/COPYRIGHT.txt b/public/fonts/rus/COPYRIGHT.txt new file mode 100644 index 0000000..9b80eef --- /dev/null +++ b/public/fonts/rus/COPYRIGHT.txt @@ -0,0 +1 @@ +Copyright © 2004-2012, BOGDAN Software \ No newline at end of file diff --git a/public/fonts/rus/minecraft.ttf b/public/fonts/rus/minecraft.ttf new file mode 100755 index 0000000000000000000000000000000000000000..93c749100f8e6b841e67ca3f3638d6d34a0f6435 GIT binary patch literal 21808 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 literal 0 HcmV?d00001 diff --git a/src/components/common/SkinViewer.tsx b/src/components/common/SkinViewer.tsx index b5a1e6d..4328340 100644 --- a/src/components/common/SkinViewer.tsx +++ b/src/components/common/SkinViewer.tsx @@ -703,7 +703,7 @@ const SkinViewer = memo(function SkinViewer({ e.stopPropagation(); } }} - className="bg-transparent text-white focus:text-[#FFFF55] outline-none border-none text-center font-['Mojangles'] mc-text-shadow tracking-widest text-xl cursor-text" + className="bg-transparent text-white focus:text-[#FFFF55] outline-none border-none text-center font-[var(--font-base)] mc-text-shadow tracking-widest text-xl cursor-text" /> )} diff --git a/src/components/modals/CustomTUModal.tsx b/src/components/modals/CustomTUModal.tsx index d1bab44..206b49f 100644 --- a/src/components/modals/CustomTUModal.tsx +++ b/src/components/modals/CustomTUModal.tsx @@ -150,7 +150,7 @@ export default function CustomTUModal({ onChange={(e) => setName(e.target.value)} onFocus={() => setFocusIndex(0)} placeholder={t("modals.customTu.namePlaceholder")} - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles']" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)]" style={{ imageRendering: "pixelated" }} /> @@ -165,7 +165,7 @@ export default function CustomTUModal({ onChange={(e) => setDesc(e.target.value)} onFocus={() => setFocusIndex(1)} placeholder={t("modals.customTu.descPlaceholder")} - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles']" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)]" style={{ imageRendering: "pixelated" }} /> @@ -180,7 +180,7 @@ export default function CustomTUModal({ onChange={(e) => setUrl(e.target.value)} onFocus={() => setFocusIndex(2)} placeholder={t("modals.customTu.urlPlaceholder")} - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles']" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)]" style={{ imageRendering: "pixelated" }} /> @@ -194,7 +194,7 @@ export default function CustomTUModal({ type="text" readOnly value={path} - className="w-full h-10 px-3 bg-black/20 border-2 border-[#222] text-black text-xs outline-none font-['Mojangles'] cursor-not-allowed" + className="w-full h-10 px-3 bg-black/20 border-2 border-[#222] text-black text-xs outline-none font-[var(--font-base)] cursor-not-allowed" style={{ imageRendering: "pixelated" }} /> diff --git a/src/components/modals/GameLogModal.tsx b/src/components/modals/GameLogModal.tsx index 83efadc..e8fb917 100644 --- a/src/components/modals/GameLogModal.tsx +++ b/src/components/modals/GameLogModal.tsx @@ -135,7 +135,7 @@ export default function GameLogModal({ exit={{ y: 20, opacity: 0 }} transition={{ duration: 0.15 }} onClick={(e) => e.stopPropagation()} - className="flex flex-col w-[640px] max-w-[92vw] max-h-[85vh] p-5 font-['Mojangles'] mc-options-bg" + className="flex flex-col w-[640px] max-w-[92vw] max-h-[85vh] p-5 font-[var(--font-base)] mc-options-bg" >

{t("modals.gameLog.title")} diff --git a/src/components/modals/OptionsModal.tsx b/src/components/modals/OptionsModal.tsx index 8495dae..8f04ddc 100644 --- a/src/components/modals/OptionsModal.tsx +++ b/src/components/modals/OptionsModal.tsx @@ -273,7 +273,7 @@ export default function OptionsModal({ })); }} onFocus={() => setFocusIndex(index)} - className={`w-24 h-8 bg-black/40 border-2 border-[#373737] text-white text-sm px-2 outline-none text-center font-['Mojangles'] focus:border-[#FFFF55] [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none ${ + className={`w-24 h-8 bg-black/40 border-2 border-[#373737] text-white text-sm px-2 outline-none text-center font-[var(--font-base)] focus:border-[#FFFF55] [appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none ${ disabled ? "opacity-40 cursor-not-allowed" : "" }`} style={{ imageRendering: "pixelated" }} @@ -293,7 +293,7 @@ export default function OptionsModal({ setValues((prev) => ({ ...prev, [option.id]: e.target.value })); }} onFocus={() => setFocusIndex(index)} - className={`w-44 h-8 bg-black/40 border-2 border-[#373737] text-white text-sm px-2 outline-none font-['Mojangles'] focus:border-[#FFFF55] ${ + className={`w-44 h-8 bg-black/40 border-2 border-[#373737] text-white text-sm px-2 outline-none font-[var(--font-base)] focus:border-[#FFFF55] ${ disabled ? "opacity-40 cursor-not-allowed" : "" }`} style={{ imageRendering: "pixelated" }} @@ -311,7 +311,7 @@ export default function OptionsModal({ setValues((prev) => ({ ...prev, [option.id]: e.target.value })); }} onFocus={() => setFocusIndex(index)} - className={`w-44 h-8 bg-white border-2 border-[#373737] text-black text-sm px-2 outline-none font-['Mojangles'] focus:border-[#FFFF55] ${ + className={`w-44 h-8 bg-white border-2 border-[#373737] text-black text-sm px-2 outline-none font-[var(--font-base)] focus:border-[#FFFF55] ${ disabled ? "opacity-40 cursor-not-allowed" : "" }`} style={{ imageRendering: "pixelated" }} @@ -433,7 +433,7 @@ export default function OptionsModal({ } }} > -
+

{t("modals.options.title")}

diff --git a/src/components/modals/SetUidModal.tsx b/src/components/modals/SetUidModal.tsx index fb9c5ab..8bc5f96 100644 --- a/src/components/modals/SetUidModal.tsx +++ b/src/components/modals/SetUidModal.tsx @@ -189,7 +189,7 @@ export default function SetUidModal({ onChange={(e) => setUid(e.target.value)} onFocus={() => setFocusIndex(2)} placeholder="0xFF02F0C87E8AC1F2" - className={`w-full h-10 px-3 bg-black/40 border-2 ${focusIndex === 2 ? 'border-white' : 'border-[#373737]'} text-white text-base outline-none font-['Mojangles'] text-center`} + className={`w-full h-10 px-3 bg-black/40 border-2 ${focusIndex === 2 ? 'border-white' : 'border-[#373737]'} text-white text-base outline-none font-[var(--font-base)] text-center`} style={{ imageRendering: "pixelated", filter: focusIndex === 2 ? 'brightness(1.2)' : 'none' }} />
@@ -203,7 +203,7 @@ export default function SetUidModal({ onClick={() => { playPressSound(); setIsDropdownOpen(!isDropdownOpen); }} onFocus={() => { setFocusIndex(2); setIsDropdownOpen(false); }} tabIndex={0} - className={`w-full h-10 px-3 bg-black/40 border-2 ${focusIndex === 2 ? 'border-white' : 'border-[#373737]'} flex items-center justify-between text-white text-base outline-none font-['Mojangles'] cursor-pointer`} + className={`w-full h-10 px-3 bg-black/40 border-2 ${focusIndex === 2 ? 'border-white' : 'border-[#373737]'} flex items-center justify-between text-white text-base outline-none font-[var(--font-base)] cursor-pointer`} style={{ imageRendering: "pixelated", filter: focusIndex === 2 ? 'brightness(1.2)' : 'none' }} > @@ -227,7 +227,7 @@ export default function SetUidModal({ setSelectedInstance(i.instanceId); setIsDropdownOpen(false); }} - className="px-3 py-2 text-white text-sm cursor-pointer truncate font-['Mojangles']" + className="px-3 py-2 text-white text-sm cursor-pointer truncate font-[var(--font-base)]" > {i.name} {i.selectedBranch ? `(${i.selectedBranch})` : ""}
diff --git a/src/components/views/CreditsView.tsx b/src/components/views/CreditsView.tsx index 9f3b370..d8a81d1 100644 --- a/src/components/views/CreditsView.tsx +++ b/src/components/views/CreditsView.tsx @@ -256,6 +256,19 @@ const CreditsView = memo(function CreditsView() { category: "SPECIAL THANKS", icon: "", subcategories: [ + { + name: "Emerald Translations", + icon: "", + roles: [ + { + role: "", + members: [ + { name: "dydymiku (French)", url: "#" }, + { name: "DimsMaybe/Hvrket (Russian)", url: "#" }, + ], + }, + ], + }, ...(isAndroid ? [ { @@ -341,7 +354,8 @@ const CreditsView = memo(function CreditsView() { }} > {t("credits.backToMenu")} - )} + + )} -
+

{t("goldMapper.assign", { name: displayName(editing) })}

diff --git a/src/components/views/ScreenshotsView.tsx b/src/components/views/ScreenshotsView.tsx index 620411e..5927ca8 100644 --- a/src/components/views/ScreenshotsView.tsx +++ b/src/components/views/ScreenshotsView.tsx @@ -162,7 +162,7 @@ const ScreenshotsView = memo(function ScreenshotsView() { animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.95 }} transition={{ duration: animationsEnabled ? 0.3 : 0 }} - className="flex flex-col items-center w-full h-full max-w-6xl relative font-['Mojangles'] text-white select-none outline-none focus:outline-none" + className="flex flex-col items-center w-full h-full max-w-6xl relative font-[var(--font-base)] text-white select-none outline-none focus:outline-none" >

{t("screenshots.title")} diff --git a/src/components/views/SettingsView.tsx b/src/components/views/SettingsView.tsx index e039505..bc79dfb 100644 --- a/src/components/views/SettingsView.tsx +++ b/src/components/views/SettingsView.tsx @@ -590,6 +590,7 @@ const SettingsView = memo(function SettingsView() { //neo: here goes the list, dont ask why its here { code: "en", label: "English" }, { code: "fr", label: "Français (French)" }, // by Dydymiku (thanks!!) + { code: "ru", label: "Pусский (Russian)" }, // by brnwvshed (thanks!!) ]; for (const lang of availableLanguages) { const isCurrent = i18n.resolvedLanguage?.startsWith(lang.code); @@ -1122,7 +1123,7 @@ const SettingsView = memo(function SettingsView() { value={argsInput} onChange={(e) => setArgsInput(e.target.value)} placeholder="e.g. -quitondisconnect -ip 127.0.0.1" - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles'] text-center" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)] text-center" style={{ imageRendering: "pixelated" }} />
@@ -1202,7 +1203,7 @@ const SettingsView = memo(function SettingsView() { value={prefixInput} onChange={(e) => setPrefixInput(e.target.value)} placeholder="e.g. gamemoderun" - className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-['Mojangles'] text-center" + className="w-full h-10 px-3 bg-black/40 border-2 border-[#373737] text-white text-base outline-none font-[var(--font-base)] text-center" style={{ imageRendering: "pixelated" }} />
@@ -1282,7 +1283,7 @@ const SettingsView = memo(function SettingsView() { onChange={(e) => setEnvVarsInput(e.target.value)} placeholder="WINEDLLOVERRIDES=foo=n MANGOHUD=1" rows={6} - className="w-full px-3 py-2 bg-black/40 border-2 border-[#373737] text-white text-sm outline-none font-['Mojangles'] resize-none" + className="w-full px-3 py-2 bg-black/40 border-2 border-[#373737] text-white text-sm outline-none font-[var(--font-base)] resize-none" style={{ imageRendering: "pixelated" }} />
diff --git a/src/components/views/WorkshopView.tsx b/src/components/views/WorkshopView.tsx index 17dbee1..f061678 100644 --- a/src/components/views/WorkshopView.tsx +++ b/src/components/views/WorkshopView.tsx @@ -753,7 +753,7 @@ const WorkshopView = memo(function WorkshopView({ animate={{ opacity: 1, scale: 1 }} exit={{ opacity: 0, scale: 0.95 }} transition={{ duration: config.animationsEnabled ? 0.3 : 0 }} - className="flex flex-col items-center w-full h-full max-h-full relative font-['Mojangles'] text-white select-none outline-none focus:outline-none" + className="flex flex-col items-center w-full h-full max-h-full relative font-[var(--font-base)] text-white select-none outline-none focus:outline-none" >
{search && (