feat(shared): zod şemaları, Türkçe arama ve TL/tarih biçimleri
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+195
-3
@@ -1,15 +1,207 @@
|
||||
/**
|
||||
* Arayüz metinleri (tr-TR). Tüm kullanıcıya görünen metinler burada toplanır.
|
||||
* Arayüz metinleri (tr-TR). Kullanıcıya görünen tüm metinler burada toplanır.
|
||||
* Şimdilik tek dil; ileride çok dil gerekirse bu nesnenin şekli sözleşme olur.
|
||||
*/
|
||||
export const tr = {
|
||||
app: {
|
||||
name: "BÜTÇEM",
|
||||
tagline: "Aile bütçesi, birikim, ev stoğu ve akıllı alışveriş",
|
||||
setupInProgress: "Kurulum sürüyor",
|
||||
setupDescription: "Altyapı hazır. Giriş ekranı ve arayüz bir sonraki fazda eklenecek.",
|
||||
version: "Sürüm",
|
||||
},
|
||||
common: {
|
||||
save: "Kaydet",
|
||||
cancel: "Vazgeç",
|
||||
close: "Kapat",
|
||||
delete: "Sil",
|
||||
edit: "Düzenle",
|
||||
create: "Oluştur",
|
||||
search: "Ara",
|
||||
actions: "İşlemler",
|
||||
loading: "Yükleniyor…",
|
||||
comingSoon: "Yakında",
|
||||
required: "Bu alan zorunlu",
|
||||
yes: "Evet",
|
||||
no: "Hayır",
|
||||
previous: "Önceki",
|
||||
next: "Sonraki",
|
||||
noResults: "Sonuç bulunamadı.",
|
||||
page: (current: number, total: number) => `Sayfa ${current} / ${total}`,
|
||||
rowsPerPage: "Sayfa başına",
|
||||
totalRows: (n: number) => `Toplam ${n} kayıt`,
|
||||
showPassword: "Şifreyi göster",
|
||||
hidePassword: "Şifreyi gizle",
|
||||
genericError: "Beklenmeyen bir hata oluştu. Lütfen tekrar deneyin.",
|
||||
},
|
||||
theme: {
|
||||
label: "Tema",
|
||||
light: "Açık",
|
||||
dark: "Koyu",
|
||||
system: "Sistem",
|
||||
},
|
||||
nav: {
|
||||
main: "Menü",
|
||||
dashboard: "Ana sayfa",
|
||||
transactions: "İşlemler",
|
||||
accounts: "Hesaplar",
|
||||
budget: "Bütçe",
|
||||
planned: "Planlı işlemler",
|
||||
contacts: "Cari hesaplar",
|
||||
savings: "Birikim",
|
||||
stock: "Ev stoğu",
|
||||
shopping: "Alışveriş",
|
||||
reports: "Raporlar",
|
||||
settings: "Ayarlar",
|
||||
more: "Daha fazla",
|
||||
admin: "Yönetim",
|
||||
adminUsers: "Kullanıcılar",
|
||||
adminHouseholds: "Haneler",
|
||||
toggleSidebar: "Menüyü aç/kapat",
|
||||
},
|
||||
household: {
|
||||
label: "Aktif hane",
|
||||
select: "Hane seçin",
|
||||
roles: { owner: "Sahip", member: "Üye", viewer: "İzleyici" },
|
||||
},
|
||||
userMenu: {
|
||||
open: "Kullanıcı menüsü",
|
||||
profile: "Profil",
|
||||
logout: "Çıkış yap",
|
||||
loggedOut: "Çıkış yapıldı.",
|
||||
},
|
||||
roles: { admin: "Yönetici", user: "Kullanıcı" },
|
||||
quickAdd: {
|
||||
button: "Hızlı ekle",
|
||||
title: "Hızlı ekle",
|
||||
description: "Ne eklemek istiyorsunuz?",
|
||||
expense: "Gider",
|
||||
income: "Gelir",
|
||||
transfer: "Transfer",
|
||||
expenseHint: "Harcama, fatura, alışveriş",
|
||||
incomeHint: "Maaş, ek gelir, iade",
|
||||
transferHint: "Hesaplar ve cariler arası",
|
||||
notYet: "İşlem formu Faz 6'da eklenecek.",
|
||||
},
|
||||
auth: {
|
||||
loginTitle: "Giriş yap",
|
||||
loginDescription: "Hesabınıza kullanıcı adı veya e-posta ile giriş yapın.",
|
||||
identifier: "Kullanıcı adı veya e-posta",
|
||||
identifierPlaceholder: "ornek veya ornek@eposta.com",
|
||||
password: "Şifre",
|
||||
submit: "Giriş yap",
|
||||
submitting: "Giriş yapılıyor…",
|
||||
invalidCredentials: "Kullanıcı adı/e-posta veya şifre hatalı.",
|
||||
noSignUp: "Hesaplar yalnızca yönetici tarafından açılır.",
|
||||
identifierRequired: "Kullanıcı adı veya e-posta girin",
|
||||
passwordRequired: "Şifre girin",
|
||||
},
|
||||
dashboard: {
|
||||
title: "Ana sayfa",
|
||||
welcome: (name: string) => `Hoş geldin, ${name}`,
|
||||
welcomeDescription: "Bu ayın özetini burada göreceksin. Veriler sonraki fazlarda bağlanacak.",
|
||||
cards: {
|
||||
monthIncome: "Bu ay gelir",
|
||||
monthExpense: "Bu ay gider",
|
||||
monthRemaining: "Kalan",
|
||||
totalBalance: "Toplam hesap bakiyesi",
|
||||
cardDebt: "Kart borçları",
|
||||
netWorth: "Net varlık",
|
||||
},
|
||||
noData: "Henüz veri yok",
|
||||
},
|
||||
adminUsers: {
|
||||
title: "Kullanıcılar",
|
||||
description: "Kullanıcı oluşturma, rol, şifre ve erişim yönetimi.",
|
||||
newUser: "Yeni kullanıcı",
|
||||
searchPlaceholder: "Ad, kullanıcı adı veya e-posta ara…",
|
||||
columns: {
|
||||
name: "Ad soyad",
|
||||
username: "Kullanıcı adı",
|
||||
email: "E-posta",
|
||||
role: "Rol",
|
||||
status: "Durum",
|
||||
createdAt: "Oluşturulma",
|
||||
},
|
||||
status: { active: "Aktif", banned: "Askıda" },
|
||||
actions: {
|
||||
edit: "Düzenle",
|
||||
changeRole: "Rolü değiştir",
|
||||
makeAdmin: "Yönetici yap",
|
||||
makeUser: "Kullanıcı yap",
|
||||
resetPassword: "Şifre sıfırla",
|
||||
ban: "Askıya al",
|
||||
unban: "Askıyı kaldır",
|
||||
delete: "Sil",
|
||||
},
|
||||
form: {
|
||||
createTitle: "Yeni kullanıcı",
|
||||
createDescription: "Kullanıcı kendi hesabını açamaz; hesapları buradan oluşturun.",
|
||||
editTitle: "Kullanıcıyı düzenle",
|
||||
editDescription: "Ad, kullanıcı adı, e-posta ve rol bilgilerini güncelleyin.",
|
||||
name: "Ad soyad",
|
||||
username: "Kullanıcı adı",
|
||||
usernameHint: "Küçük harf, rakam, nokta, alt çizgi; 3–30 karakter.",
|
||||
email: "E-posta",
|
||||
emailHint: "İsteğe bağlı. Boş bırakılırsa giriş kullanıcı adıyla yapılır.",
|
||||
role: "Sistem rolü",
|
||||
password: "Geçici şifre",
|
||||
passwordHint: "En az 8 karakter. Kullanıcıya güvenli bir kanaldan iletin.",
|
||||
},
|
||||
password: {
|
||||
title: "Şifre sıfırla",
|
||||
description: (name: string) => `${name} için yeni bir şifre belirleyin.`,
|
||||
newPassword: "Yeni şifre",
|
||||
confirm: "Şifreyi belirle",
|
||||
},
|
||||
ban: {
|
||||
title: "Kullanıcıyı askıya al",
|
||||
description: (name: string) => `${name} giriş yapamayacak ve açık oturumları kapatılacak.`,
|
||||
reason: "Neden (isteğe bağlı)",
|
||||
confirm: "Askıya al",
|
||||
},
|
||||
remove: {
|
||||
title: "Kullanıcı silinsin mi?",
|
||||
description: (name: string) => `${name} kalıcı olarak silinecek. Bu işlem geri alınamaz.`,
|
||||
confirm: "Kalıcı olarak sil",
|
||||
},
|
||||
toast: {
|
||||
created: (name: string) => `${name} oluşturuldu.`,
|
||||
updated: (name: string) => `${name} güncellendi.`,
|
||||
roleChanged: (name: string) => `${name} için rol değiştirildi.`,
|
||||
passwordSet: (name: string) => `${name} için şifre güncellendi.`,
|
||||
banned: (name: string) => `${name} askıya alındı.`,
|
||||
unbanned: (name: string) => `${name} için askı kaldırıldı.`,
|
||||
removed: (name: string) => `${name} silindi.`,
|
||||
},
|
||||
guards: {
|
||||
self: "Kendi hesabınız için bu işlem yapılamaz.",
|
||||
lastAdmin: "Sistemdeki son yönetici silinemez veya rolü düşürülemez.",
|
||||
},
|
||||
errors: {
|
||||
usernameTaken: "Bu kullanıcı adı kullanılıyor.",
|
||||
emailTaken: "Bu e-posta adresi kullanılıyor.",
|
||||
checkFields: "Lütfen işaretli alanları düzeltin.",
|
||||
},
|
||||
you: "Siz",
|
||||
noEmail: "—",
|
||||
},
|
||||
validation: {
|
||||
nameMin: "Ad en az 2 karakter olmalı",
|
||||
nameMax: "Ad en fazla 80 karakter olabilir",
|
||||
usernameFormat: "Yalnızca küçük harf, rakam, nokta ve alt çizgi; 3–30 karakter",
|
||||
email: "Geçerli bir e-posta adresi girin",
|
||||
passwordMin: "Şifre en az 8 karakter olmalı",
|
||||
passwordMax: "Şifre en fazla 128 karakter olabilir",
|
||||
banReasonMax: "Neden en fazla 200 karakter olabilir",
|
||||
},
|
||||
errors: {
|
||||
notFoundTitle: "Sayfa bulunamadı",
|
||||
notFoundDescription: "Aradığınız sayfa taşınmış veya hiç var olmamış olabilir.",
|
||||
backHome: "Ana sayfaya dön",
|
||||
errorTitle: "Bir şeyler ters gitti",
|
||||
errorDescription: "Sayfa yüklenirken bir hata oluştu. Tekrar deneyebilirsiniz.",
|
||||
retry: "Tekrar dene",
|
||||
reference: "Hata kodu",
|
||||
},
|
||||
} as const;
|
||||
|
||||
export type Messages = typeof tr;
|
||||
|
||||
Reference in New Issue
Block a user