add Turkish lang + style updates

This commit is contained in:
Henry Dollman
2024-10-31 18:57:54 -04:00
parent 94f771fc1c
commit f65d19ad84
7 changed files with 286 additions and 38 deletions

View File

@@ -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>

View File

@@ -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>
)

View File

@@ -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>

View File

@@ -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>
))}

View File

@@ -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}
/>
))

View File

@@ -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": "🇭🇰"
}
]

View 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"
}