diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs index dfef43c2..a1a1f207 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs @@ -12186,8 +12186,8 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency ItemType = "group", Items = [ - new EditingFormItemDto { Order = 1, DataField = "Name", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxTextBox }, - new EditingFormItemDto { Order = 2, DataField = "Description", ColSpan = 2, EditorType2 = EditorTypes.dxTextBox }, + new EditingFormItemDto { Order = 1, DataField = "Name", ColSpan = 2, IsRequired = true, EditorType2 = EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order = 2, DataField = "Description", ColSpan = 2, EditorType2 = EditorTypes.dxSelectBox }, new EditingFormItemDto { Order = 3, DataField = "Category", ColSpan = 2, EditorType2 = EditorTypes.dxSelectBox }, new EditingFormItemDto { Order = 4, DataField = "MonthlyPrice", ColSpan = 2, EditorType2 = EditorTypes.dxNumberBox }, new EditingFormItemDto { Order = 5, DataField = "YearlyPrice", ColSpan = 2, EditorType2 = EditorTypes.dxNumberBox }, @@ -12262,7 +12262,14 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency E = true, I = true, Deny = false - }) + }), + LookupJson = JsonSerializer.Serialize(new LookupDto + { + DataSourceType = UiLookupDataSourceTypeEnum.Query, + DisplayExpr = "Name", + ValueExpr = "Key", + LookupQuery = lookupQueryLanguageKeyValues + }), }, new() { @@ -12284,7 +12291,14 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency E = true, I = true, Deny = false - }) + }), + LookupJson = JsonSerializer.Serialize(new LookupDto + { + DataSourceType = UiLookupDataSourceTypeEnum.Query, + DisplayExpr = "Name", + ValueExpr = "Key", + LookupQuery = lookupQueryLanguageKeyValues + }), }, new() { @@ -12304,9 +12318,9 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency DisplayExpr = "name", ValueExpr = "key", LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { - new () { Key="Üyelik",Name="Üyelik" }, - new () { Key="Lisans",Name="Lisans" }, - new () { Key="Ek Hizmetler",Name="Ek Hizmetler" }, + new () { Key="Public.products.categories.Üyelik",Name="Üyelik" }, + new () { Key="Public.products.categories.Lisans",Name="Lisans" }, + new () { Key="Public.products.categories.Ek Hizmetler",Name="Ek Hizmetler" }, }), }), ValidationRuleJson = JsonSerializer.Serialize(new[] diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json index 32726ce0..87de07d5 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json @@ -7189,6 +7189,600 @@ "tr": "Demo Talep Edin", "en": "Request a Demo" }, + { + "resourceName": "Platform", + "key": "Public.products.billingcycle", + "tr": "Faturalama Döngüsü", + "en": "Billing Cycle" + }, + { + "resourceName": "Platform", + "key": "Public.products.period", + "tr": "Periyot", + "en": "Period" + }, + { + "resourceName": "Platform", + "key": "Public.products.billingcycle.yearly", + "tr": "Yıllık", + "en": "Yearly" + }, + { + "resourceName": "Platform", + "key": "Public.products.billingcycle.monthly", + "tr": "Aylık", + "en": "Monthly" + }, + { + "resourceName": "Platform", + "key": "Public.products.billingcycle.year", + "tr": "Yıl", + "en": "Year" + }, + { + "resourceName": "Platform", + "key": "Public.products.billingcycle.month", + "tr": "Ay", + "en": "Month" + }, + { + "resourceName": "Platform", + "key": "Public.products.categories", + "tr": "Kategoriler", + "en": "Categories" + }, + { + "resourceName": "Platform", + "key": "Public.products.categories.all", + "tr": "Tüm Ürünler", + "en": "All Products" + }, + { + "resourceName": "Platform", + "key": "Public.products.categories.Üyelik", + "tr": "Üyelik", + "en": "Membership" + }, + { + "resourceName": "Platform", + "key": "Public.products.categories.Lisans", + "tr": "Lisans", + "en": "License" + }, + { + "resourceName": "Platform", + "key": "Public.products.categories.Ek Hizmetler", + "tr": "Ek Hizmetler", + "en": "Additional Services" + }, + { + "resourceName": "Platform", + "key": "Public.order.success.title", + "tr": "Siparişiniz Başarıyla Alındı!", + "en": "Your order has been received successfully!" + }, + { + "resourceName": "Platform", + "key": "Public.order.success.number", + "tr": "Sipariş numaranız:", + "en": "Your order number:" + }, + { + "resourceName": "Platform", + "key": "Public.order.success.nextSteps", + "tr": "Sonraki Adımlar", + "en": "Next Steps" + }, + { + "resourceName": "Platform", + "key": "Public.order.success.step1", + "tr": "Siparişiniz 24 saat içinde işleme alınacaktır", + "en": "Your order will be processed within 24 hours" + }, + { + "resourceName": "Platform", + "key": "Public.order.success.step2", + "tr": "Lisans bilgileri e-posta adresinize gönderilecektir", + "en": "License details will be sent to your email address" + }, + { + "resourceName": "Platform", + "key": "Public.order.success.step3", + "tr": "Kurulum desteği için ekibimizle iletişime geçebilirsiniz", + "en": "You can contact our team for installation support" + }, + { + "resourceName": "Platform", + "key": "Public.order.success.backHome", + "tr": "Ana Sayfa'ya Dön", + "en": "Back to Home" + }, + { + "resourceName": "Platform", + "key": "Public.payment.loading", + "tr": "Yükleniyor...", + "en": "Loading..." + }, + { + "resourceName": "Platform", + "key": "Public.payment.customerInfo", + "tr": "Müşteri Bilgileri", + "en": "Customer Information" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.code", + "tr": "Kurum Kodu:", + "en": "Institution Code:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.founder", + "tr": "Kurucu:", + "en": "Founder:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.company", + "tr": "Şirket:", + "en": "Company:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.email", + "tr": "E-posta:", + "en": "Email:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.phone", + "tr": "Telefon:", + "en": "Phone:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.address", + "tr": "Adres:", + "en": "Address:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.country", + "tr": "Ülke:", + "en": "Country:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.city", + "tr": "Şehir:", + "en": "City:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.district", + "tr": "İlçe:", + "en": "District:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.postalCode", + "tr": "Posta Kodu:", + "en": "Postal Code:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.taxOffice", + "tr": "Vergi Dairesi:", + "en": "Tax Office:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.taxNumber", + "tr": "Vergi No:", + "en": "Tax Number:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.customer.reference", + "tr": "Referans:", + "en": "Reference:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.method.title", + "tr": "Ödeme Yöntemi", + "en": "Payment Method" + }, + { + "resourceName": "Platform", + "key": "Public.payment.method.installmentsAvailable", + "tr": "Taksit seçenekleri mevcut", + "en": "Installment options available" + }, + { + "resourceName": "Platform", + "key": "Public.payment.method.noCommission", + "tr": "Komisyon yok", + "en": "No commission" + }, + { + "resourceName": "Platform", + "key": "Public.payment.installments.title", + "tr": "Taksit Seçenekleri", + "en": "Installment Options" + }, + { + "resourceName": "Platform", + "key": "Public.payment.installments.commission", + "tr": "Komisyon:", + "en": "Commission:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.installments.monthly", + "tr": "x aylık", + "en": "x monthly" + }, + { + "resourceName": "Platform", + "key": "Public.payment.installments.single", + "tr": "Tek ödeme", + "en": "Single Payment" + }, + { + "resourceName": "Platform", + "key": "Public.payment.card.title", + "tr": "Kart Bilgileri", + "en": "Card Information" + }, + { + "resourceName": "Platform", + "key": "Public.payment.card.name", + "tr": "Kart Üzerindeki İsim", + "en": "Name on Card" + }, + { + "resourceName": "Platform", + "key": "Public.payment.card.number", + "tr": "Kart Numarası", + "en": "Card Number" + }, + { + "resourceName": "Platform", + "key": "Public.payment.summary.title", + "tr": "Sipariş Özeti", + "en": "Order Summary" + }, + { + "resourceName": "Platform", + "key": "Public.payment.summary.subtotal", + "tr": "Ara Toplam:", + "en": "Subtotal:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.summary.commission", + "tr": "Komisyon:", + "en": "Commission:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.summary.monthlyInstallment", + "tr": "Aylık Taksit:", + "en": "Monthly Installment:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.summary.total", + "tr": "Toplam:", + "en": "Total:" + }, + { + "resourceName": "Platform", + "key": "Public.payment.buttons.back", + "tr": "Geri", + "en": "Back" + }, + { + "resourceName": "Platform", + "key": "Public.payment.buttons.completeOrder", + "tr": "Siparişi Tamamla", + "en": "Complete Order" + }, + { + "resourceName": "Platform", + "key": "Public.payment.buttons.pay", + "tr": "Ödeme Yap", + "en": "Pay" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.customerInfo", + "tr": "Müşteri Bilgileri", + "en": "Customer Information" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.existing.title", + "tr": "Mevcut Müşteri", + "en": "Existing Customer" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.existing.desc", + "tr": "Kurum kodunuz ile giriş yapın", + "en": "Log in with your organization code" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.new.title", + "tr": "Yeni Müşteri", + "en": "New Customer" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.new.desc", + "tr": "Kayıt olun ve hemen başlayın", + "en": "Register and get started immediately" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.orgCode", + "tr": "Kurum Kodu *", + "en": "Organization Code *" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.orgName", + "tr": "Şirket Adı *", + "en": "Company Name *" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.searchOrg", + "tr": "Kurumu Bul", + "en": "Find Organization" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.founder", + "tr": "Kurucu:", + "en": "Founder:" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.company", + "tr": "Şirket:", + "en": "Company:" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.email", + "tr": "E-posta:", + "en": "Email:" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.phone", + "tr": "Telefon *", + "en": "Phone *" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.mobile", + "tr": "Mobile:", + "en": "Mobile:" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.address", + "tr": "Adres *", + "en": "Address *" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.country", + "tr": "Ülke", + "en": "Country" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.city", + "tr": "Şehir *", + "en": "City *" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.district", + "tr": "İlçe *", + "en": "District *" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.postalCode", + "tr": "Posta Kodu *", + "en": "Postal Code *" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.taxOffice", + "tr": "Vergi Dairesi *", + "en": "Tax Office *" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.taxNumber", + "tr": "Vergi No *", + "en": "Tax Number *" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.reference", + "tr": "Referans", + "en": "Reference" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.buttons.back", + "tr": "Geri", + "en": "Back" + }, + { + "resourceName": "Platform", + "key": "Public.products.tenantForm.buttons.continue", + "tr": "Devam Et", + "en": "Continue" + }, + { + "resourceName": "Platform", + "key": "Public.products.search.title", + "tr": "Arama", + "en": "Search" + }, + { + "resourceName": "Platform", + "key": "Public.products.search.placeholder", + "tr": "Ürün ara...", + "en": "Search products..." + }, + { + "resourceName": "Platform", + "key": "Public.products.empty.title", + "tr": "Ürün bulunamadı", + "en": "No products found" + }, + { + "resourceName": "Platform", + "key": "Public.products.empty.description", + "tr": "Arama kriterlerinizi değiştirmeyi deneyin.", + "en": "Try changing your search criteria." + }, + { + "resourceName": "Platform", + "key": "Public.products.loading", + "tr": "Yükleniyor...", + "en": "Loading..." + }, + { + "resourceName": "Platform", + "key": "Public.cart.title", + "tr": "Sepetim", + "en": "My Cart" + }, + { + "resourceName": "Platform", + "key": "Public.cart.clearConfirm", + "tr": "Sepetteki tüm ürünleri silmek istediğinizden emin misiniz?", + "en": "Are you sure you want to remove all items from the cart?" + }, + { + "resourceName": "Platform", + "key": "Public.cart.clear", + "tr": "Sepeti Temizle", + "en": "Clear Cart" + }, + { + "resourceName": "Platform", + "key": "Public.cart.empty.title", + "tr": "Sepetiniz boş", + "en": "Your cart is empty" + }, + { + "resourceName": "Platform", + "key": "Public.cart.empty.subtitle", + "tr": "Ürün eklemek için katalogdan seçim yapın", + "en": "Add products from the catalog" + }, + { + "resourceName": "Platform", + "key": "Public.cart.monthly", + "tr": "Aylık", + "en": "Monthly" + }, + { + "resourceName": "Platform", + "key": "Public.cart.yearly", + "tr": "Yıllık", + "en": "Yearly" + }, + { + "resourceName": "Platform", + "key": "Public.cart.month", + "tr": "Ay", + "en": "Month" + }, + { + "resourceName": "Platform", + "key": "Public.cart.year", + "tr": "Yıl", + "en": "Year" + }, + { + "resourceName": "Platform", + "key": "Public.cart.total", + "tr": "Toplam:", + "en": "Total:" + }, + { + "resourceName": "Platform", + "key": "Public.cart.checkout", + "tr": "Ödemeye Geç", + "en": "Proceed to Checkout" + }, + { + "resourceName": "Platform", + "key": "Public.products.quantity", + "tr": "Adet:", + "en": "Quantity:" + }, + { + "resourceName": "Platform", + "key": "Public.products.savings.yearly", + "tr": "Yıllık ile %{{percent}} tasarruf", + "en": "Save {{percent}}% with yearly" + }, + { + "resourceName": "Platform", + "key": "Public.products.price.perMonthSuffix", + "tr": "/ Ay", + "en": "/ Month" + }, + { + "resourceName": "Platform", + "key": "Public.products.price.perYearSuffix", + "tr": "/ Yıl", + "en": "/ Year" + }, + { + "resourceName": "Platform", + "key": "Public.products.period.month", + "tr": "Ay", + "en": "Month" + }, + { + "resourceName": "Platform", + "key": "Public.products.period.year", + "tr": "Yıl", + "en": "Year" + }, + { + "resourceName": "Platform", + "key": "Public.products.total", + "tr": "Toplam:", + "en": "Total:" + }, + { + "resourceName": "Platform", + "key": "Public.products.addToCart", + "tr": "Sepete Ekle", + "en": "Add to Cart" + }, + { + "resourceName": "Platform", + "key": "Public.products.inCart", + "tr": "Sepette Mevcut", + "en": "Already in Cart" + }, { "resourceName": "Platform", "key": "Public.products.cta.description", @@ -9408,7 +10002,177 @@ "key": "App.DeveloperKit.ComponentEditor.Loading", "en": "Loading component...", "tr": "Bileşen yükleniyor..." - } + }, + + + { + "resourceName": "Platform", + "key": "Public.products.remoteBranchTraining", + "tr": "Uzaktan Şube Eğitimi (5 Saat)", + "en": "Remote Branch Training (5 Hours)" + }, + { + "resourceName": "Platform", + "key": "Public.products.remoteBranchTraining.desc", + "tr": "Sistem kullanımı sırasında kullanıcı hataları ortaya çıkabilir, Sözsoft kullanıcı hatalarının giderilmesi yönünde destek hizmeti sunmaktadır.", + "en": "During system usage, user errors may occur. Sözsoft provides support services to resolve user errors." + }, + { + "resourceName": "Platform", + "key": "Public.products.branchHosting", + "tr": "Şube Barındırma Hizmeti", + "en": "Branch Hosting Service" + }, + { + "resourceName": "Platform", + "key": "Public.products.branchHosting.desc", + "tr": "Şube veya şubelerinize ait tüm bilgilerinizin veya resimlerinizin barındırıldığı alan kiralama hizmetidir.", + "en": "A hosting service where all your branch-related information or images are stored." + }, + { + "resourceName": "Platform", + "key": "Public.products.sms100k", + "tr": "100,000 SMS SOFTWARE", + "en": "100,000 SMS SOFTWARE" + }, + { + "resourceName": "Platform", + "key": "Public.products.sms100k.desc", + "tr": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın.", + "en": "Available at http://www.smsyukle.com. Select the number of SMS you need and click the SMS load link or contact us to purchase." + }, + { + "resourceName": "Platform", + "key": "Public.products.teacherLicense", + "tr": "Öğretmen Lisansı", + "en": "Teacher License" + }, + { + "resourceName": "Platform", + "key": "Public.products.teacherLicense.desc", + "tr": "Şube/şubelerinizde sistemin kaç öğretmen tarafından kullandırılacağı kararına bağlı olarak belirlenir. Öğretmen lisansları aylık/yıllık kullanım olarak sunulmaktadır.", + "en": "Determined by how many teachers in your branch/branches will use the system. Teacher licenses are offered monthly/annually." + }, + { + "resourceName": "Platform", + "key": "Public.products.extraHourlyService", + "tr": "Saatlik Ek Hizmet", + "en": "Extra Hourly Service" + }, + { + "resourceName": "Platform", + "key": "Public.products.extraHourlyService.desc", + "tr": "Şubelerin standart hizmetlerin dışında istedikleri özel çalışmaları için belirlenen saatlik hizmet bedelidir.", + "en": "Hourly service fee for special work requested outside the standard services of branches." + }, + { + "resourceName": "Platform", + "key": "Public.products.sms50k", + "tr": "50,000 SMS SOFTWARE", + "en": "50,000 SMS SOFTWARE" + }, + { + "resourceName": "Platform", + "key": "Public.products.sms50k.desc", + "tr": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın.", + "en": "Available at http://www.smsyukle.com. Select the number of SMS you need and click the SMS load link or contact us to purchase." + }, + { + "resourceName": "Platform", + "key": "Public.products.sms25k", + "tr": "25,000 SMS SOFTWARE", + "en": "25,000 SMS SOFTWARE" + }, + { + "resourceName": "Platform", + "key": "Public.products.sms25k.desc", + "tr": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın.", + "en": "Available at http://www.smsyukle.com. Select the number of SMS you need and click the SMS load link or contact us to purchase." + }, + { + "resourceName": "Platform", + "key": "Public.products.sms10k", + "tr": "10,000 SMS SOFTWARE", + "en": "10,000 SMS SOFTWARE" + }, + { + "resourceName": "Platform", + "key": "Public.products.sms10k.desc", + "tr": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın.", + "en": "Available at http://www.smsyukle.com. Select the number of SMS you need and click the SMS load link or contact us to purchase." + }, + { + "resourceName": "Platform", + "key": "Public.products.sms5k", + "tr": "5,000 SMS SOFTWARE", + "en": "5,000 SMS SOFTWARE" + }, + { + "resourceName": "Platform", + "key": "Public.products.sms5k.desc", + "tr": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın.", + "en": "Available at http://www.smsyukle.com. Select the number of SMS you need and click the SMS load link or contact us to purchase." + }, + { + "resourceName": "Platform", + "key": "Public.products.smsBlocking", + "tr": "SMS Engelleme Hizmeti", + "en": "SMS Blocking Service" + }, + { + "resourceName": "Platform", + "key": "Public.products.smsBlocking.desc", + "tr": "Şube/şubelerinizden gönderilen SMS'lerin kursiyerler tarafından engelleme hizmetidir.", + "en": "A service that allows recipients to block SMS messages sent from your branch/branches." + }, + { + "resourceName": "Platform", + "key": "Public.products.backupService", + "tr": "Veri Yedekleme Hizmeti", + "en": "Data Backup Service" + }, + { + "resourceName": "Platform", + "key": "Public.products.backupService.desc", + "tr": "Bilgileriniz bizler için de önemlidir. Bu doğrultuda aldığımız yüksek güvenlik önlemlerinin yanısıra BACK-UP/ yedekleme hizmeti sunmaktayız.", + "en": "Your data is also important to us. In addition to our high security measures, we provide a BACK-UP/backup service." + }, + { + "resourceName": "Platform", + "key": "Public.products.userLicense", + "tr": "Kullanıcı Lisansı", + "en": "User License" + }, + { + "resourceName": "Platform", + "key": "Public.products.userLicense.desc", + "tr": "Şube/şubelerinizde sistemin kaç personel tarafından kullandırılacağı kararına bağlı olarak belirlenir. Kullanıcı lisansları aylık/yıllık kullanım olarak sunulmaktadır.", + "en": "Determined by how many personnel in your branch/branches will use the system. User licenses are offered monthly/annually." + }, + { + "resourceName": "Platform", + "key": "Public.products.remoteSupportContract", + "tr": "Şube Uzaktan Destek Sözleşmesi", + "en": "Branch Remote Support Contract" + }, + { + "resourceName": "Platform", + "key": "Public.products.remoteSupportContract.desc", + "tr": "Kullanıcıların/Şubelerin talebi doğrultusunda imzalanan servis sözleşmesi ile Sözsoft kapsamı ve detayı sözleşmelerimizde yer alan iş birliği hizmeti sağlamaktadır.", + "en": "With a service contract signed upon user/branch request, Sözsoft provides cooperation services as detailed in our agreements." + }, + { + "resourceName": "Platform", + "key": "Public.products.mobileReporting", + "tr": "Mobil Raporlama Arayüzü", + "en": "Mobile Reporting Interface" + }, + { + "resourceName": "Platform", + "key": "Public.products.mobileReporting.desc", + "tr": "kursyazilimi.com mobil arayüzü ile şubeler bazında akıllı telefon teknolojisi ile yönetim imkanı sağlamaktadır.", + "en": "With kursyazilimi.com’s mobile interface, management is possible per branch using smartphone technology." + } ], "Settings": [ { @@ -26730,9 +27494,9 @@ "Products": [ { "id": "5f4d6c1f-b1e0-4f91-854c-1d59c25e7193", - "name": "Şube Barındırma Hizmeti", - "description": "Şube veya şubelerinize ait tüm bilgilerinizin veya resimlerinizin barındırıldığı alan kiralama hizmetidir.", - "category": "Üyelik", + "name": "Public.products.branchHosting", + "description": "Public.products.branchHosting.desc", + "category": "Public.products.categories.Üyelik", "order": 1, "monthlyPrice": 850, "yearlyPrice": 3400, @@ -26741,9 +27505,9 @@ }, { "id": "a85d0f04-7d40-47cb-bcf6-d95fbe31ec93", - "name": "Veri Yedekleme Hizmeti", - "description": "Bilgileriniz bizler için de önemlidir. Bu doğrultuda aldığımız yüksek güvenlik önlemlerinin yanısıra BACK-UP/ yedekleme hizmeti sunmaktayız.", - "category": "Üyelik", + "name": "Public.products.backupService", + "description": "Public.products.backupService.desc", + "category": "Public.products.categories.Üyelik", "order": 2, "monthlyPrice": 2100, "yearlyPrice": 2100, @@ -26752,9 +27516,9 @@ }, { "id": "03cfae0b-4e3a-4b4b-917f-f798f18e0f15", - "name": "Şube Uzaktan Destek Sözleşmesi", - "description": "Kullanıcıların/Şubelerin talebi doğrultusunda imzalanan servis sözleşmesi ile Sözsoft kapsamı ve detayı sözleşmelerimizde yer alan iş birliği hizmeti sağlamaktadır.", - "category": "Üyelik", + "name": "Public.products.remoteSupportContract", + "description": "Public.products.remoteSupportContract.desc", + "category": "Public.products.categories.Üyelik", "order": 3, "monthlyPrice": 5000, "yearlyPrice": 5000, @@ -26763,9 +27527,9 @@ }, { "id": "03cfae0b-4e3a-4b4b-917f-f798f18e0f11", - "name": "Kullanıcı Lisansı", - "description": "Şube/şubelerinizde sistemin kaç personel tarafından kullandırılacağı kararına bağlı olarak belirlenir. Kullanıcı lisansları aylık/yıllık kullanım olarak sunulmaktadır.", - "category": "Lisans", + "name": "Public.products.userLicense", + "description": "Public.products.userLicense.desc", + "category": "Public.products.categories.Lisans", "order": 4, "monthlyPrice": 900, "yearlyPrice": 3500, @@ -26774,9 +27538,9 @@ }, { "id": "36d98c72-6a62-4fa1-b942-2689eb42e4d4", - "name": "Öğretmen Lisansı", - "description": "Şube/şubelerinizde sistemin kaç öğretmen tarafından kullandırılacağı kararına bağlı olarak belirlenir. Öğretmen lisansları aylık/yıllık kullanım olarak sunulmaktadır.", - "category": "Lisans", + "name": "Public.products.teacherLicense", + "description": "Public.products.teacherLicense.desc", + "category": "Public.products.categories.Lisans", "order": 5, "monthlyPrice": 500, "yearlyPrice": 1700, @@ -26785,9 +27549,9 @@ }, { "id": "9a80f69d-46e5-4b92-91dc-fbb4d2f90c1f", - "name": "Mobil Raporlama Arayüzü", - "description": "kursyazilimi.com mobil arayüzü ile şubeler bazında akıllı telefon teknolojisi ile yönetim imkanı sağlamaktadır.", - "category": "Lisans", + "name": "Public.products.mobileReporting", + "description": "Public.products.mobileReporting.desc", + "category": "Public.products.categories.Lisans", "order": 6, "monthlyPrice": 400, "yearlyPrice": 1400, @@ -26796,9 +27560,9 @@ }, { "id": "66324548-8500-4f06-8b1c-1a31e8d25c39", - "name": "Uzaktan Şube Eğitimi (5 Saat)", - "description": "Sistem kullanımı sırasında kullanıcı hataları ortaya çıkabilir, sözsoft kullanıcı hatalarının giderilmesi yönünde destek hizmeti sunmaktadır.", - "category": "Ek Hizmetler", + "name": "Public.products.remoteBranchTraining", + "description": "Public.products.remoteBranchTraining.desc", + "category": "Public.products.categories.Ek Hizmetler", "order": 7, "monthlyPrice": 3700, "yearlyPrice": 3700, @@ -26807,10 +27571,10 @@ }, { "id": "b0b51a46-cf33-423f-b93f-2e2a3b8e27c0", - "name": "Saatlik Ek Hizmet", - "description": "Şubelerin standart hizmetlerin dışında istedikleri özel çalışmaları için belirlenen saatlik hizmet bedelidir.", + "name": "Public.products.extraHourlyService", + "description": "Public.products.extraHourlyService.desc", "order": 8, - "category": "Ek Hizmetler", + "category": "Public.products.categories.Ek Hizmetler", "monthlyPrice": 2000, "yearlyPrice": 2000, "isQuantityBased": true, @@ -26818,9 +27582,9 @@ }, { "id": "15b813c6-4905-412b-999a-c303b91b3152", - "name": "5,000 SMS SOFTWARE", - "description": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın", - "category": "Ek Hizmetler", + "name": "Public.products.sms5k", + "description": "Public.products.sms5k.desc", + "category": "Public.products.categories.Ek Hizmetler", "order": 9, "monthlyPrice": 750, "yearlyPrice": 750, @@ -26829,9 +27593,9 @@ }, { "id": "e2c940b4-4a35-4f3d-8600-b1c2b9ce5179", - "name": "10,000 SMS SOFTWARE", - "description": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın", - "category": "Ek Hizmetler", + "name": "Public.products.sms10k", + "description": "Public.products.sms10k.desc", + "category": "Public.products.categories.Ek Hizmetler", "order": 10, "monthlyPrice": 1350, "yearlyPrice": 1350, @@ -26840,9 +27604,9 @@ }, { "id": "1985ba1b1-f4c6-40f2-a747-0cf45c96a5b7", - "name": "25,000 SMS SOFTWARE", - "description": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın", - "category": "Ek Hizmetler", + "name": "Public.products.sms25k", + "description": "Public.products.sms25k.desc", + "category": "Public.products.categories.Ek Hizmetler", "order": 11, "monthlyPrice": 2900, "yearlyPrice": 2900, @@ -26851,9 +27615,9 @@ }, { "id": "7a7ae7c3-bef2-4978-90cf-96d1475e3492", - "name": "50,000 SMS SOFTWARE", - "description": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın", - "category": "Ek Hizmetler", + "name": "Public.products.sms50k", + "description": "Public.products.sms50k.desc", + "category": "Public.products.categories.Ek Hizmetler", "order": 12, "monthlyPrice": 5100, "yearlyPrice": 5100, @@ -26862,9 +27626,9 @@ }, { "id": "3e6a8de1-6c48-4ff8-87f5-252735a7e89f", - "name": "100,000 SMS SOFTWARE", - "description": "http://www.smsyukle.com adresinden yüklenebilir. İhtiyacınız olan SMS adedini belirleyerek, SMS satın almak için lütfen SMS yükle linkine tıklayın veya bize ulaşın", - "category": "Ek Hizmetler", + "name": "Public.products.sms100k", + "description": "Public.products.sms100k.desc", + "category": "Public.products.categories.Ek Hizmetler", "order": 13, "monthlyPrice": 8800, "yearlyPrice": 8800, @@ -26873,9 +27637,9 @@ }, { "id": "2e35b9b8-f404-4b83-9737-d059c05fd44b", - "name": "SMS Engelleme Hizmeti", - "description": "Şube/şubelerinizden gönderilen SMS lerin kursiyerler tarafından engelleme hizmetidir.", - "category": "Ek Hizmetler", + "name": "Public.products.smsBlocking", + "description": "Public.products.smsBlocking.desc", + "category": "Public.products.categories.Ek Hizmetler", "order": 14, "monthlyPrice": 880, "yearlyPrice": 880, diff --git a/ui/dev-dist/sw.js b/ui/dev-dist/sw.js index d9ba6e78..6456ef6d 100644 --- a/ui/dev-dist/sw.js +++ b/ui/dev-dist/sw.js @@ -82,7 +82,7 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict'; "revision": "3ca0b8505b4bec776b69afdba2768812" }, { "url": "index.html", - "revision": "0.tihrrtufp5o" + "revision": "0.4fqifsv2jio" }], {}); workbox.cleanupOutdatedCaches(); workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { diff --git a/ui/src/components/orders/BillingControls.tsx b/ui/src/components/orders/BillingControls.tsx index fac0ef47..0cee43d5 100644 --- a/ui/src/components/orders/BillingControls.tsx +++ b/ui/src/components/orders/BillingControls.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { FaCalendar, FaClock, FaMinus, FaPlus, FaShoppingCart } from 'react-icons/fa'; +import { FaCalendar, FaClock, FaMinus, FaPlus, FaShoppingCart } from 'react-icons/fa' import { BillingCycle } from '@/proxy/order/models' import { CartState } from '@/utils/cartUtils' import { useScroll } from '@/contexts/ScrollContext' @@ -42,7 +42,9 @@ export const BillingControls: React.FC = ({
- Faturalama Döngüsü: + + {translate('::Public.products.billingcycle')} +
@@ -51,7 +53,7 @@ export const BillingControls: React.FC = ({ disabled={hasCartItems} className={`px-4 py-2 rounded-lg text-sm font-medium transition-all ${ globalBillingCycle === 'monthly' - ? 'bg-blue-600 text-white shadow-md' + ? 'bg-blue-600 text-white shadow-md' : hasCartItems ? 'bg-gray-200 text-gray-400 cursor-not-allowed' : 'bg-gray-100 text-gray-700 hover:bg-gray-200' @@ -60,7 +62,7 @@ export const BillingControls: React.FC = ({ hasCartItems ? 'Sepette ürün varken faturalama döngüsü değiştirilemez' : undefined } > - Aylık + {translate('::Public.products.billingcycle.monthly')}
@@ -85,7 +87,9 @@ export const BillingControls: React.FC = ({
- Periyod: + + {translate('::Public.products.period')} +
@@ -105,7 +109,9 @@ export const BillingControls: React.FC = ({
{globalPeriod} - {globalBillingCycle === 'monthly' ? 'Ay' : 'Yıl'} + {globalBillingCycle === 'monthly' + ? translate('::Public.products.billingcycle.month') + : translate('::Public.products.billingcycle.year')}
@@ -139,16 +145,6 @@ export const BillingControls: React.FC = ({
- - {/* {globalBillingCycle === 'yearly' && globalPeriod > 1 && ( -
-
- - {globalPeriod} yıllık abonelik ile %{Math.round((1 - (globalBillingCycle === 'yearly' ? 1 : 12)) * 100)} tasarruf - -
-
- )} */} ) diff --git a/ui/src/components/orders/Cart.tsx b/ui/src/components/orders/Cart.tsx index da1d48d6..0d134510 100644 --- a/ui/src/components/orders/Cart.tsx +++ b/ui/src/components/orders/Cart.tsx @@ -1,70 +1,68 @@ -import React from 'react'; -import { - FaTimes, - FaMinus, - FaPlus, - FaShoppingBag, - FaTrash -} from 'react-icons/fa'; -import { BillingCycle, BasketItem } from '@/proxy/order/models'; +import React from 'react' +import { FaTimes, FaMinus, FaPlus, FaShoppingBag, FaTrash } from 'react-icons/fa' +import { BillingCycle, BasketItem } from '@/proxy/order/models' +import { useLocalization } from '@/utils/hooks/useLocalization' interface CartState { - items: BasketItem[]; - total: number; - globalBillingCycle: BillingCycle; - globalPeriod: number; + items: BasketItem[] + total: number + globalBillingCycle: BillingCycle + globalPeriod: number } interface CartProps { - isOpen: boolean; - onClose: () => void; - onCheckout: () => void; - cartState: CartState; - updateQuantity: (id: string, quantity: number) => void; - removeItem: (id: string) => void; - clearCart: () => void; + isOpen: boolean + onClose: () => void + onCheckout: () => void + cartState: CartState + updateQuantity: (id: string, quantity: number) => void + removeItem: (id: string) => void + clearCart: () => void } -export const Cart: React.FC = ({ - isOpen, - onClose, - onCheckout, - cartState, - updateQuantity, +export const Cart: React.FC = ({ + isOpen, + onClose, + onCheckout, + cartState, + updateQuantity, removeItem, - clearCart + clearCart, }) => { + const { translate } = useLocalization() const handleClearCart = () => { if (window.confirm('Sepetteki tüm ürünleri silmek istediğinizden emin misiniz?')) { - clearCart(); + clearCart() } - }; + } const formatPrice = (price: number) => { return new Intl.NumberFormat('tr-TR', { style: 'currency', currency: 'TRY', - minimumFractionDigits: 0 - }).format(price); - }; + minimumFractionDigits: 0, + }).format(price) + } - if (!isOpen) return null; + if (!isOpen) return null return (
- +
-

Sepetim

+

+ {translate('::Public.cart.title')} +

{cartState.items.length > 0 && ( @@ -82,16 +80,19 @@ export const Cart: React.FC = ({ {cartState.items.length === 0 ? (
-

Sepetiniz boş

-

Ürün eklemek için katalogdan seçim yapın

+

{translate('::Public.cart.empty.title')}

+

{translate('::Public.cart.empty.subtitle')}

) : (
{cartState.items.map((item: BasketItem, index: number) => ( -
+

- {item.product.name} + {translate('::' + item.product.name)}

- +
{item.product.isQuantityBased && item.quantity > 1 && ( {item.quantity}x - )} - {item.billingCycle === 'monthly' ? 'Aylık' : - item.billingCycle === 'yearly' ? 'Yıllık' : 'Aylık'} + {item.billingCycle === 'monthly' + ? translate('::Public.cart.monthly') + : item.billingCycle === 'yearly' + ? translate('::Public.cart.yearly') + : translate('::Public.cart.monthly')} {cartState.globalPeriod > 1 && item.product.isQuantityBased && ( - ({cartState.globalPeriod} {item.billingCycle === 'monthly' ? 'Ay' : 'Yıl'}) + ({cartState.globalPeriod}{' '} + {item.billingCycle === 'monthly' + ? translate('::Public.cart.month') + : translate('::Public.cart.year')} + ) )}
- + {item.product.isQuantityBased && (
)}
- +
{formatPrice(item.totalPrice)}
@@ -146,22 +154,24 @@ export const Cart: React.FC = ({ {cartState.items.length > 0 && (
- Toplam: + + {translate('::Public.cart.total')} + {formatPrice(cartState.total)}
- +
)}
- ); -}; \ No newline at end of file + ) +} diff --git a/ui/src/components/orders/OrderSuccess.tsx b/ui/src/components/orders/OrderSuccess.tsx index 70374763..7a54d464 100644 --- a/ui/src/components/orders/OrderSuccess.tsx +++ b/ui/src/components/orders/OrderSuccess.tsx @@ -5,6 +5,7 @@ import { } from 'react-icons/fa'; import { useNavigate } from 'react-router-dom' import { ROUTES_ENUM } from '@/routes/route.constant' +import { useLocalization } from '@/utils/hooks/useLocalization'; interface OrderSuccessProps { orderId: string @@ -13,24 +14,25 @@ interface OrderSuccessProps { export const OrderSuccess: React.FC = ({ orderId, onBackToShop }) => { const navigate = useNavigate() - + const { translate } = useLocalization() + return (
-

Siparişiniz Başarıyla Alındı!

+

{translate('::Public.order.success.title')}

- Sipariş numaranız: #{orderId} + {translate('::Public.order.success.number')} #{orderId}

-

Sonraki Adımlar

+

{translate('::Public.order.success.nextSteps')}

    -
  • • Siparişiniz 24 saat içinde işleme alınacaktır
  • -
  • • Lisans bilgileri e-posta adresinize gönderilecektir
  • -
  • • Kurulum desteği için ekibimizle iletişime geçebilirsiniz
  • +
  • • {translate('::Public.order.success.step1')}
  • +
  • • {translate('::Public.order.success.step2')}
  • +
  • • {translate('::Public.order.success.step3')}
@@ -40,7 +42,7 @@ export const OrderSuccess: React.FC = ({ orderId, onBackToSho className="flex items-center justify-center px-6 py-3 border border-gray-300 text-gray-700 rounded-lg hover:bg-gray-50 transition-colors" > - Ana Sayfa'ya Dön + {translate('::Public.order.success.backHome')}
diff --git a/ui/src/components/orders/PaymentForm.tsx b/ui/src/components/orders/PaymentForm.tsx index bd1edfcb..0e68bd4c 100644 --- a/ui/src/components/orders/PaymentForm.tsx +++ b/ui/src/components/orders/PaymentForm.tsx @@ -1,19 +1,19 @@ import React, { useEffect, useState } from 'react' -import { - FaCreditCard, - FaLock, - FaArrowLeft, - FaUser, - FaBuilding, - FaMailBulk, - FaPhone, - FaMapMarkerAlt, - FaMap, - FaGlobe, - FaMoneyBillWave, - FaDollarSign, - FaUserPlus -} from 'react-icons/fa'; +import { + FaCreditCard, + FaLock, + FaArrowLeft, + FaUser, + FaBuilding, + FaMailBulk, + FaPhone, + FaMapMarkerAlt, + FaMap, + FaGlobe, + FaMoneyBillWave, + FaDollarSign, + FaUserPlus, +} from 'react-icons/fa' import { BillingCycle, BasketItem, @@ -22,6 +22,7 @@ import { } from '@/proxy/order/models' import { OrderService } from '@/services/order.service' import { CustomTenantDto } from '@/proxy/config/models' +import { useLocalization } from '@/utils/hooks/useLocalization' interface CartState { items: BasketItem[] @@ -52,6 +53,7 @@ export const PaymentForm: React.FC = ({ cardName: '', }) + const { translate } = useLocalization() const [paymentMethods, setPaymentMethods] = useState([]) const [installmentOptions, setInstallmentOptions] = useState([]) const [loading, setLoading] = useState(true) @@ -116,7 +118,9 @@ export const PaymentForm: React.FC = ({ return (
{loading ? ( -
Yükleniyor...
+
+ {translate('::Public.payment.loading')} +
) : (
{/* 3 Sütun: Ödeme Yöntemi | Taksit Seçenekleri | Sipariş Özeti */} @@ -125,88 +129,115 @@ export const PaymentForm: React.FC = ({ {tenant && ( <>

- Müşteri Bilgileri + {' '} + {translate('::Public.payment.customerInfo')}

- Kurum Kodu: + + {translate('::Public.payment.customer.code')} + {tenant.name}
- Kurucu: + + {translate('::Public.payment.customer.founder')} + {tenant.founder}
- Şirket: + + {translate('::Public.payment.customer.company')} + {tenant.institutionName}
- E-posta: + + {translate('::Public.payment.customer.email')} + {tenant.email}
- Telefon: + + {translate('::Public.payment.customer.phone')} + {tenant.phone}
- Adres: + + {translate('::Public.payment.customer.address')}: +
{tenant.address}
- Ülke: + + {translate('::Public.payment.customer.country')} + {tenant.country}
- Şehir: + + {translate('::Public.payment.customer.city')} + {tenant.city}
- İlçe: + + {translate('::Public.payment.customer.district')} + {tenant.district}
- Posta Kodu: + + {translate('::Public.payment.customer.postalCode')}: + {tenant.postalCode}
- Vergi Dairesi: + + {translate('::Public.payment.customer.taxOffice')}: + {tenant.taxOffice}
- Vergi No: + + {translate('::Public.payment.customer.taxNumber')}: + {tenant.vknTckn}
{tenant.reference && (
- Referans: + + {translate('::Public.payment.customer.reference')}: + {tenant.reference}
)} @@ -221,7 +252,8 @@ export const PaymentForm: React.FC = ({ {/* 1. Sütun: Ödeme Yöntemi */}

- Ödeme Yöntemi + {' '} + {translate('::Public.payment.method.title')}

{paymentMethods.map((method) => ( @@ -245,7 +277,9 @@ export const PaymentForm: React.FC = ({
{method.name}
- {method.id === 'credit-card' ? 'Taksit seçenekleri mevcut' : 'Komisyon yok'} + {method.id === 'credit-card' + ? translate('::Public.payment.method.installmentsAvailable') + : translate('::Public.payment.method.noCommission')}
@@ -256,7 +290,9 @@ export const PaymentForm: React.FC = ({ {/* Taksit Seçenekleri */} {selectedPaymentMethod === 'credit-card' && (
-

Taksit Seçenekleri

+

+ {translate('::Public.payment.installments.title')} +

{installmentOptions.map((option) => (