diff --git a/GUI/index.html b/GUI/index.html index 3e85cfa..bae3b7f 100644 --- a/GUI/index.html +++ b/GUI/index.html @@ -785,7 +785,11 @@ @ericiskoolbeans, @fazrigading + class="text-blue-400 hover:text-blue-300 transition-colors">@fazrigading, + @Rahul-Sahani04, + @xSamiVS diff --git a/GUI/js/i18n.js b/GUI/js/i18n.js index 47199a3..faf6847 100644 --- a/GUI/js/i18n.js +++ b/GUI/js/i18n.js @@ -4,8 +4,9 @@ const i18n = (() => { let translations = {}; const availableLanguages = [ { code: 'en', name: 'English' }, - { code: 'es', name: 'Español' }, - { code: 'pt-BR', name: 'Português (Brasil)' } + { code: 'es-ES', name: 'Español (España)' }, + { code: 'pt-BR', name: 'Portuguese (Brazil)' }, + { code: 'tr-TR', name: 'Turkish (Turkey)' } ]; // Load single language file diff --git a/GUI/js/mods.js b/GUI/js/mods.js index f1eb4a2..0ebda25 100644 --- a/GUI/js/mods.js +++ b/GUI/js/mods.js @@ -200,10 +200,15 @@ async function loadBrowseMods() { browseContainer.innerHTML = `
-

API Key Required

-

CurseForge API key is needed to browse mods

+

API Key Required

+

CurseForge API key is needed to browse mods

`; + if (window.i18n) { + const container = modsContainer.querySelector('.empty-browse-mods'); + container.querySelector('h4').textContent = window.i18n.t('mods.apiKeyRequired'); + container.querySelector('p').textContent = window.i18n.t('mods.apiKeyRequiredDesc'); + } return; } diff --git a/GUI/locales/en.json b/GUI/locales/en.json index cb37f84..9fb30f5 100644 --- a/GUI/locales/en.json +++ b/GUI/locales/en.json @@ -57,7 +57,9 @@ "noDescription": "No description available", "confirmDelete": "Are you sure you want to delete \"{name}\"?", "confirmDeleteDesc": "This action cannot be undone.", - "confirmDeletion": "Confirm Deletion" + "confirmDeletion": "Confirm Deletion", + "apiKeyRequired": "API Key Required", + "apiKeyRequiredDesc": "CurseForge API key is needed to browse mods" }, "news": { "title": "ALL NEWS", diff --git a/GUI/locales/es.json b/GUI/locales/es-ES.json similarity index 96% rename from GUI/locales/es.json rename to GUI/locales/es-ES.json index 72f1c13..61c261b 100644 --- a/GUI/locales/es.json +++ b/GUI/locales/es-ES.json @@ -14,9 +14,11 @@ "install": { "title": "LAUNCHER GRATUITO", "playerName": "Nombre del Jugador", - "playerNamePlaceholder": "Ingresa tu nombre", "gameBranch": "Versión del Juego", + "playerNamePlaceholder": "Ingresa tu nombre", + "gameBranch": "Versión del Juego", "releaseVersion": "Lanzamiento (Estable)", - "preReleaseVersion": "Pre-Lanzamiento (Experimental)", "customInstallation": "Instalación Personalizada", + "preReleaseVersion": "Pre-Lanzamiento (Experimental)", + "customInstallation": "Instalación Personalizada", "installationFolder": "Carpeta de Instalación", "pathPlaceholder": "Ubicación predeterminada", "browse": "Examinar", @@ -55,7 +57,9 @@ "noDescription": "Sin descripción disponible", "confirmDelete": "¿Estás seguro de que quieres eliminar \"{name}\"?", "confirmDeleteDesc": "Esta acción no se puede deshacer.", - "confirmDeletion": "Confirmar eliminación" + "confirmDeletion": "Confirmar eliminación", + "apiKeyRequired": "Clave API Requerida", + "apiKeyRequiredDesc": "Se necesita una clave API de CurseForge para explorar mods" }, "news": { "title": "TODAS LAS NOTICIAS", diff --git a/GUI/locales/pt-BR.json b/GUI/locales/pt-BR.json index 12e31f7..4f83c55 100644 --- a/GUI/locales/pt-BR.json +++ b/GUI/locales/pt-BR.json @@ -55,7 +55,9 @@ "noDescription": "Nenhuma descrição disponível", "confirmDelete": "Tem certeza de que deseja excluir \"{name}\"?", "confirmDeleteDesc": "Esta ação não pode ser desfeita.", - "confirmDeletion": "Confirmar exclusão" + "confirmDeletion": "Confirmar exclusão", + "apiKeyRequired": "Chave de API Necessária", + "apiKeyRequiredDesc": "Chave de API do CurseForge é necessária para procurar mods" }, "news": { "title": "TODAS AS NOTÍCIAS", diff --git a/GUI/locales/tr-TR.json b/GUI/locales/tr-TR.json new file mode 100644 index 0000000..41d15b9 --- /dev/null +++ b/GUI/locales/tr-TR.json @@ -0,0 +1,246 @@ +{ + "nav": { + "play": "Oyna", + "mods": "Modlar", + "news": "Haberler", + "chat": "Oyuncu Sohbeti", + "settings": "Ayarlar" + }, + "header": { + "playersLabel": "Oyuncular:", + "manageProfiles": "Profilleri Yönet", + "defaultProfile": "Varsayılan" + }, + "install": { + "title": "ÜCRETSİZ OYNA BAŞLATICI", + "playerName": "Oyuncu Adı", + "playerNamePlaceholder": "Adınızı girin", + "gameBranch": "Oyun Sürümü", + "releaseVersion": "Yayın (Stabil)", + "preReleaseVersion": "Ön-Yayın (Deneysel)", + "customInstallation": "Özel Kurulum", + "installationFolder": "Kurulum Klasörü", + "pathPlaceholder": "Varsayılan konum", + "browse": "Gözat", + "installButton": "HYTALE KURU", + "installing": "KURULUYOR..." + }, + "play": { + "ready": "OYNAMAYA HAZIR", + "subtitle": "Hytale'i başlat ve maceraya başla", + "playButton": "HYTALE'YI OYNA", + "latestNews": "SON HABERLER", + "viewAll": "HEPSINI GÖR", + "checking": "KONTROL EDİLİYOR...", + "play": "OYNA" + }, + "mods": { + "searchPlaceholder": "Modları ara...", + "myMods": "BENİM MODLARIM", + "previous": "ÖNCEKİ", + "next": "SONRAKİ", + "page": "Sayfa", + "of": "nın", + "modalTitle": "BENİM MODLARIM", + "noModsFound": "Mod Bulunamadı", + "noModsFoundDesc": "Aramanızı ayarlamayı deneyin", + "noModsInstalled": "Hiçbir Mod Kurulu Değil", + "noModsInstalledDesc": "CurseForge'dan modlar ekleyin veya yerel dosyalar içe aktarın", + "view": "GÖR", + "install": "KURU", + "installed": "KURULU", + "enable": "ETKİNLEŞTİR", + "disable": "DEĞİ", + "active": "AKTİF", + "disabled": "DEĞİ", + "delete": "Modı sil", + "noDescription": "Açıklama yok", + "confirmDelete": "\"{name}\" öğesini silmek istediğinizden emin misiniz?", + "confirmDeleteDesc": "Bu işlem geri alınamaz.", + "confirmDeletion": "Silmeyi Onayla", + "apiKeyRequired": "API Anahtarı Gerekli", + "apiKeyRequiredDesc": "Modlara göz atmak için CurseForge API anahtarı gereklidir" + }, + "news": { + "title": "TÜM HABERLER", + "readMore": "Daha Fazla Oku" + }, + "chat": { + "title": "OYUNCU SOHBETI", + "pickColor": "Renk", + "inputPlaceholder": "Mesajınızı yazın...", + "send": "Gönder", + "online": "çevrimiçi", + "charCounter": "{current}/{max}", + "secureChat": "Güvenli sohbet - Bağlantılar sansürlenir", + "joinChat": "Sohbete Katıl", + "chooseUsername": "Oyuncu Sohbetine katılmak için bir kullanıcı adı seçin", + "username": "Kullanıcı Adı", + "usernamePlaceholder": "Kullanıcı adınızı girin...", + "usernameHint": "3-20 karakter, yalnızca harfler, sayılar, - ve _", + "joinButton": "Sohbete Katıl", + "colorModal": { + "title": "Kullanıcı Adı Rengini Özelleştir", + "chooseSolid": "Düz bir renk seçin:", + "customColor": "Özel renk:", + "preview": "Ön izleme:", + "previewUsername": "Kullanıcı Adı", + "apply": "Rengi Uygula" + } + }, + "settings": { + "title": "AYARLAR", + "java": "Java Çalışma Zamanı", + "useCustomJava": "Özel Java Yolunu Kullan", + "javaDescription": "Yüklü Java çalışma zamanını kendi kurulumunuzla geçersiz kılın", + "javaPath": "Java Çalıştırılabilir Yolu", + "javaPathPlaceholder": "Java yolunu seçin...", + "javaBrowse": "Gözat", + "javaHint": "Java kurulum klasörünü seçin (Windows, Mac, Linux destekler)", + "discord": "Discord Entegrasyonu", + "enableRPC": "Discord Rich Presence'ı Etkinleştir", + "discordDescription": "Başlatıcı etkinliğinizi Discord'da gösterin", + "game": "Oyun Seçenekleri", + "playerName": "Oyuncu Adı", + "playerNamePlaceholder": "Oyuncu adınızı girin", + "playerNameHint": "Bu ad oyun içinde kullanılacak (1-16 karakter)", + "openGameLocation": "Oyun Konumunu Aç", + "openGameLocationDesc": "Oyun kurulum klasörünü açın", + "account": "Oyuncu UUID Yönetimi", + "currentUUID": "Geçerli UUID", + "uuidPlaceholder": "UUID yükleniyor...", + "copyUUID": "UUID'yi Kopyala", + "regenerateUUID": "UUID'yi Yeniden Oluştur", + "uuidHint": "Bu kullanıcı adı için benzersiz oyuncu tanımlayıcınız", + "manageUUIDs": "Tüm UUID'leri Yönet", + "manageUUIDsDesc": "Tüm oyuncu UUID'lerini görüntüleyin ve yönetin", + "language": "Dil", + "selectLanguage": "Dil Seçin", + "repairGame": "Oyunu Onarı", + "reinstallGame": "Oyun dosyalarını yeniden kur (veri korur)", + "gpuPreference": "GPU Tercihi", + "gpuHint": "Tercih ettiğiniz GPU'yu seçin (Linux: DRI_PRIME'ı etkiler)", + "gpuAuto": "Otomatik", + "gpuIntegrated": "Entegre", + "gpuDedicated": "Ayrılmış", + "logs": "SİSTEM KAYITLARI", + "logsCopy": "Kopyala", + "logsRefresh": "Yenile", + "logsFolder": "Klasörü Aç", + "logsLoading": "Loglar yükleniyor...", + "closeLauncher": "Başlatıcı Davranışı", + "closeOnStart": "Oyun başlatıldığında Başlatıcıyı Kapat", + "closeOnStartDescription": "Hytale başlatıldıktan sonra başlatıcıyı otomatik olarak kapatın", + "gameBranch": "Oyun Dalı", + "branchRelease": "Yayın", + "branchPreRelease": "Ön-Yayın", + "branchHint": "Stabil yayın ve deneysel ön-yayın sürümleri arasında geçiş yapın", + "branchWarning": "Dalı değiştirmek farklı bir oyun sürümünü indirecek ve kuracaktır", + "branchSwitching": "{branch} sürümüne geçiliyor...", + "branchSwitched": "{branch} sürümüne başarıyla geçildi!", + "installRequired": "Kurulum Gerekli", + "branchInstallConfirm": "Oyun {branch} dalı için kurulacak. Devam et?" + }, + "uuid": { + "modalTitle": "UUID Yönetimi", + "currentUserUUID": "Geçerli Kullanıcı UUID", + "allPlayerUUIDs": "Tüm Oyuncu UUID'leri", + "generateNew": "Yeni UUID Oluştur", + "loadingUUIDs": "UUID'ler yükleniyor...", + "setCustomUUID": "Özel UUID Ayarla", + "customPlaceholder": "Özel UUID girin (format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)", + "setUUID": "UUID Ayarla", + "warning": "Uyarı: Özel bir UUID ayarlamak geçerli oyuncu kimliğinizi değiştirecektir", + "copyTooltip": "UUID'yi Kopyala", + "regenerateTooltip": "Yeni UUID Oluştur" + }, + "profiles": { + "modalTitle": "Profilleri Yönet", + "newProfilePlaceholder": "Yeni Profil Adı", + "createProfile": "Profil Oluştur" + }, + "discord": { + "notificationText": "Discord topluluğumuza katılın!", + "joinButton": "Discord'a Katıl" + }, + "common": { + "confirm": "Onayla", + "cancel": "İptal", + "save": "Kaydet", + "close": "Kapat", + "delete": "Sil", + "edit": "Düzenle", + "loading": "Yükleniyor...", + "apply": "Uygula", + "install": "Kur" + }, + "notifications": { + "gameDataNotFound": "Hata: Oyun verileri bulunamadı", + "gameUpdatedSuccess": "Oyun başarıyla güncellendi! 🎉", + "updateFailed": "Güncelleme başarısız: {error}", + "updateError": "Güncelleme hatası: {error}", + "discordEnabled": "Discord Rich Presence etkinleştirildi", + "discordDisabled": "Discord Rich Presence devre dışı bırakıldı", + "discordSaveFailed": "Discord ayarı kaydedilemedi", + "playerNameRequired": "Lütfen geçerli bir oyuncu adı girin", + "playerNameSaved": "Oyuncu adı başarıyla kaydedildi", + "playerNameSaveFailed": "Oyuncu adı kaydedilemedi", + "uuidCopied": "UUID panoya kopyalandı!", + "uuidCopyFailed": "UUID kopyalanamadı", + "uuidRegenNotAvailable": "UUID yeniden oluşturma kullanılamıyor", + "uuidRegenFailed": "UUID yeniden oluşturulamadı", + "uuidGenerated": "Yeni UUID başarıyla oluşturuldu!", + "uuidGeneratedShort": "Yeni UUID oluşturuldu!", + "uuidGenerateFailed": "Yeni UUID oluşturulamadı", + "uuidRequired": "Lütfen bir UUID girin", + "uuidInvalidFormat": "Geçersiz UUID formatı", + "uuidSetFailed": "Özel UUID ayarlanamadı", + "uuidSetSuccess": "Özel UUID başarıyla ayarlandı!", + "uuidDeleteFailed": "UUID silinemedi", + "uuidDeleteSuccess": "UUID başarıyla silindi!", + "modsDownloading": "{name} indiriliyor...", + "modsTogglingMod": "Mod değiştiriliyor...", + "modsDeletingMod": "Mod siliniyor...", + "modsLoadingMods": "CurseForge'dan modlar yükleniyor...", + "modsInstalledSuccess": "{name} başarıyla kuruldu! 🎉", + "modsDeletedSuccess": "{name} başarıyla silindi", + "modsDownloadFailed": "Mod indirilemedi: {error}", + "modsToggleFailed": "Mod değiştirilemedi: {error}", + "modsDeleteFailed": "Mod silinemedi: {error}", + "modsModNotFound": "Mod bilgileri bulunamadı" + }, + "confirm": { + "defaultTitle": "Eylemi onayla", + "regenerateUuidTitle": "Yeni UUID oluştur", + "regenerateUuidMessage": "Yeni bir UUID oluşturmak istediğinizden emin misiniz? Bu oyuncu kimliğinizi değiştirecektir.", + "regenerateUuidButton": "Oluştur", + "setCustomUuidTitle": "Özel UUID ayarla", + "setCustomUuidMessage": "Bu özel UUID'yi ayarlamak istediğinizden emin misiniz? Bu oyuncu kimliğinizi değiştirecektir.", + "setCustomUuidButton": "UUID Ayarla", + "deleteUuidTitle": "UUID'yi sil", + "deleteUuidMessage": "\"{username}\" için UUID'yi silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "deleteUuidButton": "Sil", + "uninstallGameTitle": "Oyunu kaldır", + "uninstallGameMessage": "Hytale'yi kaldırmak istediğinizden emin misiniz? Tüm oyun dosyaları silinecektir.", + "uninstallGameButton": "Kaldır" + }, + "progress": { + "initializing": "Başlatılıyor...", + "downloading": "İndiriliyor...", + "installing": "Kuruluyur...", + "extracting": "Ayıklanıyor...", + "verifying": "Doğrulanıyor...", + "switchingProfile": "Profil değiştiriliyor...", + "profileSwitched": "Profil değiştirildi!", + "startingGame": "Oyun başlatılıyor...", + "launching": "BAŞLATILIYOR...", + "uninstallingGame": "Oyun kaldırılıyor...", + "gameUninstalled": "Oyun başarıyla kaldırıldı!", + "uninstallFailed": "Kaldırma başarısız: {error}", + "startingUpdate": "Zorunlu oyun güncellemesi başlatılıyor...", + "installationComplete": "Kurulum başarıyla tamamlandı!", + "installationFailed": "Kurulum başarısız: {error}", + "installingGameFiles": "Oyun dosyaları kuruluyor...", + "installComplete": "Kurulum tamamlandı!" + } +}