mirror of
https://github.com/fankes/beszel.git
synced 2025-10-20 02:09:28 +08:00
add Turkish lang + style updates
This commit is contained in:
@@ -24,13 +24,13 @@ export function LangToggle() {
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent>
|
||||
{languages.map(({ lang, label }) => (
|
||||
{languages.map(({ lang, label, e }) => (
|
||||
<DropdownMenuItem
|
||||
key={lang}
|
||||
className={cn("pl-4 tracking-wide", lang === i18n.language ? "font-bold" : "")}
|
||||
className={cn("ps-2.5 pe-4 flex gap-2.5", lang === i18n.language ? "font-bold" : "")}
|
||||
onClick={() => setLang(lang)}
|
||||
>
|
||||
{label}
|
||||
<span>{e}</span> {label}
|
||||
</DropdownMenuItem>
|
||||
))}
|
||||
</DropdownMenuContent>
|
||||
|
@@ -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 (
|
||||
<DropdownMenu>
|
||||
@@ -19,18 +38,19 @@ export function ModeToggle() {
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent>
|
||||
<DropdownMenuItem onClick={() => setTheme("light")}>
|
||||
<SunIcon className="mr-2.5 h-4 w-4" />
|
||||
{t("themes.light")}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => setTheme("dark")}>
|
||||
<MoonStarIcon className="mr-2.5 h-4 w-4" />
|
||||
{t("themes.dark")}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem onClick={() => setTheme("system")}>
|
||||
<LaptopIcon className="mr-2.5 h-4 w-4" />
|
||||
{t("themes.system")}
|
||||
</DropdownMenuItem>
|
||||
{options.map((opt) => {
|
||||
const selected = opt.theme === theme
|
||||
return (
|
||||
<DropdownMenuItem
|
||||
key={opt.theme}
|
||||
className={cn("px-2.5", selected ? "font-semibold" : "")}
|
||||
onClick={() => setTheme(opt.theme as "dark" | "light" | "system")}
|
||||
>
|
||||
<opt.Icon className={cn("me-2 h-4 w-4 opacity-80", selected && "opacity-100")} />
|
||||
{opt.label}
|
||||
</DropdownMenuItem>
|
||||
)
|
||||
})}
|
||||
</DropdownMenuContent>
|
||||
</DropdownMenu>
|
||||
)
|
||||
|
@@ -67,31 +67,31 @@ export default function Navbar() {
|
||||
<>
|
||||
<DropdownMenuItem asChild>
|
||||
<a href="/_/" target="_blank">
|
||||
<UsersIcon className="mr-2.5 h-4 w-4" />
|
||||
<UsersIcon className="me-2.5 h-4 w-4" />
|
||||
<span>{t("user_dm.users")}</span>
|
||||
</a>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem asChild>
|
||||
<a href="/_/#/collections?collectionId=2hz5ncl8tizk5nx" target="_blank">
|
||||
<ServerIcon className="mr-2.5 h-4 w-4" />
|
||||
<ServerIcon className="me-2.5 h-4 w-4" />
|
||||
<span>{t("systems")}</span>
|
||||
</a>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem asChild>
|
||||
<a href="/_/#/logs" target="_blank">
|
||||
<LogsIcon className="mr-2.5 h-4 w-4" />
|
||||
<LogsIcon className="me-2.5 h-4 w-4" />
|
||||
<span>{t("user_dm.logs")}</span>
|
||||
</a>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem asChild>
|
||||
<a href="/_/#/settings/backups" target="_blank">
|
||||
<DatabaseBackupIcon className="mr-2.5 h-4 w-4" />
|
||||
<DatabaseBackupIcon className="me-2.5 h-4 w-4" />
|
||||
<span>{t("user_dm.backups")}</span>
|
||||
</a>
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem asChild>
|
||||
<a href="/_/#/settings/auth-providers" target="_blank">
|
||||
<LockKeyholeIcon className="mr-2.5 h-4 w-4" />
|
||||
<LockKeyholeIcon className="me-2.5 h-4 w-4" />
|
||||
<span>{t("user_dm.auth_providers")}</span>
|
||||
</a>
|
||||
</DropdownMenuItem>
|
||||
@@ -100,7 +100,7 @@ export default function Navbar() {
|
||||
)}
|
||||
</DropdownMenuGroup>
|
||||
<DropdownMenuItem onSelect={() => pb.authStore.clear()}>
|
||||
<LogOutIcon className="mr-2.5 h-4 w-4" />
|
||||
<LogOutIcon className="me-2.5 h-4 w-4" />
|
||||
<span>{t("user_dm.log_out")}</span>
|
||||
</DropdownMenuItem>
|
||||
</DropdownMenuContent>
|
||||
|
@@ -67,6 +67,7 @@ export default function SettingsProfilePage({ userSettings }: { userSettings: Us
|
||||
<SelectContent>
|
||||
{languages.map((lang) => (
|
||||
<SelectItem key={lang.lang} value={lang.lang}>
|
||||
<span className="me-2.5">{lang.e}</span>
|
||||
{lang.label}
|
||||
</SelectItem>
|
||||
))}
|
||||
|
@@ -25,7 +25,7 @@ const DropdownMenuSubTrigger = React.forwardRef<
|
||||
<DropdownMenuPrimitive.SubTrigger
|
||||
ref={ref}
|
||||
className={cn(
|
||||
"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
|
||||
"flex cursor-default select-none items-center rounded-sm px-2.5 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent",
|
||||
inset && "pl-8",
|
||||
className
|
||||
)}
|
||||
@@ -79,7 +79,7 @@ const DropdownMenuItem = React.forwardRef<
|
||||
<DropdownMenuPrimitive.Item
|
||||
ref={ref}
|
||||
className={cn(
|
||||
"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
||||
"relative flex cursor-default select-none items-center rounded-sm px-2.5 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50",
|
||||
inset && "pl-8",
|
||||
className
|
||||
)}
|
||||
@@ -141,7 +141,7 @@ const DropdownMenuLabel = React.forwardRef<
|
||||
>(({ className, inset, ...props }, ref) => (
|
||||
<DropdownMenuPrimitive.Label
|
||||
ref={ref}
|
||||
className={cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className)}
|
||||
className={cn("px-2.5 py-1.5 text-sm font-semibold", inset && "pl-8", className)}
|
||||
{...props}
|
||||
/>
|
||||
))
|
||||
|
@@ -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": "🇭🇰"
|
||||
}
|
||||
]
|
||||
|
209
beszel/site/src/locales/tr/translation.json
Normal file
209
beszel/site/src/locales/tr/translation.json
Normal file
@@ -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"
|
||||
}
|
Reference in New Issue
Block a user