diff --git a/beszel/site/src/components/lang-toggle.tsx b/beszel/site/src/components/lang-toggle.tsx
index e0d1091..c959076 100644
--- a/beszel/site/src/components/lang-toggle.tsx
+++ b/beszel/site/src/components/lang-toggle.tsx
@@ -24,13 +24,13 @@ export function LangToggle() {
- {languages.map(({ lang, label }) => (
+ {languages.map(({ lang, label, e }) => (
setLang(lang)}
>
- {label}
+ {e} {label}
))}
diff --git a/beszel/site/src/components/mode-toggle.tsx b/beszel/site/src/components/mode-toggle.tsx
index 4b878b5..cbfac25 100644
--- a/beszel/site/src/components/mode-toggle.tsx
+++ b/beszel/site/src/components/mode-toggle.tsx
@@ -4,10 +4,29 @@ import { Button } from "@/components/ui/button"
import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu"
import { useTheme } from "@/components/theme-provider"
import { useTranslation } from "react-i18next"
+import { cn } from "@/lib/utils"
export function ModeToggle() {
const { t } = useTranslation()
- const { setTheme } = useTheme()
+ const { theme, setTheme } = useTheme()
+
+ const options = [
+ {
+ theme: "light",
+ Icon: SunIcon,
+ label: t("themes.light"),
+ },
+ {
+ theme: "dark",
+ Icon: MoonStarIcon,
+ label: t("themes.dark"),
+ },
+ {
+ theme: "system",
+ Icon: LaptopIcon,
+ label: t("themes.system"),
+ },
+ ]
return (
@@ -19,18 +38,19 @@ export function ModeToggle() {
- setTheme("light")}>
-
- {t("themes.light")}
-
- setTheme("dark")}>
-
- {t("themes.dark")}
-
- setTheme("system")}>
-
- {t("themes.system")}
-
+ {options.map((opt) => {
+ const selected = opt.theme === theme
+ return (
+ setTheme(opt.theme as "dark" | "light" | "system")}
+ >
+
+ {opt.label}
+
+ )
+ })}
)
diff --git a/beszel/site/src/components/navbar.tsx b/beszel/site/src/components/navbar.tsx
index fa25d61..a199aa3 100644
--- a/beszel/site/src/components/navbar.tsx
+++ b/beszel/site/src/components/navbar.tsx
@@ -67,31 +67,31 @@ export default function Navbar() {
<>
-
+
{t("user_dm.users")}
-
+
{t("systems")}
-
+
{t("user_dm.logs")}
-
+
{t("user_dm.backups")}
-
+
{t("user_dm.auth_providers")}
@@ -100,7 +100,7 @@ export default function Navbar() {
)}
pb.authStore.clear()}>
-
+
{t("user_dm.log_out")}
diff --git a/beszel/site/src/components/routes/settings/general.tsx b/beszel/site/src/components/routes/settings/general.tsx
index 0424e52..309b8fa 100644
--- a/beszel/site/src/components/routes/settings/general.tsx
+++ b/beszel/site/src/components/routes/settings/general.tsx
@@ -67,6 +67,7 @@ export default function SettingsProfilePage({ userSettings }: { userSettings: Us
{languages.map((lang) => (
+ {lang.e}
{lang.label}
))}
diff --git a/beszel/site/src/components/ui/dropdown-menu.tsx b/beszel/site/src/components/ui/dropdown-menu.tsx
index f2a1294..0909298 100644
--- a/beszel/site/src/components/ui/dropdown-menu.tsx
+++ b/beszel/site/src/components/ui/dropdown-menu.tsx
@@ -25,7 +25,7 @@ const DropdownMenuSubTrigger = React.forwardRef<
(({ className, inset, ...props }, ref) => (
))
diff --git a/beszel/site/src/lib/languages.json b/beszel/site/src/lib/languages.json
index 93c01e1..7f9a55d 100644
--- a/beszel/site/src/lib/languages.json
+++ b/beszel/site/src/lib/languages.json
@@ -1,54 +1,72 @@
[
{
"lang": "ar",
- "label": "العربية"
+ "label": "العربية",
+ "e": "🇵🇸"
},
{
"lang": "de",
- "label": "Deutsch"
+ "label": "Deutsch",
+ "e": "🇩🇪"
},
{
"lang": "en",
- "label": "English"
+ "label": "English",
+ "e": "🇺🇸"
},
{
"lang": "es",
- "label": "Español"
+ "label": "Español",
+ "e": "🇪🇸"
},
{
"lang": "fr",
- "label": "Français"
+ "label": "Français",
+ "e": "🇫🇷"
},
{
"lang": "ja",
- "label": "日本語"
+ "label": "日本語",
+ "e": "🇯🇵"
},
{
"lang": "ko",
- "label": "한국어"
+ "label": "한국어",
+ "e": "🇰🇷"
},
{
"lang": "pt",
- "label": "Português"
+ "label": "Português",
+ "e": "🇧🇷"
+ },
+ {
+ "lang": "tr",
+ "label": "Türkçe",
+ "e": "🇹🇷"
},
{
"lang": "ru",
- "label": "Русский"
+ "label": "Русский",
+ "e": "🇷🇺"
},
{
"lang": "uk",
- "label": "Українська"
+ "label": "Українська",
+ "e": "🇺🇦"
},
{
"lang": "vi",
- "label": "Tiếng Việt"
+ "label": "Tiếng Việt",
+ "e": "🇻🇳"
},
{
"lang": "zh-CN",
- "label": "简体中文"
+ "label": "简体中文",
+ "e": "🇨🇳"
},
{
"lang": "zh-HK",
- "label": "繁體中文"
+ "label": "繁體中文",
+ "e": "🇭🇰"
}
]
diff --git a/beszel/site/src/locales/tr/translation.json b/beszel/site/src/locales/tr/translation.json
new file mode 100644
index 0000000..9e1e567
--- /dev/null
+++ b/beszel/site/src/locales/tr/translation.json
@@ -0,0 +1,209 @@
+{
+ "add": "Ekle",
+ "add_system": {
+ "add_new_system": "Yeni Sistem Ekle",
+ "add_system": "Sistem ekle",
+ "binary": "İkili",
+ "click_to_copy": "Kopyalamak için tıklayın",
+ "command": "komut",
+ "dialog_des_1": "Bağlanmak için ajan sistemde çalışıyor olmalıdır. Aşağıdaki ajan için",
+ "dialog_des_2": "kopyalayın.",
+ "host_ip": "Host / IP",
+ "key": "Genel Anahtar",
+ "name": "Ad",
+ "port": "Port"
+ },
+ "alerts": {
+ "average_exceeds": "Ortalama aşıyor",
+ "for": "İçin",
+ "info": {
+ "bandwidth": "Bant Genişliği",
+ "bandwidth_des": "Yukarı/aşağı birleşik değer bir eşiği aştığında tetiklenir.",
+ "cpu_usage": "CPU Kullanımı",
+ "cpu_usage_des": "CPU kullanımı bir eşiği aştığında tetiklenir.",
+ "disk_usage": "Disk Kullanımı",
+ "disk_usage_des": "Herhangi bir diskin kullanımı bir eşiği aştığında tetiklenir.",
+ "memory_usage": "Bellek Kullanımı",
+ "memory_usage_des": "Bellek kullanımı bir eşiği aştığında tetiklenir.",
+ "status": "Durum",
+ "status_des": "Durum yukarı ve aşağı arasında değiştiğinde tetiklenir.",
+ "temperature": "Sıcaklık",
+ "temperature_des": "Herhangi bir sensör bir eşiği aştığında tetiklenir."
+ },
+ "notification_settings": "bildirim ayarları",
+ "overwrite_existing_alerts": "Mevcut uyarıları üzerine yaz",
+ "subtitle_1": "Nasıl uyarı alacağınızı yapılandırmak için",
+ "subtitle_2": "görün.",
+ "title": "Uyarılar"
+ },
+ "all_systems": "Tüm Sistemler",
+ "auth": {
+ "command_1": "Yönetici hesabınızın şifresini kaybettiyseniz, aşağıdaki komutu kullanarak sıfırlayabilirsiniz.",
+ "command_2": "Ardından arka uca giriş yapın ve kullanıcı hesabı şifrenizi kullanıcılar tablosunda sıfırlayın.",
+ "command_line_instructions": "Komut satırı talimatları",
+ "create": "Lütfen bir yönetici hesabı oluşturun",
+ "create_account": "Hesap oluştur",
+ "for_instructions": "talimatlar için.",
+ "forgot_password": "Şifrenizi mi unuttunuz?",
+ "login": "Hesabınıza giriş yapın",
+ "openid_des": "Beszel, OpenID Connect ve birçok OAuth2 kimlik doğrulama sağlayıcısını destekler.",
+ "please_view_the": "Lütfen",
+ "reset": "Şifreyi sıfırlamak için e-posta adresini girin",
+ "reset_password": "Şifreyi Sıfırla",
+ "sign_in": "Giriş yap"
+ },
+ "cancel": "İptal",
+ "clipboard": {
+ "copied": "Panoya kopyalandı",
+ "des": "Otomatik kopyalama güvenli bir bağlam gerektirir.",
+ "title": "Metni kopyala"
+ },
+ "command": {
+ "SMTP_settings": "SMTP ayarları",
+ "admin": "Yönetici",
+ "dashboard": "Gösterge Paneli",
+ "documentation": "Dokümantasyon",
+ "page": "Sayfa",
+ "pages_settings": "Sayfalar / Ayarlar",
+ "search": "Sistemler veya ayarlar için ara..."
+ },
+ "continue": "Devam et",
+ "copy": "Kopyala",
+ "days_other": "{{count}} gün",
+ "filter": "Filtrele...",
+ "home": {
+ "active_alerts": "Aktif Uyarılar",
+ "active_des": "Son {{value}}{{unit}} içinde aşıldı",
+ "subtitle": "Gerçek zamanlı olarak güncellenir. Bilgi görüntülemek için bir sisteme tıklayın."
+ },
+ "hours_one": "{{count}} saat",
+ "hours_other": "{{count}} saat",
+ "minutes_one": "{{count}} dakika",
+ "minutes_other": "{{count}} dakika",
+ "monitor": {
+ "average": "Ortalama",
+ "bandwidth": "Bant Genişliği",
+ "bandwidth_des": "Genel arayüzlerin ağ trafiği",
+ "cache_buffers": "Önbellek / Tamponlar",
+ "cpu_des": "sistem genelinde CPU kullanımı",
+ "disk_des": "Kök bölümün kullanımı",
+ "disk_io": "Disk G/Ç",
+ "disk_io_des": "Kök dosya sisteminin verimi",
+ "disk_space": "Disk Alanı",
+ "disk_usage_of": "Disk kullanımı",
+ "docker_cpu_des": "Konteynerlerin ortalama CPU kullanımı",
+ "docker_cpu_usage": "Docker CPU Kullanımı",
+ "docker_memory_des": "Docker konteynerlerinin bellek kullanımı",
+ "docker_memory_usage": "Docker Bellek Kullanımı",
+ "docker_network_io": "Docker Ağ G/Ç",
+ "docker_network_io_des": "Docker konteynerlerinin ağ trafiği",
+ "max_1_min": "Maks 1 dk",
+ "memory_des": "Kaydedilen zamandaki kesin kullanım",
+ "read": "Oku",
+ "received": "Alındı",
+ "sent": "Gönderildi",
+ "swap_des": "Sistem tarafından kullanılan takas alanı",
+ "swap_usage": "Takas Kullanımı",
+ "temperature": "Sıcaklık",
+ "temperature_des": "Sistem sensörlerinin sıcaklıkları",
+ "throughput_of": "Verimi",
+ "toggle_grid": "Izgarayı değiştir",
+ "total_cpu_usage": "Toplam CPU Kullanımı",
+ "total_memory_usage": "Toplam Bellek Kullanımı",
+ "usage": "Kullanım",
+ "used": "Kullanıldı",
+ "waiting_for": "Görüntülemek için yeterli kayıt bekleniyor",
+ "write": "Yaz"
+ },
+ "search": "Ara",
+ "settings": {
+ "export_configuration": "Yapılandırmayı dışa aktar",
+ "general": {
+ "chart_options": {
+ "default_time_period": "Varsayılan zaman aralığı",
+ "default_time_period_des": "Bir sistem görüntülendiğinde grafikler için varsayılan zaman aralığını ayarlar.",
+ "subtitle": "Grafikler için görüntüleme seçeneklerini ayarlayın.",
+ "title": "Grafik seçenekleri"
+ },
+ "language": {
+ "preferred_language": "Tercih Edilen Dil",
+ "subtitle_1": "Çevirilerimizi daha iyi hale getirmemize yardımcı olmak ister misiniz? Daha fazla bilgi için",
+ "subtitle_2": "göz atın.",
+ "title": "Dil"
+ },
+ "subtitle": "Genel uygulama seçeneklerini değiştirin.",
+ "title": "Genel"
+ },
+ "language": "Dil",
+ "notifications": {
+ "email": {
+ "configure_an_SMTP_server": "bir SMTP sunucusu yapılandırın",
+ "des": "Adresleri enter tuşu veya virgül ile kaydedin. E-posta bildirimlerini devre dışı bırakmak için boş bırakın.",
+ "enter_email_address": "E-posta adresi girin...",
+ "please": "Lütfen",
+ "title": "E-posta bildirimleri",
+ "to_email_s": "E-posta(lar)a",
+ "to_ensure_alerts_are_delivered": "uyarıların teslim edilmesini sağlamak için."
+ },
+ "subtitle_1": "Uyarı bildirimlerini nasıl alacağınızı yapılandırın.",
+ "subtitle_2": "Uyarı oluşturma yerini mi arıyorsunuz? Çan simgelerine tıklayın",
+ "subtitle_3": "sistemler tablosunda.",
+ "title": "Bildirimler",
+ "webhook_push": {
+ "add_url": "URL Ekle",
+ "des_1": "Beszel, popüler bildirim hizmetleriyle entegre olmak için",
+ "des_2": "kullanır.",
+ "title": "Webhook / Push bildirimleri"
+ }
+ },
+ "save_settings": "Ayarları Kaydet",
+ "settings": "Ayarlar",
+ "subtitle": "Görüntüleme ve bildirim tercihlerini yönetin.",
+ "yaml_config": {
+ "alert": {
+ "des_1": "İçinde tanımlanmayan mevcut sistemler",
+ "des_2": "silinecektir. Lütfen düzenli yedeklemeler yapın.",
+ "title": "Dikkat - potansiyel veri kaybı"
+ },
+ "des_1": "Sistemler, veri dizininizdeki bir",
+ "des_2": "dosyasında yönetilebilir.",
+ "des_3": "Her yeniden başlatmada, veritabanındaki sistemler dosyada tanımlanan sistemlerle eşleşecek şekilde güncellenir.",
+ "short_title": "YAML Yapılandırması",
+ "subtitle": "Mevcut sistem yapılandırmanızı dışa aktarın.",
+ "title": "YAML Yapılandırması"
+ }
+ },
+ "system": "Sistem",
+ "systems": "Sistemler",
+ "systems_table": {
+ "agent": "Ajan",
+ "copy_host": "Host'u kopyala",
+ "cpu": "CPU",
+ "delete": "Sil",
+ "delete_confirm": "{{name}} silmek istediğinizden emin misiniz?",
+ "delete_confirm_des_1": "Bu işlem geri alınamaz. Bu, tüm mevcut kayıtları kalıcı olarak silecektir",
+ "delete_confirm_des_2": "veritabanından.",
+ "disk": "Disk",
+ "memory": "Bellek",
+ "net": "Ağ",
+ "no_systems_found": "Sistem bulunamadı.",
+ "open_menu": "Menüyü aç",
+ "pause": "Duraklat",
+ "resume": "Devam et",
+ "system": "Sistem"
+ },
+ "themes": {
+ "dark": "Koyu",
+ "light": "Açık",
+ "system": "Sistem",
+ "toggle_theme": "Temayı değiştir"
+ },
+ "user_dm": {
+ "auth_providers": "Kimlik Sağlayıcılar",
+ "backups": "Yedekler",
+ "log_out": "Çıkış Yap",
+ "logs": "Kayıtlar",
+ "users": "Kullanıcılar"
+ },
+ "weeks_one": "{{count}} hafta"
+}